summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/frame
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-18 15:36:15 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-18 15:36:15 +0000
commit89c4ee8206b89e9e7407f37c1ab6002cbd23acd3 (patch)
tree20aa1cb57081f4a3ec106fa53dbf4174e0c63039 /chrome/browser/views/frame
parentf258a71cfa06f2050d80fc5d380700cc8c52aa9a (diff)
downloadchromium_src-89c4ee8206b89e9e7407f37c1ab6002cbd23acd3.zip
chromium_src-89c4ee8206b89e9e7407f37c1ab6002cbd23acd3.tar.gz
chromium_src-89c4ee8206b89e9e7407f37c1ab6002cbd23acd3.tar.bz2
Bugfixes and enhancements to the compact nav bar and the status area.
This makes the compact navigation bar off by default at the request of Nicolas. It can be enabled with --compact-nav on the command line. It also adds different tab opening options when this feature is enabled. They are accessible from the app menu in the status area. The buttons now extend to the top of the screen for easier clicking. The status area is enabled whether or not the compact navigation bar is. I fixed the background so it will appear unselected when the window loses focus, and I fixed the time formatting to make the minutes always 2 digits. The Chrome button is now hooked up and just opens a tab to a placeholder page. Review URL: http://codereview.chromium.org/169001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23626 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/frame')
-rw-r--r--chrome/browser/views/frame/status_area_view.cc71
-rw-r--r--chrome/browser/views/frame/status_area_view.h12
2 files changed, 81 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,
diff --git a/chrome/browser/views/frame/status_area_view.h b/chrome/browser/views/frame/status_area_view.h
index 1be12c8..6ace5a2 100644
--- a/chrome/browser/views/frame/status_area_view.h
+++ b/chrome/browser/views/frame/status_area_view.h
@@ -23,6 +23,12 @@ class StatusAreaView : public views::View,
public views::SimpleMenuModel::Delegate,
public views::ViewMenuDelegate {
public:
+ enum OpenTabsMode {
+ OPEN_TABS_ON_LEFT = 1,
+ OPEN_TABS_CLOBBER,
+ OPEN_TABS_ON_RIGHT
+ };
+
StatusAreaView(Browser* browser);
virtual ~StatusAreaView();
@@ -33,6 +39,9 @@ class StatusAreaView : public views::View,
virtual void Layout();
virtual void Paint(gfx::Canvas* canvas);
+ static OpenTabsMode GetOpenTabsMode();
+ static void SetOpenTabsMode(OpenTabsMode mode);
+
private:
void CreateAppMenu();
@@ -54,8 +63,11 @@ class StatusAreaView : public views::View,
views::MenuButton* menu_view_;
scoped_ptr<views::SimpleMenuModel> app_menu_contents_;
+ scoped_ptr<views::SimpleMenuModel> options_menu_contents_;
scoped_ptr<views::Menu2> app_menu_menu_;
+ static OpenTabsMode open_tabs_mode_;
+
DISALLOW_COPY_AND_ASSIGN(StatusAreaView);
};