diff --git a/sources/awesome-widget/package/contents/ui/advanced.qml b/sources/awesome-widget/package/contents/ui/advanced.qml index 01bcd58..1ec7ba6 100644 --- a/sources/awesome-widget/package/contents/ui/advanced.qml +++ b/sources/awesome-widget/package/contents/ui/advanced.qml @@ -17,7 +17,6 @@ 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 @@ -372,31 +371,7 @@ Item { QtControls.Button { width: parent.width * 3 / 5 text: i18n("Export 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 + onClicked: awConfig.exportConfiguration(plasmoid.configuration) } } @@ -410,41 +385,9 @@ Item { QtControls.Button { width: parent.width * 3 / 5 text: i18n("Import configuration") - 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: { + onClicked: { if (debug) console.debug() - var importConfig = awConfig.importConfiguration( - openConfig.fileUrl.toString().replace("file://", ""), - importPlasmoid.checked, importExtensions.checked, - importAdds.checked) + var importConfig = awConfig.importConfiguration() for (var key in importConfig) plasmoid.configuration[key] = importConfig[key] } diff --git a/sources/awesome-widget/package/contents/ui/main.qml b/sources/awesome-widget/package/contents/ui/main.qml index 23e9690..ec83b91 100644 --- a/sources/awesome-widget/package/contents/ui/main.qml +++ b/sources/awesome-widget/package/contents/ui/main.qml @@ -17,7 +17,6 @@ import QtQuick 2.4 import QtQuick.Controls 1.3 as QtControls -import QtQuick.Dialogs 1.2 as QtDialogs import QtQuick.Layouts 1.1 import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.core 2.0 as PlasmaCore @@ -110,27 +109,6 @@ Item { } } - QtDialogs.Dialog { - id: tagSelector - title: i18n("Select tag") - - QtControls.ComboBox { - id: tagSelectorBox - width: parent.width - editable: true - } - - onAccepted: { - var tag = tagSelectorBox.editText - var message = i18n("Tag: %1", tag) - message += "
" - message += i18n("Value: %1", awKeys.valueByKey(tag)) - message += "
" - message += i18n("Info: %1", awKeys.infoByKey(tag)) - awActions.sendNotification("tag", message) - } - } - Component.onCompleted: { if (debug) console.debug() @@ -216,7 +194,12 @@ Item { function action_requestKey() { if (debug) console.debug() - tagSelectorBox.model = awKeys.dictKeys(true) - return tagSelector.open() + var tag = awKeys.graphicalKey() + var message = i18n("Tag: %1", tag) + message += "
" + message += i18n("Value: %1", awKeys.valueByKey(tag)) + message += "
" + message += i18n("Info: %1", awKeys.infoByKey(tag)) + awActions.sendNotification("tag", message) } } diff --git a/sources/awesome-widget/plugin/awconfighelper.cpp b/sources/awesome-widget/plugin/awconfighelper.cpp index 6263b30..5f61d2a 100644 --- a/sources/awesome-widget/plugin/awconfighelper.cpp +++ b/sources/awesome-widget/plugin/awconfighelper.cpp @@ -19,10 +19,15 @@ #include +#include +#include #include +#include +#include #include #include #include +#include #include "awdebug.h" @@ -50,11 +55,13 @@ bool AWConfigHelper::dropCache() const } -bool AWConfigHelper::exportConfiguration(QObject *nativeConfig, - const QString fileName) const +void AWConfigHelper::exportConfiguration(QObject *nativeConfig) const { - qCDebug(LOG_AW) << "Selected filename" << fileName; - + // get file path and init settings object + QString fileName = QFileDialog::getSaveFileName(nullptr, i18n("Export")); + if (fileName.isEmpty()) + return; + qCInfo(LOG_AW) << "Selected filename" << fileName; QSettings settings(fileName, QSettings::IniFormat); // plasmoid configuration @@ -96,22 +103,33 @@ bool AWConfigHelper::exportConfiguration(QObject *nativeConfig, // sync settings settings.sync(); // show additional message - return settings.status() == QSettings::NoError; + 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; + } } -QVariantMap AWConfigHelper::importConfiguration(const QString fileName, - const bool importPlasmoid, - const bool importExtensions, - const bool importAdds) const +QVariantMap AWConfigHelper::importConfiguration() 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 (importExtensions) { + if (selection[QString("extensions")]) { foreach (QString item, m_dirs) { settings.beginGroup(item); foreach (QString it, settings.childGroups()) @@ -121,7 +139,7 @@ QVariantMap AWConfigHelper::importConfiguration(const QString fileName, } // additional files - if (importAdds) { + if (selection[QString("adds")]) { settings.beginGroup(QString("json")); // script filters writeFile(settings, QString("filters"), @@ -135,7 +153,7 @@ QVariantMap AWConfigHelper::importConfiguration(const QString fileName, } // plasmoid configuration - if (importPlasmoid) { + if (selection[QString("plasmoid")]) { settings.beginGroup(QString("plasmoid")); foreach (QString key, settings.childKeys()) configuration[key] = settings.value(key); @@ -261,6 +279,50 @@ 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 912ac3d..dc51dfb 100644 --- a/sources/awesome-widget/plugin/awconfighelper.h +++ b/sources/awesome-widget/plugin/awconfighelper.h @@ -33,12 +33,8 @@ public: explicit AWConfigHelper(QObject *parent = nullptr); virtual ~AWConfigHelper(); Q_INVOKABLE bool dropCache() 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; + Q_INVOKABLE void exportConfiguration(QObject *nativeConfig) const; + Q_INVOKABLE QVariantMap importConfiguration() const; // dataengine Q_INVOKABLE QVariantMap readDataEngineConfiguration() const; Q_INVOKABLE void @@ -51,6 +47,7 @@ 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 diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp index e5b9861..039d24e 100644 --- a/sources/awesome-widget/plugin/awkeys.cpp +++ b/sources/awesome-widget/plugin/awkeys.cpp @@ -324,6 +324,13 @@ QStringList AWKeys::getHddDevices() const } +QString AWKeys::graphicalKey() const +{ + return QInputDialog::getItem(nullptr, i18n("Select tag"), QString(), + dictKeys(true), 0, true); +} + + QString AWKeys::infoByKey(QString key) const { qCDebug(LOG_AW) << "Requested key" << key; diff --git a/sources/awesome-widget/plugin/awkeys.h b/sources/awesome-widget/plugin/awkeys.h index a8300f1..8edc3bd 100644 --- a/sources/awesome-widget/plugin/awkeys.h +++ b/sources/awesome-widget/plugin/awkeys.h @@ -55,6 +55,7 @@ public: Q_INVOKABLE QStringList dictKeys(const bool sorted = false, const QString regexp = QString()) const; Q_INVOKABLE QStringList getHddDevices() const; + Q_INVOKABLE QString graphicalKey() const; // values Q_INVOKABLE QString infoByKey(QString key) const; Q_INVOKABLE QString valueByKey(QString key) const;