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

Unified Diff: athena/system/status_icon_container_view.cc

Issue 483363003: [Athena] Add status icons and system time to the desktop background (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: athena/system/status_icon_container_view.cc
diff --git a/athena/system/status_icon_container_view.cc b/athena/system/status_icon_container_view.cc
index 30f2565d7756551f9e6b14cf1247431226fce49f..afb38955224afc5c3fc6a8d8948de6281db9e1f9 100644
--- a/athena/system/status_icon_container_view.cc
+++ b/athena/system/status_icon_container_view.cc
@@ -2,12 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "athena/main/debug/debug_window.h"
+#include "athena/system/status_icon_container_view.h"
-#include "athena/common/container_priorities.h"
-#include "athena/main/debug/network_selector.h"
#include "athena/resources/athena_resources.h"
-#include "athena/screen/public/screen_manager.h"
+#include "athena/system/network_selector.h"
#include "base/bind.h"
#include "base/macros.h"
#include "base/strings/stringprintf.h"
@@ -20,33 +18,33 @@
#include "chromeos/network/network_state_handler.h"
#include "chromeos/network/network_state_handler_observer.h"
#include "chromeos/network/network_type_pattern.h"
+#include "extensions/shell/common/version.h"
#include "ui/aura/window.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_skia.h"
#include "ui/gfx/image/image_skia_operations.h"
-#include "ui/views/background.h"
-#include "ui/views/border.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/layout/box_layout.h"
-#include "ui/views/view.h"
-#include "ui/views/widget/widget.h"
+namespace athena {
namespace {
-views::Label* CreateDebugLabel(const std::string& text) {
+views::Label* CreateLabel(const std::string& text) {
views::Label* label = new views::Label(base::UTF8ToUTF16(text));
label->SetEnabledColor(SK_ColorWHITE);
- label->SetBackgroundColor(SK_ColorTRANSPARENT);
- label->SetFontList(gfx::FontList().Derive(-2, gfx::Font::BOLD));
+ label->SetAutoColorReadabilityEnabled(false);
+ label->SetFontList(gfx::FontList().DeriveWithStyle(gfx::Font::BOLD));
return label;
}
-class PowerStatus : public chromeos::PowerManagerClient::Observer {
+} // namespace
+
+class StatusIconContainerView::PowerStatus
+ : public chromeos::PowerManagerClient::Observer {
public:
- PowerStatus(views::ImageView* icon, const base::Closure& closure)
- : icon_(icon), closure_(closure) {
+ explicit PowerStatus(views::ImageView* icon) : icon_(icon) {
chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(
this);
chromeos::DBusThreadManager::Get()
@@ -96,20 +94,17 @@ class PowerStatus : public chromeos::PowerManagerClient::Observer {
virtual void PowerChanged(
const power_manager::PowerSupplyProperties& proto) OVERRIDE {
icon_->SetImage(GetPowerIcon(proto));
- if (!closure_.is_null())
- closure_.Run();
}
views::ImageView* icon_;
- base::Closure closure_;
DISALLOW_COPY_AND_ASSIGN(PowerStatus);
};
-class NetworkStatus : public chromeos::NetworkStateHandlerObserver {
+class StatusIconContainerView::NetworkStatus
+ : public chromeos::NetworkStateHandlerObserver {
public:
- NetworkStatus(views::Label* label, const base::Closure& closure)
- : label_(label), closure_(closure) {
+ explicit NetworkStatus(views::Label* label) : label_(label) {
chromeos::NetworkStateHandler* handler =
chromeos::NetworkHandler::Get()->network_state_handler();
handler->AddObserver(this, FROM_HERE);
@@ -136,8 +131,6 @@ class NetworkStatus : public chromeos::NetworkStateHandlerObserver {
"%s (%s)", network->ip_address().c_str(), network->name().c_str());
}
label_->SetText(base::UTF8ToUTF16(status));
- if (!closure_.is_null())
- closure_.Run();
}
// chromeos::NetworkStateHandlerObserver:
@@ -157,7 +150,8 @@ class NetworkStatus : public chromeos::NetworkStateHandlerObserver {
}
views::Label* label_;
- base::Closure closure_;
+
+ DISALLOW_COPY_AND_ASSIGN(NetworkStatus);
};
void StartUpdateCallback(
@@ -165,10 +159,10 @@ void StartUpdateCallback(
VLOG(1) << "Callback from RequestUpdateCheck, result " << result;
}
-class UpdateStatus : public chromeos::UpdateEngineClient::Observer {
+class StatusIconContainerView::UpdateStatus
+ : public chromeos::UpdateEngineClient::Observer {
public:
- UpdateStatus(views::ImageView* icon, const base::Closure& closure)
- : icon_(icon), closure_(closure) {
+ explicit UpdateStatus(views::ImageView* icon) : icon_(icon) {
chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver(
this);
chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->
@@ -189,158 +183,60 @@ class UpdateStatus : public chromeos::UpdateEngineClient::Observer {
}
icon_->SetImage(ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
IDR_AURA_UBER_TRAY_UPDATE));
- if (!closure_.is_null())
- closure_.Run();
}
private:
views::ImageView* icon_;
- base::Closure closure_;
DISALLOW_COPY_AND_ASSIGN(UpdateStatus);
};
-// Processes user input to show the detailed network-list.
-class DetailViewHandler : public ui::EventHandler {
- public:
- explicit DetailViewHandler(aura::Window* container) : container_(container) {}
- virtual ~DetailViewHandler() {}
-
- private:
- // ui::EventHandler:
- virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE {
- if (event->type() == ui::ET_MOUSE_PRESSED) {
- debug::CreateNetworkSelector(container_);
- event->SetHandled();
- }
- }
-
- virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE {
- if (event->type() == ui::ET_GESTURE_TAP) {
- debug::CreateNetworkSelector(container_);
- event->SetHandled();
- }
- }
-
- aura::Window* container_;
-
- DISALLOW_COPY_AND_ASSIGN(DetailViewHandler);
-};
-
-class DebugWidget {
- public:
- DebugWidget() : container_(NULL), widget_(NULL) {
- CreateContainer();
- CreateWidget();
-
- CreateBatteryView();
- CreateUpdateView();
- CreateNetworkView();
-
- UpdateSize();
- }
-
- virtual ~DebugWidget() {}
-
- private:
- void CreateContainer() {
- athena::ScreenManager::ContainerParams params("DebugContainer",
- athena::CP_DEBUG);
- params.can_activate_children = true;
- container_ = athena::ScreenManager::Get()->CreateContainer(params);
- }
-
- void CreateWidget() {
- views::Widget::InitParams params;
- params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS;
- params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
- params.activatable = views::Widget::InitParams::ACTIVATABLE_NO;
- params.accept_events = true;
- params.bounds = gfx::Rect(200, 0, 100, 105);
- params.parent = container_;
- widget_ = new views::Widget();
- widget_->Init(params);
-
- event_handler_.reset(new DetailViewHandler(container_));
-
- const int kHorizontalSpacing = 10;
- const int kBorderVerticalSpacing = 3;
- const int kBetweenChildSpacing = 10;
- const int kBackgroundColor = SkColorSetARGB(0x7f, 0, 0, 0);
- views::View* container = new views::View;
- container->SetLayoutManager(
- new views::BoxLayout(views::BoxLayout::kHorizontal,
- kHorizontalSpacing,
- kBorderVerticalSpacing,
- kBetweenChildSpacing));
- container->set_background(
- views::Background::CreateSolidBackground(kBackgroundColor));
- container->SetBorder(views::Border::CreateSolidBorder(1, kBackgroundColor));
- container->set_target_handler(event_handler_.get());
- widget_->SetContentsView(container);
- widget_->StackAtTop();
- widget_->Show();
-
- widget_->SetBounds(gfx::Rect(600, 0, 300, 25));
- }
-
- void CreateBatteryView() {
- views::View* container = widget_->GetContentsView();
- views::ImageView* icon = new views::ImageView();
- container->AddChildView(icon);
- container->Layout();
-
- power_status_.reset(new PowerStatus(
- icon, base::Bind(&DebugWidget::UpdateSize, base::Unretained(this))));
- }
-
- void CreateNetworkView() {
- views::View* container = widget_->GetContentsView();
- container->AddChildView(CreateDebugLabel("Network:"));
-
- views::Label* label = CreateDebugLabel(std::string());
- container->AddChildView(label);
- container->Layout();
-
- network_status_.reset(new NetworkStatus(
- label, base::Bind(&DebugWidget::UpdateSize, base::Unretained(this))));
- }
-
- void CreateUpdateView() {
- views::View* container = widget_->GetContentsView();
- views::ImageView* icon = new views::ImageView();
- container->AddChildView(icon);
- container->Layout();
+StatusIconContainerView::StatusIconContainerView(
+ aura::Window* system_modal_container)
+ : system_modal_container_(system_modal_container) {
+ const int kHorizontalSpacing = 10;
+ const int kVerticalSpacing = 3;
+ const int kBetweenChildSpacing = 10;
+ SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal,
+ kHorizontalSpacing,
+ kVerticalSpacing,
+ kBetweenChildSpacing));
+
+ std::string version_text =
+ base::StringPrintf("%s (Build %s)", PRODUCT_VERSION, LAST_CHANGE);
+ AddChildView(CreateLabel(version_text));
+
+ AddChildView(CreateLabel("Network:"));
+ views::Label* network_label = CreateLabel(std::string());
+ AddChildView(network_label);
+ network_status_.reset(new NetworkStatus(network_label));
+
+ views::ImageView* battery_view = new views::ImageView();
+ AddChildView(battery_view);
+ power_status_.reset(new PowerStatus(battery_view));
+
+ views::ImageView* update_view = new views::ImageView();
+ AddChildView(update_view);
+ update_status_.reset(new UpdateStatus(update_view));
+}
- update_status_.reset(new UpdateStatus(
- icon, base::Bind(&DebugWidget::UpdateSize, base::Unretained(this))));
- }
+StatusIconContainerView::~StatusIconContainerView() {
+}
- const gfx::Rect GetPositionForSize(const gfx::Size& size) {
- int right = container_->bounds().right();
- int x = right - size.width();
- return gfx::Rect(x, 0, size.width(), size.height());
- }
+bool StatusIconContainerView::OnMousePressed(const ui::MouseEvent& event) {
+ CreateNetworkSelector(system_modal_container_);
+ return true;
+}
- void UpdateSize() {
- views::View* container = widget_->GetContentsView();
- container->Layout();
- gfx::Size size = container->GetPreferredSize();
- widget_->SetBounds(GetPositionForSize(size));
+void StatusIconContainerView::OnGestureEvent(ui::GestureEvent* event) {
+ if (event->type() == ui::ET_GESTURE_TAP) {
+ CreateNetworkSelector(system_modal_container_);
+ event->SetHandled();
}
+}
- aura::Window* container_;
- views::Widget* widget_;
- scoped_ptr<PowerStatus> power_status_;
- scoped_ptr<NetworkStatus> network_status_;
- scoped_ptr<UpdateStatus> update_status_;
- scoped_ptr<ui::EventHandler> event_handler_;
-
- DISALLOW_COPY_AND_ASSIGN(DebugWidget);
-};
-
-} // namespace
-
-void CreateDebugWindow() {
- new DebugWidget();
+void StatusIconContainerView::ChildPreferredSizeChanged(views::View* child) {
+ PreferredSizeChanged();
}
+
+} // namespace athena

Powered by Google App Engine
This is Rietveld 408576698