commit 6262bb8b9d75a5b1a773089b041521bc9c53660e
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Fri Aug 7 22:26:31 2015 +0200

    pro file update

diff --git a/samples/example/Example.pro b/samples/example/Example.pro
index 8add32a..0f499ca 100644
--- a/samples/example/Example.pro
+++ b/samples/example/Example.pro
@@ -32,11 +32,11 @@ unix:DEPENDPATH += $$PWD/../../src
 CONFIG += c++14
 QMAKE_CXXFLAGS += -std=c++14
 
-win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../build-EntityManager-Desktop-Release/release/ -lCuteEntityManager
-else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../build-EntityManager-Desktop-Debug/debug/ -lCuteEntityManager
+win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../build-EntityManager-Desktop-Release/release/ -lCuteEntityManager
+else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../build-EntityManager-Desktop-Debug/debug/ -lCuteEntityManager
 
-win32:INCLUDEPATH += $$PWD/../../build-EntityManager-Desktop-Debug/debug
-win32:DEPENDPATH += $$PWD/../../build-EntityManager-Desktop-Debug/debug
+win32:INCLUDEPATH += $$PWD/../../../build-EntityManager-Desktop-Debug/debug
+win32:DEPENDPATH += $$PWD/../../../build-EntityManager-Desktop-Debug/debug
 
 INCLUDEPATH += $$PWD/../../src
 DEPENDPATH += $$PWD/../../src
diff --git a/samples/example/main.cpp b/samples/example/main.cpp
index fc4eb8d..39481cc 100644
--- a/samples/example/main.cpp
+++ b/samples/example/main.cpp
@@ -49,7 +49,7 @@ int main(int argc, char *argv[]) {
       * Instead of startup(version,qstringlist) you can call method createTable of EntityManager (e->create(sharedptr))
       * startup will create tables inclusive relation tables for classes in QStringList inits
       */
-    qWarning() << "Tables created:" << e->startup("0.1", inits);
+    qWarning() << "Tables created or already set up:" << e->startup("0.1", inits);
     QSharedPointer<CuteEntityManager::Entity> p =
         QSharedPointer<CuteEntityManager::Entity>(new Person("Max", "Mustermann",
                 Person::Gender::MALE, "", "", "",
diff --git a/src/sqlitebackupprocessor.cpp b/src/sqlitebackupprocessor.cpp
index aea20da..f96aab5 100644
--- a/src/sqlitebackupprocessor.cpp
+++ b/src/sqlitebackupprocessor.cpp
@@ -23,6 +23,19 @@ SqliteBackupProcessor::SqliteBackupProcessor(QSharedPointer<Database> database,
     this->destination = destination;
 }
 
+SqliteBackupProcessor::SqliteBackupProcessor(QSharedPointer<Database> database,
+        QString destination, QString backupFilename, QTimer timer,
+        bool incrementalBackups, int backupCount) {
+    this->database = database;
+    this->destination = destination;
+    this->timer = timer;
+    this->backupFilename = backupFilename;
+    this->incrementalBackups = incrementalBackups;
+    this->backupCount = backupCount;
+    connect(timer, &QTimer::timeout, this,
+            &SqliteBackupProcessor::backup);
+}
+
 SqliteBackupProcessor::~SqliteBackupProcessor() {
 }
 
@@ -118,3 +131,46 @@ bool SqliteBackupProcessor::sqliteDBMemFile(bool save, QString fileName) {
     }
     return state;
 }
+
+void SqliteBackupProcessor::backup() {
+    QString fileName = this->destination + "/" + this->getBackupFilename();
+    if (incrementalBackups) {
+        fileName += QString::number(counter);
+        ++counter;
+    }
+    this->sqliteDBMemFile(true, fileName);
+}
+
+bool SqliteBackupProcessor::getIncrementalBackups() const {
+    return incrementalBackups;
+}
+
+void SqliteBackupProcessor::setIncrementalBackups(bool value) {
+    incrementalBackups = value;
+}
+
+int SqliteBackupProcessor::getBackupCount() const {
+    return backupCount;
+}
+
+void SqliteBackupProcessor::setBackupCount(int value) {
+    backupCount = value;
+}
+
+
+QTimer SqliteBackupProcessor::getTimer() const {
+    return timer;
+}
+
+void SqliteBackupProcessor::setTimer(const QTimer &value) {
+    timer = value;
+}
+
+QString SqliteBackupProcessor::getBackupFilename() const {
+    return backupFilename;
+}
+
+void SqliteBackupProcessor::setBackupFilename(const QString &value) {
+    backupFilename = value;
+}
+
diff --git a/src/sqlitebackupprocessor.h b/src/sqlitebackupprocessor.h
index 9b6a579..3091960 100644
--- a/src/sqlitebackupprocessor.h
+++ b/src/sqlitebackupprocessor.h
@@ -20,11 +20,16 @@
 #include <QtSql/QSqlDriver>
 #include <QString>
 #include <QVariant>
+#include <QTimer>
 #include "database.h"
 namespace CuteEntityManager {
 class SqliteBackupProcessor : public QObject {
   public:
-    explicit SqliteBackupProcessor(QSharedPointer<Database> database, QString destination);
+    explicit SqliteBackupProcessor(QSharedPointer<Database> database,
+                                   QString destination);
+    explicit SqliteBackupProcessor(QSharedPointer<Database> database,
+                                   QString destination, QString backupFilename, QTimer timer,
+                                   bool incrementalBackups = false, int backupCount = 1);
     ~SqliteBackupProcessor();
     QSharedPointer<Database> getDatabase() const;
     void setDatabase(const QSharedPointer<Database> &value);
@@ -32,11 +37,29 @@ class SqliteBackupProcessor : public QObject {
     QString getDestination() const;
     void setDestination(const QString &value);
 
-public slots:
-    bool sqliteDBMemFile(bool save,QString fileName= "db.sqlite.bak");
-private:
+    QString getBackupFilename() const;
+    void setBackupFilename(const QString &value);
+
+    QTimer getTimer() const;
+    void setTimer(const QTimer &value);
+
+    int getBackupCount() const;
+    void setBackupCount(int value);
+
+    bool getIncrementalBackups() const;
+    void setIncrementalBackups(bool value);
+
+  public slots:
+    bool sqliteDBMemFile(bool save, QString fileName = "db.sqlite.bak");
+    void backup();
+  private:
     QSharedPointer<Database> database;
     QString destination;
+    QString backupFilename;
+    QTimer timer;
+    bool incrementalBackups;
+    int backupCount;
+    int counter = 0;
 };
 }
 
