summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/status
diff options
context:
space:
mode:
authorzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-20 02:07:08 +0000
committerzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-20 02:07:08 +0000
commitd21e0b4899fc251ac21fb108e08eb41af7203183 (patch)
treeb859def7937d610388907529f29e44617b972fab /chrome/browser/chromeos/status
parent9d7c69e5006a874d7f127db46bdb0e76aaa60ec7 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/chromeos/status/feedback_menu_button.cc57
-rw-r--r--chrome/browser/chromeos/status/feedback_menu_button.h66
-rw-r--r--chrome/browser/chromeos/status/status_area_host.h3
-rw-r--r--chrome/browser/chromeos/status/status_area_view.cc6
-rw-r--r--chrome/browser/chromeos/status/status_area_view.h3
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_;