summaryrefslogtreecommitdiff
path: root/libopie/pim/otodoaccesssql.cpp
Side-by-side diff
Diffstat (limited to 'libopie/pim/otodoaccesssql.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libopie/pim/otodoaccesssql.cpp90
1 files changed, 74 insertions, 16 deletions
diff --git a/libopie/pim/otodoaccesssql.cpp b/libopie/pim/otodoaccesssql.cpp
index 23e0c3e..d255c66 100644
--- a/libopie/pim/otodoaccesssql.cpp
+++ b/libopie/pim/otodoaccesssql.cpp
@@ -120,4 +120,5 @@ namespace {
QString qu;
- qu += "create table todolist( uid, categories, completed, progress, ";
- qu += "summary, DueDate, priority, description )";
+ qu += "create table todolist( uid PRIMARY KEY, categories, completed, ";
+ qu += "description, summary, priority, DueDate, progress , state, ";
+ qu += "Recurrence, notifiers, maintainer, startdate, completeddate)";
return qu;
@@ -129,3 +130,5 @@ namespace {
QString qu;
- qu += "select distinct uid from todolist";
+ // We do not need "distinct" here. The primary key is always unique..
+ //qu += "select distinct uid from todolist";
+ qu += "select uid from todolist";
@@ -153,7 +156,41 @@ namespace {
}
+ int sYear = 0, sMonth = 0, sDay = 0;
+ if( m_todo.hasStartDate() ){
+ QDate sDate = m_todo.startDate();
+ sYear = sDate.year();
+ sMonth= sDate.month();
+ sDay = sDate.day();
+ }
+
+ int eYear = 0, eMonth = 0, eDay = 0;
+ if( m_todo.hasCompletedDate() ){
+ QDate eDate = m_todo.completedDate();
+ eYear = eDate.year();
+ eMonth= eDate.month();
+ eDay = eDate.day();
+ }
QString qu;
- qu = "insert into todolist VALUES(" + QString::number( m_todo.uid() ) + ",'" + m_todo.idsToString( m_todo.categories() ) + "',";
- qu += QString::number( m_todo.isCompleted() ) + "," + QString::number( m_todo.progress() ) + ",";
- qu += "'"+m_todo.summary()+"','"+QString::number(year)+"-"+QString::number(month)+"-"+QString::number(day)+"',";
- qu += QString::number(m_todo.priority() ) +",'" + m_todo.description() + "')";
+ qu = "insert into todolist VALUES("
+ + QString::number( m_todo.uid() ) + ","
+ + "'" + m_todo.idsToString( m_todo.categories() ) + "'" + ","
+ + QString::number( m_todo.isCompleted() ) + ","
+ + "'" + m_todo.description() + "'" + ","
+ + "'" + m_todo.summary() + "'" + ","
+ + QString::number(m_todo.priority() ) + ","
+ + "'" + QString::number(year) + "-"
+ + QString::number(month)
+ + "-" + QString::number( day ) + "'" + ","
+ + QString::number( m_todo.progress() ) + ","
+ + "''" + "," // state (conversion needed)
+// + QString::number( m_todo.state() ) + ","
+ + "''" + "," // Recurrence (conversion needed)
+ + "''" + "," // Notifiers (conversion needed)
+ + "''" + "," // Maintainers (conversion needed)
+ + "'" + QString::number(sYear) + "-"
+ + QString::number(sMonth)
+ + "-" + QString::number(sDay) + "'" + ","
+ + "'" + QString::number(eYear) + "-"
+ + QString::number(eMonth)
+ + "-"+QString::number(eDay) + "'"
+ + ")";
@@ -194,4 +231,3 @@ namespace {
QString FindQuery::single()const{
- QString qu = "select uid, categories, completed, progress, summary, ";
- qu += "DueDate, priority, description from todolist where uid = " + QString::number(m_uid);
+ QString qu = "select * from todolist where uid = " + QString::number(m_uid);
return qu;
@@ -199,4 +235,3 @@ namespace {
QString FindQuery::multi()const {
- QString qu = "select uid, categories, completed, progress, summary, ";
- qu += "DueDate, priority, description from todolist where ";
+ QString qu = "select * from todolist where ";
for (uint i = 0; i < m_uids.count(); i++ ) {
@@ -290,3 +325,3 @@ OTodo OTodoAccessBackendSQL::find( int uid, const QArray<int>& ints,
uint cur, Frontend::CacheDirection dir ) const{
- int CACHE = readAhead();
+ uint CACHE = readAhead();
qWarning("searching for %d", uid );
@@ -474,4 +509,4 @@ OTodo OTodoAccessBackendSQL::todo( OSQLResultItem& item )const {
qWarning("todo");
- bool has = false; QDate da = QDate::currentDate();
- has = date( da, item.data("DueDate") );
+ bool hasDueDate = false; QDate dueDate = QDate::currentDate();
+ hasDueDate = date( dueDate, item.data("DueDate") );
QStringList cats = QStringList::split(";", item.data("categories") );
@@ -480,4 +515,20 @@ OTodo OTodoAccessBackendSQL::todo( OSQLResultItem& item )const {
cats, item.data("summary"), item.data("description"),
- item.data("progress").toUShort(), has, da,
+ item.data("progress").toUShort(), hasDueDate, dueDate,
item.data("uid").toInt() );
+
+ bool isOk;
+ int prioInt = QString( item.data("priority") ).toInt( &isOk );
+ if ( isOk )
+ to.setPriority( prioInt );
+
+ bool hasStartDate = false; QDate startDate = QDate::currentDate();
+ hasStartDate = date( startDate, item.data("startdate") );
+ bool hasCompletedDate = false; QDate completedDate = QDate::currentDate();
+ hasCompletedDate = date( completedDate, item.data("completeddate") );
+
+ if ( hasStartDate )
+ to.setStartDate( startDate );
+ if ( hasCompletedDate )
+ to.setCompletedDate( completedDate );
+
return to;
@@ -572,3 +623,10 @@ QBitArray OTodoAccessBackendSQL::supports()const {
- static QBitArray ar = sup();
+ QBitArray ar( OTodo::CompletedDate + 1 );
+ ar.fill( true );
+ ar[OTodo::CrossReference] = false;
+ ar[OTodo::State ] = false;
+ ar[OTodo::Reminders] = false;
+ ar[OTodo::Notifiers] = false;
+ ar[OTodo::Maintainer] = false;
+
return ar;