Diffstat (limited to 'libopie/pim/otodoaccesssql.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | libopie/pim/otodoaccesssql.cpp | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/libopie/pim/otodoaccesssql.cpp b/libopie/pim/otodoaccesssql.cpp index d255c66..ebd03bb 100644 --- a/libopie/pim/otodoaccesssql.cpp +++ b/libopie/pim/otodoaccesssql.cpp | |||
@@ -1,23 +1,26 @@ | |||
1 | 1 | ||
2 | #include <qdatetime.h> | 2 | #include <qdatetime.h> |
3 | 3 | ||
4 | #include <qpe/global.h> | 4 | #include <qpe/global.h> |
5 | 5 | ||
6 | #include <opie2/osqldriver.h> | 6 | #include <opie2/osqldriver.h> |
7 | #include <opie2/osqlresult.h> | 7 | #include <opie2/osqlresult.h> |
8 | #include <opie2/osqlmanager.h> | 8 | #include <opie2/osqlmanager.h> |
9 | #include <opie2/osqlquery.h> | 9 | #include <opie2/osqlquery.h> |
10 | 10 | ||
11 | #include "otodoaccesssql.h" | 11 | #include "otodoaccesssql.h" |
12 | #include "opimstate.h" | ||
13 | #include "opimnotifymanager.h" | ||
14 | #include "orecur.h" | ||
12 | 15 | ||
13 | /* | 16 | /* |
14 | * first some query | 17 | * first some query |
15 | * CREATE query | 18 | * CREATE query |
16 | * LOAD query | 19 | * LOAD query |
17 | * INSERT | 20 | * INSERT |
18 | * REMOVE | 21 | * REMOVE |
19 | * CLEAR | 22 | * CLEAR |
20 | */ | 23 | */ |
21 | namespace { | 24 | namespace { |
22 | /** | 25 | /** |
23 | * CreateQuery for the Todolist Table | 26 | * CreateQuery for the Todolist Table |
@@ -111,25 +114,26 @@ namespace { | |||
111 | QDate m_start; | 114 | QDate m_start; |
112 | QDate m_end; | 115 | QDate m_end; |
113 | bool m_inc :1; | 116 | bool m_inc :1; |
114 | }; | 117 | }; |
115 | 118 | ||
116 | 119 | ||
117 | CreateQuery::CreateQuery() : OSQLQuery() {} | 120 | CreateQuery::CreateQuery() : OSQLQuery() {} |
118 | CreateQuery::~CreateQuery() {} | 121 | CreateQuery::~CreateQuery() {} |
119 | QString CreateQuery::query()const { | 122 | QString CreateQuery::query()const { |
120 | QString qu; | 123 | QString qu; |
121 | qu += "create table todolist( uid PRIMARY KEY, categories, completed, "; | 124 | qu += "create table todolist( uid PRIMARY KEY, categories, completed, "; |
122 | qu += "description, summary, priority, DueDate, progress , state, "; | 125 | qu += "description, summary, priority, DueDate, progress , state, "; |
123 | qu += "Recurrence, notifiers, maintainer, startdate, completeddate)"; | 126 | qu += "Recurrence, reminders, alarms, maintainer, startdate, completeddate);"; |
127 | qu += "create table custom_data( uid INTEGER, id INTEGER, type VARCHAR(10), value VARCHAR(10), PRIMARY KEY /* identifier */ (uid, id) );"; | ||
124 | return qu; | 128 | return qu; |
125 | } | 129 | } |
126 | 130 | ||
127 | LoadQuery::LoadQuery() : OSQLQuery() {} | 131 | LoadQuery::LoadQuery() : OSQLQuery() {} |
128 | LoadQuery::~LoadQuery() {} | 132 | LoadQuery::~LoadQuery() {} |
129 | QString LoadQuery::query()const { | 133 | QString LoadQuery::query()const { |
130 | QString qu; | 134 | QString qu; |
131 | // We do not need "distinct" here. The primary key is always unique.. | 135 | // We do not need "distinct" here. The primary key is always unique.. |
132 | //qu += "select distinct uid from todolist"; | 136 | //qu += "select distinct uid from todolist"; |
133 | qu += "select uid from todolist"; | 137 | qu += "select uid from todolist"; |
134 | 138 | ||
135 | return qu; | 139 | return qu; |
@@ -172,29 +176,38 @@ namespace { | |||
172 | QString qu; | 176 | QString qu; |
173 | qu = "insert into todolist VALUES(" | 177 | qu = "insert into todolist VALUES(" |
174 | + QString::number( m_todo.uid() ) + "," | 178 | + QString::number( m_todo.uid() ) + "," |
175 | + "'" + m_todo.idsToString( m_todo.categories() ) + "'" + "," | 179 | + "'" + m_todo.idsToString( m_todo.categories() ) + "'" + "," |
176 | + QString::number( m_todo.isCompleted() ) + "," | 180 | + QString::number( m_todo.isCompleted() ) + "," |
177 | + "'" + m_todo.description() + "'" + "," | 181 | + "'" + m_todo.description() + "'" + "," |
178 | + "'" + m_todo.summary() + "'" + "," | 182 | + "'" + m_todo.summary() + "'" + "," |
179 | + QString::number(m_todo.priority() ) + "," | 183 | + QString::number(m_todo.priority() ) + "," |
180 | + "'" + QString::number(year) + "-" | 184 | + "'" + QString::number(year) + "-" |
181 | + QString::number(month) | 185 | + QString::number(month) |
182 | + "-" + QString::number( day ) + "'" + "," | 186 | + "-" + QString::number( day ) + "'" + "," |
183 | + QString::number( m_todo.progress() ) + "," | 187 | + QString::number( m_todo.progress() ) + "," |
184 | + "''" + "," // state (conversion needed) | 188 | + QString::number( m_todo.state().state() ) + "," |
185 | // + QString::number( m_todo.state() ) + "," | 189 | + "'" + m_todo.recurrence().toString() + "'"+ ","; |
186 | + "''" + "," // Recurrence (conversion needed) | 190 | |
187 | + "''" + "," // Notifiers (conversion needed) | 191 | if ( m_todo.hasNotifiers() ) { |
188 | + "''" + "," // Maintainers (conversion needed) | 192 | OPimNotifyManager manager = m_todo.notifiers(); |
193 | qu += "'" + manager.remindersToString() + "'" + "," | ||
194 | + "'" + manager.alarmsToString() + "'" + ","; | ||
195 | } | ||
196 | else{ | ||
197 | qu += QString( "''" ) + "," | ||
198 | + "''" + ","; | ||
199 | } | ||
200 | |||
201 | qu += QString( "''" ) + QString( "," ) // Maintainers (cur. not supported !) | ||
189 | + "'" + QString::number(sYear) + "-" | 202 | + "'" + QString::number(sYear) + "-" |
190 | + QString::number(sMonth) | 203 | + QString::number(sMonth) |
191 | + "-" + QString::number(sDay) + "'" + "," | 204 | + "-" + QString::number(sDay) + "'" + "," |
192 | + "'" + QString::number(eYear) + "-" | 205 | + "'" + QString::number(eYear) + "-" |
193 | + QString::number(eMonth) | 206 | + QString::number(eMonth) |
194 | + "-"+QString::number(eDay) + "'" | 207 | + "-"+QString::number(eDay) + "'" |
195 | + ")"; | 208 | + ")"; |
196 | 209 | ||
197 | qWarning("add %s", qu.latin1() ); | 210 | qWarning("add %s", qu.latin1() ); |
198 | return qu; | 211 | return qu; |
199 | } | 212 | } |
200 | 213 | ||
@@ -522,24 +535,35 @@ OTodo OTodoAccessBackendSQL::todo( OSQLResultItem& item )const { | |||
522 | to.setPriority( prioInt ); | 535 | to.setPriority( prioInt ); |
523 | 536 | ||
524 | bool hasStartDate = false; QDate startDate = QDate::currentDate(); | 537 | bool hasStartDate = false; QDate startDate = QDate::currentDate(); |
525 | hasStartDate = date( startDate, item.data("startdate") ); | 538 | hasStartDate = date( startDate, item.data("startdate") ); |
526 | bool hasCompletedDate = false; QDate completedDate = QDate::currentDate(); | 539 | bool hasCompletedDate = false; QDate completedDate = QDate::currentDate(); |
527 | hasCompletedDate = date( completedDate, item.data("completeddate") ); | 540 | hasCompletedDate = date( completedDate, item.data("completeddate") ); |
528 | 541 | ||
529 | if ( hasStartDate ) | 542 | if ( hasStartDate ) |
530 | to.setStartDate( startDate ); | 543 | to.setStartDate( startDate ); |
531 | if ( hasCompletedDate ) | 544 | if ( hasCompletedDate ) |
532 | to.setCompletedDate( completedDate ); | 545 | to.setCompletedDate( completedDate ); |
533 | 546 | ||
547 | OPimNotifyManager& manager = to.notifiers(); | ||
548 | manager.alarmsFromString( item.data("alarms") ); | ||
549 | manager.remindersFromString( item.data("reminders") ); | ||
550 | |||
551 | OPimState pimState; | ||
552 | pimState.setState( QString( item.data("state") ).toInt() ); | ||
553 | to.setState( pimState ); | ||
554 | |||
555 | // Recurrence not supported yet | ||
556 | // to.setRecurrence( | ||
557 | |||
534 | return to; | 558 | return to; |
535 | } | 559 | } |
536 | OTodo OTodoAccessBackendSQL::todo( int uid )const { | 560 | OTodo OTodoAccessBackendSQL::todo( int uid )const { |
537 | FindQuery find( uid ); | 561 | FindQuery find( uid ); |
538 | return todo( m_driver->query(&find) ); | 562 | return todo( m_driver->query(&find) ); |
539 | } | 563 | } |
540 | /* | 564 | /* |
541 | * update the dict | 565 | * update the dict |
542 | */ | 566 | */ |
543 | void OTodoAccessBackendSQL::fillDict() { | 567 | void OTodoAccessBackendSQL::fillDict() { |
544 | /* initialize dict */ | 568 | /* initialize dict */ |
545 | /* | 569 | /* |
@@ -612,36 +636,28 @@ QArray<int> OTodoAccessBackendSQL::matchRegexp( const QRegExp &r ) const | |||
612 | 636 | ||
613 | } | 637 | } |
614 | // Shrink to fit.. | 638 | // Shrink to fit.. |
615 | m_currentQuery.resize(arraycounter); | 639 | m_currentQuery.resize(arraycounter); |
616 | 640 | ||
617 | return m_currentQuery; | 641 | return m_currentQuery; |
618 | #endif | 642 | #endif |
619 | QArray<int> empty; | 643 | QArray<int> empty; |
620 | return empty; | 644 | return empty; |
621 | } | 645 | } |
622 | QBitArray OTodoAccessBackendSQL::supports()const { | 646 | QBitArray OTodoAccessBackendSQL::supports()const { |
623 | 647 | ||
624 | QBitArray ar( OTodo::CompletedDate + 1 ); | 648 | return sup(); |
625 | ar.fill( true ); | ||
626 | ar[OTodo::CrossReference] = false; | ||
627 | ar[OTodo::State ] = false; | ||
628 | ar[OTodo::Reminders] = false; | ||
629 | ar[OTodo::Notifiers] = false; | ||
630 | ar[OTodo::Maintainer] = false; | ||
631 | |||
632 | return ar; | ||
633 | } | 649 | } |
634 | 650 | ||
635 | QBitArray OTodoAccessBackendSQL::sup() { | 651 | QBitArray OTodoAccessBackendSQL::sup() const{ |
636 | 652 | ||
637 | QBitArray ar( OTodo::CompletedDate + 1 ); | 653 | QBitArray ar( OTodo::CompletedDate + 1 ); |
638 | ar.fill( true ); | 654 | ar.fill( true ); |
639 | ar[OTodo::CrossReference] = false; | 655 | ar[OTodo::CrossReference] = false; |
640 | ar[OTodo::State ] = false; | 656 | ar[OTodo::State ] = false; |
641 | ar[OTodo::Reminders] = false; | 657 | ar[OTodo::Reminders] = false; |
642 | ar[OTodo::Notifiers] = false; | 658 | ar[OTodo::Notifiers] = false; |
643 | ar[OTodo::Maintainer] = false; | 659 | ar[OTodo::Maintainer] = false; |
644 | 660 | ||
645 | return ar; | 661 | return ar; |
646 | } | 662 | } |
647 | 663 | ||