1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ash/system/tray/system_tray_item.h"
6
7#include "ash/shell.h"
8#include "ash/system/tray/system_tray.h"
9#include "ash/system/tray/system_tray_delegate.h"
10#include "ui/views/view.h"
11
12namespace ash {
13
14SystemTrayItem::SystemTrayItem(SystemTray* system_tray)
15    : system_tray_(system_tray),
16      restore_focus_(false) {
17}
18
19SystemTrayItem::~SystemTrayItem() {
20}
21
22views::View* SystemTrayItem::CreateTrayView(user::LoginStatus status) {
23  return NULL;
24}
25
26views::View* SystemTrayItem::CreateDefaultView(user::LoginStatus status) {
27  return NULL;
28}
29
30views::View* SystemTrayItem::CreateDetailedView(user::LoginStatus status) {
31  return NULL;
32}
33
34views::View* SystemTrayItem::CreateNotificationView(user::LoginStatus status) {
35  return NULL;
36}
37
38void SystemTrayItem::DestroyTrayView() {
39}
40
41void SystemTrayItem::DestroyDefaultView() {
42}
43
44void SystemTrayItem::DestroyDetailedView() {
45}
46
47void SystemTrayItem::DestroyNotificationView() {
48}
49
50void SystemTrayItem::TransitionDetailedView() {
51  system_tray()->ShowDetailedView(this, 0, true, BUBBLE_USE_EXISTING);
52}
53
54void SystemTrayItem::UpdateAfterLoginStatusChange(user::LoginStatus status) {
55}
56
57void SystemTrayItem::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
58}
59
60void SystemTrayItem::PopupDetailedView(int for_seconds, bool activate) {
61  // Never show a detailed view during OOBE, e.g. from a notification.
62  if (!Shell::GetInstance()->system_tray_delegate()->IsOobeCompleted())
63    return;
64  system_tray()->ShowDetailedView(
65      this, for_seconds, activate, BUBBLE_CREATE_NEW);
66}
67
68void SystemTrayItem::SetDetailedViewCloseDelay(int for_seconds) {
69  system_tray()->SetDetailedViewCloseDelay(for_seconds);
70}
71
72void SystemTrayItem::HideDetailedView() {
73  system_tray()->HideDetailedView(this);
74}
75
76void SystemTrayItem::ShowNotificationView() {
77  system_tray()->ShowNotificationView(this);
78}
79
80void SystemTrayItem::HideNotificationView() {
81  system_tray()->HideNotificationView(this);
82}
83
84bool SystemTrayItem::ShouldHideArrow() const {
85  return false;
86}
87
88bool SystemTrayItem::ShouldShowLauncher() const {
89  return true;
90}
91
92}  // namespace ash
93