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

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: fix test 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
« no previous file with comments | « chrome/browser/ui/views/extensions/media_galleries_dialog_views.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..09eded3582e9416b245fda849633654548c24b06
--- /dev/null
+++ b/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc
@@ -0,0 +1,206 @@
+// 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.
+#if defined(CROS_FONTS_USING_BCI)
+const int kHeadingFontSizeDelta = 0;
+#else
+const int kHeadingFontSizeDelta = 1;
+#endif
+
+const int kContentWidth = 450;
+
+} // namespace
+
+MediaGalleriesDialogViews::MediaGalleriesDialogViews(
+ MediaGalleriesDialogController* controller)
+ : controller_(controller),
+ window_(NULL),
+ contents_(new views::View()),
+ checkbox_container_(NULL),
+ add_gallery_(NULL),
+ confirm_available_(false),
+ accepted_(false) {
+ InitChildViews();
+
+ // Ownership of |contents_| is handed off by this call. |window_| will take
+ // care of deleting itself after calling DeleteDelegate().
+ window_ = new ConstrainedWindowViews(controller->tab_contents(), this);
+}
+
+MediaGalleriesDialogViews::~MediaGalleriesDialogViews() {}
+
+void MediaGalleriesDialogViews::InitChildViews() {
+ // Layout.
+ views::GridLayout* layout = new views::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(views::GridLayout::LEADING,
+ views::GridLayout::LEADING,
+ 1,
+ views::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 views::BoxLayout(views::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) {
+ 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) {
+ // 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);
+ if (iter != checkbox_map_.end()) {
+ iter->second->SetChecked(permitted);
+ return false;
+ }
+
+ views::Checkbox* checkbox = new views::Checkbox(gallery->display_name);
+ checkbox->set_listener(this);
+ checkbox->SetTooltipText(gallery->path.LossyDisplayName());
+ checkbox_container_->AddChildView(checkbox);
+ checkbox->SetChecked(permitted);
+ checkbox_map_[gallery] = checkbox;
+
+ return true;
+}
+
+void MediaGalleriesDialogViews::DeleteDelegate() {
+ controller_->DialogFinished(accepted_);
+}
+
+views::Widget* MediaGalleriesDialogViews::GetWidget() {
+ return contents_->GetWidget();
+}
+
+const views::Widget* MediaGalleriesDialogViews::GetWidget() const {
+ return contents_->GetWidget();
+}
+
+views::View* MediaGalleriesDialogViews::GetContentsView() {
+ return contents_;
+}
+
+string16 MediaGalleriesDialogViews::GetDialogButtonLabel(
+ ui::DialogButton button) const {
+ return l10n_util::GetStringUTF16(button == ui::DIALOG_BUTTON_OK ?
+ IDS_MEDIA_GALLERIES_DIALOG_CONFIRM :
+ IDS_MEDIA_GALLERIES_DIALOG_CANCEL);
+}
+
+bool MediaGalleriesDialogViews::IsDialogButtonEnabled(
+ ui::DialogButton button) const {
+ return button != ui::DIALOG_BUTTON_OK || confirm_available_;
+}
+
+bool MediaGalleriesDialogViews::Cancel() {
+ return true;
+}
+
+bool MediaGalleriesDialogViews::Accept() {
+ accepted_ = true;
+ return true;
+}
+
+void MediaGalleriesDialogViews::ButtonPressed(views::Button* sender,
+ const ui::Event& event) {
+ confirm_available_ = true;
+ GetWidget()->client_view()->AsDialogClientView()->UpdateDialogButtons();
+
+ if (sender == add_gallery_) {
+ controller_->OnAddFolderClicked();
+ return;
+ }
+
+ for (CheckboxMap::iterator iter = checkbox_map_.begin();
+ iter != checkbox_map_.end(); ++iter) {
+ if (sender == iter->second) {
+ controller_->GalleryToggled(
+ iter->first, static_cast<views::Checkbox*>(sender)->checked());
+ return;
+ }
+ }
+
+ NOTREACHED();
+}
+
+// MediaGalleriesDialogViewsController -----------------------------------------
+
+// static
+MediaGalleriesDialog* MediaGalleriesDialog::Create(
+ MediaGalleriesDialogController* controller) {
+ return new MediaGalleriesDialogViews(controller);
+}
+
+} // namespace chrome
« no previous file with comments | « chrome/browser/ui/views/extensions/media_galleries_dialog_views.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698