| 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_
|
|
|