diff options
author | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-20 02:07:08 +0000 |
---|---|---|
committer | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-20 02:07:08 +0000 |
commit | d21e0b4899fc251ac21fb108e08eb41af7203183 (patch) | |
tree | b859def7937d610388907529f29e44617b972fab /chrome/browser/chromeos/status | |
parent | 9d7c69e5006a874d7f127db46bdb0e76aaa60ec7 (diff) | |
download | chromium_src-d21e0b4899fc251ac21fb108e08eb41af7203183.zip chromium_src-d21e0b4899fc251ac21fb108e08eb41af7203183.tar.gz chromium_src-d21e0b4899fc251ac21fb108e08eb41af7203183.tar.bz2 |
Integrated new bug icon in status bar. It opens bug reporting dialog.
BUG=chromium-os:3348
TEST=click on the new bug icon in the status bar, it should open bug reporting dialog
Review URL: http://codereview.chromium.org/2134009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47762 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/status')
5 files changed, 135 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/status/feedback_menu_button.cc b/chrome/browser/chromeos/status/feedback_menu_button.cc new file mode 100644 index 0000000..1b8ead6 --- /dev/null +++ b/chrome/browser/chromeos/status/feedback_menu_button.cc @@ -0,0 +1,57 @@ +// 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. + +#include "chrome/browser/chromeos/status/feedback_menu_button.h" + +#include <string> + +#include "app/resource_bundle.h" +#include "chrome/app/chrome_dll_resource.h" +#include "chrome/browser/chromeos/status/status_area_host.h" +#include "gfx/canvas.h" +#include "grit/generated_resources.h" +#include "grit/theme_resources.h" + +namespace chromeos { + +//////////////////////////////////////////////////////////////////////////////// +// LanguageMenuButton + +FeedbackMenuButton::FeedbackMenuButton(StatusAreaHost* host) + : StatusAreaButton(this), + host_(host) { + DCHECK(host_); +} + +FeedbackMenuButton::~FeedbackMenuButton() { +} + +//////////////////////////////////////////////////////////////////////////////// +// FeedbackMenuButton, StatusAreaButton implementation: + +void FeedbackMenuButton::DrawPressed(gfx::Canvas* canvas) { + DrawFeedbackIcon(canvas, *ResourceBundle::GetSharedInstance(). + GetBitmapNamed(IDR_STATUSBAR_FEEDBACK_PRESSED)); +} + +void FeedbackMenuButton::DrawIcon(gfx::Canvas* canvas) { + DrawFeedbackIcon(canvas, *ResourceBundle::GetSharedInstance(). + GetBitmapNamed(IDR_STATUSBAR_FEEDBACK)); +} + +void FeedbackMenuButton::DrawFeedbackIcon(gfx::Canvas* canvas, SkBitmap icon) { + // Draw the battery icon 5 pixels down to center it. + static const int kIconVerticalPadding = 5; + canvas->DrawBitmapInt(icon, 0, kIconVerticalPadding); +} + +//////////////////////////////////////////////////////////////////////////////// +// PowerMenuButton, views::ViewMenuDelegate implementation: + +void FeedbackMenuButton::RunMenu(views::View* source, const gfx::Point& pt) { + DCHECK(host_); + host_->ExecuteBrowserCommand(IDC_REPORT_BUG); +} + +} // namespace chromeos diff --git a/chrome/browser/chromeos/status/feedback_menu_button.h b/chrome/browser/chromeos/status/feedback_menu_button.h new file mode 100644 index 0000000..bf7bb49 --- /dev/null +++ b/chrome/browser/chromeos/status/feedback_menu_button.h @@ -0,0 +1,66 @@ +// 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_CHROMEOS_STATUS_FEEDBACK_MENU_BUTTON_H_ +#define CHROME_BROWSER_CHROMEOS_STATUS_FEEDBACK_MENU_BUTTON_H_ + +#include "app/menus/simple_menu_model.h" +#include "chrome/browser/chromeos/status/status_area_button.h" +#include "views/controls/menu/menu_2.h" +#include "views/controls/menu/view_menu_delegate.h" + +class SkBitmap; + +namespace chromeos { + +class StatusAreaHost; + +// The language menu button in the status area. +// This class will handle getting the IME/XKB status and populating the menu. +class FeedbackMenuButton : public StatusAreaButton, + public views::ViewMenuDelegate, + public menus::MenuModel { + public: + explicit FeedbackMenuButton(StatusAreaHost* host); + virtual ~FeedbackMenuButton(); + + private: + // StatusAreaButton implementation. + virtual void DrawPressed(gfx::Canvas* canvas); + virtual void DrawIcon(gfx::Canvas* canvas); + + // views::ViewMenuDelegate implementation. + virtual void RunMenu(views::View* source, const gfx::Point& pt); + + // menus::MenuModel implementation. + virtual int GetItemCount() const { return 0; } + virtual bool HasIcons() const { return false; } + virtual menus::MenuModel::ItemType GetTypeAt(int index) const { + return menus::MenuModel::TYPE_COMMAND; + } + virtual int GetCommandIdAt(int index) const { return index; } + virtual string16 GetLabelAt(int index) const { return string16(); } + virtual bool IsLabelDynamicAt(int index) const { return true; } + virtual bool GetAcceleratorAt(int index, + menus::Accelerator* accelerator) const { return false; } + virtual bool IsItemCheckedAt(int index) const { return false; } + virtual int GetGroupIdAt(int index) const { return 0; } + virtual bool GetIconAt(int index, SkBitmap* icon) const { return false; } + virtual bool IsEnabledAt(int index) const { return false; } + virtual menus::MenuModel* GetSubmenuModelAt(int index) const { return NULL; } + virtual void HighlightChangedTo(int index) {} + virtual void ActivatedAt(int index) {} + virtual void MenuWillShow() {} + + // This method will draw the |icon| in the appropriate place on the |canvas|. + void DrawFeedbackIcon(gfx::Canvas* canvas, SkBitmap icon); + + StatusAreaHost* host_; + + DISALLOW_COPY_AND_ASSIGN(FeedbackMenuButton); +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_STATUS_FEEDBACK_MENU_BUTTON_H_ diff --git a/chrome/browser/chromeos/status/status_area_host.h b/chrome/browser/chromeos/status/status_area_host.h index b236e31..434da9b 100644 --- a/chrome/browser/chromeos/status/status_area_host.h +++ b/chrome/browser/chromeos/status/status_area_host.h @@ -34,6 +34,9 @@ class StatusAreaHost { // Opens options dialog related to the button specified. virtual void OpenButtonOptions(const views::View* button_view) const = 0; + // Executes browser command. + virtual void ExecuteBrowserCommand(int id) const = 0; + // Indicates if the button specified should be visible at the moment. virtual bool IsButtonVisible(const views::View* button_view) const = 0; diff --git a/chrome/browser/chromeos/status/status_area_view.cc b/chrome/browser/chromeos/status/status_area_view.cc index 75d6c30..bd4fde8 100644 --- a/chrome/browser/chromeos/status/status_area_view.cc +++ b/chrome/browser/chromeos/status/status_area_view.cc @@ -7,6 +7,7 @@ #include <algorithm> #include "chrome/browser/chromeos/status/clock_menu_button.h" +#include "chrome/browser/chromeos/status/feedback_menu_button.h" #include "chrome/browser/chromeos/status/language_menu_button.h" #include "chrome/browser/chromeos/status/network_menu_button.h" #include "chrome/browser/chromeos/status/power_menu_button.h" @@ -28,6 +29,7 @@ StatusAreaView::OpenTabsMode StatusAreaView::open_tabs_mode_ = StatusAreaView::StatusAreaView(StatusAreaHost* host) : host_(host), clock_view_(NULL), + feedback_view_(NULL), language_view_(NULL), network_view_(NULL), power_view_(NULL) { @@ -38,6 +40,10 @@ void StatusAreaView::Init() { language_view_ = new LanguageMenuButton(host_); AddChildView(language_view_); + // Feedback. + feedback_view_ = new FeedbackMenuButton(host_); + AddChildView(feedback_view_); + // Network. network_view_ = new NetworkMenuButton(host_); AddChildView(network_view_); diff --git a/chrome/browser/chromeos/status/status_area_view.h b/chrome/browser/chromeos/status/status_area_view.h index 28847b7..c760779 100644 --- a/chrome/browser/chromeos/status/status_area_view.h +++ b/chrome/browser/chromeos/status/status_area_view.h @@ -11,6 +11,7 @@ namespace chromeos { class ClockMenuButton; +class FeedbackMenuButton; class LanguageMenuButton; class NetworkMenuButton; class PowerMenuButton; @@ -44,6 +45,7 @@ class StatusAreaView : public views::View { static void SetOpenTabsMode(OpenTabsMode mode); ClockMenuButton* clock_view() { return clock_view_; } + FeedbackMenuButton* feedback_view() { return feedback_view_; } LanguageMenuButton* language_view() { return language_view_; } NetworkMenuButton* network_view() { return network_view_; } PowerMenuButton* power_view() { return power_view_; } @@ -52,6 +54,7 @@ class StatusAreaView : public views::View { StatusAreaHost* host_; ClockMenuButton* clock_view_; + FeedbackMenuButton* feedback_view_; LanguageMenuButton* language_view_; NetworkMenuButton* network_view_; PowerMenuButton* power_view_; |