diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-15 18:59:28 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-15 18:59:28 +0000 |
commit | 9ac315563aedf257698a80079c74d100edf2b4bc (patch) | |
tree | e30a78be9f47b8bbac570ae5b4a6537a379a9290 | |
parent | 3d96c9660fae61d1adb1d0db1141dbfdee15968a (diff) | |
download | chromium_src-9ac315563aedf257698a80079c74d100edf2b4bc.zip chromium_src-9ac315563aedf257698a80079c74d100edf2b4bc.tar.gz chromium_src-9ac315563aedf257698a80079c74d100edf2b4bc.tar.bz2 |
ash: A number of ui/ux changes from feedback/to better match the mocks.
The changes:
* The network list scrolls on mouse-wheel.
* The items in the network list cover the whole width of the list.
* Increase the font-size of the date in the tray.
* Adjust spacing between items in the tray.
* Adjust padding in the user card.
* Adjust the spacing and border around the shutdown etc. buttons in the user card.
* Fix a crash from non-ascii username/email address.
BUG=110130,118326
TEST=none
Review URL: https://chromiumcodereview.appspot.com/9706063
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@126955 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ash/shell.cc | 4 | ||||
-rw-r--r-- | ash/system/network/tray_network.cc | 21 | ||||
-rw-r--r-- | ash/system/power/tray_power_date.cc | 5 | ||||
-rw-r--r-- | ash/system/tray/system_tray.cc | 3 | ||||
-rw-r--r-- | ash/system/tray/tray_constants.cc | 1 | ||||
-rw-r--r-- | ash/system/tray/tray_constants.h | 1 | ||||
-rw-r--r-- | ash/system/user/tray_user.cc | 55 |
7 files changed, 67 insertions, 23 deletions
diff --git a/ash/shell.cc b/ash/shell.cc index 4b4c29f..e3f3ebd 100644 --- a/ash/shell.cc +++ b/ash/shell.cc @@ -230,11 +230,11 @@ class DummySystemTrayDelegate : public SystemTrayDelegate { // Overridden from SystemTrayDelegate: virtual const std::string GetUserDisplayName() const OVERRIDE { - return "chronos"; + return "Über tray"; } virtual const std::string GetUserEmail() const OVERRIDE { - return "chr@nos"; + return "über@tray"; } virtual const SkBitmap& GetUserImage() const OVERRIDE { diff --git a/ash/system/network/tray_network.cc b/ash/system/network/tray_network.cc index 1efcfbf..84d2db2 100644 --- a/ash/system/network/tray_network.cc +++ b/ash/system/network/tray_network.cc @@ -114,7 +114,11 @@ class HoverHighlightView : public views::View { // A custom scroll-view that has a specified dimension. class FixedSizedScrollView : public views::ScrollView { public: - FixedSizedScrollView() {} + FixedSizedScrollView() { + set_focusable(true); + set_notify_enter_exit_on_child(true); + } + virtual ~FixedSizedScrollView() {} void SetContentsView(View* view) { @@ -130,6 +134,21 @@ class FixedSizedScrollView : public views::ScrollView { return fixed_size_; } + virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) OVERRIDE { + views::View* contents = GetContents(); + gfx::Rect bounds = contents->bounds(); + bounds.set_width(width() - GetScrollBarWidth()); + contents->SetBoundsRect(bounds); + } + + virtual void OnMouseEntered(const views::MouseEvent& event) OVERRIDE { + RequestFocus(); + } + + virtual void OnPaintFocusBorder(gfx::Canvas* canvas) OVERRIDE { + // Do not paint the focus border. + } + gfx::Size fixed_size_; DISALLOW_COPY_AND_ASSIGN(FixedSizedScrollView); diff --git a/ash/system/power/tray_power_date.cc b/ash/system/power/tray_power_date.cc index 1894f536..87dc2a1 100644 --- a/ash/system/power/tray_power_date.cc +++ b/ash/system/power/tray_power_date.cc @@ -7,6 +7,7 @@ #include "ash/shell.h" #include "ash/system/power/power_supply_status.h" #include "ash/system/tray/system_tray_delegate.h" +#include "ash/system/tray/tray_constants.h" #include "base/i18n/time_formatting.h" #include "base/stringprintf.h" #include "base/time.h" @@ -281,7 +282,7 @@ TrayPowerDate::~TrayPowerDate() { views::View* TrayPowerDate::CreateTrayView(user::LoginStatus status) { date_tray_.reset(new tray::DateView(tray::DateView::TIME)); date_tray_->label()->SetFont( - date_tray_->label()->font().DeriveFont(-1, gfx::Font::BOLD)); + date_tray_->label()->font().DeriveFont(2, gfx::Font::BOLD)); date_tray_->label()->SetAutoColorReadabilityEnabled(false); date_tray_->label()->SetEnabledColor(SK_ColorWHITE); @@ -289,7 +290,7 @@ views::View* TrayPowerDate::CreateTrayView(user::LoginStatus status) { views::View* container = new views::View; container->SetLayoutManager(new views::BoxLayout( - views::BoxLayout::kHorizontal, 0, 0, 0)); + views::BoxLayout::kHorizontal, 0, 0, kTrayPaddingBetweenItems)); container->AddChildView(power_tray_.get()); container->AddChildView(date_tray_.get()); diff --git a/ash/system/tray/system_tray.cc b/ash/system/tray/system_tray.cc index 39d176b..879a00b 100644 --- a/ash/system/tray/system_tray.cc +++ b/ash/system/tray/system_tray.cc @@ -7,6 +7,7 @@ #include "ash/shell.h" #include "ash/shell/panel_window.h" #include "ash/shell_window_ids.h" +#include "ash/system/tray/tray_constants.h" #include "ash/system/tray/system_tray_delegate.h" #include "ash/system/tray/system_tray_item.h" #include "ash/system/user/login_status.h" @@ -298,7 +299,7 @@ SystemTray::SystemTray() popup_(NULL) { container_ = new views::View; container_->SetLayoutManager(new views::BoxLayout( - views::BoxLayout::kHorizontal, 5, 0, 3)); + views::BoxLayout::kHorizontal, 5, 0, kTrayPaddingBetweenItems)); container_->set_background(new SystemTrayBackground); set_border(views::Border::CreateEmptyBorder(0, 0, kPaddingFromBottomOfScreen, kPaddingFromRightEdgeOfScreen)); diff --git a/ash/system/tray/tray_constants.cc b/ash/system/tray/tray_constants.cc index 21944ed..89ae3e1 100644 --- a/ash/system/tray/tray_constants.cc +++ b/ash/system/tray/tray_constants.cc @@ -6,6 +6,7 @@ namespace ash { +const int kTrayPaddingBetweenItems = 8; const int kTrayPopupAutoCloseDelayInSeconds = 2; } // namespace ash diff --git a/ash/system/tray/tray_constants.h b/ash/system/tray/tray_constants.h index dddcaa4..5390344 100644 --- a/ash/system/tray/tray_constants.h +++ b/ash/system/tray/tray_constants.h @@ -8,6 +8,7 @@ namespace ash { +extern const int kTrayPaddingBetweenItems; extern const int kTrayPopupAutoCloseDelayInSeconds; } // namespace ash diff --git a/ash/system/user/tray_user.cc b/ash/system/user/tray_user.cc index b676b08..c355635 100644 --- a/ash/system/user/tray_user.cc +++ b/ash/system/user/tray_user.cc @@ -9,6 +9,7 @@ #include "base/utf_string_conversions.h" #include "grit/ash_strings.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/gfx/canvas.h" #include "ui/gfx/image/image.h" #include "ui/gfx/size.h" #include "ui/views/controls/button/button.h" @@ -20,7 +21,13 @@ namespace { -const int kUpdateNotificationPadding = 5; +const int kPaddingAroundButtons = 5; + +const int kUserInfoHorizontalPadding = 14; +const int kUserInfoVerticalPadding = 10; +const int kUserInfoPaddingBetweenItems = 3; + +const SkColor kButtonStrokeColor = SkColorSetRGB(0xdd, 0xdd, 0xdd); // A custom textbutton with some extra vertical padding, and custom border, // alignment and hover-effects. @@ -30,8 +37,10 @@ class TrayButton : public views::TextButton { : views::TextButton(listener, text), hover_(false), hover_bg_(views::Background::CreateSolidBackground(SkColorSetARGB( - 10, 0, 0, 0))) { + 10, 0, 0, 0))), + hover_border_(views::Border::CreateSolidBorder(1, kButtonStrokeColor)) { set_alignment(ALIGN_CENTER); + set_border(NULL); } virtual ~TrayButton() {} @@ -61,8 +70,16 @@ class TrayButton : public views::TextButton { views::TextButton::OnPaintBackground(canvas); } + virtual void OnPaintBorder(gfx::Canvas* canvas) OVERRIDE { + if (hover_) + hover_border_->Paint(*this, canvas); + else + views::TextButton::OnPaintBorder(canvas); + } + bool hover_; - views::Background* hover_bg_; + scoped_ptr<views::Background> hover_bg_; + scoped_ptr<views::Border> hover_border_; DISALLOW_COPY_AND_ASSIGN(TrayButton); }; @@ -86,14 +103,17 @@ class UserView : public views::View, lock_(NULL) { CHECK(status != ash::user::LOGGED_IN_NONE); SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, - 0, 0, 3)); + 0, 0, 0)); if (status != ash::user::LOGGED_IN_GUEST) AddUserInfo(); views::View* button_container = new views::View; views::BoxLayout *layout = new - views::BoxLayout(views::BoxLayout::kHorizontal, 0, 5, 0); + views::BoxLayout(views::BoxLayout::kHorizontal, + kPaddingAroundButtons, + kPaddingAroundButtons, + -1); layout->set_spread_blank_space(true); button_container->SetLayoutManager(layout); @@ -101,21 +121,21 @@ class UserView : public views::View, shutdown_ = new TrayButton(this, bundle.GetLocalizedString( IDS_ASH_STATUS_TRAY_SHUT_DOWN)); - shutdown_->set_border(NULL); + shutdown_->set_border(views::Border::CreateSolidSidedBorder(0, 0, 0, 1, + kButtonStrokeColor)); button_container->AddChildView(shutdown_); signout_ = new TrayButton(this, bundle.GetLocalizedString( status == ash::user::LOGGED_IN_GUEST ? IDS_ASH_STATUS_TRAY_EXIT_GUEST : IDS_ASH_STATUS_TRAY_SIGN_OUT)); - signout_->set_border(views::Border::CreateSolidSidedBorder( - 0, 1, 0, 1, SkColorSetARGB(25, 0, 0, 0))); button_container->AddChildView(signout_); if (status != ash::user::LOGGED_IN_GUEST) { + signout_->set_border(views::Border::CreateSolidSidedBorder(0, 0, 0, 1, + kButtonStrokeColor)); lock_ = new TrayButton(this, bundle.GetLocalizedString( IDS_ASH_STATUS_TRAY_LOCK)); button_container->AddChildView(lock_); - lock_->set_border(NULL); } AddChildView(button_container); @@ -145,10 +165,10 @@ class UserView : public views::View, update_->AddChildView(icon); update_->set_border(views::Border::CreateEmptyBorder( - kUpdateNotificationPadding, - kUpdateNotificationPadding, - kUpdateNotificationPadding, - kUpdateNotificationPadding)); + kUserInfoVerticalPadding, + kUserInfoHorizontalPadding, + kUserInfoVerticalPadding, + kUserInfoHorizontalPadding)); user_info_->AddChildView(update_); } else if (update_) { @@ -163,19 +183,20 @@ class UserView : public views::View, void AddUserInfo() { user_info_ = new views::View; user_info_->SetLayoutManager(new views::BoxLayout( - views::BoxLayout::kHorizontal, 0, 0, 3)); + views::BoxLayout::kHorizontal, kUserInfoHorizontalPadding, + kUserInfoVerticalPadding, kUserInfoPaddingBetweenItems)); views::View* user = new views::View; user->SetLayoutManager(new views::BoxLayout( - views::BoxLayout::kVertical, 14, 5, 0)); + views::BoxLayout::kVertical, 0, 5, 0)); ash::SystemTrayDelegate* tray = ash::Shell::GetInstance()->tray_delegate(); - username_ = new views::Label(ASCIIToUTF16(tray->GetUserDisplayName())); + username_ = new views::Label(UTF8ToUTF16(tray->GetUserDisplayName())); username_->SetFont(username_->font().DeriveFont(2)); username_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); user->AddChildView(username_); - email_ = new views::Label(ASCIIToUTF16(tray->GetUserEmail())); + email_ = new views::Label(UTF8ToUTF16(tray->GetUserEmail())); email_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); email_->SetEnabled(false); user->AddChildView(email_); |