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

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: . 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..c589c3acb93b7dd4346fb16b6f599365a7ac794f 100644
--- a/chrome/browser/chromeos/status/status_area_button.h
+++ b/chrome/browser/chromeos/status/status_area_button.h
@@ -7,17 +7,40 @@
#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 ShouldExecuteCommand(
+ const views::View* button_view, int command_id) const = 0;
tfarina 2011/11/03 19:45:05 could you add a blank line between each function?
stevenjb 2011/11/04 00:46:42 Done.
+ virtual void ExecuteCommand(
+ const views::View* button_view, int command_id) = 0;
+ // Contextually adjust the button appearance.
+ virtual int GetFontStyle(const gfx::Font& font) const = 0;
+ virtual TextStyle GetTextStyle() const = 0;
+ // Handle visibility changes (e.g. resize the status area).
+ virtual void ButtonVisibilityChanged(views::View* button_view) = 0;
+ };
tfarina 2011/11/03 19:45:05 please, add a protected virtual dtor.
stevenjb 2011/11/04 00:46:42 Done.
+
+ StatusAreaButton(Delegate* button_delegate,
views::ViewMenuDelegate* menu_delegate);
virtual ~StatusAreaButton() {}
virtual void PaintButton(gfx::Canvas* canvas, PaintButtonMode mode);
@@ -26,10 +49,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 +59,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 +74,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