00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef XMLLOADEROBJECT_H
00021 #define XMLLOADEROBJECT_H
00022
00023 #include "kptproject.h"
00024
00025 #include <qdatetime.h>
00026 #include <QString>
00027 #include <qstringlist.h>
00028
00029 namespace KPlato
00030 {
00031
00032 class XMLLoaderObject {
00033 public:
00034 enum Severity { None=0, Errors=1, Warnings=2, Diagnostics=3, Debug=4 };
00035 XMLLoaderObject()
00036 : m_project(0),
00037 m_errors(0),
00038 m_warnings(0),
00039 m_logLevel(Diagnostics),
00040 m_log() {
00041 }
00042 ~XMLLoaderObject() {}
00043
00044 void setProject(Project *proj) { m_project = proj; }
00045 Project &project() const { return *m_project; }
00046
00047 void startLoad() {
00048 m_timer.start();
00049 m_starttime = QDateTime::currentDateTime();
00050 m_errors = m_warnings = 0;
00051 m_log.clear();
00052 addMsg(QString("Loading started at %1").arg(m_starttime.toString()));
00053 }
00054 void stopLoad() {
00055 m_elapsed = m_timer.elapsed();
00056 addMsg(QString("Loading finished at %1, took %2").arg(QDateTime::currentDateTime().toString()).arg(formatElapsed()));
00057 }
00058 QDateTime lastLoaded() const { return m_starttime; }
00059 int elapsed() const { return m_elapsed; }
00060 QString formatElapsed() { return QString("%1 seconds").arg((double)m_elapsed/1000); }
00061
00062 void setLogLevel(Severity sev) { m_logLevel = sev; }
00063 const QStringList &log() const { return m_log; }
00064 void addMsg(int sev, QString msg) {
00065 increment(sev);
00066 if (m_logLevel < sev) return;
00067 QString s;
00068 if (sev == Errors) s = "ERROR";
00069 else if (sev == Warnings) s = "WARNING";
00070 else if (sev == Diagnostics) s = "Diagnostic";
00071 else if (sev == Debug) s = "Debug";
00072 else s = "Message";
00073 m_log<<QString("%1: %2").arg(s, 13).arg(msg);
00074 }
00075 void addMsg(QString msg) { m_log<<msg; }
00076 void increment(int sev) {
00077 if (sev == Errors) { incErrors(); return; }
00078 if (sev == Warnings) { incWarnings(); return; }
00079 }
00080 void incErrors() { ++m_errors; }
00081 int errors() const { return m_errors; }
00082 bool error() const { return m_errors > 0; }
00083 void incWarnings() { ++m_warnings; }
00084 int warnings() const { return m_warnings; }
00085 bool warning() const { return m_warnings > 0; }
00086
00087 protected:
00088 Project *m_project;
00089 int m_errors;
00090 int m_warnings;
00091 int m_logLevel;
00092 QStringList m_log;
00093 QDateTime m_starttime;
00094 QTime m_timer;
00095 int m_elapsed;
00096 };
00097
00098 }
00099
00100 #endif