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

Side by Side Diff: chrome/browser/chromeos/status/status_area_view.cc

Issue 1589021: Status area improvements:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 8 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 #include "chrome/browser/chromeos/status/status_area_view.h" 5 #include "chrome/browser/chromeos/status/status_area_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "chrome/browser/chromeos/status/clock_menu_button.h" 9 #include "chrome/browser/chromeos/status/clock_menu_button.h"
10 #include "chrome/browser/chromeos/status/language_menu_button.h" 10 #include "chrome/browser/chromeos/status/language_menu_button.h"
11 #include "chrome/browser/chromeos/status/network_menu_button.h" 11 #include "chrome/browser/chromeos/status/network_menu_button.h"
12 #include "chrome/browser/chromeos/status/power_menu_button.h" 12 #include "chrome/browser/chromeos/status/power_menu_button.h"
13 #include "chrome/browser/chromeos/status/status_area_host.h" 13 #include "chrome/browser/chromeos/status/status_area_host.h"
14 #include "gfx/canvas.h" 14 #include "gfx/canvas.h"
15 15
16 namespace chromeos { 16 namespace chromeos {
17 17
18 // Number of pixels to pad on the left border. 18 // Number of pixels to separate each icon.
19 const int kLeftBorder = 1; 19 const int kSeparation = 6;
20 // Number of pixels to separate the clock from the next item on the right.
21 const int kClockSeparation = 4;
22 // Number of pixels to separate the language selector from the next item
23 // on the right.
24 const int kLanguageSeparation = 4;
25 20
26 // BrowserWindowGtk tiles its image with this offset 21 // BrowserWindowGtk tiles its image with this offset
27 const int kCustomFrameBackgroundVerticalOffset = 15; 22 const int kCustomFrameBackgroundVerticalOffset = 15;
28 23
29 // Default to opening new tabs on the left. 24 // Default to opening new tabs on the left.
30 StatusAreaView::OpenTabsMode StatusAreaView::open_tabs_mode_ = 25 StatusAreaView::OpenTabsMode StatusAreaView::open_tabs_mode_ =
31 StatusAreaView::OPEN_TABS_ON_LEFT; 26 StatusAreaView::OPEN_TABS_ON_LEFT;
32 27
33 StatusAreaView::StatusAreaView(StatusAreaHost* host) 28 StatusAreaView::StatusAreaView(StatusAreaHost* host)
34 : host_(host), 29 : host_(host),
(...skipping 22 matching lines...) Expand all
57 } 52 }
58 53
59 void StatusAreaView::Update() { 54 void StatusAreaView::Update() {
60 for (int i = 0; i < GetChildViewCount(); ++i) { 55 for (int i = 0; i < GetChildViewCount(); ++i) {
61 views::View* cur = GetChildViewAt(i); 56 views::View* cur = GetChildViewAt(i);
62 cur->SetVisible(host_->IsButtonVisible(cur)); 57 cur->SetVisible(host_->IsButtonVisible(cur));
63 } 58 }
64 } 59 }
65 60
66 gfx::Size StatusAreaView::GetPreferredSize() { 61 gfx::Size StatusAreaView::GetPreferredSize() {
67 // Start with padding. 62 int result_w = kSeparation;
68 int result_w = kLeftBorder + kClockSeparation + kLanguageSeparation;
69 int result_h = 0; 63 int result_h = 0;
70 for (int i = 0; i < GetChildViewCount(); i++) { 64 for (int i = 0; i < GetChildViewCount(); i++) {
71 views::View* cur = GetChildViewAt(i); 65 views::View* cur = GetChildViewAt(i);
72 if (cur->IsVisible()) { 66 if (cur->IsVisible()) {
73 gfx::Size cur_size = cur->GetPreferredSize(); 67 gfx::Size cur_size = cur->GetPreferredSize();
74 // Add each width. 68 // Add each width.
75 result_w += cur_size.width(); 69 result_w += cur_size.width() + kSeparation;
76 // Use max height. 70 // Use max height.
77 result_h = std::max(result_h, cur_size.height()); 71 result_h = std::max(result_h, cur_size.height());
78 } 72 }
79 } 73 }
80 return gfx::Size(result_w, result_h); 74 return gfx::Size(result_w, result_h);
81 } 75 }
82 76
83 void StatusAreaView::Layout() { 77 void StatusAreaView::Layout() {
84 int cur_x = kLeftBorder; 78 int cur_x = kSeparation;
85 for (int i = 0; i < GetChildViewCount(); i++) { 79 for (int i = 0; i < GetChildViewCount(); i++) {
86 views::View* cur = GetChildViewAt(i); 80 views::View* cur = GetChildViewAt(i);
87 if (cur->IsVisible()) { 81 if (cur->IsVisible()) {
88 gfx::Size cur_size = cur->GetPreferredSize(); 82 gfx::Size cur_size = cur->GetPreferredSize();
89 int cur_y = (height() - cur_size.height()) / 2; 83 int cur_y = (height() - cur_size.height()) / 2;
90 84
91 // Handle odd number of pixels. 85 // Handle odd number of pixels.
92 cur_y += (height() - cur_size.height()) % 2; 86 cur_y += (height() - cur_size.height()) % 2;
93 87
94 // Put next in row horizontally, and center vertically. 88 // Put next in row horizontally, and center vertically.
95 cur->SetBounds(cur_x, cur_y, cur_size.width(), cur_size.height()); 89 cur->SetBounds(cur_x, cur_y, cur_size.width(), cur_size.height());
96 90
97 cur_x += cur_size.width(); 91 cur_x += cur_size.width() + kSeparation;
98
99 // Buttons have built in padding, but clock and language status don't.
100 if (cur == clock_view_)
101 cur_x += kClockSeparation;
102 else if (cur == language_view_)
103 cur_x += kLanguageSeparation;
104 } 92 }
105 } 93 }
106 } 94 }
107 95
96 void StatusAreaView::ChildPreferredSizeChanged(View* child) {
97 // When something like the clock menu button's size changes, we need to
98 // relayout. Also mark that this view's size has changed. This will let
99 // BrowserView know to relayout, which will reset the bounds of this view.
100 Layout();
101 PreferredSizeChanged();
102 }
103
108 // static 104 // static
109 StatusAreaView::OpenTabsMode StatusAreaView::GetOpenTabsMode() { 105 StatusAreaView::OpenTabsMode StatusAreaView::GetOpenTabsMode() {
110 return open_tabs_mode_; 106 return open_tabs_mode_;
111 } 107 }
112 108
113 // static 109 // static
114 void StatusAreaView::SetOpenTabsMode(OpenTabsMode mode) { 110 void StatusAreaView::SetOpenTabsMode(OpenTabsMode mode) {
115 open_tabs_mode_ = mode; 111 open_tabs_mode_ = mode;
116 } 112 }
117 113
118 } // namespace chromeos 114 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698