Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qquickabstractdialog_p.h
Go to the documentation of this file.
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// Qt-Security score:significant reason:default
4
5#ifndef QQUICKABSTRACTDIALOG_P_H
6#define QQUICKABSTRACTDIALOG_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <memory>
20
21#include <QtCore/qloggingcategory.h>
22#include <QtCore/qobject.h>
23#include <QtGui/qpa/qplatformtheme.h>
24#include <QtGui/qpa/qplatformdialoghelper.h>
25#include <QtQml/qqmlparserstatus.h>
26#include <QtQml/qqmllist.h>
27#include <QtQml/qqml.h>
28#include <QtQuickDialogs2Utils/private/qquickdialogtype_p.h>
29#include <QtQuickTemplates2/private/qquickpopup_p_p.h>
30
32
34
36
37class QWindow;
38class QPlatformDialogHelper;
39
40class Q_QUICKDIALOGS2_EXPORT QQuickAbstractDialog : public QObject, public QQmlParserStatus
41{
42 Q_OBJECT
43 Q_INTERFACES(QQmlParserStatus)
44 Q_PROPERTY(QQmlListProperty<QObject> data READ data FINAL)
45 Q_PROPERTY(QWindow *parentWindow READ parentWindow WRITE setParentWindow NOTIFY parentWindowChanged RESET resetParentWindow FINAL)
46 Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL)
47 Q_PROPERTY(Qt::WindowFlags flags READ flags WRITE setFlags NOTIFY flagsChanged FINAL)
48 Q_PROPERTY(Qt::WindowModality modality READ modality WRITE setModality NOTIFY modalityChanged FINAL)
49 Q_PROPERTY(QQuickPopup::PopupType popupType READ popupType WRITE setPopupType RESET resetPopupType NOTIFY popupTypeChanged FINAL REVISION(6, 10))
50 Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL)
51 Q_PROPERTY(int result READ result WRITE setResult NOTIFY resultChanged FINAL)
52 Q_CLASSINFO("DefaultProperty", "data")
53 Q_MOC_INCLUDE(<QtGui/qwindow.h>)
54 QML_ANONYMOUS
55 QML_ADDED_IN_VERSION(6, 2)
56
57public:
58 explicit QQuickAbstractDialog(QQuickDialogType type, QObject *parent = nullptr);
59 ~QQuickAbstractDialog();
60
61 QPlatformDialogHelper *handle() const;
62
63 QQmlListProperty<QObject> data();
64
65 QWindow *parentWindow() const;
66 void setParentWindow(QWindow *window);
67 void resetParentWindow();
68
69 QString title() const;
70 void setTitle(const QString &title);
71
72 Qt::WindowFlags flags() const;
73 void setFlags(Qt::WindowFlags flags);
74
75 Qt::WindowModality modality() const;
76 void setModality(Qt::WindowModality modality);
77
78 bool isVisible() const;
79 void setVisible(bool visible);
80
81 enum StandardCode { Rejected, Accepted };
82 Q_ENUM(StandardCode)
83
84 int result() const;
85 void setResult(int result);
86
87 QQuickPopup::PopupType popupType() const;
88 void setPopupType(QQuickPopup::PopupType popupType);
89 void resetPopupType();
90
91public Q_SLOTS:
92 void open();
93 void close();
94 virtual void accept();
95 virtual void reject();
96 virtual void done(int result);
97
98Q_SIGNALS:
99 void accepted();
100 void rejected();
101 void parentWindowChanged();
102 void titleChanged();
103 void flagsChanged();
104 void modalityChanged();
105 void visibleChanged();
106 void resultChanged();
107 Q_REVISION(6, 10) void popupTypeChanged();
108
109protected:
110 void classBegin() override;
111 void componentComplete() override;
112
113 enum class CreateOptions { TryAllDialogTypes = 0, DontTryNativeDialog = 1 };
114 bool create(CreateOptions = CreateOptions::TryAllDialogTypes);
115 void destroy();
116
117 virtual bool useNativeDialog() const;
118 virtual void onCreate(QPlatformDialogHelper *dialog);
119 virtual void onShow(QPlatformDialogHelper *dialog);
120 virtual void onHide(QPlatformDialogHelper *dialog);
121 virtual int dialogCode() const;
122
123 QQuickItem *findParentItem() const;
124 QWindow *windowForOpen() const;
125 void deferredOpen(QWindow *window);
126
127 int m_result = Rejected;
128 QWindow *m_parentWindow = nullptr;
129 QString m_title;
130 Qt::WindowFlags m_flags = Qt::Dialog;
131 Qt::WindowModality m_modality = Qt::WindowModal;
132 QQuickDialogType m_type = QQuickDialogType::FileDialog;
133 QList<QObject *> m_data;
134 std::unique_ptr<QPlatformDialogHelper> m_handle;
135 QQuickPopup::PopupType m_popupType = QQuickPopup::Window;
136 bool m_visibleRequested = false;
137 bool m_visible = false;
138 bool m_complete = false;
139 bool m_parentWindowExplicitlySet = false;
140 bool m_firstShow = true;
141};
142
143QT_END_NAMESPACE
144
145#endif // QQUICKABSTRACTDIALOG_P_H
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcEventDispatcher)
QPlatformTheme::DialogType toPlatformDialogType(QQuickDialogType quickDialogType)
static const char * qmlTypeName(const QObject *object)