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

Side by Side Diff: chrome/browser/ui/views/desktop_media_picker_views.cc

Issue 89683003: Rename DesktopMediaPickerModel[Impl]->[Native]DesktopMediaList (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 2013 The Chromium Authors. All rights reserved. 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 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 "chrome/browser/media/desktop_media_picker.h" 5 #include "chrome/browser/media/desktop_media_picker.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "chrome/browser/media/desktop_media_picker_model.h" 9 #include "chrome/browser/media/desktop_media_list.h"
10 #include "chrome/browser/media/desktop_media_list_observer.h"
10 #include "content/public/browser/browser_thread.h" 11 #include "content/public/browser/browser_thread.h"
11 #include "grit/generated_resources.h" 12 #include "grit/generated_resources.h"
12 #include "ui/base/l10n/l10n_util.h" 13 #include "ui/base/l10n/l10n_util.h"
13 #include "ui/events/keycodes/keyboard_codes.h" 14 #include "ui/events/keycodes/keyboard_codes.h"
14 #include "ui/native_theme/native_theme.h" 15 #include "ui/native_theme/native_theme.h"
15 #include "ui/views/controls/image_view.h" 16 #include "ui/views/controls/image_view.h"
16 #include "ui/views/controls/label.h" 17 #include "ui/views/controls/label.h"
17 #include "ui/views/controls/scroll_view.h" 18 #include "ui/views/controls/scroll_view.h"
18 #include "ui/views/corewm/shadow_types.h" 19 #include "ui/views/corewm/shadow_types.h"
19 #include "ui/views/focus_border.h" 20 #include "ui/views/focus_border.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 94
94 views::ImageView* image_view_; 95 views::ImageView* image_view_;
95 views::Label* label_; 96 views::Label* label_;
96 97
97 bool selected_; 98 bool selected_;
98 99
99 DISALLOW_COPY_AND_ASSIGN(DesktopMediaSourceView); 100 DISALLOW_COPY_AND_ASSIGN(DesktopMediaSourceView);
100 }; 101 };
101 102
102 // View that shows list of desktop media sources available from 103 // View that shows list of desktop media sources available from
103 // DesktopMediaPickerModel. 104 // DesktopMediaList.
104 class DesktopMediaListView : public views::View, 105 class DesktopMediaListView : public views::View,
105 public DesktopMediaPickerModel::Observer { 106 public DesktopMediaListObserver {
106 public: 107 public:
107 DesktopMediaListView(DesktopMediaPickerDialogView* parent, 108 DesktopMediaListView(DesktopMediaPickerDialogView* parent,
108 scoped_ptr<DesktopMediaPickerModel> model); 109 scoped_ptr<DesktopMediaList> media_list);
109 virtual ~DesktopMediaListView(); 110 virtual ~DesktopMediaListView();
110 111
111 void StartUpdating(content::DesktopMediaID::Id dialog_window_id); 112 void StartUpdating(content::DesktopMediaID::Id dialog_window_id);
112 113
113 // Called by DesktopMediaSourceView when selection has changed. 114 // Called by DesktopMediaSourceView when selection has changed.
114 void OnSelectionChanged(); 115 void OnSelectionChanged();
115 116
116 // Called by DesktopMediaSourceView when a source has been double-clicked. 117 // Called by DesktopMediaSourceView when a source has been double-clicked.
117 void OnDoubleClick(); 118 void OnDoubleClick();
118 119
119 // Returns currently selected source. 120 // Returns currently selected source.
120 DesktopMediaSourceView* GetSelection(); 121 DesktopMediaSourceView* GetSelection();
121 122
122 // views::View overrides. 123 // views::View overrides.
123 virtual gfx::Size GetPreferredSize() OVERRIDE; 124 virtual gfx::Size GetPreferredSize() OVERRIDE;
124 virtual void Layout() OVERRIDE; 125 virtual void Layout() OVERRIDE;
125 virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE; 126 virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
126 127
127 private: 128 private:
128 // DesktopMediaPickerModel::Observer interface 129 // DesktopMediaList::Observer interface
129 virtual void OnSourceAdded(int index) OVERRIDE; 130 virtual void OnSourceAdded(int index) OVERRIDE;
130 virtual void OnSourceRemoved(int index) OVERRIDE; 131 virtual void OnSourceRemoved(int index) OVERRIDE;
131 virtual void OnSourceNameChanged(int index) OVERRIDE; 132 virtual void OnSourceNameChanged(int index) OVERRIDE;
132 virtual void OnSourceThumbnailChanged(int index) OVERRIDE; 133 virtual void OnSourceThumbnailChanged(int index) OVERRIDE;
133 134
134 DesktopMediaPickerDialogView* parent_; 135 DesktopMediaPickerDialogView* parent_;
135 scoped_ptr<DesktopMediaPickerModel> model_; 136 scoped_ptr<DesktopMediaList> media_list_;
136 137
137 DISALLOW_COPY_AND_ASSIGN(DesktopMediaListView); 138 DISALLOW_COPY_AND_ASSIGN(DesktopMediaListView);
138 }; 139 };
139 140
140 // Dialog view used for DesktopMediaPickerViews. 141 // Dialog view used for DesktopMediaPickerViews.
141 class DesktopMediaPickerDialogView : public views::DialogDelegateView { 142 class DesktopMediaPickerDialogView : public views::DialogDelegateView {
142 public: 143 public:
143 DesktopMediaPickerDialogView(gfx::NativeWindow context, 144 DesktopMediaPickerDialogView(gfx::NativeWindow context,
144 gfx::NativeWindow parent_window, 145 gfx::NativeWindow parent_window,
145 DesktopMediaPickerViews* parent, 146 DesktopMediaPickerViews* parent,
146 const string16& app_name, 147 const string16& app_name,
147 scoped_ptr<DesktopMediaPickerModel> model); 148 scoped_ptr<DesktopMediaList> media_list);
148 virtual ~DesktopMediaPickerDialogView(); 149 virtual ~DesktopMediaPickerDialogView();
149 150
150 // Called by parent (DesktopMediaPickerViews) when it's destroyed. 151 // Called by parent (DesktopMediaPickerViews) when it's destroyed.
151 void DetachParent(); 152 void DetachParent();
152 153
153 // Called by DesktopMediaListView. 154 // Called by DesktopMediaListView.
154 void OnSelectionChanged(); 155 void OnSelectionChanged();
155 void OnDoubleClick(); 156 void OnDoubleClick();
156 157
157 // views::View overrides. 158 // views::View overrides.
(...skipping 22 matching lines...) Expand all
180 public: 181 public:
181 DesktopMediaPickerViews(); 182 DesktopMediaPickerViews();
182 virtual ~DesktopMediaPickerViews(); 183 virtual ~DesktopMediaPickerViews();
183 184
184 void NotifyDialogResult(DesktopMediaID source); 185 void NotifyDialogResult(DesktopMediaID source);
185 186
186 // DesktopMediaPicker overrides. 187 // DesktopMediaPicker overrides.
187 virtual void Show(gfx::NativeWindow context, 188 virtual void Show(gfx::NativeWindow context,
188 gfx::NativeWindow parent, 189 gfx::NativeWindow parent,
189 const string16& app_name, 190 const string16& app_name,
190 scoped_ptr<DesktopMediaPickerModel> model, 191 scoped_ptr<DesktopMediaList> media_list,
191 const DoneCallback& done_callback) OVERRIDE; 192 const DoneCallback& done_callback) OVERRIDE;
192 193
193 private: 194 private:
194 DoneCallback callback_; 195 DoneCallback callback_;
195 196
196 // The |dialog_| is owned by the corresponding views::Widget instance. 197 // The |dialog_| is owned by the corresponding views::Widget instance.
197 // When DesktopMediaPickerViews is destroyed the |dialog_| is destroyed 198 // When DesktopMediaPickerViews is destroyed the |dialog_| is destroyed
198 // asynchronously by closing the widget. 199 // asynchronously by closing the widget.
199 DesktopMediaPickerDialogView* dialog_; 200 DesktopMediaPickerDialogView* dialog_;
200 201
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 RequestFocus(); 301 RequestFocus();
301 } else if (event.GetClickCount() == 2) { 302 } else if (event.GetClickCount() == 2) {
302 RequestFocus(); 303 RequestFocus();
303 parent_->OnDoubleClick(); 304 parent_->OnDoubleClick();
304 } 305 }
305 return true; 306 return true;
306 } 307 }
307 308
308 DesktopMediaListView::DesktopMediaListView( 309 DesktopMediaListView::DesktopMediaListView(
309 DesktopMediaPickerDialogView* parent, 310 DesktopMediaPickerDialogView* parent,
310 scoped_ptr<DesktopMediaPickerModel> model) 311 scoped_ptr<DesktopMediaList> media_list)
311 : parent_(parent), 312 : parent_(parent),
312 model_(model.Pass()) { 313 media_list_(media_list.Pass()) {
313 model_->SetThumbnailSize(gfx::Size(kThumbnailWidth, kThumbnailHeight)); 314 media_list_->SetThumbnailSize(gfx::Size(kThumbnailWidth, kThumbnailHeight));
314 } 315 }
315 316
316 DesktopMediaListView::~DesktopMediaListView() {} 317 DesktopMediaListView::~DesktopMediaListView() {}
317 318
318 void DesktopMediaListView::StartUpdating( 319 void DesktopMediaListView::StartUpdating(
319 content::DesktopMediaID::Id dialog_window_id) { 320 content::DesktopMediaID::Id dialog_window_id) {
320 model_->SetViewDialogWindowId(dialog_window_id); 321 media_list_->SetViewDialogWindowId(dialog_window_id);
321 model_->StartUpdating(this); 322 media_list_->StartUpdating(this);
322 } 323 }
323 324
324 void DesktopMediaListView::OnSelectionChanged() { 325 void DesktopMediaListView::OnSelectionChanged() {
325 parent_->OnSelectionChanged(); 326 parent_->OnSelectionChanged();
326 } 327 }
327 328
328 void DesktopMediaListView::OnDoubleClick() { 329 void DesktopMediaListView::OnDoubleClick() {
329 parent_->OnDoubleClick(); 330 parent_->OnDoubleClick();
330 } 331 }
331 332
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 GetFocusManager()->SetFocusedView(new_selected); 408 GetFocusManager()->SetFocusedView(new_selected);
408 } 409 }
409 410
410 return true; 411 return true;
411 } 412 }
412 413
413 return false; 414 return false;
414 } 415 }
415 416
416 void DesktopMediaListView::OnSourceAdded(int index) { 417 void DesktopMediaListView::OnSourceAdded(int index) {
417 const DesktopMediaPickerModel::Source& source = model_->source(index); 418 const DesktopMediaList::Source& source = media_list_->GetSource(index);
418 DesktopMediaSourceView* source_view = 419 DesktopMediaSourceView* source_view =
419 new DesktopMediaSourceView(this, source.id); 420 new DesktopMediaSourceView(this, source.id);
420 source_view->SetName(source.name); 421 source_view->SetName(source.name);
421 source_view->SetGroup(kDesktopMediaSourceViewGroupId); 422 source_view->SetGroup(kDesktopMediaSourceViewGroupId);
422 AddChildViewAt(source_view, index); 423 AddChildViewAt(source_view, index);
423 424
424 PreferredSizeChanged(); 425 PreferredSizeChanged();
425 } 426 }
426 427
427 void DesktopMediaListView::OnSourceRemoved(int index) { 428 void DesktopMediaListView::OnSourceRemoved(int index) {
428 DesktopMediaSourceView* view = 429 DesktopMediaSourceView* view =
429 static_cast<DesktopMediaSourceView*>(child_at(index)); 430 static_cast<DesktopMediaSourceView*>(child_at(index));
430 DCHECK(view); 431 DCHECK(view);
431 DCHECK_EQ(view->GetClassName(), kDesktopMediaSourceViewClassName); 432 DCHECK_EQ(view->GetClassName(), kDesktopMediaSourceViewClassName);
432 bool was_selected = view->is_selected(); 433 bool was_selected = view->is_selected();
433 RemoveChildView(view); 434 RemoveChildView(view);
434 delete view; 435 delete view;
435 436
436 if (was_selected) 437 if (was_selected)
437 OnSelectionChanged(); 438 OnSelectionChanged();
438 439
439 PreferredSizeChanged(); 440 PreferredSizeChanged();
440 } 441 }
441 442
442 void DesktopMediaListView::OnSourceNameChanged(int index) { 443 void DesktopMediaListView::OnSourceNameChanged(int index) {
443 const DesktopMediaPickerModel::Source& source = model_->source(index); 444 const DesktopMediaList::Source& source = media_list_->GetSource(index);
444 DesktopMediaSourceView* source_view = 445 DesktopMediaSourceView* source_view =
445 static_cast<DesktopMediaSourceView*>(child_at(index)); 446 static_cast<DesktopMediaSourceView*>(child_at(index));
446 source_view->SetName(source.name); 447 source_view->SetName(source.name);
447 } 448 }
448 449
449 void DesktopMediaListView::OnSourceThumbnailChanged(int index) { 450 void DesktopMediaListView::OnSourceThumbnailChanged(int index) {
450 const DesktopMediaPickerModel::Source& source = model_->source(index); 451 const DesktopMediaList::Source& source = media_list_->GetSource(index);
451 DesktopMediaSourceView* source_view = 452 DesktopMediaSourceView* source_view =
452 static_cast<DesktopMediaSourceView*>(child_at(index)); 453 static_cast<DesktopMediaSourceView*>(child_at(index));
453 source_view->SetThumbnail(source.thumbnail); 454 source_view->SetThumbnail(source.thumbnail);
454 } 455 }
455 456
456 DesktopMediaPickerDialogView::DesktopMediaPickerDialogView( 457 DesktopMediaPickerDialogView::DesktopMediaPickerDialogView(
457 gfx::NativeWindow context, 458 gfx::NativeWindow context,
458 gfx::NativeWindow parent_window, 459 gfx::NativeWindow parent_window,
459 DesktopMediaPickerViews* parent, 460 DesktopMediaPickerViews* parent,
460 const string16& app_name, 461 const string16& app_name,
461 scoped_ptr<DesktopMediaPickerModel> model) 462 scoped_ptr<DesktopMediaList> media_list)
462 : parent_(parent), 463 : parent_(parent),
463 app_name_(app_name), 464 app_name_(app_name),
464 label_(new views::Label()), 465 label_(new views::Label()),
465 scroll_view_(views::ScrollView::CreateScrollViewWithBorder()), 466 scroll_view_(views::ScrollView::CreateScrollViewWithBorder()),
466 list_view_(new DesktopMediaListView(this, model.Pass())) { 467 list_view_(new DesktopMediaListView(this, media_list.Pass())) {
467 label_->SetText( 468 label_->SetText(
468 l10n_util::GetStringFUTF16(IDS_DESKTOP_MEDIA_PICKER_TEXT, app_name_)); 469 l10n_util::GetStringFUTF16(IDS_DESKTOP_MEDIA_PICKER_TEXT, app_name_));
469 label_->SetMultiLine(true); 470 label_->SetMultiLine(true);
470 label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 471 label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
471 AddChildView(label_); 472 AddChildView(label_);
472 473
473 scroll_view_->SetContents(list_view_); 474 scroll_view_->SetContents(list_view_);
474 AddChildView(scroll_view_); 475 AddChildView(scroll_view_);
475 476
476 DialogDelegate::CreateDialogWidget(this, context, parent_window); 477 DialogDelegate::CreateDialogWidget(this, context, parent_window);
477 478
478 // DesktopMediaPickerModel needs to know the ID of the picker window which 479 // DesktopMediaList needs to know the ID of the picker window which
479 // matches the ID it gets from the OS. Depending on the OS and configuration 480 // matches the ID it gets from the OS. Depending on the OS and configuration
480 // we get this ID differently. 481 // we get this ID differently.
481 // 482 //
482 // TODO(sergeyu): Update this code when Ash-specific window capturer is 483 // TODO(sergeyu): Update this code when Ash-specific window capturer is
483 // implemented. Currently this code will always get native windows ID 484 // implemented. Currently this code will always get native windows ID
484 // which is not what we need in Ash. http://crbug.com/295102 485 // which is not what we need in Ash. http://crbug.com/295102
485 content::DesktopMediaID::Id dialog_window_id; 486 content::DesktopMediaID::Id dialog_window_id;
486 487
487 #if defined(OS_WIN) 488 #if defined(OS_WIN)
488 dialog_window_id = reinterpret_cast<content::DesktopMediaID::Id>( 489 dialog_window_id = reinterpret_cast<content::DesktopMediaID::Id>(
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 DesktopMediaPickerViews::~DesktopMediaPickerViews() { 577 DesktopMediaPickerViews::~DesktopMediaPickerViews() {
577 if (dialog_) { 578 if (dialog_) {
578 dialog_->DetachParent(); 579 dialog_->DetachParent();
579 dialog_->GetWidget()->Close(); 580 dialog_->GetWidget()->Close();
580 } 581 }
581 } 582 }
582 583
583 void DesktopMediaPickerViews::Show(gfx::NativeWindow context, 584 void DesktopMediaPickerViews::Show(gfx::NativeWindow context,
584 gfx::NativeWindow parent, 585 gfx::NativeWindow parent,
585 const string16& app_name, 586 const string16& app_name,
586 scoped_ptr<DesktopMediaPickerModel> model, 587 scoped_ptr<DesktopMediaList> media_list,
587 const DoneCallback& done_callback) { 588 const DoneCallback& done_callback) {
588 callback_ = done_callback; 589 callback_ = done_callback;
589 dialog_ = new DesktopMediaPickerDialogView( 590 dialog_ = new DesktopMediaPickerDialogView(
590 context, parent, this, app_name, model.Pass()); 591 context, parent, this, app_name, media_list.Pass());
591 } 592 }
592 593
593 void DesktopMediaPickerViews::NotifyDialogResult( 594 void DesktopMediaPickerViews::NotifyDialogResult(
594 DesktopMediaID source) { 595 DesktopMediaID source) {
595 // Once this method is called the |dialog_| will close and destroy itself. 596 // Once this method is called the |dialog_| will close and destroy itself.
596 dialog_->DetachParent(); 597 dialog_->DetachParent();
597 dialog_ = NULL; 598 dialog_ = NULL;
598 599
599 DCHECK(!callback_.is_null()); 600 DCHECK(!callback_.is_null());
600 601
601 // Notify the |callback_| asynchronously because it may need to destroy 602 // Notify the |callback_| asynchronously because it may need to destroy
602 // DesktopMediaPicker. 603 // DesktopMediaPicker.
603 content::BrowserThread::PostTask( 604 content::BrowserThread::PostTask(
604 content::BrowserThread::UI, FROM_HERE, 605 content::BrowserThread::UI, FROM_HERE,
605 base::Bind(callback_, source)); 606 base::Bind(callback_, source));
606 callback_.Reset(); 607 callback_.Reset();
607 } 608 }
608 609
609 } // namespace 610 } // namespace
610 611
611 // static 612 // static
612 scoped_ptr<DesktopMediaPicker> DesktopMediaPicker::Create() { 613 scoped_ptr<DesktopMediaPicker> DesktopMediaPicker::Create() {
613 return scoped_ptr<DesktopMediaPicker>(new DesktopMediaPickerViews()); 614 return scoped_ptr<DesktopMediaPicker>(new DesktopMediaPickerViews());
614 } 615 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/media_picker/desktop_media_picker_item.mm ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698