diff options
Diffstat (limited to 'consistencycheck.h')
-rw-r--r-- | consistencycheck.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/consistencycheck.h b/consistencycheck.h new file mode 100644 index 0000000..15d0da7 --- /dev/null +++ b/consistencycheck.h @@ -0,0 +1,73 @@ +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. +*/ + +#ifndef CONSISTENCYCHECK_H +#define CONSISTENCYCHECK_H + +#include <QDialog> +#include <QThread> +#include <QSqlDatabase> +#include <QMutex> + +class QPushButton; +class QTextEdit; +class QLabel; +class QString; +class ConsistencyChecker; + +class ConsistencyCheck : public QDialog { + Q_OBJECT + public: + enum Mode { DbCheck, FsCheck }; + explicit ConsistencyCheck(QWidget *parent = 0, Qt::WindowFlags f = 0); + + private slots: + void startChecker(int checkerType); + void addMessage(const QString &message); + void cancelExit(); + + private: + QPushButton *mCancelExit; + QPushButton *mCheckDb; + QPushButton *mCheckFs; + QTextEdit *mDisplay; + QLabel *mCheckLabel; + ConsistencyChecker *mChecker; +}; + +class ConsistencyChecker : public QThread { + Q_OBJECT + public: + enum Status { Ok, Fail }; + explicit ConsistencyChecker(QObject *parent = 0); + ~ConsistencyChecker(); + int mode() const { return mMode; } + void setMode(int mode) { mMode = mode; } + int status() const { return mStatus; } + void setStatus(int status) { mStatus = status; } + void check(); + + public slots: + void cancel(bool cancel); + + signals: + void consistencyMsg(const QString &msg); + + protected: + void run(); + + private: + void dbCheck(); + QString archivePath(const QString &fileName, const QString &md5sum) const; + bool mCanceled; + int mMode; + int mStatus; + QSqlDatabase mDb; + QMutex mCancelMutex; +}; + +#endif // CONSISTENCYCHECK_H |