comparison src/main.cpp @ 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 7f0a4d5010d1
children 79da81b9e184
comparison
equal deleted inserted replaced
189:0b94ad4ea029 190:76afbf6508c8
29 29
30 // Backup related settings 30 // Backup related settings
31 int dbBackupMode; 31 int dbBackupMode;
32 QString dbBackupURL; 32 QString dbBackupURL;
33 QString dbBackupSecret; 33 QString dbBackupSecret;
34 QDateTime dbLastBackup;
34 } settings; 35 } settings;
35 36
36 37
37 38
38 // 39 //
257 settings.uiSize = tmpst.value("size", QSize(1000, 600)).toSize(); 258 settings.uiSize = tmpst.value("size", QSize(1000, 600)).toSize();
258 settings.uiScale = tmpst.value("scale", 1.0f).toDouble(); 259 settings.uiScale = tmpst.value("scale", 1.0f).toDouble();
259 settings.dbBackupMode = tmpst.value("dbBackupMode", BACKUP_NONE).toInt(); 260 settings.dbBackupMode = tmpst.value("dbBackupMode", BACKUP_NONE).toInt();
260 settings.dbBackupURL = tmpst.value("dbBackupURL", QString()).toString(); 261 settings.dbBackupURL = tmpst.value("dbBackupURL", QString()).toString();
261 settings.dbBackupSecret = tmpst.value("dbBackupSecret", QString()).toString(); 262 settings.dbBackupSecret = tmpst.value("dbBackupSecret", QString()).toString();
263 settings.dbLastBackup = tmpst.value("dbLastBackup", QDateTime::fromSecsSinceEpoch(0)).toDateTime();
262 264
263 // Check commandline arguments for configuring backup settings 265 // Check commandline arguments for configuring backup settings
264 if (argc >= 2 && strcmp(argv[1], "config") == 0) 266 if (argc >= 2 && strcmp(argv[1], "config") == 0)
265 { 267 {
266 settings.dbBackupMode = QString(argv[2]).toInt(); 268 settings.dbBackupMode = QString(argv[2]).toInt();
446 new QShortcut(QKeySequence(Qt::Key_PageDown), this, SLOT(selectRowNext())); 448 new QShortcut(QKeySequence(Qt::Key_PageDown), this, SLOT(selectRowNext()));
447 449
448 new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Return), this, SLOT(focusDebtEdit())); 450 new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Return), this, SLOT(focusDebtEdit()));
449 451
450 new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_P), this, SLOT(on_button_Print_clicked())); 452 new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_P), this, SLOT(on_button_Print_clicked()));
453
454 // Check for successful backup
455 qint64 threshold = 7;
456 qint64 delta = settings.dbLastBackup.msecsTo(QDateTime::currentDateTimeUtc());
457 if (settings.dbBackupMode != BACKUP_NONE &&
458 QDateTime::fromSecsSinceEpoch(0).msecsTo(settings.dbLastBackup) > 0 &&
459 delta > (1000 * 60 * 60 * 24) * threshold)
460 {
461 slErrorMsg(
462 tr("<h1>Varoitus!</h1>"),
463 tr("Edellisestä onnistuneesta tietokannan varmuuskopioinnista on kulunut <b>%1</b> päivää.").
464 arg(delta / (1000 * 60 * 60 * 24)));
465 }
451 } 466 }
452 467
453 468
454 // 469 //
455 // Application main window destructor 470 // Application main window destructor
480 // Back up the database 495 // Back up the database
481 if (settings.dbBackupMode != BACKUP_NONE) 496 if (settings.dbBackupMode != BACKUP_NONE)
482 backupDatabase(); 497 backupDatabase();
483 else 498 else
484 slLog("INFO", QStringLiteral("Database backup mode is NONE, not performing backup.")); 499 slLog("INFO", QStringLiteral("Database backup mode is NONE, not performing backup."));
500 }
501
502
503 void SyntilistaMainWindow::backupSuccess()
504 {
505 QSettings tmpst(APP_VENDOR, APP_ID);
506 slLog("INFO", "Backup successful.");
507
508 tmpst.setValue("dbLastBackup", QDateTime::currentDateTimeUtc());
485 } 509 }
486 510
487 511
488 void SyntilistaMainWindow::backupDatabase() 512 void SyntilistaMainWindow::backupDatabase()
489 { 513 {
641 { 665 {
642 int code = status.toInt(); 666 int code = status.toInt();
643 switch (code) 667 switch (code)
644 { 668 {
645 case 200: 669 case 200:
646 slLog("INFO", "Backup successful."); 670 backupSuccess();
647 break; 671 break;
648 672
649 case 403: 673 case 403:
650 slLog("ERROR", "Backup server authentication failed. Wrong secret or other invalid settings."); 674 slLog("ERROR", "Backup server authentication failed. Wrong secret or other invalid settings.");
651 break; 675 break;