author | zecke <zecke> | 2002-10-07 10:56:58 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-10-07 10:56:58 (UTC) |
commit | 198ccce69447b515876e68cf7067e70da88cfb70 (patch) (unidiff) | |
tree | a6ffa0df02450ca54a778864a2f90b81091ee9ff /libopie | |
parent | 399828740380aa59273cce8ddd9cc05588e2aeac (diff) | |
download | opie-198ccce69447b515876e68cf7067e70da88cfb70.zip opie-198ccce69447b515876e68cf7067e70da88cfb70.tar.gz opie-198ccce69447b515876e68cf7067e70da88cfb70.tar.bz2 |
Sorted works enough in the SQL backend let's commit it
-rw-r--r-- | libopie/pim/otodoaccess.h | 6 | ||||
-rw-r--r-- | libopie/pim/otodoaccesssql.cpp | 61 | ||||
-rw-r--r-- | libopie/pim/otodoaccesssql.h | 6 |
3 files changed, 65 insertions, 8 deletions
diff --git a/libopie/pim/otodoaccess.h b/libopie/pim/otodoaccess.h index 12997aa..390ab0e 100644 --- a/libopie/pim/otodoaccess.h +++ b/libopie/pim/otodoaccess.h | |||
@@ -18,15 +18,15 @@ 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); |
diff --git a/libopie/pim/otodoaccesssql.cpp b/libopie/pim/otodoaccesssql.cpp index 209e714..25536e0 100644 --- a/libopie/pim/otodoaccesssql.cpp +++ b/libopie/pim/otodoaccesssql.cpp | |||
@@ -305,16 +305,73 @@ QArray<int> OTodoAccessBackendSQL::overDue() { | |||
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; |
diff --git a/libopie/pim/otodoaccesssql.h b/libopie/pim/otodoaccesssql.h index 966628d..6c5f50a 100644 --- a/libopie/pim/otodoaccesssql.h +++ b/libopie/pim/otodoaccesssql.h | |||
@@ -29,15 +29,15 @@ public: | |||
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 | }; |