recently_used_folders_combo_model.h revision 3345a6884c488ff3a535c2c9acdd33d74b37e311
1// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_BOOKMARKS_RECENTLY_USED_FOLDERS_COMBO_MODEL_H_
6#define CHROME_BROWSER_BOOKMARKS_RECENTLY_USED_FOLDERS_COMBO_MODEL_H_
7#pragma once
8
9#include <vector>
10
11#include "app/combobox_model.h"
12#include "base/string16.h"
13#include "chrome/browser/bookmarks/bookmark_model.h"
14
15// Model for the combobox showing the list of folders to choose from. The
16// list always contains the bookmark bar, other node and parent. The list
17// also contains an extra item that shows the text 'Choose another folder...'.
18class RecentlyUsedFoldersComboModel : public ComboboxModel {
19 public:
20  RecentlyUsedFoldersComboModel(BookmarkModel* model, const BookmarkNode* node);
21
22  // Overridden from ComboboxModel:
23  virtual int GetItemCount();
24  virtual string16 GetItemAt(int index);
25
26  // Returns the node at the specified |index|.
27  const BookmarkNode* GetNodeAt(int index);
28
29  // Returns the index of the original parent folder.
30  int node_parent_index() const { return node_parent_index_; }
31
32 private:
33  // Removes |node| from |nodes_|. Does nothing if |node| is not in |nodes_|.
34  void RemoveNode(const BookmarkNode* node);
35
36  std::vector<const BookmarkNode*> nodes_;
37  int node_parent_index_;
38
39  DISALLOW_COPY_AND_ASSIGN(RecentlyUsedFoldersComboModel);
40};
41
42#endif  // CHROME_BROWSER_BOOKMARKS_RECENTLY_USED_FOLDERS_COMBO_MODEL_H_
43