| Index: chrome/browser/chromeos/options/options_window_view.cc
|
| diff --git a/chrome/browser/chromeos/options/options_window_view.cc b/chrome/browser/chromeos/options/options_window_view.cc
|
| deleted file mode 100644
|
| index 1cc4a62e6a6044657e46db9a01d213b7a7ad1733..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/options/options_window_view.cc
|
| +++ /dev/null
|
| @@ -1,392 +0,0 @@
|
| -// Copyright (c) 2011 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.
|
| -
|
| -#include "base/scoped_ptr.h"
|
| -#include "chrome/browser/browser_process.h"
|
| -#include "chrome/browser/chromeos/options/internet_page_view.h"
|
| -#include "chrome/browser/chromeos/options/system_page_view.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/ui/browser_list.h"
|
| -#include "chrome/browser/ui/browser_window.h"
|
| -#include "chrome/browser/ui/gtk/options/advanced_page_gtk.h"
|
| -#include "chrome/browser/ui/gtk/options/content_page_gtk.h"
|
| -#include "chrome/browser/ui/gtk/options/general_page_gtk.h"
|
| -#include "chrome/browser/ui/options/options_window.h"
|
| -#include "chrome/browser/ui/views/accessible_view_helper.h"
|
| -#include "chrome/browser/ui/views/window.h"
|
| -#include "chrome/browser/ui/window_sizer.h"
|
| -#include "chrome/common/chrome_constants.h"
|
| -#include "chrome/common/pref_names.h"
|
| -#include "grit/chromium_strings.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "grit/locale_settings.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "views/controls/native/native_view_host.h"
|
| -#include "views/controls/tabbed_pane/native_tabbed_pane_gtk.h"
|
| -#include "views/controls/tabbed_pane/tabbed_pane.h"
|
| -#include "views/widget/root_view.h"
|
| -#include "views/window/dialog_delegate.h"
|
| -#include "views/window/window.h"
|
| -#include "views/window/window_gtk.h"
|
| -
|
| -
|
| -namespace chromeos {
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// GtkPreferencePageHost
|
| -//
|
| -// Hosts a GTK preference page and takes care of sizing it appropriately.
|
| -//
|
| -class GtkPreferencePageHost : public views::NativeViewHost {
|
| - public:
|
| - explicit GtkPreferencePageHost(GtkWidget* widget);
|
| -
|
| - private:
|
| - // views::View overrides:
|
| - virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child);
|
| - virtual gfx::Size GetPreferredSize();
|
| -
|
| - GtkWidget* widget_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(GtkPreferencePageHost);
|
| -};
|
| -
|
| -GtkPreferencePageHost::GtkPreferencePageHost(GtkWidget* widget)
|
| - : widget_(widget) {
|
| - set_background(views::Background::CreateSolidBackground(SK_ColorWHITE));
|
| -}
|
| -
|
| -void GtkPreferencePageHost::ViewHierarchyChanged(bool is_add,
|
| - View* parent,
|
| - View* child) {
|
| - NativeViewHost::ViewHierarchyChanged(is_add, parent, child);
|
| - if (is_add && child == this)
|
| - Attach(widget_);
|
| -}
|
| -
|
| -gfx::Size GtkPreferencePageHost::GetPreferredSize() {
|
| - // We need to show the widget and its children since otherwise containers like
|
| - // gtk_box don't compute the correct size.
|
| - gtk_widget_show_all(widget_);
|
| - GtkRequisition requisition = { 0, 0 };
|
| - gtk_widget_size_request(GTK_WIDGET(widget_), &requisition);
|
| - GtkRequisition& size(widget_->requisition);
|
| - return gfx::Size(size.width, size.height);
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// OptionsWindowView
|
| -//
|
| -// The contents of the Options dialog window.
|
| -//
|
| -class OptionsWindowView : public views::View,
|
| - public views::DialogDelegate,
|
| - public views::TabbedPane::Listener {
|
| - public:
|
| - static const int kDialogPadding;
|
| - static const SkColor kDialogBackground;
|
| - static OptionsWindowView* instance_;
|
| -
|
| - explicit OptionsWindowView(Profile* profile);
|
| - virtual ~OptionsWindowView();
|
| -
|
| - // Shows the Tab corresponding to the specified OptionsPage.
|
| - void ShowOptionsPage(OptionsPage page, OptionsGroup highlight_group);
|
| -
|
| - // views::DialogDelegate implementation:
|
| - virtual int GetDialogButtons() const {
|
| - return 0;
|
| - }
|
| - virtual std::wstring GetWindowTitle() const;
|
| - virtual void WindowClosing();
|
| - virtual bool Cancel();
|
| - virtual views::View* GetContentsView();
|
| - virtual bool ShouldShowClientEdge() const {
|
| - return false;
|
| - }
|
| -
|
| - // views::TabbedPane::Listener implementation:
|
| - virtual void TabSelectedAt(int index);
|
| -
|
| - // 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:
|
| - // Init the assorted Tabbed pages
|
| - void Init();
|
| -
|
| - // Returns the currently selected OptionsPageView.
|
| - OptionsPageView* GetCurrentOptionsPageView() const;
|
| -
|
| - // Flag of whether we are fully initialized.
|
| - bool initialized_;
|
| -
|
| - // The Tab view that contains all of the options pages.
|
| - views::TabbedPane* tabs_;
|
| -
|
| - // The Profile associated with these options.
|
| - Profile* profile_;
|
| -
|
| - // Native Gtk options pages.
|
| - GeneralPageGtk general_page_;
|
| - ContentPageGtk content_page_;
|
| - AdvancedPageGtk advanced_page_;
|
| -
|
| - // The last page the user was on when they opened the Options window.
|
| - IntegerPrefMember last_selected_page_;
|
| -
|
| - scoped_ptr<AccessibleViewHelper> accessible_view_helper_;
|
| -
|
| - DISALLOW_IMPLICIT_CONSTRUCTORS(OptionsWindowView);
|
| -};
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// OptionsWindowView, public:
|
| -
|
| -// No dialog padding.
|
| -const int OptionsWindowView::kDialogPadding = 0;
|
| -
|
| -// Shaded frame color that matches the rendered frame. It's the result
|
| -// of SRC_OVER frame top center image on top of frame color.
|
| -const SkColor OptionsWindowView::kDialogBackground =
|
| - SkColorSetRGB(0x4E, 0x7D, 0xD0);
|
| -
|
| -// Live instance of the options view.
|
| -OptionsWindowView* OptionsWindowView::instance_ = NULL;
|
| -
|
| -OptionsWindowView::OptionsWindowView(Profile* profile)
|
| - // Always show preferences for the original profile. Most state when off
|
| - // the record comes from the original profile, but we explicitly use
|
| - // the original profile to avoid potential problems.
|
| - : initialized_(false),
|
| - tabs_(NULL),
|
| - profile_(profile->GetOriginalProfile()),
|
| - general_page_(profile_),
|
| - content_page_(profile_),
|
| - advanced_page_(profile_) {
|
| - // We don't need to observe changes in this value.
|
| - last_selected_page_.Init(prefs::kOptionsWindowLastTabIndex,
|
| - g_browser_process->local_state(), NULL);
|
| -
|
| - set_background(views::Background::CreateSolidBackground(kDialogBackground));
|
| -}
|
| -
|
| -OptionsWindowView::~OptionsWindowView() {
|
| -}
|
| -
|
| -void OptionsWindowView::ShowOptionsPage(OptionsPage page,
|
| - OptionsGroup highlight_group) {
|
| - // This will show invisible windows and bring visible windows to the front.
|
| - window()->Show();
|
| -
|
| - // Show all controls in tab after tab's size is allocated. We have
|
| - // to do this after size allocation otherwise WrapLabelAtAllocationHack
|
| - // in ContentPageGtk would break.
|
| - GtkWidget* notebook = static_cast<views::NativeTabbedPaneGtk*>(
|
| - tabs_->native_wrapper())->native_view();
|
| - gtk_widget_show_all(notebook);
|
| -
|
| - if (page == OPTIONS_PAGE_DEFAULT) {
|
| - // Remember the last visited page from local state.
|
| - page = static_cast<OptionsPage>(last_selected_page_.GetValue());
|
| - if (page == OPTIONS_PAGE_DEFAULT)
|
| - page = OPTIONS_PAGE_GENERAL;
|
| - }
|
| - // If the page number is out of bounds, reset to the first tab.
|
| - if (page < 0 || page >= tabs_->GetTabCount())
|
| - page = OPTIONS_PAGE_GENERAL;
|
| -
|
| - tabs_->SelectTabAt(static_cast<int>(page));
|
| -
|
| - // TODO(xiyuan): set highlight_group
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// OptionsWindowView, views::DialogDelegate implementation:
|
| -
|
| -std::wstring OptionsWindowView::GetWindowTitle() const {
|
| - return UTF16ToWide(
|
| - l10n_util::GetStringFUTF16(IDS_OPTIONS_DIALOG_TITLE,
|
| - l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
|
| -}
|
| -
|
| -void OptionsWindowView::WindowClosing() {
|
| - // Clear the static instance so that the next time ShowOptionsWindow() is
|
| - // called a new window is opened.
|
| - instance_ = NULL;
|
| -}
|
| -
|
| -bool OptionsWindowView::Cancel() {
|
| - OptionsPageView* selected_option_page = GetCurrentOptionsPageView();
|
| - if (selected_option_page) {
|
| - return selected_option_page->CanClose();
|
| - } else {
|
| - // Gtk option pages does not support CanClose.
|
| - return true;
|
| - }
|
| -}
|
| -
|
| -views::View* OptionsWindowView::GetContentsView() {
|
| - return this;
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// OptionsWindowView, views::TabbedPane::Listener implementation:
|
| -
|
| -void OptionsWindowView::TabSelectedAt(int index) {
|
| - if (!initialized_)
|
| - return;
|
| -
|
| - DCHECK(index > OPTIONS_PAGE_DEFAULT && index < OPTIONS_PAGE_COUNT);
|
| - last_selected_page_.SetValue(index);
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// OptionsWindowView, views::View overrides:
|
| -
|
| -void OptionsWindowView::Layout() {
|
| - tabs_->SetBounds(kDialogPadding, kDialogPadding,
|
| - width() - (2 * kDialogPadding),
|
| - height() - (2 * kDialogPadding));
|
| - if (!accessible_view_helper_.get()) {
|
| - accessible_view_helper_.reset(new AccessibleViewHelper(this, profile_));
|
| - }
|
| -}
|
| -
|
| -gfx::Size OptionsWindowView::GetPreferredSize() {
|
| - gfx::Size size(tabs_->GetPreferredSize());
|
| - size.Enlarge(2 * kDialogPadding, 2 * kDialogPadding);
|
| - return size;
|
| -}
|
| -
|
| -void OptionsWindowView::ViewHierarchyChanged(bool is_add,
|
| - views::View* parent,
|
| - views::View* child) {
|
| - // Can't init before we're inserted into a Container, because we require a
|
| - // HWND to parent native child controls to.
|
| - if (is_add && child == this)
|
| - Init();
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// OptionsWindowView, private:
|
| -
|
| -void OptionsWindowView::Init() {
|
| - tabs_ = new views::TabbedPane;
|
| - tabs_->SetListener(this);
|
| - AddChildView(tabs_);
|
| -
|
| - GtkWidget* notebook = static_cast<views::NativeTabbedPaneGtk*>(
|
| - tabs_->native_wrapper())->native_view();
|
| -
|
| - // Set vertical padding of tab header.
|
| - gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(notebook), 5);
|
| -
|
| - // Set a name for notebook. Note that the name is also used in theme engine
|
| - // to apply specific drawings for this widget.
|
| - gtk_widget_set_name(GTK_WIDGET(notebook), "chromeos-options-tab");
|
| -
|
| - // Setup tab pages.
|
| - int tab_index = 0;
|
| -
|
| - SystemPageView* system_page = new SystemPageView(profile_);
|
| - system_page->set_background(views::Background::CreateSolidBackground(
|
| - SK_ColorWHITE));
|
| - tabs_->AddTabAtIndex(tab_index++,
|
| - UTF16ToWide(l10n_util::GetStringUTF16(
|
| - IDS_OPTIONS_SYSTEM_TAB_LABEL)),
|
| - system_page, false);
|
| -
|
| - InternetPageView* internet_page = new InternetPageView(profile_);
|
| - internet_page->set_background(views::Background::CreateSolidBackground(
|
| - SK_ColorWHITE));
|
| - tabs_->AddTabAtIndex(tab_index++,
|
| - UTF16ToWide(l10n_util::GetStringUTF16(
|
| - IDS_OPTIONS_INTERNET_TAB_LABEL)),
|
| - internet_page, false);
|
| -
|
| - tabs_->AddTabAtIndex(tab_index++,
|
| - UTF16ToWide(l10n_util::GetStringUTF16(
|
| - IDS_OPTIONS_GENERAL_TAB_LABEL)),
|
| - new GtkPreferencePageHost(
|
| - general_page_.get_page_widget()),
|
| - false);
|
| -
|
| - tabs_->AddTabAtIndex(tab_index++,
|
| - UTF16ToWide(l10n_util::GetStringUTF16(
|
| - IDS_OPTIONS_CONTENT_TAB_LABEL)),
|
| - new GtkPreferencePageHost(
|
| - content_page_.get_page_widget()),
|
| - false);
|
| -
|
| - tabs_->AddTabAtIndex(tab_index++,
|
| - UTF16ToWide(l10n_util::GetStringUTF16(
|
| - IDS_OPTIONS_ADVANCED_TAB_LABEL)),
|
| - new GtkPreferencePageHost(
|
| - advanced_page_.get_page_widget()),
|
| - false);
|
| -
|
| - DCHECK(tabs_->GetTabCount() == OPTIONS_PAGE_COUNT);
|
| -
|
| - initialized_ = true;
|
| -}
|
| -
|
| -OptionsPageView* OptionsWindowView::GetCurrentOptionsPageView() const {
|
| - int selected_option_page = tabs_->GetSelectedTabIndex();
|
| - if (selected_option_page < OPTIONS_PAGE_GENERAL) {
|
| - return static_cast<OptionsPageView*>(tabs_->GetSelectedTab());
|
| - } else {
|
| - return NULL;
|
| - }
|
| -}
|
| -
|
| -void CloseOptionsWindow() {
|
| - if (OptionsWindowView::instance_)
|
| - OptionsWindowView::instance_->window()->Close();
|
| -}
|
| -
|
| -gfx::NativeWindow GetOptionsViewParent() {
|
| - if (Browser* b = BrowserList::GetLastActive()) {
|
| - if (b->type() != Browser::TYPE_NORMAL) {
|
| - b = BrowserList::FindBrowserWithType(b->profile(),
|
| - Browser::TYPE_NORMAL,
|
| - true);
|
| - }
|
| -
|
| - if (b)
|
| - return b->window()->GetNativeHandle();
|
| - }
|
| -
|
| - return NULL;
|
| -}
|
| -
|
| -}; // namespace chromeos
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// Factory/finder method:
|
| -
|
| -void ShowOptionsWindow(OptionsPage page,
|
| - OptionsGroup highlight_group,
|
| - Profile* profile) {
|
| - DCHECK(profile);
|
| -
|
| - using chromeos::OptionsWindowView;
|
| -
|
| - // If there's already an existing options window, close it and create
|
| - // a new one for the current active browser.
|
| - chromeos::CloseOptionsWindow();
|
| -
|
| - OptionsWindowView::instance_ = new OptionsWindowView(profile);
|
| - browser::CreateViewsWindow(chromeos::GetOptionsViewParent(),
|
| - gfx::Rect(),
|
| - OptionsWindowView::instance_);
|
| -
|
| - OptionsWindowView::instance_->ShowOptionsPage(page, highlight_group);
|
| -}
|
|
|