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

Side by Side Diff: athena/activity/activity_view_manager_impl.cc

Issue 375143002: Use Widget frame and WidgetDelegate in ActvityWidget (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "athena/activity/public/activity_view_manager.h" 5 #include "athena/activity/public/activity_view_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 9
10 #include "athena/activity/activity_widget_delegate.h"
10 #include "athena/activity/public/activity.h" 11 #include "athena/activity/public/activity.h"
11 #include "athena/activity/public/activity_view_model.h" 12 #include "athena/activity/public/activity_view_model.h"
12 #include "athena/screen/public/screen_manager.h" 13 #include "athena/screen/public/screen_manager.h"
13 #include "ui/aura/window.h" 14 #include "ui/aura/window.h"
14 #include "ui/views/background.h"
15 #include "ui/views/controls/label.h"
16 #include "ui/views/layout/layout_manager.h"
17 #include "ui/views/view.h" 15 #include "ui/views/view.h"
18 #include "ui/views/widget/widget.h" 16 #include "ui/views/widget/widget.h"
17 #include "ui/views/window/non_client_view.h"
Jun Mukai 2014/07/11 01:28:14 you don't have to include this (see comment below)
19 18
20 namespace athena { 19 namespace athena {
21 namespace { 20 namespace {
22 21
23 class ActivityWidget : public views::LayoutManager { 22 class ActivityWidget {
24 public: 23 public:
25 explicit ActivityWidget(Activity* activity) 24 explicit ActivityWidget(Activity* activity)
26 : activity_(activity), 25 : activity_(activity), widget_(NULL) {
27 container_(NULL), 26 ActivityViewModel* view_model = activity->GetActivityViewModel();
28 title_(NULL),
29 content_(NULL),
30 widget_(NULL) {
31 container_ = new views::View;
32
33 title_ = new views::Label();
34 title_->SetHorizontalAlignment(gfx::ALIGN_CENTER);
35 const gfx::FontList& font_list = title_->font_list();
36 title_->SetFontList(font_list.Derive(1, gfx::Font::BOLD));
37 title_->SetEnabledColor(SK_ColorBLACK);
38 container_->AddChildView(title_);
39 container_->SetLayoutManager(this);
40 content_ = activity->GetActivityViewModel()->GetContentsView();
41 container_->AddChildView(content_);
42
43 widget_ = new views::Widget; 27 widget_ = new views::Widget;
44 views::Widget::InitParams params( 28 views::Widget::InitParams params(
45 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); 29 view_model->UsesFrame()
30 ? views::Widget::InitParams::TYPE_WINDOW
31 : views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
46 params.context = ScreenManager::Get()->GetContext(); 32 params.context = ScreenManager::Get()->GetContext();
47 params.delegate = NULL; 33 params.delegate = new ActivityWidgetDelegate(view_model);
48 params.activatable = views::Widget::InitParams::ACTIVATABLE_YES; 34 params.activatable = views::Widget::InitParams::ACTIVATABLE_YES;
49 widget_->Init(params); 35 widget_->Init(params);
50 widget_->SetContentsView(container_);
51
52 activity_->GetActivityViewModel()->Init(); 36 activity_->GetActivityViewModel()->Init();
53 } 37 }
54 38
55 virtual ~ActivityWidget() {} 39 virtual ~ActivityWidget() {}
56 40
57 void Show() { 41 void Show() {
58 Update(); 42 Update();
59 widget_->Show(); 43 widget_->Show();
60 } 44 }
61 45
62 void Update() { 46 void Update() {
63 title_->SetText(activity_->GetActivityViewModel()->GetTitle()); 47 if (widget_->non_client_view())
64 SkColor bgcolor = 48 widget_->non_client_view()->UpdateWindowTitle();
Jun Mukai 2014/07/11 01:28:14 seems views::Widget has UpdateWindowTitle()
oshima 2014/07/11 06:51:35 Thanks! Done.
65 activity_->GetActivityViewModel()->GetRepresentativeColor();
66 title_->set_background(views::Background::CreateSolidBackground(bgcolor));
67 title_->SetBackgroundColor(bgcolor);
68 } 49 }
69 50
70 private: 51 private:
71 // views::LayoutManager:
72 virtual void Layout(views::View* host) OVERRIDE {
73 CHECK_EQ(container_, host);
74 const gfx::Rect& content_bounds = host->bounds();
75 const int kTitleHeight = 25;
76 title_->SetBounds(0, 0, content_bounds.width(), kTitleHeight);
77 content_->SetBounds(0,
78 kTitleHeight,
79 content_bounds.width(),
80 content_bounds.height() - kTitleHeight);
81 }
82
83 virtual gfx::Size GetPreferredSize(const views::View* host) const OVERRIDE {
84 CHECK_EQ(container_, host);
85 gfx::Size size;
86 gfx::Size label_size = title_->GetPreferredSize();
87 gfx::Size content_size = content_->GetPreferredSize();
88
89 size.set_width(std::max(label_size.width(), content_size.width()));
90 size.set_height(label_size.height() + content_size.height());
91 return size;
92 }
93 52
94 Activity* activity_; 53 Activity* activity_;
95 views::View* container_;
96 views::Label* title_;
97 views::View* content_;
98 views::Widget* widget_; 54 views::Widget* widget_;
99 55
100 DISALLOW_COPY_AND_ASSIGN(ActivityWidget); 56 DISALLOW_COPY_AND_ASSIGN(ActivityWidget);
101 }; 57 };
102 58
103 ActivityViewManager* instance = NULL; 59 ActivityViewManager* instance = NULL;
104 60
105 class ActivityViewManagerImpl : public ActivityViewManager { 61 class ActivityViewManagerImpl : public ActivityViewManager {
106 public: 62 public:
107 ActivityViewManagerImpl() { 63 ActivityViewManagerImpl() {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 ActivityViewManager* ActivityViewManager::Get() { 109 ActivityViewManager* ActivityViewManager::Get() {
154 return instance; 110 return instance;
155 } 111 }
156 112
157 void ActivityViewManager::Shutdown() { 113 void ActivityViewManager::Shutdown() {
158 CHECK(instance); 114 CHECK(instance);
159 delete instance; 115 delete instance;
160 } 116 }
161 117
162 } // namespace athena 118 } // namespace athena
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698