Merge pull request #70 from arcan1s/development

Master update
This commit is contained in:
Evgeniy Alekseev 2015-10-23 00:27:16 +03:00
commit 83ec82debd
19 changed files with 555 additions and 125 deletions

View File

@ -1,3 +1,8 @@
Ver.3.0.1:
+ add patches for old Qt versions
- drop `nullptr` checking
* move dialogs to QML part
Ver.3.0.0: Ver.3.0.0:
+ add tags upunits, downunits, upkb, downkb + add tags upunits, downunits, upkb, downkb
+ add tags dalbum, dartist, dtitle, salbum, sartist, stitle + add tags dalbum, dartist, dtitle, salbum, sartist, stitle

View File

@ -1,3 +1,8 @@
Вер.3.0.1:
+ добавлены патчи для старых версий Qt
- убрана проверка на nullptr
* диалоги перемещены в QML
Вер.3.0.0: Вер.3.0.0:
+ добавлены теги upunits, downunits, upkb, downkb + добавлены теги upunits, downunits, upkb, downkb
+ добавлены теги dalbum, dartist, dtitle, salbum, sartist, stitle + добавлены теги dalbum, dartist, dtitle, salbum, sartist, stitle

View File

@ -81,6 +81,8 @@ for more details. To avoid manual labor there is automatic cmake target named
* Create one file (source and header) per class. * Create one file (source and header) per class.
* `else if` construction is allowed and recommended. * `else if` construction is allowed and recommended.
* 'true ? foo : bar' construction is allowed and recommended for one-line assignment. * 'true ? foo : bar' construction is allowed and recommended for one-line assignment.
* any global pointer should be assign to `nullptr` after deletion and before
initialization. Exception: if object is deleted into class destructor.
Comments Comments
-------- --------
@ -101,7 +103,7 @@ Development
* Officially the latest libraries versions should be used. In addition it is * Officially the latest libraries versions should be used. In addition it is
possible to add workarounds for all versions (usually by using preprocessor possible to add workarounds for all versions (usually by using preprocessor
directives). directives); in this case patches should be placed to `packages` directory.
* Build should not contain any warning. * Build should not contain any warning.
* Try to minimize message in Release build with logging disabled. It is highly * Try to minimize message in Release build with logging disabled. It is highly
recommended to fix KDE/Qt specific warning if possible recommended to fix KDE/Qt specific warning if possible
@ -128,6 +130,8 @@ HIG
--- ---
The recommended HIG is [KDE one](https://techbase.kde.org/Projects/Usability/HIG). The recommended HIG is [KDE one](https://techbase.kde.org/Projects/Usability/HIG).
Avoid to paint interfaces inside plugin because QML and C++ parts may have different
theming.
Licensing Licensing
--------- ---------

View File

@ -2,7 +2,7 @@
pkgname=plasma5-applet-awesome-widgets pkgname=plasma5-applet-awesome-widgets
_pkgname=awesome-widgets _pkgname=awesome-widgets
pkgver=3.0.0 pkgver=3.0.1
pkgrel=1 pkgrel=1
pkgdesc="Collection of minimalistic Plasmoids which look like Awesome WM widgets (ex-PyTextMonitor)" pkgdesc="Collection of minimalistic Plasmoids which look like Awesome WM widgets (ex-PyTextMonitor)"
arch=('i686' 'x86_64') arch=('i686' 'x86_64')
@ -17,7 +17,7 @@ optdepends=("catalyst: for GPU monitor"
makedepends=('cmake' 'extra-cmake-modules') makedepends=('cmake' 'extra-cmake-modules')
source=(https://github.com/arcan1s/awesome-widgets/releases/download/V.${pkgver}/${_pkgname}-${pkgver}-src.tar.xz) source=(https://github.com/arcan1s/awesome-widgets/releases/download/V.${pkgver}/${_pkgname}-${pkgver}-src.tar.xz)
install=${pkgname}.install install=${pkgname}.install
md5sums=('4878899f092ee12ad8f935f0551ef6b2') md5sums=('71f5b358d443075540377284ee868a93')
backup=('etc/xdg/plasma-dataengine-extsysmon.conf') backup=('etc/xdg/plasma-dataengine-extsysmon.conf')
prepare() { prepare() {
@ -28,8 +28,9 @@ prepare() {
build () { build () {
cd "${srcdir}/build" cd "${srcdir}/build"
cmake -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ cmake -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Optimization \
-DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_FUTURE=ON \
"../${_pkgname}" "../${_pkgname}"
make make
} }

View File

@ -0,0 +1,57 @@
diff --git a/sources/awdebug.cpp b/sources/awdebug.cpp
index eee61e1..9da8dad 100644
--- a/sources/awdebug.cpp
+++ b/sources/awdebug.cpp
@@ -20,13 +20,10 @@
#include "version.h"
-Q_LOGGING_CATEGORY(LOG_AW, "org.kde.plasma.awesomewidget",
- QtMsgType::QtWarningMsg)
-Q_LOGGING_CATEGORY(LOG_DP, "org.kde.plasma.desktoppanel",
- QtMsgType::QtWarningMsg)
-Q_LOGGING_CATEGORY(LOG_ESM, "org.kde.plasma.extsysmon", QtMsgType::QtWarningMsg)
-Q_LOGGING_CATEGORY(LOG_LIB, "org.kde.plasma.awesomewidgets",
- QtMsgType::QtWarningMsg)
+Q_LOGGING_CATEGORY(LOG_AW, "org.kde.plasma.awesomewidget")
+Q_LOGGING_CATEGORY(LOG_DP, "org.kde.plasma.desktoppanel")
+Q_LOGGING_CATEGORY(LOG_ESM, "org.kde.plasma.extsysmon")
+Q_LOGGING_CATEGORY(LOG_LIB, "org.kde.plasma.awesomewidgets")
const QStringList getBuildData()
diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp
index e5b9861..eb73073 100644
--- a/sources/awesome-widget/plugin/awkeys.cpp
+++ b/sources/awesome-widget/plugin/awkeys.cpp
@@ -439,7 +439,7 @@ void AWKeys::dataUpdated(const QString &sourceName,
#ifdef BUILD_FUTURE
// run concurrent data update
- QtConcurrent::run(m_threadPool, this, &AWKeys::setDataBySource, sourceName,
+ QtConcurrent::run(this, &AWKeys::setDataBySource, sourceName,
data);
#else /* BUILD_FUTURE */
return setDataBySource(sourceName, data);
@@ -564,7 +564,7 @@ void AWKeys::reinitKeys()
void AWKeys::updateTextData()
{
#ifdef BUILD_FUTURE
- QFuture<QString> text = QtConcurrent::run(m_threadPool, [this]() {
+ QFuture<QString> text = QtConcurrent::run([this]() {
calculateValues();
return parsePattern(m_pattern);
});
diff --git a/sources/libraries.cmake b/sources/libraries.cmake
index 33192f7..46e2b1e 100644
--- a/sources/libraries.cmake
+++ b/sources/libraries.cmake
@@ -2,7 +2,7 @@
find_package(Gettext REQUIRED)
# main qt libraries
-find_package(Qt5 5.4.0 REQUIRED COMPONENTS Core DBus Network Qml Widgets)
+find_package(Qt5 5.3.0 REQUIRED COMPONENTS Core DBus Network Qml Widgets)
add_definitions(
${Qt5Core_DEFINITIONS} ${Qt5DBus_DEFINITIONS} ${Qt5Network_DEFINITIONS}
${Qt5Qml_DEFINITIONS} ${Qt5Widgets_DEFINITIONS}

View File

@ -0,0 +1,350 @@
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 += "<br>"
- message += i18n("Value: %1", awKeys.valueByKey(tag))
- message += "<br>"
- 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 += "<br>"
+ message += i18n("Value: %1", awKeys.valueByKey(tag))
+ message += "<br>"
+ 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 <KI18n/KLocalizedString>
+#include <QCheckBox>
+#include <QDialogButtonBox>
#include <QDir>
+#include <QFileDialog>
+#include <QMessageBox>
#include <QQmlPropertyMap>
#include <QSettings>
#include <QTextCodec>
+#include <QVBoxLayout>
#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<QString, bool> 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<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
{
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<QString, bool> 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;

View File

@ -0,0 +1,29 @@
diff --git a/sources/awesome-widget/plugin/awkeysaggregator.h b/sources/awesome-widget/plugin/awkeysaggregator.h
index f808d03..a056b3f 100644
--- a/sources/awesome-widget/plugin/awkeysaggregator.h
+++ b/sources/awesome-widget/plugin/awkeysaggregator.h
@@ -21,6 +21,7 @@
#include <QHash>
#include <QObject>
+#include <QStringList>
#include "version.h"
diff --git a/sources/awdebug.h b/sources/awdebug.h
index 48dc580..530c0d6 100644
--- a/sources/awdebug.h
+++ b/sources/awdebug.h
@@ -23,9 +23,9 @@
#ifndef LOG_FORMAT
#define LOG_FORMAT \
- "[%{time process}][%{if-debug}DD%{endif}%{if-info}II%{endif}%{if-" \
- "warning}WW%{endif}%{if-critical}CC%{endif}%{if-fatal}FF%{endif}][%{" \
- "category}][%{function}] %{message}"
+ "[%{time process}][%{if-debug}DD%{endif}%{if-warning}WW%{endif}%{if-" \
+ "critical}CC%{endif}%{if-fatal}FF%{endif}][%{category}][%{function}] " \
+ "%{message}"
#endif /* LOG_FORMAT */
// redefine info because it doesn't log properly

View File

@ -15,7 +15,7 @@ set(PROJECT_CONTACT "esalexeev@gmail.com")
set(PROJECT_LICENSE "GPL3") set(PROJECT_LICENSE "GPL3")
set(PROJECT_VERSION_MAJOR "3") set(PROJECT_VERSION_MAJOR "3")
set(PROJECT_VERSION_MINOR "0") set(PROJECT_VERSION_MINOR "0")
set(PROJECT_VERSION_PATCH "0") set(PROJECT_VERSION_PATCH "1")
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
# append git version if any # append git version if any
set(PROJECT_COMMIT_SHA "Commit hash" CACHE INTERNAL "") set(PROJECT_COMMIT_SHA "Commit hash" CACHE INTERNAL "")

View File

@ -28,15 +28,11 @@
"category}][%{function}] %{message}" "category}][%{function}] %{message}"
#endif /* LOG_FORMAT */ #endif /* LOG_FORMAT */
// define info log level
// #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
// #ifndef qCInfo
// redefine info because it doesn't log properly // redefine info because it doesn't log properly
#ifdef qCInfo #ifdef qCInfo
#undef qCInfo #undef qCInfo
#endif /* qCInfo */ #endif /* qCInfo */
#define qCInfo qCDebug #define qCInfo qCDebug
// #endif /* QT_VERSION */
Q_DECLARE_LOGGING_CATEGORY(LOG_AW) Q_DECLARE_LOGGING_CATEGORY(LOG_AW)

View File

@ -17,6 +17,7 @@
import QtQuick 2.0 import QtQuick 2.0
import QtQuick.Controls 1.3 as QtControls import QtQuick.Controls 1.3 as QtControls
import QtQuick.Dialogs 1.2 as QtDialogs
import org.kde.plasma.private.awesomewidget 1.0 import org.kde.plasma.private.awesomewidget 1.0
@ -371,7 +372,31 @@ Item {
QtControls.Button { QtControls.Button {
width: parent.width * 3 / 5 width: parent.width * 3 / 5
text: i18n("Export configuration") 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 { QtControls.Button {
width: parent.width * 3 / 5 width: parent.width * 3 / 5
text: i18n("Import configuration") 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() 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) for (var key in importConfig)
plasmoid.configuration[key] = importConfig[key] plasmoid.configuration[key] = importConfig[key]
} }

View File

@ -20,7 +20,7 @@ X-Plasma-RemoteLocation=
X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis
X-KDE-PluginInfo-Email=esalexeev@gmail.com X-KDE-PluginInfo-Email=esalexeev@gmail.com
X-KDE-PluginInfo-Name=org.kde.plasma.awesomewidget X-KDE-PluginInfo-Name=org.kde.plasma.awesomewidget
X-KDE-PluginInfo-Version=3.0.0 X-KDE-PluginInfo-Version=3.0.1
X-KDE-PluginInfo-Website=http://arcanis.name/projects/awesome-widgets/ X-KDE-PluginInfo-Website=http://arcanis.name/projects/awesome-widgets/
X-KDE-PluginInfo-Category=System Information X-KDE-PluginInfo-Category=System Information
X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-Depends=

View File

@ -4,8 +4,6 @@ add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidge
include_directories( include_directories(
${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../
${CMAKE_CURRENT_SOURCE_DIR}/../../${PROJECT_LIBRARY}/ ${CMAKE_CURRENT_SOURCE_DIR}/../../${PROJECT_LIBRARY}/
${PROJECT_TRDPARTY_DIR} ${PROJECT_TRDPARTY_DIR}
${Qt_INCLUDE} ${Qt_INCLUDE}

View File

@ -19,15 +19,10 @@
#include <KI18n/KLocalizedString> #include <KI18n/KLocalizedString>
#include <QCheckBox>
#include <QDialogButtonBox>
#include <QDir> #include <QDir>
#include <QFileDialog>
#include <QMessageBox>
#include <QQmlPropertyMap> #include <QQmlPropertyMap>
#include <QSettings> #include <QSettings>
#include <QTextCodec> #include <QTextCodec>
#include <QVBoxLayout>
#include "awdebug.h" #include "awdebug.h"
@ -55,13 +50,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 qCDebug(LOG_AW) << "Selected filename" << fileName;
QString fileName = QFileDialog::getSaveFileName(nullptr, i18n("Export"));
if (fileName.isEmpty())
return;
qCInfo(LOG_AW) << "Selected filename" << fileName;
QSettings settings(fileName, QSettings::IniFormat); QSettings settings(fileName, QSettings::IniFormat);
// plasmoid configuration // plasmoid configuration
@ -103,33 +96,22 @@ void AWConfigHelper::exportConfiguration(QObject *nativeConfig) const
// sync settings // sync settings
settings.sync(); settings.sync();
// show additional message // show additional message
switch (settings.status()) { return settings.status() == QSettings::NoError;
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 QVariantMap AWConfigHelper::importConfiguration(const QString fileName,
const bool importPlasmoid,
const bool importExtensions,
const bool importAdds) const
{ {
qCDebug(LOG_AW) << "Selected filename" << fileName;
QVariantMap configuration; 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); QSettings settings(fileName, QSettings::IniFormat);
QHash<QString, bool> selection = selectImport();
// extensions // extensions
if (selection[QString("extensions")]) { if (importExtensions) {
foreach (QString item, m_dirs) { foreach (QString item, m_dirs) {
settings.beginGroup(item); settings.beginGroup(item);
foreach (QString it, settings.childGroups()) foreach (QString it, settings.childGroups())
@ -139,7 +121,7 @@ QVariantMap AWConfigHelper::importConfiguration() const
} }
// additional files // additional files
if (selection[QString("adds")]) { if (importAdds) {
settings.beginGroup(QString("json")); settings.beginGroup(QString("json"));
// script filters // script filters
writeFile(settings, QString("filters"), writeFile(settings, QString("filters"),
@ -153,7 +135,7 @@ QVariantMap AWConfigHelper::importConfiguration() const
} }
// plasmoid configuration // plasmoid configuration
if (selection[QString("plasmoid")]) { if (importPlasmoid) {
settings.beginGroup(QString("plasmoid")); settings.beginGroup(QString("plasmoid"));
foreach (QString key, settings.childKeys()) foreach (QString key, settings.childKeys())
configuration[key] = settings.value(key); configuration[key] = settings.value(key);
@ -279,50 +261,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, void AWConfigHelper::writeFile(QSettings &settings, const QString key,
const QString fileName) const const QString fileName) const
{ {

View File

@ -33,8 +33,12 @@ public:
explicit AWConfigHelper(QObject *parent = nullptr); explicit AWConfigHelper(QObject *parent = nullptr);
virtual ~AWConfigHelper(); virtual ~AWConfigHelper();
Q_INVOKABLE bool dropCache() const; Q_INVOKABLE bool dropCache() const;
Q_INVOKABLE void exportConfiguration(QObject *nativeConfig) const; Q_INVOKABLE bool exportConfiguration(QObject *nativeConfig,
Q_INVOKABLE QVariantMap importConfiguration() const; const QString fileName) const;
Q_INVOKABLE QVariantMap importConfiguration(const QString fileName,
const bool importPlasmoid,
const bool importExtensions,
const bool importAdds) const;
// dataengine // dataengine
Q_INVOKABLE QVariantMap readDataEngineConfiguration() const; Q_INVOKABLE QVariantMap readDataEngineConfiguration() const;
Q_INVOKABLE void Q_INVOKABLE void
@ -47,7 +51,6 @@ private:
void copySettings(QSettings &from, QSettings &to) const; void copySettings(QSettings &from, QSettings &to) const;
void readFile(QSettings &settings, const QString key, void readFile(QSettings &settings, const QString key,
const QString fileName) const; const QString fileName) const;
QHash<QString, bool> selectImport() const;
void writeFile(QSettings &settings, const QString key, void writeFile(QSettings &settings, const QString key,
const QString fileName) const; const QString fileName) const;
// properties // properties

View File

@ -66,21 +66,14 @@ AWKeys::~AWKeys()
qCDebug(LOG_AW) << __PRETTY_FUNCTION__; qCDebug(LOG_AW) << __PRETTY_FUNCTION__;
// extensions // extensions
if (graphicalItems != nullptr)
delete graphicalItems; delete graphicalItems;
if (extQuotes != nullptr)
delete extQuotes; delete extQuotes;
if (extScripts != nullptr)
delete extScripts; delete extScripts;
if (extUpgrade != nullptr)
delete extUpgrade; delete extUpgrade;
if (extWeather != nullptr)
delete extWeather; delete extWeather;
// core // core
if (dataEngineAggregator != nullptr)
delete dataEngineAggregator; delete dataEngineAggregator;
if (m_threadPool != nullptr)
delete m_threadPool; delete m_threadPool;
delete aggregator; delete aggregator;
delete dataAggregator; delete dataAggregator;
@ -471,16 +464,16 @@ void AWKeys::reinitKeys()
{ {
// renew extensions // renew extensions
// delete them if any // delete them if any
if (graphicalItems != nullptr)
delete graphicalItems; delete graphicalItems;
if (extQuotes != nullptr) graphicalItems = nullptr;
delete extQuotes; delete extQuotes;
if (extScripts != nullptr) extQuotes = nullptr;
delete extScripts; delete extScripts;
if (extUpgrade != nullptr) extScripts = nullptr;
delete extUpgrade; delete extUpgrade;
if (extWeather != nullptr) extUpgrade = nullptr;
delete extWeather; delete extWeather;
extWeather = nullptr;
// create // create
graphicalItems graphicalItems
= new ExtItemAggregator<GraphicalItem>(nullptr, QString("desktops")); = new ExtItemAggregator<GraphicalItem>(nullptr, QString("desktops"));

View File

@ -5,8 +5,6 @@ add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidge
include_directories( include_directories(
${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../
${PROJECT_TRDPARTY_DIR} ${PROJECT_TRDPARTY_DIR}
${Qt_INCLUDE} ${Qt_INCLUDE}
${Kf5_INCLUDE} ${Kf5_INCLUDE}

View File

@ -20,7 +20,7 @@ X-Plasma-RemoteLocation=
X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis
X-KDE-PluginInfo-Email=esalexeev@gmail.com X-KDE-PluginInfo-Email=esalexeev@gmail.com
X-KDE-PluginInfo-Name=org.kde.plasma.desktoppanel X-KDE-PluginInfo-Name=org.kde.plasma.desktoppanel
X-KDE-PluginInfo-Version=3.0.0 X-KDE-PluginInfo-Version=3.0.1
X-KDE-PluginInfo-Website=http://arcanis.name/projects/awesome-widgets/ X-KDE-PluginInfo-Website=http://arcanis.name/projects/awesome-widgets/
X-KDE-PluginInfo-Category=System Information X-KDE-PluginInfo-Category=System Information
X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-Depends=

View File

@ -4,8 +4,6 @@ add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.desktoppanel
include_directories( include_directories(
${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../
${PROJECT_TRDPARTY_DIR} ${PROJECT_TRDPARTY_DIR}
${Qt_INCLUDE} ${Qt_INCLUDE}
${Kf5_INCLUDE} ${Kf5_INCLUDE}

View File

@ -5,8 +5,6 @@ add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidge
include_directories( include_directories(
${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../
${CMAKE_CURRENT_SOURCE_DIR}/../${PROJECT_LIBRARY}/ ${CMAKE_CURRENT_SOURCE_DIR}/../${PROJECT_LIBRARY}/
${PROJECT_TRDPARTY_DIR} ${PROJECT_TRDPARTY_DIR}
${Qt_INCLUDE} ${Qt_INCLUDE}