Logo Search packages:      
Sourcecode: chromium-browser version File versions  Download package

network_config_view.h

// Copyright (c) 2006-2008 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_OPTIONS_NETWORK_CONFIG_VIEW_H_
#define CHROME_BROWSER_CHROMEOS_OPTIONS_NETWORK_CONFIG_VIEW_H_

#include <string>

#include "base/string16.h"
#include "chrome/browser/chromeos/cros/network_library.h"
#include "views/controls/tabbed_pane/tabbed_pane.h"
#include "views/window/dialog_delegate.h"

namespace views {
class TabbedPane;
class View;
class Window;
}

namespace chromeos {

class IPConfigView;
class WifiConfigView;

// A dialog box for showing a password textfield.
class NetworkConfigView : public views::View,
                          public views::DialogDelegate,
                          views::TabbedPane::Listener {
 public:
  // Configure dialog for ethernet.
  explicit NetworkConfigView(EthernetNetwork ethernet);
  // Configure dialog for wifi. If |login_only|, then only show login tab.
  explicit NetworkConfigView(WifiNetwork wifi, bool login_only);
  // Configure dialog for cellular.
  explicit NetworkConfigView(CellularNetwork cellular);
  // Login dialog for hidden networks.
  explicit NetworkConfigView();
  virtual ~NetworkConfigView() {}

  // views::DialogDelegate methods.
  virtual std::wstring GetDialogButtonLabel(
      MessageBoxFlags::DialogButton button) const;
  virtual bool IsDialogButtonEnabled(
      MessageBoxFlags::DialogButton button) const;
  virtual bool Cancel();
  virtual bool Accept();

  // views::WindowDelegate method.
  virtual bool IsModal() const { return true; }
  virtual views::View* GetContentsView() { return this; }

  // views::View overrides.
  virtual std::wstring GetWindowTitle() const;

  // views::TabbedPane::Listener overrides.
  virtual void TabSelectedAt(int index);

  // Sets the focus on the login tab's first textfield.
  void SetLoginTextfieldFocus();

 protected:
  // views::View overrides:
  virtual void Layout();
  virtual gfx::Size GetPreferredSize();
  virtual void ViewHierarchyChanged(bool is_add,
                                    views::View* parent,
                                    views::View* child);

 private:
  enum NetworkConfigFlags {
    FLAG_ETHERNET      = 1 << 0,
    FLAG_WIFI          = 1 << 1,
    FLAG_CELLULAR      = 1 << 2,
    FLAG_SHOW_WIFI     = 1 << 3,
    FLAG_SHOW_IPCONFIG = 1 << 4,
    FLAG_LOGIN_ONLY    = 1 << 5,
    FLAG_OTHER_NETWORK = 1 << 6,
  };

  // Initializes UI.
  void Init();

  views::TabbedPane* tabs_;

  // NetworkConfigFlags to specify which UIs to show.
  int flags_;

  EthernetNetwork ethernet_;
  WifiNetwork wifi_;
  CellularNetwork cellular_;

  WifiConfigView* wificonfig_view_;
  IPConfigView* ipconfig_view_;

  DISALLOW_COPY_AND_ASSIGN(NetworkConfigView);
};

}  // namespace chromeos

#endif  // CHROME_BROWSER_CHROMEOS_OPTIONS_NETWORK_CONFIG_VIEW_H_

Generated by  Doxygen 1.6.0   Back to index