| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2fef343349cdb4b62a4a76051f5ab67b6784bf4d
|
| --- /dev/null
|
| +++ b/chrome/browser/chromeos/status/network_menu.h
|
| @@ -0,0 +1,164 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_H_
|
| +#define CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_H_
|
| +#pragma once
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "chrome/browser/chromeos/options/network_config_view.h"
|
| +#include "gfx/native_widget_types.h"
|
| +#include "views/controls/menu/menu_2.h"
|
| +#include "views/controls/menu/view_menu_delegate.h"
|
| +#include "third_party/skia/include/core/SkBitmap.h"
|
| +
|
| +namespace gfx {
|
| +class Canvas;
|
| +}
|
| +
|
| +namespace chromeos {
|
| +
|
| +// Menu for network menu button in the status area/welcome screen.
|
| +// This class will populating the menu with the list of networks.
|
| +// It will also handle connecting to another wifi/cellular network.
|
| +//
|
| +// The network menu looks like this:
|
| +//
|
| +// <icon> Ethernet
|
| +// <icon> Wifi Network A
|
| +// <icon> Wifi Network B
|
| +// <icon> Wifi Network C
|
| +// <icon> Cellular Network A
|
| +// <icon> Cellular Network B
|
| +// <icon> Cellular Network C
|
| +// <icon> Other...
|
| +// --------------------------------
|
| +// Disable Wifi
|
| +// Disable Celluar
|
| +// --------------------------------
|
| +// <IP Address>
|
| +// Network settings...
|
| +//
|
| +// <icon> will show the strength of the wifi/cellular networks.
|
| +// The label will be BOLD if the network is currently connected.
|
| +class NetworkMenu : public views::ViewMenuDelegate,
|
| + public menus::MenuModel {
|
| + public:
|
| + NetworkMenu();
|
| + virtual ~NetworkMenu();
|
| +
|
| + // menus::MenuModel implementation.
|
| + virtual bool HasIcons() const { return true; }
|
| + virtual int GetItemCount() const;
|
| + virtual menus::MenuModel::ItemType GetTypeAt(int index) const;
|
| + virtual int GetCommandIdAt(int index) const { return index; }
|
| + virtual string16 GetLabelAt(int index) const;
|
| + virtual bool IsLabelDynamicAt(int index) const { return true; }
|
| + virtual const gfx::Font* GetLabelFontAt(int index) const;
|
| + virtual bool GetAcceleratorAt(int index,
|
| + menus::Accelerator* accelerator) const { return false; }
|
| + virtual bool IsItemCheckedAt(int index) const;
|
| + virtual int GetGroupIdAt(int index) const { return 0; }
|
| + virtual bool GetIconAt(int index, SkBitmap* icon) const;
|
| + virtual menus::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const {
|
| + return NULL;
|
| + }
|
| + virtual bool IsEnabledAt(int index) const;
|
| + virtual menus::MenuModel* GetSubmenuModelAt(int index) const { return NULL; }
|
| + virtual void HighlightChangedTo(int index) {}
|
| + virtual void ActivatedAt(int index);
|
| + virtual void MenuWillShow() {}
|
| +
|
| + void SetFirstLevelMenuWidth(int width);
|
| +
|
| + void set_menu_offset(int delta_x, int delta_y) {
|
| + delta_x_ = delta_x;
|
| + delta_y_ = delta_y;
|
| + }
|
| +
|
| + // Cancels the active menu.
|
| + void CancelMenu();
|
| +
|
| + // Returns the Icon for a network strength between 0 and 100.
|
| + // |black| is used to specify whether to return a black icon for display
|
| + // on a light background or a white icon for display on a dark background.
|
| + static SkBitmap IconForNetworkStrength(int strength, bool black);
|
| +
|
| + // This method will convert the |icon| bitmap to the correct size for display.
|
| + // If the |badge| icon is not empty, it will draw that on top of the icon.
|
| + static SkBitmap IconForDisplay(SkBitmap icon, SkBitmap badge);
|
| +
|
| + protected:
|
| + virtual bool IsBrowserMode() const = 0;
|
| + virtual gfx::NativeWindow GetNativeWindow() const = 0;
|
| + virtual void OpenButtonOptions() const = 0;
|
| + virtual bool ShouldOpenButtonOptions() const = 0;
|
| +
|
| + // Notify subclasses that connection to |network| was initiated.
|
| + virtual void OnConnectNetwork(const Network& network,
|
| + SkBitmap selected_icon_) {}
|
| +
|
| + private:
|
| + enum MenuItemFlags {
|
| + 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_OTHER_NETWORK = 1 << 10,
|
| + };
|
| +
|
| + struct MenuItem {
|
| + MenuItem()
|
| + : type(menus::MenuModel::TYPE_SEPARATOR),
|
| + flags(0) {}
|
| + MenuItem(menus::MenuModel::ItemType type, string16 label, SkBitmap icon,
|
| + const std::string& wireless_path, int flags)
|
| + : type(type),
|
| + label(label),
|
| + icon(icon),
|
| + wireless_path(wireless_path),
|
| + flags(flags) {}
|
| +
|
| + menus::MenuModel::ItemType type;
|
| + string16 label;
|
| + SkBitmap icon;
|
| + std::string wireless_path;
|
| + int flags;
|
| + };
|
| + typedef std::vector<MenuItem> MenuItemVector;
|
| +
|
| + // views::ViewMenuDelegate implementation.
|
| + virtual void RunMenu(views::View* source, const gfx::Point& pt);
|
| +
|
| + // Called by RunMenu to initialize our list of menu items.
|
| + void InitMenuItems();
|
| +
|
| + // Set to true if we are currently refreshing the menu.
|
| + bool refreshing_menu_;
|
| +
|
| + // The number of wifi strength images.
|
| + static const int kNumWifiImages;
|
| +
|
| + // Our menu items.
|
| + MenuItemVector menu_items_;
|
| +
|
| + // The network menu.
|
| + views::Menu2 network_menu_;
|
| +
|
| + int delta_x_, delta_y_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(NetworkMenu);
|
| +};
|
| +
|
| +} // namespace chromeos
|
| +
|
| +#endif // CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_MENU_H_
|
|
|