diff --git a/apps/opencs/CMakeLists.txt b/apps/opencs/CMakeLists.txt index ce83e4ea6..d2b87be51 100644 --- a/apps/opencs/CMakeLists.txt +++ b/apps/opencs/CMakeLists.txt @@ -7,7 +7,7 @@ set (OPENCS_SRC model/world/universalid.cpp model/world/idcollection.cpp model/world/data.cpp model/world/idtable.cpp model/world/commands.cpp model/world/idtableproxymodel.cpp model/world/record.cpp - model/tools/tools.cpp model/tools/verifier.cpp + model/tools/tools.cpp model/tools/operation.cpp model/tools/verifier.cpp view/doc/viewmanager.cpp view/doc/view.cpp view/doc/operations.cpp view/doc/operation.cpp @@ -23,7 +23,7 @@ set (OPENCS_HDR model/world/idtable.hpp model/world/columns.hpp model/world/idtableproxymodel.hpp model/world/commands.hpp - model/tools/tools.hpp model/tools/verifier.hpp + model/tools/tools.hpp model/tools/operation.hpp model/tools/verifier.hpp view/doc/viewmanager.hpp view/doc/view.hpp view/doc/operations.hpp view/doc/operation.hpp diff --git a/apps/opencs/model/tools/operation.cpp b/apps/opencs/model/tools/operation.cpp new file mode 100644 index 000000000..ba5866168 --- /dev/null +++ b/apps/opencs/model/tools/operation.cpp @@ -0,0 +1,35 @@ + +#include "operation.hpp" + +#include + +#include "../doc/state.hpp" + +CSMTools::Operation::Operation (int type) : mType (type) {} + +void CSMTools::Operation::run() +{ + mStep = 0; + + QTimer timer; + + timer.connect (&timer, SIGNAL (timeout()), this, SLOT (verify())); + + timer.start (0); + + exec(); +} + +void CSMTools::Operation::abort() +{ + exit(); +} + +void CSMTools::Operation::verify() +{ + ++mStep; + emit progress (mStep, 1000, mType); + + if (mStep>=1000) + exit(); +} \ No newline at end of file diff --git a/apps/opencs/model/tools/operation.hpp b/apps/opencs/model/tools/operation.hpp new file mode 100644 index 000000000..b75e2898f --- /dev/null +++ b/apps/opencs/model/tools/operation.hpp @@ -0,0 +1,35 @@ +#ifndef CSM_TOOLS_OPERATION_H +#define CSM_TOOLS_OPERATION_H + +#include + +namespace CSMTools +{ + class Operation : public QThread + { + Q_OBJECT + + int mType; + int mStep; + + public: + + Operation (int type); + + virtual void run(); + + signals: + + void progress (int current, int max, int type); + + public slots: + + void abort(); + + private slots: + + void verify(); + }; +} + +#endif \ No newline at end of file diff --git a/apps/opencs/model/tools/verifier.cpp b/apps/opencs/model/tools/verifier.cpp index 14cb692e9..9c00d4ea7 100644 --- a/apps/opencs/model/tools/verifier.cpp +++ b/apps/opencs/model/tools/verifier.cpp @@ -1,33 +1,7 @@ #include "verifier.hpp" -#include - #include "../doc/state.hpp" -void CSMTools::Verifier::run() -{ - mStep = 0; - - QTimer timer; - - timer.connect (&timer, SIGNAL (timeout()), this, SLOT (verify())); - - timer.start (0); - - exec(); -} - -void CSMTools::Verifier::abort() -{ - exit(); -} - -void CSMTools::Verifier::verify() -{ - ++mStep; - emit progress (mStep, 1000, CSMDoc::State_Verifying); - - if (mStep>=1000) - exit(); -} \ No newline at end of file +CSMTools::Verifier::Verifier() : Operation (CSMDoc::State_Verifying) +{} diff --git a/apps/opencs/model/tools/verifier.hpp b/apps/opencs/model/tools/verifier.hpp index 0e7fae19c..054f87169 100644 --- a/apps/opencs/model/tools/verifier.hpp +++ b/apps/opencs/model/tools/verifier.hpp @@ -1,33 +1,17 @@ #ifndef CSM_TOOLS_VERIFIER_H #define CSM_TOOLS_VERIFIER_H -#include +#include "operation.hpp" namespace CSMTools { - class Verifier : public QThread + class Verifier : public Operation { - Q_OBJECT - - int mStep; - public: - virtual void run(); + Verifier(); - signals: - - void progress (int current, int max, int type); - - public slots: - - void abort(); - - private slots: - - void verify(); }; - } #endif