File indexing completed on 2025-04-27 03:58:22

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * date        : 2017-07-04
0007  * Description : wrapper for the QFileDialog
0008  *
0009  * SPDX-FileCopyrightText: 2014-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0010  * SPDX-FileCopyrightText: 2017-2022 by Maik Qualmann <metzpinguin at gmail dot com>
0011  *
0012  * SPDX-License-Identifier: GPL-2.0-or-later
0013  *
0014  * ============================================================ */
0015 
0016 #ifndef DIGIKAM_DFILE_DIALOG_H
0017 #define DIGIKAM_DFILE_DIALOG_H
0018 
0019 // Qt includes
0020 
0021 #include <QFileDialog>
0022 
0023 // Local includes
0024 
0025 #include "digikam_export.h"
0026 
0027 namespace Digikam
0028 {
0029 
0030 class DIGIKAM_EXPORT DFileDialog : public QFileDialog
0031 {
0032     Q_OBJECT
0033 
0034 public:
0035 
0036     explicit DFileDialog(QWidget* const parent,
0037                          Qt::WindowFlags flags);
0038 
0039     explicit DFileDialog(QWidget* const parent = nullptr,
0040                          const QString& caption = QString(),
0041                          const QString& directory = QString(),
0042                          const QString& filter = QString());
0043     ~DFileDialog() override;
0044 
0045     bool hasAcceptedUrls() const;
0046 
0047     static QString getExistingDirectory(QWidget* const parent = nullptr,
0048                                         const QString& caption = QString(),
0049                                         const QString& dir = QString(),
0050                                         Options options = ShowDirsOnly);
0051 
0052     static QUrl getExistingDirectoryUrl(QWidget* const parent = nullptr,
0053                                         const QString& caption = QString(),
0054                                         const QUrl& dir = QUrl(),
0055                                         Options options = ShowDirsOnly,
0056                                         const QStringList& supportedSchemes = QStringList());
0057 
0058     static QString getOpenFileName(QWidget* const parent = nullptr,
0059                                    const QString& caption = QString(),
0060                                    const QString& dir = QString(),
0061                                    const QString& filter = QString(),
0062                                    QString* selectedFilter = nullptr,
0063                                    Options options = Options());
0064 
0065     static QStringList getOpenFileNames(QWidget* const parent = nullptr,
0066                                         const QString& caption = QString(),
0067                                         const QString& dir = QString(),
0068                                         const QString& filter = QString(),
0069                                         QString* selectedFilter = nullptr,
0070                                         Options options = Options());
0071 
0072     static QUrl getOpenFileUrl(QWidget* const parent = nullptr,
0073                                const QString& caption = QString(),
0074                                const QUrl& dir = QUrl(),
0075                                const QString& filter = QString(),
0076                                QString* selectedFilter = nullptr,
0077                                Options options = Options(),
0078                                const QStringList& supportedSchemes = QStringList());
0079 
0080     static QList<QUrl> getOpenFileUrls(QWidget* const parent = nullptr,
0081                                        const QString& caption = QString(),
0082                                        const QUrl& dir = QUrl(),
0083                                        const QString& filter = QString(),
0084                                        QString* selectedFilter = nullptr,
0085                                        Options options = Options(),
0086                                        const QStringList& supportedSchemes = QStringList());
0087 
0088     static QString getSaveFileName(QWidget* const parent = nullptr,
0089                                    const QString& caption = QString(),
0090                                    const QString& dir = QString(),
0091                                    const QString& filter = QString(),
0092                                    QString* selectedFilter = nullptr,
0093                                    Options options = Options());
0094 
0095     static QUrl getSaveFileUrl(QWidget* const parent = nullptr,
0096                                const QString& caption = QString(),
0097                                const QUrl& dir = QUrl(),
0098                                const QString& filter = QString(),
0099                                QString* selectedFilter = nullptr,
0100                                Options options = Options(),
0101                                const QStringList& supportedSchemes = QStringList());
0102 
0103 private:
0104 
0105     static QFileDialog::Option getNativeFileDialogOption();
0106 };
0107 
0108 } // namespace Digikam
0109 
0110 #endif // DIGIKAM_DFILE_DIALOG_H