OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_H_ | 5 #ifndef UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_H_ |
6 #define UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_H_ | 6 #define UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 29 matching lines...) Expand all Loading... |
40 | 40 |
41 // An interface implemented by a Listener object wishing to know about the | 41 // An interface implemented by a Listener object wishing to know about the |
42 // the result of the Select File/Folder action. These callbacks must be | 42 // the result of the Select File/Folder action. These callbacks must be |
43 // re-entrant. | 43 // re-entrant. |
44 class SHELL_DIALOGS_EXPORT Listener { | 44 class SHELL_DIALOGS_EXPORT Listener { |
45 public: | 45 public: |
46 // Notifies the Listener that a file/folder selection has been made. The | 46 // Notifies the Listener that a file/folder selection has been made. The |
47 // file/folder path is in |path|. |params| is contextual passed to | 47 // file/folder path is in |path|. |params| is contextual passed to |
48 // SelectFile. |index| specifies the index of the filter passed to the | 48 // SelectFile. |index| specifies the index of the filter passed to the |
49 // the initial call to SelectFile. | 49 // the initial call to SelectFile. |
50 virtual void FileSelected(const FilePath& path, | 50 virtual void FileSelected(const base::FilePath& path, |
51 int index, void* params) = 0; | 51 int index, void* params) = 0; |
52 | 52 |
53 // Similar to FileSelected() but takes SelectedFileInfo instead of | 53 // Similar to FileSelected() but takes SelectedFileInfo instead of |
54 // FilePath. Used for passing extra information (ex. display name). | 54 // base::FilePath. Used for passing extra information (ex. display name). |
55 // | 55 // |
56 // If not overridden, calls FileSelected() with path from |file|. | 56 // If not overridden, calls FileSelected() with path from |file|. |
57 virtual void FileSelectedWithExtraInfo( | 57 virtual void FileSelectedWithExtraInfo( |
58 const ui::SelectedFileInfo& file, | 58 const ui::SelectedFileInfo& file, |
59 int index, | 59 int index, |
60 void* params); | 60 void* params); |
61 | 61 |
62 // Notifies the Listener that many files have been selected. The | 62 // Notifies the Listener that many files have been selected. The |
63 // files are in |files|. |params| is contextual passed to SelectFile. | 63 // files are in |files|. |params| is contextual passed to SelectFile. |
64 virtual void MultiFilesSelected( | 64 virtual void MultiFilesSelected( |
65 const std::vector<FilePath>& files, void* params) {} | 65 const std::vector<base::FilePath>& files, void* params) {} |
66 | 66 |
67 // Similar to MultiFilesSelected() but takes SelectedFileInfo instead of | 67 // Similar to MultiFilesSelected() but takes SelectedFileInfo instead of |
68 // FilePath. Used for passing extra information (ex. display name). | 68 // base::FilePath. Used for passing extra information (ex. display name). |
69 // | 69 // |
70 // If not overridden, calls MultiFilesSelected() with paths from |files|. | 70 // If not overridden, calls MultiFilesSelected() with paths from |files|. |
71 virtual void MultiFilesSelectedWithExtraInfo( | 71 virtual void MultiFilesSelectedWithExtraInfo( |
72 const std::vector<ui::SelectedFileInfo>& files, | 72 const std::vector<ui::SelectedFileInfo>& files, |
73 void* params); | 73 void* params); |
74 | 74 |
75 // Notifies the Listener that the file/folder selection was aborted (via | 75 // Notifies the Listener that the file/folder selection was aborted (via |
76 // the user canceling or closing the selection dialog box, for example). | 76 // the user canceling or closing the selection dialog box, for example). |
77 // |params| is contextual passed to SelectFile. | 77 // |params| is contextual passed to SelectFile. |
78 virtual void FileSelectionCanceled(void* params) {} | 78 virtual void FileSelectionCanceled(void* params) {} |
(...skipping 20 matching lines...) Expand all Loading... |
99 struct SHELL_DIALOGS_EXPORT FileTypeInfo { | 99 struct SHELL_DIALOGS_EXPORT FileTypeInfo { |
100 FileTypeInfo(); | 100 FileTypeInfo(); |
101 ~FileTypeInfo(); | 101 ~FileTypeInfo(); |
102 | 102 |
103 // A list of allowed extensions. For example, it might be | 103 // A list of allowed extensions. For example, it might be |
104 // | 104 // |
105 // { { "htm", "html" }, { "txt" } } | 105 // { { "htm", "html" }, { "txt" } } |
106 // | 106 // |
107 // Only pass more than one extension in the inner vector if the extensions | 107 // Only pass more than one extension in the inner vector if the extensions |
108 // are equivalent. Do NOT include leading periods. | 108 // are equivalent. Do NOT include leading periods. |
109 std::vector<std::vector<FilePath::StringType> > extensions; | 109 std::vector<std::vector<base::FilePath::StringType> > extensions; |
110 | 110 |
111 // Overrides the system descriptions of the specified extensions. Entries | 111 // Overrides the system descriptions of the specified extensions. Entries |
112 // correspond to |extensions|; if left blank the system descriptions will | 112 // correspond to |extensions|; if left blank the system descriptions will |
113 // be used. | 113 // be used. |
114 std::vector<string16> extension_description_overrides; | 114 std::vector<string16> extension_description_overrides; |
115 | 115 |
116 // Specifies whether there will be a filter added for all files (i.e. *.*). | 116 // Specifies whether there will be a filter added for all files (i.e. *.*). |
117 bool include_all_files; | 117 bool include_all_files; |
118 | 118 |
119 // Specifies whether the caller can support files/folders that are on Drive. | 119 // Specifies whether the caller can support files/folders that are on Drive. |
(...skipping 22 matching lines...) Expand all Loading... |
142 // user doesn't type one. This should NOT include the '.'. On Windows, if | 142 // user doesn't type one. This should NOT include the '.'. On Windows, if |
143 // you specify this you must also specify |file_types|. | 143 // you specify this you must also specify |file_types|. |
144 // |owning_window| is the window the dialog is modal to, or NULL for a | 144 // |owning_window| is the window the dialog is modal to, or NULL for a |
145 // modeless dialog. | 145 // modeless dialog. |
146 // |params| is data from the calling context which will be passed through to | 146 // |params| is data from the calling context which will be passed through to |
147 // the listener. Can be NULL. | 147 // the listener. Can be NULL. |
148 // NOTE: only one instance of any shell dialog can be shown per owning_window | 148 // NOTE: only one instance of any shell dialog can be shown per owning_window |
149 // at a time (for obvious reasons). | 149 // at a time (for obvious reasons). |
150 void SelectFile(Type type, | 150 void SelectFile(Type type, |
151 const string16& title, | 151 const string16& title, |
152 const FilePath& default_path, | 152 const base::FilePath& default_path, |
153 const FileTypeInfo* file_types, | 153 const FileTypeInfo* file_types, |
154 int file_type_index, | 154 int file_type_index, |
155 const FilePath::StringType& default_extension, | 155 const base::FilePath::StringType& default_extension, |
156 gfx::NativeWindow owning_window, | 156 gfx::NativeWindow owning_window, |
157 void* params); | 157 void* params); |
158 bool HasMultipleFileTypeChoices(); | 158 bool HasMultipleFileTypeChoices(); |
159 | 159 |
160 // Sets the global ShellDialogsDelegate. Defaults to NULL. | 160 // Sets the global ShellDialogsDelegate. Defaults to NULL. |
161 static void SetShellDialogsDelegate(ShellDialogsDelegate* delegate); | 161 static void SetShellDialogsDelegate(ShellDialogsDelegate* delegate); |
162 | 162 |
163 protected: | 163 protected: |
164 friend class base::RefCountedThreadSafe<SelectFileDialog>; | 164 friend class base::RefCountedThreadSafe<SelectFileDialog>; |
165 explicit SelectFileDialog(Listener* listener, | 165 explicit SelectFileDialog(Listener* listener, |
166 ui::SelectFilePolicy* policy); | 166 ui::SelectFilePolicy* policy); |
167 virtual ~SelectFileDialog(); | 167 virtual ~SelectFileDialog(); |
168 | 168 |
169 // Displays the actual file-selection dialog. | 169 // Displays the actual file-selection dialog. |
170 // This is overridden in the platform-specific descendants of FileSelectDialog | 170 // This is overridden in the platform-specific descendants of FileSelectDialog |
171 // and gets called from SelectFile after testing the | 171 // and gets called from SelectFile after testing the |
172 // AllowFileSelectionDialogs-Policy. | 172 // AllowFileSelectionDialogs-Policy. |
173 virtual void SelectFileImpl(Type type, | 173 virtual void SelectFileImpl( |
174 const string16& title, | 174 Type type, |
175 const FilePath& default_path, | 175 const string16& title, |
176 const FileTypeInfo* file_types, | 176 const base::FilePath& default_path, |
177 int file_type_index, | 177 const FileTypeInfo* file_types, |
178 const FilePath::StringType& default_extension, | 178 int file_type_index, |
179 gfx::NativeWindow owning_window, | 179 const base::FilePath::StringType& default_extension, |
180 void* params) = 0; | 180 gfx::NativeWindow owning_window, |
| 181 void* params) = 0; |
181 | 182 |
182 // Returns the global ShellDialogsDelegate instance if any. | 183 // Returns the global ShellDialogsDelegate instance if any. |
183 ShellDialogsDelegate* GetShellDialogsDelegate(); | 184 ShellDialogsDelegate* GetShellDialogsDelegate(); |
184 | 185 |
185 // The listener to be notified of selection completion. | 186 // The listener to be notified of selection completion. |
186 Listener* listener_; | 187 Listener* listener_; |
187 | 188 |
188 private: | 189 private: |
189 // Tests if the file selection dialog can be displayed by | 190 // Tests if the file selection dialog can be displayed by |
190 // testing if the AllowFileSelectionDialogs-Policy is | 191 // testing if the AllowFileSelectionDialogs-Policy is |
191 // either unset or set to true. | 192 // either unset or set to true. |
192 bool CanOpenSelectFileDialog(); | 193 bool CanOpenSelectFileDialog(); |
193 | 194 |
194 // Informs the |listener_| that the file selection dialog was canceled. Moved | 195 // Informs the |listener_| that the file selection dialog was canceled. Moved |
195 // to a function for being able to post it to the message loop. | 196 // to a function for being able to post it to the message loop. |
196 void CancelFileSelection(void* params); | 197 void CancelFileSelection(void* params); |
197 | 198 |
198 // Returns true if the dialog has multiple file type choices. | 199 // Returns true if the dialog has multiple file type choices. |
199 virtual bool HasMultipleFileTypeChoicesImpl() = 0; | 200 virtual bool HasMultipleFileTypeChoicesImpl() = 0; |
200 | 201 |
201 scoped_ptr<ui::SelectFilePolicy> select_file_policy_; | 202 scoped_ptr<ui::SelectFilePolicy> select_file_policy_; |
202 | 203 |
203 DISALLOW_COPY_AND_ASSIGN(SelectFileDialog); | 204 DISALLOW_COPY_AND_ASSIGN(SelectFileDialog); |
204 }; | 205 }; |
205 | 206 |
206 } // namespace ui | 207 } // namespace ui |
207 | 208 |
208 #endif // UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_H_ | 209 #endif // UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_H_ |
209 | 210 |
OLD | NEW |