-rw-r--r-- | libopie2/opiepim/backend/otodoaccesssql.cpp | 61 | ||||
-rw-r--r-- | libopie2/opiepim/backend/otodoaccesssql.h | 6 | ||||
-rw-r--r-- | libopie2/opiepim/core/otodoaccess.h | 6 |
3 files changed, 65 insertions, 8 deletions
diff --git a/libopie2/opiepim/backend/otodoaccesssql.cpp b/libopie2/opiepim/backend/otodoaccesssql.cpp index 209e714..25536e0 100644 --- a/libopie2/opiepim/backend/otodoaccesssql.cpp +++ b/libopie2/opiepim/backend/otodoaccesssql.cpp | |||
@@ -299,28 +299,85 @@ bool OTodoAccessBackendSQL::replace( const OTodo& t) { | |||
299 | return add(t); | 299 | return add(t); |
300 | } | 300 | } |
301 | QArray<int> OTodoAccessBackendSQL::overDue() { | 301 | QArray<int> OTodoAccessBackendSQL::overDue() { |
302 | OverDueQuery qu; | 302 | OverDueQuery qu; |
303 | return uids( m_driver->query(&qu ) ); | 303 | return uids( m_driver->query(&qu ) ); |
304 | } | 304 | } |
305 | QArray<int> OTodoAccessBackendSQL::effectiveToDos( const QDate& s, | 305 | QArray<int> OTodoAccessBackendSQL::effectiveToDos( const QDate& s, |
306 | const QDate& t, | 306 | const QDate& t, |
307 | bool u) { | 307 | bool u) { |
308 | EffQuery ef(s, t, u ); | 308 | EffQuery ef(s, t, u ); |
309 | return uids (m_driver->query(&ef) ); | 309 | return uids (m_driver->query(&ef) ); |
310 | } | 310 | } |
311 | /* | ||
312 | * | ||
313 | */ | ||
311 | QArray<int> OTodoAccessBackendSQL::sorted( bool asc, int sortOrder, | 314 | QArray<int> OTodoAccessBackendSQL::sorted( bool asc, int sortOrder, |
312 | int sortFilter, int cat ) { | 315 | int sortFilter, int cat ) { |
313 | QArray<int> ints(0); | 316 | QString query; |
314 | return ints; | 317 | query = "select uid from todolist WHERE "; |
318 | |||
319 | /* | ||
320 | * Sort Filter stuff | ||
321 | * not that straight forward | ||
322 | * | ||
323 | */ | ||
324 | /* Category */ | ||
325 | if ( sortFilter & 1 ) { | ||
326 | query += " categories like '%" +QString::number(cat)+"%' AND"; | ||
327 | } | ||
328 | /* Show only overdue */ | ||
329 | if ( sortFilter & 2 ) { | ||
330 | QDate date = QDate::currentDate(); | ||
331 | QString due; | ||
332 | QString base; | ||
333 | base = QString("DueDate <= '%1-%2-%3' AND WHERE completed = 0").arg( date.year() ).arg( date.month() ).arg( date.day() ); | ||
334 | query += " " + base + " AND"; | ||
335 | } | ||
336 | /* not show completed */ | ||
337 | if ( sortFilter & 4 ) { | ||
338 | query += " completed = 0 AND"; | ||
339 | }else{ | ||
340 | query += " ( completed = 1 OR completed = 0) AND"; | ||
341 | } | ||
342 | /* srtip the end */ | ||
343 | query = query.remove( query.length()-3, 3 ); | ||
344 | |||
345 | |||
346 | /* | ||
347 | * sort order stuff | ||
348 | * quite straight forward | ||
349 | */ | ||
350 | query += "ORDER BY "; | ||
351 | switch( sortOrder ) { | ||
352 | /* completed */ | ||
353 | case 0: | ||
354 | query += "completed"; | ||
355 | break; | ||
356 | case 1: | ||
357 | query += "priority"; | ||
358 | break; | ||
359 | case 2: | ||
360 | query += "description"; | ||
361 | break; | ||
362 | case 3: | ||
363 | query += "DueDate"; | ||
364 | break; | ||
365 | } | ||
366 | if ( !asc ) | ||
367 | query += " DESC"; | ||
368 | |||
369 | qWarning( query ); | ||
370 | OSQLRawQuery raw(query ); | ||
371 | return uids( m_driver->query(&raw) ); | ||
315 | } | 372 | } |
316 | bool OTodoAccessBackendSQL::date( QDate& da, const QString& str ) const{ | 373 | bool OTodoAccessBackendSQL::date( QDate& da, const QString& str ) const{ |
317 | if ( str == "0-0-0" ) | 374 | if ( str == "0-0-0" ) |
318 | return false; | 375 | return false; |
319 | else{ | 376 | else{ |
320 | int day, year, month; | 377 | int day, year, month; |
321 | QStringList list = QStringList::split("-", str ); | 378 | QStringList list = QStringList::split("-", str ); |
322 | year = list[0].toInt(); | 379 | year = list[0].toInt(); |
323 | month = list[1].toInt(); | 380 | month = list[1].toInt(); |
324 | day = list[2].toInt(); | 381 | day = list[2].toInt(); |
325 | da.setYMD( year, month, day ); | 382 | da.setYMD( year, month, day ); |
326 | return true; | 383 | return true; |
diff --git a/libopie2/opiepim/backend/otodoaccesssql.h b/libopie2/opiepim/backend/otodoaccesssql.h index 966628d..6c5f50a 100644 --- a/libopie2/opiepim/backend/otodoaccesssql.h +++ b/libopie2/opiepim/backend/otodoaccesssql.h | |||
@@ -23,24 +23,24 @@ public: | |||
23 | bool add( const OTodo& t ); | 23 | bool add( const OTodo& t ); |
24 | bool remove( int uid ); | 24 | bool remove( int uid ); |
25 | bool replace( const OTodo& t ); | 25 | bool replace( const OTodo& t ); |
26 | 26 | ||
27 | QArray<int> overDue(); | 27 | QArray<int> overDue(); |
28 | QArray<int> effectiveToDos( const QDate& start, | 28 | QArray<int> effectiveToDos( const QDate& start, |
29 | const QDate& end, bool includeNoDates ); | 29 | const QDate& end, bool includeNoDates ); |
30 | QArray<int> sorted(bool asc, int sortOrder, int sortFilter, int cat ); | 30 | QArray<int> sorted(bool asc, int sortOrder, int sortFilter, int cat ); |
31 | 31 | ||
32 | private: | 32 | private: |
33 | void update(); | 33 | void update(); |
34 | void fillDict(); | 34 | void fillDict(); |
35 | bool date( QDate& date, const QString& )const; | 35 | inline bool date( QDate& date, const QString& )const; |
36 | OTodo todo( const OSQLResult& )const; | 36 | inline OTodo todo( const OSQLResult& )const; |
37 | QArray<int> uids( const OSQLResult& )const; | 37 | inline QArray<int> uids( const OSQLResult& )const; |
38 | OTodo todo( int uid )const; | 38 | OTodo todo( int uid )const; |
39 | 39 | ||
40 | QAsciiDict<int> m_dict; | 40 | QAsciiDict<int> m_dict; |
41 | OSQLDriver* m_driver; | 41 | OSQLDriver* m_driver; |
42 | QArray<int> m_uids; | 42 | QArray<int> m_uids; |
43 | }; | 43 | }; |
44 | 44 | ||
45 | 45 | ||
46 | #endif | 46 | #endif |
diff --git a/libopie2/opiepim/core/otodoaccess.h b/libopie2/opiepim/core/otodoaccess.h index 12997aa..390ab0e 100644 --- a/libopie2/opiepim/core/otodoaccess.h +++ b/libopie2/opiepim/core/otodoaccess.h | |||
@@ -12,27 +12,27 @@ | |||
12 | /** | 12 | /** |
13 | * OTodoAccess | 13 | * OTodoAccess |
14 | * the class to get access to | 14 | * the class to get access to |
15 | * the todolist | 15 | * the todolist |
16 | */ | 16 | */ |
17 | class OTodoAccess : public QObject, public OPimAccessTemplate<OTodo> { | 17 | class OTodoAccess : public QObject, public OPimAccessTemplate<OTodo> { |
18 | Q_OBJECT | 18 | Q_OBJECT |
19 | public: | 19 | public: |
20 | enum SortOrder { Completed = 0, | 20 | enum SortOrder { Completed = 0, |
21 | Priority, | 21 | Priority, |
22 | Description, | 22 | Description, |
23 | Deadline }; | 23 | Deadline }; |
24 | enum SortFilter{ ShowOverdue = 0, | 24 | enum SortFilter{ Category =1, |
25 | Category =1, | 25 | OnlyOverDue= 2, |
26 | OnlyOverDue= 2 }; | 26 | DoNotShowCompleted =4 }; |
27 | /** | 27 | /** |
28 | * if you use 0l | 28 | * if you use 0l |
29 | * the default resource will be | 29 | * the default resource will be |
30 | * picked up | 30 | * picked up |
31 | */ | 31 | */ |
32 | OTodoAccess( OTodoAccessBackend* = 0l); | 32 | OTodoAccess( OTodoAccessBackend* = 0l); |
33 | ~OTodoAccess(); | 33 | ~OTodoAccess(); |
34 | 34 | ||
35 | 35 | ||
36 | /* our functions here */ | 36 | /* our functions here */ |
37 | /** | 37 | /** |
38 | * include todos from start to end | 38 | * include todos from start to end |