Chinaunix首页 | 论坛 | 博客
  • 博客访问: 744365
  • 博文数量: 769
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:37
文章分类

全部博文(769)

文章存档

2011年(1)

2008年(768)

我的朋友

分类:

2008-10-15 16:39:34

  关于对话框,主要实现了让用户查看当前软件的版本、软件信息和检查升级的功能。因此这个类主要继续ChromeViews::View类、ChromeViews::DialogDelegate和GoogleUpdateStatusListener.其中ChromeViews::View实现窗口的布局和显示问题,ChromeViews::DialogDelegate实现了事件响应,或者窗口某时是否可以显示按钮的问题,GoogleUpdateStatusListener是用来实现接收更新程序状态信息。
 
  这个类的声明如下:
 
 class AboutChromeView : public ChromeViews::View,
            public ChromeViews::DialogDelegate,
            public GoogleUpdateStatusListener {
public:
 explicit AboutChromeView(Profile* profile);
 virtual ~AboutChromeView();
 // Initialize the controls on the dialog.
 void Init();
 // Overridden from ChromeViews::View:
 virtual void GetPreferredSize(CSize *out);
 virtual void Layout();
 virtual void ViewHierarchyChanged(bool is_add,
                  ChromeViews::View* parent,
                  ChromeViews::View* child);
 // Overridden from ChromeViews::DialogDelegate:
 virtual int GetDialogButtons() const;
 virtual std::wstring GetDialogButtonLabel(DialogButton button) const;
 virtual bool IsDialogButtonEnabled(DialogButton button) const;
 virtual bool IsDialogButtonVisible(DialogButton button) const;
 virtual bool CanResize() const;
 virtual bool CanMaximize() const;
 virtual bool IsAlwaysOnTop() const;
 virtual bool HasAlwaysOnTopMenu() const;
 virtual bool IsModal() const;
 virtual std::wstring GetWindowTitle() const;
 virtual bool Accept();
 virtual ChromeViews::View* GetContentsView();
 // Overridden from GoogleUpdateStatusListener:
 virtual void OnReportResults(GoogleUpdateUpgradeResult result,
                GoogleUpdateErrorCode error_code,
                const std::wstring& version);
private:
 // The visible state of the Check For Updates button.
 enum CheckButtonStatus {
  CHECKBUTTON_HIDDEN = 0,
  CHECKBUTTON_DISABLED,
  CHECKBUTTON_ENABLED,
 };
 // Update the UI to show the status of the upgrade.
 void UpdateStatus(GoogleUpdateUpgradeResult result,
          GoogleUpdateErrorCode error_code);
 Profile* profile_;
 // UI elements on the dialog.
 ChromeViews::ImageView* about_dlg_background_;
 ChromeViews::Label* about_title_label_;
 ChromeViews::TextField* version_label_;
 ChromeViews::TextField* main_text_label_;
 // UI elements we add to the parent view.
 scoped_ptr throbber_;
 ChromeViews::ImageView success_indicator_;
 ChromeViews::ImageView update_available_indicator_;
 ChromeViews::ImageView timeout_indicator_;
 ChromeViews::Label update_label_;
 // Keeps track of the visible state of the Check For Updates button.
 CheckButtonStatus check_button_status_;
 // The class that communicates with Google Update to find out if an update is
 // available and asks it to start an upgrade.
 GoogleUpdate* google_updater_;
 // Our current version.
 std::wstring current_version_;
 // The version Google Update reports is available to us.
 std::wstring new_version_available_;
 DISALLOW_EVIL_CONSTRUCTORS(AboutChromeView);
};

  通过关于对话框的分析,可以理解到chrome浏览器窗口基本组成,以及窗口继承关系,还有事件的响应方式。前面三次分析,主要是入门的分析,也是了解这么一个大工程的一种手段。比如整个工程是否可以编译,是否可以修改代码等等。后面的分析会以浏览器输入HTTP连接开始,直到打开网页显示为一个主线,做一个基本的分析。
【责编:huangchunmei】

--------------------next---------------------

阅读(438) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~