mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-07-10 04:15:51 +00:00
* end work on #68
* create special class for configuration * update clion settings
This commit is contained in:
@ -20,10 +20,7 @@
|
||||
#include <KI18n/KLocalizedString>
|
||||
#include <KNotifications/KNotification>
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QDesktopServices>
|
||||
#include <QDir>
|
||||
#include <QFileDialog>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonParseError>
|
||||
#include <QMessageBox>
|
||||
@ -32,10 +29,7 @@
|
||||
#include <QNetworkReply>
|
||||
#include <QProcess>
|
||||
#include <QProcessEnvironment>
|
||||
#include <QQmlPropertyMap>
|
||||
#include <QSettings>
|
||||
#include <QStandardPaths>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#include <fontdialog/fontdialog.h>
|
||||
|
||||
@ -73,17 +67,6 @@ void AWActions::checkUpdates(const bool showAnyway)
|
||||
}
|
||||
|
||||
|
||||
bool AWActions::dropCache() const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QString fileName = QString("%1/awesomewidgets.ndx").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
|
||||
|
||||
return QFile(fileName).remove();
|
||||
}
|
||||
|
||||
|
||||
// HACK: since QML could not use QLoggingCategory I need this hack
|
||||
bool AWActions::isDebugEnabled() const
|
||||
{
|
||||
@ -113,78 +96,6 @@ void AWActions::showReadme() const
|
||||
}
|
||||
|
||||
|
||||
void AWActions::exportConfiguration(QObject *nativeConfig) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
// 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);
|
||||
// additional parameters
|
||||
QString baseDir = QString("%1/awesomewidgets").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
|
||||
QStringList dirs = QStringList() << QString("desktops") << QString("quotes")
|
||||
<< QString("scripts") << QString("upgrade") << QString("weather");
|
||||
|
||||
// plasmoid configuration
|
||||
QQmlPropertyMap *configuration = static_cast<QQmlPropertyMap *>(nativeConfig);
|
||||
settings.beginGroup(QString("plasmoid"));
|
||||
foreach(QString key, configuration->keys()) {
|
||||
QVariant value = configuration->value(key);
|
||||
if (!value.isValid())
|
||||
continue;
|
||||
settings.setValue(key, value);
|
||||
}
|
||||
settings.endGroup();
|
||||
|
||||
// extenstions
|
||||
foreach(QString item, dirs) {
|
||||
QStringList items = QDir(QString("%1/%2").arg(baseDir).arg(item)).entryList(
|
||||
QStringList() << QString("*.desktop"), QDir::Files);
|
||||
settings.beginGroup(item);
|
||||
foreach(QString it, items) {
|
||||
qCInfo(LOG_AW) << "Processing file" << it;
|
||||
settings.beginGroup(it);
|
||||
QSettings itemSettings(QString("%1/%2/%3").arg(baseDir).arg(item).arg(it), QSettings::IniFormat);
|
||||
itemSettings.beginGroup(QString("Desktop Entry"));
|
||||
foreach(QString key, itemSettings.childKeys())
|
||||
settings.setValue(key, itemSettings.value(key));
|
||||
itemSettings.endGroup();
|
||||
settings.endGroup();
|
||||
}
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
// additional files
|
||||
settings.beginGroup(QString("json"));
|
||||
// script filters
|
||||
QFile filterFile(QString("%1/scripts/awesomewidgets-extscripts-filters.json").arg(baseDir));
|
||||
if (filterFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
QString filterText = filterFile.readAll();
|
||||
filterFile.close();
|
||||
settings.setValue(QString("filters"), filterText);
|
||||
} else {
|
||||
qCWarning(LOG_LIB) << "Could not open" << filterFile.fileName();
|
||||
}
|
||||
// weather icon settings
|
||||
QFile weatherIdFile(QString("%1/weather/awesomewidgets-extweather-ids.json").arg(baseDir));
|
||||
if (weatherIdFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
QString weatherIdText = weatherIdFile.readAll();
|
||||
weatherIdFile.close();
|
||||
settings.setValue(QString("weathers"), weatherIdText);
|
||||
} else {
|
||||
qCWarning(LOG_LIB) << "Could not open" << weatherIdFile.fileName();
|
||||
}
|
||||
settings.endGroup();
|
||||
|
||||
// sync settings
|
||||
settings.sync();
|
||||
}
|
||||
|
||||
|
||||
// HACK: this method uses variables from version.h
|
||||
QString AWActions::getAboutText(const QString type) const
|
||||
{
|
||||
@ -247,166 +158,6 @@ QVariantMap AWActions::getFont(const QVariantMap defaultFont) const
|
||||
}
|
||||
|
||||
|
||||
QQmlPropertyMap* AWActions::importConfiguration() const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QQmlPropertyMap *configuration = new QQmlPropertyMap();
|
||||
// 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);
|
||||
// additional parameters
|
||||
QString baseDir = QString("%1/awesomewidgets").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
|
||||
QStringList dirs = QStringList() << QString("desktops") << QString("quotes")
|
||||
<< QString("scripts") << QString("upgrade") << QString("weather");
|
||||
|
||||
// check what should be exported
|
||||
QDialog *dialog = new QDialog(nullptr);
|
||||
QCheckBox *importPlasmoidSettings = new QCheckBox(i18n("Import plasmoid settings"), dialog);
|
||||
QCheckBox *importExtensionsSettings = new QCheckBox(i18n("Import extenstions"), dialog);
|
||||
QCheckBox *importAddsSettings = new QCheckBox(i18n("Import additional files"), dialog);
|
||||
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
|
||||
bool importPlasmoid = false;
|
||||
bool importExtensions = false;
|
||||
bool importAdds = false;
|
||||
switch(int ret = dialog->exec()) {
|
||||
case QDialog::Accepted:
|
||||
importPlasmoid = importPlasmoidSettings->isChecked();
|
||||
importExtensions = importExtensionsSettings->isChecked();
|
||||
importAdds = importAddsSettings->isChecked();
|
||||
break;
|
||||
case QDialog::Rejected:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
dialog->deleteLater();
|
||||
|
||||
// extenstions
|
||||
if (importExtensions) {
|
||||
foreach(QString item, dirs) {
|
||||
settings.beginGroup(item);
|
||||
qDebug() << settings.childGroups();
|
||||
foreach(QString it, settings.childGroups()) {
|
||||
qCInfo(LOG_AW) << "Processing file" << it;
|
||||
settings.beginGroup(it);
|
||||
QSettings itemSettings(QString("%1/%2/%3").arg(baseDir).arg(item).arg(it), QSettings::IniFormat);
|
||||
itemSettings.beginGroup(QString("Desktop Entry"));
|
||||
foreach(QString key, settings.childKeys())
|
||||
itemSettings.setValue(key, settings.value(key));
|
||||
itemSettings.endGroup();
|
||||
itemSettings.sync();
|
||||
settings.endGroup();
|
||||
}
|
||||
settings.endGroup();
|
||||
}
|
||||
}
|
||||
|
||||
// additional files
|
||||
if (importAdds) {
|
||||
settings.beginGroup(QString("json"));
|
||||
// script filters
|
||||
if (settings.contains(QString("filters"))) {
|
||||
QFile filterFile(QString("%1/scripts/awesomewidgets-extscripts-filters.json").arg(baseDir));
|
||||
if (filterFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
||||
QDataStream out(&filterFile);
|
||||
out << settings.value(QString("filters")).toString();
|
||||
filterFile.close();
|
||||
} else {
|
||||
qCWarning(LOG_LIB) << "Could not open" << filterFile.fileName();
|
||||
}
|
||||
}
|
||||
// weather icon settings
|
||||
if (settings.contains(QString("weathers"))) {
|
||||
QFile weatherIdFile(QString("%1/weather/awesomewidgets-extweather-ids.json").arg(baseDir));
|
||||
if (weatherIdFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
||||
QDataStream out(&weatherIdFile);
|
||||
out << settings.value(QString("weathers")).toString();
|
||||
weatherIdFile.close();
|
||||
} else {
|
||||
qCWarning(LOG_LIB) << "Could not open" << weatherIdFile.fileName();
|
||||
}
|
||||
}
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
// plasmoid configuration
|
||||
if (importPlasmoid) {
|
||||
settings.beginGroup(QString("plasmoid"));
|
||||
foreach(QString key, settings.childKeys())
|
||||
configuration->insert(key, settings.value(key));
|
||||
configuration->insert(QString("valid"), true);
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
return configuration;
|
||||
}
|
||||
|
||||
|
||||
QVariantMap AWActions::readDataEngineConfiguration() const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation,
|
||||
QString("plasma-dataengine-extsysmon.conf"));
|
||||
qCInfo(LOG_AW) << "Configuration file" << fileName;
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
QVariantMap configuration;
|
||||
|
||||
settings.beginGroup(QString("Configuration"));
|
||||
configuration[QString("ACPIPATH")] = settings.value(QString("ACPIPATH"), QString("/sys/class/power_supply/"));
|
||||
configuration[QString("GPUDEV")] = settings.value(QString("GPUDEV"), QString("auto"));
|
||||
configuration[QString("HDDDEV")] = settings.value(QString("HDDDEV"), QString("all"));
|
||||
configuration[QString("HDDTEMPCMD")] = settings.value(QString("HDDTEMPCMD"), QString("sudo smartctl -a"));
|
||||
configuration[QString("MPDADDRESS")] = settings.value(QString("MPDADDRESS"), QString("localhost"));
|
||||
configuration[QString("MPDPORT")] = settings.value(QString("MPDPORT"), QString("6600"));
|
||||
configuration[QString("MPRIS")] = settings.value(QString("MPRIS"), QString("auto"));
|
||||
configuration[QString("PLAYER")] = settings.value(QString("PLAYER"), QString("mpris"));
|
||||
configuration[QString("PLAYERSYMBOLS")] = settings.value(QString("PLAYERSYMBOLS"), QString("10"));
|
||||
settings.endGroup();
|
||||
|
||||
qCInfo(LOG_AW) << "Configuration" << configuration;
|
||||
|
||||
return configuration;
|
||||
}
|
||||
|
||||
|
||||
void AWActions::writeDataEngineConfiguration(const QVariantMap configuration) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QString fileName = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)
|
||||
+ QString("/plasma-dataengine-extsysmon.conf");
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
qCInfo(LOG_AW) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Configuration"));
|
||||
settings.setValue(QString("ACPIPATH"), configuration[QString("ACPIPATH")]);
|
||||
settings.setValue(QString("GPUDEV"), configuration[QString("GPUDEV")]);
|
||||
settings.setValue(QString("HDDDEV"), configuration[QString("HDDDEV")]);
|
||||
settings.setValue(QString("HDDTEMPCMD"), configuration[QString("HDDTEMPCMD")]);
|
||||
settings.setValue(QString("MPDADDRESS"), configuration[QString("MPDADDRESS")]);
|
||||
settings.setValue(QString("MPDPORT"), configuration[QString("MPDPORT")]);
|
||||
settings.setValue(QString("MPRIS"), configuration[QString("MPRIS")]);
|
||||
settings.setValue(QString("PLAYER"), configuration[QString("PLAYER")]);
|
||||
settings.setValue(QString("PLAYERSYMBOLS"), configuration[QString("PLAYERSYMBOLS")]);
|
||||
settings.endGroup();
|
||||
|
||||
settings.sync();
|
||||
}
|
||||
|
||||
|
||||
// to avoid additional object definition this method is static
|
||||
void AWActions::sendNotification(const QString eventId, const QString message)
|
||||
|
@ -23,7 +23,6 @@
|
||||
|
||||
|
||||
class QNetworkReply;
|
||||
class QQmlPropertyMap;
|
||||
|
||||
class AWActions : public QObject
|
||||
{
|
||||
@ -33,18 +32,12 @@ public:
|
||||
explicit AWActions(QObject *parent = nullptr);
|
||||
virtual ~AWActions();
|
||||
Q_INVOKABLE void checkUpdates(const bool showAnyway = false);
|
||||
Q_INVOKABLE bool dropCache() const;
|
||||
Q_INVOKABLE bool isDebugEnabled() const;
|
||||
Q_INVOKABLE bool runCmd(const QString cmd = QString("/usr/bin/true")) const;
|
||||
Q_INVOKABLE void showReadme() const;
|
||||
// configuration slots
|
||||
Q_INVOKABLE void exportConfiguration(QObject *nativeConfig) const;
|
||||
Q_INVOKABLE QString getAboutText(const QString type = QString("header")) const;
|
||||
Q_INVOKABLE QVariantMap getFont(const QVariantMap defaultFont) const;
|
||||
Q_INVOKABLE QQmlPropertyMap *importConfiguration() const;
|
||||
// dataengine
|
||||
Q_INVOKABLE QVariantMap readDataEngineConfiguration() const;
|
||||
Q_INVOKABLE void writeDataEngineConfiguration(const QVariantMap configuration) const;
|
||||
|
||||
public slots:
|
||||
Q_INVOKABLE static void sendNotification(const QString eventId, const QString message);
|
||||
|
312
sources/awesome-widget/plugin/awconfighelper.cpp
Normal file
312
sources/awesome-widget/plugin/awconfighelper.cpp
Normal file
@ -0,0 +1,312 @@
|
||||
/***************************************************************************
|
||||
* This file is part of awesome-widgets *
|
||||
* *
|
||||
* awesome-widgets is free software: you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU General Public License as *
|
||||
* published by the Free Software Foundation, either version 3 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* awesome-widgets is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
|
||||
***************************************************************************/
|
||||
|
||||
#include "awconfighelper.h"
|
||||
|
||||
#include <KI18n/KLocalizedString>
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QDir>
|
||||
#include <QFileDialog>
|
||||
#include <QQmlPropertyMap>
|
||||
#include <QSettings>
|
||||
#include <QTextCodec>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#include "awdebug.h"
|
||||
|
||||
|
||||
AWConfigHelper::AWConfigHelper(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
}
|
||||
|
||||
|
||||
AWConfigHelper::~AWConfigHelper()
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
}
|
||||
|
||||
|
||||
bool AWConfigHelper::dropCache() const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QString fileName = QString("%1/awesomewidgets.ndx").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
|
||||
|
||||
return QFile(fileName).remove();
|
||||
}
|
||||
|
||||
|
||||
void AWConfigHelper::exportConfiguration(QObject *nativeConfig) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
// 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
|
||||
QQmlPropertyMap *configuration = static_cast<QQmlPropertyMap *>(nativeConfig);
|
||||
settings.beginGroup(QString("plasmoid"));
|
||||
foreach(QString key, configuration->keys()) {
|
||||
QVariant value = configuration->value(key);
|
||||
if (!value.isValid())
|
||||
continue;
|
||||
settings.setValue(key, value);
|
||||
}
|
||||
settings.endGroup();
|
||||
|
||||
// extenstions
|
||||
foreach(QString item, m_dirs) {
|
||||
QStringList items = QDir(QString("%1/%2").arg(m_baseDir).arg(item)).entryList(
|
||||
QStringList() << QString("*.desktop"), QDir::Files);
|
||||
settings.beginGroup(item);
|
||||
foreach(QString it, items)
|
||||
copyExtensions(it, item, settings, false);
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
// additional files
|
||||
settings.beginGroup(QString("json"));
|
||||
// script filters
|
||||
readFile(settings, QString("filters"),
|
||||
QString("%1/scripts/awesomewidgets-extscripts-filters.json").arg(m_baseDir));
|
||||
// weather icon settings
|
||||
readFile(settings, QString("weathers"),
|
||||
QString("%1/weather/awesomewidgets-extweather-ids.json").arg(m_baseDir));
|
||||
settings.endGroup();
|
||||
|
||||
// sync settings
|
||||
settings.sync();
|
||||
}
|
||||
|
||||
|
||||
QVariantMap AWConfigHelper::importConfiguration() const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
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();
|
||||
|
||||
// extenstions
|
||||
if (selection[QString("extenstions")]) {
|
||||
foreach(QString item, m_dirs) {
|
||||
settings.beginGroup(item);
|
||||
foreach(QString it, settings.childGroups())
|
||||
copyExtensions(it, item, settings, true);
|
||||
settings.endGroup();
|
||||
}
|
||||
}
|
||||
|
||||
// additional files
|
||||
if (selection[QString("adds")]) {
|
||||
settings.beginGroup(QString("json"));
|
||||
// script filters
|
||||
writeFile(settings, QString("filters"),
|
||||
QString("%1/scripts/awesomewidgets-extscripts-filters.json").arg(m_baseDir));
|
||||
// weather icon settings
|
||||
writeFile(settings, QString("weathers"),
|
||||
QString("%1/weather/awesomewidgets-extweather-ids.json").arg(m_baseDir));
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
// plasmoid configuration
|
||||
if (selection[QString("plasmoid")]) {
|
||||
settings.beginGroup(QString("plasmoid"));
|
||||
foreach(QString key, settings.childKeys())
|
||||
configuration[key] = settings.value(key);
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
return configuration;
|
||||
}
|
||||
|
||||
|
||||
QVariantMap AWConfigHelper::readDataEngineConfiguration() const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation,
|
||||
QString("plasma-dataengine-extsysmon.conf"));
|
||||
qCInfo(LOG_AW) << "Configuration file" << fileName;
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
QVariantMap configuration;
|
||||
|
||||
settings.beginGroup(QString("Configuration"));
|
||||
configuration[QString("ACPIPATH")] = settings.value(QString("ACPIPATH"), QString("/sys/class/power_supply/"));
|
||||
configuration[QString("GPUDEV")] = settings.value(QString("GPUDEV"), QString("auto"));
|
||||
configuration[QString("HDDDEV")] = settings.value(QString("HDDDEV"), QString("all"));
|
||||
configuration[QString("HDDTEMPCMD")] = settings.value(QString("HDDTEMPCMD"), QString("sudo smartctl -a"));
|
||||
configuration[QString("MPDADDRESS")] = settings.value(QString("MPDADDRESS"), QString("localhost"));
|
||||
configuration[QString("MPDPORT")] = settings.value(QString("MPDPORT"), QString("6600"));
|
||||
configuration[QString("MPRIS")] = settings.value(QString("MPRIS"), QString("auto"));
|
||||
configuration[QString("PLAYER")] = settings.value(QString("PLAYER"), QString("mpris"));
|
||||
configuration[QString("PLAYERSYMBOLS")] = settings.value(QString("PLAYERSYMBOLS"), QString("10"));
|
||||
settings.endGroup();
|
||||
|
||||
qCInfo(LOG_AW) << "Configuration" << configuration;
|
||||
|
||||
return configuration;
|
||||
}
|
||||
|
||||
|
||||
void AWConfigHelper::writeDataEngineConfiguration(const QVariantMap configuration) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QString fileName = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)
|
||||
+ QString("/plasma-dataengine-extsysmon.conf");
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
qCInfo(LOG_AW) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Configuration"));
|
||||
settings.setValue(QString("ACPIPATH"), configuration[QString("ACPIPATH")]);
|
||||
settings.setValue(QString("GPUDEV"), configuration[QString("GPUDEV")]);
|
||||
settings.setValue(QString("HDDDEV"), configuration[QString("HDDDEV")]);
|
||||
settings.setValue(QString("HDDTEMPCMD"), configuration[QString("HDDTEMPCMD")]);
|
||||
settings.setValue(QString("MPDADDRESS"), configuration[QString("MPDADDRESS")]);
|
||||
settings.setValue(QString("MPDPORT"), configuration[QString("MPDPORT")]);
|
||||
settings.setValue(QString("MPRIS"), configuration[QString("MPRIS")]);
|
||||
settings.setValue(QString("PLAYER"), configuration[QString("PLAYER")]);
|
||||
settings.setValue(QString("PLAYERSYMBOLS"), configuration[QString("PLAYERSYMBOLS")]);
|
||||
settings.endGroup();
|
||||
|
||||
settings.sync();
|
||||
}
|
||||
|
||||
|
||||
void AWConfigHelper::copyExtensions(const QString item, const QString type,
|
||||
QSettings &settings, const bool inverse) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Extension" << item;
|
||||
qCDebug(LOG_AW) << "Type" << type;
|
||||
qCDebug(LOG_AW) << "Inverse" << inverse;
|
||||
|
||||
settings.beginGroup(item);
|
||||
QSettings itemSettings(QString("%1/%2/%3").arg(m_baseDir).arg(type).arg(item), QSettings::IniFormat);
|
||||
itemSettings.beginGroup(QString("Desktop Entry"));
|
||||
if (inverse)
|
||||
copySettings(settings, itemSettings);
|
||||
else
|
||||
copySettings(itemSettings, settings);
|
||||
itemSettings.endGroup();
|
||||
settings.endGroup();
|
||||
|
||||
if (inverse)
|
||||
itemSettings.sync();
|
||||
}
|
||||
|
||||
|
||||
void AWConfigHelper::copySettings(QSettings &from, QSettings &to) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
foreach(QString key, from.childKeys())
|
||||
to.setValue(key, from.value(key));
|
||||
}
|
||||
|
||||
|
||||
void AWConfigHelper::readFile(QSettings &settings, const QString key, const QString fileName) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Key" << key;
|
||||
qCDebug(LOG_AW) << "File" << fileName;
|
||||
|
||||
QFile file(fileName);
|
||||
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
QString text = QTextCodec::codecForMib(106)->toUnicode(file.readAll());
|
||||
file.close();
|
||||
settings.setValue(key, text);
|
||||
} else {
|
||||
qCWarning(LOG_LIB) << "Could not open" << file.fileName();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
QHash<QString, bool> AWConfigHelper::selectImport() const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QDialog *dialog = new QDialog(nullptr);
|
||||
QCheckBox *importPlasmoidSettings = new QCheckBox(i18n("Import plasmoid settings"), dialog);
|
||||
importPlasmoidSettings->setChecked(true);
|
||||
QCheckBox *importExtensionsSettings = new QCheckBox(i18n("Import extenstions"), 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("extenstions")] = false;
|
||||
import[QString("adds")] = false;
|
||||
switch(int ret = dialog->exec()) {
|
||||
case QDialog::Accepted:
|
||||
import[QString("plasmoid")] = importPlasmoidSettings->isChecked();
|
||||
import[QString("extenstions")] = 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
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Key" << key;
|
||||
qCDebug(LOG_AW) << "File" << fileName;
|
||||
|
||||
if (settings.contains(key)) {
|
||||
QFile file(fileName);
|
||||
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
||||
QDataStream out(&file);
|
||||
out << settings.value(key).toString().toUtf8();
|
||||
file.close();
|
||||
} else {
|
||||
qCWarning(LOG_LIB) << "Could not open" << file.fileName();
|
||||
}
|
||||
}
|
||||
}
|
58
sources/awesome-widget/plugin/awconfighelper.h
Normal file
58
sources/awesome-widget/plugin/awconfighelper.h
Normal file
@ -0,0 +1,58 @@
|
||||
/***************************************************************************
|
||||
* This file is part of awesome-widgets *
|
||||
* *
|
||||
* awesome-widgets is free software: you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU General Public License as *
|
||||
* published by the Free Software Foundation, either version 3 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* awesome-widgets is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef AWCONFIGHELPER_H
|
||||
#define AWCONFIGHELPER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QStandardPaths>
|
||||
|
||||
|
||||
class QSettings;
|
||||
|
||||
class AWConfigHelper : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
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;
|
||||
// dataengine
|
||||
Q_INVOKABLE QVariantMap readDataEngineConfiguration() const;
|
||||
Q_INVOKABLE void writeDataEngineConfiguration(const QVariantMap configuration) const;
|
||||
|
||||
private:
|
||||
// methods
|
||||
void copyExtensions(const QString item, const QString type,
|
||||
QSettings &settings, const bool inverse) const;
|
||||
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
|
||||
QString m_baseDir = QString("%1/awesomewidgets").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
|
||||
QStringList m_dirs = QStringList() << QString("desktops") << QString("quotes")
|
||||
<< QString("scripts") << QString("upgrade") << QString("weather");
|
||||
};
|
||||
|
||||
|
||||
#endif /* AWCONFIGHELPER_H */
|
@ -20,6 +20,7 @@
|
||||
#include <QtQml>
|
||||
|
||||
#include "awactions.h"
|
||||
#include "awconfighelper.h"
|
||||
#include "awkeys.h"
|
||||
|
||||
|
||||
@ -28,5 +29,6 @@ void AWPlugin::registerTypes(const char *uri)
|
||||
Q_ASSERT(uri == QLatin1String("org.kde.plasma.private.awesomewidget"));
|
||||
|
||||
qmlRegisterType<AWActions>(uri, 1, 0, "AWActions");
|
||||
qmlRegisterType<AWConfigHelper>(uri, 1, 0, "AWConfigHelper");
|
||||
qmlRegisterType<AWKeys>(uri, 1, 0, "AWKeys");
|
||||
}
|
||||
|
Reference in New Issue
Block a user