1 // Copyright 2013 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.
5 #include "ash/first_run/first_run_helper_impl.h"
7 #include "ash/shelf/shelf.h"
9 #include "ash/shell_window_ids.h"
10 #include "ash/system/tray/system_tray.h"
11 #include "base/logging.h"
12 #include "ui/app_list/views/app_list_view.h"
13 #include "ui/aura/window.h"
14 #include "ui/gfx/rect.h"
15 #include "ui/views/view.h"
16 #include "ui/views/widget/widget.h"
22 views::Widget
* CreateFirstRunWindow() {
23 views::Widget::InitParams
params(
24 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS
);
25 params
.bounds
= Shell::GetScreen()->GetPrimaryDisplay().bounds();
26 params
.show_state
= ui::SHOW_STATE_FULLSCREEN
;
27 params
.opacity
= views::Widget::InitParams::TRANSLUCENT_WINDOW
;
29 Shell::GetContainer(Shell::GetPrimaryRootWindow(),
30 ash::internal::kShellWindowId_OverlayContainer
);
31 views::Widget
* window
= new views::Widget
;
36 } // anonymous namespace
38 FirstRunHelperImpl::FirstRunHelperImpl()
39 : widget_(CreateFirstRunWindow()) {
40 Shell::GetInstance()->overlay_filter()->Activate(this);
43 FirstRunHelperImpl::~FirstRunHelperImpl() {
44 Shell::GetInstance()->overlay_filter()->Deactivate();
45 if (IsTrayBubbleOpened())
50 views::Widget
* FirstRunHelperImpl::GetOverlayWidget() {
54 void FirstRunHelperImpl::OpenAppList() {
55 if (Shell::GetInstance()->GetAppListTargetVisibility())
57 Shell::GetInstance()->ToggleAppList(NULL
);
60 void FirstRunHelperImpl::CloseAppList() {
61 if (!Shell::GetInstance()->GetAppListTargetVisibility())
63 Shell::GetInstance()->ToggleAppList(NULL
);
66 gfx::Rect
FirstRunHelperImpl::GetLauncherBounds() {
67 Shelf
* shelf
= Shelf::ForPrimaryDisplay();
68 return shelf
->GetVisibleItemsBoundsInScreen();
71 gfx::Rect
FirstRunHelperImpl::GetAppListButtonBounds() {
72 Shelf
* shelf
= Shelf::ForPrimaryDisplay();
73 views::View
* app_button
= shelf
->GetAppListButtonView();
74 return app_button
->GetBoundsInScreen();
77 gfx::Rect
FirstRunHelperImpl::GetAppListBounds() {
78 app_list::AppListView
* view
= Shell::GetInstance()->GetAppListView();
79 return view
->GetBoundsInScreen();
82 void FirstRunHelperImpl::Cancel() {
83 FOR_EACH_OBSERVER(Observer
, observers(), OnCancelled());
86 bool FirstRunHelperImpl::IsCancelingKeyEvent(ui::KeyEvent
* event
) {
87 return event
->key_code() == ui::VKEY_ESCAPE
;
90 aura::Window
* FirstRunHelperImpl::GetWindow() {
91 return widget_
->GetNativeWindow();
94 void FirstRunHelperImpl::OpenTrayBubble() {
95 SystemTray
* tray
= Shell::GetInstance()->GetPrimarySystemTray();
96 tray
->ShowPersistentDefaultView();
99 void FirstRunHelperImpl::CloseTrayBubble() {
100 SystemTray
* tray
= Shell::GetInstance()->GetPrimarySystemTray();
101 DCHECK(tray
->HasSystemBubble()) << "Tray bubble is closed already.";
102 tray
->CloseSystemBubble();
105 bool FirstRunHelperImpl::IsTrayBubbleOpened() {
106 SystemTray
* tray
= Shell::GetInstance()->GetPrimarySystemTray();
107 return tray
->HasSystemBubble();
110 gfx::Rect
FirstRunHelperImpl::GetTrayBubbleBounds() {
111 SystemTray
* tray
= Shell::GetInstance()->GetPrimarySystemTray();
112 views::View
* bubble
= tray
->GetSystemBubble()->bubble_view();
113 return bubble
->GetBoundsInScreen();
116 gfx::Rect
FirstRunHelperImpl::GetHelpButtonBounds() {
117 SystemTray
* tray
= Shell::GetInstance()->GetPrimarySystemTray();
118 views::View
* help_button
= tray
->GetHelpButtonView();
119 return help_button
->GetBoundsInScreen();