Index: chrome/browser/chromeos/status/network_menu.h |
diff --git a/chrome/browser/chromeos/status/network_menu.h b/chrome/browser/chromeos/status/network_menu.h |
index aca19be39f00299f491f1f8c382780b4c63da109..2995c5231962c148787c4d6f672afe28dc9eef9e 100644 |
--- a/chrome/browser/chromeos/status/network_menu.h |
+++ b/chrome/browser/chromeos/status/network_menu.h |
@@ -15,150 +15,26 @@ |
#include "ui/gfx/native_widget_types.h" |
#include "views/controls/menu/view_menu_delegate.h" |
+namespace { |
+ |
+const int kMainCommandIndexOffset = 1000; |
+const int kVPNCommandIndexOffset = 2000; |
+const int kMoreCommandIndexOffset = 3000; |
+ |
+} // namespace |
+ |
namespace gfx { |
class Canvas; |
} |
namespace views { |
-class Menu2; |
+class MenuItemView; |
+class MenuButton; |
} |
namespace chromeos { |
-class NetworkMenu; |
- |
-class NetworkMenuModel : public ui::MenuModel { |
- public: |
- struct NetworkInfo { |
- NetworkInfo(); |
- ~NetworkInfo(); |
- |
- // "ethernet" | "wifi" | "cellular" | "other". |
- std::string network_type; |
- // "connected" | "connecting" | "disconnected" | "error". |
- std::string status; |
- // status message or error message, empty if unknown status. |
- std::string message; |
- // IP address (if network is active, empty otherwise) |
- std::string ip_address; |
- // Remembered passphrase. |
- std::string passphrase; |
- // true if the network requires a passphrase. |
- bool need_passphrase; |
- // true if the network is currently remembered. |
- bool remembered; |
- // true if the network is auto connect (meaningful for Wifi only). |
- bool auto_connect; |
- }; |
- |
- explicit NetworkMenuModel(NetworkMenu* owner); |
- virtual ~NetworkMenuModel(); |
- |
- // Connect or reconnect to the network at |index|. |
- // If remember >= 0, set the favorite state of the network. |
- // Returns true if a connect occurred (e.g. menu should be closed). |
- bool ConnectToNetworkAt(int index, |
- const std::string& passphrase, |
- const std::string& ssid, |
- int remember) const; |
- |
- // Called by NetworkMenu::RunMenu to initialize list of menu items. |
- virtual void InitMenuItems(bool is_browser_mode, |
- bool should_open_button_options) = 0; |
- |
- // ui::MenuModel implementation. |
- virtual bool HasIcons() const; |
- virtual int GetItemCount() const; |
- virtual ui::MenuModel::ItemType GetTypeAt(int index) const; |
- virtual int GetCommandIdAt(int index) const; |
- virtual string16 GetLabelAt(int index) const; |
- virtual bool IsItemDynamicAt(int index) const; |
- virtual const gfx::Font* GetLabelFontAt(int index) const; |
- virtual bool GetAcceleratorAt(int index, ui::Accelerator* accelerator) const; |
- virtual bool IsItemCheckedAt(int index) const; |
- virtual int GetGroupIdAt(int index) const; |
- virtual bool GetIconAt(int index, SkBitmap* icon); |
- virtual ui::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const; |
- virtual bool IsEnabledAt(int index) const; |
- virtual ui::MenuModel* GetSubmenuModelAt(int index) const; |
- virtual void HighlightChangedTo(int index); |
- virtual void ActivatedAt(int index); |
- virtual void MenuWillShow(); |
- virtual void SetMenuModelDelegate(ui::MenuModelDelegate* delegate); |
- |
- protected: |
- enum MenuItemFlags { |
- FLAG_NONE = 0, |
- FLAG_DISABLED = 1 << 0, |
- FLAG_TOGGLE_ETHERNET = 1 << 1, |
- FLAG_TOGGLE_WIFI = 1 << 2, |
- FLAG_TOGGLE_CELLULAR = 1 << 3, |
- FLAG_TOGGLE_OFFLINE = 1 << 4, |
- FLAG_ASSOCIATED = 1 << 5, |
- FLAG_ETHERNET = 1 << 6, |
- FLAG_WIFI = 1 << 7, |
- FLAG_CELLULAR = 1 << 8, |
- FLAG_OPTIONS = 1 << 9, |
- FLAG_ADD_WIFI = 1 << 10, |
- FLAG_ADD_CELLULAR = 1 << 11, |
- FLAG_VPN = 1 << 12, |
- FLAG_ADD_VPN = 1 << 13, |
- FLAG_DISCONNECT_VPN = 1 << 14, |
- FLAG_VIEW_ACCOUNT = 1 << 15, |
- }; |
- |
- struct MenuItem { |
- MenuItem() |
- : type(ui::MenuModel::TYPE_SEPARATOR), |
- sub_menu_model(NULL), |
- flags(0) {} |
- MenuItem(ui::MenuModel::ItemType type, string16 label, SkBitmap icon, |
- const std::string& service_path, int flags) |
- : type(type), |
- label(label), |
- icon(icon), |
- service_path(service_path), |
- sub_menu_model(NULL), |
- flags(flags) {} |
- MenuItem(ui::MenuModel::ItemType type, string16 label, SkBitmap icon, |
- NetworkMenuModel* sub_menu_model, int flags) |
- : type(type), |
- label(label), |
- icon(icon), |
- sub_menu_model(sub_menu_model), |
- flags(flags) {} |
- |
- ui::MenuModel::ItemType type; |
- string16 label; |
- SkBitmap icon; |
- std::string service_path; |
- NetworkMenuModel* sub_menu_model; // Weak. |
- int flags; |
- }; |
- typedef std::vector<MenuItem> MenuItemVector; |
- |
- // Our menu items. |
- MenuItemVector menu_items_; |
- |
- NetworkMenu* owner_; // Weak pointer to NetworkMenu that owns this MenuModel. |
- |
- // Top up URL of the current carrier on empty string if there's none. |
- std::string top_up_url_; |
- |
- // Carrier ID which top up URL is initialized for. |
- // Used to update top up URL only when cellular carrier has changed. |
- std::string carrier_id_; |
- |
- private: |
- // Show a NetworkConfigView modal dialog instance. |
- void ShowNetworkConfigView(NetworkConfigView* view) const; |
- |
- void ActivateCellular(const CellularNetwork* cellular) const; |
- void ShowOther(ConnectionType type) const; |
- void ShowOtherCellular() const; |
- |
- DISALLOW_COPY_AND_ASSIGN(NetworkMenuModel); |
-}; |
+class NetworkMenuModel; |
// Menu for network menu button in the status area/welcome screen. |
// This class will populating the menu with the list of networks. |
@@ -256,6 +132,7 @@ class NetworkMenu : public views::ViewMenuDelegate { |
const SkBitmap* bottom_left_badge); |
protected: |
+ virtual views::MenuButton* GetMenuButton() = 0; |
virtual gfx::NativeWindow GetNativeWindow() const = 0; |
virtual void OpenButtonOptions() = 0; |
virtual bool ShouldOpenButtonOptions() const = 0; |
@@ -296,11 +173,11 @@ class NetworkMenu : public views::ViewMenuDelegate { |
static SkBitmap kAnimatingImagesBlack[]; |
// The network menu. |
- scoped_ptr<views::Menu2> network_menu_; |
+ scoped_ptr<views::MenuItemView> network_menu_; |
scoped_ptr<NetworkMenuModel> main_menu_model_; |
- // Holds minimum width or -1 if it wasn't set up. |
+ // Holds minimum width of the menu. |
int min_width_; |
// If true, call into the settings UI for network configuration dialogs. |