password_changed_view.h revision ddb351dbec246cf1fab5ec20d2d5520909041de1
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 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_PASSWORD_CHANGED_VIEW_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_PASSWORD_CHANGED_VIEW_H_ 7#pragma once 8 9#include <string> 10 11#include "views/controls/button/button.h" 12#include "views/controls/textfield/textfield_controller.h" 13#include "views/view.h" 14#include "views/window/dialog_delegate.h" 15 16namespace views { 17class Button; 18class Label; 19class RadioButton; 20class Textfield; 21} // namespace views 22 23namespace chromeos { 24 25// A dialog box that is shown when password change was detected. 26// User is presented with an option to sync all settings or 27// enter old password and sync only delta. 28class PasswordChangedView : public views::View, 29 public views::DialogDelegate, 30 public views::ButtonListener, 31 public views::TextfieldController { 32 public: 33 // Delegate class to get notifications from the view. 34 class Delegate { 35 public: 36 virtual ~Delegate() {} 37 38 // User provided |old_password|, decrypt homedir and sync only delta. 39 virtual void RecoverEncryptedData(const std::string& old_password) = 0; 40 41 // Ignores password change and forces full sync. 42 virtual void ResyncEncryptedData() = 0; 43 }; 44 45 PasswordChangedView(Delegate* delegate, bool full_sync_disabled); 46 virtual ~PasswordChangedView() {} 47 48 // views::DialogDelegate: 49 virtual bool Accept(); 50 virtual int GetDialogButtons() const; 51 52 // views::WindowDelegate: 53 virtual View* GetInitiallyFocusedView(); 54 virtual bool IsModal() const { return true; } 55 virtual views::View* GetContentsView() { return this; } 56 57 // views::View: 58 virtual std::wstring GetWindowTitle() const; 59 60 // views::ButtonListener: 61 virtual void ButtonPressed(views::Button* sender, 62 const views::Event& event); 63 64 // views::TextfieldController: 65 virtual bool HandleKeyEvent(views::Textfield* sender, 66 const views::KeyEvent& keystroke) { 67 return false; 68 } 69 virtual void ContentsChanged(views::Textfield* sender, 70 const string16& new_contents) {} 71 72 protected: 73 // views::View: 74 virtual gfx::Size GetPreferredSize(); 75 virtual void ViewHierarchyChanged(bool is_add, 76 views::View* parent, 77 views::View* child); 78 79 private: 80 // Called when dialog is accepted. 81 bool ExitDialog(); 82 83 // Initialize view layout. 84 void Init(); 85 86 // Screen controls. 87 views::Label* title_label_; 88 views::Label* description_label_; 89 views::RadioButton* full_sync_radio_; 90 views::RadioButton* delta_sync_radio_; 91 views::Textfield* old_password_field_; 92 93 // Notifications receiver. 94 Delegate* delegate_; 95 96 // Whether full sync option is disabled. 97 bool full_sync_disabled_; 98 99 DISALLOW_COPY_AND_ASSIGN(PasswordChangedView); 100}; 101 102} // namespace chromeos 103 104#endif // CHROME_BROWSER_CHROMEOS_LOGIN_PASSWORD_CHANGED_VIEW_H_ 105