Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7803)

Unified Diff: chrome/browser/search_engines/keyword_editor_controller.h

Issue 146138: Refactor the win KeywordEditorView for cross platform friendliness. (Closed)
Patch Set: '' Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/search_engines/keyword_editor_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/search_engines/keyword_editor_controller.h
===================================================================
--- chrome/browser/search_engines/keyword_editor_controller.h (revision 19296)
+++ chrome/browser/search_engines/keyword_editor_controller.h (working copy)
@@ -1,149 +1,31 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_VIEWS_KEYWORD_EDITOR_VIEW_H_
-#define CHROME_BROWSER_VIEWS_KEYWORD_EDITOR_VIEW_H_
+#ifndef CHROME_BROWSER_SEARCH_ENGINES_KEYWORD_EDITOR_CONTROLLER_H_
+#define CHROME_BROWSER_SEARCH_ENGINES_KEYWORD_EDITOR_CONTROLLER_H_
-#include <Windows.h>
-#include <map>
+#include <string>
-#include "app/table_model.h"
-#include "chrome/browser/search_engines/edit_search_engine_controller.h"
-#include "chrome/browser/search_engines/template_url_model.h"
-#include "views/controls/button/button.h"
-#include "views/controls/table/table_view_observer.h"
-#include "views/view.h"
-#include "views/window/dialog_delegate.h"
+#include "base/basictypes.h"
+#include "base/scoped_ptr.h"
-namespace views {
-class Label;
-class NativeButton;
-}
-
-namespace {
-class BorderView;
-}
-
-class ModelEntry;
-class SkBitmap;
+class Profile;
+class TemplateURL;
class TemplateURLModel;
class TemplateURLTableModel;
-// TemplateURLTableModel is the TableModel implementation used by
-// KeywordEditorView to show the keywords in a TableView.
-//
-// TemplateURLTableModel has two columns, the first showing the description,
-// the second the keyword.
-//
-// TemplateURLTableModel maintains a vector of ModelEntrys that correspond to
-// each row in the tableview. Each ModelEntry wraps a TemplateURL, providing
-// the favicon. The entries in the model are sorted such that non-generated
-// appear first (grouped together) and are followed by generated keywords.
-
-class TemplateURLTableModel : public TableModel {
+class KeywordEditorController {
public:
- explicit TemplateURLTableModel(TemplateURLModel* template_url_model);
+ explicit KeywordEditorController(Profile* profile);
+ ~KeywordEditorController();
- virtual ~TemplateURLTableModel();
-
- // Reloads the entries from the TemplateURLModel. This should ONLY be invoked
- // if the TemplateURLModel wasn't initially loaded and has been loaded.
- void Reload();
-
- // TableModel overrides.
- virtual int RowCount();
- virtual std::wstring GetText(int row, int column);
- virtual SkBitmap GetIcon(int row);
- virtual void SetObserver(TableModelObserver* observer);
- virtual bool HasGroups();
- virtual Groups GetGroups();
- virtual int GetGroupID(int row);
-
- // Removes the entry at the specified index. This does NOT propagate the
- // change to the backend.
- void Remove(int index);
-
- // Adds a new entry at the specified index. This does not propagate the
- // change to the backend.
- void Add(int index, const TemplateURL* template_url);
-
- // Reloads the icon at the specified index.
- void ReloadIcon(int index);
-
- // Returns The TemplateURL at the specified index.
- const TemplateURL& GetTemplateURL(int index);
-
- // Returns the index of the TemplateURL, or -1 if it the TemplateURL is not
- // found.
- int IndexOfTemplateURL(const TemplateURL* template_url);
-
- // Moves the keyword at the specified index to be at the end of the main
- // group. Returns the new index. This does nothing if the entry is already
- // in the main group.
- void MoveToMainGroup(int index);
-
- // If there is an observer, it's notified the selected row has changed.
- void NotifyChanged(int index);
-
- TemplateURLModel* template_url_model() const { return template_url_model_; }
-
- // Returns the index of the last entry shown in the search engines group.
- int last_search_engine_index() const { return last_search_engine_index_; }
-
- private:
- friend class ModelEntry;
-
- // Notification that a model entry has fetched its icon.
- void FavIconAvailable(ModelEntry* entry);
-
- TableModelObserver* observer_;
-
- // The entries.
- std::vector<ModelEntry*> entries_;
-
- // The model we're displaying entries from.
- TemplateURLModel* template_url_model_;
-
- // Index of the last search engine in entries_. This is used to determine the
- // group boundaries.
- int last_search_engine_index_;
-
- DISALLOW_EVIL_CONSTRUCTORS(TemplateURLTableModel);
-};
-
-// KeywordEditorView ----------------------------------------------------------
-
-// KeywordEditorView allows the user to edit keywords.
-
-class KeywordEditorView : public views::View,
- public views::TableViewObserver,
- public views::ButtonListener,
- public TemplateURLModelObserver,
- public views::DialogDelegate,
- public EditSearchEngineControllerDelegate {
- friend class KeywordEditorViewTest;
- FRIEND_TEST(KeywordEditorViewTest, MakeDefault);
- public:
- // Shows the KeywordEditorView for the specified profile. If there is a
- // KeywordEditorView already open, it is closed and a new one is shown.
- static void Show(Profile* profile);
-
- explicit KeywordEditorView(Profile* profile);
- virtual ~KeywordEditorView();
-
- // Overridden from EditSearchEngineControllerDelegate.
- // Calls AddTemplateURL or ModifyTemplateURL as appropriate.
- virtual void OnEditedKeyword(const TemplateURL* template_url,
- const std::wstring& title,
- const std::wstring& keyword,
- const std::wstring& url);
-
// Invoked when the user succesfully fills out the add keyword dialog.
// Propagates the change to the TemplateURLModel and updates the table model.
- void AddTemplateURL(const std::wstring& title,
- const std::wstring& keyword,
- const std::wstring& url);
+ // Returns the index of the added URL.
+ int AddTemplateURL(const std::wstring& title,
+ const std::wstring& keyword,
+ const std::wstring& url);
// Invoked when the user modifies a TemplateURL. Updates the TemplateURLModel
// and table model appropriately.
@@ -152,63 +34,39 @@
const std::wstring& keyword,
const std::wstring& url);
- // Overriden to invoke Layout.
- virtual gfx::Size GetPreferredSize();
+ // Return true if the given |url| can be made the default.
+ bool CanMakeDefault(const TemplateURL* url) const;
- // DialogDelegate methods:
- virtual bool CanResize() const;
- virtual std::wstring GetWindowTitle() const;
- virtual int GetDialogButtons() const;
- virtual bool Accept();
- virtual bool Cancel();
- virtual views::View* GetContentsView();
+ // Return true if the given |url| can be removed.
+ bool CanRemove(const TemplateURL* url) const;
- // Returns the TemplateURLModel we're using.
- TemplateURLModel* template_url_model() const { return url_model_; }
+ // Remove the TemplateURL at the specified index in the TableModel.
+ void RemoveTemplateURL(int index);
- private:
- void Init();
+ // Make the TemplateURL at the specified index (into the TableModel) the
+ // default search provider. Return the new index, or -1 if nothing was done.
+ int MakeDefaultTemplateURL(int index);
- // Creates the layout and adds the views to it.
- void InitLayoutManager();
+ // Return true if the |url_model_| data is loaded.
+ bool loaded() const;
- // TableViewObserver method. Updates buttons contingent on the selection.
- virtual void OnSelectionChanged();
- // Edits the selected item.
- virtual void OnDoubleClick();
+ // Return the TemplateURL corresponding to the |index| in the model.
+ const TemplateURL* GetTemplateURL(int index) const;
- // Button::ButtonListener method.
- virtual void ButtonPressed(views::Button* sender);
+ TemplateURLTableModel* table_model() {
+ return table_model_.get();
+ }
- // TemplateURLModelObserver notification.
- virtual void OnTemplateURLModelChanged();
+ TemplateURLModel* url_model() const;
- // Toggles whether the selected keyword is the default search provider.
- void MakeDefaultSearchProvider();
-
- // Make the TemplateURL at the specified index (into the TableModel) the
- // default search provider.
- void MakeDefaultSearchProvider(int index);
-
+ private:
// The profile.
Profile* profile_;
- // Model containing TemplateURLs. We listen for changes on this and propagate
- // them to the table model.
- TemplateURLModel* url_model_;
-
// Model for the TableView.
scoped_ptr<TemplateURLTableModel> table_model_;
- // All the views are added as children, so that we don't need to delete
- // them directly.
- views::TableView* table_view_;
- views::NativeButton* add_button_;
- views::NativeButton* edit_button_;
- views::NativeButton* remove_button_;
- views::NativeButton* make_default_button_;
-
- DISALLOW_COPY_AND_ASSIGN(KeywordEditorView);
+ DISALLOW_COPY_AND_ASSIGN(KeywordEditorController);
};
-#endif // CHROME_BROWSER_VIEWS_KEYWORD_EDITOR_VIEW_H_
+#endif // CHROME_BROWSER_SEARCH_ENGINES_KEYWORD_EDITOR_CONTROLLER_H_
« no previous file with comments | « no previous file | chrome/browser/search_engines/keyword_editor_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698