move dialog part to qml files

This commit is contained in:
arcan1s 2015-10-22 02:52:06 +03:00
parent f77cf7c1aa
commit 8545192ef8
3 changed files with 80 additions and 81 deletions

View File

@ -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]
}

View File

@ -19,15 +19,11 @@
#include <KI18n/KLocalizedString>
#include <QCheckBox>
#include <QDialogButtonBox>
#include <QDir>
#include <QFileDialog>
#include <QMessageBox>
#include <QQmlPropertyMap>
#include <QSettings>
#include <QTextCodec>
#include <QVBoxLayout>
#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<QString, bool> 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<QString, bool> 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<QString, bool> 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
{

View File

@ -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<QString, bool> selectImport() const;
void writeFile(QSettings &settings, const QString key,
const QString fileName) const;
// properties