Mercurial > hg > syntilista
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; |