注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

写着玩

Bob

 
 
 

日志

 
 
 
 

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

2009-12-19 01:35:36|  分类: Chrome |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

关于对话框,主要实现了让用户查看当前软件的版本、软件信息和检查升级的功能。因此这个类主要继续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连接开始,直到打开网页显示为一个主线,做一个基本的分析。

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/caimouse/archive/2008/09/12/2917510.aspx

  评论这张
 
阅读(237)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017