From 8545192ef8ca0ec9691abcce8cecb40e2788afab Mon Sep 17 00:00:00 2001 From: arcan1s Date: Thu, 22 Oct 2015 02:52:06 +0300 Subject: [PATCH] move dialog part to qml files --- .../package/contents/ui/advanced.qml | 63 ++++++++++++- .../awesome-widget/plugin/awconfighelper.cpp | 89 +++---------------- .../awesome-widget/plugin/awconfighelper.h | 9 +- 3 files changed, 80 insertions(+), 81 deletions(-) diff --git a/sources/awesome-widget/package/contents/ui/advanced.qml b/sources/awesome-widget/package/contents/ui/advanced.qml index 1ec7ba6..01bcd58 100644 --- a/sources/awesome-widget/package/contents/ui/advanced.qml +++ b/sources/awesome-widget/package/contents/ui/advanced.qml @@ -17,6 +17,7 @@ import QtQuick 2.0 import QtQuick.Controls 1.3 as QtControls +import QtQuick.Dialogs 1.2 as QtDialogs import org.kde.plasma.private.awesomewidget 1.0 @@ -371,7 +372,31 @@ Item { QtControls.Button { width: parent.width * 3 / 5 text: i18n("Export configuration") - onClicked: awConfig.exportConfiguration(plasmoid.configuration) + onClicked: saveConfigAs.open() + } + + QtDialogs.FileDialog { + id: saveConfigAs + selectExisting: false + title: i18n("Export") + onAccepted: { + var status = awConfig.exportConfiguration( + plasmoid.configuration, + saveConfigAs.fileUrl.toString().replace("file://", "")) + if (status) { + messageDialog.title = i18n("Success") + messageDialog.text = i18n("Please note that binary files were not copied") + } else { + messageDialog.title = i18n("Ooops...") + messageDialog.text = i18n("Could not save configuration file") + } + messageDialog.open() + } + } + + QtDialogs.MessageDialog { + id: messageDialog + standardButtons: QtDialogs.StandardButton.Ok } } @@ -385,9 +410,41 @@ Item { QtControls.Button { width: parent.width * 3 / 5 text: i18n("Import configuration") - onClicked: { + onClicked: openConfig.open() + } + + QtDialogs.FileDialog { + id: openConfig + title: i18n("Import") + onAccepted: importSelection.open() + } + + QtDialogs.Dialog { + id: importSelection + + Column { + QtControls.CheckBox { + id: importPlasmoid + text: i18n("Import plasmoid settings") + } + + QtControls.CheckBox { + id: importExtensions + text: i18n("Import extensions") + } + + QtControls.CheckBox { + id: importAdds + text: i18n("Import additional files") + } + } + + onAccepted: { if (debug) console.debug() - var importConfig = awConfig.importConfiguration() + var importConfig = awConfig.importConfiguration( + openConfig.fileUrl.toString().replace("file://", ""), + importPlasmoid.checked, importExtensions.checked, + importAdds.checked) for (var key in importConfig) plasmoid.configuration[key] = importConfig[key] } diff --git a/sources/awesome-widget/plugin/awconfighelper.cpp b/sources/awesome-widget/plugin/awconfighelper.cpp index 5f61d2a..5901fc8 100644 --- a/sources/awesome-widget/plugin/awconfighelper.cpp +++ b/sources/awesome-widget/plugin/awconfighelper.cpp @@ -19,15 +19,11 @@ #include -#include -#include #include -#include #include #include #include #include -#include #include "awdebug.h" @@ -55,13 +51,11 @@ bool AWConfigHelper::dropCache() const } -void AWConfigHelper::exportConfiguration(QObject *nativeConfig) const +bool AWConfigHelper::exportConfiguration(QObject *nativeConfig, + const QString fileName) const { - // get file path and init settings object - QString fileName = QFileDialog::getSaveFileName(nullptr, i18n("Export")); - if (fileName.isEmpty()) - return; - qCInfo(LOG_AW) << "Selected filename" << fileName; + qCDebug(LOG_AW) << "Selected filename" << fileName; + QSettings settings(fileName, QSettings::IniFormat); // plasmoid configuration @@ -103,33 +97,22 @@ void AWConfigHelper::exportConfiguration(QObject *nativeConfig) const // sync settings settings.sync(); // show additional message - switch (settings.status()) { - case QSettings::NoError: - QMessageBox::information( - nullptr, i18n("Success"), - i18n("Please note that binary files were not copied")); - break; - default: - QMessageBox::critical(nullptr, i18n("Ooops..."), - i18n("Could not save configuration file")); - break; - } + return settings.status() == QSettings::NoError; } -QVariantMap AWConfigHelper::importConfiguration() const +QVariantMap AWConfigHelper::importConfiguration(const QString fileName, + const bool importPlasmoid, + const bool importExtensions, + const bool importAdds) const { + qCDebug(LOG_AW) << "Selected filename" << fileName; + QVariantMap configuration; - // get file path and init settings object - QString fileName = QFileDialog::getOpenFileName(nullptr, i18n("Import")); - if (fileName.isEmpty()) - return configuration; - qCInfo(LOG_AW) << "Selected filename" << fileName; QSettings settings(fileName, QSettings::IniFormat); - QHash selection = selectImport(); // extensions - if (selection[QString("extensions")]) { + if (importExtensions) { foreach (QString item, m_dirs) { settings.beginGroup(item); foreach (QString it, settings.childGroups()) @@ -139,7 +122,7 @@ QVariantMap AWConfigHelper::importConfiguration() const } // additional files - if (selection[QString("adds")]) { + if (importAdds) { settings.beginGroup(QString("json")); // script filters writeFile(settings, QString("filters"), @@ -153,7 +136,7 @@ QVariantMap AWConfigHelper::importConfiguration() const } // plasmoid configuration - if (selection[QString("plasmoid")]) { + if (importPlasmoid) { settings.beginGroup(QString("plasmoid")); foreach (QString key, settings.childKeys()) configuration[key] = settings.value(key); @@ -279,50 +262,6 @@ void AWConfigHelper::readFile(QSettings &settings, const QString key, } -QHash AWConfigHelper::selectImport() const -{ - QDialog *dialog = new QDialog(nullptr); - QCheckBox *importPlasmoidSettings - = new QCheckBox(i18n("Import plasmoid settings"), dialog); - importPlasmoidSettings->setChecked(true); - QCheckBox *importExtensionsSettings - = new QCheckBox(i18n("Import extensions"), dialog); - importExtensionsSettings->setChecked(true); - QCheckBox *importAddsSettings - = new QCheckBox(i18n("Import additional files"), dialog); - importAddsSettings->setChecked(true); - QDialogButtonBox *dialogButtons - = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, - Qt::Horizontal, dialog); - QVBoxLayout *layout = new QVBoxLayout(dialog); - layout->addWidget(importPlasmoidSettings); - layout->addWidget(importExtensionsSettings); - layout->addWidget(importAddsSettings); - layout->addWidget(dialogButtons); - connect(dialogButtons, SIGNAL(accepted()), dialog, SLOT(accept())); - connect(dialogButtons, SIGNAL(rejected()), dialog, SLOT(reject())); - - // get parameters - QHash import; - import[QString("plasmoid")] = false; - import[QString("extensions")] = false; - import[QString("adds")] = false; - switch (dialog->exec()) { - case QDialog::Accepted: - import[QString("plasmoid")] = importPlasmoidSettings->isChecked(); - import[QString("extensions")] = importExtensionsSettings->isChecked(); - import[QString("adds")] = importAddsSettings->isChecked(); - break; - case QDialog::Rejected: - default: - break; - } - dialog->deleteLater(); - - return import; -} - - void AWConfigHelper::writeFile(QSettings &settings, const QString key, const QString fileName) const { diff --git a/sources/awesome-widget/plugin/awconfighelper.h b/sources/awesome-widget/plugin/awconfighelper.h index dc51dfb..912ac3d 100644 --- a/sources/awesome-widget/plugin/awconfighelper.h +++ b/sources/awesome-widget/plugin/awconfighelper.h @@ -33,8 +33,12 @@ public: explicit AWConfigHelper(QObject *parent = nullptr); virtual ~AWConfigHelper(); Q_INVOKABLE bool dropCache() const; - Q_INVOKABLE void exportConfiguration(QObject *nativeConfig) const; - Q_INVOKABLE QVariantMap importConfiguration() const; + Q_INVOKABLE bool exportConfiguration(QObject *nativeConfig, + const QString fileName) const; + Q_INVOKABLE QVariantMap importConfiguration(const QString fileName, + const bool importPlasmoid, + const bool importExtensions, + const bool importAdds) const; // dataengine Q_INVOKABLE QVariantMap readDataEngineConfiguration() const; Q_INVOKABLE void @@ -47,7 +51,6 @@ private: void copySettings(QSettings &from, QSettings &to) const; void readFile(QSettings &settings, const QString key, const QString fileName) const; - QHash selectImport() const; void writeFile(QSettings &settings, const QString key, const QString fileName) const; // properties