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

Side by Side Diff: chrome/browser/chromeos/status/network_menu_button.h

Issue 3166028: Replace network combobox with network dropdown button (Closed)
Patch Set: Removed trailing spaces Created 10 years, 3 months 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_BUTTON_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_BUTTON_H_
6 #define CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_BUTTON_H_ 6 #define CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_BUTTON_H_
7 #pragma once 7 #pragma once
8 8
9 #include <string>
10 #include <vector>
11
12 #include "app/throb_animation.h" 9 #include "app/throb_animation.h"
13 #include "base/timer.h" 10 #include "base/timer.h"
14 #include "chrome/browser/chromeos/cros/network_library.h" 11 #include "chrome/browser/chromeos/cros/network_library.h"
15 #include "chrome/browser/chromeos/options/network_config_view.h" 12 #include "chrome/browser/chromeos/status/network_menu.h"
16 #include "chrome/browser/chromeos/status/status_area_button.h" 13 #include "chrome/browser/chromeos/status/status_area_button.h"
17 #include "views/controls/menu/menu_2.h"
18 #include "views/controls/menu/view_menu_delegate.h"
19
20 class SkBitmap;
21 14
22 namespace gfx { 15 namespace gfx {
23 class Canvas; 16 class Canvas;
24 } 17 }
25 18
26 namespace chromeos { 19 namespace chromeos {
27 20
28 class StatusAreaHost; 21 class StatusAreaHost;
29 22
30 // The network menu button in the status area. 23 // The network menu button in the status area.
(...skipping 14 matching lines...) Expand all
45 // -------------------------------- 38 // --------------------------------
46 // Disable Wifi 39 // Disable Wifi
47 // Disable Celluar 40 // Disable Celluar
48 // -------------------------------- 41 // --------------------------------
49 // <IP Address> 42 // <IP Address>
50 // Network settings... 43 // Network settings...
51 // 44 //
52 // <icon> will show the strength of the wifi/cellular networks. 45 // <icon> will show the strength of the wifi/cellular networks.
53 // The label will be BOLD if the network is currently connected. 46 // The label will be BOLD if the network is currently connected.
54 class NetworkMenuButton : public StatusAreaButton, 47 class NetworkMenuButton : public StatusAreaButton,
55 public views::ViewMenuDelegate, 48 public NetworkMenu,
56 public menus::MenuModel,
57 public NetworkLibrary::Observer { 49 public NetworkLibrary::Observer {
58 public: 50 public:
59 explicit NetworkMenuButton(StatusAreaHost* host); 51 explicit NetworkMenuButton(StatusAreaHost* host);
60 virtual ~NetworkMenuButton(); 52 virtual ~NetworkMenuButton();
61 53
62 // menus::MenuModel implementation.
63 virtual bool HasIcons() const { return true; }
64 virtual int GetItemCount() const;
65 virtual menus::MenuModel::ItemType GetTypeAt(int index) const;
66 virtual int GetCommandIdAt(int index) const { return index; }
67 virtual string16 GetLabelAt(int index) const;
68 virtual bool IsLabelDynamicAt(int index) const { return true; }
69 virtual const gfx::Font* GetLabelFontAt(int index) const;
70 virtual bool GetAcceleratorAt(int index,
71 menus::Accelerator* accelerator) const { return false; }
72 virtual bool IsItemCheckedAt(int index) const;
73 virtual int GetGroupIdAt(int index) const { return 0; }
74 virtual bool GetIconAt(int index, SkBitmap* icon) const;
75 virtual menus::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const {
76 return NULL;
77 }
78 virtual bool IsEnabledAt(int index) const;
79 virtual menus::MenuModel* GetSubmenuModelAt(int index) const { return NULL; }
80 virtual void HighlightChangedTo(int index) {}
81 virtual void ActivatedAt(int index);
82 virtual void MenuWillShow() {}
83
84 // AnimationDelegate implementation. 54 // AnimationDelegate implementation.
85 virtual void AnimationProgressed(const Animation* animation); 55 virtual void AnimationProgressed(const Animation* animation);
86 56
87 // NetworkLibrary::Observer implementation. 57 // NetworkLibrary::Observer implementation.
88 virtual void NetworkChanged(NetworkLibrary* obj); 58 virtual void NetworkChanged(NetworkLibrary* obj);
89 59
90 // Returns the Icon for a network strength between 0 and 100.
91 // |black| is used to specify whether to return a black icon for display
92 // on a light background or a white icon for display on a dark background.
93 static SkBitmap IconForNetworkStrength(int strength, bool black);
94
95 // This method will convert the |icon| bitmap to the correct size for display.
96 // If the |badge| icon is not empty, it will draw that on top of the icon.
97 static SkBitmap IconForDisplay(SkBitmap icon, SkBitmap badge);
98
99 // Sets the badge icon. 60 // Sets the badge icon.
100 void SetBadge(const SkBitmap& badge); 61 void SetBadge(const SkBitmap& badge);
101 SkBitmap badge() const { return badge_; } 62 SkBitmap badge() const { return badge_; }
102 63
103 protected: 64 protected:
104 // StatusAreaButton implementation. 65 // StatusAreaButton implementation.
105 virtual void DrawPressed(gfx::Canvas* canvas); 66 virtual void DrawPressed(gfx::Canvas* canvas);
106 virtual void DrawIcon(gfx::Canvas* canvas); 67 virtual void DrawIcon(gfx::Canvas* canvas);
107 68
69 // NetworkMenu implementation:
70 virtual bool IsBrowserMode() const;
71 virtual gfx::NativeWindow GetNativeWindow() const;
72 virtual void OpenButtonOptions() const;
73 virtual bool ShouldOpenButtonOptions() const;
74
108 private: 75 private:
109 enum MenuItemFlags {
110 FLAG_DISABLED = 1 << 0,
111 FLAG_TOGGLE_ETHERNET = 1 << 1,
112 FLAG_TOGGLE_WIFI = 1 << 2,
113 FLAG_TOGGLE_CELLULAR = 1 << 3,
114 FLAG_TOGGLE_OFFLINE = 1 << 4,
115 FLAG_ASSOCIATED = 1 << 5,
116 FLAG_ETHERNET = 1 << 6,
117 FLAG_WIFI = 1 << 7,
118 FLAG_CELLULAR = 1 << 8,
119 FLAG_OPTIONS = 1 << 9,
120 FLAG_OTHER_NETWORK = 1 << 10,
121 };
122
123 struct MenuItem {
124 MenuItem()
125 : type(menus::MenuModel::TYPE_SEPARATOR),
126 flags(0) {}
127 MenuItem(menus::MenuModel::ItemType type, string16 label, SkBitmap icon,
128 const std::string& wireless_path, int flags)
129 : type(type),
130 label(label),
131 icon(icon),
132 wireless_path(wireless_path),
133 flags(flags) {}
134
135 menus::MenuModel::ItemType type;
136 string16 label;
137 SkBitmap icon;
138 std::string wireless_path;
139 int flags;
140 };
141 typedef std::vector<MenuItem> MenuItemVector;
142
143 // views::ViewMenuDelegate implementation.
144 virtual void RunMenu(views::View* source, const gfx::Point& pt);
145
146 // Called by RunMenu to initialize our list of menu items.
147 void InitMenuItems();
148
149 // Set to true if we are currently refreshing the menu.
150 bool refreshing_menu_;
151
152 // The number of wifi strength images.
153 static const int kNumWifiImages;
154
155 // Our menu items.
156 MenuItemVector menu_items_;
157
158 // The status area host, 76 // The status area host,
159 StatusAreaHost* host_; 77 StatusAreaHost* host_;
160 78
161 // The network menu.
162 views::Menu2 network_menu_;
163
164 // A badge icon displayed on top of the icon. 79 // A badge icon displayed on top of the icon.
165 SkBitmap badge_; 80 SkBitmap badge_;
166 81
167 // The throb animation that does the wifi connecting animation. 82 // The throb animation that does the wifi connecting animation.
168 ThrobAnimation animation_connecting_; 83 ThrobAnimation animation_connecting_;
169 84
170 // The duration of the icon throbbing in milliseconds. 85 // The duration of the icon throbbing in milliseconds.
171 static const int kThrobDuration; 86 static const int kThrobDuration;
172 87
173 DISALLOW_COPY_AND_ASSIGN(NetworkMenuButton); 88 DISALLOW_COPY_AND_ASSIGN(NetworkMenuButton);
174 }; 89 };
175 90
176 } // namespace chromeos 91 } // namespace chromeos
177 92
178 #endif // CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_BUTTON_H_ 93 #endif // CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_BUTTON_H_
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/status/network_menu.cc ('k') | chrome/browser/chromeos/status/network_menu_button.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698