From fe71adc5cd9e94ac85f2581bba5f5ae768347b46 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Fri, 19 Oct 2012 19:43:43 +0200 Subject: [PATCH] Add a couple of dialogs --- declarativeobjects.cpp | 32 ++++++++++++++++++++++ declarativeobjects_p.h | 34 ++++++++++++++++++++++++ declarativewidgetdocument.cpp | 4 +++ declarativewidgets.pro | 3 +- dialogs.qml | 58 +++++++++++++++++++++++++++++++++++++++++ objectadaptors.cpp | 13 +++++++++ objectadaptors_p.h | 46 ++++++++++++++++++++++++++++++++ 7 files changed, 189 insertions(+), 1 deletions(-) create mode 100644 dialogs.qml diff --git a/declarativeobjects.cpp b/declarativeobjects.cpp index b368896..ca53f6e 100644 --- a/declarativeobjects.cpp +++ b/declarativeobjects.cpp @@ -638,6 +638,14 @@ DeclarativeCheckBox::DeclarativeCheckBox(QObject *parent) : DeclarativeWidgetPro CUSTOM_METAOBJECT(DeclarativeCheckBox, QCheckBox) +// DeclarativeColorDialog +DeclarativeColorDialog::DeclarativeColorDialog(QObject *parent) : DeclarativeWidgetProxy(parent) +{ + connectAllSignals(m_proxiedObject, this); +} + +CUSTOM_METAOBJECT(DeclarativeColorDialog, QColorDialog) + // DeclarativeDialog DeclarativeDialog::DeclarativeDialog(QObject *parent) : DeclarativeWidgetProxy(parent) { @@ -654,6 +662,30 @@ DeclarativeDialogButtonBox::DeclarativeDialogButtonBox(QObject *parent) : Declar CUSTOM_METAOBJECT(DeclarativeDialogButtonBox, QDialogButtonBox) +// DeclarativeFileDialog +DeclarativeFileDialog::DeclarativeFileDialog(QObject *parent) : DeclarativeWidgetProxy(parent) +{ + connectAllSignals(m_proxiedObject, this); +} + +CUSTOM_METAOBJECT(DeclarativeFileDialog, FileDialog) + +// DeclarativeFontDialog +DeclarativeFontDialog::DeclarativeFontDialog(QObject *parent) : DeclarativeWidgetProxy(parent) +{ + connectAllSignals(m_proxiedObject, this); +} + +CUSTOM_METAOBJECT(DeclarativeFontDialog, QFontDialog) + +// DeclarativeInputDialog +DeclarativeInputDialog::DeclarativeInputDialog(QObject *parent) : DeclarativeWidgetProxy(parent) +{ + connectAllSignals(m_proxiedObject, this); +} + +CUSTOM_METAOBJECT(DeclarativeInputDialog, InputDialog) + // DeclarativeLabel DeclarativeLabel::DeclarativeLabel(QObject *parent) : DeclarativeWidgetProxy(parent) { diff --git a/declarativeobjects_p.h b/declarativeobjects_p.h index 8d0b86e..4243f0c 100644 --- a/declarativeobjects_p.h +++ b/declarativeobjects_p.h @@ -8,8 +8,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -395,6 +397,14 @@ class DeclarativeCheckBox : public DeclarativeWidgetProxy DeclarativeCheckBox(QObject *parent = 0); }; +class DeclarativeColorDialog : public DeclarativeWidgetProxy +{ + DECLARATIVE_OBJECT + + public: + DeclarativeColorDialog(QObject *parent = 0); +}; + class DeclarativeDialog : public DeclarativeWidgetProxy { DECLARATIVE_OBJECT @@ -411,6 +421,30 @@ class DeclarativeDialogButtonBox : public DeclarativeWidgetProxy +{ + DECLARATIVE_OBJECT + + public: + DeclarativeFileDialog(QObject *parent = 0); +}; + +class DeclarativeFontDialog : public DeclarativeWidgetProxy +{ + DECLARATIVE_OBJECT + + public: + DeclarativeFontDialog(QObject *parent = 0); +}; + +class DeclarativeInputDialog : public DeclarativeWidgetProxy +{ + DECLARATIVE_OBJECT + + public: + DeclarativeInputDialog(QObject *parent = 0); +}; + class DeclarativeLabel : public DeclarativeWidgetProxy { DECLARATIVE_OBJECT diff --git a/declarativewidgetdocument.cpp b/declarativewidgetdocument.cpp index 6607a4a..93f0b03 100644 --- a/declarativewidgetdocument.cpp +++ b/declarativewidgetdocument.cpp @@ -46,8 +46,12 @@ DeclarativeWidgetDocument::DeclarativeWidgetDocument(const QUrl &url, QObject *p // widgets qmlRegisterType("QtGui", 1, 0, "CalendarWidget"); qmlRegisterType("QtGui", 1, 0, "CheckBox"); + qmlRegisterType("QtGui", 1, 0, "ColorDialog"); qmlRegisterType("QtGui", 1, 0, "Dialog"); qmlRegisterType("QtGui", 1, 0, "DialogButtonBox"); + qmlRegisterType("QtGui", 1, 0, "FileDialog"); + qmlRegisterType("QtGui", 1, 0, "FontDialog"); + qmlRegisterType("QtGui", 1, 0, "InputDialog"); qmlRegisterType("QtGui", 1, 0, "Label"); qmlRegisterType("QtGui", 1, 0, "MainWindow"); qmlRegisterType("QtGui", 1, 0, "Menu"); diff --git a/declarativewidgets.pro b/declarativewidgets.pro index 4d13136..95c13ac 100644 --- a/declarativewidgets.pro +++ b/declarativewidgets.pro @@ -24,8 +24,9 @@ SOURCES += \ QT += declarative OTHER_FILES += \ - layouts.qml \ animation.qml \ + dialogs.qml \ editor.qml \ gallery.qml \ + layouts.qml \ test.qml diff --git a/dialogs.qml b/dialogs.qml new file mode 100644 index 0000000..a87cf4c --- /dev/null +++ b/dialogs.qml @@ -0,0 +1,58 @@ +import QtGui 1.0 + +Widget { + ColorDialog { + id: colorDialog + } + + FileDialog { + id: fileDialog + + fileMode: FileDialog.ExistingFile + viewMode: FileDialog.List + } + + FontDialog { + id: fontDialog + } + + InputDialog { + id: intInputDialog + + labelText: qsTr("Percentage") + } + + VBoxLayout { + PushButton { + text: qsTr("Color Dialog...") + onClicked: { + if (colorDialog.exec()) + console.log("Selected color: " + colorDialog.currentColor) + } + } + + PushButton { + text: qsTr("File Dialog...") + onClicked: { + if (fileDialog.exec()) + console.log("Selected files: " + fileDialog.selectedFiles) + } + } + + PushButton { + text: qsTr("Font Dialog...") + onClicked: { + if (fontDialog.exec()) + console.log("Selected font: " + fontDialog.currentFont) + } + } + + PushButton { + text: qsTr("Input Dialog (Int)...") + onClicked: { + if (intInputDialog.exec()) + console.log(intInputDialog.intValue + "%") + } + } + } +} diff --git a/objectadaptors.cpp b/objectadaptors.cpp index ca7bc0c..d3f44b6 100644 --- a/objectadaptors.cpp +++ b/objectadaptors.cpp @@ -1,5 +1,18 @@ #include "objectadaptors_p.h" +FileDialog::FileDialog(QWidget *parent) + : QFileDialog(parent) +{ +} + +InputDialog::InputDialog(QWidget *parent) + : QInputDialog(parent) +{ + connect(this, SIGNAL(textValueChanged(QString)), this, SIGNAL(customTextValueChanged())); + connect(this, SIGNAL(intValueChanged(int)), this, SIGNAL(customIntValueChanged())); + connect(this, SIGNAL(doubleValueChanged(double)), this, SIGNAL(customDoubleValueChanged())); +} + TextEdit::TextEdit(QWidget *parent) : QTextEdit(parent) { diff --git a/objectadaptors_p.h b/objectadaptors_p.h index c485ce8..11e22f7 100644 --- a/objectadaptors_p.h +++ b/objectadaptors_p.h @@ -1,8 +1,54 @@ #ifndef OBJECTADAPTORS_P_H #define OBJECTADAPTORS_P_H +#include +#include #include +class FileDialog : public QFileDialog +{ + Q_OBJECT + + Q_PROPERTY(QStringList selectedFiles READ selectedFiles) + + public: + FileDialog(QWidget *parent = 0); +}; + +class InputDialog : public QInputDialog +{ + Q_OBJECT + + Q_PROPERTY(InputMode inputMode READ inputMode WRITE setInputMode) + Q_PROPERTY(QString labelText READ labelText WRITE setLabelText) + Q_PROPERTY(InputDialogOptions options READ options WRITE setOptions) + Q_PROPERTY(QString textValue READ textValue WRITE setTextValue NOTIFY customTextValueChanged) + Q_PROPERTY(int intValue READ intValue WRITE setIntValue NOTIFY customIntValueChanged) + Q_PROPERTY(int doubleValue READ doubleValue WRITE setDoubleValue NOTIFY customDoubleValueChanged) + Q_PROPERTY(QLineEdit::EchoMode textEchoMode READ textEchoMode WRITE setTextEchoMode) + Q_PROPERTY(bool comboBoxEditable READ isComboBoxEditable WRITE setComboBoxEditable) + Q_PROPERTY(QStringList comboBoxItems READ comboBoxItems WRITE setComboBoxItems) + Q_PROPERTY(int intMinimum READ intMinimum WRITE setIntMinimum) + Q_PROPERTY(int intMaximum READ intMaximum WRITE setIntMaximum) + Q_PROPERTY(int intStep READ intStep WRITE setIntStep) + Q_PROPERTY(double doubleMinimum READ doubleMinimum WRITE setDoubleMinimum) + Q_PROPERTY(double doubleMaximum READ doubleMaximum WRITE setDoubleMaximum) + Q_PROPERTY(int doubleDecimals READ doubleDecimals WRITE setDoubleDecimals) + Q_PROPERTY(QString okButtonText READ okButtonText WRITE setOkButtonText) + Q_PROPERTY(QString cancelButtonText READ cancelButtonText WRITE setCancelButtonText) + + Q_ENUMS(InputMode) + Q_ENUMS(InputDialogOption) + + public: + InputDialog(QWidget *parent = 0); + + Q_SIGNALS: + void customTextValueChanged(); + void customIntValueChanged(); + void customDoubleValueChanged(); +}; + class TextEdit : public QTextEdit { Q_OBJECT -- 1.7.2.5