您的位置:首页 > 其它

谷歌浏览器的源码分析(4)

2008-09-12 14:29 369 查看
关于对话框,主要实现了让用户查看当前软件的版本、软件信息和检查升级的功能。因此这个类主要继续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<ChromeViews::Throbber> 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连接开始,直到打开网页显示为一个主线,做一个基本的分析。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: