improve configuration import and export

Special directory for configuration store has been created. In
particular it will allow to realize #72
This commit is contained in:
Evgenii Alekseev 2016-03-11 20:48:36 +03:00
parent 5af4b0c40c
commit 162708295d
4 changed files with 47 additions and 0 deletions

View File

@ -394,6 +394,7 @@ Item {
id: saveConfigAs id: saveConfigAs
selectExisting: false selectExisting: false
title: i18n("Export") title: i18n("Export")
folder: awConfig.configurationDirectory()
onAccepted: { onAccepted: {
var status = awConfig.exportConfiguration( var status = awConfig.exportConfiguration(
plasmoid.configuration, plasmoid.configuration,
@ -431,6 +432,7 @@ Item {
QtDialogs.FileDialog { QtDialogs.FileDialog {
id: openConfig id: openConfig
title: i18n("Import") title: i18n("Import")
folder: awConfig.configurationDirectory()
onAccepted: importSelection.open() onAccepted: importSelection.open()
} }

View File

@ -40,6 +40,25 @@ AWConfigHelper::~AWConfigHelper()
} }
QString AWConfigHelper::configurationDirectory() const
{
// get readable directory
QString localDir = QString("%1/awesomewidgets/configs")
.arg(QStandardPaths::writableLocation(
QStandardPaths::GenericDataLocation));
// create directory and copy files from default settings
QDir localDirectory;
if ((!localDirectory.exists(localDir))
&& (localDirectory.mkpath(localDir))) {
qCInfo(LOG_AW) << "Created directory" << localDir;
copyConfigs(localDir);
}
return localDir;
}
bool AWConfigHelper::dropCache() const bool AWConfigHelper::dropCache() const
{ {
QString fileName = QString("%1/awesomewidgets.ndx") QString fileName = QString("%1/awesomewidgets.ndx")
@ -212,6 +231,28 @@ void AWConfigHelper::writeDataEngineConfiguration(
} }
void AWConfigHelper::copyConfigs(const QString localDir) const
{
qCDebug(LOG_AW) << "Local directory" << localDir;
QStringList dirs = QStandardPaths::locateAll(
QStandardPaths::GenericDataLocation, QString("awesomewidgets/configs"),
QStandardPaths::LocateDirectory);
for (auto dir : dirs) {
if (dir == localDir)
continue;
QStringList files = QDir(dir).entryList(QDir::Files);
for (auto source : files) {
QString destination = QString("%1/%2").arg(localDir).arg(source);
bool status = QFile::copy(QString("%1/%2").arg(dir).arg(source),
destination);
qCInfo(LOG_AW) << "File" << source << "has been copied to"
<< destination << "with status" << status;
}
}
}
void AWConfigHelper::copyExtensions(const QString item, const QString type, void AWConfigHelper::copyExtensions(const QString item, const QString type,
QSettings &settings, QSettings &settings,
const bool inverse) const const bool inverse) const

View File

@ -32,6 +32,7 @@ class AWConfigHelper : public QObject
public: public:
explicit AWConfigHelper(QObject *parent = nullptr); explicit AWConfigHelper(QObject *parent = nullptr);
virtual ~AWConfigHelper(); virtual ~AWConfigHelper();
Q_INVOKABLE QString configurationDirectory() const;
Q_INVOKABLE bool dropCache() const; Q_INVOKABLE bool dropCache() const;
Q_INVOKABLE bool exportConfiguration(QObject *nativeConfig, Q_INVOKABLE bool exportConfiguration(QObject *nativeConfig,
const QString fileName) const; const QString fileName) const;
@ -46,6 +47,7 @@ public:
private: private:
// methods // methods
void copyConfigs(const QString localDir) const;
void copyExtensions(const QString item, const QString type, void copyExtensions(const QString item, const QString type,
QSettings &settings, const bool inverse) const; QSettings &settings, const bool inverse) const;
void copySettings(QSettings &from, QSettings &to) const; void copySettings(QSettings &from, QSettings &to) const;

View File

@ -13,6 +13,7 @@ include_directories(
file(GLOB SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/qreplytimeout/*.cpp ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/qreplytimeout/*.cpp ${CMAKE_SOURCE_DIR}/*.cpp)
file(GLOB SUBPROJECT_HEADER *.h ${PROJECT_TRDPARTY_DIR}/qreplytimeout/*.h) file(GLOB SUBPROJECT_HEADER *.h ${PROJECT_TRDPARTY_DIR}/qreplytimeout/*.h)
file(GLOB SUBPROJECT_UI *.ui) file(GLOB SUBPROJECT_UI *.ui)
set(SUBPROJECT_CONFIGS ${CMAKE_CURRENT_SOURCE_DIR}/configs)
set(SUBPROJECT_GRAPHITEMS ${CMAKE_CURRENT_SOURCE_DIR}/desktops) set(SUBPROJECT_GRAPHITEMS ${CMAKE_CURRENT_SOURCE_DIR}/desktops)
set(SUBPROJECT_QUOTES ${CMAKE_CURRENT_SOURCE_DIR}/quotes) set(SUBPROJECT_QUOTES ${CMAKE_CURRENT_SOURCE_DIR}/quotes)
set(SUBPROJECT_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/scripts) set(SUBPROJECT_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/scripts)
@ -29,6 +30,7 @@ add_library(${SUBPROJECT} STATIC ${SUBPROJECT_SOURCE} ${SUBPROJECT_HEADER} ${SUB
target_link_libraries(${SUBPROJECT} ${Qt_LIBRARIES} ${Kf5_LIBRARIES}) target_link_libraries(${SUBPROJECT} ${Qt_LIBRARIES} ${Kf5_LIBRARIES})
# install # install
install(DIRECTORY ${SUBPROJECT_CONFIGS} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME})
install(DIRECTORY ${SUBPROJECT_GRAPHITEMS} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) install(DIRECTORY ${SUBPROJECT_GRAPHITEMS} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME})
install(DIRECTORY ${SUBPROJECT_QUOTES} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) install(DIRECTORY ${SUBPROJECT_QUOTES} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME})
install(DIRECTORY ${SUBPROJECT_SCRIPTS} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) install(DIRECTORY ${SUBPROJECT_SCRIPTS} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME})