diff --git a/migration/autotests/CMakeLists.txt b/migration/autotests/CMakeLists.txt index cab0949f1..3b758df56 100644 --- a/migration/autotests/CMakeLists.txt +++ b/migration/autotests/CMakeLists.txt @@ -8,7 +8,7 @@ include_directories( set( kmail_migratekmail4configtest_source kmmigratekmail4configtest.cpp ../kmmigratekmail4config.cpp ../migrateinfo.cpp) add_executable(migratekmail4configtest ${kmail_migratekmail4configtest_source}) ecm_mark_as_test(kmail-migratekmail4configtest) -target_link_libraries( migratekmail4configtest Qt5::Test KF5::CoreAddons) +target_link_libraries( migratekmail4configtest Qt5::Test KF5::CoreAddons KF5::ConfigCore) diff --git a/migration/autotests/kmmigratekmail4configtest.cpp b/migration/autotests/kmmigratekmail4configtest.cpp index 81200bd15..6ff73c4f1 100644 --- a/migration/autotests/kmmigratekmail4configtest.cpp +++ b/migration/autotests/kmmigratekmail4configtest.cpp @@ -34,6 +34,14 @@ void KMMigrateKMail4ConfigTest::shouldHaveDefaultValue() { KMMigrateKMail4Config migrate; QVERIFY(!migrate.start()); + QVERIFY(migrate.configFileName().isEmpty()); +} + +void KMMigrateKMail4ConfigTest::shouldVerifyIfCheckIsNecessary() +{ + KMMigrateKMail4Config migrate; + //Invalid before config file is not set. + QVERIFY(!migrate.checkIfNecessary()); } QTEST_MAIN(KMMigrateKMail4ConfigTest) diff --git a/migration/autotests/kmmigratekmail4configtest.h b/migration/autotests/kmmigratekmail4configtest.h index eea8f086f..cae7bacd3 100644 --- a/migration/autotests/kmmigratekmail4configtest.h +++ b/migration/autotests/kmmigratekmail4configtest.h @@ -28,6 +28,7 @@ public: ~KMMigrateKMail4ConfigTest(); private Q_SLOTS: void shouldHaveDefaultValue(); + void shouldVerifyIfCheckIsNecessary(); }; diff --git a/migration/kmmigratekmail4config.cpp b/migration/kmmigratekmail4config.cpp index e3dea1616..bbb528f28 100644 --- a/migration/kmmigratekmail4config.cpp +++ b/migration/kmmigratekmail4config.cpp @@ -17,6 +17,9 @@ #include "kmmigratekmail4config.h" #include +#include +#include +#include KMMigrateKMail4Config::KMMigrateKMail4Config(QObject *parent) : QObject(parent), @@ -36,6 +39,10 @@ bool KMMigrateKMail4Config::start() return false; } + if (mConfigFileName.isEmpty()) { + qDebug() << " config file name not defined."; + return false; + } // Testing for kdehome Kdelibs4Migration migration; if (!migration.kdeHomeFound()) { @@ -66,6 +73,14 @@ void KMMigrateKMail4Config::setConfigFileName(const QString &configFileName) mConfigFileName = configFileName; } +void KMMigrateKMail4Config::writeConfig() +{ + KSharedConfig::Ptr config = KSharedConfig::openConfig(mConfigFileName, KConfig::SimpleConfig); + KConfigGroup grp = config->group(QStringLiteral("Migrate")); + grp.writeEntry(QStringLiteral("Version"), mVersion); + grp.sync(); +} + void KMMigrateKMail4Config::migrateFolder(const MigrateInfo &info) { //TODO @@ -88,7 +103,20 @@ void KMMigrateKMail4Config::setVersion(int version) bool KMMigrateKMail4Config::checkIfNecessary() { - //TODO compare mVersion with current version saved in config file. + if (mConfigFileName.isEmpty()) { + qDebug() << " config file name not defined."; + return false; + } + KSharedConfig::Ptr config = KSharedConfig::openConfig(mConfigFileName, KConfig::SimpleConfig); + if (config->hasGroup(QStringLiteral("Migrate"))) { + KConfigGroup grp = config->group(QStringLiteral("Migrate")); + const int lastVersion = grp.readEntry(QStringLiteral("Version"), 0); + if (lastVersion < mVersion) { + return true; + } else { + return false; + } + } return true; } diff --git a/migration/kmmigratekmail4config.h b/migration/kmmigratekmail4config.h index 37812efee..cf484f999 100644 --- a/migration/kmmigratekmail4config.h +++ b/migration/kmmigratekmail4config.h @@ -43,6 +43,7 @@ Q_SIGNALS: void migrateDone(); private: + void writeConfig(); void migrateFolder(const MigrateInfo &info); void migrateFile(const MigrateInfo &info); bool migrateConfig();