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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_DIALOG_CONTROLLER_H_
6 #define CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_DIALOG_CONTROLLER_H_
10 #include "base/strings/string16.h"
11 #include "chrome/browser/media_galleries/media_galleries_preferences.h"
21 class MediaGalleriesDialogController
;
24 class MediaGalleriesDialog
{
26 virtual ~MediaGalleriesDialog();
28 // Tell the dialog to update its display list of galleries.
29 virtual void UpdateGalleries() = 0;
31 // Constructs a platform-specific dialog owned and controlled by |controller|.
32 static MediaGalleriesDialog
* Create(
33 MediaGalleriesDialogController
* controller
);
35 friend class TestMediaGalleriesAddScanResultsFunction
;
37 virtual void AcceptDialogForTesting() = 0;
40 // Multiple dialog controllers are based on this interface.
41 // Implementations of this controller interface are responsible for handling
42 // the logic of the dialog and interfacing with the model (i.e.,
43 // MediaGalleriesPreferences). It shows the dialog and owns itself.
44 class MediaGalleriesDialogController
{
47 Entry(const MediaGalleryPrefInfo
& pref_info
, bool selected
)
48 : pref_info(pref_info
),
53 MediaGalleryPrefInfo pref_info
;
57 typedef std::vector
<Entry
> Entries
;
59 // The title of the dialog view.
60 virtual base::string16
GetHeader() const = 0;
62 // Explanatory text directly below the title.
63 virtual base::string16
GetSubtext() const = 0;
65 // Initial state of whether the dialog's confirmation button will be enabled.
66 virtual bool IsAcceptAllowed() const = 0;
68 // Should the dialog present UI for the user to view the entry contents.
69 virtual bool ShouldShowFolderViewer(const Entry
& entry
) const = 0;
71 // The titles for different sections of entries. Empty hides the header.
72 virtual std::vector
<base::string16
> GetSectionHeaders() const = 0;
74 // Get the set of permissions for the |index|th section. The size of the
75 // vector returned from GetSectionHeaders() defines the number of sections.
76 virtual Entries
GetSectionEntries(size_t index
) const = 0;
78 // The text for an auxiliary button. Empty hides the button.
79 virtual base::string16
GetAuxiliaryButtonText() const = 0;
81 // Called when an auxiliary button is clicked.
82 virtual void DidClickAuxiliaryButton() = 0;
84 // An entry checkbox was toggled.
85 virtual void DidToggleEntry(MediaGalleryPrefId id
, bool selected
) = 0;
87 // A folder viewer button was clicked for one of the entries.
88 virtual void DidClickOpenFolderViewer(MediaGalleryPrefId id
) = 0;
90 // The forget command in the context menu was selected.
91 virtual void DidForgetEntry(MediaGalleryPrefId id
) = 0;
93 // The text for the accept button.
94 virtual base::string16
GetAcceptButtonText() const = 0;
96 // The dialog is being deleted.
97 virtual void DialogFinished(bool accepted
) = 0;
99 virtual ui::MenuModel
* GetContextMenu(MediaGalleryPrefId id
) = 0;
101 virtual content::WebContents
* WebContents() = 0;
104 MediaGalleriesDialogController();
105 virtual ~MediaGalleriesDialogController();
107 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogController
);
110 #endif // CHROME_BROWSER_MEDIA_GALLERIES_MEDIA_GALLERIES_DIALOG_CONTROLLER_H_