Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(708)

Unified Diff: chrome/browser/chromeos/status/status_area_button.h

Issue 8438064: Separate StatusAreaView from StatusAreaViewChromeos (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/status/status_area_button.h
diff --git a/chrome/browser/chromeos/status/status_area_button.h b/chrome/browser/chromeos/status/status_area_button.h
index 1aee80086091c861b9c7aa0215efad8091f62614..e88cbcd04cc3d946a4103eaa509c748ac17eab1d 100644
--- a/chrome/browser/chromeos/status/status_area_button.h
+++ b/chrome/browser/chromeos/status/status_area_button.h
@@ -7,17 +7,47 @@
#pragma once
#include "base/string16.h"
-#include "chrome/browser/chromeos/status/status_area_host.h"
#include "views/controls/button/menu_button.h"
#include "views/controls/menu/view_menu_delegate.h"
-namespace chromeos {
+namespace gfx {
+class Font;
+}
// Button to be used to represent status and allow menus to be popped up.
// Shows current button state by drawing a border around the current icon.
class StatusAreaButton : public views::MenuButton {
public:
- StatusAreaButton(StatusAreaHost* host,
+ // Different text styles for different types of backgrounds.
+ enum TextStyle {
+ WHITE_PLAIN,
+ GRAY_PLAIN,
+ WHITE_HALOED,
+ GRAY_EMBOSSED
+ };
+
+ class Delegate {
+ public:
+ // |command_id| can be any int, passed from the button to the delegate.
+ virtual bool ShouldExecuteStatusAreaCommand(
+ const views::View* button_view, int command_id) const = 0;
+
+ virtual void ExecuteStatusAreaCommand(
+ const views::View* button_view, int command_id) = 0;
+
+ // Return the button font. |font| is set to the default button font.
+ virtual gfx::Font GetStatusAreaFont(const gfx::Font& font) const = 0;
+
+ virtual TextStyle GetStatusAreaTextStyle() const = 0;
+
+ // Handle visibility changes (e.g. resize the status area).
+ virtual void ButtonVisibilityChanged(views::View* button_view) = 0;
+
+ protected:
+ virtual ~Delegate() {}
+ };
+
+ StatusAreaButton(Delegate* button_delegate,
views::ViewMenuDelegate* menu_delegate);
virtual ~StatusAreaButton() {}
virtual void PaintButton(gfx::Canvas* canvas, PaintButtonMode mode);
@@ -26,10 +56,6 @@ class StatusAreaButton : public views::MenuButton {
// text content so that the button size would fit the new text size.
virtual void SetText(const string16& text);
- void set_use_menu_button_paint(bool use_menu_button_paint) {
- use_menu_button_paint_ = use_menu_button_paint;
- }
-
// views::MenuButton overrides.
virtual bool Activate() OVERRIDE;
@@ -40,11 +66,13 @@ class StatusAreaButton : public views::MenuButton {
virtual void SetVisible(bool visible) OVERRIDE;
virtual bool HitTest(const gfx::Point& l) const OVERRIDE;
- // Controls whether or not this status area button is able to be pressed.
- void set_active(bool active) { active_ = active; }
- bool active() const { return active_; }
+ void set_menu_active(bool active) { menu_active_ = active; }
+ bool menu_active() const { return menu_active_; }
protected:
+ Delegate* delegate() { return delegate_; }
+ const Delegate* delegate() const { return delegate_; }
+
// Subclasses should override these methods to return the correct dimensions.
virtual int icon_height();
virtual int icon_width();
@@ -53,26 +81,20 @@ class StatusAreaButton : public views::MenuButton {
// The padding is added to both the left and right side.
virtual int horizontal_padding();
- // True if the button wants to use views::MenuButton drawings.
- bool use_menu_button_paint_;
-
// Insets to use for this button.
gfx::Insets insets_;
- // Indicates when this button can be pressed. Independent of
- // IsEnabled state, so that when IsEnabled is true, this can still
- // be false, and vice versa.
- bool active_;
-
- // The status area host,
- StatusAreaHost* host_;
+ // Controls whether or not the menu can be activated. This is independent of
+ // IsEnabled state, so that we can prevent the menu from appearing without
+ // affecting the appearance of the button.
+ bool menu_active_;
private:
void UpdateTextStyle();
+ Delegate* delegate_;
+
DISALLOW_COPY_AND_ASSIGN(StatusAreaButton);
};
-} // namespace chromeos
-
#endif // CHROME_BROWSER_CHROMEOS_STATUS_STATUS_AREA_BUTTON_H_
« no previous file with comments | « chrome/browser/chromeos/status/power_menu_button_browsertest.cc ('k') | chrome/browser/chromeos/status/status_area_button.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698