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 |
index 0eb28901cba2c586dd7f52e4293c833957d44a95..20b38a45199152915488910ffa9b186a84b2cd92 100644 |
--- a/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc |
+++ b/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc |
@@ -16,6 +16,7 @@ |
#include "ui/native_theme/native_theme.h" |
#include "ui/views/border.h" |
#include "ui/views/controls/button/checkbox.h" |
+#include "ui/views/controls/button/image_button.h" |
#include "ui/views/controls/button/label_button.h" |
#include "ui/views/controls/label.h" |
#include "ui/views/controls/menu/menu_runner.h" |
@@ -62,15 +63,12 @@ void ScrollableView::Layout() { |
} // namespace |
-typedef MediaGalleriesDialogController::GalleryPermissionsVector |
- GalleryPermissionsVector; |
- |
MediaGalleriesDialogViews::MediaGalleriesDialogViews( |
MediaGalleriesDialogController* controller) |
: controller_(controller), |
window_(NULL), |
contents_(new views::View()), |
- add_gallery_button_(NULL), |
+ auxilliary_button_(NULL), |
confirm_available_(false), |
accepted_(false) { |
InitChildViews(); |
@@ -100,6 +98,8 @@ MediaGalleriesDialogViews::~MediaGalleriesDialogViews() { |
void MediaGalleriesDialogViews::InitChildViews() { |
// Outer dialog layout. |
contents_->RemoveAllChildViews(true); |
+ checkbox_map_.clear(); |
+ |
int dialog_content_width = views::Widget::GetLocalizedContentsWidth( |
IDS_MEDIA_GALLERIES_DIALOG_CONTENT_WIDTH_CHARS); |
views::GridLayout* layout = views::GridLayout::CreatePanel(contents_); |
@@ -136,43 +136,36 @@ void MediaGalleriesDialogViews::InitChildViews() { |
views::kRelatedControlVerticalSpacing, |
0)); |
- // Add attached galleries checkboxes. |
- checkbox_map_.clear(); |
- GalleryPermissionsVector permissions = controller_->AttachedPermissions(); |
- for (GalleryPermissionsVector::const_iterator iter = permissions.begin(); |
- iter != permissions.end(); ++iter) { |
- int spacing = 0; |
- if (iter + 1 == permissions.end()) |
- spacing = views::kRelatedControlSmallVerticalSpacing; |
- AddOrUpdateGallery(*iter, scroll_container, spacing); |
- } |
+ std::vector<base::string16> section_headers = |
+ controller_->GetSectionHeaders(); |
+ for (size_t i = 0; i < section_headers.size(); i++) { |
+ MediaGalleriesDialogController::Entries entries = |
+ controller_->GetSectionEntries(i); |
+ |
+ // Header and separator line. |
+ if (!section_headers[i].empty() && !entries.empty()) { |
+ views::Separator* separator = new views::Separator( |
+ views::Separator::HORIZONTAL); |
+ scroll_container->AddChildView(separator); |
+ |
+ views::Label* header = new views::Label(section_headers[i]); |
+ header->SetMultiLine(true); |
+ header->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
+ header->SetBorder(views::Border::CreateEmptyBorder( |
+ views::kRelatedControlVerticalSpacing, |
+ views::kPanelHorizMargin, |
+ views::kRelatedControlVerticalSpacing, |
+ 0)); |
+ scroll_container->AddChildView(header); |
+ } |
- GalleryPermissionsVector unattached_permissions = |
- controller_->UnattachedPermissions(); |
- |
- if (!unattached_permissions.empty()) { |
- // Separator line. |
- views::Separator* separator = new views::Separator( |
- views::Separator::HORIZONTAL); |
- scroll_container->AddChildView(separator); |
- |
- // Unattached locations section. |
- views::Label* unattached_text = new views::Label( |
- controller_->GetUnattachedLocationsHeader()); |
- unattached_text->SetMultiLine(true); |
- unattached_text->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
- unattached_text->SetBorder( |
- views::Border::CreateEmptyBorder(views::kRelatedControlVerticalSpacing, |
- views::kPanelHorizMargin, |
- views::kRelatedControlVerticalSpacing, |
- 0)); |
- scroll_container->AddChildView(unattached_text); |
- |
- // Add unattached galleries checkboxes. |
- for (GalleryPermissionsVector::const_iterator iter = |
- unattached_permissions.begin(); |
- iter != unattached_permissions.end(); ++iter) { |
- AddOrUpdateGallery(*iter, scroll_container, 0); |
+ // Checkboxes. |
+ MediaGalleriesDialogController::Entries::const_iterator iter; |
+ for (iter = entries.begin(); iter != entries.end(); ++iter) { |
+ int spacing = 0; |
+ if (iter + 1 == entries.end()) |
+ spacing = views::kRelatedControlSmallVerticalSpacing; |
+ AddOrUpdateGallery(*iter, scroll_container, spacing); |
} |
} |
@@ -196,30 +189,33 @@ void MediaGalleriesDialogViews::UpdateGalleries() { |
} |
bool MediaGalleriesDialogViews::AddOrUpdateGallery( |
- const MediaGalleriesDialogController::GalleryPermission& gallery, |
+ const MediaGalleriesDialogController::Entry& gallery, |
views::View* container, |
int trailing_vertical_space) { |
base::string16 label = gallery.pref_info.GetGalleryDisplayName(); |
base::string16 tooltip_text = gallery.pref_info.GetGalleryTooltip(); |
base::string16 details = gallery.pref_info.GetGalleryAdditionalDetails(); |
+ bool show_folder_viewer = controller_->ShowFolderViewer(gallery); |
- CheckboxMap::iterator iter = checkbox_map_.find(gallery.gallery_id); |
+ CheckboxMap::iterator iter = checkbox_map_.find(gallery.pref_info.pref_id); |
if (iter != checkbox_map_.end()) { |
views::Checkbox* checkbox = iter->second->checkbox(); |
- checkbox->SetChecked(gallery.allowed); |
+ checkbox->SetChecked(gallery.selected); |
checkbox->SetText(label); |
checkbox->SetTooltipText(tooltip_text); |
iter->second->secondary_text()->SetText(details); |
iter->second->secondary_text()->SetVisible(details.length() > 0); |
+ iter->second->folder_viewer_button()->SetVisible(show_folder_viewer); |
return false; |
} |
MediaGalleryCheckboxView* gallery_view = |
- new MediaGalleryCheckboxView(label, tooltip_text, details, false, |
- trailing_vertical_space, this, this); |
- gallery_view->checkbox()->SetChecked(gallery.allowed); |
+ new MediaGalleryCheckboxView(label, tooltip_text, details, |
+ show_folder_viewer, trailing_vertical_space, |
+ this, this); |
+ gallery_view->checkbox()->SetChecked(gallery.selected); |
container->AddChildView(gallery_view); |
- checkbox_map_[gallery.gallery_id] = gallery_view; |
+ checkbox_map_[gallery.pref_info.pref_id] = gallery_view; |
return true; |
} |
@@ -246,9 +242,9 @@ views::View* MediaGalleriesDialogViews::GetContentsView() { |
base::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); |
+ if (button == ui::DIALOG_BUTTON_OK) |
+ return controller_->GetAcceptButtonText(); |
+ return l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_DIALOG_CANCEL); |
} |
bool MediaGalleriesDialogViews::IsDialogButtonEnabled( |
@@ -265,11 +261,13 @@ ui::ModalType MediaGalleriesDialogViews::GetModalType() const { |
} |
views::View* MediaGalleriesDialogViews::CreateExtraView() { |
- DCHECK(!add_gallery_button_); |
- add_gallery_button_ = new views::LabelButton(this, |
- l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_DIALOG_ADD_GALLERY)); |
- add_gallery_button_->SetStyle(views::Button::STYLE_BUTTON); |
- return add_gallery_button_; |
+ DCHECK(!auxilliary_button_); |
+ base::string16 button_label = controller_->GetAuxilliaryButtonText(); |
+ if (!button_label.empty()) { |
+ auxilliary_button_ = new views::LabelButton(this, button_label); |
+ auxilliary_button_->SetStyle(views::Button::STYLE_BUTTON); |
+ } |
+ return auxilliary_button_; |
} |
bool MediaGalleriesDialogViews::Cancel() { |
@@ -289,16 +287,20 @@ void MediaGalleriesDialogViews::ButtonPressed(views::Button* sender, |
if (ControllerHasWebContents()) |
GetWidget()->client_view()->AsDialogClientView()->UpdateDialogButtons(); |
- if (sender == add_gallery_button_) { |
- controller_->OnAddFolderClicked(); |
+ if (sender == auxilliary_button_) { |
+ controller_->OnAuxilliaryButtonClicked(); |
return; |
} |
for (CheckboxMap::const_iterator iter = checkbox_map_.begin(); |
iter != checkbox_map_.end(); ++iter) { |
if (sender == iter->second->checkbox()) { |
- controller_->DidToggleGallery(iter->first, |
- iter->second->checkbox()->checked()); |
+ controller_->DidToggleEntry(iter->first, |
+ iter->second->checkbox()->checked()); |
+ return; |
+ } |
+ if (sender == iter->second->folder_viewer_button()) { |
+ controller_->DidClickOpenFolderViewer(iter->first); |
return; |
} |
} |
@@ -319,7 +321,7 @@ void MediaGalleriesDialogViews::ShowContextMenuForView( |
void MediaGalleriesDialogViews::ShowContextMenu(const gfx::Point& point, |
ui::MenuSourceType source_type, |
- GalleryDialogId id) { |
+ MediaGalleryPrefId id) { |
context_menu_runner_.reset(new views::MenuRunner( |
controller_->GetContextMenu(id))); |