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

Unified Diff: chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc

Issue 10828166: media galleries config dialog on views (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync and test fixed(?) Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc
diff --git a/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc b/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7f10e299ee2ebb7673cae55fdba379e3866ec75f
--- /dev/null
+++ b/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc
@@ -0,0 +1,215 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/views/extensions/media_galleries_dialog_views.h"
+
+#include "chrome/browser/ui/views/constrained_window_views.h"
+#include "grit/generated_resources.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/views/controls/button/checkbox.h"
+#include "ui/views/controls/button/text_button.h"
+#include "ui/views/controls/label.h"
+#include "ui/views/layout/box_layout.h"
+#include "ui/views/layout/grid_layout.h"
+#include "ui/views/layout/layout_constants.h"
+#include "ui/views/view.h"
+
+namespace chrome {
+
+typedef MediaGalleriesDialogController::KnownGalleryPermissions
+ GalleryPermissions;
+
+namespace {
+
+// Heading font size correction.
Peter Kasting 2012/08/11 23:09:14 Nit: Can you say more here? I have no idea what t
Evan Stade 2012/08/13 23:10:30 There are a couple other places which use this pat
Peter Kasting 2012/08/14 18:44:01 I'm following up on this separately with the CrOS
+#if defined(CROS_FONTS_USING_BCI)
+const int kHeadingFontSizeDelta = 0;
+#else
+const int kHeadingFontSizeDelta = 1;
+#endif
+
+const int kContentWidth = 450;
+
+} // namespace
+
+using views::BoxLayout;
+using views::GridLayout;
Peter Kasting 2012/08/11 23:09:14 Nit: We normally avoid using statements unless the
Evan Stade 2012/08/13 23:10:30 Done.
+
+MediaGalleriesDialogViews::MediaGalleriesDialogViews(
+ MediaGalleriesDialogController* controller)
+ : controller_(controller),
+ window_(NULL),
+ contents_(new views::View()),
Peter Kasting 2012/08/11 23:09:14 Who owns this?
Evan Stade 2012/08/13 23:10:30 its parent View (a RootView)
+ confirm_available_(false),
+ accepted_(false) {
+ InitChildViews();
+
+ window_ = new ConstrainedWindowViews(controller->tab_contents(), this);
Peter Kasting 2012/08/11 23:09:14 Who owns this?
Evan Stade 2012/08/13 23:10:30 the TabContents (first arg)
+}
+
+MediaGalleriesDialogViews::~MediaGalleriesDialogViews() {}
+
+void MediaGalleriesDialogViews::InitChildViews() {
+ // Layout.
+ GridLayout* layout = new GridLayout(contents_);
+ layout->SetInsets(views::kPanelVertMargin, views::kPanelHorizMargin,
+ 0, views::kPanelHorizMargin);
+ int column_set_id = 0;
+ views::ColumnSet* columns = layout->AddColumnSet(column_set_id);
+ columns->AddColumn(GridLayout::LEADING,
+ GridLayout::LEADING,
+ 1,
+ GridLayout::FIXED,
+ kContentWidth,
+ 0);
+ contents_->SetLayoutManager(layout);
+
+ // Header text.
+ views::Label* header = new views::Label(controller_->GetHeader());
+ header->SetFont(header->font().DeriveFont(kHeadingFontSizeDelta,
+ gfx::Font::BOLD));
+ header->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
+ layout->StartRow(0, column_set_id);
+ layout->AddView(header);
+
+ // Message text.
+ views::Label* subtext = new views::Label(controller_->GetSubtext());
+ subtext->SetMultiLine(true);
+ subtext->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
+ layout->StartRowWithPadding(0, column_set_id,
+ 0, views::kRelatedControlVerticalSpacing);
+ layout->AddView(subtext);
+
+ // Checkboxes.
+ checkbox_container_ = new views::View();
+ checkbox_container_->SetLayoutManager(
+ new BoxLayout(BoxLayout::kVertical,
+ views::kPanelHorizIndentation,
+ 0,
+ views::kRelatedControlSmallVerticalSpacing));
+ layout->StartRowWithPadding(0, column_set_id,
+ 0, views::kRelatedControlVerticalSpacing);
+ layout->AddView(checkbox_container_);
+
+ const GalleryPermissions& permissions = controller_->permissions();
+ for (GalleryPermissions::const_iterator iter = permissions.begin();
+ iter != permissions.end(); iter++) {
Peter Kasting 2012/08/11 23:09:14 Nit: Preincrement
Evan Stade 2012/08/13 23:10:30 Done.
+ AddOrUpdateGallery(&iter->second.pref_info, iter->second.allowed);
+ if (iter->second.allowed)
+ confirm_available_ = true;
+ }
+
+ // Add Gallery button.
+ add_gallery_ = new views::NativeTextButton(
+ this, l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_DIALOG_ADD_GALLERY));
+ layout->StartRowWithPadding(0, column_set_id,
+ 0, views::kRelatedControlVerticalSpacing);
+ layout->AddView(add_gallery_);
+}
+
+void MediaGalleriesDialogViews::UpdateGallery(
+ const MediaGalleryPrefInfo* gallery, bool permitted) {
Peter Kasting 2012/08/11 23:09:14 Nit: One arg per line (2 places)
Evan Stade 2012/08/13 23:10:30 Done.
+ // After adding a new checkbox, we have to update the size of the dialog.
+ if (AddOrUpdateGallery(gallery, permitted))
+ GetWidget()->SetSize(GetWidget()->non_client_view()->GetPreferredSize());
+}
+
+bool MediaGalleriesDialogViews::AddOrUpdateGallery(
+ const MediaGalleryPrefInfo* gallery, bool permitted) {
+ CheckboxMap::iterator iter = checkbox_map_.find(gallery);
+
+ bool new_checkbox = false;
Peter Kasting 2012/08/11 23:09:14 Nit: How about: CheckboxMap::iterator iter = ch
Evan Stade 2012/08/13 23:10:30 Done.
+ views::Checkbox* checkbox = NULL;
+ if (iter != checkbox_map_.end()) {
+ checkbox = iter->second;
+ } else {
+ new_checkbox = true;
+ checkbox = new views::Checkbox(gallery->display_name);
+ checkbox->set_listener(this);
+ checkbox->SetTooltipText(gallery->path.LossyDisplayName());
Evan Stade 2012/08/10 21:58:13 Sailesh: note this (I haven't yet done this for Li
sail 2012/08/10 22:09:04 Sounds good, will add to Cocoa.
+ checkbox_container_->AddChildView(checkbox);
+ checkbox_map_[gallery] = checkbox;
+ }
+
+ checkbox->SetChecked(permitted);
+ return new_checkbox;
+}
+
+string16 MediaGalleriesDialogViews::GetDialogButtonLabel(
+ ui::DialogButton button) const {
+ if (button == ui::DIALOG_BUTTON_OK)
Peter Kasting 2012/08/11 23:09:14 Nit: Most places we just do: return l10n_util::
Evan Stade 2012/08/13 23:10:30 Done.
+ return l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_DIALOG_CONFIRM);
+
+ if (button == ui::DIALOG_BUTTON_CANCEL)
+ return l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_DIALOG_CANCEL);
+
+ return string16();
+}
+
+bool MediaGalleriesDialogViews::IsDialogButtonEnabled(
+ ui::DialogButton button) const {
+ return !(button == ui::DIALOG_BUTTON_OK && !confirm_available_);
Peter Kasting 2012/08/11 23:09:14 Nit: Please factor ! through, as nested !s make my
Evan Stade 2012/08/13 23:10:30 Done.
+}
+
+bool MediaGalleriesDialogViews::Cancel() {
+ return true;
+}
+
+bool MediaGalleriesDialogViews::Accept() {
+ accepted_ = true;
+ return true;
+}
+
+views::View* MediaGalleriesDialogViews::GetContentsView() {
+ return contents_;
+}
+
+views::Widget* MediaGalleriesDialogViews::GetWidget() {
+ return contents_->GetWidget();
+}
+
+const views::Widget* MediaGalleriesDialogViews::GetWidget() const {
+ return contents_->GetWidget();
+}
+
+void MediaGalleriesDialogViews::DeleteDelegate() {
+ controller_->DialogFinished(accepted_);
+}
+
+void MediaGalleriesDialogViews::ButtonPressed(views::Button* sender,
+ const ui::Event& event) {
+ EnableConfirm();
+
+ if (sender == add_gallery_) {
+ controller_->OnAddFolderClicked();
+ return;
+ }
+
+ for (CheckboxMap::iterator iter = checkbox_map_.begin();
+ iter != checkbox_map_.end(); ++iter) {
+ if (iter->second == sender) {
Peter Kasting 2012/08/11 23:09:14 Tiny nit: For consistency with conditional above,
Evan Stade 2012/08/13 23:10:30 Done.
+ controller_->GalleryToggled(
+ iter->first, static_cast<views::Checkbox*>(sender)->checked());
+ return;
+ }
+ }
+
+ NOTREACHED();
+ return;
Peter Kasting 2012/08/11 23:09:14 Nit: No need for return here
Evan Stade 2012/08/13 23:10:30 Done.
+}
+
+void MediaGalleriesDialogViews::EnableConfirm() {
Peter Kasting 2012/08/11 23:09:14 Nit: Any particular reason to factor this out into
Evan Stade 2012/08/13 23:10:30 Done. (I originally had it called twice.)
+ confirm_available_ = true;
+ GetWidget()->client_view()->AsDialogClientView()->UpdateDialogButtons();
+}
+
+// MediaGalleriesDialogViewsController -----------------------------------------
+
+// static
+MediaGalleriesDialog* MediaGalleriesDialog::Create(
+ MediaGalleriesDialogController* controller) {
+ return new MediaGalleriesDialogViews(controller);
+}
+
+} // namespace chrome

Powered by Google App Engine
This is Rietveld 408576698