-rw-r--r-- | libopie/todoevent.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/libopie/todoevent.cpp b/libopie/todoevent.cpp index b35ac9d..f744550 100644 --- a/libopie/todoevent.cpp +++ b/libopie/todoevent.cpp | |||
@@ -23,183 +23,240 @@ ToDoEvent::ToDoEvent(bool completed, int priority, | |||
23 | const QString &description, | 23 | const QString &description, |
24 | ushort progress, | 24 | ushort progress, |
25 | bool hasDate, QDate date, int uid ) | 25 | bool hasDate, QDate date, int uid ) |
26 | { | 26 | { |
27 | m_date = date; | 27 | m_date = date; |
28 | m_isCompleted = completed; | 28 | m_isCompleted = completed; |
29 | m_hasDate = hasDate; | 29 | m_hasDate = hasDate; |
30 | m_priority = priority; | 30 | m_priority = priority; |
31 | m_category = category; | 31 | m_category = category; |
32 | m_sum = summary; | 32 | m_sum = summary; |
33 | m_prog = progress; | 33 | m_prog = progress; |
34 | m_desc = Qtopia::simplifyMultiLineSpace(description ); | 34 | m_desc = Qtopia::simplifyMultiLineSpace(description ); |
35 | if (uid == -1 ) { | 35 | if (uid == -1 ) { |
36 | Qtopia::UidGen *uidgen = new Qtopia::UidGen(); | 36 | Qtopia::UidGen *uidgen = new Qtopia::UidGen(); |
37 | uid = uidgen->generate(); | 37 | uid = uidgen->generate(); |
38 | delete uidgen; | 38 | delete uidgen; |
39 | }// generate the ids | 39 | }// generate the ids |
40 | m_uid = uid; | 40 | m_uid = uid; |
41 | } | 41 | } |
42 | QArray<int> ToDoEvent::categories()const | 42 | QArray<int> ToDoEvent::categories()const |
43 | { | 43 | { |
44 | QArray<int> array(m_category.count() ); // currently the datebook can be only in one category | 44 | QArray<int> array(m_category.count() ); // currently the datebook can be only in one category |
45 | array = Qtopia::Record::idsFromString( m_category.join(";") ); | 45 | array = Qtopia::Record::idsFromString( m_category.join(";") ); |
46 | return array; | 46 | return array; |
47 | } | 47 | } |
48 | bool ToDoEvent::match( const QRegExp ®Exp )const | 48 | bool ToDoEvent::match( const QRegExp ®Exp )const |
49 | { | 49 | { |
50 | if( QString::number( m_priority ).find( regExp ) != -1 ){ | 50 | if( QString::number( m_priority ).find( regExp ) != -1 ){ |
51 | return true; | 51 | return true; |
52 | }else if( m_hasDate && m_date.toString().find( regExp) != -1 ){ | 52 | }else if( m_hasDate && m_date.toString().find( regExp) != -1 ){ |
53 | return true; | 53 | return true; |
54 | }else if(m_desc.find( regExp ) != -1 ){ | 54 | }else if(m_desc.find( regExp ) != -1 ){ |
55 | return true; | 55 | return true; |
56 | } | 56 | } |
57 | return false; | 57 | return false; |
58 | } | 58 | } |
59 | bool ToDoEvent::isCompleted() const | 59 | bool ToDoEvent::isCompleted() const |
60 | { | 60 | { |
61 | return m_isCompleted; | 61 | return m_isCompleted; |
62 | } | 62 | } |
63 | bool ToDoEvent::hasDate() const | 63 | bool ToDoEvent::hasDate() const |
64 | { | 64 | { |
65 | return m_hasDate; | 65 | return m_hasDate; |
66 | } | 66 | } |
67 | int ToDoEvent::priority()const | 67 | int ToDoEvent::priority()const |
68 | { | 68 | { |
69 | return m_priority; | 69 | return m_priority; |
70 | } | 70 | } |
71 | QStringList ToDoEvent::allCategories()const | 71 | QStringList ToDoEvent::allCategories()const |
72 | { | 72 | { |
73 | return m_category; | 73 | return m_category; |
74 | } | 74 | } |
75 | QString ToDoEvent::extra(const QString& )const | 75 | QString ToDoEvent::extra(const QString& )const |
76 | { | 76 | { |
77 | return QString::null; | 77 | return QString::null; |
78 | } | 78 | } |
79 | QString ToDoEvent::summary() const | 79 | QString ToDoEvent::summary() const |
80 | { | 80 | { |
81 | return m_sum; | 81 | return m_sum; |
82 | } | 82 | } |
83 | ushort ToDoEvent::progress() const | 83 | ushort ToDoEvent::progress() const |
84 | { | 84 | { |
85 | return m_prog; | 85 | return m_prog; |
86 | } | 86 | } |
87 | QStringList ToDoEvent::relatedApps() const | ||
88 | { | ||
89 | QStringList list; | ||
90 | QMap<QString, QArray<int> >::ConstIterator it; | ||
91 | for ( it = m_relations.begin(); it != m_relations.end(); ++it ) { | ||
92 | list << it.key(); | ||
93 | } | ||
94 | return list; | ||
95 | } | ||
96 | QArray<int> ToDoEvent::relations( const QString& app)const | ||
97 | { | ||
98 | QArray<int> tmp; | ||
99 | QMap<QString, QArray<int> >::ConstIterator it; | ||
100 | it = m_relations.find( app); | ||
101 | if ( it != m_relations.end() ) | ||
102 | tmp = it.data(); | ||
103 | return tmp; | ||
104 | } | ||
87 | void ToDoEvent::insertCategory(const QString &str ) | 105 | void ToDoEvent::insertCategory(const QString &str ) |
88 | { | 106 | { |
89 | m_category.append( str ); | 107 | m_category.append( str ); |
90 | } | 108 | } |
91 | void ToDoEvent::clearCategories() | 109 | void ToDoEvent::clearCategories() |
92 | { | 110 | { |
93 | m_category.clear(); | 111 | m_category.clear(); |
94 | } | 112 | } |
95 | void ToDoEvent::setCategories(const QStringList &list ) | 113 | void ToDoEvent::setCategories(const QStringList &list ) |
96 | { | 114 | { |
97 | m_category = list; | 115 | m_category = list; |
98 | } | 116 | } |
99 | QDate ToDoEvent::date()const | 117 | QDate ToDoEvent::date()const |
100 | { | 118 | { |
101 | return m_date; | 119 | return m_date; |
102 | } | 120 | } |
103 | 121 | ||
104 | QString ToDoEvent::description()const | 122 | QString ToDoEvent::description()const |
105 | { | 123 | { |
106 | return m_desc; | 124 | return m_desc; |
107 | } | 125 | } |
108 | void ToDoEvent::setCompleted( bool completed ) | 126 | void ToDoEvent::setCompleted( bool completed ) |
109 | { | 127 | { |
110 | m_isCompleted = completed; | 128 | m_isCompleted = completed; |
111 | } | 129 | } |
112 | void ToDoEvent::setHasDate( bool hasDate ) | 130 | void ToDoEvent::setHasDate( bool hasDate ) |
113 | { | 131 | { |
114 | m_hasDate = hasDate; | 132 | m_hasDate = hasDate; |
115 | } | 133 | } |
116 | void ToDoEvent::setDescription(const QString &desc ) | 134 | void ToDoEvent::setDescription(const QString &desc ) |
117 | { | 135 | { |
118 | m_desc = Qtopia::simplifyMultiLineSpace(desc ); | 136 | m_desc = Qtopia::simplifyMultiLineSpace(desc ); |
119 | } | 137 | } |
120 | void ToDoEvent::setExtra( const QString&, const QString& ) | 138 | void ToDoEvent::setExtra( const QString&, const QString& ) |
121 | { | 139 | { |
122 | 140 | ||
123 | } | 141 | } |
124 | void ToDoEvent::setSummary( const QString& sum ) | 142 | void ToDoEvent::setSummary( const QString& sum ) |
125 | { | 143 | { |
126 | m_sum = sum; | 144 | m_sum = sum; |
127 | } | 145 | } |
128 | void ToDoEvent::setCategory( const QString &cat ) | 146 | void ToDoEvent::setCategory( const QString &cat ) |
129 | { | 147 | { |
130 | qWarning("setCategory %s", cat.latin1() ); | 148 | qWarning("setCategory %s", cat.latin1() ); |
131 | m_category.clear(); | 149 | m_category.clear(); |
132 | m_category << cat; | 150 | m_category << cat; |
133 | } | 151 | } |
134 | void ToDoEvent::setPriority(int prio ) | 152 | void ToDoEvent::setPriority(int prio ) |
135 | { | 153 | { |
136 | m_priority = prio; | 154 | m_priority = prio; |
137 | } | 155 | } |
138 | void ToDoEvent::setDate( QDate date ) | 156 | void ToDoEvent::setDate( QDate date ) |
139 | { | 157 | { |
140 | m_date = date; | 158 | m_date = date; |
141 | } | 159 | } |
160 | void ToDoEvent::addRelated( const QString &app, int id ) | ||
161 | { | ||
162 | QMap<QString, QArray<int> >::Iterator it; | ||
163 | QArray<int> tmp; | ||
164 | it = m_relations.find( app ); | ||
165 | if ( it == m_relations.end() ) { | ||
166 | tmp.resize(1 ); | ||
167 | tmp[0] = id; | ||
168 | }else{ | ||
169 | tmp = it.data(); | ||
170 | tmp.resize( tmp.size() + 1 ); | ||
171 | tmp[tmp.size() - 1] = id; | ||
172 | } | ||
173 | m_relations.replace( app, tmp ); | ||
174 | } | ||
175 | void ToDoEvent::addRelated(const QString& app, QArray<int> ids ) | ||
176 | { | ||
177 | QMap<QString, QArray<int> >::Iterator it; | ||
178 | QArray<int> tmp; | ||
179 | it = m_relations.find( app); | ||
180 | if ( it == m_relations.end() ) { // not there | ||
181 | /** tmp.resize( ids.size() ); stupid?? | ||
182 | */ | ||
183 | tmp = ids; | ||
184 | }else{ | ||
185 | tmp = it.data(); | ||
186 | int offset = tmp.size()-1; | ||
187 | tmp.resize( tmp.size() + ids.size() ); | ||
188 | for (uint i = 0; i < ids.size(); i++ ) { | ||
189 | tmp[offset+i] = ids[i]; | ||
190 | } | ||
191 | |||
192 | } | ||
193 | m_relations.replace( app, tmp ); | ||
194 | } | ||
195 | void ToDoEvent::clearRelated( const QString& app ) | ||
196 | { | ||
197 | m_relations.remove( app ); | ||
198 | } | ||
142 | bool ToDoEvent::isOverdue( ) | 199 | bool ToDoEvent::isOverdue( ) |
143 | { | 200 | { |
144 | if( m_hasDate ) | 201 | if( m_hasDate ) |
145 | return QDate::currentDate() > m_date; | 202 | return QDate::currentDate() > m_date; |
146 | return false; | 203 | return false; |
147 | } | 204 | } |
148 | void ToDoEvent::setProgress(ushort progress ) | 205 | void ToDoEvent::setProgress(ushort progress ) |
149 | { | 206 | { |
150 | m_prog = progress; | 207 | m_prog = progress; |
151 | } | 208 | } |
152 | /*! | 209 | /*! |
153 | Returns a richt text string | 210 | Returns a richt text string |
154 | */ | 211 | */ |
155 | QString ToDoEvent::richText() const | 212 | QString ToDoEvent::richText() const |
156 | { | 213 | { |
157 | QString text; | 214 | QString text; |
158 | QStringList catlist; | 215 | QStringList catlist; |
159 | 216 | ||
160 | // Description of the todo | 217 | // Description of the todo |
161 | if ( !description().isEmpty() ){ | 218 | if ( !description().isEmpty() ){ |
162 | text += "<b>" + QObject::tr( "Summary:") + "</b><br>"; | 219 | text += "<b>" + QObject::tr( "Summary:") + "</b><br>"; |
163 | text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; | 220 | text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; |
164 | text += "<b>" + QObject::tr( "Description:" ) + "</b><br>"; | 221 | text += "<b>" + QObject::tr( "Description:" ) + "</b><br>"; |
165 | text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br><br><br>"; | 222 | text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br><br><br>"; |
166 | } | 223 | } |
167 | text += "<b>" + QObject::tr( "Priority:") +" </b>" | 224 | text += "<b>" + QObject::tr( "Priority:") +" </b>" |
168 | + QString::number( priority() ) + " <br>"; | 225 | + QString::number( priority() ) + " <br>"; |
169 | text += "<b>" + QObject::tr( "Progress:") + " </b>" | 226 | text += "<b>" + QObject::tr( "Progress:") + " </b>" |
170 | + QString::number( progress() ) + " %<br>"; | 227 | + QString::number( progress() ) + " %<br>"; |
171 | if (hasDate() ){ | 228 | if (hasDate() ){ |
172 | text += "<b>" + QObject::tr( "Deadline:") + " </b>"; | 229 | text += "<b>" + QObject::tr( "Deadline:") + " </b>"; |
173 | text += date().toString(); | 230 | text += date().toString(); |
174 | text += "<br>"; | 231 | text += "<br>"; |
175 | } | 232 | } |
176 | 233 | ||
177 | // Open database of all categories and get the list of | 234 | // Open database of all categories and get the list of |
178 | // the categories this todoevent belongs to. | 235 | // the categories this todoevent belongs to. |
179 | // Then print them... | 236 | // Then print them... |
180 | // I am not sure whether there is no better way doing this !? | 237 | // I am not sure whether there is no better way doing this !? |
181 | Categories catdb; | 238 | Categories catdb; |
182 | bool firstloop = true; | 239 | bool firstloop = true; |
183 | catdb.load( categoryFileName() ); | 240 | catdb.load( categoryFileName() ); |
184 | catlist = allCategories(); | 241 | catlist = allCategories(); |
185 | 242 | ||
186 | text += "<b>" + QObject::tr( "Category:") + "</b> "; | 243 | text += "<b>" + QObject::tr( "Category:") + "</b> "; |
187 | for ( QStringList::Iterator it = catlist.begin(); it != catlist.end(); ++it ) { | 244 | for ( QStringList::Iterator it = catlist.begin(); it != catlist.end(); ++it ) { |
188 | if (!firstloop){ | 245 | if (!firstloop){ |
189 | text += ", "; | 246 | text += ", "; |
190 | } | 247 | } |
191 | firstloop = false; | 248 | firstloop = false; |
192 | text += catdb.label ("todo", (*it).toInt()); | 249 | text += catdb.label ("todo", (*it).toInt()); |
193 | } | 250 | } |
194 | text += "<br>"; | 251 | text += "<br>"; |
195 | return text; | 252 | return text; |
196 | } | 253 | } |
197 | 254 | ||
198 | bool ToDoEvent::operator<( const ToDoEvent &toDoEvent )const{ | 255 | bool ToDoEvent::operator<( const ToDoEvent &toDoEvent )const{ |
199 | if( !hasDate() && !toDoEvent.hasDate() ) return true; | 256 | if( !hasDate() && !toDoEvent.hasDate() ) return true; |
200 | if( !hasDate() && toDoEvent.hasDate() ) return false; | 257 | if( !hasDate() && toDoEvent.hasDate() ) return false; |
201 | if( hasDate() && toDoEvent.hasDate() ){ | 258 | if( hasDate() && toDoEvent.hasDate() ){ |
202 | if( date() == toDoEvent.date() ){ // let's the priority decide | 259 | if( date() == toDoEvent.date() ){ // let's the priority decide |
203 | return priority() < toDoEvent.priority(); | 260 | return priority() < toDoEvent.priority(); |
204 | }else{ | 261 | }else{ |
205 | return date() < toDoEvent.date(); | 262 | return date() < toDoEvent.date(); |