Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: chrome/browser/views/location_bar_view.h

Issue 46055: RSS feed support (part 1), 2nd attempt (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/toolbar_model.cc ('k') | chrome/browser/views/location_bar_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_VIEWS_LOCATION_BAR_VIEW_H__ 5 #ifndef CHROME_BROWSER_VIEWS_LOCATION_BAR_VIEW_H__
6 #define CHROME_BROWSER_VIEWS_LOCATION_BAR_VIEW_H__ 6 #define CHROME_BROWSER_VIEWS_LOCATION_BAR_VIEW_H__
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/gfx/rect.h" 10 #include "base/gfx/rect.h"
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 virtual bool OverrideAccelerator(const views::Accelerator& accelerator); 113 virtual bool OverrideAccelerator(const views::Accelerator& accelerator);
114 114
115 // Overridden from LocationBar: 115 // Overridden from LocationBar:
116 virtual void ShowFirstRunBubble(); 116 virtual void ShowFirstRunBubble();
117 virtual std::wstring GetInputString() const; 117 virtual std::wstring GetInputString() const;
118 virtual WindowOpenDisposition GetWindowOpenDisposition() const; 118 virtual WindowOpenDisposition GetWindowOpenDisposition() const;
119 virtual PageTransition::Type GetPageTransition() const; 119 virtual PageTransition::Type GetPageTransition() const;
120 virtual void AcceptInput(); 120 virtual void AcceptInput();
121 virtual void FocusLocation(); 121 virtual void FocusLocation();
122 virtual void FocusSearch(); 122 virtual void FocusSearch();
123 virtual void UpdateFeedIcon();
123 virtual void SaveStateToContents(TabContents* contents); 124 virtual void SaveStateToContents(TabContents* contents);
124 125
125 static const int kVertMargin; 126 static const int kVertMargin;
126 static const COLORREF kBackgroundColorByLevel[]; 127 static const COLORREF kBackgroundColorByLevel[];
127 128
128 protected: 129 protected:
129 void Focus(); 130 void Focus();
130 131
131 // Overridden from Chrome::View. 132 // Overridden from Chrome::View.
132 virtual bool ShouldLookupAccelerators(const views::KeyEvent& e); 133 virtual bool ShouldLookupAccelerators(const views::KeyEvent& e);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 218
218 Profile* profile_; 219 Profile* profile_;
219 220
220 DISALLOW_EVIL_CONSTRUCTORS(KeywordHintView); 221 DISALLOW_EVIL_CONSTRUCTORS(KeywordHintView);
221 }; 222 };
222 223
223 224
224 class ShowInfoBubbleTask; 225 class ShowInfoBubbleTask;
225 class ShowFirstRunBubbleTask; 226 class ShowFirstRunBubbleTask;
226 227
228 class LocationBarImageView : public views::ImageView,
229 public InfoBubbleDelegate {
230 public:
231 LocationBarImageView();
232 virtual ~LocationBarImageView();
233
234 // Overridden from view for the mouse hovering.
235 virtual void OnMouseMoved(const views::MouseEvent& event);
236 virtual void OnMouseExited(const views::MouseEvent& event);
237 virtual bool OnMousePressed(const views::MouseEvent& event) = 0;
238
239 // InfoBubbleDelegate
240 void InfoBubbleClosing(InfoBubble* info_bubble, bool closed_by_escape);
241 bool CloseOnEscape() { return true; }
242
243 virtual void ShowInfoBubble() = 0;
244
245 protected:
246 void ShowInfoBubbleImpl(const std::wstring& text, SkColor text_color);
247
248 private:
249 friend class ShowInfoBubbleTask;
250
251 // The currently shown info bubble if any.
252 InfoBubble* info_bubble_;
253
254 // A task used to display the info bubble when the mouse hovers on the
255 // image.
256 ShowInfoBubbleTask* show_info_bubble_task_;
257
258 DISALLOW_COPY_AND_ASSIGN(LocationBarImageView);
259 };
260
227 // SecurityImageView is used to display the lock or warning icon when the 261 // SecurityImageView is used to display the lock or warning icon when the
228 // current URL's scheme is https. 262 // current URL's scheme is https.
229 // 263 //
230 // If a message has been set with SetInfoBubbleText, it displays an info 264 // If a message has been set with SetInfoBubbleText, it displays an info
231 // bubble when the mouse hovers on the image. 265 // bubble when the mouse hovers on the image.
232 class SecurityImageView : public views::ImageView, 266 class SecurityImageView : public LocationBarImageView {
233 public InfoBubbleDelegate {
234 public: 267 public:
235 enum Image { 268 enum Image {
236 LOCK = 0, 269 LOCK = 0,
237 WARNING 270 WARNING
238 }; 271 };
239 272
240 SecurityImageView(Profile* profile, ToolbarModel* model_); 273 SecurityImageView(Profile* profile, ToolbarModel* model_);
241 virtual ~SecurityImageView(); 274 virtual ~SecurityImageView();
242 275
243 // Sets the image that should be displayed. 276 // Sets the image that should be displayed.
244 void SetImageShown(Image image); 277 void SetImageShown(Image image);
245 278
246 // Overridden from view for the mouse hovering. 279 // Overridden from view for the mouse hovering.
247 virtual void OnMouseMoved(const views::MouseEvent& event);
248 virtual void OnMouseExited(const views::MouseEvent& event);
249 virtual bool OnMousePressed(const views::MouseEvent& event); 280 virtual bool OnMousePressed(const views::MouseEvent& event);
250 281
251 // InfoBubbleDelegate
252 void InfoBubbleClosing(InfoBubble* info_bubble, bool closed_by_escape);
253 bool CloseOnEscape() { return true; }
254
255 void set_profile(Profile* profile) { profile_ = profile; } 282 void set_profile(Profile* profile) { profile_ = profile; }
256 283
284 virtual void ShowInfoBubble();
285
257 private: 286 private:
258 friend class ShowInfoBubbleTask;
259
260 void ShowInfoBubble();
261
262 // The lock icon shown when using HTTPS. 287 // The lock icon shown when using HTTPS.
263 static SkBitmap* lock_icon_; 288 static SkBitmap* lock_icon_;
264 289
265 // The warning icon shown when HTTPS is broken. 290 // The warning icon shown when HTTPS is broken.
266 static SkBitmap* warning_icon_; 291 static SkBitmap* warning_icon_;
267 292
268 // The currently shown info bubble if any. 293 // The currently shown info bubble if any.
269 InfoBubble* info_bubble_; 294 InfoBubble* info_bubble_;
270 295
271 // A task used to display the info bubble when the mouse hovers on the 296 // A task used to display the info bubble when the mouse hovers on the
272 // image. 297 // image.
273 ShowInfoBubbleTask* show_info_bubble_task_; 298 ShowInfoBubbleTask* show_info_bubble_task_;
274 299
275 Profile* profile_; 300 Profile* profile_;
276 301
277 ToolbarModel* model_; 302 ToolbarModel* model_;
278 303
279 DISALLOW_EVIL_CONSTRUCTORS(SecurityImageView); 304 DISALLOW_EVIL_CONSTRUCTORS(SecurityImageView);
280 }; 305 };
281 306
307 // RssImageView is used to display the RSS icon when the page has a feed that
308 // you can subscribe to.
309 //
310 // If a message has been set with SetInfoBubbleText, it displays an info
311 // bubble when the mouse hovers on the image.
312 class RssImageView : public LocationBarImageView {
313 public:
314 explicit RssImageView(ToolbarModel* model);
315 virtual ~RssImageView();
316
317 // Overridden from view for the mouse hovering.
318 virtual bool OnMousePressed(const views::MouseEvent& event);
319
320 virtual void ShowInfoBubble();
321
322 private:
323 // The RSS icon shown when page has a feed.
324 static SkBitmap* rss_icon_;
325
326 ToolbarModel* model_;
327
328 DISALLOW_COPY_AND_ASSIGN(RssImageView);
329 };
330
282 // Both Layout and OnChanged call into this. This updates the contents 331 // Both Layout and OnChanged call into this. This updates the contents
283 // of the 3 views: selected_keyword, keyword_hint and type_search_view. If 332 // of the 3 views: selected_keyword, keyword_hint and type_search_view. If
284 // force_layout is true, or one of these views has changed in such a way as 333 // force_layout is true, or one of these views has changed in such a way as
285 // to necessitate a layout, layout occurs as well. 334 // to necessitate a layout, layout occurs as well.
286 void DoLayout(bool force_layout); 335 void DoLayout(bool force_layout);
287 336
288 // Returns the height in pixels of the margin at the top of the bar. 337 // Returns the height in pixels of the margin at the top of the bar.
289 int TopMargin() const; 338 int TopMargin() const;
290 339
291 // Returns the width in pixels of the contents of the edit. 340 // Returns the width in pixels of the contents of the edit.
(...skipping 17 matching lines...) Expand all
309 358
310 // If View fits in the specified region, it is made visible and the 359 // If View fits in the specified region, it is made visible and the
311 // bounds are adjusted appropriately. If the View does not fit, it is 360 // bounds are adjusted appropriately. If the View does not fit, it is
312 // made invisible. 361 // made invisible.
313 void LayoutView(bool leading, views::View* view, int text_width, 362 void LayoutView(bool leading, views::View* view, int text_width,
314 int max_width, gfx::Rect* bounds); 363 int max_width, gfx::Rect* bounds);
315 364
316 // Sets the security icon to display. Note that no repaint is done. 365 // Sets the security icon to display. Note that no repaint is done.
317 void SetSecurityIcon(ToolbarModel::Icon icon); 366 void SetSecurityIcon(ToolbarModel::Icon icon);
318 367
368 // Sets the RSS icon visibility.
369 void SetRssIconVisibility(FeedList* feeds);
370
319 // Sets the text that should be displayed in the info label and its associated 371 // Sets the text that should be displayed in the info label and its associated
320 // tooltip text. Call with an empty string if the info label should be 372 // tooltip text. Call with an empty string if the info label should be
321 // hidden. 373 // hidden.
322 void SetInfoText(const std::wstring& text, 374 void SetInfoText(const std::wstring& text,
323 SkColor text_color, 375 SkColor text_color,
324 const std::wstring& tooltip_text); 376 const std::wstring& tooltip_text);
325 377
326 // Sets the visibility of view to new_vis. Returns whether the visibility 378 // Sets the visibility of view to new_vis. Returns whether the visibility
327 // changed. 379 // changed.
328 bool ToggleVisibility(bool new_vis, views::View* view); 380 bool ToggleVisibility(bool new_vis, views::View* view);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 426
375 // Shown if the selected url has a corresponding keyword. 427 // Shown if the selected url has a corresponding keyword.
376 KeywordHintView keyword_hint_view_; 428 KeywordHintView keyword_hint_view_;
377 429
378 // Shown if the text is not a keyword or url. 430 // Shown if the text is not a keyword or url.
379 views::Label type_to_search_view_; 431 views::Label type_to_search_view_;
380 432
381 // The view that shows the lock/warning when in HTTPS mode. 433 // The view that shows the lock/warning when in HTTPS mode.
382 SecurityImageView security_image_view_; 434 SecurityImageView security_image_view_;
383 435
436 // The view that shows the RSS icon when the page has an RSS feed.
437 RssImageView rss_image_view_;
438
384 // A label displayed after the lock icon to show some extra information. 439 // A label displayed after the lock icon to show some extra information.
385 views::Label info_label_; 440 views::Label info_label_;
386 441
387 // When true, the location bar view is read only and also is has a slightly 442 // When true, the location bar view is read only and also is has a slightly
388 // different presentation (font size / color). This is used for popups. 443 // different presentation (font size / color). This is used for popups.
389 bool popup_window_mode_; 444 bool popup_window_mode_;
390 445
391 // Used schedule a task for the first run info bubble. 446 // Used schedule a task for the first run info bubble.
392 ScopedRunnableMethodFactory<LocationBarView> first_run_bubble_; 447 ScopedRunnableMethodFactory<LocationBarView> first_run_bubble_;
393 }; 448 };
394 449
395 #endif // CHROME_BROWSER_VIEWS_LOCATION_BAR_VIEW_H__ 450 #endif // CHROME_BROWSER_VIEWS_LOCATION_BAR_VIEW_H__
OLDNEW
« no previous file with comments | « chrome/browser/toolbar_model.cc ('k') | chrome/browser/views/location_bar_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698