1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qquickdialogimplfactory_p.h"
5
6#include <QtCore/qloggingcategory.h>
7
8#include <QtQuick/private/qtquickglobal_p.h>
9#if QT_CONFIG(quick_listview)
10#include "qquickplatformfiledialog_p.h"
11#include "qquickplatformfolderdialog_p.h"
12#include "qquickplatformfontdialog_p.h"
13#endif
14#include "qquickplatformcolordialog_p.h"
15#include "qquickplatformmessagedialog_p.h"
16
17QT_BEGIN_NAMESPACE
18
19/*!
20 \internal
21
22 Creates concrete QML-based dialogs.
23*/
24
25Q_LOGGING_CATEGORY(lcQuickDialogImplFactory, "qt.quick.dialogs.quickdialogimplfactory")
26
27std::unique_ptr<QPlatformDialogHelper> QQuickDialogImplFactory::createPlatformDialogHelper(QQuickDialogType type, QObject *parent)
28{
29 std::unique_ptr<QPlatformDialogHelper> dialogHelper;
30 switch (type) {
31 case QQuickDialogType::ColorDialog: {
32 auto *quickPlatformDialog = new QQuickPlatformColorDialog(parent);
33 if (quickPlatformDialog->isValid())
34 dialogHelper.reset(p: quickPlatformDialog);
35 break;
36 }
37#if QT_CONFIG(quick_listview) && QT_CONFIG(quick_draganddrop)
38 case QQuickDialogType::FileDialog: {
39 auto *quickPlatformDialog = new QQuickPlatformFileDialog(parent);
40 if (quickPlatformDialog->isValid())
41 dialogHelper.reset(p: quickPlatformDialog);
42 break;
43 }
44 case QQuickDialogType::FolderDialog: {
45 auto *quickPlatformDialog = new QQuickPlatformFolderDialog(parent);
46 if (quickPlatformDialog->isValid())
47 dialogHelper.reset(p: quickPlatformDialog);
48 break;
49 }
50 case QQuickDialogType::FontDialog: {
51 auto *quickPlatformDialog = new QQuickPlatformFontDialog(parent);
52 if (quickPlatformDialog->isValid())
53 dialogHelper.reset(p: quickPlatformDialog);
54 break;
55 }
56#endif
57 case QQuickDialogType::MessageDialog: {
58 auto *quickPlatformDialog = new QQuickPlatformMessageDialog(parent);
59 if (quickPlatformDialog->isValid())
60 dialogHelper.reset(p: quickPlatformDialog);
61 break;
62 }
63 default:
64 break;
65 }
66
67 return dialogHelper;
68}
69
70QT_END_NAMESPACE
71

source code of qtdeclarative/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory.cpp