wifi_config_view.h revision 72a454cd3513ac24fbdd0e0cb9ad70b86a99b801
13345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_OPTIONS_WIFI_CONFIG_VIEW_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_CHROMEOS_OPTIONS_WIFI_CONFIG_VIEW_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/gtest_prod_util.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string16.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/cros/network_library.h" 1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/shell_dialogs.h" 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/models/combobox_model.h" 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/button/button.h" 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/button/checkbox.h" 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/button/image_button.h" 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/button/native_button.h" 20513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "views/controls/combobox/combobox.h" 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/textfield/textfield.h" 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/view.h" 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass FilePath; 253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos { 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass NetworkConfigView; 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A dialog box for showing a password textfield. 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WifiConfigView : public views::View, 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public views::Textfield::Controller, 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public views::ButtonListener, 34513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch public views::Combobox::Listener, 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public SelectFileDialog::Listener { 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 37513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch WifiConfigView(NetworkConfigView* parent, const WifiNetwork* wifi); 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch explicit WifiConfigView(NetworkConfigView* parent); 39513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ~WifiConfigView(); 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // views::Textfield::Controller methods. 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ContentsChanged(views::Textfield* sender, 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& new_contents); 443f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual bool HandleKeyEvent(views::Textfield* sender, 453f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen const views::KeyEvent& key_event); 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // views::ButtonListener 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ButtonPressed(views::Button* sender, const views::Event& event); 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 50513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // views::Combobox::Listener 51513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ItemChanged(views::Combobox* combo_box, 52513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch int prev_index, int new_index); 53513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // SelectFileDialog::Listener implementation. 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void FileSelected(const FilePath& path, int index, void* params); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 57201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch // Login to network. Returns false if the dialog should remain open. 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool Login(); 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Save network information. 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool Save(); 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 63201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch // Cancel the dialog. 64201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual void Cancel(); 65201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Get the typed in ssid. 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string GetSSID() const; 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Get the typed in passphrase. 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string GetPassphrase() const; 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if the textfields are non-empty and we can login. 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool can_login() const { return can_login_; } 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 7572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen class SecurityComboboxModel : public ui::ComboboxModel { 76513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch public: 77513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch SecurityComboboxModel() {} 78513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ~SecurityComboboxModel() {} 79513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual int GetItemCount(); 80513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual string16 GetItemAt(int index); 81513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch private: 82513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DISALLOW_COPY_AND_ASSIGN(SecurityComboboxModel); 83513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch }; 84513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Initializes UI. 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void Init(); 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 88731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Updates state of the Login button. 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void UpdateCanLogin(); 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 91201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch // Updates the error text label. 92201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch void UpdateErrorLabel(bool failed); 93201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NetworkConfigView* parent_; 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Whether or not we can log in. This gets recalculated when textfield 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // contents change. 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool can_login_; 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 100513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch scoped_ptr<WifiNetwork> wifi_; 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::Textfield* ssid_textfield_; 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::Textfield* identity_textfield_; 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::NativeButton* certificate_browse_button_; 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<SelectFileDialog> select_file_dialog_; 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string certificate_path_; 107513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch views::Combobox* security_combobox_; 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::Textfield* passphrase_textfield_; 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::ImageButton* passphrase_visible_button_; 110201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch views::Label* error_label_; 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(WifiConfigView); 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace chromeos 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_CHROMEOS_OPTIONS_WIFI_CONFIG_VIEW_H_ 118