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

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
« no previous file with comments | « athena/activity/activity_frame_view.cc ('k') | athena/activity/activity_widget_delegate.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
19 17
20 namespace athena { 18 namespace athena {
21 namespace { 19 namespace {
22 20
23 class ActivityWidget : public views::LayoutManager { 21 class ActivityWidget {
24 public: 22 public:
25 explicit ActivityWidget(Activity* activity) 23 explicit ActivityWidget(Activity* activity)
26 : activity_(activity), 24 : activity_(activity), widget_(NULL) {
27 container_(NULL), 25 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; 26 widget_ = new views::Widget;
44 views::Widget::InitParams params( 27 views::Widget::InitParams params(
45 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); 28 view_model->UsesFrame()
29 ? views::Widget::InitParams::TYPE_WINDOW
30 : views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
46 params.context = ScreenManager::Get()->GetContext(); 31 params.context = ScreenManager::Get()->GetContext();
47 params.delegate = NULL; 32 params.delegate = new ActivityWidgetDelegate(view_model);
48 params.activatable = views::Widget::InitParams::ACTIVATABLE_YES; 33 params.activatable = views::Widget::InitParams::ACTIVATABLE_YES;
49 widget_->Init(params); 34 widget_->Init(params);
50 widget_->SetContentsView(container_);
51
52 activity_->GetActivityViewModel()->Init(); 35 activity_->GetActivityViewModel()->Init();
53 } 36 }
54 37
55 virtual ~ActivityWidget() {} 38 virtual ~ActivityWidget() {}
56 39
57 void Show() { 40 void Show() {
58 Update(); 41 Update();
59 widget_->Show(); 42 widget_->Show();
60 } 43 }
61 44
62 void Update() { 45 void Update() {
63 title_->SetText(activity_->GetActivityViewModel()->GetTitle()); 46 widget_->UpdateWindowTitle();
64 SkColor bgcolor =
65 activity_->GetActivityViewModel()->GetRepresentativeColor();
66 title_->set_background(views::Background::CreateSolidBackground(bgcolor));
67 title_->SetBackgroundColor(bgcolor);
68 } 47 }
69 48
70 private: 49 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 50
94 Activity* activity_; 51 Activity* activity_;
95 views::View* container_;
96 views::Label* title_;
97 views::View* content_;
98 views::Widget* widget_; 52 views::Widget* widget_;
99 53
100 DISALLOW_COPY_AND_ASSIGN(ActivityWidget); 54 DISALLOW_COPY_AND_ASSIGN(ActivityWidget);
101 }; 55 };
102 56
103 ActivityViewManager* instance = NULL; 57 ActivityViewManager* instance = NULL;
104 58
105 class ActivityViewManagerImpl : public ActivityViewManager { 59 class ActivityViewManagerImpl : public ActivityViewManager {
106 public: 60 public:
107 ActivityViewManagerImpl() { 61 ActivityViewManagerImpl() {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 ActivityViewManager* ActivityViewManager::Get() { 107 ActivityViewManager* ActivityViewManager::Get() {
154 return instance; 108 return instance;
155 } 109 }
156 110
157 void ActivityViewManager::Shutdown() { 111 void ActivityViewManager::Shutdown() {
158 CHECK(instance); 112 CHECK(instance);
159 delete instance; 113 delete instance;
160 } 114 }
161 115
162 } // namespace athena 116 } // namespace athena
OLDNEW
« no previous file with comments | « athena/activity/activity_frame_view.cc ('k') | athena/activity/activity_widget_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698