summaryrefslogtreecommitdiff
path: root/libopie
authorzecke <zecke>2002-10-07 10:56:58 (UTC)
committer zecke <zecke>2002-10-07 10:56:58 (UTC)
commit198ccce69447b515876e68cf7067e70da88cfb70 (patch) (unidiff)
treea6ffa0df02450ca54a778864a2f90b81091ee9ff /libopie
parent399828740380aa59273cce8ddd9cc05588e2aeac (diff)
downloadopie-198ccce69447b515876e68cf7067e70da88cfb70.zip
opie-198ccce69447b515876e68cf7067e70da88cfb70.tar.gz
opie-198ccce69447b515876e68cf7067e70da88cfb70.tar.bz2
Sorted works enough in the SQL backend let's commit it
Diffstat (limited to 'libopie') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/otodoaccess.h6
-rw-r--r--libopie/pim/otodoaccesssql.cpp61
-rw-r--r--libopie/pim/otodoaccesssql.h6
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
19public: 19public:
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() {
305QArray<int> OTodoAccessBackendSQL::effectiveToDos( const QDate& s, 305QArray<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 */
311QArray<int> OTodoAccessBackendSQL::sorted( bool asc, int sortOrder, 314QArray<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}
316bool OTodoAccessBackendSQL::date( QDate& da, const QString& str ) const{ 373bool 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
32private: 32private:
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};