1 | /* This file is part of the KDE project |
2 | Copyright (C) 2006 - 2007 Dag Andersen <danders@get2net.dk> |
3 | |
4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public |
6 | License as published by the Free Software Foundation; |
7 | version 2 of the License. |
8 | |
9 | This library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Library General Public License for more details. |
13 | |
14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to |
16 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
17 | Boston, MA 02110-1301, USA. |
18 | */ |
19 | |
20 | #ifndef XMLLOADEROBJECT_H |
21 | #define XMLLOADEROBJECT_H |
22 | |
23 | #include "kplatokernel_export.h" |
24 | |
25 | #include "kptproject.h" |
26 | #include "kptdatetime.h" |
27 | |
28 | #include "KoUpdater.h" |
29 | |
30 | #include <QDateTime> |
31 | #include <QString> |
32 | #include <QStringList> |
33 | #include <QPointer> |
34 | |
35 | namespace KPlato |
36 | { |
37 | |
38 | class KPLATOKERNEL_EXPORT XMLLoaderObject { |
39 | public: |
40 | enum Severity { None=0, Errors=1, Warnings=2, Diagnostics=3, Debug=4 }; |
41 | XMLLoaderObject() |
42 | : m_project(0), |
43 | m_errors(0), |
44 | m_warnings(0), |
45 | m_logLevel(Diagnostics), |
46 | m_log(), |
47 | m_baseCalendar( 0 ) |
48 | {} |
49 | ~XMLLoaderObject() {} |
50 | |
51 | void setProject(Project *proj) { m_project = proj; } |
52 | Project &project() const { return *m_project; } |
53 | |
54 | QString version() const { return m_version; } |
55 | void setVersion( const QString &ver ) { m_version = ver; } |
56 | |
57 | QString workVersion() const { return m_workversion; } |
58 | void setWorkVersion( const QString &ver ) { m_workversion = ver; } |
59 | |
60 | QString mimetype() const { return m_mimetype; } |
61 | void setMimetype( const QString &mime ) { m_mimetype = mime; } |
62 | |
63 | const KDateTime::Spec &projectSpec() const { return m_projectSpec; } |
64 | void setProjectSpec( const KDateTime::Spec &spec ) { m_projectSpec = spec; } |
65 | |
66 | void startLoad() { |
67 | m_timer.start(); |
68 | m_starttime = QDateTime::currentDateTime(); |
69 | m_errors = m_warnings = 0; |
70 | m_log.clear(); |
71 | addMsg(QString("Loading started at %1" ).arg(m_starttime.toString())); |
72 | } |
73 | void stopLoad() { |
74 | m_elapsed = m_timer.elapsed(); |
75 | addMsg(QString("Loading finished at %1, took %2" ).arg(QDateTime::currentDateTime().toString()).arg(formatElapsed())); |
76 | } |
77 | QDateTime lastLoaded() const { return m_starttime; } |
78 | int elapsed() const { return m_elapsed; } |
79 | QString formatElapsed() { return QString("%1 seconds" ).arg((double)m_elapsed/1000); } |
80 | |
81 | void setLogLevel(Severity sev) { m_logLevel = sev; } |
82 | const QStringList &log() const { return m_log; } |
83 | void error( QString msg ) { addMsg( Errors, msg ); } |
84 | void warning( QString msg ) { addMsg( Errors, msg ); } |
85 | void diagnostic( QString msg ) { addMsg( Diagnostics, msg ); } |
86 | void debug( QString msg ) { addMsg( Debug, msg ); } |
87 | void message( QString msg ) { addMsg( None, msg ); } |
88 | void addMsg(int sev, QString msg) { |
89 | increment(sev); |
90 | if (m_logLevel < sev) return; |
91 | QString s; |
92 | if (sev == Errors) s = "ERROR" ; |
93 | else if (sev == Warnings) s = "WARNING" ; |
94 | else if (sev == Diagnostics) s = "Diagnostic" ; |
95 | else if (sev == Debug) s = "Debug" ; |
96 | else s = "Message" ; |
97 | m_log<<QString("%1: %2" ).arg(s, 13).arg(msg); |
98 | } |
99 | void addMsg(QString msg) { m_log<<msg; } |
100 | void increment(int sev) { |
101 | if (sev == Errors) { incErrors(); return; } |
102 | if (sev == Warnings) { incWarnings(); return; } |
103 | } |
104 | void incErrors() { ++m_errors; } |
105 | int errors() const { return m_errors; } |
106 | bool error() const { return m_errors > 0; } |
107 | void incWarnings() { ++m_warnings; } |
108 | int warnings() const { return m_warnings; } |
109 | bool warning() const { return m_warnings > 0; } |
110 | |
111 | // help to handle version < 0.6 |
112 | void setBaseCalendar( Calendar *cal ) { m_baseCalendar = cal; } |
113 | Calendar *baseCalendar() const { return m_baseCalendar; } |
114 | |
115 | void setUpdater( KoUpdater *updater ) { m_updater = updater; } |
116 | void setProgress( int value ) { if ( m_updater ) m_updater->setProgress( value ); } |
117 | |
118 | protected: |
119 | Project *m_project; |
120 | int m_errors; |
121 | int m_warnings; |
122 | int m_logLevel; |
123 | QStringList m_log; |
124 | QDateTime m_starttime; |
125 | QTime m_timer; |
126 | int m_elapsed; |
127 | QString m_version; |
128 | QString m_workversion; |
129 | QString m_mimetype; |
130 | KDateTime::Spec m_projectSpec; |
131 | |
132 | Calendar *m_baseCalendar; // help to handle version < 0.6 |
133 | |
134 | QPointer<KoUpdater> m_updater; |
135 | }; |
136 | |
137 | } //namespace KPlato |
138 | |
139 | #endif |
140 | |