changeset 190:76afbf6508c8

Add check for last successful database backup, and show a warning dialog at startup if more than 7 days have passed since. Only if backups are enabled etc.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 08 Nov 2017 15:46:51 +0200
parents 0b94ad4ea029
children 79da81b9e184
files src/main.cpp src/main.h
diffstat 2 files changed, 26 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/main.cpp	Tue Nov 07 15:46:28 2017 +0200
+++ b/src/main.cpp	Wed Nov 08 15:46:51 2017 +0200
@@ -31,6 +31,7 @@
     int     dbBackupMode;
     QString dbBackupURL;
     QString dbBackupSecret;
+    QDateTime dbLastBackup;
 } settings;
 
 
@@ -259,6 +260,7 @@
     settings.dbBackupMode = tmpst.value("dbBackupMode", BACKUP_NONE).toInt();
     settings.dbBackupURL = tmpst.value("dbBackupURL", QString()).toString();
     settings.dbBackupSecret = tmpst.value("dbBackupSecret", QString()).toString();
+    settings.dbLastBackup = tmpst.value("dbLastBackup", QDateTime::fromSecsSinceEpoch(0)).toDateTime();
 
     // Check commandline arguments for configuring backup settings
     if (argc >= 2 && strcmp(argv[1], "config") == 0)
@@ -448,6 +450,19 @@
     new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Return), this, SLOT(focusDebtEdit()));
 
     new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_P), this, SLOT(on_button_Print_clicked()));
+
+    // Check for successful backup
+    qint64 threshold = 7;
+    qint64 delta = settings.dbLastBackup.msecsTo(QDateTime::currentDateTimeUtc());
+    if (settings.dbBackupMode != BACKUP_NONE &&
+        QDateTime::fromSecsSinceEpoch(0).msecsTo(settings.dbLastBackup) > 0 &&
+        delta > (1000 * 60 * 60 * 24) * threshold)
+    {
+        slErrorMsg(
+            tr("<h1>Varoitus!</h1>"),
+            tr("Edellisestä onnistuneesta tietokannan varmuuskopioinnista on kulunut <b>%1</b> päivää.").
+            arg(delta / (1000 * 60 * 60 * 24)));
+    }
 }
 
 
@@ -485,6 +500,15 @@
 }
 
 
+void SyntilistaMainWindow::backupSuccess()
+{
+    QSettings tmpst(APP_VENDOR, APP_ID);
+    slLog("INFO", "Backup successful.");
+
+    tmpst.setValue("dbLastBackup", QDateTime::currentDateTimeUtc());
+}
+
+
 void SyntilistaMainWindow::backupDatabase()
 {
     QString dbFilename = settings.dataPath + QDir::separator() + APP_SQLITE_FILE;
@@ -643,7 +667,7 @@
             switch (code)
             {
                 case 200:
-                    slLog("INFO", "Backup successful.");
+                    backupSuccess();
                     break;
 
                 case 403:
--- a/src/main.h	Tue Nov 07 15:46:28 2017 +0200
+++ b/src/main.h	Wed Nov 08 15:46:51 2017 +0200
@@ -164,6 +164,7 @@
     void updatePersonList();
     void updateMiscValues();
     void backupDatabase();
+    void backupSuccess();
 
     bool printDocumentPage(const bool getPageInfo, const int page, QPainter *pt, QPrinter *printer);