diff options
Diffstat (limited to 'chrome/browser/views/frame/status_area_view.cc')
-rw-r--r-- | chrome/browser/views/frame/status_area_view.cc | 71 |
1 files changed, 69 insertions, 2 deletions
diff --git a/chrome/browser/views/frame/status_area_view.cc b/chrome/browser/views/frame/status_area_view.cc index c574247..873ba6d 100644 --- a/chrome/browser/views/frame/status_area_view.cc +++ b/chrome/browser/views/frame/status_area_view.cc @@ -16,6 +16,7 @@ #include "base/timer.h" #include "chrome/app/chrome_dll_resource.h" #include "chrome/browser/browser.h" +#include "chrome/browser/browser_window.h" #include "chrome/browser/profile.h" #include "grit/chromium_strings.h" #include "grit/generated_resources.h" @@ -75,7 +76,7 @@ void ClockView::Paint(gfx::Canvas* canvas) { base::Time::Exploded now_exploded; now.LocalExplode(&now_exploded); - std::wstring time_string = StringPrintf(L"%d:%d", + std::wstring time_string = StringPrintf(L"%d:%02d", now_exploded.hour, now_exploded.minute); canvas->DrawStringInt(time_string, font_, SK_ColorWHITE, 0, 0, @@ -109,8 +110,56 @@ void ClockView::OnTimer() { SetNextTimer(); } +class OptionsMenuModel : public views::SimpleMenuModel, + public views::SimpleMenuModel::Delegate { + public: + explicit OptionsMenuModel(views::SimpleMenuModel::Delegate* delegate) + : SimpleMenuModel(this) { + AddItem(static_cast<int>(StatusAreaView::OPEN_TABS_ON_LEFT), + ASCIIToUTF16("Open tabs on left")); + AddItem(static_cast<int>(StatusAreaView::OPEN_TABS_CLOBBER), + ASCIIToUTF16("Open tabs clobber")); + AddItem(static_cast<int>(StatusAreaView::OPEN_TABS_ON_RIGHT), + ASCIIToUTF16("Open tabs on right")); + } + virtual ~OptionsMenuModel() { + } + + // SimpleMenuModel::Delegate implementation. + virtual bool IsCommandIdChecked(int command_id) const { + return StatusAreaView::GetOpenTabsMode() == command_id; + } + virtual bool IsCommandIdEnabled(int command_id) const { + return true; + } + virtual bool GetAcceleratorForCommandId( + int command_id, + views::Accelerator* accelerator) { + return false; + } + virtual void ExecuteCommand(int command_id) { + switch (command_id) { + case StatusAreaView::OPEN_TABS_ON_LEFT: + case StatusAreaView::OPEN_TABS_CLOBBER: + case StatusAreaView::OPEN_TABS_ON_RIGHT: + StatusAreaView::SetOpenTabsMode( + static_cast<StatusAreaView::OpenTabsMode>(command_id)); + break; + default: + NOTREACHED(); + } + } + + private: + DISALLOW_COPY_AND_ASSIGN(OptionsMenuModel); +}; + } // namespace +// Default to opening new tabs on the left. +StatusAreaView::OpenTabsMode StatusAreaView::open_tabs_mode_ = + StatusAreaView::OPEN_TABS_ON_LEFT; + StatusAreaView::StatusAreaView(Browser* browser) : browser_(browser), battery_view_(NULL), @@ -172,14 +221,30 @@ void StatusAreaView::Paint(gfx::Canvas* canvas) { ThemeProvider* theme = browser_->profile()->GetThemeProvider(); // Fill the background. - SkBitmap* background = theme->GetBitmapNamed(IDR_THEME_FRAME); + SkBitmap* background; + if (browser_->window()->IsActive()) + background = theme->GetBitmapNamed(IDR_THEME_FRAME); + else + background = theme->GetBitmapNamed(IDR_THEME_FRAME_INACTIVE); canvas->TileImageInt(*background, 0, 0, width(), height()); } +// static +StatusAreaView::OpenTabsMode StatusAreaView::GetOpenTabsMode() { + return open_tabs_mode_; +} + +// static +void StatusAreaView::SetOpenTabsMode(OpenTabsMode mode) { + open_tabs_mode_ = mode; +} + void StatusAreaView::CreateAppMenu() { if (app_menu_contents_.get()) return; + options_menu_contents_.reset(new OptionsMenuModel(this)); + app_menu_contents_.reset(new views::SimpleMenuModel(this)); app_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); app_menu_contents_->AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW); @@ -205,6 +270,8 @@ void StatusAreaView::CreateAppMenu() { l10n_util::GetStringFUTF16( IDS_OPTIONS, l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))); + app_menu_contents_->AddSubMenu(ASCIIToUTF16("Compact nav bar options"), + options_menu_contents_.get()); app_menu_contents_->AddItem(IDC_ABOUT, l10n_util::GetStringFUTF16( IDS_ABOUT, |