5#ifndef QPLATFORMDIALOGHELPER_H
6#define QPLATFORMDIALOGHELPER_H
17#include <QtGui/qtguiglobal.h>
18#include <QtCore/QtGlobal>
19#include <QtCore/QObject>
20#include <QtCore/QList>
21#include <QtCore/QSharedDataPointer>
22#include <QtCore/QSharedPointer>
27Q_MOC_INCLUDE(<QColor>)
43#define QPLATFORMDIALOGHELPERS_HAS_CREATE
52 enum DialogCode { Rejected, Accepted };
56 NoButton = 0x00000000,
62 YesToAll = 0x00008000,
74 RestoreDefaults = 0x08000000,
78 LastButton = RestoreDefaults,
83 Q_DECLARE_FLAGS(StandardButtons, StandardButton)
84 Q_FLAG(StandardButtons)
103 RoleMask = 0x0FFFFFFF,
104 AlternateRole = 0x10000000,
105 Stretch = 0x20000000,
106 Reverse = 0x40000000,
122 QPlatformDialogHelper();
123 ~QPlatformDialogHelper() override;
125 virtual QVariant styleHint(StyleHint hint)
const;
127 virtual void exec() = 0;
128 virtual bool show(Qt::WindowFlags windowFlags,
129 Qt::WindowModality windowModality,
130 QWindow *parent) = 0;
131 virtual void hide() = 0;
133 static QVariant defaultStyleHint(QPlatformDialogHelper::StyleHint hint);
135 static const int *buttonLayout(Qt::Orientation orientation = Qt::Horizontal, ButtonLayout policy = UnknownLayout);
136 static ButtonRole buttonRole(StandardButton button);
144QT_DECL_METATYPE_EXTERN_TAGGED(QPlatformDialogHelper::StandardButton,
145 QPlatformDialogHelper__StandardButton, Q_GUI_EXPORT)
146QT_DECL_METATYPE_EXTERN_TAGGED(QPlatformDialogHelper::ButtonRole,
147 QPlatformDialogHelper__ButtonRole, Q_GUI_EXPORT)
150class Q_GUI_EXPORT QColorDialogOptions
153 Q_DISABLE_COPY(QColorDialogOptions)
155 explicit QColorDialogOptions(QColorDialogOptionsPrivate *dd);
156 ~QColorDialogOptions();
158 enum ColorDialogOption {
159 ShowAlphaChannel = 0x00000001,
160 NoButtons = 0x00000002,
161 DontUseNativeDialog = 0x00000004,
162 NoEyeDropperButton = 0x00000008
165 Q_DECLARE_FLAGS(ColorDialogOptions, ColorDialogOption)
166 Q_FLAG(ColorDialogOptions)
168 static QSharedPointer<QColorDialogOptions> create();
169 QSharedPointer<QColorDialogOptions> clone()
const;
171 QString windowTitle()
const;
172 void setWindowTitle(
const QString &);
174 void setOption(ColorDialogOption option,
bool on =
true);
175 bool testOption(ColorDialogOption option)
const;
176 void setOptions(ColorDialogOptions options);
177 ColorDialogOptions options()
const;
179 static int customColorCount();
180 static QRgb customColor(
int index);
181 static QRgb *customColors();
182 static void setCustomColor(
int index, QRgb color);
184 static QRgb *standardColors();
185 static QRgb standardColor(
int index);
186 static void setStandardColor(
int index, QRgb color);
189 QColorDialogOptionsPrivate *d;
196 QPlatformColorDialogHelper();
197 ~QPlatformColorDialogHelper() override;
199 const QSharedPointer<QColorDialogOptions> &options()
const;
200 void setOptions(
const QSharedPointer<QColorDialogOptions> &options);
202 virtual void setCurrentColor(
const QColor &) = 0;
203 virtual QColor currentColor()
const = 0;
206 void currentColorChanged(
const QColor &color);
207 void colorSelected(
const QColor &color);
210 QSharedPointer<QColorDialogOptions> m_options;
216 Q_DISABLE_COPY(QFontDialogOptions)
218 explicit QFontDialogOptions(QFontDialogOptionsPrivate *dd);
219 ~QFontDialogOptions();
222 enum FontDialogOption {
223 NoButtons = 0x00000001,
224 DontUseNativeDialog = 0x00000002,
225 ScalableFonts = 0x00000004,
226 NonScalableFonts = 0x00000008,
227 MonospacedFonts = 0x00000010,
228 ProportionalFonts = 0x00000020
231 Q_DECLARE_FLAGS(FontDialogOptions, FontDialogOption)
232 Q_FLAG(FontDialogOptions)
234 static QSharedPointer<QFontDialogOptions> create();
235 QSharedPointer<QFontDialogOptions> clone()
const;
237 QString windowTitle()
const;
238 void setWindowTitle(
const QString &);
240 void setOption(FontDialogOption option,
bool on =
true);
241 bool testOption(FontDialogOption option)
const;
242 void setOptions(FontDialogOptions options);
243 FontDialogOptions options()
const;
246 QFontDialogOptionsPrivate *d;
249Q_DECLARE_OPERATORS_FOR_FLAGS(QFontDialogOptions::FontDialogOptions)
251class Q_GUI_EXPORT QPlatformFontDialogHelper :
public QPlatformDialogHelper
255 QPlatformFontDialogHelper();
256 ~QPlatformFontDialogHelper() override;
258 virtual void setCurrentFont(
const QFont &) = 0;
259 virtual QFont currentFont()
const = 0;
261 const QSharedPointer<QFontDialogOptions> &options()
const;
262 void setOptions(
const QSharedPointer<QFontDialogOptions> &options);
265 void currentFontChanged(
const QFont &font);
266 void fontSelected(
const QFont &font);
269 QSharedPointer<QFontDialogOptions> m_options;
275 Q_DISABLE_COPY(QFileDialogOptions)
277 QFileDialogOptions(QFileDialogOptionsPrivate *dd);
278 ~QFileDialogOptions();
281 enum ViewMode { Detail, List };
284 enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly };
287 enum AcceptMode { AcceptOpen, AcceptSave };
290 enum DialogLabel { LookIn, FileName, FileType, Accept, Reject, DialogLabelCount };
294 enum FileDialogOption
296 ShowDirsOnly = 0x00000001,
297 DontResolveSymlinks = 0x00000002,
298 DontConfirmOverwrite = 0x00000004,
299 DontUseNativeDialog = 0x00000008,
300 ReadOnly = 0x00000010,
301 HideNameFilterDetails = 0x00000020,
302 DontUseCustomDirectoryIcons = 0x00000040
304 Q_DECLARE_FLAGS(FileDialogOptions, FileDialogOption)
305 Q_FLAG(FileDialogOptions)
307 static QSharedPointer<QFileDialogOptions> create();
308 QSharedPointer<QFileDialogOptions> clone()
const;
310 QString windowTitle()
const;
311 void setWindowTitle(
const QString &);
313 void setOption(FileDialogOption option,
bool on =
true);
314 bool testOption(FileDialogOption option)
const;
315 void setOptions(FileDialogOptions options);
316 FileDialogOptions options()
const;
318 QDir::Filters filter()
const;
319 void setFilter(QDir::Filters filters);
321 void setViewMode(ViewMode mode);
322 ViewMode viewMode()
const;
324 void setFileMode(FileMode mode);
325 FileMode fileMode()
const;
327 void setAcceptMode(AcceptMode mode);
328 AcceptMode acceptMode()
const;
330 void setSidebarUrls(
const QList<QUrl> &urls);
331 QList<QUrl> sidebarUrls()
const;
333 bool useDefaultNameFilters()
const;
334 void setUseDefaultNameFilters(
bool d);
336 void setNameFilters(
const QStringList &filters);
337 QStringList nameFilters()
const;
339 void setMimeTypeFilters(
const QStringList &filters);
340 QStringList mimeTypeFilters()
const;
342 void setDefaultSuffix(
const QString &suffix);
343 QString defaultSuffix()
const;
345 void setHistory(
const QStringList &paths);
346 QStringList history()
const;
348 void setLabelText(DialogLabel label,
const QString &text);
349 QString labelText(DialogLabel label)
const;
350 bool isLabelExplicitlySet(DialogLabel label);
352 QUrl initialDirectory()
const;
353 void setInitialDirectory(
const QUrl &);
355 QString initiallySelectedMimeTypeFilter()
const;
356 void setInitiallySelectedMimeTypeFilter(
const QString &);
358 QString initiallySelectedNameFilter()
const;
359 void setInitiallySelectedNameFilter(
const QString &);
361 QList<QUrl> initiallySelectedFiles()
const;
362 void setInitiallySelectedFiles(
const QList<QUrl> &);
364 void setSupportedSchemes(
const QStringList &schemes);
365 QStringList supportedSchemes()
const;
367 static QString defaultNameFilterString();
370 QFileDialogOptionsPrivate *d;
377 QPlatformFileDialogHelper();
378 ~QPlatformFileDialogHelper() override;
380 virtual bool defaultNameFilterDisables()
const = 0;
381 virtual void setDirectory(
const QUrl &directory) = 0;
382 virtual QUrl directory()
const = 0;
383 virtual void selectFile(
const QUrl &filename) = 0;
384 virtual QList<QUrl> selectedFiles()
const = 0;
385 virtual void setFilter() = 0;
386 virtual void selectMimeTypeFilter(
const QString &filter);
387 virtual void selectNameFilter(
const QString &filter) = 0;
388 virtual QString selectedMimeTypeFilter()
const;
389 virtual QString selectedNameFilter()
const = 0;
391 virtual bool isSupportedUrl(
const QUrl &url)
const;
393 const QSharedPointer<QFileDialogOptions> &options()
const;
394 void setOptions(
const QSharedPointer<QFileDialogOptions> &options);
396 static QStringList cleanFilterList(
const QString &filter);
397 static const char filterRegExp[];
400 void fileSelected(
const QUrl &file);
401 void filesSelected(
const QList<QUrl> &files);
402 void currentChanged(
const QUrl &path);
403 void directoryEntered(
const QUrl &directory);
404 void filterSelected(
const QString &filter);
407 QSharedPointer<QFileDialogOptions> m_options;
413 Q_DISABLE_COPY(QMessageDialogOptions)
415 QMessageDialogOptions(QMessageDialogOptionsPrivate *dd);
416 ~QMessageDialogOptions();
421 DontUseNativeDialog = 0x00000001,
423 Q_DECLARE_FLAGS(Options, Option)
427 enum StandardIcon { NoIcon, Information, Warning, Critical, Question };
430 static QSharedPointer<QMessageDialogOptions> create();
431 QSharedPointer<QMessageDialogOptions> clone()
const;
433 QString windowTitle()
const;
434 void setWindowTitle(
const QString &);
436 void setStandardIcon(StandardIcon icon);
437 StandardIcon standardIcon()
const;
439 void setIconPixmap(
const QPixmap &pixmap);
440 QPixmap iconPixmap()
const;
442 void setText(
const QString &text);
443 QString text()
const;
445 void setInformativeText(
const QString &text);
446 QString informativeText()
const;
448 void setDetailedText(
const QString &text);
449 QString detailedText()
const;
451 void setOption(Option option,
bool on =
true);
452 bool testOption(Option option)
const;
453 void setOptions(Options options);
454 Options options()
const;
456 void setStandardButtons(QPlatformDialogHelper::StandardButtons buttons);
457 QPlatformDialogHelper::StandardButtons standardButtons()
const;
459 struct CustomButton {
460 explicit CustomButton(
461 int id = -1,
const QString &label = QString(),
462 QPlatformDialogHelper::ButtonRole role = QPlatformDialogHelper::InvalidRole,
463 void *button =
nullptr) :
464 label(label), role(role), id(id), button(button)
468 QPlatformDialogHelper::ButtonRole role;
473 int addButton(
const QString &label, QPlatformDialogHelper::ButtonRole role,
474 void *buttonImpl =
nullptr,
int buttonId = 0);
475 void removeButton(
int id);
476 const QList<CustomButton> &customButtons();
477 const CustomButton *customButton(
int id);
478 void clearCustomButtons();
480 void setCheckBox(
const QString &label, Qt::CheckState state);
481 QString checkBoxLabel()
const;
482 Qt::CheckState checkBoxState()
const;
484 void setEscapeButton(
int id);
485 int escapeButton()
const;
487 void setDefaultButton(
int id);
488 int defaultButton()
const;
491 QMessageDialogOptionsPrivate *d;
498 QPlatformMessageDialogHelper();
499 ~QPlatformMessageDialogHelper() override;
501 const QSharedPointer<QMessageDialogOptions> &options()
const;
502 void setOptions(
const QSharedPointer<QMessageDialogOptions> &options);
505 void clicked(QPlatformDialogHelper::StandardButton button, QPlatformDialogHelper::ButtonRole role);
506 void checkBoxStateChanged(Qt::CheckState state);
509 QSharedPointer<QMessageDialogOptions> m_options;
QColorDialogOptionsPrivate()=default
QColorDialogOptionsPrivate(const QColorDialogOptionsPrivate &)=default
QColorDialogOptionsPrivate(QColorDialogOptionsPrivate &&)=default
QColorDialogOptionsPrivate & operator=(QColorDialogOptionsPrivate &&)=delete
QColorDialogOptions::ColorDialogOptions options
QColorDialogOptionsPrivate & operator=(const QColorDialogOptionsPrivate &)=delete
QRgb customRgb[CustomColorCount]
QRgb standardRgb[StandardColorCount]
QString initiallySelectedMimeTypeFilter
bool useDefaultNameFilters
QString labels[QFileDialogOptions::DialogLabelCount]
QString initiallySelectedNameFilter
QList< QUrl > initiallySelectedFiles
QList< QUrl > sidebarUrls
QStringList mimeTypeFilters
QStringList supportedSchemes
QFontDialogOptionsPrivate()=default
QList< QMessageDialogOptions::CustomButton > customButtons
QMessageDialogOptionsPrivate()
Qt::CheckState checkBoxState