summaryrefslogtreecommitdiff
path: root/libopie/tododb.cpp
Unidiff
Diffstat (limited to 'libopie/tododb.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libopie/tododb.cpp221
1 files changed, 120 insertions, 101 deletions
diff --git a/libopie/tododb.cpp b/libopie/tododb.cpp
index eb17674..91331d0 100644
--- a/libopie/tododb.cpp
+++ b/libopie/tododb.cpp
@@ -4,2 +4,3 @@
4#include <opie/xmltree.h> 4#include <opie/xmltree.h>
5#include <opie/todoresource.h>
5#include <qpe/palmtoprecord.h> 6#include <qpe/palmtoprecord.h>
@@ -7,77 +8,49 @@
7 8
8ToDoDB::ToDoDB(const QString &fileName = QString::null ){ 9namespace {
9 m_fileName = fileName;
10 if( fileName.isEmpty() ){
11 m_fileName = Global::applicationFileName("todolist","todolist.xml");;
12 qWarning("%s", m_fileName.latin1() );
13 }
14 10
15 load(); 11class FileToDoResource : public ToDoResource {
16} 12public:
17ToDoDB::~ToDoDB() 13 FileToDoResource() {};
18{ 14 bool save(const QString &name, const QValueList<ToDoEvent> &m_todos ){
19 15 // prepare the XML
20} 16 XMLElement *tasks = new XMLElement( );
21QValueList<ToDoEvent> ToDoDB::effectiveToDos(const QDate &from, const QDate &to, 17 tasks->setTagName("Tasks" );
22 bool all ) 18 for( QValueList<ToDoEvent>::ConstIterator it = m_todos.begin(); it != m_todos.end(); ++it ){
23{ 19 XMLElement::AttributeMap map;
24 QValueList<ToDoEvent> events; 20 XMLElement *task = new XMLElement();
25 for( QValueList<ToDoEvent>::Iterator it = m_todos.begin(); it!= m_todos.end(); ++it ){ 21 map.insert( "Completed", QString::number((int)(*it).isCompleted() ) );
22 map.insert( "HasDate", QString::number((int)(*it).hasDate() ) );
23 map.insert( "Priority", QString::number( (*it).priority() ) );
24 if(!(*it).category().isEmpty() ){
25 QArray<int> arrat(1);
26 arrat = Qtopia::Record::idsFromString( (*it).category() );
27 map.insert( "Categories", QString::number( arrat[0] ) );
28 }else
29 map.insert( "Categories", QString::null );
30 map.insert( "Description", (*it).description() );
26 if( (*it).hasDate() ){ 31 if( (*it).hasDate() ){
27 if( (*it).date() >= from && (*it).date() <= to ) 32 map.insert("DateYear", QString::number( (*it).date().year() ) );
28 events.append( (*it) ); 33 map.insert("DateMonth", QString::number( (*it).date().month() ) );
29 }else if( all ){ 34 map.insert("DateDay", QString::number( (*it).date().day() ) );
30 events.append( (*it) );
31 }
32 }
33 return events;
34}
35QValueList<ToDoEvent> ToDoDB::effectiveToDos(const QDate &from,
36 bool all)
37{
38 return effectiveToDos( from, QDate::currentDate(), all );
39}
40QValueList<ToDoEvent> ToDoDB::overDue()
41{
42 QValueList<ToDoEvent> events;
43 for( QValueList<ToDoEvent>::Iterator it = m_todos.begin(); it!= m_todos.end(); ++it ){
44 if( (*it).isOverdue() )
45 events.append((*it) );
46 }
47 return events;
48}
49QValueList<ToDoEvent> ToDoDB::rawToDos()
50{
51 return m_todos;
52}
53void ToDoDB::addEvent( const ToDoEvent &event )
54{
55 m_todos.append( event );
56}
57void ToDoDB::editEvent( const ToDoEvent &event )
58{
59 m_todos.remove( event );
60 m_todos.append( event );
61}
62void ToDoDB::removeEvent( const ToDoEvent &event )
63{
64 m_todos.remove( event );
65} 35}
66void ToDoDB::reload() 36 map.insert("Uid", QString::number( (*it).uid() ) );
67{ 37 task->setTagName("Task" );
68 load(); 38 task->setAttributes( map );
39 tasks->appendChild(task);
69} 40}
70void ToDoDB::setFileName(const QString &file ) 41 QFile file( name);
71{ 42 if( file.open(IO_WriteOnly ) ){
72 m_fileName =file; 43 QTextStream stream(&file );
44 stream << "<!DOCTYPE Tasks>" << endl;
45 tasks->save(stream );
46 delete tasks;
47 file.close();
48 return true;
73} 49}
74QString ToDoDB::fileName()const 50 return false;
75{
76 return m_fileName;
77} 51}
78void ToDoDB::load() 52 QValueList<ToDoEvent> load( const QString &name ){
79{
80 qWarning("loading tododb" ); 53 qWarning("loading tododb" );
81 m_todos.clear(); 54 QValueList<ToDoEvent> m_todos;
82 XMLElement *root = XMLElement::load( m_fileName ); 55 XMLElement *root = XMLElement::load( name );
83 if(root != 0l ){ // start parsing 56 if(root != 0l ){ // start parsing
@@ -139,3 +112,3 @@ void ToDoDB::load()
139 dumInt = dummy.toInt(&ok ); 112 dumInt = dummy.toInt(&ok );
140 if(ok ) event.m_uid = dumInt; 113 if(ok ) event.setUid( dumInt );
141 m_todos.append( event ); 114 m_todos.append( event );
@@ -148,41 +121,87 @@ void ToDoDB::load()
148 delete root; 121 delete root;
122 return m_todos;
149} 123}
150bool ToDoDB::save() 124};
125
126}
127
128ToDoDB::ToDoDB(const QString &fileName = QString::null, ToDoResource *res ){
129 m_fileName = fileName;
130 if( fileName.isEmpty() && res == 0 ){
131 m_fileName = Global::applicationFileName("todolist","todolist.xml");;
132 //qWarning("%s", m_fileName.latin1() );
133 }else if(res == 0 ){ // let's create a ToDoResource for xml
134 res = new FileToDoResource();
135 }
136 m_res = res;
137 load();
138}
139ToDoDB::~ToDoDB()
151{ 140{
152// prepare the XML 141
153 XMLElement *tasks = new XMLElement( ); 142}
154 tasks->setTagName("Tasks" ); 143QValueList<ToDoEvent> ToDoDB::effectiveToDos(const QDate &from, const QDate &to,
144 bool all )
145{
146 QValueList<ToDoEvent> events;
155 for( QValueList<ToDoEvent>::Iterator it = m_todos.begin(); it != m_todos.end(); ++it ){ 147 for( QValueList<ToDoEvent>::Iterator it = m_todos.begin(); it != m_todos.end(); ++it ){
156 XMLElement::AttributeMap map;
157 XMLElement *task = new XMLElement();
158 map.insert( "Completed", QString::number((int)(*it).isCompleted() ) );
159 map.insert( "HasDate", QString::number((int)(*it).hasDate() ) );
160 map.insert( "Priority", QString::number( (*it).priority() ) );
161 if(!(*it).category().isEmpty() ){
162 QArray<int> arrat(1);
163 arrat = Qtopia::Record::idsFromString( (*it).category() );
164 map.insert( "Categories", QString::number( arrat[0] ) );
165 }else
166 map.insert( "Categories", QString::null );
167 map.insert( "Description", (*it).description() );
168 if( (*it).hasDate() ){ 148 if( (*it).hasDate() ){
169 map.insert("DateYear", QString::number( (*it).date().year() ) ); 149 if( (*it).date() >= from && (*it).date() <= to )
170 map.insert("DateMonth", QString::number( (*it).date().month() ) ); 150 events.append( (*it) );
171 map.insert("DateDay", QString::number( (*it).date().day() ) ); 151 }else if( all ){
152 events.append( (*it) );
172 } 153 }
173 map.insert("Uid", QString::number( (*it).uid() ) );
174 task->setTagName("Task" );
175 task->setAttributes( map );
176 tasks->appendChild(task);
177 } 154 }
178 QFile file( m_fileName); 155 return events;
179 if( file.open(IO_WriteOnly ) ){
180 QTextStream stream(&file );
181 stream << "<!DOCTYPE Tasks>" << endl;
182 tasks->save(stream );
183 delete tasks;
184 file.close();
185 return true;
186 } 156 }
187 return false; 157QValueList<ToDoEvent> ToDoDB::effectiveToDos(const QDate &from,
158 bool all)
159{
160 return effectiveToDos( from, QDate::currentDate(), all );
161}
162QValueList<ToDoEvent> ToDoDB::overDue()
163{
164 QValueList<ToDoEvent> events;
165 for( QValueList<ToDoEvent>::Iterator it = m_todos.begin(); it!= m_todos.end(); ++it ){
166 if( (*it).isOverdue() )
167 events.append((*it) );
168 }
169 return events;
170}
171QValueList<ToDoEvent> ToDoDB::rawToDos()
172{
173 return m_todos;
174}
175void ToDoDB::addEvent( const ToDoEvent &event )
176{
177 m_todos.append( event );
178}
179void ToDoDB::editEvent( const ToDoEvent &event )
180{
181 m_todos.remove( event );
182 m_todos.append( event );
183}
184void ToDoDB::removeEvent( const ToDoEvent &event )
185{
186 m_todos.remove( event );
187}
188void ToDoDB::reload()
189{
190 load();
191}
192void ToDoDB::setFileName(const QString &file )
193{
194 m_fileName =file;
195}
196QString ToDoDB::fileName()const
197{
198 return m_fileName;
199}
200void ToDoDB::load()
201{
202
203}
204bool ToDoDB::save()
205{
206 return m_res->save( m_fileName, m_todos );
188} 207}