diff options
Diffstat (limited to 'src/quickdialogs')
68 files changed, 504 insertions, 189 deletions
diff --git a/src/quickdialogs/quickdialogs/CMakeLists.txt b/src/quickdialogs/quickdialogs/CMakeLists.txt index 529d021d3c..893ee7cad8 100644 --- a/src/quickdialogs/quickdialogs/CMakeLists.txt +++ b/src/quickdialogs/quickdialogs/CMakeLists.txt @@ -12,6 +12,7 @@ qt_internal_add_qml_module(QuickDialogs2 PLUGIN_TARGET qtquickdialogsplugin DEPENDENCIES QtQuick/auto + QtQuick.Dialogs.quickimpl/auto SOURCES qquickabstractdialog.cpp qquickabstractdialog_p.h @@ -44,13 +45,12 @@ qt_internal_add_qml_module(QuickDialogs2 Qt::QuickDialogs2UtilsPrivate Qt::QuickDialogs2QuickImpl Qt::QuickDialogs2QuickImplPrivate + Qt::QuickTemplates2Private PUBLIC_LIBRARIES Qt::Core Qt::Gui Qt::Quick - GENERATE_CPP_EXPORTS - GENERATE_PRIVATE_CPP_EXPORTS -) + ) qt_internal_add_docs(QuickDialogs2 doc/qtquickdialogs.qdocconf diff --git a/src/quickdialogs/quickdialogs/doc/qtquickdialogs.qdocconf b/src/quickdialogs/quickdialogs/doc/qtquickdialogs.qdocconf index 9fd4891d02..b19b96d691 100644 --- a/src/quickdialogs/quickdialogs/doc/qtquickdialogs.qdocconf +++ b/src/quickdialogs/quickdialogs/doc/qtquickdialogs.qdocconf @@ -37,5 +37,5 @@ navigation.qmltypespage = "Qt Quick Dialogs QML Types" tagfile = qtquickdialogs.tags -# Fail the documentation build if there are more warnings than the limit +# Enforce zero documentation warnings warninglimit = 0 diff --git a/src/quickdialogs/quickdialogs/doc/snippets/qtquickdialogs-filedialog.qml b/src/quickdialogs/quickdialogs/doc/snippets/qtquickdialogs-filedialog.qml index ab3f33f910..b443a927bc 100644 --- a/src/quickdialogs/quickdialogs/doc/snippets/qtquickdialogs-filedialog.qml +++ b/src/quickdialogs/quickdialogs/doc/snippets/qtquickdialogs-filedialog.qml @@ -1,5 +1,5 @@ // Copyright (C) 2022 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause //! [file] import QtCore diff --git a/src/quickdialogs/quickdialogs/qquickabstractdialog.cpp b/src/quickdialogs/quickdialogs/qquickabstractdialog.cpp index 857a75c7bd..5f5a56a233 100644 --- a/src/quickdialogs/quickdialogs/qquickabstractdialog.cpp +++ b/src/quickdialogs/quickdialogs/qquickabstractdialog.cpp @@ -103,8 +103,6 @@ Q_LOGGING_CATEGORY(lcDialogs, "qt.quick.dialogs") \sa accepted() */ -Q_DECLARE_LOGGING_CATEGORY(lcDialogs) - QQuickAbstractDialog::QQuickAbstractDialog(QQuickDialogType type, QObject *parent) : QObject(parent), m_type(type) @@ -150,6 +148,8 @@ QWindow *QQuickAbstractDialog::parentWindow() const void QQuickAbstractDialog::setParentWindow(QWindow *window) { qCDebug(lcDialogs) << "set parent window to" << window; + m_parentWindowExplicitlySet = bool(window); + if (m_parentWindow == window) return; @@ -157,6 +157,17 @@ void QQuickAbstractDialog::setParentWindow(QWindow *window) emit parentWindowChanged(); } +void QQuickAbstractDialog::resetParentWindow() +{ + m_parentWindowExplicitlySet = false; + + if (!m_parentWindow) + return; + + m_parentWindow = nullptr; + emit parentWindowChanged(); +} + /*! \qmlproperty string QtQuick.Dialogs::Dialog::title @@ -248,7 +259,7 @@ void QQuickAbstractDialog::setVisible(bool visible) } /*! - \qmlproperty StandardCode QtQuick.Dialogs::Dialog::result + \qmlproperty int QtQuick.Dialogs::Dialog::result This property holds the result code. @@ -259,12 +270,12 @@ void QQuickAbstractDialog::setVisible(bool visible) \note MessageDialog sets the result to the value of the clicked standard button instead of using the standard result codes. */ -QQuickAbstractDialog::StandardCode QQuickAbstractDialog::result() const +int QQuickAbstractDialog::result() const { return m_result; } -void QQuickAbstractDialog::setResult(StandardCode result) +void QQuickAbstractDialog::setResult(int result) { if (m_result == result) return; @@ -287,7 +298,8 @@ void QQuickAbstractDialog::open() return; onShow(m_handle.get()); - m_visible = m_handle->show(m_flags, m_modality, m_parentWindow); + + m_visible = m_handle->show(m_flags, m_modality, windowForOpen()); if (m_visible) { m_result = Rejected; // in case an accepted dialog gets re-opened, then closed emit visibleChanged(); @@ -310,11 +322,13 @@ void QQuickAbstractDialog::close() onHide(m_handle.get()); m_handle->hide(); m_visible = false; + if (!m_parentWindowExplicitlySet) + m_parentWindow = nullptr; emit visibleChanged(); - if (m_result == Accepted) + if (dialogCode() == Accepted) emit accepted(); - else // if (m_result == Rejected) + else if (dialogCode() == Rejected) emit rejected(); } @@ -343,13 +357,13 @@ void QQuickAbstractDialog::reject() } /*! - \qmlmethod void QtQuick.Dialogs::Dialog::done(StandardCode result) + \qmlmethod void QtQuick.Dialogs::Dialog::done(int result) Closes the dialog and sets the \a result. \sa accept(), reject(), result */ -void QQuickAbstractDialog::done(StandardCode result) +void QQuickAbstractDialog::done(int result) { setResult(result); close(); @@ -364,16 +378,22 @@ void QQuickAbstractDialog::componentComplete() qCDebug(lcDialogs) << "componentComplete"; m_complete = true; - if (!m_parentWindow) { - qCDebug(lcDialogs) << "- no parent window; searching for one"; - setParentWindow(findParentWindow()); - } + if (!m_visibleRequested) + return; - if (m_visibleRequested) { - qCDebug(lcDialogs) << "visible was bound to true before component completion; opening dialog"; + m_visibleRequested = false; + + if (windowForOpen()) { open(); - m_visibleRequested = false; + return; } + + // Since visible were set to true by the user, we want the dialog to be open by default. + // There is no guarantee that the dialog will work when it exists in a object tree that lacks a window, + // and since qml components are sometimes instantiated before they're given a window + // (which is the case when using QQuickView), we want to delay the call to open(), until the window is provided. + if (const auto parentItem = findParentItem()) + connect(parentItem, &QQuickItem::windowChanged, this, &QQuickAbstractDialog::deferredOpen, Qt::SingleShotConnection); } static const char *qmlTypeName(const QObject *object) @@ -461,21 +481,35 @@ void QQuickAbstractDialog::onHide(QPlatformDialogHelper *dialog) Q_UNUSED(dialog); } -QWindow *QQuickAbstractDialog::findParentWindow() const +int QQuickAbstractDialog::dialogCode() const { return m_result; } + +QQuickItem *QQuickAbstractDialog::findParentItem() const { QObject *obj = parent(); while (obj) { - QWindow *window = qobject_cast<QWindow *>(obj); - if (window) - return window; QQuickItem *item = qobject_cast<QQuickItem *>(obj); - if (item && item->window()) - return item->window(); + if (item) + return item; obj = obj->parent(); } return nullptr; } +QWindow *QQuickAbstractDialog::windowForOpen() const +{ + if (m_parentWindowExplicitlySet) + return m_parentWindow; + else if (auto parentItem = findParentItem()) + return parentItem->window(); + return m_parentWindow; +} + +void QQuickAbstractDialog::deferredOpen(QWindow *window) +{ + m_parentWindow = window; + open(); +} + QT_END_NAMESPACE #include "moc_qquickabstractdialog_p.cpp" diff --git a/src/quickdialogs/quickdialogs/qquickabstractdialog_p.h b/src/quickdialogs/quickdialogs/qquickabstractdialog_p.h index f1d046eb89..6299b439c4 100644 --- a/src/quickdialogs/quickdialogs/qquickabstractdialog_p.h +++ b/src/quickdialogs/quickdialogs/qquickabstractdialog_p.h @@ -17,6 +17,7 @@ #include <memory> +#include <QtCore/qloggingcategory.h> #include <QtCore/qobject.h> #include <QtGui/qpa/qplatformtheme.h> #include <QtGui/qpa/qplatformdialoghelper.h> @@ -29,20 +30,22 @@ QT_BEGIN_NAMESPACE +Q_DECLARE_LOGGING_CATEGORY(lcDialogs) + class QWindow; class QPlatformDialogHelper; -class Q_QUICKDIALOGS2_PRIVATE_EXPORT QQuickAbstractDialog : public QObject, public QQmlParserStatus +class Q_QUICKDIALOGS2_EXPORT QQuickAbstractDialog : public QObject, public QQmlParserStatus { Q_OBJECT Q_INTERFACES(QQmlParserStatus) Q_PROPERTY(QQmlListProperty<QObject> data READ data FINAL) - Q_PROPERTY(QWindow *parentWindow READ parentWindow WRITE setParentWindow NOTIFY parentWindowChanged FINAL) + Q_PROPERTY(QWindow *parentWindow READ parentWindow WRITE setParentWindow NOTIFY parentWindowChanged RESET resetParentWindow FINAL) Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) Q_PROPERTY(Qt::WindowFlags flags READ flags WRITE setFlags NOTIFY flagsChanged FINAL) Q_PROPERTY(Qt::WindowModality modality READ modality WRITE setModality NOTIFY modalityChanged FINAL) Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) - Q_PROPERTY(StandardCode result READ result WRITE setResult NOTIFY resultChanged FINAL) + Q_PROPERTY(int result READ result WRITE setResult NOTIFY resultChanged FINAL) Q_CLASSINFO("DefaultProperty", "data") Q_MOC_INCLUDE(<QtGui/qwindow.h>) QML_ANONYMOUS @@ -58,6 +61,7 @@ public: QWindow *parentWindow() const; void setParentWindow(QWindow *window); + void resetParentWindow(); QString title() const; void setTitle(const QString &title); @@ -74,15 +78,15 @@ public: enum StandardCode { Rejected, Accepted }; Q_ENUM(StandardCode) - StandardCode result() const; - void setResult(StandardCode result); + int result() const; + void setResult(int result); public Q_SLOTS: void open(); void close(); virtual void accept(); virtual void reject(); - virtual void done(StandardCode result); + virtual void done(int result); Q_SIGNALS: void accepted(); @@ -105,14 +109,13 @@ protected: virtual void onCreate(QPlatformDialogHelper *dialog); virtual void onShow(QPlatformDialogHelper *dialog); virtual void onHide(QPlatformDialogHelper *dialog); + virtual int dialogCode() const; - QWindow *findParentWindow() const; + QQuickItem *findParentItem() const; + QWindow *windowForOpen() const; + void deferredOpen(QWindow *window); - bool m_visibleRequested = false; - bool m_visible = false; - bool m_complete = false; - bool m_firstShow = true; - StandardCode m_result = Rejected; + int m_result = Rejected; QWindow *m_parentWindow = nullptr; QString m_title; Qt::WindowFlags m_flags = Qt::Dialog; @@ -120,10 +123,13 @@ protected: QQuickDialogType m_type = QQuickDialogType::FileDialog; QList<QObject *> m_data; std::unique_ptr<QPlatformDialogHelper> m_handle; + bool m_visibleRequested = false; + bool m_visible = false; + bool m_complete = false; + bool m_parentWindowExplicitlySet = false; + bool m_firstShow = true; }; QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickAbstractDialog) - #endif // QQUICKABSTRACTDIALOG_P_H diff --git a/src/quickdialogs/quickdialogs/qquickcolordialog.cpp b/src/quickdialogs/quickdialogs/qquickcolordialog.cpp index 55fa073296..08b16f4ab0 100644 --- a/src/quickdialogs/quickdialogs/qquickcolordialog.cpp +++ b/src/quickdialogs/quickdialogs/qquickcolordialog.cpp @@ -102,6 +102,7 @@ void QQuickColorDialog::setSelectedColor(const QColor &color) \value ColorDialog.ShowAlphaChannel Show a slider and additional input fields for the alpha value. \value ColorDialog.NoButtons Don't display \uicontrol Open and \uicontrol Cancel buttons (useful for "live dialogs"). + \value ColorDialog.NoEyeDropperButton Don't display \uicontrol {Eye Dropper} button. This value was added in Qt 6.6. \value ColorDialog.DontUseNativeDialog Forces the dialog to use a non-native quick implementation. */ diff --git a/src/quickdialogs/quickdialogs/qquickcolordialog_p.h b/src/quickdialogs/quickdialogs/qquickcolordialog_p.h index 9b424d6b7e..c8ff98531a 100644 --- a/src/quickdialogs/quickdialogs/qquickcolordialog_p.h +++ b/src/quickdialogs/quickdialogs/qquickcolordialog_p.h @@ -21,7 +21,7 @@ QT_BEGIN_NAMESPACE -class Q_QUICKDIALOGS2_PRIVATE_EXPORT QQuickColorDialog : public QQuickAbstractDialog +class Q_QUICKDIALOGS2_EXPORT QQuickColorDialog : public QQuickAbstractDialog { Q_OBJECT Q_PROPERTY(QColor selectedColor READ selectedColor WRITE setSelectedColor NOTIFY selectedColorChanged) @@ -56,6 +56,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickColorDialog) - #endif // QQUICKCOLORDIALOG_P_H diff --git a/src/quickdialogs/quickdialogs/qquickfiledialog.cpp b/src/quickdialogs/quickdialogs/qquickfiledialog.cpp index 88b4047e40..5995f0c3f3 100644 --- a/src/quickdialogs/quickdialogs/qquickfiledialog.cpp +++ b/src/quickdialogs/quickdialogs/qquickfiledialog.cpp @@ -14,8 +14,7 @@ QT_BEGIN_NAMESPACE using namespace Qt::StringLiterals; -Q_DECLARE_LOGGING_CATEGORY(lcDialogs) -Q_LOGGING_CATEGORY(lcFileDialog, "qt.quick.dialogs.filedialog") +Q_STATIC_LOGGING_CATEGORY(lcFileDialog, "qt.quick.dialogs.filedialog") /*! \qmltype FileDialog diff --git a/src/quickdialogs/quickdialogs/qquickfiledialog_p.h b/src/quickdialogs/quickdialogs/qquickfiledialog_p.h index 7214c907f3..95b239f4fb 100644 --- a/src/quickdialogs/quickdialogs/qquickfiledialog_p.h +++ b/src/quickdialogs/quickdialogs/qquickfiledialog_p.h @@ -24,7 +24,7 @@ QT_BEGIN_NAMESPACE class QQuickFileNameFilter; -class Q_QUICKDIALOGS2_PRIVATE_EXPORT QQuickFileDialog : public QQuickAbstractDialog +class Q_QUICKDIALOGS2_EXPORT QQuickFileDialog : public QQuickAbstractDialog { Q_OBJECT Q_PROPERTY(FileMode fileMode READ fileMode WRITE setFileMode NOTIFY fileModeChanged FINAL) @@ -127,6 +127,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickFileDialog) - #endif // QQUICKFILEDIALOG_P_H diff --git a/src/quickdialogs/quickdialogs/qquickfolderdialog.cpp b/src/quickdialogs/quickdialogs/qquickfolderdialog.cpp index db8885cc88..089c55570d 100644 --- a/src/quickdialogs/quickdialogs/qquickfolderdialog.cpp +++ b/src/quickdialogs/quickdialogs/qquickfolderdialog.cpp @@ -8,8 +8,6 @@ QT_BEGIN_NAMESPACE -Q_DECLARE_LOGGING_CATEGORY(lcDialogs) - /*! \qmltype FolderDialog \inherits Dialog diff --git a/src/quickdialogs/quickdialogs/qquickfolderdialog_p.h b/src/quickdialogs/quickdialogs/qquickfolderdialog_p.h index e1231ab3a5..b588b0cd3d 100644 --- a/src/quickdialogs/quickdialogs/qquickfolderdialog_p.h +++ b/src/quickdialogs/quickdialogs/qquickfolderdialog_p.h @@ -24,7 +24,7 @@ QT_BEGIN_NAMESPACE class QQuickFileNameFilter; -class Q_QUICKDIALOGS2_PRIVATE_EXPORT QQuickFolderDialog : public QQuickAbstractDialog +class Q_QUICKDIALOGS2_EXPORT QQuickFolderDialog : public QQuickAbstractDialog { Q_OBJECT Q_PROPERTY(QUrl currentFolder READ currentFolder WRITE setCurrentFolder NOTIFY currentFolderChanged FINAL) @@ -75,6 +75,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickFolderDialog) - #endif // QQUICKFOLDERDIALOG_P_H diff --git a/src/quickdialogs/quickdialogs/qquickfontdialog_p.h b/src/quickdialogs/quickdialogs/qquickfontdialog_p.h index f5df6d2a9f..ce3719b75d 100644 --- a/src/quickdialogs/quickdialogs/qquickfontdialog_p.h +++ b/src/quickdialogs/quickdialogs/qquickfontdialog_p.h @@ -21,7 +21,7 @@ QT_BEGIN_NAMESPACE -class Q_QUICKDIALOGS2_PRIVATE_EXPORT QQuickFontDialog : public QQuickAbstractDialog +class Q_QUICKDIALOGS2_EXPORT QQuickFontDialog : public QQuickAbstractDialog { Q_OBJECT Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont NOTIFY selectedFontChanged) @@ -62,6 +62,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickFontDialog) - #endif // QQUICKFONTDIALOG_P_H diff --git a/src/quickdialogs/quickdialogs/qquickmessagedialog.cpp b/src/quickdialogs/quickdialogs/qquickmessagedialog.cpp index 075ccd54db..7e16cfb9dd 100644 --- a/src/quickdialogs/quickdialogs/qquickmessagedialog.cpp +++ b/src/quickdialogs/quickdialogs/qquickmessagedialog.cpp @@ -218,7 +218,9 @@ void QQuickMessageDialog::setButtons(QPlatformDialogHelper::StandardButtons butt void QQuickMessageDialog::handleClick(QPlatformDialogHelper::StandardButton button, QPlatformDialogHelper::ButtonRole role) { + m_roleOfLastButtonPressed = role; emit buttonClicked(button, role); + done(button); } void QQuickMessageDialog::onCreate(QPlatformDialogHelper *dialog) @@ -240,6 +242,20 @@ void QQuickMessageDialog::onShow(QPlatformDialogHelper *dialog) messageDialog->setOptions(m_options); // setOptions only assigns a member and isn't virtual } +int QQuickMessageDialog::dialogCode() const +{ + switch (m_roleOfLastButtonPressed) { + case QPlatformDialogHelper::AcceptRole: + case QPlatformDialogHelper::YesRole: + return Accepted; + case QPlatformDialogHelper::RejectRole: + case QPlatformDialogHelper::NoRole: + return Rejected; + default: + return QQuickAbstractDialog::dialogCode(); + } +} + QT_END_NAMESPACE #include "moc_qquickmessagedialog_p.cpp" diff --git a/src/quickdialogs/quickdialogs/qquickmessagedialog_p.h b/src/quickdialogs/quickdialogs/qquickmessagedialog_p.h index 40a2b6da8d..ea0b2bbae2 100644 --- a/src/quickdialogs/quickdialogs/qquickmessagedialog_p.h +++ b/src/quickdialogs/quickdialogs/qquickmessagedialog_p.h @@ -19,7 +19,7 @@ QT_BEGIN_NAMESPACE -class Q_QUICKDIALOGS2_PRIVATE_EXPORT QQuickMessageDialog : public QQuickAbstractDialog +class Q_QUICKDIALOGS2_EXPORT QQuickMessageDialog : public QQuickAbstractDialog { Q_OBJECT @@ -63,13 +63,13 @@ private Q_SLOTS: protected: void onCreate(QPlatformDialogHelper *dialog) override; void onShow(QPlatformDialogHelper *dialog) override; + int dialogCode() const override; private: QSharedPointer<QMessageDialogOptions> m_options; + QPlatformDialogHelper::ButtonRole m_roleOfLastButtonPressed = QPlatformDialogHelper::NoRole; }; QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickMessageDialog) - #endif // QQUICKMESSAGEDIALOG_P_H diff --git a/src/quickdialogs/quickdialogs/qtquickdialogs2global_p.h b/src/quickdialogs/quickdialogs/qtquickdialogs2global_p.h index 85f9ce6dc4..68a540af12 100644 --- a/src/quickdialogs/quickdialogs/qtquickdialogs2global_p.h +++ b/src/quickdialogs/quickdialogs/qtquickdialogs2global_p.h @@ -17,6 +17,6 @@ #include <QtCore/qglobal.h> #include <QtQml/private/qqmlglobal_p.h> -#include <QtQuickDialogs2/private/qtquickdialogs2exports_p.h> +#include <QtQuickDialogs2/qtquickdialogs2exports.h> #endif // QTQUICKDIALOGS2GLOBAL_P_H diff --git a/src/quickdialogs/quickdialogsquickimpl/CMakeLists.txt b/src/quickdialogs/quickdialogsquickimpl/CMakeLists.txt index c4ccceef39..5e219624bc 100644 --- a/src/quickdialogs/quickdialogsquickimpl/CMakeLists.txt +++ b/src/quickdialogs/quickdialogsquickimpl/CMakeLists.txt @@ -63,6 +63,7 @@ qt_internal_add_qml_module(QuickDialogs2QuickImpl DEPENDENCIES QtQuick/auto QtQuick.Templates/auto + QtQuick.Layouts/auto SOURCES qquickabstractcolorpicker.cpp qquickabstractcolorpicker_p.h @@ -76,31 +77,11 @@ qt_internal_add_qml_module(QuickDialogs2QuickImpl qquickcolorinputs_p.h qquickdialogimplfactory.cpp qquickdialogimplfactory_p.h - qquickfiledialogdelegate.cpp - qquickfiledialogdelegate_p.h - qquickfiledialogimpl.cpp - qquickfiledialogimpl_p.h - qquickfiledialogimpl_p_p.h - qquickfolderbreadcrumbbar.cpp - qquickfolderbreadcrumbbar_p.h - qquickfolderbreadcrumbbar_p_p.h - qquickfolderdialogimpl.cpp - qquickfolderdialogimpl_p.h - qquickfolderdialogimpl_p_p.h - qquickfontdialogimpl.cpp - qquickfontdialogimpl_p.h - qquickfontdialogimpl_p_p.h qquickmessagedialogimpl.cpp qquickmessagedialogimpl_p.h qquickmessagedialogimpl_p_p.h qquickplatformcolordialog.cpp qquickplatformcolordialog_p.h - qquickplatformfiledialog.cpp - qquickplatformfiledialog_p.h - qquickplatformfolderdialog.cpp - qquickplatformfolderdialog_p.h - qquickplatformfontdialog.cpp - qquickplatformfontdialog_p.h qquickplatformmessagedialog.cpp qquickplatformmessagedialog_p.h qquicksaturationlightnesspicker.cpp @@ -120,18 +101,58 @@ qt_internal_add_qml_module(QuickDialogs2QuickImpl Qt::CorePrivate Qt::GuiPrivate Qt::QmlPrivate - Qt::QuickPrivate - Qt::QuickTemplates2 - Qt::QuickTemplates2Private Qt::QuickControls2ImplPrivate Qt::QuickDialogs2Utils Qt::QuickDialogs2UtilsPrivate + Qt::QuickPrivate + Qt::QuickTemplates2 + Qt::QuickTemplates2Private PUBLIC_LIBRARIES Qt::Core Qt::Gui Qt::Quick - GENERATE_CPP_EXPORTS - GENERATE_PRIVATE_CPP_EXPORTS +) + +add_dependencies(QuickDialogs2QuickImpl Qt::QuickControls2Basic) + +if(QT_FEATURE_quickcontrols2_fusion) + add_dependencies(QuickDialogs2QuickImpl QuickControls2Fusion) +endif() + +if(QT_FEATURE_quickcontrols2_imagine) + add_dependencies(QuickDialogs2QuickImpl QuickControls2Imagine) +endif() + +if(QT_FEATURE_quickcontrols2_material) + add_dependencies(QuickDialogs2QuickImpl QuickControls2Material) +endif() + +if(QT_FEATURE_quickcontrols2_universal) + add_dependencies(QuickDialogs2QuickImpl QuickControls2Universal) +endif() + +qt_internal_extend_target(QuickDialogs2QuickImpl CONDITION QT_FEATURE_quick_listview + SOURCES + qquickfiledialogdelegate.cpp + qquickfiledialogdelegate_p.h + qquickfiledialogimpl.cpp + qquickfiledialogimpl_p.h + qquickfiledialogimpl_p_p.h + qquickfolderbreadcrumbbar.cpp + qquickfolderbreadcrumbbar_p.h + qquickfolderbreadcrumbbar_p_p.h + qquickfolderdialogimpl.cpp + qquickfolderdialogimpl_p.h + qquickfolderdialogimpl_p_p.h + qquickfontdialogimpl.cpp + qquickfontdialogimpl_p.h + qquickfontdialogimpl_p_p.h + qquickplatformfiledialog.cpp + qquickplatformfiledialog_p.h + qquickplatformfolderdialog.cpp + qquickplatformfolderdialog_p.h + qquickplatformfontdialog.cpp + qquickplatformfontdialog_p.h ) # Resources: diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/ColorDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/ColorDialog.qml index 591ac46a84..142fecbf7a 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/ColorDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/ColorDialog.qml @@ -64,6 +64,7 @@ ColorDialogImpl { padding: 6 Layout.preferredWidth: control.title.length > 0 ? implicitWidth : 0 + Layout.preferredHeight: control.title.length > 0 ? implicitHeight : 15 Layout.leftMargin: 12 Layout.alignment: Qt.AlignLeft } @@ -85,10 +86,10 @@ ColorDialogImpl { SaturationLightnessPicker { id: colorPicker objectName: "colorPicker" - implicitHeight: width color: control.color Layout.fillWidth: true + Layout.fillHeight: true } Slider { diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialog.qml index a928a4b0cc..965f56bdc7 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialog.qml @@ -31,6 +31,29 @@ FileDialogImpl { standardButtons: T.Dialog.Open | T.Dialog.Cancel + Dialog { + id: overwriteConfirmationDialog + objectName: "confirmationDialog" + anchors.centerIn: parent + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + dim: true + modal: true + title: qsTr("“%1” already exists. Do you want to replace it?").arg(control.fileName) + + Label { + text: qsTr("A file with the same name already exists in %1.\nReplacing it will overwrite its current contents.").arg(control.currentFolderName) + } + + footer: DialogButtonBox { + alignment: Qt.AlignHCenter + standardButtons: DialogButtonBox.Yes | DialogButtonBox.No + } + + Overlay.modal: Rectangle { + color: Fusion.darkShade + } + } + /* We use attached properties because we want to handle logic in C++, and: - We can't assume the footer only contains a DialogButtonBox (which would allow us @@ -45,6 +68,7 @@ FileDialogImpl { FileDialogImpl.breadcrumbBar: breadcrumbBar FileDialogImpl.fileNameLabel: fileNameLabel FileDialogImpl.fileNameTextField: fileNameTextField + FileDialogImpl.overwriteConfirmationDialog: overwriteConfirmationDialog background: Rectangle { implicitWidth: 600 @@ -124,7 +148,7 @@ FileDialogImpl { fileDetailRowWidth: nameFiltersComboBox.width KeyNavigation.backtab: breadcrumbBar - KeyNavigation.tab: nameFiltersComboBox + KeyNavigation.tab: fileNameTextField.visible ? fileNameTextField : nameFiltersComboBox } } } @@ -143,7 +167,6 @@ FileDialogImpl { TextField { id: fileNameTextField objectName: "fileNameTextField" - text: control.fileName visible: false Layout.fillWidth: true diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialogDelegate.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialogDelegate.qml index 475528d2ec..20e8421d3f 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialogDelegate.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialogDelegate.qml @@ -34,7 +34,7 @@ DialogsQuickImpl.FileDialogDelegate { required property int index required property string fileName required property url fileUrl - required property int fileSize + required property double fileSize required property date fileModified required property bool fileIsDir diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/ColorDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/ColorDialog.qml index 641453bca5..655b55cf83 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/ColorDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/ColorDialog.qml @@ -57,6 +57,7 @@ ColorDialogImpl { header: RowLayout { Label { + objectName: "titleLabel" text: control.title elide: Label.ElideRight font.bold: true @@ -67,10 +68,12 @@ ColorDialogImpl { bottomPadding: 16 Layout.preferredWidth: control.title.length > 0 ? implicitWidth : 0 + Layout.preferredHeight: control.title.length > 0 ? implicitHeight : 15 } Button { id: eyeDropperButton + objectName: "eyeDropperButton" icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/eye-dropper.png" flat: true topPadding: 16 @@ -86,10 +89,10 @@ ColorDialogImpl { SaturationLightnessPicker { id: colorPicker objectName: "colorPicker" - implicitHeight: width color: control.color Layout.fillWidth: true + Layout.fillHeight: true } Slider { diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialog.qml index 664965e571..8568be710a 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialog.qml @@ -39,12 +39,34 @@ FileDialogImpl { standardButtons: T.Dialog.Open | T.Dialog.Cancel + Dialog { + id: overwriteConfirmationDialog + objectName: "confirmationDialog" + anchors.centerIn: parent + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + dim: true + modal: true + spacing: 12 + title: qsTr("“%1” already exists. Do you want to replace it?").arg(control.fileName) + + Label { + anchors.horizontalCenter: parent.horizontalCenter + text: qsTr("A file with the same name already exists in %1.\nReplacing it will overwrite its current contents.").arg(control.currentFolderName) + horizontalAlignment: Text.AlignHCenter + } + + footer: DialogButtonBox { + standardButtons: DialogButtonBox.Yes | DialogButtonBox.No + } + } + FileDialogImpl.buttonBox: buttonBox FileDialogImpl.nameFiltersComboBox: nameFiltersComboBox FileDialogImpl.fileDialogListView: fileDialogListView FileDialogImpl.breadcrumbBar: breadcrumbBar FileDialogImpl.fileNameLabel: fileNameLabel FileDialogImpl.fileNameTextField: fileNameTextField + FileDialogImpl.overwriteConfirmationDialog: overwriteConfirmationDialog background: NinePatchImage { source: Imagine.url + "dialog-background" @@ -115,6 +137,9 @@ FileDialogImpl { highlighted: ListView.isCurrentItem dialog: control fileDetailRowWidth: nameFiltersComboBox.width + + KeyNavigation.backtab: breadcrumbBar + KeyNavigation.tab: fileNameTextField.visible ? fileNameTextField : nameFiltersComboBox } } @@ -133,7 +158,6 @@ FileDialogImpl { TextField { id: fileNameTextField objectName: "fileNameTextField" - text: control.fileName visible: false Layout.fillWidth: true diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialogDelegate.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialogDelegate.qml index 30094a7d9d..a4f627d48e 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialogDelegate.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialogDelegate.qml @@ -39,7 +39,7 @@ DialogsQuickImpl.FileDialogDelegate { required property int index required property string fileName required property url fileUrl - required property int fileSize + required property double fileSize required property date fileModified required property bool fileIsDir diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Material/ColorDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Material/ColorDialog.qml index 313e8645b4..dd1f887dd9 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Material/ColorDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Material/ColorDialog.qml @@ -50,6 +50,7 @@ ColorDialogImpl { header: RowLayout { Label { + objectName: "titleLabel" text: control.title elide: Label.ElideRight font.bold: true @@ -60,10 +61,12 @@ ColorDialogImpl { bottomPadding: 24 Layout.preferredWidth: control.title.length > 0 ? implicitWidth : 0 + Layout.preferredHeight: control.title.length > 0 ? implicitHeight : 15 } Button { id: eyeDropperButton + objectName: "eyeDropperButton" icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/eye-dropper.png" flat: true topPadding: 24 @@ -80,10 +83,10 @@ ColorDialogImpl { SaturationLightnessPicker { id: colorPicker objectName: "colorPicker" - implicitHeight: width color: control.color Layout.fillWidth: true + Layout.fillHeight: true } Slider { diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialog.qml index cd2c513c2e..9700aeba79 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialog.qml @@ -32,12 +32,32 @@ FileDialogImpl { Material.elevation: 24 + Dialog { + id: overwriteConfirmationDialog + objectName: "confirmationDialog" + anchors.centerIn: parent + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + dim: true + modal: true + title: qsTr("“%1” already exists. Do you want to replace it?").arg(control.fileName) + + Label { + text: qsTr("A file with the same name already exists in %1.\nReplacing it will overwrite its current contents.").arg(control.currentFolderName) + } + + footer: DialogButtonBox { + alignment: Qt.AlignHCenter + standardButtons: DialogButtonBox.Yes | DialogButtonBox.No + } + } + FileDialogImpl.buttonBox: buttonBox FileDialogImpl.nameFiltersComboBox: nameFiltersComboBox FileDialogImpl.fileDialogListView: fileDialogListView FileDialogImpl.breadcrumbBar: breadcrumbBar FileDialogImpl.fileNameLabel: fileNameLabel FileDialogImpl.fileNameTextField: fileNameTextField + FileDialogImpl.overwriteConfirmationDialog: overwriteConfirmationDialog background: Rectangle { implicitWidth: 600 @@ -97,6 +117,9 @@ FileDialogImpl { highlighted: ListView.isCurrentItem dialog: control fileDetailRowWidth: nameFiltersComboBox.width + + KeyNavigation.backtab: breadcrumbBar + KeyNavigation.tab: fileNameTextField.visible ? fileNameTextField : nameFiltersComboBox } } @@ -116,7 +139,6 @@ FileDialogImpl { TextField { id: fileNameTextField objectName: "fileNameTextField" - text: control.fileName visible: false Layout.topMargin: 12 diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialogDelegate.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialogDelegate.qml index c96231345d..9ec992b7a6 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialogDelegate.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialogDelegate.qml @@ -31,7 +31,7 @@ DialogsQuickImpl.FileDialogDelegate { required property int index required property string fileName required property url fileUrl - required property int fileSize + required property double fileSize required property date fileModified required property bool fileIsDir diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Material/MessageDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Material/MessageDialog.qml index a678503d6c..e336185430 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Material/MessageDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Material/MessageDialog.qml @@ -117,6 +117,8 @@ MessageDialogImpl { Layout.bottomMargin: 20 background: Rectangle { + implicitWidth: 120 + implicitHeight: control.Material.textFieldHeight color: Qt.rgba(1,1,1,1) radius: 3 border.color: Qt.darker(control.palette.light) diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/ColorDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/ColorDialog.qml index d13b751652..384fa41e7e 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/ColorDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/ColorDialog.qml @@ -47,6 +47,7 @@ ColorDialogImpl { spacing: 12 Label { + objectName: "titleLabel" text: control.title elide: Label.ElideRight // TODO: QPlatformTheme::TitleBarFont @@ -63,10 +64,12 @@ ColorDialogImpl { Layout.leftMargin: 18 Layout.fillWidth: true Layout.preferredWidth: control.title.length > 0 ? implicitHeight : 0 + Layout.preferredHeight: control.title.length > 0 ? implicitHeight : 15 } Button { id: eyeDropperButton + objectName: "eyeDropperButton" icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/eye-dropper.png" flat: true topPadding: 24 @@ -83,10 +86,10 @@ ColorDialogImpl { SaturationLightnessPicker { id: colorPicker objectName: "colorPicker" - implicitHeight: width color: control.color Layout.fillWidth: true + Layout.fillHeight: true } Slider { diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialog.qml index c029b06293..0d2db8b426 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialog.qml @@ -30,12 +30,35 @@ FileDialogImpl { standardButtons: T.Dialog.Open | T.Dialog.Cancel + Dialog { + id: overwriteConfirmationDialog + objectName: "confirmationDialog" + anchors.centerIn: parent + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + dim: true + modal: true + title: qsTr("“%1” already exists. Do you want to replace it?").arg(control.fileName) + + Label { + text: qsTr("A file with the same name already exists in %1.\nReplacing it will overwrite its current contents.").arg(control.currentFolderName) + } + + footer: DialogButtonBox { + standardButtons: DialogButtonBox.Yes | DialogButtonBox.No + } + + Overlay.modal: Rectangle { + color: overwriteConfirmationDialog.Universal.baseMediumColor + } + } + FileDialogImpl.buttonBox: buttonBox FileDialogImpl.nameFiltersComboBox: nameFiltersComboBox FileDialogImpl.fileDialogListView: fileDialogListView FileDialogImpl.breadcrumbBar: breadcrumbBar FileDialogImpl.fileNameLabel: fileNameLabel FileDialogImpl.fileNameTextField: fileNameTextField + FileDialogImpl.overwriteConfirmationDialog: overwriteConfirmationDialog background: Rectangle { implicitWidth: 600 @@ -99,6 +122,9 @@ FileDialogImpl { highlighted: ListView.isCurrentItem dialog: control fileDetailRowWidth: nameFiltersComboBox.width + + KeyNavigation.backtab: breadcrumbBar + KeyNavigation.tab: fileNameTextField.visible ? fileNameTextField : nameFiltersComboBox } } @@ -117,7 +143,6 @@ FileDialogImpl { TextField { id: fileNameTextField objectName: "fileNameTextField" - text: control.fileName visible: false Layout.fillWidth: true diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialogDelegate.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialogDelegate.qml index 7650ec7a34..dd23f3d1e7 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialogDelegate.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialogDelegate.qml @@ -32,7 +32,7 @@ DialogsQuickImpl.FileDialogDelegate { required property int index required property string fileName required property url fileUrl - required property int fileSize + required property double fileSize required property date fileModified required property bool fileIsDir diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/MessageDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/MessageDialog.qml index ac63d281d1..37284503d2 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/MessageDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/MessageDialog.qml @@ -115,6 +115,8 @@ MessageDialogImpl { Layout.bottomMargin: 20 background: Rectangle { + implicitWidth: 60 // TextControlThemeMinWidth - 4 (border) + implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) color: Qt.rgba(1,1,1,1) radius: 3 border.color: Qt.darker(control.palette.light) diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/ColorDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/ColorDialog.qml index c8395bacd0..a4cbe498f0 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/ColorDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/ColorDialog.qml @@ -59,6 +59,7 @@ ColorDialogImpl { font.bold: true Layout.preferredWidth: control.title.length > 0 ? implicitWidth : 0 + Layout.preferredHeight: control.title.length > 0 ? implicitHeight : 15 Layout.leftMargin: 12 Layout.alignment: Qt.AlignLeft } @@ -81,10 +82,10 @@ ColorDialogImpl { SaturationLightnessPicker { id: colorPicker objectName: "colorPicker" - implicitHeight: width color: control.color Layout.fillWidth: true + Layout.fillHeight: true } Slider { diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/FileDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/FileDialog.qml index 0f25dee35b..defb7dd4e2 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/FileDialog.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/FileDialog.qml @@ -34,6 +34,25 @@ FileDialogImpl { standardButtons: T.Dialog.Open | T.Dialog.Cancel + Dialog { + id: overwriteConfirmationDialog + objectName: "confirmationDialog" + anchors.centerIn: parent + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + dim: true + modal: true + title: qsTr("“%1” already exists. Do you want to replace it?").arg(control.fileName) + + Label { + text: qsTr("A file with the same name already exists in %1.\nReplacing it will overwrite its current contents.").arg(control.currentFolderName) + } + + footer: DialogButtonBox { + alignment: Qt.AlignHCenter + standardButtons: DialogButtonBox.Yes | DialogButtonBox.No + } + } + /* We use attached properties because we want to handle logic in C++, and: - We can't assume the footer only contains a DialogButtonBox (which would allow us @@ -48,6 +67,7 @@ FileDialogImpl { FileDialogImpl.breadcrumbBar: breadcrumbBar FileDialogImpl.fileNameLabel: fileNameLabel FileDialogImpl.fileNameTextField: fileNameTextField + FileDialogImpl.overwriteConfirmationDialog: overwriteConfirmationDialog background: Rectangle { implicitWidth: 600 @@ -106,7 +126,7 @@ FileDialogImpl { fileDetailRowWidth: nameFiltersComboBox.width KeyNavigation.backtab: breadcrumbBar - KeyNavigation.tab: nameFiltersComboBox + KeyNavigation.tab: fileNameTextField.visible ? fileNameTextField : nameFiltersComboBox } } @@ -135,7 +155,6 @@ FileDialogImpl { TextField { id: fileNameTextField objectName: "fileNameTextField" - text: control.fileName visible: false Layout.fillWidth: true diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/FileDialogDelegate.qml b/src/quickdialogs/quickdialogsquickimpl/qml/FileDialogDelegate.qml index 3abe35f43e..eea3ab93d6 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/FileDialogDelegate.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/FileDialogDelegate.qml @@ -3,7 +3,7 @@ import QtQuick import QtQuick.Controls -import QtQuick.Controls.impl as ControlsImpl +import QtQuick.Controls.impl import QtQuick.Dialogs.quickimpl as DialogsQuickImpl DialogsQuickImpl.FileDialogDelegate { @@ -34,7 +34,7 @@ DialogsQuickImpl.FileDialogDelegate { required property int index required property string fileName required property url fileUrl - required property int fileSize + required property double fileSize required property date fileModified required property bool fileIsDir diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/FileDialogDelegateLabel.qml b/src/quickdialogs/quickdialogsquickimpl/qml/FileDialogDelegateLabel.qml index ac543e735d..a28d9dea08 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/FileDialogDelegateLabel.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/FileDialogDelegateLabel.qml @@ -50,7 +50,12 @@ Item { implicitHeight: childrenRect.height Label { - text: locale.formattedDataSize(root.delegate.fileSize) + text: { + const fileSize = root.delegate.fileSize; + return fileSize > Number.MAX_SAFE_INTEGER + ? ('>' + locale.formattedDataSize(Number.MAX_SAFE_INTEGER)) + : locale.formattedDataSize(fileSize); + } font.pixelSize: root.delegate.font.pixelSize * 0.75 color: root.fileDetailRowTextColor } diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/FolderDialogDelegate.qml b/src/quickdialogs/quickdialogsquickimpl/qml/FolderDialogDelegate.qml index 750a581a5d..87b826809a 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qml/FolderDialogDelegate.qml +++ b/src/quickdialogs/quickdialogsquickimpl/qml/FolderDialogDelegate.qml @@ -3,7 +3,7 @@ import QtQuick import QtQuick.Controls -import QtQuick.Controls.impl as ControlsImpl +import QtQuick.Controls.impl import QtQuick.Dialogs.quickimpl as DialogsQuickImpl DialogsQuickImpl.FileDialogDelegate { diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker.cpp index 4606c00502..5b5b2abdae 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker.cpp +++ b/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker.cpp @@ -13,11 +13,6 @@ QQuickAbstractColorPickerPrivate::QQuickAbstractColorPickerPrivate() = default; -static inline QString handleName() -{ - return QStringLiteral("handle"); -} - bool QQuickAbstractColorPickerPrivate::handlePress(const QPointF &point, ulong timestamp) { Q_Q(QQuickAbstractColorPicker); diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker_p.h index b29e488b3a..204bfd77b5 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker_p.h @@ -1,5 +1,5 @@ // Copyright (C) 2022 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QQUICKABSTRACTCOLORPICKER_P_H #define QQUICKABSTRACTCOLORPICKER_P_H @@ -24,7 +24,7 @@ QT_BEGIN_NAMESPACE class QQuickAbstractColorPickerPrivate; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickAbstractColorPicker : public QQuickControl +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickAbstractColorPicker : public QQuickControl { Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl.cpp index 9721bae736..6772f24faa 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl.cpp +++ b/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl.cpp @@ -9,6 +9,7 @@ #include <QtQuickTemplates2/private/qquickslider_p.h> #include <qpa/qplatformintegration.h> +#include <qpa/qplatformservices.h> #include <private/qguiapplication_p.h> QT_BEGIN_NAMESPACE @@ -91,7 +92,7 @@ QQuickColorDialogImplAttached *QQuickColorDialogImplPrivate::attachedOrWarn() void QQuickColorDialogImplPrivate::eyeDropperEnter() { - Q_Q(const QQuickColorDialogImpl); + Q_Q(QQuickColorDialogImpl); if (m_eyeDropperMode) return; @@ -104,6 +105,19 @@ void QQuickColorDialogImplPrivate::eyeDropperEnter() m_eyeDropperWindow = window; } + if (auto *platformServices = QGuiApplicationPrivate::platformIntegration()->services(); + platformServices && platformServices->hasCapability(QPlatformServices::Capability::ColorPicking)) { + if (auto *colorPickerService = platformServices->colorPicker(m_eyeDropperWindow)) { + q->connect(colorPickerService, &QPlatformServiceColorPicker::colorPicked, q, + [q, colorPickerService](const QColor &color) { + colorPickerService->deleteLater(); + q->setColor(color); + }); + colorPickerService->pickColor(); + return; + } + } + m_eyeDropperPreviousColor = q->color(); if (!bool(eyeDropperEventFilter)) @@ -423,9 +437,13 @@ void QQuickColorDialogImpl::setOptions(const QSharedPointer<QColorDialogOptions> QQuickColorDialogImplAttached *attached = d->attachedOrWarn(); if (attached) { - const bool screenGrabbingAllowed = QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::ScreenWindowGrabbing); + const auto *integration = QGuiApplicationPrivate::platformIntegration(); + const bool canSupportEyeDropper = + integration->hasCapability(QPlatformIntegration::ScreenWindowGrabbing) + || integration->services()->hasCapability(QPlatformServices::Capability::ColorPicking); const bool offscreen = qgetenv("QT_QPA_PLATFORM").compare(QLatin1String("offscreen"), Qt::CaseInsensitive) == 0; - attached->eyeDropperButton()->setVisible(screenGrabbingAllowed && !offscreen); + const bool noEyeDropperButton = (d->options && d->options->options() & QColorDialogOptions::NoEyeDropperButton); + attached->eyeDropperButton()->setVisible(!noEyeDropperButton && canSupportEyeDropper && !offscreen); if (d->options) { attached->buttonBox()->setVisible( diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl_p.h index 110298b5f2..a714047c84 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl_p.h @@ -30,7 +30,7 @@ class QQuickColorDialogImplAttached; class QQuickColorDialogImplAttachedPrivate; class QQuickColorDialogImplPrivate; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickColorDialogImpl : public QQuickDialog +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickColorDialogImpl : public QQuickDialog { Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) @@ -96,7 +96,7 @@ private: Q_DECLARE_PRIVATE(QQuickColorDialogImpl) }; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickColorDialogImplAttached : public QObject +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickColorDialogImplAttached : public QObject { Q_OBJECT Q_PROPERTY(QQuickDialogButtonBox *buttonBox READ buttonBox WRITE setButtonBox NOTIFY buttonBoxChanged FINAL) @@ -145,6 +145,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickColorDialogImpl) - #endif // QQUICKCOLORDIALOGIMPL_P_H diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl_p_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl_p_p.h index b7c4dc8e2c..503dff1a77 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl_p_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickcolordialogimpl_p_p.h @@ -24,6 +24,8 @@ #include <QtQuickTemplates2/private/qquickabstractbutton_p.h> #include <QtQuickTemplates2/private/qquickslider_p.h> +#include <QtCore/qpointer.h> + QT_BEGIN_NAMESPACE class QQuickEyeDropperEventFilter : public QObject diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickcolorinputs_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickcolorinputs_p.h index 4827627d6f..a4e428fba0 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickcolorinputs_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickcolorinputs_p.h @@ -17,16 +17,17 @@ #include <QtGui/qcolor.h> #include <QtQuick/private/qquickitem_p.h> -#include <QtQuickTemplates2/private/qquickcombobox_p.h> #include <QtQuickTemplates2/private/qquicktextfield_p.h> #include "qtquickdialogs2quickimplglobal_p.h" #include "qquickcolordialogutils_p.h" +#include <QtCore/qpointer.h> + QT_BEGIN_NAMESPACE -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickColorInputs : public QQuickItem +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickColorInputs : public QQuickItem { Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory.cpp index 9a63fb0718..594b148528 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory.cpp +++ b/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory.cpp @@ -5,9 +5,12 @@ #include <QtCore/qloggingcategory.h> +#include <QtQuick/private/qtquickglobal_p.h> +#if QT_CONFIG(quick_listview) #include "qquickplatformfiledialog_p.h" #include "qquickplatformfolderdialog_p.h" #include "qquickplatformfontdialog_p.h" +#endif #include "qquickplatformcolordialog_p.h" #include "qquickplatformmessagedialog_p.h" @@ -29,6 +32,7 @@ std::unique_ptr<QPlatformDialogHelper> QQuickDialogImplFactory::createPlatformDi dialogHelper.reset(new QQuickPlatformColorDialog(parent)); break; } +#if QT_CONFIG(quick_listview) case QQuickDialogType::FileDialog: { dialogHelper.reset(new QQuickPlatformFileDialog(parent)); break; @@ -41,6 +45,7 @@ std::unique_ptr<QPlatformDialogHelper> QQuickDialogImplFactory::createPlatformDi dialogHelper.reset(new QQuickPlatformFontDialog(parent)); break; } +#endif case QQuickDialogType::MessageDialog: { dialogHelper.reset(new QQuickPlatformMessageDialog(parent)); break; diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory_p.h index 5072c9e1cb..337c4f175a 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory_p.h @@ -25,7 +25,7 @@ QT_BEGIN_NAMESPACE -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickDialogImplFactory +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickDialogImplFactory { public: static std::unique_ptr<QPlatformDialogHelper> createPlatformDialogHelper(QQuickDialogType type, QObject *parent); diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp index 71b1fccbc5..369176f844 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate.cpp @@ -11,6 +11,7 @@ #include <QtQuickTemplates2/private/qquickitemdelegate_p_p.h> #include "qquickfiledialogimpl_p.h" +#include "qquickfiledialogimpl_p_p.h" #include "qquickfolderdialogimpl_p.h" QT_BEGIN_NAMESPACE @@ -67,6 +68,16 @@ void QQuickFileDialogDelegatePrivate::chooseFile() Q_ASSERT(fileDialog); // Otherwise it's a file, so select it and close the dialog. fileDialog->setSelectedFile(file); + + // Prioritize closing the dialog with QQuickDialogPrivate::handleClick() over QQuickDialog::accept() + const QQuickFileDialogImplAttached *attached = QQuickFileDialogImplPrivate::get(fileDialog)->attachedOrWarn(); + if (Q_LIKELY(attached)) { + auto *openButton = attached->buttonBox()->standardButton(QPlatformDialogHelper::Open); + if (Q_LIKELY(openButton)) { + emit openButton->clicked(); + return; + } + } fileDialog->accept(); } } diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate_p.h index 36804497d7..de84b91f50 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogdelegate_p.h @@ -24,7 +24,7 @@ QT_BEGIN_NAMESPACE class QQuickDialog; class QQuickFileDialogDelegatePrivate; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFileDialogDelegate : public QQuickItemDelegate +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickFileDialogDelegate : public QQuickItemDelegate { Q_OBJECT Q_PROPERTY(QQuickDialog *dialog READ dialog WRITE setDialog NOTIFY dialogChanged) @@ -55,6 +55,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickFileDialogDelegate) - #endif // QQUICKFILEDIALOGDELEGATE_P_H diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp index 72f2ea25cf..687e899d18 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp @@ -137,12 +137,24 @@ void QQuickFileDialogImplPrivate::updateSelectedFile(const QString &oldFolderPat qCDebug(lcUpdateSelectedFile).nospace() << "updateSelectedFile is setting selectedFile to " << newSelectedFileUrl << ", newSelectedFileIndex is " << newSelectedFileIndex; q->setSelectedFile(newSelectedFileUrl); + updateFileNameTextEdit(); // If the index is -1, there are no files in the directory, and so fileDialogListView's // currentIndex will already be -1. if (newSelectedFileIndex != -1) tryUpdateFileDialogListViewCurrentIndex(newSelectedFileIndex); } +void QQuickFileDialogImplPrivate::updateFileNameTextEdit() +{ + QQuickFileDialogImplAttached *attached = attachedOrWarn(); + if (Q_UNLIKELY(!attached)) + return; + + const QFileInfo fileInfo(selectedFile.toLocalFile()); + if (fileInfo.isFile()) + attached->fileNameTextField()->setText(fileInfo.fileName()); +} + QDir::SortFlags QQuickFileDialogImplPrivate::fileListSortFlags() { QDir::SortFlags sortFlags = QDir::IgnoreCase; @@ -238,14 +250,35 @@ void QQuickFileDialogImplPrivate::handleClick(QQuickAbstractButton *button) // Don't call accept(), because selecting a folder != accepting the dialog. } else { // Otherwise it's a file, so select it and close the dialog. - q->setSelectedFile(selectedFile); - q->accept(); - QQuickDialogPrivate::handleClick(button); - emit q->fileSelected(selectedFile); + + lastButtonClicked = button; + + // Unless it already exists... + const bool dontConfirmOverride = q->options()->testOption(QFileDialogOptions::DontConfirmOverwrite); + const bool isSaveMode = q->options()->fileMode() == QFileDialogOptions::AnyFile; + if (QQuickFileDialogImplAttached *attached = attachedOrWarn(); + attached && fileInfo.exists() && isSaveMode && !dontConfirmOverride) { + QQuickDialog *confirmationDialog = attached->overwriteConfirmationDialog(); + confirmationDialog->open(); + static_cast<QQuickDialogButtonBox *>(confirmationDialog->footer())->standardButton(QPlatformDialogHelper::Yes) + ->forceActiveFocus(Qt::PopupFocusReason); + } else { + selectFile(); + } } } } +void QQuickFileDialogImplPrivate::selectFile() +{ + Q_Q(QQuickFileDialogImpl); + Q_ASSERT(lastButtonClicked); + q->setSelectedFile(selectedFile); + q->accept(); + QQuickDialogPrivate::handleClick(lastButtonClicked); + emit q->fileSelected(selectedFile); +} + QQuickFileDialogImpl::QQuickFileDialogImpl(QObject *parent) : QQuickDialog(*(new QQuickFileDialogImplPrivate), parent) { @@ -332,6 +365,7 @@ void QQuickFileDialogImpl::setInitialCurrentFolderAndSelectedFile(const QUrl &fi qCDebug(lcSelectedFile) << "setting initial currentFolder to" << fileDirUrl << "and selectedFile to" << file; setCurrentFolder(fileDirUrl, QQuickFileDialogImpl::SetReason::Internal); setSelectedFile(file); + d->updateFileNameTextEdit(); d->setCurrentIndexToInitiallySelectedFile = true; // If the currentFolder didn't change, the FolderListModel won't change and @@ -426,8 +460,11 @@ void QQuickFileDialogImpl::setAcceptLabel(const QString &label) return; } + auto buttonType = (d->options && d->options->acceptMode() == QFileDialogOptions::AcceptSave) + ? QPlatformDialogHelper::Save + : QPlatformDialogHelper::Open; acceptButton->setText(!label.isEmpty() - ? label : QQuickDialogButtonBoxPrivate::buttonText(QPlatformDialogHelper::Open)); + ? label : QQuickDialogButtonBoxPrivate::buttonText(buttonType)); } void QQuickFileDialogImpl::setRejectLabel(const QString &label) @@ -467,7 +504,15 @@ void QQuickFileDialogImpl::setFileName(const QString &fileName) if (previous == fileName) return; - setSelectedFile(QUrl(currentFolder().path() + u'/' + fileName)); + QUrl newSelectedFile; + newSelectedFile.setScheme(currentFolder().scheme()); + newSelectedFile.setPath(currentFolder().path() + u'/' + fileName); + setSelectedFile(newSelectedFile); +} + +QString QQuickFileDialogImpl::currentFolderName() const +{ + return QDir(currentFolder().toLocalFile()).dirName(); } void QQuickFileDialogImpl::componentComplete() @@ -561,6 +606,7 @@ void QQuickFileDialogImplAttachedPrivate::fileDialogListViewCurrentIndexChanged( auto fileDialogImplPrivate = QQuickFileDialogImplPrivate::get(fileDialogImpl); if (moveReason != QQuickItemViewPrivate::Other) { fileDialogImpl->setSelectedFile(fileDialogDelegate->file()); + fileDialogImplPrivate->updateFileNameTextEdit(); } else if (fileDialogImplPrivate->setCurrentIndexToInitiallySelectedFile) { // When setting selectedFile before opening the FileDialog, // we need to ensure that the currentIndex is correct, because the initial change @@ -573,7 +619,17 @@ void QQuickFileDialogImplAttachedPrivate::fileDialogListViewCurrentIndexChanged( } } -void QQuickFileDialogImplAttachedPrivate::fileNameChangedByUser() +void QQuickFileDialogImplAttachedPrivate::fileNameEditedByUser() +{ + if (!buttonBox) + return; + auto openButton = buttonBox->standardButton(QPlatformDialogHelper::Open); + if (!openButton || !fileNameTextField) + return; + openButton->setEnabled(!fileNameTextField->text().isEmpty()); +} + +void QQuickFileDialogImplAttachedPrivate::fileNameEditingByUserFinished() { auto fileDialogImpl = qobject_cast<QQuickFileDialogImpl *>(parent); if (!fileDialogImpl) @@ -740,19 +796,50 @@ void QQuickFileDialogImplAttached::setFileNameTextField(QQuickTextField *fileNam if (fileNameTextField == d->fileNameTextField) return; - if (d->fileNameTextField) + if (d->fileNameTextField) { QObjectPrivate::disconnect(d->fileNameTextField, &QQuickTextField::editingFinished, - d, &QQuickFileDialogImplAttachedPrivate::fileNameChangedByUser); + d, &QQuickFileDialogImplAttachedPrivate::fileNameEditingByUserFinished); + QObjectPrivate::disconnect(d->fileNameTextField, &QQuickTextField::textEdited, + d, &QQuickFileDialogImplAttachedPrivate::fileNameEditedByUser); + } d->fileNameTextField = fileNameTextField; - if (d->fileNameTextField) + if (d->fileNameTextField) { QObjectPrivate::connect(d->fileNameTextField, &QQuickTextField::editingFinished, - d, &QQuickFileDialogImplAttachedPrivate::fileNameChangedByUser); - + d, &QQuickFileDialogImplAttachedPrivate::fileNameEditingByUserFinished); + QObjectPrivate::connect(d->fileNameTextField, &QQuickTextField::textEdited, + d, &QQuickFileDialogImplAttachedPrivate::fileNameEditedByUser); + } emit fileNameTextFieldChanged(); } +QQuickDialog *QQuickFileDialogImplAttached::overwriteConfirmationDialog() const +{ + Q_D(const QQuickFileDialogImplAttached); + return d->overwriteConfirmationDialog; +} + +void QQuickFileDialogImplAttached::setOverwriteConfirmationDialog(QQuickDialog *dialog) +{ + Q_D(QQuickFileDialogImplAttached); + if (dialog == d->overwriteConfirmationDialog) + return; + + QQuickFileDialogImpl *fileDialogImpl = qobject_cast<QQuickFileDialogImpl*>(parent()); + if (d->overwriteConfirmationDialog && fileDialogImpl) + QObjectPrivate::disconnect(d->overwriteConfirmationDialog, &QQuickDialog::accepted, + QQuickFileDialogImplPrivate::get(fileDialogImpl), &QQuickFileDialogImplPrivate::selectFile); + + d->overwriteConfirmationDialog = dialog; + + if (d->overwriteConfirmationDialog && fileDialogImpl) + QObjectPrivate::connect(d->overwriteConfirmationDialog, &QQuickDialog::accepted, + QQuickFileDialogImplPrivate::get(fileDialogImpl), &QQuickFileDialogImplPrivate::selectFile, Qt::QueuedConnection); + + emit overwriteConfirmationDialogChanged(); +} + QT_END_NAMESPACE #include "moc_qquickfiledialogimpl_p.cpp" diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl_p.h index 4c64c5e4dd..f024892a97 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl_p.h @@ -33,7 +33,7 @@ class QQuickFileDialogImplPrivate; class QQuickFileNameFilter; class QQuickFolderBreadcrumbBar; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFileDialogImpl : public QQuickDialog +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickFileDialogImpl : public QQuickDialog { Q_OBJECT Q_PROPERTY(QUrl currentFolder READ currentFolder WRITE setCurrentFolder NOTIFY currentFolderChanged FINAL) @@ -41,6 +41,7 @@ class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFileDialogImpl : public QQui Q_PROPERTY(QStringList nameFilters READ nameFilters NOTIFY nameFiltersChanged FINAL) Q_PROPERTY(QQuickFileNameFilter *selectedNameFilter READ selectedNameFilter CONSTANT) Q_PROPERTY(QString fileName READ fileName WRITE setFileName NOTIFY selectedFileChanged FINAL) + Q_PROPERTY(QString currentFolderName READ currentFolderName NOTIFY selectedFileChanged FINAL) QML_NAMED_ELEMENT(FileDialogImpl) QML_ATTACHED(QQuickFileDialogImplAttached) QML_ADDED_IN_VERSION(6, 2) @@ -80,6 +81,8 @@ public: QString fileName() const; void setFileName(const QString &fileName); + QString currentFolderName() const; + public Q_SLOTS: void selectNameFilter(const QString &filter); @@ -98,7 +101,7 @@ private: Q_DECLARE_PRIVATE(QQuickFileDialogImpl) }; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFileDialogImplAttached : public QObject +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickFileDialogImplAttached : public QObject { Q_OBJECT Q_PROPERTY(QQuickDialogButtonBox *buttonBox READ buttonBox WRITE setButtonBox NOTIFY buttonBoxChanged FINAL) @@ -107,6 +110,7 @@ class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFileDialogImplAttached : pub Q_PROPERTY(QQuickFolderBreadcrumbBar *breadcrumbBar READ breadcrumbBar WRITE setBreadcrumbBar NOTIFY breadcrumbBarChanged) Q_PROPERTY(QQuickLabel *fileNameLabel READ fileNameLabel WRITE setFileNameLabel NOTIFY fileNameLabelChanged FINAL) Q_PROPERTY(QQuickTextField *fileNameTextField READ fileNameTextField WRITE setFileNameTextField NOTIFY fileNameTextFieldChanged FINAL) + Q_PROPERTY(QQuickDialog *overwriteConfirmationDialog READ overwriteConfirmationDialog WRITE setOverwriteConfirmationDialog NOTIFY overwriteConfirmationDialogChanged FINAL) Q_MOC_INCLUDE(<QtQuickTemplates2/private/qquickdialogbuttonbox_p.h>) Q_MOC_INCLUDE(<QtQuickTemplates2/private/qquickcombobox_p.h>) Q_MOC_INCLUDE(<QtQuickTemplates2/private/qquicktextfield_p.h>) @@ -136,6 +140,9 @@ public: QQuickTextField *fileNameTextField() const; void setFileNameTextField(QQuickTextField *fileNameTextField); + QQuickDialog *overwriteConfirmationDialog() const; + void setOverwriteConfirmationDialog(QQuickDialog *dialog); + Q_SIGNALS: void buttonBoxChanged(); void nameFiltersComboBoxChanged(); @@ -143,6 +150,7 @@ Q_SIGNALS: void breadcrumbBarChanged(); void fileNameLabelChanged(); void fileNameTextFieldChanged(); + void overwriteConfirmationDialogChanged(); private: Q_DISABLE_COPY(QQuickFileDialogImplAttached) @@ -151,6 +159,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickFileDialogImpl) - #endif // QQUICKFILEDIALOGIMPL_P_H diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl_p_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl_p_p.h index 6f3cc55e86..66a77ab5e0 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl_p_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl_p_p.h @@ -23,11 +23,13 @@ #include "qquickfiledialogimpl_p.h" +#include <QtCore/qpointer.h> + QT_BEGIN_NAMESPACE class QQuickFileNameFilter; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFileDialogImplPrivate : public QQuickDialogPrivate +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickFileDialogImplPrivate : public QQuickDialogPrivate { public: Q_DECLARE_PUBLIC(QQuickFileDialogImpl) @@ -45,6 +47,7 @@ public: void updateEnabled(); void updateSelectedFile(const QString &oldFolderPath); + void updateFileNameTextEdit(); static QDir::SortFlags fileListSortFlags(); static QFileInfoList fileList(const QDir &dir); void setFileDialogListViewCurrentIndex(int newCurrentIndex); @@ -53,10 +56,12 @@ public: void handleAccept() override; void handleClick(QQuickAbstractButton *button) override; + void selectFile(); QSharedPointer<QFileDialogOptions> options; QUrl currentFolder; QUrl selectedFile; + QQuickAbstractButton *lastButtonClicked = nullptr; QStringList nameFilters; mutable QQuickFileNameFilter *selectedNameFilter = nullptr; QString acceptLabel; @@ -70,7 +75,8 @@ class QQuickFileDialogImplAttachedPrivate : public QObjectPrivate { void nameFiltersComboBoxItemActivated(int index); void fileDialogListViewCurrentIndexChanged(); - void fileNameChangedByUser(); + void fileNameEditedByUser(); + void fileNameEditingByUserFinished(); public: Q_DECLARE_PUBLIC(QQuickFileDialogImplAttached) @@ -81,6 +87,7 @@ public: QPointer<QQuickFolderBreadcrumbBar> breadcrumbBar; QPointer<QQuickLabel> fileNameLabel; QPointer<QQuickTextField> fileNameTextField; + QPointer<QQuickDialog> overwriteConfirmationDialog; }; QT_END_NAMESPACE diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfolderbreadcrumbbar_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickfolderbreadcrumbbar_p.h index d210112b33..ce952c453b 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfolderbreadcrumbbar_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfolderbreadcrumbbar_p.h @@ -25,7 +25,7 @@ QT_BEGIN_NAMESPACE class QQuickFolderBreadcrumbBarPrivate; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFolderBreadcrumbBar : public QQuickContainer +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickFolderBreadcrumbBar : public QQuickContainer { Q_OBJECT Q_PROPERTY(QQuickDialog *dialog READ dialog WRITE setDialog NOTIFY dialogChanged) @@ -89,6 +89,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickFolderBreadcrumbBar) - #endif // QQUICKFOLDERBREADCRUMBBAR_P_H diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfolderbreadcrumbbar_p_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickfolderbreadcrumbbar_p_p.h index 42c794256d..4ad6c5280a 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfolderbreadcrumbbar_p_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfolderbreadcrumbbar_p_p.h @@ -27,7 +27,7 @@ class QQuickTextField; class QQuickFileDialogImpl; class QQuickFolderDialogImpl; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFolderBreadcrumbBarPrivate : public QQuickContainerPrivate +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickFolderBreadcrumbBarPrivate : public QQuickContainerPrivate { public: Q_DECLARE_PUBLIC(QQuickFolderBreadcrumbBar) diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfolderdialogimpl_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickfolderdialogimpl_p.h index 021ef5479a..fe92ac1525 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfolderdialogimpl_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfolderdialogimpl_p.h @@ -29,7 +29,7 @@ class QQuickFolderDialogImplAttachedPrivate; class QQuickFolderDialogImplPrivate; class QQuickFolderBreadcrumbBar; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFolderDialogImpl : public QQuickDialog +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickFolderDialogImpl : public QQuickDialog { Q_OBJECT Q_PROPERTY(QUrl currentFolder READ currentFolder WRITE setCurrentFolder NOTIFY currentFolderChanged FINAL) @@ -68,7 +68,7 @@ private: Q_DECLARE_PRIVATE(QQuickFolderDialogImpl) }; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFolderDialogImplAttached : public QObject +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickFolderDialogImplAttached : public QObject { Q_OBJECT Q_PROPERTY(QQuickListView *folderDialogListView READ folderDialogListView WRITE setFolderDialogListView NOTIFY folderDialogListViewChanged) @@ -95,6 +95,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickFolderDialogImpl) - #endif // QQUICKFOLDERDIALOGIMPL_P_H diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfolderdialogimpl_p_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickfolderdialogimpl_p_p.h index b5abda79ad..329391a972 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfolderdialogimpl_p_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfolderdialogimpl_p_p.h @@ -20,6 +20,8 @@ #include "qquickfolderdialogimpl_p.h" +#include <QtCore/qpointer.h> + QT_BEGIN_NAMESPACE class QQuickFolderDialogImplPrivate : public QQuickDialogPrivate diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfontdialogimpl_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickfontdialogimpl_p.h index 6c30eb2474..313caf327a 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfontdialogimpl_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfontdialogimpl_p.h @@ -32,7 +32,7 @@ class QQuickFontDialogImplAttached; class QQuickFontDialogImplAttachedPrivate; class QQuickFontDialogImplPrivate; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFontDialogImpl : public QQuickDialog +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickFontDialogImpl : public QQuickDialog { Q_OBJECT Q_PROPERTY(QFont currentFont READ currentFont WRITE setCurrentFont NOTIFY currentFontChanged FINAL) @@ -65,7 +65,7 @@ private: Q_DECLARE_PRIVATE(QQuickFontDialogImpl) }; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFontDialogImplAttached : public QObject +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickFontDialogImplAttached : public QObject { Q_OBJECT Q_PROPERTY(QQuickListView *familyListView READ familyListView WRITE setFamilyListView @@ -178,6 +178,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickFontDialogImpl) - #endif // QQUICKFONTDIALOGIMPL_P_H diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfontdialogimpl_p_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickfontdialogimpl_p_p.h index cd2ceb49b4..e7bbe9f474 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfontdialogimpl_p_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfontdialogimpl_p_p.h @@ -21,6 +21,8 @@ #include "qquickfontdialogimpl_p.h" +#include <QtCore/qpointer.h> + QT_BEGIN_NAMESPACE class QQuickFontDialogImplPrivate : public QQuickDialogPrivate diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp index d80011d127..578da61559 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp +++ b/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp @@ -21,8 +21,6 @@ void QQuickMessageDialogImplPrivate::handleClick(QQuickAbstractButton *button) emit q->buttonClicked(standardButton, role); } - - QQuickDialogPrivate::handleClick(button); } QQuickMessageDialogImplAttached *QQuickMessageDialogImplPrivate::attachedOrWarn() @@ -125,13 +123,9 @@ void QQuickMessageDialogImplAttached::setButtonBox(QQuickDialogButtonBox *button QQuickMessageDialogImpl *messageDialogImpl = qobject_cast<QQuickMessageDialogImpl *>(parent()); if (messageDialogImpl) { - auto dialogPrivate = QQuickDialogPrivate::get(messageDialogImpl); - QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::accepted, - dialogPrivate, &QQuickDialogPrivate::handleAccept); - QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::rejected, - dialogPrivate, &QQuickDialogPrivate::handleReject); + auto dialogPrivate = QQuickMessageDialogImplPrivate::get(messageDialogImpl); QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::clicked, dialogPrivate, - &QQuickDialogPrivate::handleClick); + &QQuickMessageDialogImplPrivate::handleClick); } } @@ -141,13 +135,9 @@ void QQuickMessageDialogImplAttached::setButtonBox(QQuickDialogButtonBox *button QQuickMessageDialogImpl *messageDialogImpl = qobject_cast<QQuickMessageDialogImpl *>(parent()); if (messageDialogImpl) { - auto dialogPrivate = QQuickDialogPrivate::get(messageDialogImpl); - QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::accepted, dialogPrivate, - &QQuickDialogPrivate::handleAccept); - QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::rejected, dialogPrivate, - &QQuickDialogPrivate::handleReject); + auto dialogPrivate = QQuickMessageDialogImplPrivate::get(messageDialogImpl); QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::clicked, dialogPrivate, - &QQuickDialogPrivate::handleClick); + &QQuickMessageDialogImplPrivate::handleClick); } } diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl_p.h index c7871b8d11..317b0e4eda 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl_p.h @@ -29,7 +29,7 @@ class QQuickMessageDialogImplAttached; class QQuickMessageDialogImplAttachedPrivate; class QQuickMessageDialogImplPrivate; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickMessageDialogImpl : public QQuickDialog +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickMessageDialogImpl : public QQuickDialog { Q_OBJECT Q_PROPERTY(QString text READ text NOTIFY optionsChanged) @@ -66,7 +66,7 @@ private: Q_DECLARE_PRIVATE(QQuickMessageDialogImpl) }; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickMessageDialogImplAttached : public QObject +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickMessageDialogImplAttached : public QObject { Q_OBJECT Q_PROPERTY(QQuickDialogButtonBox *buttonBox READ buttonBox WRITE setButtonBox NOTIFY @@ -93,6 +93,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickMessageDialogImpl) - #endif // QQUICKMESSAGEDIALOGIMPL_P_H diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl_p_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl_p_p.h index dca7ad218c..c2a66eae28 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl_p_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl_p_p.h @@ -19,6 +19,8 @@ #include "qquickmessagedialogimpl_p.h" +#include <QtCore/qpointer.h> + QT_BEGIN_NAMESPACE class QQuickMessageDialogImplPrivate : public QQuickDialogPrivate diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickplatformcolordialog_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickplatformcolordialog_p.h index fa4aef9be2..f6fbf83226 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickplatformcolordialog_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickplatformcolordialog_p.h @@ -24,7 +24,7 @@ QT_BEGIN_NAMESPACE class QQuickColorDialogImpl; class QWindow; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickPlatformColorDialog +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickPlatformColorDialog : public QPlatformColorDialogHelper { Q_OBJECT diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickplatformfiledialog_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickplatformfiledialog_p.h index 0e0dedf71a..614ec6441a 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickplatformfiledialog_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickplatformfiledialog_p.h @@ -24,7 +24,7 @@ QT_BEGIN_NAMESPACE class QQuickFileDialogImpl; class QWindow; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickPlatformFileDialog : public QPlatformFileDialogHelper +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickPlatformFileDialog : public QPlatformFileDialogHelper { Q_OBJECT diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickplatformfolderdialog_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickplatformfolderdialog_p.h index 73e2b2899b..6dc7f31945 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickplatformfolderdialog_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickplatformfolderdialog_p.h @@ -25,7 +25,7 @@ QT_BEGIN_NAMESPACE class QQuickFileDialogImpl; class QWindow; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickPlatformFolderDialog : public QPlatformFileDialogHelper +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickPlatformFolderDialog : public QPlatformFileDialogHelper { Q_OBJECT diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickplatformfontdialog_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickplatformfontdialog_p.h index ec7ecc7bfe..31f3639218 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickplatformfontdialog_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickplatformfontdialog_p.h @@ -24,7 +24,7 @@ QT_BEGIN_NAMESPACE class QQuickFontDialogImpl; class QWindow; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickPlatformFontDialog +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickPlatformFontDialog : public QPlatformFontDialogHelper { Q_OBJECT diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickplatformmessagedialog_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickplatformmessagedialog_p.h index 86e44dd85d..77f6fe2b26 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickplatformmessagedialog_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquickplatformmessagedialog_p.h @@ -22,7 +22,7 @@ QT_BEGIN_NAMESPACE -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickPlatformMessageDialog +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickPlatformMessageDialog : public QPlatformMessageDialogHelper { Q_OBJECT diff --git a/src/quickdialogs/quickdialogsquickimpl/qquicksaturationlightnesspicker_p.h b/src/quickdialogs/quickdialogsquickimpl/qquicksaturationlightnesspicker_p.h index 1263e9173f..d08cbaf934 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquicksaturationlightnesspicker_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qquicksaturationlightnesspicker_p.h @@ -22,7 +22,7 @@ QT_BEGIN_NAMESPACE class QQuickSaturationLightnessPickerPrivate; -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickSaturationLightnessPicker +class Q_QUICKDIALOGS2QUICKIMPL_EXPORT QQuickSaturationLightnessPicker : public QQuickAbstractColorPicker { Q_OBJECT @@ -41,6 +41,4 @@ private: QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickSaturationLightnessPicker) - #endif // QQUICKSATURATIONLIGHTNESSPICKER_P_H diff --git a/src/quickdialogs/quickdialogsquickimpl/qtquickdialogs2quickimplglobal_p.h b/src/quickdialogs/quickdialogsquickimpl/qtquickdialogs2quickimplglobal_p.h index ec593f048d..53b3bbf510 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qtquickdialogs2quickimplglobal_p.h +++ b/src/quickdialogs/quickdialogsquickimpl/qtquickdialogs2quickimplglobal_p.h @@ -17,6 +17,6 @@ #include <QtCore/qglobal.h> #include <QtQml/private/qqmlglobal_p.h> -#include <QtQuickDialogs2QuickImpl/private/qtquickdialogs2quickimplexports_p.h> +#include <QtQuickDialogs2QuickImpl/qtquickdialogs2quickimplexports.h> #endif // QTQUICKDIALOGS2QUICKIMPLGLOBAL_P_H diff --git a/src/quickdialogs/quickdialogsquickimpl/shaders/SaturationLightness.frag b/src/quickdialogs/quickdialogsquickimpl/shaders/SaturationLightness.frag index eb69d83ca6..ad2b23faa1 100644 --- a/src/quickdialogs/quickdialogsquickimpl/shaders/SaturationLightness.frag +++ b/src/quickdialogs/quickdialogsquickimpl/shaders/SaturationLightness.frag @@ -1,3 +1,6 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + // Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only diff --git a/src/quickdialogs/quickdialogsutils/CMakeLists.txt b/src/quickdialogs/quickdialogsutils/CMakeLists.txt index 32c175241b..7254a98e44 100644 --- a/src/quickdialogs/quickdialogsutils/CMakeLists.txt +++ b/src/quickdialogs/quickdialogsutils/CMakeLists.txt @@ -24,6 +24,4 @@ qt_internal_add_module(QuickDialogs2Utils Qt::GuiPrivate PUBLIC_LIBRARIES Qt::Core - GENERATE_CPP_EXPORTS - GENERATE_PRIVATE_CPP_EXPORTS -) + ) diff --git a/src/quickdialogs/quickdialogsutils/qquickfilenamefilter_p.h b/src/quickdialogs/quickdialogsutils/qquickfilenamefilter_p.h index 20722f01fa..dd3ff80d36 100644 --- a/src/quickdialogs/quickdialogsutils/qquickfilenamefilter_p.h +++ b/src/quickdialogs/quickdialogsutils/qquickfilenamefilter_p.h @@ -24,7 +24,7 @@ QT_BEGIN_NAMESPACE -class Q_QUICKDIALOGS2UTILS_PRIVATE_EXPORT QQuickFileNameFilter : public QObject +class Q_QUICKDIALOGS2UTILS_EXPORT QQuickFileNameFilter : public QObject { Q_OBJECT Q_PROPERTY(int index READ index WRITE setIndex NOTIFY indexChanged FINAL) diff --git a/src/quickdialogs/quickdialogsutils/qtquickdialogs2utilsglobal_p.h b/src/quickdialogs/quickdialogsutils/qtquickdialogs2utilsglobal_p.h index 6a59111d14..02a4edfdb1 100644 --- a/src/quickdialogs/quickdialogsutils/qtquickdialogs2utilsglobal_p.h +++ b/src/quickdialogs/quickdialogsutils/qtquickdialogs2utilsglobal_p.h @@ -16,6 +16,6 @@ // #include <QtCore/qglobal.h> -#include <QtQuickDialogs2Utils/private/qtquickdialogs2utilsexports_p.h> +#include <QtQuickDialogs2Utils/qtquickdialogs2utilsexports.h> #endif // QTQUICKDIALOGS2UTILSUTILSGLOBAL_P_H |