diff options
Diffstat (limited to 'chrome/browser/ui/views/options/cookies_view.h')
-rw-r--r-- | chrome/browser/ui/views/options/cookies_view.h | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/chrome/browser/ui/views/options/cookies_view.h b/chrome/browser/ui/views/options/cookies_view.h new file mode 100644 index 0000000..1d117f7 --- /dev/null +++ b/chrome/browser/ui/views/options/cookies_view.h @@ -0,0 +1,159 @@ +// Copyright (c) 2010 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_UI_VIEWS_OPTIONS_COOKIES_VIEW_H_ +#define CHROME_BROWSER_UI_VIEWS_OPTIONS_COOKIES_VIEW_H_ +#pragma once + +#include <string> + +#include "base/task.h" +#include "chrome/browser/cookies_tree_model.h" +#include "net/base/cookie_monster.h" +#include "views/controls/button/button.h" +#include "views/controls/tree/tree_view.h" +#include "views/controls/textfield/textfield.h" +#include "views/view.h" +#include "views/window/dialog_delegate.h" +#include "views/window/window.h" + +namespace views { + +class Label; +class NativeButton; + +} // namespace views + + +class AppCacheInfoView; +class CookieInfoView; +class CookiesTreeView; +class DatabaseInfoView; +class IndexedDBInfoView; +class LocalStorageInfoView; +class Profile; +class Timer; +class TreeModel; +class TreeModelNode; + + +class CookiesView : public CookiesTreeModel::Observer, + public views::View, + public views::DialogDelegate, + public views::ButtonListener, + public views::TreeViewController, + public views::Textfield::Controller { + public: + // Show the Cookies Window, creating one if necessary. + static void ShowCookiesWindow(Profile* profile); + + virtual ~CookiesView(); + + // Updates the display to show only the search results. + void UpdateSearchResults(); + + // Begin TreeModelObserver implementation. + virtual void TreeNodesAdded(TreeModel* model, + TreeModelNode* parent, + int start, + int count); + virtual void TreeNodesRemoved(TreeModel* model, + TreeModelNode* parent, + int start, + int count) {} + virtual void TreeNodeChanged(TreeModel* model, TreeModelNode* node) {} + // End TreeModelObserver implementation. + + // views::ButtonListener implementation. + virtual void ButtonPressed(views::Button* sender, const views::Event& event); + + // views::TreeViewController implementation. + virtual void OnTreeViewSelectionChanged(views::TreeView* tree_view); + + // views::TreeViewController implementation. + virtual void OnTreeViewKeyDown(app::KeyboardCode keycode); + + // views::Textfield::Controller implementation. + virtual void ContentsChanged(views::Textfield* sender, + const std::wstring& new_contents); + virtual bool HandleKeystroke(views::Textfield* sender, + const views::Textfield::Keystroke& key); + + // views::WindowDelegate implementation. + virtual int GetDialogButtons() const { + return MessageBoxFlags::DIALOGBUTTON_CANCEL; + } + virtual views::View* GetInitiallyFocusedView() { + return search_field_; + } + + virtual bool CanResize() const { return true; } + virtual std::wstring GetWindowTitle() const; + virtual void WindowClosing(); + virtual views::View* GetContentsView(); + + // views::View overrides: + virtual void Layout(); + virtual gfx::Size GetPreferredSize(); + + protected: + // views::View overrides: + virtual void ViewHierarchyChanged(bool is_add, + views::View* parent, + views::View* child); + + private: + class InfoPanelView; + + // Use the static factory method to show. + explicit CookiesView(Profile* profile); + + // Initialize the dialog contents and layout. + void Init(); + + // Resets the display to what it would be if there were no search query. + void ResetSearchQuery(); + + // Update the UI when there are no cookies. + void UpdateForEmptyState(); + + // Enable or disable the remove and remove all buttons. + void UpdateRemoveButtonsState(); + + // Updates view to be visible inside detailed_info_view_; + void UpdateVisibleDetailedInfo(views::View* view); + + // Assorted dialog controls + views::Label* search_label_; + views::Textfield* search_field_; + views::NativeButton* clear_search_button_; + views::Label* description_label_; + CookiesTreeView* cookies_tree_; + InfoPanelView* info_panel_; + CookieInfoView* cookie_info_view_; + DatabaseInfoView* database_info_view_; + LocalStorageInfoView* local_storage_info_view_; + AppCacheInfoView* appcache_info_view_; + IndexedDBInfoView* indexed_db_info_view_; + views::NativeButton* remove_button_; + views::NativeButton* remove_all_button_; + + // The Cookies Tree model + scoped_ptr<CookiesTreeModel> cookies_tree_model_; + + // The Profile for which Cookies are displayed + Profile* profile_; + + // A factory to construct Runnable Methods so that we can be called back to + // re-evaluate the model after the search query string changes. + ScopedRunnableMethodFactory<CookiesView> search_update_factory_; + + // Our containing window. If this is non-NULL there is a visible Cookies + // window somewhere. + static views::Window* instance_; + + DISALLOW_COPY_AND_ASSIGN(CookiesView); +}; + +#endif // CHROME_BROWSER_UI_VIEWS_OPTIONS_COOKIES_VIEW_H_ |