diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-12 20:03:08 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-12 20:03:08 +0000 |
commit | b949f1110dea9e220706cbe72ede4118d78308f0 (patch) | |
tree | 16627db33014921df4287548a54caac852dd76eb /chrome/browser/shell_dialogs.h | |
parent | 3e1302168c2b16d744486172b55dc48114baac7e (diff) | |
download | chromium_src-b949f1110dea9e220706cbe72ede4118d78308f0.zip chromium_src-b949f1110dea9e220706cbe72ede4118d78308f0.tar.gz chromium_src-b949f1110dea9e220706cbe72ede4118d78308f0.tar.bz2 |
Refactoring; switch the |filter| parameter into something that is more amenable to cross-platform implementation.
BUG=9852
Review URL: http://codereview.chromium.org/63093
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13573 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/shell_dialogs.h')
-rw-r--r-- | chrome/browser/shell_dialogs.h | 49 |
1 files changed, 30 insertions, 19 deletions
diff --git a/chrome/browser/shell_dialogs.h b/chrome/browser/shell_dialogs.h index 4975395..4285364 100644 --- a/chrome/browser/shell_dialogs.h +++ b/chrome/browser/shell_dialogs.h @@ -15,9 +15,6 @@ class ChromeFont; -// Helpers to show certain types of Windows shell dialogs in a way that doesn't -// block the UI of the entire app. - // A base class for shell dialogs. class BaseShellDialog { public: @@ -71,36 +68,50 @@ class SelectFileDialog // object will have no reference (refcount is 0). static SelectFileDialog* Create(Listener* listener); + // Holds information about allowed extensions on a file save dialog. + // |extensions| is a list of allowed extensions. For example, it might be + // { { "htm", "html" }, { "txt" } }. Only pass more than one extension + // in the inner vector if the extensions are equivalent. Do NOT include + // leading periods. + // |extension_description_overrides| overrides the system descriptions of the + // specified extensions. Entries correspond to |extensions|; if left blank + // the system descriptions will be used. + // |include_all_files| specifies whether all files (e.g. *.*) will be allowed + // in the file filtering. + struct FileTypeInfo { + std::vector<std::vector<FilePath::StringType> > extensions; + std::vector<string16> extension_description_overrides; + bool include_all_files; + }; + // Selects a file. This will start displaying the dialog box. This will also // block the calling window until the dialog box is complete. The listener // associated with this object will be notified when the selection is // complete. // |type| is the type of file dialog to be shown, see Type enumeration above. // |title| is the title to be displayed in the dialog. If this string is - // empty, the default title is used. + // empty, the default title is used. // |default_path| is the default path and suggested file name to be shown in - // the dialog. This only works for SELECT_SAVEAS_FILE and SELECT_OPEN_FILE. - // Can be an empty string to indicate Windows should choose the default to - // show. - // |filter| is a null (\0) separated list of alternating filter description - // and filters and terminated with two nulls. - // |filter_index| is the 1-based index into the filter list in |filter|. - // Specify 0 if you don't need filters, or if you only need the default - // (first filter) behavior. - // |owning_window| is the window the dialog is modal to, or NULL for a - // modeless dialog. + // the dialog. This only works for SELECT_SAVEAS_FILE and SELECT_OPEN_FILE. + // Can be an empty string to indicate the platform default. + // |file_types| holds the infomation about the file types allowed. Pass NULL + // to get no special behavior + // |file_type_index| is the 1-based index into the file type list in + // |file_types|. Specify 0 if you don't need to specify extension behavior. // |default_extension| is the default extension to add to the file if the - // user doesn't type one. This should NOT include the '.'. If you specify - // this you must also specify a filter. + // user doesn't type one. This should NOT include the '.'. On Windows, if + // you specify this you must also specify |file_types|. + // |owning_window| is the window the dialog is modal to, or NULL for a + // modeless dialog. // |params| is data from the calling context which will be passed through to - // the listener. Can be NULL. + // the listener. Can be NULL. // NOTE: only one instance of any shell dialog can be shown per owning_window // at a time (for obvious reasons). virtual void SelectFile(Type type, const string16& title, const FilePath& default_path, - const std::wstring& filter, - int filter_index, + const FileTypeInfo* file_types, + int file_type_index, const FilePath::StringType& default_extension, gfx::NativeWindow owning_window, void* params) = 0; |