// Copyright (c) 2011 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_TAKE_PHOTO_DIALOG_H_ #define CHROME_BROWSER_CHROMEOS_OPTIONS_TAKE_PHOTO_DIALOG_H_ #pragma once #include "base/scoped_ptr.h" #include "chrome/browser/chromeos/login/camera_controller.h" #include "chrome/browser/chromeos/login/take_photo_view.h" #include "content/common/notification_observer.h" #include "content/common/notification_registrar.h" #include "views/window/dialog_delegate.h" namespace views { class View; class Window; } namespace chromeos { // A dialog box for taking new user picture. class TakePhotoDialog : public views::View, public views::DialogDelegate, public TakePhotoView::Delegate, public CameraController::Delegate, public NotificationObserver { public: TakePhotoDialog(); // views::DialogDelegate overrides. virtual bool IsDialogButtonEnabled( MessageBoxFlags::DialogButton button) const; virtual bool Cancel(); virtual bool Accept(); // views::WindowDelegate overrides. virtual bool IsModal() const { return true; } virtual views::View* GetContentsView(); // views::View overrides. virtual void GetAccessibleState(ui::AccessibleViewState* state); // TakePhotoView::Delegate overrides. virtual void OnCapturingStarted(); virtual void OnCapturingStopped(); // CameraController::Delegate implementation: virtual void OnCaptureSuccess(); virtual void OnCaptureFailure(); // NotificationObserver implementation: virtual void Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details); protected: // views::View overrides: virtual void Layout(); virtual gfx::Size GetPreferredSize(); private: // Starts initializing the camera and shows the appropriate status on the // screen. void InitCamera(); TakePhotoView* take_photo_view_; CameraController camera_controller_; NotificationRegistrar registrar_; DISALLOW_COPY_AND_ASSIGN(TakePhotoDialog); }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_OPTIONS_TAKE_PHOTO_DIALOG_H_