summaryrefslogtreecommitdiff
path: root/LogThread.h
diff options
context:
space:
mode:
Diffstat (limited to 'LogThread.h')
-rw-r--r--LogThread.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/LogThread.h b/LogThread.h
new file mode 100644
index 0000000..40f9154
--- /dev/null
+++ b/LogThread.h
@@ -0,0 +1,98 @@
+/** \file LogThread.h
+\brief The thread to do the log but not block the main thread
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef LOGTHREAD_H
+#define LOGTHREAD_H
+
+#include <QThread>
+#include <QString>
+#include <QDateTime>
+#include <QVariant>
+#include <QFile>
+
+#include "Environment.h"
+#include "StructEnumDefinition.h"
+
+/** \brief Log all the user oriented activity
+
+It use thread based storage to prevent gui thread freeze on log file writing when is out of the disk buffer. That's allow to async the event.
+*/
+class LogThread : public QThread
+{
+ Q_OBJECT
+public:
+ explicit LogThread();
+ ~LogThread();
+ bool logTransfer() const;
+public slots:
+ /** method called when new transfer is started */
+ void newTransferStart(const Ultracopier::ItemOfCopyList &item);
+ /** method called when transfer is stopped */
+ void newTransferStop(const Ultracopier::ItemOfCopyList &item);
+ /** method called when new transfer is started */
+ void transferSkip(const Ultracopier::ItemOfCopyList &item);
+ /** method called when new error is occurred */
+ void error(const std::string &path,const uint64_t &size,const uint64_t &mtime,const std::string &error);
+ /** method called when the log file need be created */
+ void openLogs();
+ /** method called when the log file need be closed */
+ void closeLogs();
+ /** method called when one folder is removed */
+ void rmPath(const std::string &path);
+ /** method called when one folder is created */
+ void mkPath(const std::string &path);
+private slots:
+ /** write the data into the file */
+ void realDataWrite(const std::string &text);
+ /** update the options value */
+ void newOptionValue(const std::string &group,const std::string &name,const std::string &value);
+signals:
+ void newData(const std::string &text) const;
+private:
+ std::string data;
+ std::string transfer_format;
+ std::string error_format;
+ std::string folder_format;
+ QFile log;
+ std::string lineReturn;
+ std::string replaceBaseVar(std::string text);
+ #ifdef Q_OS_WIN32
+ std::string computer;
+ std::string user;
+ #endif
+ bool sync;
+ bool enabled;
+ bool log_enable_transfer;
+ bool log_enable_error;
+ bool log_enable_folder;
+
+ static std::string text_header_copy;
+ static std::string text_header_move;
+ static std::string text_header_skip;
+ static std::string text_header_stop;
+ static std::string text_header_error;
+ static std::string text_header_MkPath;
+ static std::string text_header_RmPath;
+
+ static std::string text_var_source;
+ static std::string text_var_size;
+ static std::string text_var_destination;
+ static std::string text_var_path;
+ static std::string text_var_error;
+ static std::string text_var_mtime;
+ static std::string text_var_time;
+ static std::string text_var_timestring;
+ #ifdef Q_OS_WIN32
+ static std::string text_var_computer;
+ static std::string text_var_user;
+ #endif
+ static std::string text_var_operation;
+ static std::string text_var_rmPath;
+ static std::string text_var_mkPath;
+protected:
+ void run();
+};
+
+#endif // LOGTHREAD_H