summaryrefslogtreecommitdiff
path: root/chromium/ash/system/tray/tray_image_item.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/system/tray/tray_image_item.cc')
-rw-r--r--chromium/ash/system/tray/tray_image_item.cc93
1 files changed, 93 insertions, 0 deletions
diff --git a/chromium/ash/system/tray/tray_image_item.cc b/chromium/ash/system/tray/tray_image_item.cc
new file mode 100644
index 00000000000..7c5e216c942
--- /dev/null
+++ b/chromium/ash/system/tray/tray_image_item.cc
@@ -0,0 +1,93 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/system/tray/tray_image_item.h"
+
+#include "ash/system/tray/system_tray.h"
+#include "ash/system/tray/tray_item_view.h"
+#include "ash/system/tray/tray_utils.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/gfx/image/image.h"
+#include "ui/views/controls/image_view.h"
+#include "ui/views/layout/box_layout.h"
+
+namespace ash {
+namespace internal {
+
+TrayImageItem::TrayImageItem(SystemTray* system_tray, int resource_id)
+ : SystemTrayItem(system_tray),
+ resource_id_(resource_id),
+ tray_view_(NULL) {
+}
+
+TrayImageItem::~TrayImageItem() {}
+
+views::View* TrayImageItem::tray_view() {
+ return tray_view_;
+}
+
+void TrayImageItem::SetImageFromResourceId(int resource_id) {
+ resource_id_ = resource_id;
+ if (!tray_view_)
+ return;
+ tray_view_->image_view()->SetImage(ui::ResourceBundle::GetSharedInstance().
+ GetImageNamed(resource_id_).ToImageSkia());
+}
+
+views::View* TrayImageItem::CreateTrayView(user::LoginStatus status) {
+ CHECK(tray_view_ == NULL);
+ tray_view_ = new TrayItemView(this);
+ tray_view_->CreateImageView();
+ tray_view_->image_view()->SetImage(ui::ResourceBundle::GetSharedInstance().
+ GetImageNamed(resource_id_).ToImageSkia());
+ tray_view_->SetVisible(GetInitialVisibility());
+ SetItemAlignment(system_tray()->shelf_alignment());
+ return tray_view_;
+}
+
+views::View* TrayImageItem::CreateDefaultView(user::LoginStatus status) {
+ return NULL;
+}
+
+views::View* TrayImageItem::CreateDetailedView(user::LoginStatus status) {
+ return NULL;
+}
+
+void TrayImageItem::UpdateAfterLoginStatusChange(user::LoginStatus status) {
+}
+
+void TrayImageItem::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
+ SetTrayImageItemBorder(tray_view_, alignment);
+ SetItemAlignment(alignment);
+}
+
+void TrayImageItem::DestroyTrayView() {
+ tray_view_ = NULL;
+}
+
+void TrayImageItem::DestroyDefaultView() {
+}
+
+void TrayImageItem::DestroyDetailedView() {
+}
+
+void TrayImageItem::SetItemAlignment(ShelfAlignment alignment) {
+ // Center the item dependent on the orientation of the shelf.
+ views::BoxLayout::Orientation layout = views::BoxLayout::kHorizontal;
+ switch (alignment) {
+ case ash::SHELF_ALIGNMENT_BOTTOM:
+ case ash::SHELF_ALIGNMENT_TOP:
+ layout = views::BoxLayout::kHorizontal;
+ break;
+ case ash::SHELF_ALIGNMENT_LEFT:
+ case ash::SHELF_ALIGNMENT_RIGHT:
+ layout = views::BoxLayout::kVertical;
+ break;
+ }
+ tray_view_->SetLayoutManager(new views::BoxLayout(layout, 0, 0, 0));
+ tray_view_->Layout();
+}
+
+} // namespace internal
+} // namespace ash