// 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_UI_VIEWS_ABOUT_CHROME_VIEW_H_ #define CHROME_BROWSER_UI_VIEWS_ABOUT_CHROME_VIEW_H_ #pragma once #include #include "base/basictypes.h" #include "base/compiler_specific.h" #include "views/controls/image_view.h" #include "views/controls/label.h" #include "views/controls/link_listener.h" #include "views/view.h" #include "views/window/dialog_delegate.h" #if defined(OS_WIN) && !defined(USE_AURA) #include "chrome/browser/google/google_update.h" #endif namespace views { class Textfield; class Throbber; } class Profile; //////////////////////////////////////////////////////////////////////////////// // // The AboutChromeView class is responsible for drawing the UI controls of the // About Chrome dialog that allows the user to see what version is installed // and check for updates. // //////////////////////////////////////////////////////////////////////////////// class AboutChromeView : public views::DialogDelegateView, public views::LinkListener #if defined(OS_WIN) && !defined(USE_AURA) , public GoogleUpdateStatusListener #endif { public: explicit AboutChromeView(Profile* profile); virtual ~AboutChromeView(); // Initialize the controls on the dialog. void Init(); // Overridden from views::View: virtual gfx::Size GetPreferredSize() OVERRIDE; virtual void Layout() OVERRIDE; virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; virtual void ViewHierarchyChanged(bool is_add, views::View* parent, views::View* child) OVERRIDE; // Overridden from views::DialogDelegate: virtual string16 GetDialogButtonLabel( ui::MessageBoxFlags::DialogButton button) const OVERRIDE; virtual bool IsDialogButtonEnabled( ui::MessageBoxFlags::DialogButton button) const OVERRIDE; virtual bool IsDialogButtonVisible( ui::MessageBoxFlags::DialogButton button) const OVERRIDE; virtual int GetDefaultDialogButton() const OVERRIDE; virtual bool CanResize() const OVERRIDE; virtual bool CanMaximize() const OVERRIDE; virtual bool IsModal() const OVERRIDE; virtual string16 GetWindowTitle() const OVERRIDE; virtual bool Accept() OVERRIDE; virtual views::View* GetContentsView() OVERRIDE; // Overridden from views::LinkListener: virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE; #if defined(OS_WIN) && !defined(USE_AURA) // Overridden from GoogleUpdateStatusListener: virtual void OnReportResults(GoogleUpdateUpgradeResult result, GoogleUpdateErrorCode error_code, const std::wstring& version) OVERRIDE; #endif private: #if defined(OS_WIN) && !defined(USE_AURA) // Update the UI to show the status of the upgrade. void UpdateStatus(GoogleUpdateUpgradeResult result, GoogleUpdateErrorCode error_code); #endif Profile* profile_; // UI elements on the dialog. views::ImageView* about_dlg_background_logo_; views::Label* about_title_label_; views::Textfield* version_label_; views::Label* copyright_label_; views::Label* main_text_label_; int main_text_label_height_; views::Link* chromium_url_; gfx::Rect chromium_url_rect_; views::Link* open_source_url_; gfx::Rect open_source_url_rect_; views::Link* terms_of_service_url_; gfx::Rect terms_of_service_url_rect_; // UI elements we add to the parent view. scoped_ptr throbber_; views::ImageView success_indicator_; views::ImageView update_available_indicator_; views::ImageView timeout_indicator_; views::Label update_label_; // The dialog dimensions. gfx::Size dialog_dimensions_; // Keeps track of the visible state of the Restart Now button. bool restart_button_visible_; // The text to display as the main label of the About box. We draw this text // word for word with the help of the WordIterator, and make room for URLs // which are drawn using views::Link. See also |url_offsets_|. string16 main_label_chunk1_; string16 main_label_chunk2_; string16 main_label_chunk3_; string16 main_label_chunk4_; string16 main_label_chunk5_; // Determines the order of the two links we draw in the main label. bool chromium_url_appears_first_; #if defined(OS_WIN) && !defined(USE_AURA) // The class that communicates with Google Update to find out if an update is // available and asks it to start an upgrade. scoped_refptr google_updater_; #endif // The version Google Update reports is available to us. std::wstring new_version_available_; // Whether text direction is left-to-right or right-to-left. bool text_direction_is_rtl_; DISALLOW_COPY_AND_ASSIGN(AboutChromeView); }; #endif // CHROME_BROWSER_UI_VIEWS_ABOUT_CHROME_VIEW_H_