OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_H_ |
6 #define CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_H_ | 6 #define CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
13 #include "chrome/browser/chromeos/cros/network_library.h" // ConnectionType | 13 #include "chrome/browser/chromeos/cros/network_library.h" // ConnectionType |
14 #include "ui/gfx/native_widget_types.h" // gfx::NativeWindow | 14 #include "ui/gfx/native_widget_types.h" // gfx::NativeWindow |
| 15 #include "views/controls/menu/menu_delegate.h" |
15 #include "views/controls/menu/view_menu_delegate.h" | 16 #include "views/controls/menu/view_menu_delegate.h" |
16 | 17 |
17 namespace { | 18 namespace { |
18 | 19 |
19 const int kMainCommandIndexOffset = 1000; | 20 const int kMainCommandIndexOffset = 1000; |
20 const int kVPNCommandIndexOffset = 2000; | 21 const int kVPNCommandIndexOffset = 2000; |
21 const int kMoreCommandIndexOffset = 3000; | 22 const int kMoreCommandIndexOffset = 3000; |
22 | 23 |
23 } // namespace | 24 } // namespace |
24 | 25 |
25 class SkBitmap; | 26 class SkBitmap; |
26 | 27 |
27 namespace gfx { | 28 namespace gfx { |
28 class Canvas; | 29 class Canvas; |
29 } | 30 } |
30 | 31 |
31 namespace views { | 32 namespace views { |
| 33 class MenuButton; |
| 34 class MenuItemInterface; |
32 class MenuItemView; | 35 class MenuItemView; |
33 class MenuButton; | |
34 } | 36 } |
35 | 37 |
36 namespace chromeos { | 38 namespace chromeos { |
37 | 39 |
38 class NetworkMenuModel; | 40 class NetworkMenuModel; |
39 | 41 |
40 // Menu for network menu button in the status area/welcome screen. | 42 // Menu for network menu button in the status area/welcome screen. |
41 // This class will populating the menu with the list of networks. | 43 // This class will populating the menu with the list of networks. |
42 // It will also handle connecting to another wifi/cellular network. | 44 // It will also handle connecting to another wifi/cellular network. |
43 // | 45 // |
(...skipping 27 matching lines...) Expand all Loading... |
71 class NetworkMenu { | 73 class NetworkMenu { |
72 public: | 74 public: |
73 class Delegate { | 75 class Delegate { |
74 public: | 76 public: |
75 virtual views::MenuButton* GetMenuButton() = 0; | 77 virtual views::MenuButton* GetMenuButton() = 0; |
76 virtual gfx::NativeWindow GetNativeWindow() const = 0; | 78 virtual gfx::NativeWindow GetNativeWindow() const = 0; |
77 virtual void OpenButtonOptions() = 0; | 79 virtual void OpenButtonOptions() = 0; |
78 virtual bool ShouldOpenButtonOptions() const = 0; | 80 virtual bool ShouldOpenButtonOptions() const = 0; |
79 }; | 81 }; |
80 | 82 |
81 NetworkMenu(Delegate* delegate, bool is_browser_mode); | 83 NetworkMenu(Delegate* delegate, |
| 84 bool is_browser_mode, |
| 85 views::MenuItemInterface* menu_item); |
| 86 |
82 virtual ~NetworkMenu(); | 87 virtual ~NetworkMenu(); |
83 | 88 |
84 // Cancels the active menu. | 89 // Cancels the active menu. |
85 void CancelMenu(); | 90 void CancelMenu(); |
86 | 91 |
87 // Update the menu (e.g. when the network list or status has changed). | 92 // Update the menu (e.g. when the network list or status has changed). |
88 void UpdateMenu(); | 93 void UpdateMenu(); |
89 | 94 |
90 // Run the menu. | |
91 void RunMenu(views::View* source); | |
92 | |
93 // Shows network details in Web UI options window. | 95 // Shows network details in Web UI options window. |
94 void ShowTabbedNetworkSettings(const Network* network) const; | 96 void ShowTabbedNetworkSettings(const Network* network) const; |
95 | 97 |
96 // Getters. | 98 // Getters. |
97 Delegate* delegate() const { return delegate_; } | 99 Delegate* delegate() const { return delegate_; } |
98 bool is_browser_mode() const { return is_browser_mode_; } | 100 bool is_browser_mode() const { return is_browser_mode_; } |
99 | 101 |
100 // Setters. | 102 protected: |
101 void set_min_width(int min_width) { min_width_ = min_width; } | 103 views::MenuDelegate* GetMenuDelegate(); |
| 104 |
| 105 // The network menu. |
| 106 scoped_ptr<views::MenuItemInterface> menu_item_; |
| 107 scoped_ptr<NetworkMenuModel> main_menu_model_; |
102 | 108 |
103 private: | 109 private: |
104 friend class NetworkMenuModel; | 110 friend class NetworkMenuModel; |
105 | 111 |
106 // Weak ptr to delegate. | 112 // Weak ptr to delegate. |
107 Delegate* delegate_; | 113 Delegate* delegate_; |
108 | 114 |
109 // True if the browser is visible (i.e. not login/OOBE). | 115 // True if the browser is visible (i.e. not login/OOBE). |
110 bool is_browser_mode_; | 116 bool is_browser_mode_; |
111 | 117 |
112 // Set to true if we are currently refreshing the menu. | 118 // Set to true if we are currently refreshing the menu. |
113 bool refreshing_menu_; | 119 bool refreshing_menu_; |
114 | 120 |
115 // The network menu. | |
116 scoped_ptr<views::MenuItemView> menu_item_view_; | |
117 scoped_ptr<NetworkMenuModel> main_menu_model_; | |
118 | |
119 // Holds minimum width of the menu. | |
120 int min_width_; | |
121 | |
122 DISALLOW_COPY_AND_ASSIGN(NetworkMenu); | 121 DISALLOW_COPY_AND_ASSIGN(NetworkMenu); |
123 }; | 122 }; |
124 | 123 |
| 124 class NetworkMenuView : public NetworkMenu { |
| 125 public: |
| 126 NetworkMenuView(NetworkMenu::Delegate* delegate, |
| 127 bool is_browser_mode); |
| 128 |
| 129 virtual ~NetworkMenuView(); |
| 130 |
| 131 // Run the menu. |
| 132 void RunMenu(views::View* source); |
| 133 |
| 134 // Setters. |
| 135 void set_min_width(int min_width) { min_width_ = min_width; } |
| 136 |
| 137 private: |
| 138 // This is a weak pointer to the MenuItemInterface implementation. |
| 139 views::MenuItemView* menu_item_view_; |
| 140 |
| 141 // Holds minimum width of the menu. |
| 142 int min_width_; |
| 143 }; |
| 144 |
125 } // namespace chromeos | 145 } // namespace chromeos |
126 | 146 |
127 #endif // CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_H_ | 147 #endif // CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_H_ |
OLD | NEW |