Forráskód Böngészése

Stable refactor of FirstRunDialog

George 4 éve
szülő
commit
2d7eb0545d

+ 7 - 7
main.cpp

@@ -41,25 +41,25 @@ int main(int argc, char *argv[])
     QCoreApplication::setApplicationName(APPNAME);
 
     AStandardPaths::setup();
-    AStandardPaths::scan_paths();
-    if(!AStandardPaths::validate_paths()){
+    AStandardPaths::scan_dirs();
+    if(!AStandardPaths::validate_dirs()){
         DEB << "Standard paths not valid.";
         return 1;
     }
 
     ASettings::setup();
-    ASettings::write(ASettings::Setup::SetupComplete, false);
 
     aDB()->connect();
     if (!ASettings::read(ASettings::Setup::SetupComplete).toBool()) {
         FirstRunDialog dialog;
-        if(dialog.exec() == QDialog::Accepted) {
-            qApp->quit();
-            QProcess::startDetached(qApp->arguments()[0], qApp->arguments());
-        } else {
+        if(dialog.exec() == QDialog::Rejected){
             DEB "First run not accepted. Exiting.";
             return 1;
         }
+        ASettings::write(ASettings::Setup::SetupComplete, true);
+        DEB << "Wrote setup_commplete?";
+        qApp->quit();
+        QProcess::startDetached(qApp->arguments()[0], qApp->arguments());
     }
 
     //Theming

+ 17 - 17
src/classes/astandardpaths.cpp

@@ -1,47 +1,47 @@
 #include "src/classes/astandardpaths.h"
 
 //QMap<QStandardPaths::StandardLocation, QString> AStandardPaths::paths;
-QMap<AStandardPaths::Dirs, QString> AStandardPaths::paths;
+QMap<AStandardPaths::Dirs, QString> AStandardPaths::dirs;
 
 void AStandardPaths::setup()
 {
     auto settings_location = QStandardPaths::AppConfigLocation;
     auto data_location = QStandardPaths::AppDataLocation;
-    paths = {  // [G]: potential rename to `dirs`
+    dirs = {  // [G]: potential rename to `dirs`
         {Database, QStandardPaths::writableLocation(data_location)},
         {Templates, QDir(QStandardPaths::writableLocation(data_location)).filePath("templates")},
         {Settings, QStandardPaths::writableLocation(settings_location)},
         {DatabaseBackup, QDir(QStandardPaths::writableLocation(data_location)).filePath("backup")}
     };
-    DEB << "Paths created: " << paths;
+    DEB << "Paths created: " << dirs;
 }
 
-QString AStandardPaths::pathTo(Dirs loc)
+const QString& AStandardPaths::absPathOf(Dirs loc)
 {
-    return paths[loc];
+    return dirs[loc];
 }
 
-QMap<AStandardPaths::Dirs, QString> AStandardPaths::allPaths()
+const QMap<AStandardPaths::Dirs, QString>& AStandardPaths::allPaths()
 {
-    return paths;
+    return dirs;
 }
 
-void AStandardPaths::scan_paths()
+void AStandardPaths::scan_dirs()
 {
-    for(auto& path : paths){
-        auto dir = QDir(path);
-        DEB << "Scanning " << dir.path();
-        if(!dir.exists()) {
-            DEB <<"Creating " << dir.path();
-            dir.mkpath(path);
+    for(auto& dir : dirs){
+        auto d = QDir(dir);
+        DEB << "Scanning " << d.path();
+        if(!d.exists()) {
+            DEB <<"Creating " << d.path();
+            d.mkpath(dir);
         }
     }
 }
 
-bool AStandardPaths::validate_paths()
+bool AStandardPaths::validate_dirs()
 {
-    for(auto& path : paths){
-        DEB << "Validating " << path;
+    for(auto& dir : dirs){
+        DEB << "Validating " << dir;
         if(false)  // determine path as valid (scan contents and parse for correctness)
             return false;
     }

+ 7 - 8
src/classes/astandardpaths.h

@@ -21,8 +21,7 @@ public:
         DatabaseBackup
     };
 private:
-    static
-    QMap<Dirs, QString> paths;
+    static QMap<Dirs, QString> dirs;
 public:
     /// Initialise paths with corresponding StandardLocation paths
     static void setup();
@@ -31,14 +30,14 @@ public:
     // We should move away from getThis getThat functions.
     // I believe we can give better namings while avoiding this
     // OOP cliche of getEverything
-    static QString pathTo(Dirs loc);
-    static QMap<Dirs, QString> allPaths();
+    static const QString& absPathOf(Dirs loc);
+    static const QMap<Dirs, QString>& allPaths();
 
-    /// Ensure standard app paths exist, if not mkdir them.
-    static void scan_paths();
+    /// Ensure standard app directories exist, if not mkpath them.
+    static void scan_dirs();
 
-    /// Validate standard app paths are valid in structure and contents.
-    static bool validate_paths();
+    /// Validate standard app directories are valid in structure and contents.
+    static bool validate_dirs();
 };
 
 

+ 2 - 2
src/database/adatabase.cpp

@@ -51,7 +51,7 @@ ADatabase* ADatabase::getInstance()
 }
 
 ADatabase::ADatabase()
-    : databaseDir(QDir(AStandardPaths::pathTo(AStandardPaths::Database))),
+    : databaseDir(QDir(AStandardPaths::absPathOf(AStandardPaths::Database))),
       databaseFile(QFileInfo(databaseDir.filePath(QStringLiteral("logbook.db"))))
 {}
 
@@ -74,7 +74,7 @@ bool ADatabase::connect()
         return false;
 
     QSqlDatabase db = QSqlDatabase::addDatabase(SQL_DRIVER);
-    db.setDatabaseName(databaseFile.completeBaseName());
+    db.setDatabaseName(databaseFile.absoluteFilePath());
 
     if (!db.open())
         return false;

+ 15 - 14
src/database/adatabasesetup.cpp

@@ -281,7 +281,7 @@ bool ADataBaseSetup::createDatabase()
 
 bool ADataBaseSetup::downloadTemplates()
 {
-    QDir template_dir(AStandardPaths::pathTo(AStandardPaths::Templates));
+    QDir template_dir(AStandardPaths::absPathOf(AStandardPaths::Templates));
     DEB << template_dir;
     for (const auto& table : templateTables) {
         QEventLoop loop;
@@ -295,7 +295,6 @@ bool ADataBaseSetup::downloadTemplates()
     }
     return true;
 }
-
 bool ADataBaseSetup::backupOldData()
 {
     auto database_file = aDB()->databaseFile;
@@ -303,14 +302,17 @@ bool ADataBaseSetup::backupOldData()
         DEB << "No Database to backup, returning.";
         return true;
     }
+
     auto date_string = QDateTime::currentDateTime().toString(Qt::ISODate);
-    auto backup_dir = QDir(AStandardPaths::pathTo(AStandardPaths::DatabaseBackup));
+    auto backup_dir = QDir(AStandardPaths::absPathOf(AStandardPaths::DatabaseBackup));
     auto backup_name = database_file.baseName() + "-backup-" + date_string + ".bak";
-    if(!backup_dir.mkpath(backup_name)){
-        DEB << "Could not create file " << backup_name << " at: " << backup_dir.path();
+    auto file = QFile(aDB()->databaseFile.absoluteFilePath());
+
+    if (!file.rename(backup_dir.absolutePath() + '/' + backup_name)) {
+        DEB << "Unable to backup old database.";
         return false;
     }
-    DEB << "Backing up old database as: " << backup_name;
+    DEB << "Backed up old database as: " << backup_name;
     return true;
 }
 
@@ -325,7 +327,7 @@ bool ADataBaseSetup::importDefaultData()
             DEB << "Error: " << query.lastError().text();
         }
         //fill with data from csv
-        if (!commitData(aReadCsv(AStandardPaths::pathTo(AStandardPaths::Templates)
+        if (!commitData(aReadCsv(AStandardPaths::absPathOf(AStandardPaths::Templates)
                                  % QLatin1Char('/')
                                  % table % QStringLiteral(".csv")),
                         table)) {
@@ -390,21 +392,20 @@ bool ADataBaseSetup::createSchemata(const QStringList &statements)
         if(!query.isActive()) {
             errors << statement.section(QLatin1Char(' '),2,2) + " ERROR - " + query.lastError().text();
             DEB << "Query: " << query.lastQuery();
-        } else {
-            DEB << "Schema added: " << statement.section(QLatin1Char(' '),2,2);
+            continue;
         }
+        DEB << "Schema added: " << statement.section(QLatin1Char(' '), 2, 2);
     }
 
     if (!errors.isEmpty()) {
-        DEB << "The following errors have ocurred: ";
+        DEB_SRC << "The following errors have ocurred: ";
         for (const auto& error : errors) {
-            DEB << error;
+            DEB_RAW << error;
         }
         return false;
-    } else {
-        DEB << "All schemas added successfully";
-        return true;
     }
+    DEB << "All schemas added successfully";
+    return true;
 }
 /*!
  * \brief DbSetup::commitData inserts the data parsed from a csv file into the

+ 0 - 2
src/gui/dialogues/firstrundialog.cpp

@@ -129,7 +129,6 @@ bool FirstRunDialog::finish()
         db_fail_msg_box.exec();
         return false;
     }
-    ASettings::write(ASettings::Setup::SetupComplete, true);
     return true;
 }
 
@@ -156,7 +155,6 @@ bool FirstRunDialog::setupDatabase()
         return false;
     if(!ADataBaseSetup::importDefaultData())
         return false;
-    ASettings::write(ASettings::Setup::SetupComplete, true);
     return true;
 }
 

+ 11 - 1
src/testing/adebug.h

@@ -3,7 +3,17 @@
 
 #include <QDebug>
 
-#define DEB qDebug() << __PRETTY_FUNCTION__ << "\t\n"
+#if defined(__GNUC__) || defined(__clang__)
+    #define FUNC_IDENT __PRETTY_FUNCTION__
+#elif defined(_MSC_VER)
+    #define FUNC_IDENT __FUNCSIG__
+#else
+    #define FUNC_IDENT __func__
+#endif
+
+#define DEB qDebug() << FUNC_IDENT << "\n\t"
+#define DEB_SRC DEB
+#define DEB_RAW qDebug() << '\t'
 
 /*!
  * Representation macro for custom classes.