summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/TODO16
-rw-r--r--libopie/ofileselector/.cvsignore1
-rw-r--r--libopie/pim/ABSTRACT18
-rw-r--r--libopie/pim/DESIGN56
-rw-r--r--libopie/pim/TODO34
-rw-r--r--libopie/pim/test/converter.cpp107
-rwxr-xr-xlibopie/pim/test/converter.h18
-rw-r--r--libopie/pim/test/converter.pro12
-rw-r--r--libopie/pim/test/converter_base.ui238
-rw-r--r--libopie/pim/test/oevent_test.cpp35
-rw-r--r--libopie/pim/test/oevent_test.pro11
-rw-r--r--libopie/pim/test/test_todo.cpp36
-rw-r--r--libopie/pim/test/todo_test.pro11
-rw-r--r--noncore/unsupported/libopie/.cvsignore (renamed from libopie/.cvsignore)0
-rw-r--r--noncore/unsupported/libopie/colordialog.cpp (renamed from libopie/colordialog.cpp)0
-rw-r--r--noncore/unsupported/libopie/colordialog.h (renamed from libopie/colordialog.h)0
-rw-r--r--noncore/unsupported/libopie/colorpopupmenu.cpp (renamed from libopie/colorpopupmenu.cpp)0
-rw-r--r--noncore/unsupported/libopie/colorpopupmenu.h (renamed from libopie/colorpopupmenu.h)0
-rw-r--r--noncore/unsupported/libopie/config.in (renamed from libopie/config.in)0
-rw-r--r--noncore/unsupported/libopie/libopie.pro (renamed from libopie/libopie.pro)0
-rw-r--r--noncore/unsupported/libopie/libopie1.control (renamed from libopie/libopie1.control)0
-rwxr-xr-xnoncore/unsupported/libopie/libopie1.postinst (renamed from libopie/libopie1.postinst)0
-rw-r--r--noncore/unsupported/libopie/oapplicationfactory.h (renamed from libopie/oapplicationfactory.h)0
-rw-r--r--noncore/unsupported/libopie/ocheckitem.cpp (renamed from libopie/ocheckitem.cpp)0
-rw-r--r--noncore/unsupported/libopie/ocheckitem.h (renamed from libopie/ocheckitem.h)0
-rw-r--r--noncore/unsupported/libopie/oclickablelabel.cpp (renamed from libopie/oclickablelabel.cpp)0
-rw-r--r--noncore/unsupported/libopie/oclickablelabel.h (renamed from libopie/oclickablelabel.h)0
-rw-r--r--noncore/unsupported/libopie/ocolorbutton.cpp (renamed from libopie/ocolorbutton.cpp)0
-rw-r--r--noncore/unsupported/libopie/ocolorbutton.h (renamed from libopie/ocolorbutton.h)0
-rw-r--r--noncore/unsupported/libopie/odevice.cpp (renamed from libopie/odevice.cpp)0
-rw-r--r--noncore/unsupported/libopie/odevice.h (renamed from libopie/odevice.h)0
-rw-r--r--noncore/unsupported/libopie/odevicebutton.cpp (renamed from libopie/odevicebutton.cpp)0
-rw-r--r--noncore/unsupported/libopie/odevicebutton.h (renamed from libopie/odevicebutton.h)0
-rw-r--r--noncore/unsupported/libopie/ofiledialog.cc (renamed from libopie/ofiledialog.cc)0
-rw-r--r--noncore/unsupported/libopie/ofiledialog.h (renamed from libopie/ofiledialog.h)0
-rw-r--r--noncore/unsupported/libopie/ofileselector.cpp (renamed from libopie/ofileselector.cpp)0
-rw-r--r--noncore/unsupported/libopie/ofileselector.h (renamed from libopie/ofileselector.h)0
-rw-r--r--noncore/unsupported/libopie/ofileselector_p.h (renamed from libopie/ofileselector_p.h)0
-rw-r--r--noncore/unsupported/libopie/ofileview.h (renamed from libopie/ofileview.h)0
-rw-r--r--noncore/unsupported/libopie/ofontmenu.cc (renamed from libopie/ofontmenu.cc)0
-rw-r--r--noncore/unsupported/libopie/ofontmenu.h (renamed from libopie/ofontmenu.h)0
-rw-r--r--noncore/unsupported/libopie/ofontselector.cpp (renamed from libopie/ofontselector.cpp)0
-rw-r--r--noncore/unsupported/libopie/ofontselector.h (renamed from libopie/ofontselector.h)0
-rw-r--r--noncore/unsupported/libopie/oprocctrl.cpp (renamed from libopie/oprocctrl.cpp)0
-rw-r--r--noncore/unsupported/libopie/oprocctrl.h (renamed from libopie/oprocctrl.h)0
-rw-r--r--noncore/unsupported/libopie/oprocess.cpp (renamed from libopie/oprocess.cpp)0
-rw-r--r--noncore/unsupported/libopie/oprocess.h (renamed from libopie/oprocess.h)0
-rw-r--r--noncore/unsupported/libopie/orecurrancebase.ui (renamed from libopie/orecurrancebase.ui)0
-rw-r--r--noncore/unsupported/libopie/orecurrancewidget.cpp (renamed from libopie/orecurrancewidget.cpp)0
-rw-r--r--noncore/unsupported/libopie/orecurrancewidget.h (renamed from libopie/orecurrancewidget.h)0
-rw-r--r--noncore/unsupported/libopie/otabbar.cpp (renamed from libopie/otabbar.cpp)0
-rw-r--r--noncore/unsupported/libopie/otabbar.h (renamed from libopie/otabbar.h)0
-rw-r--r--noncore/unsupported/libopie/otabinfo.h (renamed from libopie/otabinfo.h)0
-rw-r--r--noncore/unsupported/libopie/otabwidget.cpp (renamed from libopie/otabwidget.cpp)0
-rw-r--r--noncore/unsupported/libopie/otabwidget.h (renamed from libopie/otabwidget.h)0
-rw-r--r--noncore/unsupported/libopie/oticker.cpp (renamed from libopie/oticker.cpp)0
-rw-r--r--noncore/unsupported/libopie/oticker.h (renamed from libopie/oticker.h)0
-rw-r--r--noncore/unsupported/libopie/otimepicker.cpp (renamed from libopie/otimepicker.cpp)0
-rw-r--r--noncore/unsupported/libopie/otimepicker.h (renamed from libopie/otimepicker.h)0
-rw-r--r--noncore/unsupported/libopie/otimepickerbase.ui (renamed from libopie/otimepickerbase.ui)0
-rw-r--r--noncore/unsupported/libopie/owait.cpp (renamed from libopie/owait.cpp)0
-rw-r--r--noncore/unsupported/libopie/owait.h (renamed from libopie/owait.h)0
-rw-r--r--noncore/unsupported/libopie/pim/.cvsignore (renamed from libopie/pim/.cvsignore)0
-rw-r--r--noncore/unsupported/libopie/pim/config.in2
-rw-r--r--noncore/unsupported/libopie/pim/libopie.pro (renamed from libopie/pim/libopie.pro)0
-rw-r--r--noncore/unsupported/libopie/pim/obackendfactory.h (renamed from libopie/pim/obackendfactory.h)3
-rw-r--r--noncore/unsupported/libopie/pim/ocontact.cpp (renamed from libopie/pim/ocontact.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/ocontact.h (renamed from libopie/pim/ocontact.h)0
-rw-r--r--noncore/unsupported/libopie/pim/ocontactaccess.cpp (renamed from libopie/pim/ocontactaccess.cpp)3
-rw-r--r--noncore/unsupported/libopie/pim/ocontactaccess.h (renamed from libopie/pim/ocontactaccess.h)3
-rw-r--r--noncore/unsupported/libopie/pim/ocontactaccessbackend.h (renamed from libopie/pim/ocontactaccessbackend.h)3
-rw-r--r--noncore/unsupported/libopie/pim/ocontactaccessbackend_sql.cpp (renamed from libopie/pim/ocontactaccessbackend_sql.cpp)3
-rw-r--r--noncore/unsupported/libopie/pim/ocontactaccessbackend_sql.h (renamed from libopie/pim/ocontactaccessbackend_sql.h)3
-rw-r--r--noncore/unsupported/libopie/pim/ocontactaccessbackend_vcard.cpp (renamed from libopie/pim/ocontactaccessbackend_vcard.cpp)3
-rw-r--r--noncore/unsupported/libopie/pim/ocontactaccessbackend_vcard.h (renamed from libopie/pim/ocontactaccessbackend_vcard.h)3
-rw-r--r--noncore/unsupported/libopie/pim/ocontactaccessbackend_xml.cpp (renamed from libopie/pim/ocontactaccessbackend_xml.cpp)3
-rw-r--r--noncore/unsupported/libopie/pim/ocontactaccessbackend_xml.h (renamed from libopie/pim/ocontactaccessbackend_xml.h)3
-rw-r--r--noncore/unsupported/libopie/pim/ocontactfields.cpp (renamed from libopie/pim/ocontactfields.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/ocontactfields.h (renamed from libopie/pim/ocontactfields.h)0
-rw-r--r--noncore/unsupported/libopie/pim/oconversion.cpp (renamed from libopie/pim/oconversion.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/oconversion.h (renamed from libopie/pim/oconversion.h)0
-rw-r--r--noncore/unsupported/libopie/pim/odatebookaccess.cpp (renamed from libopie/pim/odatebookaccess.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/odatebookaccess.h (renamed from libopie/pim/odatebookaccess.h)0
-rw-r--r--noncore/unsupported/libopie/pim/odatebookaccessbackend.cpp (renamed from libopie/pim/odatebookaccessbackend.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/odatebookaccessbackend.h (renamed from libopie/pim/odatebookaccessbackend.h)0
-rw-r--r--noncore/unsupported/libopie/pim/odatebookaccessbackend_sql.cpp (renamed from libopie/pim/odatebookaccessbackend_sql.cpp)3
-rw-r--r--noncore/unsupported/libopie/pim/odatebookaccessbackend_sql.h (renamed from libopie/pim/odatebookaccessbackend_sql.h)0
-rw-r--r--noncore/unsupported/libopie/pim/odatebookaccessbackend_xml.cpp (renamed from libopie/pim/odatebookaccessbackend_xml.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/odatebookaccessbackend_xml.h (renamed from libopie/pim/odatebookaccessbackend_xml.h)0
-rw-r--r--noncore/unsupported/libopie/pim/oevent.cpp (renamed from libopie/pim/oevent.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/oevent.h (renamed from libopie/pim/oevent.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimaccessbackend.h (renamed from libopie/pim/opimaccessbackend.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimaccesstemplate.h (renamed from libopie/pim/opimaccesstemplate.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimcache.h (renamed from libopie/pim/opimcache.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimmaintainer.cpp (renamed from libopie/pim/opimmaintainer.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/opimmaintainer.h (renamed from libopie/pim/opimmaintainer.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimmainwindow.cpp (renamed from libopie/pim/opimmainwindow.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/opimmainwindow.h (renamed from libopie/pim/opimmainwindow.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimnotify.cpp (renamed from libopie/pim/opimnotify.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/opimnotify.h (renamed from libopie/pim/opimnotify.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimnotifymanager.cpp (renamed from libopie/pim/opimnotifymanager.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/opimnotifymanager.h (renamed from libopie/pim/opimnotifymanager.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimrecord.cpp (renamed from libopie/pim/opimrecord.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/opimrecord.h (renamed from libopie/pim/opimrecord.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimresolver.cpp (renamed from libopie/pim/opimresolver.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/opimresolver.h (renamed from libopie/pim/opimresolver.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimstate.cpp (renamed from libopie/pim/opimstate.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/opimstate.h (renamed from libopie/pim/opimstate.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimxref.cpp (renamed from libopie/pim/opimxref.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/opimxref.h (renamed from libopie/pim/opimxref.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimxrefmanager.cpp (renamed from libopie/pim/opimxrefmanager.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/opimxrefmanager.h (renamed from libopie/pim/opimxrefmanager.h)0
-rw-r--r--noncore/unsupported/libopie/pim/opimxrefpartner.cpp (renamed from libopie/pim/opimxrefpartner.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/opimxrefpartner.h (renamed from libopie/pim/opimxrefpartner.h)0
-rw-r--r--noncore/unsupported/libopie/pim/orecordlist.h (renamed from libopie/pim/orecordlist.h)0
-rw-r--r--noncore/unsupported/libopie/pim/orecur.cpp (renamed from libopie/pim/orecur.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/orecur.h (renamed from libopie/pim/orecur.h)0
-rw-r--r--noncore/unsupported/libopie/pim/otemplatebase.h (renamed from libopie/pim/otemplatebase.h)0
-rw-r--r--noncore/unsupported/libopie/pim/otimezone.cpp (renamed from libopie/pim/otimezone.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/otimezone.h (renamed from libopie/pim/otimezone.h)0
-rw-r--r--noncore/unsupported/libopie/pim/otodo.cpp (renamed from libopie/pim/otodo.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/otodo.h (renamed from libopie/pim/otodo.h)0
-rw-r--r--noncore/unsupported/libopie/pim/otodoaccess.cpp (renamed from libopie/pim/otodoaccess.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/otodoaccess.h (renamed from libopie/pim/otodoaccess.h)0
-rw-r--r--noncore/unsupported/libopie/pim/otodoaccessbackend.cpp (renamed from libopie/pim/otodoaccessbackend.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/otodoaccessbackend.h (renamed from libopie/pim/otodoaccessbackend.h)0
-rw-r--r--noncore/unsupported/libopie/pim/otodoaccesssql.cpp (renamed from libopie/pim/otodoaccesssql.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/otodoaccesssql.h (renamed from libopie/pim/otodoaccesssql.h)0
-rw-r--r--noncore/unsupported/libopie/pim/otodoaccessvcal.cpp (renamed from libopie/pim/otodoaccessvcal.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/otodoaccessvcal.h (renamed from libopie/pim/otodoaccessvcal.h)0
-rw-r--r--noncore/unsupported/libopie/pim/otodoaccessxml.cpp (renamed from libopie/pim/otodoaccessxml.cpp)0
-rw-r--r--noncore/unsupported/libopie/pim/otodoaccessxml.h (renamed from libopie/pim/otodoaccessxml.h)0
-rw-r--r--noncore/unsupported/libopie/sharp_compat.cpp (renamed from libopie/sharp_compat.cpp)0
-rw-r--r--noncore/unsupported/libopie/todayconfigwidget.h (renamed from libopie/todayconfigwidget.h)0
-rw-r--r--noncore/unsupported/libopie/todayplugininterface.h (renamed from libopie/todayplugininterface.h)0
-rw-r--r--noncore/unsupported/libopie/xmltree.cc (renamed from libopie/xmltree.cc)0
-rw-r--r--noncore/unsupported/libopie/xmltree.h (renamed from libopie/xmltree.h)0
137 files changed, 35 insertions, 593 deletions
diff --git a/libopie/TODO b/libopie/TODO
deleted file mode 100644
index 9607fde..0000000
--- a/libopie/TODO
+++ b/dev/null
@@ -1,16 +0,0 @@
1- xmltree done
2
3- tododb
4 - set Alarms
5
6- OFileSelector
7 - m_mimeCheck always shows the first icon
8 - mimetype selection broken
9 - when changing dirs the mimetype selections get messed up
10 - DocLnk when not in Document Mode ( and vice versa )
11 - MultipleDocuments
12 - Move OFileSelectorItem to it's own files
13 - new Dirs created inside the listview
14
15- Clickable labels?
16 committed \ No newline at end of file
diff --git a/libopie/ofileselector/.cvsignore b/libopie/ofileselector/.cvsignore
deleted file mode 100644
index 6d678c6..0000000
--- a/libopie/ofileselector/.cvsignore
+++ b/dev/null
@@ -1 +0,0 @@
1config.in
diff --git a/libopie/pim/ABSTRACT b/libopie/pim/ABSTRACT
deleted file mode 100644
index 5538d19..0000000
--- a/libopie/pim/ABSTRACT
+++ b/dev/null
@@ -1,18 +0,0 @@
1What is Opie PIM? Why is it special?
2Why do we need Opie PIM?
3
4The goal of OpiePIM is to be first of all
5extendable, light weight, scalable and fast.
6For the programmer we try to add a nice but
7powerful API to all classes.
8
9Memory is a costy resource on small and embedded
10devices. So we try to keep the memory usage as
11low as possible. Never the less we won't use structs
12and Pointers in the public API.
13The whole pim framework is value based. Internally we try
14to use implicit sharing as found in other Qt classes as well.
15This makes it possible to give 3rd party devels a nice
16API while keeping the memory usage as low as possible.
17
18We use C++ Templates
diff --git a/libopie/pim/DESIGN b/libopie/pim/DESIGN
deleted file mode 100644
index bd92b1b..0000000
--- a/libopie/pim/DESIGN
+++ b/dev/null
@@ -1,56 +0,0 @@
1Hija to the DESIGN of our OPIE PIM stuff
2
3This design was firstly discussed in the train
4from Frankfurt to Hannover between me (zecke ) and eilers.
5
6We had a look at our pim implementation and the one from
7trolltech and we looked what was missing.
8
9GOALS:
10 - clean implementation
11 - share code
12 - ObjectOriented Design
13 - Scalable
14 - Integration into common solutions like STL and Qt
15 - Addition
16 - Ease of Use
17
18GENERAL:
19 - use templates
20 - have a common base class for all Records OPimRecord
21 - use references instead of pointers
22 - make use of QShared internally memory consumption
23
24We've a 'public' and 'private' part in our lib
25OPimAccessTemplate is the public part. This will be used
26by 3rd party developers to access the PIMs.
27OPimAccessBackend is the backend. You could also call it
28resource.
29
30Both things need to be implemented for different kind of records.
31By using templates we can make sure we share code and the reason
32not to use simple inheretance is that we can specialise quite easy.
33
34For example we have OTodoAccess : public OPimAccessTemplate<OTodo>;
35the we would do
36OTodoAccess::List list = otodoAccess.all();
37OTodoAccess::List::Iterator it;
38for( it = list.begin(); it != list.end(); ++it );
39
40
41as you can see from here it just behaves like you expect from Qt or STL.
42
43The kewlest thing is that List and List::Iterator is free to use if you
44want to implement your own OPimAccessTemplate.
45You just have to sub class it and voila you're done
46
47
48Hope you enjoy using OPIE PIM
49
50regards Holger 'zecke' Freyther
51
52
53
54
55
56
diff --git a/libopie/pim/TODO b/libopie/pim/TODO
deleted file mode 100644
index 9bd2789..0000000
--- a/libopie/pim/TODO
+++ b/dev/null
@@ -1,34 +0,0 @@
1-Add XML Index ( dropped )
2-Add ReadOnly Resources ( to be discussed )
3-Add Sorted/Random Access mode for faster access to the base ( to be discussed )
4
5Yeah Stefan you're right I need to stop the fragmentation but these are just ideas
6we not to talk about.
7
8New Ideas Widgets:
9 OCategoryPopup:
10 Like the function Menu in Xemacs. If there are too many
11 Categories sort them into sub popups. A-B,B-G,H-K....
12 Integrate SUbcategories
13
14
15New Ideas on Infrastructure:
16 -finally switch to sqlite
17 -rework Category Sub Categories
18 -X-Ref!!!!!
19 -signalling ( Peer to Peer/ Backend to Backend communication of changes on a file basis )
20 -Signal the User about updates. Use QSignal and make it generic push from backend
21 to the access.
22 -flocking, mmapping
23 -Generic Tablewidget, getting QString for a record and attribute ( generic ) like QProperty
24 -chooser widgets
25 -hierachies
26 -multiple backends
27 -public private sort public and private on backends. default backend for each if multiple
28 backends loaded. Move from backend to backend.. ( backend mover app? )
29 -importer/exporter
30 -check if cache also drops
31 -port to BigSize Api
32
33 ORedoManager ORedoItem both are templates to allow undoing and redoing to a level...
34 \ No newline at end of file
diff --git a/libopie/pim/test/converter.cpp b/libopie/pim/test/converter.cpp
deleted file mode 100644
index bfdb605..0000000
--- a/libopie/pim/test/converter.cpp
+++ b/dev/null
@@ -1,107 +0,0 @@
1#include "converter.h"
2
3#include <qdatetime.h>
4#include <qprogressbar.h>
5
6#include <qpe/qpeapplication.h>
7
8#include <opie/ocontactaccess.h>
9#include <opie/ocontactaccessbackend_xml.h>
10#include <opie/ocontactaccessbackend_sql.h>
11
12#include <opie/odatebookaccess.h>
13#include <opie/odatebookaccessbackend_xml.h>
14#include <opie/odatebookaccessbackend_sql.h>
15
16// #define _ADDRESSBOOK_ACCESS
17
18Converter::Converter(){
19}
20
21void Converter::start_conversion(){
22 qWarning("Converting Contacts from XML to SQL..");
23
24 // Creating backends to the requested databases..
25
26#ifdef _ADDRESSBOOK_ACCESS
27 OContactAccessBackend* xmlBackend = new OContactAccessBackend_XML( "Converter",
28 QString::null );
29
30 OContactAccessBackend* sqlBackend = new OContactAccessBackend_SQL( QString::null,
31 QString::null );
32 // Put the created backends into frontends to access them
33 OContactAccess* xmlAccess = new OContactAccess ( "addressbook_xml",
34 QString::null , xmlBackend, true );
35
36 OContactAccess* sqlAccess = new OContactAccess ( "addressbook_sql",
37 QString::null );
38
39#else
40 ODateBookAccessBackend* xmlBackend = new ODateBookAccessBackend_XML( "Converter",
41 QString::null );
42
43 ODateBookAccessBackend* sqlBackend = new ODateBookAccessBackend_SQL( QString::null,
44 QString::null );
45 // Put the created backends into frontends to access them
46 ODateBookAccess* xmlAccess = new ODateBookAccess ( xmlBackend );
47
48 ODateBookAccess* sqlAccess = new ODateBookAccess ( sqlBackend );
49
50 xmlAccess->load();
51
52#endif
53
54 QTime t;
55 t.start();
56
57// Clean the sql-database..
58 sqlAccess->clear();
59
60#ifdef _ADDRESSBOOK_ACCESS
61 // Now trasmit every contact from the xml database to the sql-database
62 OContactAccess::List contactList = xmlAccess->allRecords();
63 m_progressBar->setTotalSteps( contactList.count() );
64 int count = 0;
65 if ( sqlAccess && xmlAccess ){
66 OContactAccess::List::Iterator it;
67 for ( it = contactList.begin(); it != contactList.end(); ++it ){
68 sqlAccess->add( *it );
69 m_progressBar->setProgress( ++count );
70 }
71 }
72#else
73 // Now transmit every contact from the xml database to the sql-database
74 ODateBookAccess::List dateList = xmlAccess->allRecords();
75 m_progressBar->setTotalSteps( dateList.count() );
76 qWarning( "Number of elements to copy: %d", dateList.count() );
77
78 int count = 0;
79 if ( sqlAccess && xmlAccess ){
80 ODateBookAccess::List::Iterator it;
81 for ( it = dateList.begin(); it != dateList.end(); ++it ){
82 sqlAccess->add( *it );
83 m_progressBar->setProgress( ++count );
84 }
85 }
86
87 #endif
88 // Delete the frontends. Backends will be deleted automatically, too !
89 delete sqlAccess;
90
91 qWarning("Conversion is finished and needed %d ms !", t.elapsed());
92
93 delete xmlAccess;
94}
95
96int main( int argc, char** argv ) {
97
98 QPEApplication a( argc, argv );
99
100 Converter dlg;
101
102 a.showMainWidget( &dlg );
103 // dlg. showMaximized ( );
104
105 return a.exec();
106
107}
diff --git a/libopie/pim/test/converter.h b/libopie/pim/test/converter.h
deleted file mode 100755
index 1cc2a7c..0000000
--- a/libopie/pim/test/converter.h
+++ b/dev/null
@@ -1,18 +0,0 @@
1#ifndef _CONVERTER_H_
2#define _CONVERTER_H_
3
4
5#include "converter_base.h"
6
7
8class Converter: public converter_base {
9public:
10 Converter();
11
12 void start_conversion();
13private:
14
15};
16
17
18#endif
diff --git a/libopie/pim/test/converter.pro b/libopie/pim/test/converter.pro
deleted file mode 100644
index bd9c7a3..0000000
--- a/libopie/pim/test/converter.pro
+++ b/dev/null
@@ -1,12 +0,0 @@
1 # TEMPLATE= app
2 CONFIG = qt warn_on debug
3 # CONFIG = qt warn_on release
4 #HEADERS =
5 SOURCES = converter.cpp
6INTERFACES = converter_base.ui
7 INCLUDEPATH+= $(OPIEDIR)/include
8 DEPENDPATH+= $(OPIEDIR)/include
9LIBS += -lqpe -lopie
10 TARGET = converter
11
12include ( $(OPIEDIR)/include.pro )
diff --git a/libopie/pim/test/converter_base.ui b/libopie/pim/test/converter_base.ui
deleted file mode 100644
index e9bf636..0000000
--- a/libopie/pim/test/converter_base.ui
+++ b/dev/null
@@ -1,238 +0,0 @@
1<!DOCTYPE UI><UI>
2<class>converter_base</class>
3<widget>
4 <class>QDialog</class>
5 <property stdset="1">
6 <name>name</name>
7 <cstring>converter_base</cstring>
8 </property>
9 <property stdset="1">
10 <name>geometry</name>
11 <rect>
12 <x>0</x>
13 <y>0</y>
14 <width>273</width>
15 <height>324</height>
16 </rect>
17 </property>
18 <property stdset="1">
19 <name>caption</name>
20 <string>PIM-Database Converter</string>
21 </property>
22 <property>
23 <name>layoutMargin</name>
24 </property>
25 <grid>
26 <property stdset="1">
27 <name>margin</name>
28 <number>4</number>
29 </property>
30 <property stdset="1">
31 <name>spacing</name>
32 <number>6</number>
33 </property>
34 <widget row="0" column="0" >
35 <class>QGroupBox</class>
36 <property stdset="1">
37 <name>name</name>
38 <cstring>GroupBox6</cstring>
39 </property>
40 <property stdset="1">
41 <name>title</name>
42 <string>Converter</string>
43 </property>
44 <property>
45 <name>layoutMargin</name>
46 </property>
47 <property>
48 <name>layoutSpacing</name>
49 </property>
50 <vbox>
51 <property stdset="1">
52 <name>margin</name>
53 <number>4</number>
54 </property>
55 <property stdset="1">
56 <name>spacing</name>
57 <number>4</number>
58 </property>
59 <widget>
60 <class>QGroupBox</class>
61 <property stdset="1">
62 <name>name</name>
63 <cstring>GroupBox1</cstring>
64 </property>
65 <property stdset="1">
66 <name>title</name>
67 <string>Select Database:</string>
68 </property>
69 <grid>
70 <property stdset="1">
71 <name>margin</name>
72 <number>11</number>
73 </property>
74 <property stdset="1">
75 <name>spacing</name>
76 <number>6</number>
77 </property>
78 <widget row="0" column="1" >
79 <class>QComboBox</class>
80 <item>
81 <property>
82 <name>text</name>
83 <string>Addressbook</string>
84 </property>
85 </item>
86 <item>
87 <property>
88 <name>text</name>
89 <string>TodoList</string>
90 </property>
91 </item>
92 <property stdset="1">
93 <name>name</name>
94 <cstring>ComboBox1</cstring>
95 </property>
96 </widget>
97 </grid>
98 </widget>
99 <widget>
100 <class>QGroupBox</class>
101 <property stdset="1">
102 <name>name</name>
103 <cstring>GroupBox2</cstring>
104 </property>
105 <property stdset="1">
106 <name>title</name>
107 <string>Source/Destination:</string>
108 </property>
109 <grid>
110 <property stdset="1">
111 <name>margin</name>
112 <number>11</number>
113 </property>
114 <property stdset="1">
115 <name>spacing</name>
116 <number>6</number>
117 </property>
118 <widget row="1" column="0" >
119 <class>QLabel</class>
120 <property stdset="1">
121 <name>name</name>
122 <cstring>TextLabel3_2</cstring>
123 </property>
124 <property stdset="1">
125 <name>text</name>
126 <string>to</string>
127 </property>
128 </widget>
129 <widget row="1" column="1" >
130 <class>QComboBox</class>
131 <item>
132 <property>
133 <name>text</name>
134 <string>Select</string>
135 </property>
136 </item>
137 <item>
138 <property>
139 <name>text</name>
140 <string>XML</string>
141 </property>
142 </item>
143 <item>
144 <property>
145 <name>text</name>
146 <string>SQL (SQLite)</string>
147 </property>
148 </item>
149 <property stdset="1">
150 <name>name</name>
151 <cstring>ComboBox2_3</cstring>
152 </property>
153 </widget>
154 <widget row="0" column="0" >
155 <class>QLabel</class>
156 <property stdset="1">
157 <name>name</name>
158 <cstring>TextLabel2_2</cstring>
159 </property>
160 <property stdset="1">
161 <name>text</name>
162 <string>Convert from</string>
163 </property>
164 </widget>
165 <widget row="0" column="1" >
166 <class>QComboBox</class>
167 <item>
168 <property>
169 <name>text</name>
170 <string>XML</string>
171 </property>
172 </item>
173 <item>
174 <property>
175 <name>text</name>
176 <string>SQL (SQLite)</string>
177 </property>
178 </item>
179 <property stdset="1">
180 <name>name</name>
181 <cstring>ComboBox2_2_2</cstring>
182 </property>
183 </widget>
184 </grid>
185 </widget>
186 <widget>
187 <class>QGroupBox</class>
188 <property stdset="1">
189 <name>name</name>
190 <cstring>GroupBox4</cstring>
191 </property>
192 <property stdset="1">
193 <name>title</name>
194 <string>Progress:</string>
195 </property>
196 <grid>
197 <property stdset="1">
198 <name>margin</name>
199 <number>11</number>
200 </property>
201 <property stdset="1">
202 <name>spacing</name>
203 <number>6</number>
204 </property>
205 <widget row="0" column="0" >
206 <class>QProgressBar</class>
207 <property stdset="1">
208 <name>name</name>
209 <cstring>m_progressBar</cstring>
210 </property>
211 </widget>
212 </grid>
213 </widget>
214 <widget>
215 <class>QPushButton</class>
216 <property stdset="1">
217 <name>name</name>
218 <cstring>PushButton1</cstring>
219 </property>
220 <property stdset="1">
221 <name>text</name>
222 <string>Go!</string>
223 </property>
224 </widget>
225 </vbox>
226 </widget>
227 </grid>
228</widget>
229<connections>
230 <connection>
231 <sender>PushButton1</sender>
232 <signal>clicked()</signal>
233 <receiver>converter_base</receiver>
234 <slot>start_conversion()</slot>
235 </connection>
236 <slot access="public">start_conversion()</slot>
237</connections>
238</UI>
diff --git a/libopie/pim/test/oevent_test.cpp b/libopie/pim/test/oevent_test.cpp
deleted file mode 100644
index 9f16911..0000000
--- a/libopie/pim/test/oevent_test.cpp
+++ b/dev/null
@@ -1,35 +0,0 @@
1#include <qdatetime.h>
2
3#include "../oevent.h"
4#include "../odatebookaccess.h"
5
6int main(int argc, char* argv ) {
7 ODateBookAccess acc;
8 if(!acc.load() ) qWarning("could not load");
9
10 ODateBookAccess::List::Iterator it;
11 ODateBookAccess::List list = acc.allRecords();
12
13 for( it = list.begin(); it != list.end(); ++it ){
14 OEvent ev = (*it);
15 qWarning("Summary: %s",ev.description().latin1() );
16 qWarning("Start: %s End: %s",ev.startDateTime().toString().latin1(), ev.endDateTime().toString().latin1() );
17 qWarning("All Day: %d Recurrence: %d",ev.isAllDay(), ev.hasRecurrence() );
18 qWarning("UID %d", ev.uid() );
19
20 }
21 QDate date1(2003,02,01 );
22 QDate date2(2003,03,01 );
23
24 OEffectiveEvent::ValueList effList = acc.effectiveEvents( date1,date2 );
25 OEffectiveEvent::ValueList::Iterator effIt;
26
27 for( effIt = effList.begin(); effIt != effList.end(); ++effIt ){
28 OEffectiveEvent ef = (*effIt);
29 qWarning("Summary: %s", ef.description().latin1() );
30 qWarning("Date: %s", ef.date().toString().latin1() );
31 }
32 acc.save();
33
34 return 0;
35}
diff --git a/libopie/pim/test/oevent_test.pro b/libopie/pim/test/oevent_test.pro
deleted file mode 100644
index 3365def..0000000
--- a/libopie/pim/test/oevent_test.pro
+++ b/dev/null
@@ -1,11 +0,0 @@
1 TEMPLATE= app
2 #CONFIG = qt warn_on debug
3 CONFIG = qt warn_on release
4 #HEADERS =
5 SOURCES = oevent_test.cpp
6 INCLUDEPATH+= $(OPIEDIR)/include
7 DEPENDPATH+= $(OPIEDIR)/include
8LIBS += -lqpe -lopie
9 TARGET = oevent_test
10
11include ( $(OPIEDIR)/include.pro ) \ No newline at end of file
diff --git a/libopie/pim/test/test_todo.cpp b/libopie/pim/test/test_todo.cpp
deleted file mode 100644
index 7440503..0000000
--- a/libopie/pim/test/test_todo.cpp
+++ b/dev/null
@@ -1,36 +0,0 @@
1#include <qdatetime.h>
2#include <qmap.h>
3
4#include <opie/otodo.h>
5#include <opie/otodoaccess.h>
6#include <opie/otodoaccessxml.h>
7
8int main(int argc, char* argv[] ) {
9
10 OTodoAccessXML* xml = new OTodoAccessXML("demo");
11 OTodoAccess ac(xml);
12 int elc;
13 QTime timer;
14 qWarning("start loading");
15 timer.start();
16 ac.load();
17 elc = timer.elapsed();
18 qWarning("Elapsed loading %d %d", elc, elc/1000);
19
20 timer.start();
21 OTodoAccess::List lis = ac.allRecords();
22 elc = timer.elapsed();
23 qWarning("Elapsed allRecords %d %d", elc, elc/1000 );
24 OTodoAccess::List::Iterator it;
25 timer.start();
26ac.save();
27/*
28 for( it = lis.begin(); it != lis.end(); ++it ) {
29 qWarning("Desc: " + (*it).summary() );
30 qWarning("UID %d", (*it).uid() );
31 }
32 */
33elc = timer.elapsed();
34
35 qWarning("elapsed iterating %d %d", elc, elc/1000 );
36};
diff --git a/libopie/pim/test/todo_test.pro b/libopie/pim/test/todo_test.pro
deleted file mode 100644
index 3d14dda..0000000
--- a/libopie/pim/test/todo_test.pro
+++ b/dev/null
@@ -1,11 +0,0 @@
1 TEMPLATE= app
2 #CONFIG = qt warn_on debug
3 CONFIG = qt warn_on release
4 #HEADERS =
5 SOURCES = test_todo.cpp
6 INCLUDEPATH+= $(OPIEDIR)/include
7 DEPENDPATH+= $(OPIEDIR)/include
8LIBS += -lqpe -lopie -lopiesql
9 TARGET = todo_test
10
11include ( $(OPIEDIR)/ ) \ No newline at end of file
diff --git a/libopie/.cvsignore b/noncore/unsupported/libopie/.cvsignore
index f76e42e..f76e42e 100644
--- a/libopie/.cvsignore
+++ b/noncore/unsupported/libopie/.cvsignore
diff --git a/libopie/colordialog.cpp b/noncore/unsupported/libopie/colordialog.cpp
index b2854a6..b2854a6 100644
--- a/libopie/colordialog.cpp
+++ b/noncore/unsupported/libopie/colordialog.cpp
diff --git a/libopie/colordialog.h b/noncore/unsupported/libopie/colordialog.h
index c825a83..c825a83 100644
--- a/libopie/colordialog.h
+++ b/noncore/unsupported/libopie/colordialog.h
diff --git a/libopie/colorpopupmenu.cpp b/noncore/unsupported/libopie/colorpopupmenu.cpp
index 03ad233..03ad233 100644
--- a/libopie/colorpopupmenu.cpp
+++ b/noncore/unsupported/libopie/colorpopupmenu.cpp
diff --git a/libopie/colorpopupmenu.h b/noncore/unsupported/libopie/colorpopupmenu.h
index 98d67cc..98d67cc 100644
--- a/libopie/colorpopupmenu.h
+++ b/noncore/unsupported/libopie/colorpopupmenu.h
diff --git a/libopie/config.in b/noncore/unsupported/libopie/config.in
index e8bc2e2..e8bc2e2 100644
--- a/libopie/config.in
+++ b/noncore/unsupported/libopie/config.in
diff --git a/libopie/libopie.pro b/noncore/unsupported/libopie/libopie.pro
index 783c11d..783c11d 100644
--- a/libopie/libopie.pro
+++ b/noncore/unsupported/libopie/libopie.pro
diff --git a/libopie/libopie1.control b/noncore/unsupported/libopie/libopie1.control
index 5b6825e..5b6825e 100644
--- a/libopie/libopie1.control
+++ b/noncore/unsupported/libopie/libopie1.control
diff --git a/libopie/libopie1.postinst b/noncore/unsupported/libopie/libopie1.postinst
index 0c37b3d..0c37b3d 100755
--- a/libopie/libopie1.postinst
+++ b/noncore/unsupported/libopie/libopie1.postinst
diff --git a/libopie/oapplicationfactory.h b/noncore/unsupported/libopie/oapplicationfactory.h
index ab88d80..ab88d80 100644
--- a/libopie/oapplicationfactory.h
+++ b/noncore/unsupported/libopie/oapplicationfactory.h
diff --git a/libopie/ocheckitem.cpp b/noncore/unsupported/libopie/ocheckitem.cpp
index cd763c1..cd763c1 100644
--- a/libopie/ocheckitem.cpp
+++ b/noncore/unsupported/libopie/ocheckitem.cpp
diff --git a/libopie/ocheckitem.h b/noncore/unsupported/libopie/ocheckitem.h
index 82ee3d0..82ee3d0 100644
--- a/libopie/ocheckitem.h
+++ b/noncore/unsupported/libopie/ocheckitem.h
diff --git a/libopie/oclickablelabel.cpp b/noncore/unsupported/libopie/oclickablelabel.cpp
index bc7037b..bc7037b 100644
--- a/libopie/oclickablelabel.cpp
+++ b/noncore/unsupported/libopie/oclickablelabel.cpp
diff --git a/libopie/oclickablelabel.h b/noncore/unsupported/libopie/oclickablelabel.h
index f93ade0..f93ade0 100644
--- a/libopie/oclickablelabel.h
+++ b/noncore/unsupported/libopie/oclickablelabel.h
diff --git a/libopie/ocolorbutton.cpp b/noncore/unsupported/libopie/ocolorbutton.cpp
index 298dba2..298dba2 100644
--- a/libopie/ocolorbutton.cpp
+++ b/noncore/unsupported/libopie/ocolorbutton.cpp
diff --git a/libopie/ocolorbutton.h b/noncore/unsupported/libopie/ocolorbutton.h
index 6196c83..6196c83 100644
--- a/libopie/ocolorbutton.h
+++ b/noncore/unsupported/libopie/ocolorbutton.h
diff --git a/libopie/odevice.cpp b/noncore/unsupported/libopie/odevice.cpp
index 9d0bbbf..9d0bbbf 100644
--- a/libopie/odevice.cpp
+++ b/noncore/unsupported/libopie/odevice.cpp
diff --git a/libopie/odevice.h b/noncore/unsupported/libopie/odevice.h
index fc41079..fc41079 100644
--- a/libopie/odevice.h
+++ b/noncore/unsupported/libopie/odevice.h
diff --git a/libopie/odevicebutton.cpp b/noncore/unsupported/libopie/odevicebutton.cpp
index 647ac4b..647ac4b 100644
--- a/libopie/odevicebutton.cpp
+++ b/noncore/unsupported/libopie/odevicebutton.cpp
diff --git a/libopie/odevicebutton.h b/noncore/unsupported/libopie/odevicebutton.h
index 1621526..1621526 100644
--- a/libopie/odevicebutton.h
+++ b/noncore/unsupported/libopie/odevicebutton.h
diff --git a/libopie/ofiledialog.cc b/noncore/unsupported/libopie/ofiledialog.cc
index 47306b6..47306b6 100644
--- a/libopie/ofiledialog.cc
+++ b/noncore/unsupported/libopie/ofiledialog.cc
diff --git a/libopie/ofiledialog.h b/noncore/unsupported/libopie/ofiledialog.h
index 3b905c0..3b905c0 100644
--- a/libopie/ofiledialog.h
+++ b/noncore/unsupported/libopie/ofiledialog.h
diff --git a/libopie/ofileselector.cpp b/noncore/unsupported/libopie/ofileselector.cpp
index 2a6aed0..2a6aed0 100644
--- a/libopie/ofileselector.cpp
+++ b/noncore/unsupported/libopie/ofileselector.cpp
diff --git a/libopie/ofileselector.h b/noncore/unsupported/libopie/ofileselector.h
index 767455c..767455c 100644
--- a/libopie/ofileselector.h
+++ b/noncore/unsupported/libopie/ofileselector.h
diff --git a/libopie/ofileselector_p.h b/noncore/unsupported/libopie/ofileselector_p.h
index 7fd0c50..7fd0c50 100644
--- a/libopie/ofileselector_p.h
+++ b/noncore/unsupported/libopie/ofileselector_p.h
diff --git a/libopie/ofileview.h b/noncore/unsupported/libopie/ofileview.h
index e072477..e072477 100644
--- a/libopie/ofileview.h
+++ b/noncore/unsupported/libopie/ofileview.h
diff --git a/libopie/ofontmenu.cc b/noncore/unsupported/libopie/ofontmenu.cc
index d16c5e5..d16c5e5 100644
--- a/libopie/ofontmenu.cc
+++ b/noncore/unsupported/libopie/ofontmenu.cc
diff --git a/libopie/ofontmenu.h b/noncore/unsupported/libopie/ofontmenu.h
index 6e143ca..6e143ca 100644
--- a/libopie/ofontmenu.h
+++ b/noncore/unsupported/libopie/ofontmenu.h
diff --git a/libopie/ofontselector.cpp b/noncore/unsupported/libopie/ofontselector.cpp
index 87b7869..87b7869 100644
--- a/libopie/ofontselector.cpp
+++ b/noncore/unsupported/libopie/ofontselector.cpp
diff --git a/libopie/ofontselector.h b/noncore/unsupported/libopie/ofontselector.h
index b819c45..b819c45 100644
--- a/libopie/ofontselector.h
+++ b/noncore/unsupported/libopie/ofontselector.h
diff --git a/libopie/oprocctrl.cpp b/noncore/unsupported/libopie/oprocctrl.cpp
index df8da1e..df8da1e 100644
--- a/libopie/oprocctrl.cpp
+++ b/noncore/unsupported/libopie/oprocctrl.cpp
diff --git a/libopie/oprocctrl.h b/noncore/unsupported/libopie/oprocctrl.h
index 5b39490..5b39490 100644
--- a/libopie/oprocctrl.h
+++ b/noncore/unsupported/libopie/oprocctrl.h
diff --git a/libopie/oprocess.cpp b/noncore/unsupported/libopie/oprocess.cpp
index c19881a..c19881a 100644
--- a/libopie/oprocess.cpp
+++ b/noncore/unsupported/libopie/oprocess.cpp
diff --git a/libopie/oprocess.h b/noncore/unsupported/libopie/oprocess.h
index af7cddb..af7cddb 100644
--- a/libopie/oprocess.h
+++ b/noncore/unsupported/libopie/oprocess.h
diff --git a/libopie/orecurrancebase.ui b/noncore/unsupported/libopie/orecurrancebase.ui
index baf79d3..baf79d3 100644
--- a/libopie/orecurrancebase.ui
+++ b/noncore/unsupported/libopie/orecurrancebase.ui
diff --git a/libopie/orecurrancewidget.cpp b/noncore/unsupported/libopie/orecurrancewidget.cpp
index 33be269..33be269 100644
--- a/libopie/orecurrancewidget.cpp
+++ b/noncore/unsupported/libopie/orecurrancewidget.cpp
diff --git a/libopie/orecurrancewidget.h b/noncore/unsupported/libopie/orecurrancewidget.h
index 37a57f0..37a57f0 100644
--- a/libopie/orecurrancewidget.h
+++ b/noncore/unsupported/libopie/orecurrancewidget.h
diff --git a/libopie/otabbar.cpp b/noncore/unsupported/libopie/otabbar.cpp
index 52621ca..52621ca 100644
--- a/libopie/otabbar.cpp
+++ b/noncore/unsupported/libopie/otabbar.cpp
diff --git a/libopie/otabbar.h b/noncore/unsupported/libopie/otabbar.h
index 668187b..668187b 100644
--- a/libopie/otabbar.h
+++ b/noncore/unsupported/libopie/otabbar.h
diff --git a/libopie/otabinfo.h b/noncore/unsupported/libopie/otabinfo.h
index 00bb06d..00bb06d 100644
--- a/libopie/otabinfo.h
+++ b/noncore/unsupported/libopie/otabinfo.h
diff --git a/libopie/otabwidget.cpp b/noncore/unsupported/libopie/otabwidget.cpp
index 52190b2..52190b2 100644
--- a/libopie/otabwidget.cpp
+++ b/noncore/unsupported/libopie/otabwidget.cpp
diff --git a/libopie/otabwidget.h b/noncore/unsupported/libopie/otabwidget.h
index 047eaa1..047eaa1 100644
--- a/libopie/otabwidget.h
+++ b/noncore/unsupported/libopie/otabwidget.h
diff --git a/libopie/oticker.cpp b/noncore/unsupported/libopie/oticker.cpp
index b41cab6..b41cab6 100644
--- a/libopie/oticker.cpp
+++ b/noncore/unsupported/libopie/oticker.cpp
diff --git a/libopie/oticker.h b/noncore/unsupported/libopie/oticker.h
index 45bf7ce..45bf7ce 100644
--- a/libopie/oticker.h
+++ b/noncore/unsupported/libopie/oticker.h
diff --git a/libopie/otimepicker.cpp b/noncore/unsupported/libopie/otimepicker.cpp
index 11b80ed..11b80ed 100644
--- a/libopie/otimepicker.cpp
+++ b/noncore/unsupported/libopie/otimepicker.cpp
diff --git a/libopie/otimepicker.h b/noncore/unsupported/libopie/otimepicker.h
index 8df7d10..8df7d10 100644
--- a/libopie/otimepicker.h
+++ b/noncore/unsupported/libopie/otimepicker.h
diff --git a/libopie/otimepickerbase.ui b/noncore/unsupported/libopie/otimepickerbase.ui
index 3e7f2fb..3e7f2fb 100644
--- a/libopie/otimepickerbase.ui
+++ b/noncore/unsupported/libopie/otimepickerbase.ui
diff --git a/libopie/owait.cpp b/noncore/unsupported/libopie/owait.cpp
index a0f3834..a0f3834 100644
--- a/libopie/owait.cpp
+++ b/noncore/unsupported/libopie/owait.cpp
diff --git a/libopie/owait.h b/noncore/unsupported/libopie/owait.h
index cbfc8d6..cbfc8d6 100644
--- a/libopie/owait.h
+++ b/noncore/unsupported/libopie/owait.h
diff --git a/libopie/pim/.cvsignore b/noncore/unsupported/libopie/pim/.cvsignore
index aef62c4..aef62c4 100644
--- a/libopie/pim/.cvsignore
+++ b/noncore/unsupported/libopie/pim/.cvsignore
diff --git a/noncore/unsupported/libopie/pim/config.in b/noncore/unsupported/libopie/pim/config.in
new file mode 100644
index 0000000..95d3737
--- a/dev/null
+++ b/noncore/unsupported/libopie/pim/config.in
@@ -0,0 +1,2 @@
1menu "Pim"
2endmenu
diff --git a/libopie/pim/libopie.pro b/noncore/unsupported/libopie/pim/libopie.pro
index 62f235d..62f235d 100644
--- a/libopie/pim/libopie.pro
+++ b/noncore/unsupported/libopie/pim/libopie.pro
diff --git a/libopie/pim/obackendfactory.h b/noncore/unsupported/libopie/pim/obackendfactory.h
index 761ab9a..4cdef8b 100644
--- a/libopie/pim/obackendfactory.h
+++ b/noncore/unsupported/libopie/pim/obackendfactory.h
@@ -1,194 +1,197 @@
1/* 1/*
2 * Class to manage Backends. 2 * Class to manage Backends.
3 * 3 *
4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) 4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
5 * 5 *
6 * ===================================================================== 6 * =====================================================================
7 *This program is free software; you can redistribute it and/or 7 *This program is free software; you can redistribute it and/or
8 *modify it under the terms of the GNU Library General Public 8 *modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; 9 * License as published by the Free Software Foundation;
10 * either version 2 of the License, or (at your option) any later 10 * either version 2 of the License, or (at your option) any later
11 * version. 11 * version.
12 * ===================================================================== 12 * =====================================================================
13 * ToDo: Use plugins 13 * ToDo: Use plugins
14 * ===================================================================== 14 * =====================================================================
15 * Version: $Id$ 15 * Version: $Id$
16 * ===================================================================== 16 * =====================================================================
17 * History: 17 * History:
18 * $Log$ 18 * $Log$
19 * Revision 1.1 2004/11/16 21:46:07 mickeyl
20 * libopie1 goes into unsupported
21 *
19 * Revision 1.9 2003/12/22 10:19:26 eilers 22 * Revision 1.9 2003/12/22 10:19:26 eilers
20 * Finishing implementation of sql-backend for datebook. But I have to 23 * Finishing implementation of sql-backend for datebook. But I have to
21 * port the PIM datebook application to use it, before I could debug the 24 * port the PIM datebook application to use it, before I could debug the
22 * whole stuff. 25 * whole stuff.
23 * Thus, PIM-Database backend is finished, but highly experimental. And some 26 * Thus, PIM-Database backend is finished, but highly experimental. And some
24 * parts are still generic. For instance, the "queryByExample()" methods are 27 * parts are still generic. For instance, the "queryByExample()" methods are
25 * not (or not fully) implemented. Todo: custom-entries not stored. 28 * not (or not fully) implemented. Todo: custom-entries not stored.
26 * The big show stopper: matchRegExp() (needed by OpieSearch) needs regular 29 * The big show stopper: matchRegExp() (needed by OpieSearch) needs regular
27 * expression search in the database, which is not supported by sqlite ! 30 * expression search in the database, which is not supported by sqlite !
28 * Therefore we need either an extended sqlite or a workaround which would 31 * Therefore we need either an extended sqlite or a workaround which would
29 * be very slow and memory consuming.. 32 * be very slow and memory consuming..
30 * 33 *
31 * Revision 1.8 2003/09/22 14:31:16 eilers 34 * Revision 1.8 2003/09/22 14:31:16 eilers
32 * Added first experimental incarnation of sql-backend for addressbook. 35 * Added first experimental incarnation of sql-backend for addressbook.
33 * Some modifications to be able to compile the todo sql-backend. 36 * Some modifications to be able to compile the todo sql-backend.
34 * A lot of changes fill follow... 37 * A lot of changes fill follow...
35 * 38 *
36 * Revision 1.7 2003/08/01 12:30:16 eilers 39 * Revision 1.7 2003/08/01 12:30:16 eilers
37 * Merging changes from BRANCH_1_0 to HEAD 40 * Merging changes from BRANCH_1_0 to HEAD
38 * 41 *
39 * Revision 1.6.4.1 2003/06/30 14:34:19 eilers 42 * Revision 1.6.4.1 2003/06/30 14:34:19 eilers
40 * Patches from Zecke: 43 * Patches from Zecke:
41 * Fixing and cleaning up extraMap handling 44 * Fixing and cleaning up extraMap handling
42 * Adding d_ptr for binary compatibility in the future 45 * Adding d_ptr for binary compatibility in the future
43 * 46 *
44 * Revision 1.6 2003/04/13 18:07:10 zecke 47 * Revision 1.6 2003/04/13 18:07:10 zecke
45 * More API doc 48 * More API doc
46 * QString -> const QString& 49 * QString -> const QString&
47 * QString = 0l -> QString::null 50 * QString = 0l -> QString::null
48 * 51 *
49 * Revision 1.5 2003/02/21 23:31:52 zecke 52 * Revision 1.5 2003/02/21 23:31:52 zecke
50 * Add XML datebookresource 53 * Add XML datebookresource
51 * -clean up todoaccessxml header 54 * -clean up todoaccessxml header
52 * -implement some more stuff in the oeven tester 55 * -implement some more stuff in the oeven tester
53 * -extend DefaultFactory to not crash and to use datebook 56 * -extend DefaultFactory to not crash and to use datebook
54 * 57 *
55 * -reading of OEvents is working nicely.. saving will be added 58 * -reading of OEvents is working nicely.. saving will be added
56 * tomorrow 59 * tomorrow
57 * -fix spelling in ODateBookAcces 60 * -fix spelling in ODateBookAcces
58 * 61 *
59 * Revision 1.4 2002/10/14 15:55:18 eilers 62 * Revision 1.4 2002/10/14 15:55:18 eilers
60 * Redeactivate SQL.. ;) 63 * Redeactivate SQL.. ;)
61 * 64 *
62 * Revision 1.3 2002/10/10 17:08:58 zecke 65 * Revision 1.3 2002/10/10 17:08:58 zecke
63 * The Cache is finally in place 66 * The Cache is finally in place
64 * I tested it with my todolist and it 'works' for 10.000 todos the hits are awesome ;) 67 * I tested it with my todolist and it 'works' for 10.000 todos the hits are awesome ;)
65 * The read ahead functionality does not make sense for XMLs backends because most of the stuff is already in memory. While using readahead on SQL makes things a lot faster.... 68 * The read ahead functionality does not make sense for XMLs backends because most of the stuff is already in memory. While using readahead on SQL makes things a lot faster....
66 * I still have to fully implement read ahead 69 * I still have to fully implement read ahead
67 * This change is bic but sc 70 * This change is bic but sc
68 * 71 *
69 * Revision 1.2 2002/10/08 09:27:36 eilers 72 * Revision 1.2 2002/10/08 09:27:36 eilers
70 * Fixed libopie.pro to include the new pim-API. 73 * Fixed libopie.pro to include the new pim-API.
71 * The SQL-Stuff is currently deactivated. Otherwise everyone who wants to 74 * The SQL-Stuff is currently deactivated. Otherwise everyone who wants to
72 * compile itself would need to install libsqlite, libopiesql... 75 * compile itself would need to install libsqlite, libopiesql...
73 * Therefore, the backend currently uses XML only.. 76 * Therefore, the backend currently uses XML only..
74 * 77 *
75 * Revision 1.1 2002/10/07 17:35:01 eilers 78 * Revision 1.1 2002/10/07 17:35:01 eilers
76 * added OBackendFactory for advanced backend access 79 * added OBackendFactory for advanced backend access
77 * 80 *
78 * 81 *
79 * ===================================================================== 82 * =====================================================================
80 */ 83 */
81#ifndef OPIE_BACKENDFACTORY_H_ 84#ifndef OPIE_BACKENDFACTORY_H_
82#define OPIE_BACKENDFACTORY_H_ 85#define OPIE_BACKENDFACTORY_H_
83 86
84#include <qstring.h> 87#include <qstring.h>
85#include <qasciidict.h> 88#include <qasciidict.h>
86#include <qpe/config.h> 89#include <qpe/config.h>
87 90
88#include "otodoaccessxml.h" 91#include "otodoaccessxml.h"
89#include "ocontactaccessbackend_xml.h" 92#include "ocontactaccessbackend_xml.h"
90#include "odatebookaccessbackend_xml.h" 93#include "odatebookaccessbackend_xml.h"
91 94
92#ifdef __USE_SQL 95#ifdef __USE_SQL
93#include "otodoaccesssql.h" 96#include "otodoaccesssql.h"
94#include "ocontactaccessbackend_sql.h" 97#include "ocontactaccessbackend_sql.h"
95#include "odatebookaccessbackend_sql.h" 98#include "odatebookaccessbackend_sql.h"
96#endif 99#endif
97 100
98class OBackendPrivate; 101class OBackendPrivate;
99 102
100/** 103/**
101 * This class is our factory. It will give us the default implementations 104 * This class is our factory. It will give us the default implementations
102 * of at least Todolist, Contacts and Datebook. In the future this class will 105 * of at least Todolist, Contacts and Datebook. In the future this class will
103 * allow users to switch the backend with ( XML->SQLite ) without the need 106 * allow users to switch the backend with ( XML->SQLite ) without the need
104 * to recompile.# 107 * to recompile.#
105 * This class as the whole PIM Api is making use of templates 108 * This class as the whole PIM Api is making use of templates
106 * 109 *
107 * <pre> 110 * <pre>
108 * OTodoAccessBackend* backend = OBackEndFactory<OTodoAccessBackend>::Default("todo", QString::null ); 111 * OTodoAccessBackend* backend = OBackEndFactory<OTodoAccessBackend>::Default("todo", QString::null );
109 * backend->load(); 112 * backend->load();
110 * </pre> 113 * </pre>
111 * 114 *
112 * @author Stefan Eilers 115 * @author Stefan Eilers
113 * @version 0.1 116 * @version 0.1
114 */ 117 */
115template<class T> 118template<class T>
116class OBackendFactory 119class OBackendFactory
117{ 120{
118 public: 121 public:
119 OBackendFactory() {}; 122 OBackendFactory() {};
120 123
121 enum BACKENDS { 124 enum BACKENDS {
122 TODO, 125 TODO,
123 CONTACT, 126 CONTACT,
124 DATE 127 DATE
125 }; 128 };
126 129
127 /** 130 /**
128 * Returns a backend implementation for backendName 131 * Returns a backend implementation for backendName
129 * @param backendName the type of the backend 132 * @param backendName the type of the backend
130 * @param appName will be passed on to the backend 133 * @param appName will be passed on to the backend
131 */ 134 */
132 static T* Default( const QString backendName, const QString& appName ){ 135 static T* Default( const QString backendName, const QString& appName ){
133 136
134 // __asm__("int3"); 137 // __asm__("int3");
135 138
136 Config config( "pimaccess" ); 139 Config config( "pimaccess" );
137 config.setGroup ( backendName ); 140 config.setGroup ( backendName );
138 QString backend = config.readEntry( "usebackend" ); 141 QString backend = config.readEntry( "usebackend" );
139 142
140 qWarning("Selected backend for %s is: %s", backendName.latin1(), backend.latin1() ); 143 qWarning("Selected backend for %s is: %s", backendName.latin1(), backend.latin1() );
141 144
142 QAsciiDict<int> dict ( 3 ); 145 QAsciiDict<int> dict ( 3 );
143 dict.setAutoDelete ( TRUE ); 146 dict.setAutoDelete ( TRUE );
144 147
145 dict.insert( "todo", new int (TODO) ); 148 dict.insert( "todo", new int (TODO) );
146 dict.insert( "contact", new int (CONTACT) ); 149 dict.insert( "contact", new int (CONTACT) );
147 dict.insert( "datebook", new int(DATE) ); 150 dict.insert( "datebook", new int(DATE) );
148 151
149 int *find = dict[ backendName ]; 152 int *find = dict[ backendName ];
150 if (!find ) return 0; 153 if (!find ) return 0;
151 154
152 switch ( *find ){ 155 switch ( *find ){
153 case TODO: 156 case TODO:
154#ifdef __USE_SQL 157#ifdef __USE_SQL
155 if ( backend == "sql" ) 158 if ( backend == "sql" )
156 return (T*) new OTodoAccessBackendSQL(""); 159 return (T*) new OTodoAccessBackendSQL("");
157#else 160#else
158 if ( backend == "sql" ) 161 if ( backend == "sql" )
159 qWarning ("OBackendFactory:: sql Backend for TODO not implemented! Using XML instead!"); 162 qWarning ("OBackendFactory:: sql Backend for TODO not implemented! Using XML instead!");
160#endif 163#endif
161 164
162 return (T*) new OTodoAccessXML( appName ); 165 return (T*) new OTodoAccessXML( appName );
163 case CONTACT: 166 case CONTACT:
164#ifdef __USE_SQL 167#ifdef __USE_SQL
165 if ( backend == "sql" ) 168 if ( backend == "sql" )
166 return (T*) new OContactAccessBackend_SQL(""); 169 return (T*) new OContactAccessBackend_SQL("");
167#else 170#else
168 if ( backend == "sql" ) 171 if ( backend == "sql" )
169 qWarning ("OBackendFactory:: sql Backend for CONTACT not implemented! Using XML instead!"); 172 qWarning ("OBackendFactory:: sql Backend for CONTACT not implemented! Using XML instead!");
170#endif 173#endif
171 174
172 return (T*) new OContactAccessBackend_XML( appName ); 175 return (T*) new OContactAccessBackend_XML( appName );
173 case DATE: 176 case DATE:
174#ifdef __USE_SQL 177#ifdef __USE_SQL
175 if ( backend == "sql" ) 178 if ( backend == "sql" )
176 return (T*) new ODateBookAccessBackend_SQL(""); 179 return (T*) new ODateBookAccessBackend_SQL("");
177#else 180#else
178 if ( backend == "sql" ) 181 if ( backend == "sql" )
179 qWarning("OBackendFactory:: sql Backend for DATEBOOK not implemented! Using XML instead!"); 182 qWarning("OBackendFactory:: sql Backend for DATEBOOK not implemented! Using XML instead!");
180#endif 183#endif
181 184
182 return (T*) new ODateBookAccessBackend_XML( appName ); 185 return (T*) new ODateBookAccessBackend_XML( appName );
183 default: 186 default:
184 return NULL; 187 return NULL;
185 } 188 }
186 189
187 190
188 } 191 }
189 private: 192 private:
190 OBackendPrivate* d; 193 OBackendPrivate* d;
191}; 194};
192 195
193 196
194#endif 197#endif
diff --git a/libopie/pim/ocontact.cpp b/noncore/unsupported/libopie/pim/ocontact.cpp
index fcf3b26..fcf3b26 100644
--- a/libopie/pim/ocontact.cpp
+++ b/noncore/unsupported/libopie/pim/ocontact.cpp
diff --git a/libopie/pim/ocontact.h b/noncore/unsupported/libopie/pim/ocontact.h
index 1d46b81..1d46b81 100644
--- a/libopie/pim/ocontact.h
+++ b/noncore/unsupported/libopie/pim/ocontact.h
diff --git a/libopie/pim/ocontactaccess.cpp b/noncore/unsupported/libopie/pim/ocontactaccess.cpp
index bc359f7..63b93ee 100644
--- a/libopie/pim/ocontactaccess.cpp
+++ b/noncore/unsupported/libopie/pim/ocontactaccess.cpp
@@ -1,173 +1,176 @@
1/* 1/*
2 * Class to manage the Contacts. 2 * Class to manage the Contacts.
3 * 3 *
4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) 4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
5 * 5 *
6 * ===================================================================== 6 * =====================================================================
7 *This program is free software; you can redistribute it and/or 7 *This program is free software; you can redistribute it and/or
8 *modify it under the terms of the GNU Library General Public 8 *modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
11 * ===================================================================== 11 * =====================================================================
12 * Info: This class could just work with a change in the header-file 12 * Info: This class could just work with a change in the header-file
13 * of the Contact class ! Therefore our libopie only compiles 13 * of the Contact class ! Therefore our libopie only compiles
14 * with our version of libqpe 14 * with our version of libqpe
15 * ===================================================================== 15 * =====================================================================
16 * ToDo: XML-Backend: Automatic reload if something was changed... 16 * ToDo: XML-Backend: Automatic reload if something was changed...
17 * 17 *
18 * 18 *
19 * ===================================================================== 19 * =====================================================================
20 * Version: $Id$ 20 * Version: $Id$
21 * ===================================================================== 21 * =====================================================================
22 * History: 22 * History:
23 * $Log$ 23 * $Log$
24 * Revision 1.1 2004/11/16 21:46:07 mickeyl
25 * libopie1 goes into unsupported
26 *
24 * Revision 1.9 2004/03/02 12:14:22 alwin 27 * Revision 1.9 2004/03/02 12:14:22 alwin
25 * run the optimize_connect script 28 * run the optimize_connect script
26 * the whole cvs is tagged with "before_optimize_connect" if there are problems you 29 * the whole cvs is tagged with "before_optimize_connect" if there are problems you
27 * can check the diff (but it had compiled and run here) 30 * can check the diff (but it had compiled and run here)
28 * 31 *
29 * Revision 1.8 2003/05/08 13:55:09 tille 32 * Revision 1.8 2003/05/08 13:55:09 tille
30 * search stuff 33 * search stuff
31 * and match, toRichText & toShortText in oevent 34 * and match, toRichText & toShortText in oevent
32 * 35 *
33 * Revision 1.7 2002/11/13 14:14:51 eilers 36 * Revision 1.7 2002/11/13 14:14:51 eilers
34 * Added sorted for Contacts.. 37 * Added sorted for Contacts..
35 * 38 *
36 * Revision 1.6 2002/11/01 15:10:42 eilers 39 * Revision 1.6 2002/11/01 15:10:42 eilers
37 * Added regExp-search in database for all fields in a contact. 40 * Added regExp-search in database for all fields in a contact.
38 * 41 *
39 * Revision 1.5 2002/10/16 10:52:40 eilers 42 * Revision 1.5 2002/10/16 10:52:40 eilers
40 * Added some docu to the interface and now using the cache infrastucture by zecke.. :) 43 * Added some docu to the interface and now using the cache infrastucture by zecke.. :)
41 * 44 *
42 * Revision 1.4 2002/10/14 16:21:54 eilers 45 * Revision 1.4 2002/10/14 16:21:54 eilers
43 * Some minor interface updates 46 * Some minor interface updates
44 * 47 *
45 * Revision 1.3 2002/10/07 17:34:24 eilers 48 * Revision 1.3 2002/10/07 17:34:24 eilers
46 * added OBackendFactory for advanced backend access 49 * added OBackendFactory for advanced backend access
47 * 50 *
48 * Revision 1.2 2002/10/02 16:18:11 eilers 51 * Revision 1.2 2002/10/02 16:18:11 eilers
49 * debugged and seems to work almost perfectly .. 52 * debugged and seems to work almost perfectly ..
50 * 53 *
51 * Revision 1.1 2002/09/27 17:11:44 eilers 54 * Revision 1.1 2002/09/27 17:11:44 eilers
52 * Added API for accessing the Contact-Database ! It is compiling, but 55 * Added API for accessing the Contact-Database ! It is compiling, but
53 * please do not expect that anything is working ! 56 * please do not expect that anything is working !
54 * I will debug that stuff in the next time .. 57 * I will debug that stuff in the next time ..
55 * Please read README_COMPILE for compiling ! 58 * Please read README_COMPILE for compiling !
56 * 59 *
57 * 60 *
58 */ 61 */
59 62
60#include "ocontactaccess.h" 63#include "ocontactaccess.h"
61#include "obackendfactory.h" 64#include "obackendfactory.h"
62 65
63#include <qasciidict.h> 66#include <qasciidict.h>
64#include <qdatetime.h> 67#include <qdatetime.h>
65#include <qfile.h> 68#include <qfile.h>
66#include <qregexp.h> 69#include <qregexp.h>
67#include <qlist.h> 70#include <qlist.h>
68#include <qcopchannel_qws.h> 71#include <qcopchannel_qws.h>
69 72
70//#include <qpe/qcopenvelope_qws.h> 73//#include <qpe/qcopenvelope_qws.h>
71#include <qpe/global.h> 74#include <qpe/global.h>
72 75
73#include <errno.h> 76#include <errno.h>
74#include <fcntl.h> 77#include <fcntl.h>
75#include <unistd.h> 78#include <unistd.h>
76#include <stdlib.h> 79#include <stdlib.h>
77 80
78#include "ocontactaccessbackend_xml.h" 81#include "ocontactaccessbackend_xml.h"
79 82
80 83
81OContactAccess::OContactAccess ( const QString appname, const QString , 84OContactAccess::OContactAccess ( const QString appname, const QString ,
82 OContactAccessBackend* end, bool autosync ): 85 OContactAccessBackend* end, bool autosync ):
83 OPimAccessTemplate<OContact>( end ) 86 OPimAccessTemplate<OContact>( end )
84{ 87{
85 /* take care of the backend. If there is no one defined, we 88 /* take care of the backend. If there is no one defined, we
86 * will use the XML-Backend as default (until we have a cute SQL-Backend..). 89 * will use the XML-Backend as default (until we have a cute SQL-Backend..).
87 */ 90 */
88 if( end == 0 ) { 91 if( end == 0 ) {
89 qWarning ("Using BackendFactory !"); 92 qWarning ("Using BackendFactory !");
90 end = OBackendFactory<OContactAccessBackend>::Default( "contact", appname ); 93 end = OBackendFactory<OContactAccessBackend>::Default( "contact", appname );
91 } 94 }
92 // Set backend locally and in template 95 // Set backend locally and in template
93 m_backEnd = end; 96 m_backEnd = end;
94 OPimAccessTemplate<OContact>::setBackEnd (end); 97 OPimAccessTemplate<OContact>::setBackEnd (end);
95 98
96 99
97 /* Connect signal of external db change to function */ 100 /* Connect signal of external db change to function */
98 QCopChannel *dbchannel = new QCopChannel( "QPE/PIM", this ); 101 QCopChannel *dbchannel = new QCopChannel( "QPE/PIM", this );
99 connect( dbchannel, SIGNAL(received(const QCString&,const QByteArray&)), 102 connect( dbchannel, SIGNAL(received(const QCString&,const QByteArray&)),
100 this, SLOT(copMessage(const QCString&,const QByteArray&)) ); 103 this, SLOT(copMessage(const QCString&,const QByteArray&)) );
101 if ( autosync ){ 104 if ( autosync ){
102 QCopChannel *syncchannel = new QCopChannel( "QPE/Sync", this ); 105 QCopChannel *syncchannel = new QCopChannel( "QPE/Sync", this );
103 connect( syncchannel, SIGNAL(received(const QCString&,const QByteArray&)), 106 connect( syncchannel, SIGNAL(received(const QCString&,const QByteArray&)),
104 this, SLOT(copMessage(const QCString&,const QByteArray&)) ); 107 this, SLOT(copMessage(const QCString&,const QByteArray&)) );
105 } 108 }
106 109
107 110
108} 111}
109OContactAccess::~OContactAccess () 112OContactAccess::~OContactAccess ()
110{ 113{
111 /* The user may forget to save the changed database, therefore try to 114 /* The user may forget to save the changed database, therefore try to
112 * do it for him.. 115 * do it for him..
113 */ 116 */
114 save(); 117 save();
115 // delete m_backEnd; is done by template.. 118 // delete m_backEnd; is done by template..
116} 119}
117 120
118 121
119bool OContactAccess::save () 122bool OContactAccess::save ()
120{ 123{
121 /* If the database was changed externally, we could not save the 124 /* If the database was changed externally, we could not save the
122 * Data. This will remove added items which is unacceptable ! 125 * Data. This will remove added items which is unacceptable !
123 * Therefore: Reload database and merge the data... 126 * Therefore: Reload database and merge the data...
124 */ 127 */
125 if ( OPimAccessTemplate<OContact>::wasChangedExternally() ) 128 if ( OPimAccessTemplate<OContact>::wasChangedExternally() )
126 reload(); 129 reload();
127 130
128 bool status = OPimAccessTemplate<OContact>::save(); 131 bool status = OPimAccessTemplate<OContact>::save();
129 if ( !status ) return false; 132 if ( !status ) return false;
130 133
131 /* Now tell everyone that new data is available. 134 /* Now tell everyone that new data is available.
132 */ 135 */
133 QCopEnvelope e( "QPE/PIM", "addressbookUpdated()" ); 136 QCopEnvelope e( "QPE/PIM", "addressbookUpdated()" );
134 137
135 return true; 138 return true;
136} 139}
137 140
138const uint OContactAccess::querySettings() 141const uint OContactAccess::querySettings()
139{ 142{
140 return ( m_backEnd->querySettings() ); 143 return ( m_backEnd->querySettings() );
141} 144}
142 145
143bool OContactAccess::hasQuerySettings ( int querySettings ) const 146bool OContactAccess::hasQuerySettings ( int querySettings ) const
144{ 147{
145 return ( m_backEnd->hasQuerySettings ( querySettings ) ); 148 return ( m_backEnd->hasQuerySettings ( querySettings ) );
146} 149}
147ORecordList<OContact> OContactAccess::sorted( bool ascending, int sortOrder, int sortFilter, int cat ) const 150ORecordList<OContact> OContactAccess::sorted( bool ascending, int sortOrder, int sortFilter, int cat ) const
148{ 151{
149 QArray<int> matchingContacts = m_backEnd -> sorted( ascending, sortOrder, sortFilter, cat ); 152 QArray<int> matchingContacts = m_backEnd -> sorted( ascending, sortOrder, sortFilter, cat );
150 return ( ORecordList<OContact>(matchingContacts, this) ); 153 return ( ORecordList<OContact>(matchingContacts, this) );
151} 154}
152 155
153 156
154bool OContactAccess::wasChangedExternally()const 157bool OContactAccess::wasChangedExternally()const
155{ 158{
156 return ( m_backEnd->wasChangedExternally() ); 159 return ( m_backEnd->wasChangedExternally() );
157} 160}
158 161
159 162
160void OContactAccess::copMessage( const QCString &msg, const QByteArray & ) 163void OContactAccess::copMessage( const QCString &msg, const QByteArray & )
161{ 164{
162 if ( msg == "addressbookUpdated()" ){ 165 if ( msg == "addressbookUpdated()" ){
163 qWarning ("OContactAccess: Received addressbokUpdated()"); 166 qWarning ("OContactAccess: Received addressbokUpdated()");
164 emit signalChanged ( this ); 167 emit signalChanged ( this );
165 } else if ( msg == "flush()" ) { 168 } else if ( msg == "flush()" ) {
166 qWarning ("OContactAccess: Received flush()"); 169 qWarning ("OContactAccess: Received flush()");
167 save (); 170 save ();
168 } else if ( msg == "reload()" ) { 171 } else if ( msg == "reload()" ) {
169 qWarning ("OContactAccess: Received reload()"); 172 qWarning ("OContactAccess: Received reload()");
170 reload (); 173 reload ();
171 emit signalChanged ( this ); 174 emit signalChanged ( this );
172 } 175 }
173} 176}
diff --git a/libopie/pim/ocontactaccess.h b/noncore/unsupported/libopie/pim/ocontactaccess.h
index bd6da40..a7a099f 100644
--- a/libopie/pim/ocontactaccess.h
+++ b/noncore/unsupported/libopie/pim/ocontactaccess.h
@@ -1,193 +1,196 @@
1/* 1/*
2 * Class to manage the Contacts. 2 * Class to manage the Contacts.
3 * 3 *
4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) 4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
5 * Copyright (c) 2002 by Holger Freyther (zecke@handhelds.org) 5 * Copyright (c) 2002 by Holger Freyther (zecke@handhelds.org)
6 * 6 *
7 * ===================================================================== 7 * =====================================================================
8 *This program is free software; you can redistribute it and/or 8 *This program is free software; you can redistribute it and/or
9 *modify it under the terms of the GNU Library General Public 9 *modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; 10 * License as published by the Free Software Foundation;
11 * either version 2 of the License, or (at your option) any later 11 * either version 2 of the License, or (at your option) any later
12 * version. 12 * version.
13 * ===================================================================== 13 * =====================================================================
14 * ToDo: Define enum for query settings 14 * ToDo: Define enum for query settings
15 * ===================================================================== 15 * =====================================================================
16 * Version: $Id$ 16 * Version: $Id$
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.1 2004/11/16 21:46:07 mickeyl
21 * libopie1 goes into unsupported
22 *
20 * Revision 1.10 2003/12/22 10:19:26 eilers 23 * Revision 1.10 2003/12/22 10:19:26 eilers
21 * Finishing implementation of sql-backend for datebook. But I have to 24 * Finishing implementation of sql-backend for datebook. But I have to
22 * port the PIM datebook application to use it, before I could debug the 25 * port the PIM datebook application to use it, before I could debug the
23 * whole stuff. 26 * whole stuff.
24 * Thus, PIM-Database backend is finished, but highly experimental. And some 27 * Thus, PIM-Database backend is finished, but highly experimental. And some
25 * parts are still generic. For instance, the "queryByExample()" methods are 28 * parts are still generic. For instance, the "queryByExample()" methods are
26 * not (or not fully) implemented. Todo: custom-entries not stored. 29 * not (or not fully) implemented. Todo: custom-entries not stored.
27 * The big show stopper: matchRegExp() (needed by OpieSearch) needs regular 30 * The big show stopper: matchRegExp() (needed by OpieSearch) needs regular
28 * expression search in the database, which is not supported by sqlite ! 31 * expression search in the database, which is not supported by sqlite !
29 * Therefore we need either an extended sqlite or a workaround which would 32 * Therefore we need either an extended sqlite or a workaround which would
30 * be very slow and memory consuming.. 33 * be very slow and memory consuming..
31 * 34 *
32 * Revision 1.9 2003/08/01 12:30:16 eilers 35 * Revision 1.9 2003/08/01 12:30:16 eilers
33 * Merging changes from BRANCH_1_0 to HEAD 36 * Merging changes from BRANCH_1_0 to HEAD
34 * 37 *
35 * Revision 1.8.2.1 2003/06/30 14:34:19 eilers 38 * Revision 1.8.2.1 2003/06/30 14:34:19 eilers
36 * Patches from Zecke: 39 * Patches from Zecke:
37 * Fixing and cleaning up extraMap handling 40 * Fixing and cleaning up extraMap handling
38 * Adding d_ptr for binary compatibility in the future 41 * Adding d_ptr for binary compatibility in the future
39 * 42 *
40 * Revision 1.8 2003/05/08 13:55:09 tille 43 * Revision 1.8 2003/05/08 13:55:09 tille
41 * search stuff 44 * search stuff
42 * and match, toRichText & toShortText in oevent 45 * and match, toRichText & toShortText in oevent
43 * 46 *
44 * Revision 1.7 2003/04/13 18:07:10 zecke 47 * Revision 1.7 2003/04/13 18:07:10 zecke
45 * More API doc 48 * More API doc
46 * QString -> const QString& 49 * QString -> const QString&
47 * QString = 0l -> QString::null 50 * QString = 0l -> QString::null
48 * 51 *
49 * Revision 1.6 2003/01/02 14:27:12 eilers 52 * Revision 1.6 2003/01/02 14:27:12 eilers
50 * Improved query by example: Search by date is possible.. First step 53 * Improved query by example: Search by date is possible.. First step
51 * for a today plugin for birthdays.. 54 * for a today plugin for birthdays..
52 * 55 *
53 * Revision 1.5 2002/11/13 14:14:51 eilers 56 * Revision 1.5 2002/11/13 14:14:51 eilers
54 * Added sorted for Contacts.. 57 * Added sorted for Contacts..
55 * 58 *
56 * Revision 1.4 2002/11/01 15:10:42 eilers 59 * Revision 1.4 2002/11/01 15:10:42 eilers
57 * Added regExp-search in database for all fields in a contact. 60 * Added regExp-search in database for all fields in a contact.
58 * 61 *
59 * Revision 1.3 2002/10/16 10:52:40 eilers 62 * Revision 1.3 2002/10/16 10:52:40 eilers
60 * Added some docu to the interface and now using the cache infrastucture by zecke.. :) 63 * Added some docu to the interface and now using the cache infrastucture by zecke.. :)
61 * 64 *
62 * Revision 1.2 2002/10/14 16:21:54 eilers 65 * Revision 1.2 2002/10/14 16:21:54 eilers
63 * Some minor interface updates 66 * Some minor interface updates
64 * 67 *
65 * Revision 1.1 2002/09/27 17:11:44 eilers 68 * Revision 1.1 2002/09/27 17:11:44 eilers
66 * Added API for accessing the Contact-Database ! It is compiling, but 69 * Added API for accessing the Contact-Database ! It is compiling, but
67 * please do not expect that anything is working ! 70 * please do not expect that anything is working !
68 * I will debug that stuff in the next time .. 71 * I will debug that stuff in the next time ..
69 * Please read README_COMPILE for compiling ! 72 * Please read README_COMPILE for compiling !
70 * 73 *
71 * ===================================================================== 74 * =====================================================================
72 */ 75 */
73#ifndef _OCONTACTACCESS_H 76#ifndef _OCONTACTACCESS_H
74#define _OCONTACTACCESS_H 77#define _OCONTACTACCESS_H
75 78
76#include <qobject.h> 79#include <qobject.h>
77 80
78#include <qpe/qcopenvelope_qws.h> 81#include <qpe/qcopenvelope_qws.h>
79 82
80#include <qvaluelist.h> 83#include <qvaluelist.h>
81#include <qfileinfo.h> 84#include <qfileinfo.h>
82 85
83#include "ocontact.h" 86#include "ocontact.h"
84#include "ocontactaccessbackend.h" 87#include "ocontactaccessbackend.h"
85#include "opimaccesstemplate.h" 88#include "opimaccesstemplate.h"
86 89
87/** 90/**
88 * Class to access the contacts database. 91 * Class to access the contacts database.
89 * This is just a frontend for the real database handling which is 92 * This is just a frontend for the real database handling which is
90 * done by the backend. 93 * done by the backend.
91 * This class is used to access the Contacts on a system. This class as any OPIE PIM 94 * This class is used to access the Contacts on a system. This class as any OPIE PIM
92 * class is backend independent. 95 * class is backend independent.
93 * @author Stefan Eilers, Holger Freyther 96 * @author Stefan Eilers, Holger Freyther
94 * @see OPimAccessTemplate 97 * @see OPimAccessTemplate
95 */ 98 */
96class OContactAccess: public QObject, public OPimAccessTemplate<OContact> 99class OContactAccess: public QObject, public OPimAccessTemplate<OContact>
97{ 100{
98 Q_OBJECT 101 Q_OBJECT
99 102
100 public: 103 public:
101 /** 104 /**
102 * Create Database with contacts (addressbook). 105 * Create Database with contacts (addressbook).
103 * @param appname Name of application which wants access to the database 106 * @param appname Name of application which wants access to the database
104 * (i.e. "todolist") 107 * (i.e. "todolist")
105 * @param filename The name of the database file. If not set, the default one 108 * @param filename The name of the database file. If not set, the default one
106 * is used. 109 * is used.
107 * @param backend Pointer to an alternative Backend. If not set, we will use 110 * @param backend Pointer to an alternative Backend. If not set, we will use
108 * the default backend. 111 * the default backend.
109 * @param handlesync If <b>true</b> the database stores the current state 112 * @param handlesync If <b>true</b> the database stores the current state
110 * automatically if it receives the signals <i>flush()</i> and <i>reload()</i> 113 * automatically if it receives the signals <i>flush()</i> and <i>reload()</i>
111 * which are used before and after synchronisation. If the application wants 114 * which are used before and after synchronisation. If the application wants
112 * to react itself, it should be disabled by setting it to <b>false</b> 115 * to react itself, it should be disabled by setting it to <b>false</b>
113 * @see OContactAccessBackend 116 * @see OContactAccessBackend
114 */ 117 */
115 OContactAccess (const QString appname, const QString filename = 0l, 118 OContactAccess (const QString appname, const QString filename = 0l,
116 OContactAccessBackend* backend = 0l, bool handlesync = true); 119 OContactAccessBackend* backend = 0l, bool handlesync = true);
117 ~OContactAccess (); 120 ~OContactAccess ();
118 121
119 /** Constants for query. 122 /** Constants for query.
120 * Use this constants to set the query parameters. 123 * Use this constants to set the query parameters.
121 * Note: <i>query_IgnoreCase</i> just make sense with one of the other attributes ! 124 * Note: <i>query_IgnoreCase</i> just make sense with one of the other attributes !
122 * @see queryByExample() 125 * @see queryByExample()
123 */ 126 */
124 enum QuerySettings { 127 enum QuerySettings {
125 WildCards = 0x0001, 128 WildCards = 0x0001,
126 IgnoreCase = 0x0002, 129 IgnoreCase = 0x0002,
127 RegExp = 0x0004, 130 RegExp = 0x0004,
128 ExactMatch = 0x0008, 131 ExactMatch = 0x0008,
129 MatchOne = 0x0010, // Only one Entry must match 132 MatchOne = 0x0010, // Only one Entry must match
130 DateDiff = 0x0020, // Find all entries from today until given date 133 DateDiff = 0x0020, // Find all entries from today until given date
131 DateYear = 0x0040, // The year matches 134 DateYear = 0x0040, // The year matches
132 DateMonth = 0x0080, // The month matches 135 DateMonth = 0x0080, // The month matches
133 DateDay = 0x0100, // The day matches 136 DateDay = 0x0100, // The day matches
134 }; 137 };
135 138
136 139
137 /** Return all Contacts in a sorted manner. 140 /** Return all Contacts in a sorted manner.
138 * @param ascending true: Sorted in acending order. 141 * @param ascending true: Sorted in acending order.
139 * @param sortOrder Currently not implemented. Just defined to stay compatible to otodoaccess 142 * @param sortOrder Currently not implemented. Just defined to stay compatible to otodoaccess
140 * @param sortFilter Currently not implemented. Just defined to stay compatible to otodoaccess 143 * @param sortFilter Currently not implemented. Just defined to stay compatible to otodoaccess
141 * @param cat Currently not implemented. Just defined to stay compatible to otodoaccess 144 * @param cat Currently not implemented. Just defined to stay compatible to otodoaccess
142 */ 145 */
143 List sorted( bool ascending, int sortOrder, int sortFilter, int cat ) const; 146 List sorted( bool ascending, int sortOrder, int sortFilter, int cat ) const;
144 147
145 /** Return all possible settings. 148 /** Return all possible settings.
146 * @return All settings provided by the current backend 149 * @return All settings provided by the current backend
147 * (i.e.: query_WildCards & query_IgnoreCase) 150 * (i.e.: query_WildCards & query_IgnoreCase)
148 */ 151 */
149 const uint querySettings(); 152 const uint querySettings();
150 153
151 /** Check whether settings are correct. 154 /** Check whether settings are correct.
152 * @return <i>true</i> if the given settings are correct and possible. 155 * @return <i>true</i> if the given settings are correct and possible.
153 */ 156 */
154 bool hasQuerySettings ( int querySettings ) const; 157 bool hasQuerySettings ( int querySettings ) const;
155 158
156 /** 159 /**
157 * if the resource was changed externally. 160 * if the resource was changed externally.
158 * You should use the signal instead of polling possible changes ! 161 * You should use the signal instead of polling possible changes !
159 */ 162 */
160 bool wasChangedExternally()const; 163 bool wasChangedExternally()const;
161 164
162 165
163 /** Save contacts database. 166 /** Save contacts database.
164 * Save is more a "commit". After calling this function, all changes are public available. 167 * Save is more a "commit". After calling this function, all changes are public available.
165 * @return true if successful 168 * @return true if successful
166 */ 169 */
167 bool save(); 170 bool save();
168 171
169 signals: 172 signals:
170 /* Signal is emitted if the database was changed. Therefore 173 /* Signal is emitted if the database was changed. Therefore
171 * we may need to reload to stay consistent. 174 * we may need to reload to stay consistent.
172 * @param which Pointer to the database who created this event. This pointer 175 * @param which Pointer to the database who created this event. This pointer
173 * is useful if an application has to handle multiple databases at the same time. 176 * is useful if an application has to handle multiple databases at the same time.
174 * @see reload() 177 * @see reload()
175 */ 178 */
176 void signalChanged ( const OContactAccess *which ); 179 void signalChanged ( const OContactAccess *which );
177 180
178 181
179 private: 182 private:
180 // class OContactAccessPrivate; 183 // class OContactAccessPrivate;
181 // OContactAccessPrivate* d; 184 // OContactAccessPrivate* d;
182 OContactAccessBackend *m_backEnd; 185 OContactAccessBackend *m_backEnd;
183 bool m_loading:1; 186 bool m_loading:1;
184 187
185 private slots: 188 private slots:
186 void copMessage( const QCString &msg, const QByteArray &data ); 189 void copMessage( const QCString &msg, const QByteArray &data );
187 190
188 private: 191 private:
189 class Private; 192 class Private;
190 Private *d; 193 Private *d;
191 194
192}; 195};
193#endif 196#endif
diff --git a/libopie/pim/ocontactaccessbackend.h b/noncore/unsupported/libopie/pim/ocontactaccessbackend.h
index 0eac6dc..cfeeff2 100644
--- a/libopie/pim/ocontactaccessbackend.h
+++ b/noncore/unsupported/libopie/pim/ocontactaccessbackend.h
@@ -1,128 +1,131 @@
1/** 1/**
2 * The class responsible for managing a backend. 2 * The class responsible for managing a backend.
3 * The implementation of this abstract class contains 3 * The implementation of this abstract class contains
4 * the complete database handling. 4 * the complete database handling.
5 * 5 *
6 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) 6 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
7 * Copyright (c) 2002 by Holger Freyther (zecke@handhelds.org) 7 * Copyright (c) 2002 by Holger Freyther (zecke@handhelds.org)
8 * 8 *
9 * ===================================================================== 9 * =====================================================================
10 *This program is free software; you can redistribute it and/or 10 *This program is free software; you can redistribute it and/or
11 *modify it under the terms of the GNU Library General Public 11 *modify it under the terms of the GNU Library General Public
12 * License as published by the Free Software Foundation; 12 * License as published by the Free Software Foundation;
13 * either version 2 of the License, or (at your option) any later 13 * either version 2 of the License, or (at your option) any later
14 * version. 14 * version.
15 * ===================================================================== 15 * =====================================================================
16 * ToDo: Define enum for query settings 16 * ToDo: Define enum for query settings
17 * ===================================================================== 17 * =====================================================================
18 * Version: $Id$ 18 * Version: $Id$
19 * ===================================================================== 19 * =====================================================================
20 * History: 20 * History:
21 * $Log$ 21 * $Log$
22 * Revision 1.1 2004/11/16 21:46:07 mickeyl
23 * libopie1 goes into unsupported
24 *
22 * Revision 1.7 2004/02/19 02:05:37 zecke 25 * Revision 1.7 2004/02/19 02:05:37 zecke
23 * Add notes for API fixes and BC stuff 26 * Add notes for API fixes and BC stuff
24 * 27 *
25 * Revision 1.6 2003/08/01 12:30:16 eilers 28 * Revision 1.6 2003/08/01 12:30:16 eilers
26 * Merging changes from BRANCH_1_0 to HEAD 29 * Merging changes from BRANCH_1_0 to HEAD
27 * 30 *
28 * Revision 1.5.4.1 2003/06/30 14:34:19 eilers 31 * Revision 1.5.4.1 2003/06/30 14:34:19 eilers
29 * Patches from Zecke: 32 * Patches from Zecke:
30 * Fixing and cleaning up extraMap handling 33 * Fixing and cleaning up extraMap handling
31 * Adding d_ptr for binary compatibility in the future 34 * Adding d_ptr for binary compatibility in the future
32 * 35 *
33 * Revision 1.5 2003/04/13 18:07:10 zecke 36 * Revision 1.5 2003/04/13 18:07:10 zecke
34 * More API doc 37 * More API doc
35 * QString -> const QString& 38 * QString -> const QString&
36 * QString = 0l -> QString::null 39 * QString = 0l -> QString::null
37 * 40 *
38 * Revision 1.4 2002/11/13 14:14:51 eilers 41 * Revision 1.4 2002/11/13 14:14:51 eilers
39 * Added sorted for Contacts.. 42 * Added sorted for Contacts..
40 * 43 *
41 * Revision 1.3 2002/11/01 15:10:42 eilers 44 * Revision 1.3 2002/11/01 15:10:42 eilers
42 * Added regExp-search in database for all fields in a contact. 45 * Added regExp-search in database for all fields in a contact.
43 * 46 *
44 * Revision 1.2 2002/10/07 17:34:24 eilers 47 * Revision 1.2 2002/10/07 17:34:24 eilers
45 * added OBackendFactory for advanced backend access 48 * added OBackendFactory for advanced backend access
46 * 49 *
47 * Revision 1.1 2002/09/27 17:11:44 eilers 50 * Revision 1.1 2002/09/27 17:11:44 eilers
48 * Added API for accessing the Contact-Database ! It is compiling, but 51 * Added API for accessing the Contact-Database ! It is compiling, but
49 * please do not expect that anything is working ! 52 * please do not expect that anything is working !
50 * I will debug that stuff in the next time .. 53 * I will debug that stuff in the next time ..
51 * Please read README_COMPILE for compiling ! 54 * Please read README_COMPILE for compiling !
52 * 55 *
53 * ===================================================================== 56 * =====================================================================
54 * 57 *
55 */ 58 */
56 59
57#ifndef _OCONTACTACCESSBACKEND_H_ 60#ifndef _OCONTACTACCESSBACKEND_H_
58#define _OCONTACTACCESSBACKEND_H_ 61#define _OCONTACTACCESSBACKEND_H_
59 62
60#include "ocontact.h" 63#include "ocontact.h"
61#include "opimaccessbackend.h" 64#include "opimaccessbackend.h"
62 65
63#include <qregexp.h> 66#include <qregexp.h>
64 67
65/** 68/**
66 * This class represents the interface of all Contact Backends. 69 * This class represents the interface of all Contact Backends.
67 * Derivates of this class will be used to access the contacts. 70 * Derivates of this class will be used to access the contacts.
68 * As implementation currently XML and vCard exist. This class needs to be implemented 71 * As implementation currently XML and vCard exist. This class needs to be implemented
69 * if you want to provide your own storage. 72 * if you want to provide your own storage.
70 * In all queries a list of uids is passed on instead of loading the actual record! 73 * In all queries a list of uids is passed on instead of loading the actual record!
71 * 74 *
72 * @see OContactAccessBackend_VCard 75 * @see OContactAccessBackend_VCard
73 * @see OContactAccessBackend_XML 76 * @see OContactAccessBackend_XML
74 */ 77 */
75class OContactAccessBackend: public OPimAccessBackend<OContact> { 78class OContactAccessBackend: public OPimAccessBackend<OContact> {
76 public: 79 public:
77 /** 80 /**
78 * @todo make non line in regard to BC guide of KDE 81 * @todo make non line in regard to BC guide of KDE
79 */ 82 */
80 OContactAccessBackend() {} 83 OContactAccessBackend() {}
81 /** 84 /**
82 * @todo make non inline in regard to the BC guide of KDE 85 * @todo make non inline in regard to the BC guide of KDE
83 */ 86 */
84 virtual ~OContactAccessBackend() {} 87 virtual ~OContactAccessBackend() {}
85 88
86 89
87 /** 90 /**
88 * Return if database was changed externally. 91 * Return if database was changed externally.
89 * This may just make sense on file based databases like a XML-File. 92 * This may just make sense on file based databases like a XML-File.
90 * It is used to prevent to overwrite the current database content 93 * It is used to prevent to overwrite the current database content
91 * if the file was already changed by something else ! 94 * if the file was already changed by something else !
92 * If this happens, we have to reload before save our data. 95 * If this happens, we have to reload before save our data.
93 * If we use real databases, this should be handled by the database 96 * If we use real databases, this should be handled by the database
94 * management system themselve, therefore this function should always return false in 97 * management system themselve, therefore this function should always return false in
95 * this case. It is not our problem to handle this conflict ... 98 * this case. It is not our problem to handle this conflict ...
96 * @return <i>true</i> if the database was changed and if save without reload will 99 * @return <i>true</i> if the database was changed and if save without reload will
97 * be dangerous. <i>false</i> if the database was not changed or it is save to write 100 * be dangerous. <i>false</i> if the database was not changed or it is save to write
98 * in this situation. 101 * in this situation.
99 */ 102 */
100 virtual bool wasChangedExternally() = 0; 103 virtual bool wasChangedExternally() = 0;
101 104
102 virtual QArray<int> matchRegexp( const QRegExp &r ) const = 0; 105 virtual QArray<int> matchRegexp( const QRegExp &r ) const = 0;
103 106
104 /** 107 /**
105 * Return all possible settings. 108 * Return all possible settings.
106 * @return All settings provided by the current backend 109 * @return All settings provided by the current backend
107 * (i.e.: query_WildCards & query_IgnoreCase) 110 * (i.e.: query_WildCards & query_IgnoreCase)
108 */ 111 */
109 virtual const uint querySettings() = 0; 112 virtual const uint querySettings() = 0;
110 113
111 /** 114 /**
112 * Check whether settings are correct. 115 * Check whether settings are correct.
113 * @return <i>true</i> if the given settings are correct and possible. 116 * @return <i>true</i> if the given settings are correct and possible.
114 */ 117 */
115 virtual bool hasQuerySettings (uint querySettings) const = 0; 118 virtual bool hasQuerySettings (uint querySettings) const = 0;
116 119
117 /** 120 /**
118 * FIXME!!! 121 * FIXME!!!
119 * Returns a sorted list of records either ascendinf or descending for a giving criteria and category 122 * Returns a sorted list of records either ascendinf or descending for a giving criteria and category
120 */ 123 */
121 virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0; 124 virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0;
122 125
123 126
124private: 127private:
125 class Private; 128 class Private;
126 Private *d; 129 Private *d;
127}; 130};
128#endif 131#endif
diff --git a/libopie/pim/ocontactaccessbackend_sql.cpp b/noncore/unsupported/libopie/pim/ocontactaccessbackend_sql.cpp
index d20df56..669483d 100644
--- a/libopie/pim/ocontactaccessbackend_sql.cpp
+++ b/noncore/unsupported/libopie/pim/ocontactaccessbackend_sql.cpp
@@ -1,208 +1,211 @@
1/* 1/*
2 * SQL Backend for the OPIE-Contact Database. 2 * SQL Backend for the OPIE-Contact Database.
3 * 3 *
4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) 4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
5 * 5 *
6 * ===================================================================== 6 * =====================================================================
7 *This program is free software; you can redistribute it and/or 7 *This program is free software; you can redistribute it and/or
8 *modify it under the terms of the GNU Library General Public 8 *modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
11 * ===================================================================== 11 * =====================================================================
12 * ===================================================================== 12 * =====================================================================
13 * Version: $Id$ 13 * Version: $Id$
14 * ===================================================================== 14 * =====================================================================
15 * History: 15 * History:
16 * $Log$ 16 * $Log$
17 * Revision 1.1 2004/11/16 21:46:07 mickeyl
18 * libopie1 goes into unsupported
19 *
17 * Revision 1.5 2004/03/14 13:50:35 alwin 20 * Revision 1.5 2004/03/14 13:50:35 alwin
18 * namespace correction 21 * namespace correction
19 * 22 *
20 * Revision 1.4 2003/12/22 10:19:26 eilers 23 * Revision 1.4 2003/12/22 10:19:26 eilers
21 * Finishing implementation of sql-backend for datebook. But I have to 24 * Finishing implementation of sql-backend for datebook. But I have to
22 * port the PIM datebook application to use it, before I could debug the 25 * port the PIM datebook application to use it, before I could debug the
23 * whole stuff. 26 * whole stuff.
24 * Thus, PIM-Database backend is finished, but highly experimental. And some 27 * Thus, PIM-Database backend is finished, but highly experimental. And some
25 * parts are still generic. For instance, the "queryByExample()" methods are 28 * parts are still generic. For instance, the "queryByExample()" methods are
26 * not (or not fully) implemented. Todo: custom-entries not stored. 29 * not (or not fully) implemented. Todo: custom-entries not stored.
27 * The big show stopper: matchRegExp() (needed by OpieSearch) needs regular 30 * The big show stopper: matchRegExp() (needed by OpieSearch) needs regular
28 * expression search in the database, which is not supported by sqlite ! 31 * expression search in the database, which is not supported by sqlite !
29 * Therefore we need either an extended sqlite or a workaround which would 32 * Therefore we need either an extended sqlite or a workaround which would
30 * be very slow and memory consuming.. 33 * be very slow and memory consuming..
31 * 34 *
32 * Revision 1.3 2003/12/08 15:18:10 eilers 35 * Revision 1.3 2003/12/08 15:18:10 eilers
33 * Committing unfinished sql implementation before merging to libopie2 starts.. 36 * Committing unfinished sql implementation before merging to libopie2 starts..
34 * 37 *
35 * Revision 1.2 2003/09/29 07:44:26 eilers 38 * Revision 1.2 2003/09/29 07:44:26 eilers
36 * Improvement of PIM-SQL Databases, but search queries are still limited. 39 * Improvement of PIM-SQL Databases, but search queries are still limited.
37 * Addressbook: Changed table layout. Now, we just need 1/3 of disk-space. 40 * Addressbook: Changed table layout. Now, we just need 1/3 of disk-space.
38 * Todo: Started to add new attributes. Some type conversions missing. 41 * Todo: Started to add new attributes. Some type conversions missing.
39 * 42 *
40 * Revision 1.1 2003/09/22 14:31:16 eilers 43 * Revision 1.1 2003/09/22 14:31:16 eilers
41 * Added first experimental incarnation of sql-backend for addressbook. 44 * Added first experimental incarnation of sql-backend for addressbook.
42 * Some modifications to be able to compile the todo sql-backend. 45 * Some modifications to be able to compile the todo sql-backend.
43 * A lot of changes fill follow... 46 * A lot of changes fill follow...
44 * 47 *
45 */ 48 */
46 49
47#include "ocontactaccessbackend_sql.h" 50#include "ocontactaccessbackend_sql.h"
48 51
49#include <qarray.h> 52#include <qarray.h>
50#include <qdatetime.h> 53#include <qdatetime.h>
51#include <qstringlist.h> 54#include <qstringlist.h>
52 55
53#include <qpe/global.h> 56#include <qpe/global.h>
54#include <qpe/recordfields.h> 57#include <qpe/recordfields.h>
55 58
56#include <opie/ocontactfields.h> 59#include <opie/ocontactfields.h>
57#include <opie/oconversion.h> 60#include <opie/oconversion.h>
58#include <opie2/osqldriver.h> 61#include <opie2/osqldriver.h>
59#include <opie2/osqlresult.h> 62#include <opie2/osqlresult.h>
60#include <opie2/osqlmanager.h> 63#include <opie2/osqlmanager.h>
61#include <opie2/osqlquery.h> 64#include <opie2/osqlquery.h>
62 65
63using namespace Opie::DB; 66using namespace Opie::DB;
64 67
65 68
66// If defined, we use a horizontal table ( uid, attr1, attr2, attr3, ..., attrn ) instead 69// If defined, we use a horizontal table ( uid, attr1, attr2, attr3, ..., attrn ) instead
67// vertical like "uid, type, value". 70// vertical like "uid, type, value".
68// DON'T DEACTIVATE THIS DEFINE IN PRODUCTIVE ENVIRONMENTS !! 71// DON'T DEACTIVATE THIS DEFINE IN PRODUCTIVE ENVIRONMENTS !!
69#define __STORE_HORIZONTAL_ 72#define __STORE_HORIZONTAL_
70 73
71// Distinct loading is not very fast. If I expect that every person has just 74// Distinct loading is not very fast. If I expect that every person has just
72// one (and always one) 'Last Name', I can request all uid's for existing lastnames, 75// one (and always one) 'Last Name', I can request all uid's for existing lastnames,
73// which is faster.. 76// which is faster..
74// But this may not be true for all entries, like company contacts.. 77// But this may not be true for all entries, like company contacts..
75// The current AddressBook application handles this problem, but other may not.. (eilers) 78// The current AddressBook application handles this problem, but other may not.. (eilers)
76#define __USE_SUPERFAST_LOADQUERY 79#define __USE_SUPERFAST_LOADQUERY
77 80
78 81
79/* 82/*
80 * Implementation of used query types 83 * Implementation of used query types
81 * CREATE query 84 * CREATE query
82 * LOAD query 85 * LOAD query
83 * INSERT 86 * INSERT
84 * REMOVE 87 * REMOVE
85 * CLEAR 88 * CLEAR
86 */ 89 */
87namespace { 90namespace {
88 /** 91 /**
89 * CreateQuery for the Todolist Table 92 * CreateQuery for the Todolist Table
90 */ 93 */
91 class CreateQuery : public OSQLQuery { 94 class CreateQuery : public OSQLQuery {
92 public: 95 public:
93 CreateQuery(); 96 CreateQuery();
94 ~CreateQuery(); 97 ~CreateQuery();
95 QString query()const; 98 QString query()const;
96 }; 99 };
97 100
98 /** 101 /**
99 * Clears (delete) a Table 102 * Clears (delete) a Table
100 */ 103 */
101 class ClearQuery : public OSQLQuery { 104 class ClearQuery : public OSQLQuery {
102 public: 105 public:
103 ClearQuery(); 106 ClearQuery();
104 ~ClearQuery(); 107 ~ClearQuery();
105 QString query()const; 108 QString query()const;
106 109
107 }; 110 };
108 111
109 112
110 /** 113 /**
111 * LoadQuery 114 * LoadQuery
112 * this one queries for all uids 115 * this one queries for all uids
113 */ 116 */
114 class LoadQuery : public OSQLQuery { 117 class LoadQuery : public OSQLQuery {
115 public: 118 public:
116 LoadQuery(); 119 LoadQuery();
117 ~LoadQuery(); 120 ~LoadQuery();
118 QString query()const; 121 QString query()const;
119 }; 122 };
120 123
121 /** 124 /**
122 * inserts/adds a OContact to the table 125 * inserts/adds a OContact to the table
123 */ 126 */
124 class InsertQuery : public OSQLQuery { 127 class InsertQuery : public OSQLQuery {
125 public: 128 public:
126 InsertQuery(const OContact& ); 129 InsertQuery(const OContact& );
127 ~InsertQuery(); 130 ~InsertQuery();
128 QString query()const; 131 QString query()const;
129 private: 132 private:
130 OContact m_contact; 133 OContact m_contact;
131 }; 134 };
132 135
133 136
134 /** 137 /**
135 * removes one from the table 138 * removes one from the table
136 */ 139 */
137 class RemoveQuery : public OSQLQuery { 140 class RemoveQuery : public OSQLQuery {
138 public: 141 public:
139 RemoveQuery(int uid ); 142 RemoveQuery(int uid );
140 ~RemoveQuery(); 143 ~RemoveQuery();
141 QString query()const; 144 QString query()const;
142 private: 145 private:
143 int m_uid; 146 int m_uid;
144 }; 147 };
145 148
146 /** 149 /**
147 * a find query for noncustom elements 150 * a find query for noncustom elements
148 */ 151 */
149 class FindQuery : public OSQLQuery { 152 class FindQuery : public OSQLQuery {
150 public: 153 public:
151 FindQuery(int uid); 154 FindQuery(int uid);
152 FindQuery(const QArray<int>& ); 155 FindQuery(const QArray<int>& );
153 ~FindQuery(); 156 ~FindQuery();
154 QString query()const; 157 QString query()const;
155 private: 158 private:
156 QString single()const; 159 QString single()const;
157 QString multi()const; 160 QString multi()const;
158 QArray<int> m_uids; 161 QArray<int> m_uids;
159 int m_uid; 162 int m_uid;
160 }; 163 };
161 164
162 /** 165 /**
163 * a find query for custom elements 166 * a find query for custom elements
164 */ 167 */
165 class FindCustomQuery : public OSQLQuery { 168 class FindCustomQuery : public OSQLQuery {
166 public: 169 public:
167 FindCustomQuery(int uid); 170 FindCustomQuery(int uid);
168 FindCustomQuery(const QArray<int>& ); 171 FindCustomQuery(const QArray<int>& );
169 ~FindCustomQuery(); 172 ~FindCustomQuery();
170 QString query()const; 173 QString query()const;
171 private: 174 private:
172 QString single()const; 175 QString single()const;
173 QString multi()const; 176 QString multi()const;
174 QArray<int> m_uids; 177 QArray<int> m_uids;
175 int m_uid; 178 int m_uid;
176 }; 179 };
177 180
178 181
179 182
180 // We using three tables to store the information: 183 // We using three tables to store the information:
181 // 1. addressbook : It contains General information about the contact (non custom) 184 // 1. addressbook : It contains General information about the contact (non custom)
182 // 2. custom_data : Not official supported entries 185 // 2. custom_data : Not official supported entries
183 // All tables are connected by the uid of the contact. 186 // All tables are connected by the uid of the contact.
184 // Maybe I should add a table for meta-information ? 187 // Maybe I should add a table for meta-information ?
185 CreateQuery::CreateQuery() : OSQLQuery() {} 188 CreateQuery::CreateQuery() : OSQLQuery() {}
186 CreateQuery::~CreateQuery() {} 189 CreateQuery::~CreateQuery() {}
187 QString CreateQuery::query()const { 190 QString CreateQuery::query()const {
188 QString qu; 191 QString qu;
189#ifdef __STORE_HORIZONTAL_ 192#ifdef __STORE_HORIZONTAL_
190 193
191 qu += "create table addressbook( uid PRIMARY KEY "; 194 qu += "create table addressbook( uid PRIMARY KEY ";
192 195
193 QStringList fieldList = OContactFields::untrfields( false ); 196 QStringList fieldList = OContactFields::untrfields( false );
194 for ( QStringList::Iterator it = ++fieldList.begin(); it != fieldList.end(); ++it ){ 197 for ( QStringList::Iterator it = ++fieldList.begin(); it != fieldList.end(); ++it ){
195 qu += QString( ",\"%1\" VARCHAR(10)" ).arg( *it ); 198 qu += QString( ",\"%1\" VARCHAR(10)" ).arg( *it );
196 } 199 }
197 qu += " );"; 200 qu += " );";
198 201
199 qu += "create table custom_data( uid INTEGER, id INTEGER, type VARCHAR, priority INTEGER, value VARCHAR, PRIMARY KEY /* identifier */ (uid, id) );"; 202 qu += "create table custom_data( uid INTEGER, id INTEGER, type VARCHAR, priority INTEGER, value VARCHAR, PRIMARY KEY /* identifier */ (uid, id) );";
200 203
201#else 204#else
202 205
203 qu += "create table addressbook( uid INTEGER, id INTEGER, type VARCHAR, priority INTEGER, value VARCHAR, PRIMARY KEY /* identifier */ (uid, id));"; 206 qu += "create table addressbook( uid INTEGER, id INTEGER, type VARCHAR, priority INTEGER, value VARCHAR, PRIMARY KEY /* identifier */ (uid, id));";
204 qu += "create table custom_data( uid INTEGER, id INTEGER, type VARCHAR, priority INTEGER, value VARCHAR, PRIMARY KEY /* identifier */ (uid, id) );"; 207 qu += "create table custom_data( uid INTEGER, id INTEGER, type VARCHAR, priority INTEGER, value VARCHAR, PRIMARY KEY /* identifier */ (uid, id) );";
205 // qu += "create table dates( uid PRIMARY KEY, type, day, month, year, hour, minute, second );"; 208 // qu += "create table dates( uid PRIMARY KEY, type, day, month, year, hour, minute, second );";
206 209
207#endif // __STORE_HORIZONTAL_ 210#endif // __STORE_HORIZONTAL_
208 return qu; 211 return qu;
diff --git a/libopie/pim/ocontactaccessbackend_sql.h b/noncore/unsupported/libopie/pim/ocontactaccessbackend_sql.h
index f553760..8cd92e8 100644
--- a/libopie/pim/ocontactaccessbackend_sql.h
+++ b/noncore/unsupported/libopie/pim/ocontactaccessbackend_sql.h
@@ -1,107 +1,110 @@
1/* 1/*
2 * SQL Backend for the OPIE-Contact Database. 2 * SQL Backend for the OPIE-Contact Database.
3 * 3 *
4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) 4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
5 * 5 *
6 * ===================================================================== 6 * =====================================================================
7 *This program is free software; you can redistribute it and/or 7 *This program is free software; you can redistribute it and/or
8 *modify it under the terms of the GNU Library General Public 8 *modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
11 * ===================================================================== 11 * =====================================================================
12 * 12 *
13 * 13 *
14 * ===================================================================== 14 * =====================================================================
15 * Version: $Id$ 15 * Version: $Id$
16 * ===================================================================== 16 * =====================================================================
17 * History: 17 * History:
18 * $Log$ 18 * $Log$
19 * Revision 1.1 2004/11/16 21:46:07 mickeyl
20 * libopie1 goes into unsupported
21 *
19 * Revision 1.3 2004/03/14 13:50:35 alwin 22 * Revision 1.3 2004/03/14 13:50:35 alwin
20 * namespace correction 23 * namespace correction
21 * 24 *
22 * Revision 1.2 2003/12/08 15:18:11 eilers 25 * Revision 1.2 2003/12/08 15:18:11 eilers
23 * Committing unfinished sql implementation before merging to libopie2 starts.. 26 * Committing unfinished sql implementation before merging to libopie2 starts..
24 * 27 *
25 * Revision 1.1 2003/09/22 14:31:16 eilers 28 * Revision 1.1 2003/09/22 14:31:16 eilers
26 * Added first experimental incarnation of sql-backend for addressbook. 29 * Added first experimental incarnation of sql-backend for addressbook.
27 * Some modifications to be able to compile the todo sql-backend. 30 * Some modifications to be able to compile the todo sql-backend.
28 * A lot of changes fill follow... 31 * A lot of changes fill follow...
29 * 32 *
30 * 33 *
31 */ 34 */
32 35
33#ifndef _OContactAccessBackend_SQL_ 36#ifndef _OContactAccessBackend_SQL_
34#define _OContactAccessBackend_SQL_ 37#define _OContactAccessBackend_SQL_
35 38
36#include "ocontactaccessbackend.h" 39#include "ocontactaccessbackend.h"
37#include "ocontactaccess.h" 40#include "ocontactaccess.h"
38 41
39#include <qlist.h> 42#include <qlist.h>
40#include <qdict.h> 43#include <qdict.h>
41 44
42namespace Opie { namespace DB { 45namespace Opie { namespace DB {
43class OSQLDriver; 46class OSQLDriver;
44class OSQLResult; 47class OSQLResult;
45class OSQLResultItem; 48class OSQLResultItem;
46 49
47}} 50}}
48 51
49/* the default xml implementation */ 52/* the default xml implementation */
50/** 53/**
51 * This class is the SQL implementation of a Contact backend 54 * This class is the SQL implementation of a Contact backend
52 * it does implement everything available for OContact. 55 * it does implement everything available for OContact.
53 * @see OPimAccessBackend for more information of available methods 56 * @see OPimAccessBackend for more information of available methods
54 */ 57 */
55class OContactAccessBackend_SQL : public OContactAccessBackend { 58class OContactAccessBackend_SQL : public OContactAccessBackend {
56 public: 59 public:
57 OContactAccessBackend_SQL ( const QString& appname, const QString& filename = QString::null ); 60 OContactAccessBackend_SQL ( const QString& appname, const QString& filename = QString::null );
58 61
59 ~OContactAccessBackend_SQL (); 62 ~OContactAccessBackend_SQL ();
60 63
61 bool save(); 64 bool save();
62 65
63 bool load (); 66 bool load ();
64 67
65 void clear (); 68 void clear ();
66 69
67 bool wasChangedExternally(); 70 bool wasChangedExternally();
68 71
69 QArray<int> allRecords() const; 72 QArray<int> allRecords() const;
70 73
71 OContact find ( int uid ) const; 74 OContact find ( int uid ) const;
72 // FIXME: Add lookahead-cache support ! 75 // FIXME: Add lookahead-cache support !
73 //OContact find(int uid, const QArray<int>&, uint cur, Frontend::CacheDirection )const; 76 //OContact find(int uid, const QArray<int>&, uint cur, Frontend::CacheDirection )const;
74 77
75 QArray<int> queryByExample ( const OContact &query, int settings, 78 QArray<int> queryByExample ( const OContact &query, int settings,
76 const QDateTime& d ); 79 const QDateTime& d );
77 80
78 QArray<int> matchRegexp( const QRegExp &r ) const; 81 QArray<int> matchRegexp( const QRegExp &r ) const;
79 82
80 const uint querySettings(); 83 const uint querySettings();
81 84
82 bool hasQuerySettings (uint querySettings) const; 85 bool hasQuerySettings (uint querySettings) const;
83 86
84 // Currently only asc implemented.. 87 // Currently only asc implemented..
85 QArray<int> sorted( bool asc, int , int , int ); 88 QArray<int> sorted( bool asc, int , int , int );
86 bool add ( const OContact &newcontact ); 89 bool add ( const OContact &newcontact );
87 90
88 bool replace ( const OContact &contact ); 91 bool replace ( const OContact &contact );
89 92
90 bool remove ( int uid ); 93 bool remove ( int uid );
91 bool reload(); 94 bool reload();
92 95
93 private: 96 private:
94 QArray<int> extractUids( Opie::DB::OSQLResult& res ) const; 97 QArray<int> extractUids( Opie::DB::OSQLResult& res ) const;
95 QMap<int, QString> requestNonCustom( int uid ) const; 98 QMap<int, QString> requestNonCustom( int uid ) const;
96 QMap<QString, QString> requestCustom( int uid ) const; 99 QMap<QString, QString> requestCustom( int uid ) const;
97 void update(); 100 void update();
98 101
99 protected: 102 protected:
100 bool m_changed; 103 bool m_changed;
101 QString m_fileName; 104 QString m_fileName;
102 QArray<int> m_uids; 105 QArray<int> m_uids;
103 106
104 Opie::DB::OSQLDriver* m_driver; 107 Opie::DB::OSQLDriver* m_driver;
105}; 108};
106 109
107#endif 110#endif
diff --git a/libopie/pim/ocontactaccessbackend_vcard.cpp b/noncore/unsupported/libopie/pim/ocontactaccessbackend_vcard.cpp
index b60c5be..a795b56 100644
--- a/libopie/pim/ocontactaccessbackend_vcard.cpp
+++ b/noncore/unsupported/libopie/pim/ocontactaccessbackend_vcard.cpp
@@ -1,211 +1,214 @@
1/* 1/*
2 * VCard Backend for the OPIE-Contact Database. 2 * VCard Backend for the OPIE-Contact Database.
3 * 3 *
4 * Copyright (C) 2000 Trolltech AS. All rights reserved. 4 * Copyright (C) 2000 Trolltech AS. All rights reserved.
5 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) 5 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
6 * 6 *
7 * ===================================================================== 7 * =====================================================================
8 *This program is free software; you can redistribute it and/or 8 *This program is free software; you can redistribute it and/or
9 *modify it under the terms of the GNU Library General Public 9 *modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version. 11 * version 2 of the License, or (at your option) any later version.
12 * ===================================================================== 12 * =====================================================================
13 * ToDo: 13 * ToDo:
14 * 14 *
15 * ===================================================================== 15 * =====================================================================
16 * Version: $Id$ 16 * Version: $Id$
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.1 2004/11/16 21:46:07 mickeyl
21 * libopie1 goes into unsupported
22 *
20 * Revision 1.11 2003/08/01 12:30:16 eilers 23 * Revision 1.11 2003/08/01 12:30:16 eilers
21 * Merging changes from BRANCH_1_0 to HEAD 24 * Merging changes from BRANCH_1_0 to HEAD
22 * 25 *
23 * Revision 1.10.4.3 2003/07/23 08:54:37 eilers 26 * Revision 1.10.4.3 2003/07/23 08:54:37 eilers
24 * Default email was added to the list of all emails, which already contains 27 * Default email was added to the list of all emails, which already contains
25 * the default email.. 28 * the default email..
26 * This closes bug #1045 29 * This closes bug #1045
27 * 30 *
28 * Revision 1.10.4.2 2003/07/23 08:44:45 eilers 31 * Revision 1.10.4.2 2003/07/23 08:44:45 eilers
29 * Importing of Notes in vcard files wasn't implemented. 32 * Importing of Notes in vcard files wasn't implemented.
30 * Closes bug #1044 33 * Closes bug #1044
31 * 34 *
32 * Revision 1.10.4.1 2003/06/02 13:37:49 eilers 35 * Revision 1.10.4.1 2003/06/02 13:37:49 eilers
33 * Fixing memory leak 36 * Fixing memory leak
34 * 37 *
35 * Revision 1.10 2003/04/13 18:07:10 zecke 38 * Revision 1.10 2003/04/13 18:07:10 zecke
36 * More API doc 39 * More API doc
37 * QString -> const QString& 40 * QString -> const QString&
38 * QString = 0l -> QString::null 41 * QString = 0l -> QString::null
39 * 42 *
40 * Revision 1.9 2003/03/21 10:33:09 eilers 43 * Revision 1.9 2003/03/21 10:33:09 eilers
41 * Merged speed optimized xml backend for contacts to main. 44 * Merged speed optimized xml backend for contacts to main.
42 * Added QDateTime to querybyexample. For instance, it is now possible to get 45 * Added QDateTime to querybyexample. For instance, it is now possible to get
43 * all Birthdays/Anniversaries between two dates. This should be used 46 * all Birthdays/Anniversaries between two dates. This should be used
44 * to show all birthdays in the datebook.. 47 * to show all birthdays in the datebook..
45 * This change is sourcecode backward compatible but you have to upgrade 48 * This change is sourcecode backward compatible but you have to upgrade
46 * the binaries for today-addressbook. 49 * the binaries for today-addressbook.
47 * 50 *
48 * Revision 1.8 2003/02/21 16:52:49 zecke 51 * Revision 1.8 2003/02/21 16:52:49 zecke
49 * -Remove old Todo classes they're deprecated and today I already using the 52 * -Remove old Todo classes they're deprecated and today I already using the
50 * new API 53 * new API
51 * -Guard against self assignment in OTodo 54 * -Guard against self assignment in OTodo
52 * -Add test apps for OPIM 55 * -Add test apps for OPIM
53 * -Opiefied Event classes 56 * -Opiefied Event classes
54 * -Added TimeZone handling and pinning of TimeZones to OEvent 57 * -Added TimeZone handling and pinning of TimeZones to OEvent
55 * -Adjust ORecur and the widget to better timezone behaviour 58 * -Adjust ORecur and the widget to better timezone behaviour
56 * 59 *
57 * Revision 1.7 2003/02/16 22:25:46 zecke 60 * Revision 1.7 2003/02/16 22:25:46 zecke
58 * 0000276 Fix for that bug.. or better temp workaround 61 * 0000276 Fix for that bug.. or better temp workaround
59 * A Preferred Number is HOME|VOICE 62 * A Preferred Number is HOME|VOICE
60 * A CellPhone is HOME|VOICE|CELL the type & HOME|VOICE test 63 * A CellPhone is HOME|VOICE|CELL the type & HOME|VOICE test
61 * triggers both 64 * triggers both
62 * and the cell phone number overrides the other entries.. 65 * and the cell phone number overrides the other entries..
63 * 66 *
64 * as a temp I check that it's not equal to HOME|VOICE|CELL before setting the 67 * as a temp I check that it's not equal to HOME|VOICE|CELL before setting the
65 * number 68 * number
66 * 69 *
67 * The right and final fix would be to reorder the if statement to make it 70 * The right and final fix would be to reorder the if statement to make it
68 * if else based and the less common thing put to the bottom 71 * if else based and the less common thing put to the bottom
69 * 72 *
70 * OTodoAccessVcal fix the date for beaming 73 * OTodoAccessVcal fix the date for beaming
71 * 74 *
72 * Revision 1.6 2003/01/13 15:49:31 eilers 75 * Revision 1.6 2003/01/13 15:49:31 eilers
73 * Fixing crash when businesscard.vcf is missing.. 76 * Fixing crash when businesscard.vcf is missing..
74 * 77 *
75 * Revision 1.5 2002/12/07 13:26:22 eilers 78 * Revision 1.5 2002/12/07 13:26:22 eilers
76 * Fixing bug in storing anniversary.. 79 * Fixing bug in storing anniversary..
77 * 80 *
78 * Revision 1.4 2002/11/13 14:14:51 eilers 81 * Revision 1.4 2002/11/13 14:14:51 eilers
79 * Added sorted for Contacts.. 82 * Added sorted for Contacts..
80 * 83 *
81 * Revision 1.3 2002/11/11 16:41:09 kergoth 84 * Revision 1.3 2002/11/11 16:41:09 kergoth
82 * no default arguments in implementation 85 * no default arguments in implementation
83 * 86 *
84 * Revision 1.2 2002/11/10 15:41:53 eilers 87 * Revision 1.2 2002/11/10 15:41:53 eilers
85 * Bugfixes.. 88 * Bugfixes..
86 * 89 *
87 * Revision 1.1 2002/11/09 14:34:52 eilers 90 * Revision 1.1 2002/11/09 14:34:52 eilers
88 * Added VCard Backend. 91 * Added VCard Backend.
89 * 92 *
90 */ 93 */
91#include "ocontactaccessbackend_vcard.h" 94#include "ocontactaccessbackend_vcard.h"
92#include "../../library/backend/vobject_p.h" 95#include "../../library/backend/vobject_p.h"
93#include "../../library/backend/qfiledirect_p.h" 96#include "../../library/backend/qfiledirect_p.h"
94 97
95#include <qpe/timeconversion.h> 98#include <qpe/timeconversion.h>
96 99
97#include <qfile.h> 100#include <qfile.h>
98 101
99OContactAccessBackend_VCard::OContactAccessBackend_VCard ( const QString& , const QString& filename ): 102OContactAccessBackend_VCard::OContactAccessBackend_VCard ( const QString& , const QString& filename ):
100 m_dirty( false ), 103 m_dirty( false ),
101 m_file( filename ) 104 m_file( filename )
102{ 105{
103 load(); 106 load();
104} 107}
105 108
106 109
107bool OContactAccessBackend_VCard::load () 110bool OContactAccessBackend_VCard::load ()
108{ 111{
109 m_map.clear(); 112 m_map.clear();
110 m_dirty = false; 113 m_dirty = false;
111 114
112 VObject* obj = 0l; 115 VObject* obj = 0l;
113 116
114 if ( QFile::exists(m_file) ){ 117 if ( QFile::exists(m_file) ){
115 obj = Parse_MIME_FromFileName( QFile::encodeName(m_file).data() ); 118 obj = Parse_MIME_FromFileName( QFile::encodeName(m_file).data() );
116 if ( !obj ) 119 if ( !obj )
117 return false; 120 return false;
118 }else{ 121 }else{
119 qWarning("File \"%s\" not found !", m_file.latin1() ); 122 qWarning("File \"%s\" not found !", m_file.latin1() );
120 return false; 123 return false;
121 } 124 }
122 125
123 while ( obj ) { 126 while ( obj ) {
124 OContact con = parseVObject( obj ); 127 OContact con = parseVObject( obj );
125 /* 128 /*
126 * if uid is 0 assign a new one 129 * if uid is 0 assign a new one
127 * this at least happens on 130 * this at least happens on
128 * Nokia6210 131 * Nokia6210
129 */ 132 */
130 if ( con.uid() == 0 ){ 133 if ( con.uid() == 0 ){
131 con.setUid( 1 ); 134 con.setUid( 1 );
132 qWarning("assigned new uid %d",con.uid() ); 135 qWarning("assigned new uid %d",con.uid() );
133 } 136 }
134 137
135 m_map.insert( con.uid(), con ); 138 m_map.insert( con.uid(), con );
136 139
137 VObject *t = obj; 140 VObject *t = obj;
138 obj = nextVObjectInList(obj); 141 obj = nextVObjectInList(obj);
139 cleanVObject( t ); 142 cleanVObject( t );
140 } 143 }
141 144
142 return true; 145 return true;
143 146
144} 147}
145bool OContactAccessBackend_VCard::reload() 148bool OContactAccessBackend_VCard::reload()
146{ 149{
147 return load(); 150 return load();
148} 151}
149bool OContactAccessBackend_VCard::save() 152bool OContactAccessBackend_VCard::save()
150{ 153{
151 if (!m_dirty ) 154 if (!m_dirty )
152 return true; 155 return true;
153 156
154 QFileDirect file( m_file ); 157 QFileDirect file( m_file );
155 if (!file.open(IO_WriteOnly ) ) 158 if (!file.open(IO_WriteOnly ) )
156 return false; 159 return false;
157 160
158 VObject *obj; 161 VObject *obj;
159 obj = newVObject( VCCalProp ); 162 obj = newVObject( VCCalProp );
160 addPropValue( obj, VCVersionProp, "1.0" ); 163 addPropValue( obj, VCVersionProp, "1.0" );
161 164
162 VObject *vo; 165 VObject *vo;
163 for(QMap<int, OContact>::ConstIterator it=m_map.begin(); it !=m_map.end(); ++it ){ 166 for(QMap<int, OContact>::ConstIterator it=m_map.begin(); it !=m_map.end(); ++it ){
164 vo = createVObject( *it ); 167 vo = createVObject( *it );
165 writeVObject( file.directHandle() , vo ); 168 writeVObject( file.directHandle() , vo );
166 cleanVObject( vo ); 169 cleanVObject( vo );
167 } 170 }
168 cleanStrTbl(); 171 cleanStrTbl();
169 deleteVObject( obj ); 172 deleteVObject( obj );
170 173
171 m_dirty = false; 174 m_dirty = false;
172 return true; 175 return true;
173 176
174 177
175} 178}
176void OContactAccessBackend_VCard::clear () 179void OContactAccessBackend_VCard::clear ()
177{ 180{
178 m_map.clear(); 181 m_map.clear();
179 m_dirty = true; // ??? sure ? (se) 182 m_dirty = true; // ??? sure ? (se)
180} 183}
181 184
182bool OContactAccessBackend_VCard::add ( const OContact& newcontact ) 185bool OContactAccessBackend_VCard::add ( const OContact& newcontact )
183{ 186{
184 m_map.insert( newcontact.uid(), newcontact ); 187 m_map.insert( newcontact.uid(), newcontact );
185 m_dirty = true; 188 m_dirty = true;
186 return true; 189 return true;
187} 190}
188 191
189bool OContactAccessBackend_VCard::remove ( int uid ) 192bool OContactAccessBackend_VCard::remove ( int uid )
190{ 193{
191 m_map.remove( uid ); 194 m_map.remove( uid );
192 m_dirty = true; 195 m_dirty = true;
193 return true; 196 return true;
194} 197}
195 198
196bool OContactAccessBackend_VCard::replace ( const OContact &contact ) 199bool OContactAccessBackend_VCard::replace ( const OContact &contact )
197{ 200{
198 m_map.replace( contact.uid(), contact ); 201 m_map.replace( contact.uid(), contact );
199 m_dirty = true; 202 m_dirty = true;
200 return true; 203 return true;
201} 204}
202 205
203OContact OContactAccessBackend_VCard::find ( int uid ) const 206OContact OContactAccessBackend_VCard::find ( int uid ) const
204{ 207{
205 return m_map[uid]; 208 return m_map[uid];
206} 209}
207 210
208QArray<int> OContactAccessBackend_VCard::allRecords() const 211QArray<int> OContactAccessBackend_VCard::allRecords() const
209{ 212{
210 QArray<int> ar( m_map.count() ); 213 QArray<int> ar( m_map.count() );
211 QMap<int, OContact>::ConstIterator it; 214 QMap<int, OContact>::ConstIterator it;
diff --git a/libopie/pim/ocontactaccessbackend_vcard.h b/noncore/unsupported/libopie/pim/ocontactaccessbackend_vcard.h
index 712d769..6dbc718 100644
--- a/libopie/pim/ocontactaccessbackend_vcard.h
+++ b/noncore/unsupported/libopie/pim/ocontactaccessbackend_vcard.h
@@ -1,96 +1,99 @@
1/* 1/*
2 * VCard Backend for the OPIE-Contact Database. 2 * VCard Backend for the OPIE-Contact Database.
3 * 3 *
4 * Copyright (C) 2000 Trolltech AS. All rights reserved. 4 * Copyright (C) 2000 Trolltech AS. All rights reserved.
5 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) 5 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
6 * 6 *
7 * ===================================================================== 7 * =====================================================================
8 *This program is free software; you can redistribute it and/or 8 *This program is free software; you can redistribute it and/or
9 *modify it under the terms of the GNU Library General Public 9 *modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version. 11 * version 2 of the License, or (at your option) any later version.
12 * ===================================================================== 12 * =====================================================================
13 * ToDo: 13 * ToDo:
14 * 14 *
15 * ===================================================================== 15 * =====================================================================
16 * Version: $Id$ 16 * Version: $Id$
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.1 2004/11/16 21:46:07 mickeyl
21 * libopie1 goes into unsupported
22 *
20 * Revision 1.6 2003/04/13 18:07:10 zecke 23 * Revision 1.6 2003/04/13 18:07:10 zecke
21 * More API doc 24 * More API doc
22 * QString -> const QString& 25 * QString -> const QString&
23 * QString = 0l -> QString::null 26 * QString = 0l -> QString::null
24 * 27 *
25 * Revision 1.5 2003/03/21 10:33:09 eilers 28 * Revision 1.5 2003/03/21 10:33:09 eilers
26 * Merged speed optimized xml backend for contacts to main. 29 * Merged speed optimized xml backend for contacts to main.
27 * Added QDateTime to querybyexample. For instance, it is now possible to get 30 * Added QDateTime to querybyexample. For instance, it is now possible to get
28 * all Birthdays/Anniversaries between two dates. This should be used 31 * all Birthdays/Anniversaries between two dates. This should be used
29 * to show all birthdays in the datebook.. 32 * to show all birthdays in the datebook..
30 * This change is sourcecode backward compatible but you have to upgrade 33 * This change is sourcecode backward compatible but you have to upgrade
31 * the binaries for today-addressbook. 34 * the binaries for today-addressbook.
32 * 35 *
33 * Revision 1.4 2002/12/07 13:26:22 eilers 36 * Revision 1.4 2002/12/07 13:26:22 eilers
34 * Fixing bug in storing anniversary.. 37 * Fixing bug in storing anniversary..
35 * 38 *
36 * Revision 1.3 2002/11/13 14:14:51 eilers 39 * Revision 1.3 2002/11/13 14:14:51 eilers
37 * Added sorted for Contacts.. 40 * Added sorted for Contacts..
38 * 41 *
39 * Revision 1.2 2002/11/10 15:41:53 eilers 42 * Revision 1.2 2002/11/10 15:41:53 eilers
40 * Bugfixes.. 43 * Bugfixes..
41 * 44 *
42 * Revision 1.1 2002/11/09 14:34:52 eilers 45 * Revision 1.1 2002/11/09 14:34:52 eilers
43 * Added VCard Backend. 46 * Added VCard Backend.
44 * 47 *
45 */ 48 */
46#ifndef __OCONTACTACCESSBACKEND_VCARD_H_ 49#ifndef __OCONTACTACCESSBACKEND_VCARD_H_
47#define __OCONTACTACCESSBACKEND_VCARD_H_ 50#define __OCONTACTACCESSBACKEND_VCARD_H_
48 51
49#include <opie/ocontact.h> 52#include <opie/ocontact.h>
50 53
51#include "ocontactaccessbackend.h" 54#include "ocontactaccessbackend.h"
52 55
53class VObject; 56class VObject;
54 57
55/** 58/**
56 * This is the vCard 2.1 implementation of the Contact Storage 59 * This is the vCard 2.1 implementation of the Contact Storage
57 * @see OContactAccessBackend_XML 60 * @see OContactAccessBackend_XML
58 * @see OPimAccessBackend 61 * @see OPimAccessBackend
59 */ 62 */
60class OContactAccessBackend_VCard : public OContactAccessBackend { 63class OContactAccessBackend_VCard : public OContactAccessBackend {
61 public: 64 public:
62 OContactAccessBackend_VCard ( const QString& appname, const QString& filename = QString::null ); 65 OContactAccessBackend_VCard ( const QString& appname, const QString& filename = QString::null );
63 66
64 bool load (); 67 bool load ();
65 bool reload(); 68 bool reload();
66 bool save(); 69 bool save();
67 void clear (); 70 void clear ();
68 71
69 bool add ( const OContact& newcontact ); 72 bool add ( const OContact& newcontact );
70 bool remove ( int uid ); 73 bool remove ( int uid );
71 bool replace ( const OContact& contact ); 74 bool replace ( const OContact& contact );
72 75
73 OContact find ( int uid ) const; 76 OContact find ( int uid ) const;
74 QArray<int> allRecords() const; 77 QArray<int> allRecords() const;
75 QArray<int> queryByExample ( const OContact &query, int settings, const QDateTime& d = QDateTime() ); 78 QArray<int> queryByExample ( const OContact &query, int settings, const QDateTime& d = QDateTime() );
76 QArray<int> matchRegexp( const QRegExp &r ) const; 79 QArray<int> matchRegexp( const QRegExp &r ) const;
77 80
78 const uint querySettings(); 81 const uint querySettings();
79 bool hasQuerySettings (uint querySettings) const; 82 bool hasQuerySettings (uint querySettings) const;
80 QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ); 83 QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat );
81 bool wasChangedExternally(); 84 bool wasChangedExternally();
82 85
83private: 86private:
84 OContact parseVObject( VObject* obj ); 87 OContact parseVObject( VObject* obj );
85 VObject* createVObject( const OContact& c ); 88 VObject* createVObject( const OContact& c );
86 QString convDateToVCardDate( const QDate& c ) const; 89 QString convDateToVCardDate( const QDate& c ) const;
87 QDate convVCardDateToDate( const QString& datestr ); 90 QDate convVCardDateToDate( const QString& datestr );
88 VObject *safeAddPropValue( VObject *o, const char* prop, const QString& value ); 91 VObject *safeAddPropValue( VObject *o, const char* prop, const QString& value );
89 VObject *safeAddProp( VObject* o, const char* prop); 92 VObject *safeAddProp( VObject* o, const char* prop);
90 93
91 bool m_dirty : 1; 94 bool m_dirty : 1;
92 QString m_file; 95 QString m_file;
93 QMap<int, OContact> m_map; 96 QMap<int, OContact> m_map;
94}; 97};
95 98
96#endif 99#endif
diff --git a/libopie/pim/ocontactaccessbackend_xml.cpp b/noncore/unsupported/libopie/pim/ocontactaccessbackend_xml.cpp
index 2373ad6..7ceaf5b 100644
--- a/libopie/pim/ocontactaccessbackend_xml.cpp
+++ b/noncore/unsupported/libopie/pim/ocontactaccessbackend_xml.cpp
@@ -1,209 +1,212 @@
1/* 1/*
2 * XML Backend for the OPIE-Contact Database. 2 * XML Backend for the OPIE-Contact Database.
3 * 3 *
4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) 4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
5 * 5 *
6 * ===================================================================== 6 * =====================================================================
7 *This program is free software; you can redistribute it and/or 7 *This program is free software; you can redistribute it and/or
8 *modify it under the terms of the GNU Library General Public 8 *modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
11 * ===================================================================== 11 * =====================================================================
12 * 12 *
13 * ===================================================================== 13 * =====================================================================
14 * Version: $Id$ 14 * Version: $Id$
15 * ===================================================================== 15 * =====================================================================
16 * History: 16 * History:
17 * $Log$ 17 * $Log$
18 * Revision 1.1 2004/11/16 21:46:07 mickeyl
19 * libopie1 goes into unsupported
20 *
18 * Revision 1.10 2004/03/01 15:44:36 chicken 21 * Revision 1.10 2004/03/01 15:44:36 chicken
19 * fix includes 22 * fix includes
20 * 23 *
21 * Revision 1.9 2003/09/22 14:31:16 eilers 24 * Revision 1.9 2003/09/22 14:31:16 eilers
22 * Added first experimental incarnation of sql-backend for addressbook. 25 * Added first experimental incarnation of sql-backend for addressbook.
23 * Some modifications to be able to compile the todo sql-backend. 26 * Some modifications to be able to compile the todo sql-backend.
24 * A lot of changes fill follow... 27 * A lot of changes fill follow...
25 * 28 *
26 * Revision 1.8 2003/08/30 15:28:26 eilers 29 * Revision 1.8 2003/08/30 15:28:26 eilers
27 * Removed some unimportant debug output which causes slow down.. 30 * Removed some unimportant debug output which causes slow down..
28 * 31 *
29 * Revision 1.7 2003/08/01 12:30:16 eilers 32 * Revision 1.7 2003/08/01 12:30:16 eilers
30 * Merging changes from BRANCH_1_0 to HEAD 33 * Merging changes from BRANCH_1_0 to HEAD
31 * 34 *
32 * Revision 1.6 2003/07/07 16:19:47 eilers 35 * Revision 1.6 2003/07/07 16:19:47 eilers
33 * Fixing serious bug in hasQuerySettings() 36 * Fixing serious bug in hasQuerySettings()
34 * 37 *
35 * Revision 1.5 2003/04/13 18:07:10 zecke 38 * Revision 1.5 2003/04/13 18:07:10 zecke
36 * More API doc 39 * More API doc
37 * QString -> const QString& 40 * QString -> const QString&
38 * QString = 0l -> QString::null 41 * QString = 0l -> QString::null
39 * 42 *
40 * Revision 1.4 2003/03/21 14:32:54 mickeyl 43 * Revision 1.4 2003/03/21 14:32:54 mickeyl
41 * g++ compliance fix: default arguments belong into the declaration, but not the definition 44 * g++ compliance fix: default arguments belong into the declaration, but not the definition
42 * 45 *
43 * Revision 1.3 2003/03/21 12:26:28 eilers 46 * Revision 1.3 2003/03/21 12:26:28 eilers
44 * Fixing small bug: If we search a birthday from today to today, it returned 47 * Fixing small bug: If we search a birthday from today to today, it returned
45 * every contact .. 48 * every contact ..
46 * 49 *
47 * Revision 1.2 2003/03/21 10:33:09 eilers 50 * Revision 1.2 2003/03/21 10:33:09 eilers
48 * Merged speed optimized xml backend for contacts to main. 51 * Merged speed optimized xml backend for contacts to main.
49 * Added QDateTime to querybyexample. For instance, it is now possible to get 52 * Added QDateTime to querybyexample. For instance, it is now possible to get
50 * all Birthdays/Anniversaries between two dates. This should be used 53 * all Birthdays/Anniversaries between two dates. This should be used
51 * to show all birthdays in the datebook.. 54 * to show all birthdays in the datebook..
52 * This change is sourcecode backward compatible but you have to upgrade 55 * This change is sourcecode backward compatible but you have to upgrade
53 * the binaries for today-addressbook. 56 * the binaries for today-addressbook.
54 * 57 *
55 * Revision 1.1.2.2 2003/02/11 12:17:28 eilers 58 * Revision 1.1.2.2 2003/02/11 12:17:28 eilers
56 * Speed optimization. Removed the sequential search loops. 59 * Speed optimization. Removed the sequential search loops.
57 * 60 *
58 * Revision 1.1.2.1 2003/02/10 15:31:38 eilers 61 * Revision 1.1.2.1 2003/02/10 15:31:38 eilers
59 * Writing offsets to debug output.. 62 * Writing offsets to debug output..
60 * 63 *
61 * Revision 1.1 2003/02/09 15:05:01 eilers 64 * Revision 1.1 2003/02/09 15:05:01 eilers
62 * Nothing happened.. Just some cleanup before I will start.. 65 * Nothing happened.. Just some cleanup before I will start..
63 * 66 *
64 * Revision 1.12 2003/01/03 16:58:03 eilers 67 * Revision 1.12 2003/01/03 16:58:03 eilers
65 * Reenable debug output 68 * Reenable debug output
66 * 69 *
67 * Revision 1.11 2003/01/03 12:31:28 eilers 70 * Revision 1.11 2003/01/03 12:31:28 eilers
68 * Bugfix for calculating data diffs.. 71 * Bugfix for calculating data diffs..
69 * 72 *
70 * Revision 1.10 2003/01/02 14:27:12 eilers 73 * Revision 1.10 2003/01/02 14:27:12 eilers
71 * Improved query by example: Search by date is possible.. First step 74 * Improved query by example: Search by date is possible.. First step
72 * for a today plugin for birthdays.. 75 * for a today plugin for birthdays..
73 * 76 *
74 * Revision 1.9 2002/12/08 12:48:57 eilers 77 * Revision 1.9 2002/12/08 12:48:57 eilers
75 * Moved journal-enum from ocontact into i the xml-backend.. 78 * Moved journal-enum from ocontact into i the xml-backend..
76 * 79 *
77 * Revision 1.8 2002/11/14 17:04:24 eilers 80 * Revision 1.8 2002/11/14 17:04:24 eilers
78 * Sorting will now work if fullname is identical on some entries 81 * Sorting will now work if fullname is identical on some entries
79 * 82 *
80 * Revision 1.7 2002/11/13 15:02:46 eilers 83 * Revision 1.7 2002/11/13 15:02:46 eilers
81 * Small Bug in sorted fixed 84 * Small Bug in sorted fixed
82 * 85 *
83 * Revision 1.6 2002/11/13 14:14:51 eilers 86 * Revision 1.6 2002/11/13 14:14:51 eilers
84 * Added sorted for Contacts.. 87 * Added sorted for Contacts..
85 * 88 *
86 * Revision 1.5 2002/11/01 15:10:42 eilers 89 * Revision 1.5 2002/11/01 15:10:42 eilers
87 * Added regExp-search in database for all fields in a contact. 90 * Added regExp-search in database for all fields in a contact.
88 * 91 *
89 * Revision 1.4 2002/10/16 10:52:40 eilers 92 * Revision 1.4 2002/10/16 10:52:40 eilers
90 * Added some docu to the interface and now using the cache infrastucture by zecke.. :) 93 * Added some docu to the interface and now using the cache infrastucture by zecke.. :)
91 * 94 *
92 * Revision 1.3 2002/10/14 16:21:54 eilers 95 * Revision 1.3 2002/10/14 16:21:54 eilers
93 * Some minor interface updates 96 * Some minor interface updates
94 * 97 *
95 * Revision 1.2 2002/10/07 17:34:24 eilers 98 * Revision 1.2 2002/10/07 17:34:24 eilers
96 * added OBackendFactory for advanced backend access 99 * added OBackendFactory for advanced backend access
97 * 100 *
98 * Revision 1.1 2002/09/27 17:11:44 eilers 101 * Revision 1.1 2002/09/27 17:11:44 eilers
99 * Added API for accessing the Contact-Database ! It is compiling, but 102 * Added API for accessing the Contact-Database ! It is compiling, but
100 * please do not expect that anything is working ! 103 * please do not expect that anything is working !
101 * I will debug that stuff in the next time .. 104 * I will debug that stuff in the next time ..
102 * Please read README_COMPILE for compiling ! 105 * Please read README_COMPILE for compiling !
103 * 106 *
104 * 107 *
105 */ 108 */
106 109
107#include "ocontactaccessbackend_xml.h" 110#include "ocontactaccessbackend_xml.h"
108 111
109#include <qasciidict.h> 112#include <qasciidict.h>
110#include <qfile.h> 113#include <qfile.h>
111#include <qfileinfo.h> 114#include <qfileinfo.h>
112#include <qregexp.h> 115#include <qregexp.h>
113#include <qarray.h> 116#include <qarray.h>
114#include <qmap.h> 117#include <qmap.h>
115 118
116#include <qpe/global.h> 119#include <qpe/global.h>
117 120
118#include <opie/xmltree.h> 121#include <opie/xmltree.h>
119#include "ocontactaccessbackend.h" 122#include "ocontactaccessbackend.h"
120#include "ocontactaccess.h" 123#include "ocontactaccess.h"
121 124
122#include <stdlib.h> 125#include <stdlib.h>
123#include <errno.h> 126#include <errno.h>
124 127
125using namespace Opie; 128using namespace Opie;
126 129
127 130
128OContactAccessBackend_XML::OContactAccessBackend_XML ( const QString& appname, const QString& filename ): 131OContactAccessBackend_XML::OContactAccessBackend_XML ( const QString& appname, const QString& filename ):
129 m_changed( false ) 132 m_changed( false )
130{ 133{
131 // Just m_contactlist should call delete if an entry 134 // Just m_contactlist should call delete if an entry
132 // is removed. 135 // is removed.
133 m_contactList.setAutoDelete( true ); 136 m_contactList.setAutoDelete( true );
134 m_uidToContact.setAutoDelete( false ); 137 m_uidToContact.setAutoDelete( false );
135 138
136 m_appName = appname; 139 m_appName = appname;
137 140
138 /* Set journalfile name ... */ 141 /* Set journalfile name ... */
139 m_journalName = getenv("HOME"); 142 m_journalName = getenv("HOME");
140 m_journalName +="/.abjournal" + appname; 143 m_journalName +="/.abjournal" + appname;
141 144
142 /* Expecting to access the default filename if nothing else is set */ 145 /* Expecting to access the default filename if nothing else is set */
143 if ( filename.isEmpty() ){ 146 if ( filename.isEmpty() ){
144 m_fileName = Global::applicationFileName( "addressbook","addressbook.xml" ); 147 m_fileName = Global::applicationFileName( "addressbook","addressbook.xml" );
145 } else 148 } else
146 m_fileName = filename; 149 m_fileName = filename;
147 150
148 /* Load Database now */ 151 /* Load Database now */
149 load (); 152 load ();
150} 153}
151 154
152bool OContactAccessBackend_XML::save() 155bool OContactAccessBackend_XML::save()
153{ 156{
154 157
155 if ( !m_changed ) 158 if ( !m_changed )
156 return true; 159 return true;
157 160
158 QString strNewFile = m_fileName + ".new"; 161 QString strNewFile = m_fileName + ".new";
159 QFile f( strNewFile ); 162 QFile f( strNewFile );
160 if ( !f.open( IO_WriteOnly|IO_Raw ) ) 163 if ( !f.open( IO_WriteOnly|IO_Raw ) )
161 return false; 164 return false;
162 165
163 int total_written; 166 int total_written;
164 int idx_offset = 0; 167 int idx_offset = 0;
165 QString out; 168 QString out;
166 169
167 // Write Header 170 // Write Header
168 out = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE Addressbook ><AddressBook>\n" 171 out = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE Addressbook ><AddressBook>\n"
169 " <Groups>\n" 172 " <Groups>\n"
170 " </Groups>\n" 173 " </Groups>\n"
171 " <Contacts>\n"; 174 " <Contacts>\n";
172 QCString cstr = out.utf8(); 175 QCString cstr = out.utf8();
173 f.writeBlock( cstr.data(), cstr.length() ); 176 f.writeBlock( cstr.data(), cstr.length() );
174 idx_offset += cstr.length(); 177 idx_offset += cstr.length();
175 out = ""; 178 out = "";
176 179
177 // Write all contacts 180 // Write all contacts
178 QListIterator<OContact> it( m_contactList ); 181 QListIterator<OContact> it( m_contactList );
179 for ( ; it.current(); ++it ) { 182 for ( ; it.current(); ++it ) {
180 // qWarning(" Uid %d at Offset: %x", (*it)->uid(), idx_offset ); 183 // qWarning(" Uid %d at Offset: %x", (*it)->uid(), idx_offset );
181 out += "<Contact "; 184 out += "<Contact ";
182 (*it)->save( out ); 185 (*it)->save( out );
183 out += "/>\n"; 186 out += "/>\n";
184 cstr = out.utf8(); 187 cstr = out.utf8();
185 total_written = f.writeBlock( cstr.data(), cstr.length() ); 188 total_written = f.writeBlock( cstr.data(), cstr.length() );
186 idx_offset += cstr.length(); 189 idx_offset += cstr.length();
187 if ( total_written != int(cstr.length()) ) { 190 if ( total_written != int(cstr.length()) ) {
188 f.close(); 191 f.close();
189 QFile::remove( strNewFile ); 192 QFile::remove( strNewFile );
190 return false; 193 return false;
191 } 194 }
192 out = ""; 195 out = "";
193 } 196 }
194 out += " </Contacts>\n</AddressBook>\n"; 197 out += " </Contacts>\n</AddressBook>\n";
195 198
196 // Write Footer 199 // Write Footer
197 cstr = out.utf8(); 200 cstr = out.utf8();
198 total_written = f.writeBlock( cstr.data(), cstr.length() ); 201 total_written = f.writeBlock( cstr.data(), cstr.length() );
199 if ( total_written != int( cstr.length() ) ) { 202 if ( total_written != int( cstr.length() ) ) {
200 f.close(); 203 f.close();
201 QFile::remove( strNewFile ); 204 QFile::remove( strNewFile );
202 return false; 205 return false;
203 } 206 }
204 f.close(); 207 f.close();
205 208
206 // move the file over, I'm just going to use the system call 209 // move the file over, I'm just going to use the system call
207 // because, I don't feel like using QDir. 210 // because, I don't feel like using QDir.
208 if ( ::rename( strNewFile.latin1(), m_fileName.latin1() ) < 0 ) { 211 if ( ::rename( strNewFile.latin1(), m_fileName.latin1() ) < 0 ) {
209 qWarning( "problem renaming file %s to %s, errno: %d", 212 qWarning( "problem renaming file %s to %s, errno: %d",
diff --git a/libopie/pim/ocontactaccessbackend_xml.h b/noncore/unsupported/libopie/pim/ocontactaccessbackend_xml.h
index a0cae4d..6857844 100644
--- a/libopie/pim/ocontactaccessbackend_xml.h
+++ b/noncore/unsupported/libopie/pim/ocontactaccessbackend_xml.h
@@ -1,160 +1,163 @@
1/* 1/*
2 * XML Backend for the OPIE-Contact Database. 2 * XML Backend for the OPIE-Contact Database.
3 * 3 *
4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) 4 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
5 * 5 *
6 * ===================================================================== 6 * =====================================================================
7 *This program is free software; you can redistribute it and/or 7 *This program is free software; you can redistribute it and/or
8 *modify it under the terms of the GNU Library General Public 8 *modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
11 * ===================================================================== 11 * =====================================================================
12 * ToDo: XML-Backend: Automatic reload if something was changed... 12 * ToDo: XML-Backend: Automatic reload if something was changed...
13 * File Locking to protect against concurrent access 13 * File Locking to protect against concurrent access
14 * 14 *
15 * 15 *
16 * ===================================================================== 16 * =====================================================================
17 * Version: $Id$ 17 * Version: $Id$
18 * ===================================================================== 18 * =====================================================================
19 * History: 19 * History:
20 * $Log$ 20 * $Log$
21 * Revision 1.1 2004/11/16 21:46:07 mickeyl
22 * libopie1 goes into unsupported
23 *
21 * Revision 1.15 2003/09/22 14:31:16 eilers 24 * Revision 1.15 2003/09/22 14:31:16 eilers
22 * Added first experimental incarnation of sql-backend for addressbook. 25 * Added first experimental incarnation of sql-backend for addressbook.
23 * Some modifications to be able to compile the todo sql-backend. 26 * Some modifications to be able to compile the todo sql-backend.
24 * A lot of changes fill follow... 27 * A lot of changes fill follow...
25 * 28 *
26 * Revision 1.14 2003/04/13 18:07:10 zecke 29 * Revision 1.14 2003/04/13 18:07:10 zecke
27 * More API doc 30 * More API doc
28 * QString -> const QString& 31 * QString -> const QString&
29 * QString = 0l -> QString::null 32 * QString = 0l -> QString::null
30 * 33 *
31 * Revision 1.13 2003/03/21 10:33:09 eilers 34 * Revision 1.13 2003/03/21 10:33:09 eilers
32 * Merged speed optimized xml backend for contacts to main. 35 * Merged speed optimized xml backend for contacts to main.
33 * Added QDateTime to querybyexample. For instance, it is now possible to get 36 * Added QDateTime to querybyexample. For instance, it is now possible to get
34 * all Birthdays/Anniversaries between two dates. This should be used 37 * all Birthdays/Anniversaries between two dates. This should be used
35 * to show all birthdays in the datebook.. 38 * to show all birthdays in the datebook..
36 * This change is sourcecode backward compatible but you have to upgrade 39 * This change is sourcecode backward compatible but you have to upgrade
37 * the binaries for today-addressbook. 40 * the binaries for today-addressbook.
38 * 41 *
39 * Revision 1.12.2.2 2003/02/11 12:17:28 eilers 42 * Revision 1.12.2.2 2003/02/11 12:17:28 eilers
40 * Speed optimization. Removed the sequential search loops. 43 * Speed optimization. Removed the sequential search loops.
41 * 44 *
42 * Revision 1.12.2.1 2003/02/09 15:05:01 eilers 45 * Revision 1.12.2.1 2003/02/09 15:05:01 eilers
43 * Nothing happened.. Just some cleanup before I will start.. 46 * Nothing happened.. Just some cleanup before I will start..
44 * 47 *
45 * Revision 1.12 2003/01/03 16:58:03 eilers 48 * Revision 1.12 2003/01/03 16:58:03 eilers
46 * Reenable debug output 49 * Reenable debug output
47 * 50 *
48 * Revision 1.11 2003/01/03 12:31:28 eilers 51 * Revision 1.11 2003/01/03 12:31:28 eilers
49 * Bugfix for calculating data diffs.. 52 * Bugfix for calculating data diffs..
50 * 53 *
51 * Revision 1.10 2003/01/02 14:27:12 eilers 54 * Revision 1.10 2003/01/02 14:27:12 eilers
52 * Improved query by example: Search by date is possible.. First step 55 * Improved query by example: Search by date is possible.. First step
53 * for a today plugin for birthdays.. 56 * for a today plugin for birthdays..
54 * 57 *
55 * Revision 1.9 2002/12/08 12:48:57 eilers 58 * Revision 1.9 2002/12/08 12:48:57 eilers
56 * Moved journal-enum from ocontact into i the xml-backend.. 59 * Moved journal-enum from ocontact into i the xml-backend..
57 * 60 *
58 * Revision 1.8 2002/11/14 17:04:24 eilers 61 * Revision 1.8 2002/11/14 17:04:24 eilers
59 * Sorting will now work if fullname is identical on some entries 62 * Sorting will now work if fullname is identical on some entries
60 * 63 *
61 * Revision 1.7 2002/11/13 15:02:46 eilers 64 * Revision 1.7 2002/11/13 15:02:46 eilers
62 * Small Bug in sorted fixed 65 * Small Bug in sorted fixed
63 * 66 *
64 * Revision 1.6 2002/11/13 14:14:51 eilers 67 * Revision 1.6 2002/11/13 14:14:51 eilers
65 * Added sorted for Contacts.. 68 * Added sorted for Contacts..
66 * 69 *
67 * Revision 1.5 2002/11/01 15:10:42 eilers 70 * Revision 1.5 2002/11/01 15:10:42 eilers
68 * Added regExp-search in database for all fields in a contact. 71 * Added regExp-search in database for all fields in a contact.
69 * 72 *
70 * Revision 1.4 2002/10/16 10:52:40 eilers 73 * Revision 1.4 2002/10/16 10:52:40 eilers
71 * Added some docu to the interface and now using the cache infrastucture by zecke.. :) 74 * Added some docu to the interface and now using the cache infrastucture by zecke.. :)
72 * 75 *
73 * Revision 1.3 2002/10/14 16:21:54 eilers 76 * Revision 1.3 2002/10/14 16:21:54 eilers
74 * Some minor interface updates 77 * Some minor interface updates
75 * 78 *
76 * Revision 1.2 2002/10/07 17:34:24 eilers 79 * Revision 1.2 2002/10/07 17:34:24 eilers
77 * added OBackendFactory for advanced backend access 80 * added OBackendFactory for advanced backend access
78 * 81 *
79 * Revision 1.1 2002/09/27 17:11:44 eilers 82 * Revision 1.1 2002/09/27 17:11:44 eilers
80 * Added API for accessing the Contact-Database ! It is compiling, but 83 * Added API for accessing the Contact-Database ! It is compiling, but
81 * please do not expect that anything is working ! 84 * please do not expect that anything is working !
82 * I will debug that stuff in the next time .. 85 * I will debug that stuff in the next time ..
83 * Please read README_COMPILE for compiling ! 86 * Please read README_COMPILE for compiling !
84 * 87 *
85 * 88 *
86 */ 89 */
87 90
88#ifndef _OContactAccessBackend_XML_ 91#ifndef _OContactAccessBackend_XML_
89#define _OContactAccessBackend_XML_ 92#define _OContactAccessBackend_XML_
90 93
91#include "ocontactaccessbackend.h" 94#include "ocontactaccessbackend.h"
92#include "ocontactaccess.h" 95#include "ocontactaccess.h"
93 96
94#include <qlist.h> 97#include <qlist.h>
95#include <qdict.h> 98#include <qdict.h>
96 99
97/* the default xml implementation */ 100/* the default xml implementation */
98/** 101/**
99 * This class is the XML implementation of a Contact backend 102 * This class is the XML implementation of a Contact backend
100 * it does implement everything available for OContact. 103 * it does implement everything available for OContact.
101 * @see OPimAccessBackend for more information of available methods 104 * @see OPimAccessBackend for more information of available methods
102 */ 105 */
103class OContactAccessBackend_XML : public OContactAccessBackend { 106class OContactAccessBackend_XML : public OContactAccessBackend {
104 public: 107 public:
105 OContactAccessBackend_XML ( const QString& appname, const QString& filename = QString::null ); 108 OContactAccessBackend_XML ( const QString& appname, const QString& filename = QString::null );
106 109
107 bool save(); 110 bool save();
108 111
109 bool load (); 112 bool load ();
110 113
111 void clear (); 114 void clear ();
112 115
113 bool wasChangedExternally(); 116 bool wasChangedExternally();
114 117
115 QArray<int> allRecords() const; 118 QArray<int> allRecords() const;
116 119
117 OContact find ( int uid ) const; 120 OContact find ( int uid ) const;
118 121
119 QArray<int> queryByExample ( const OContact &query, int settings, const QDateTime& d = QDateTime() ); 122 QArray<int> queryByExample ( const OContact &query, int settings, const QDateTime& d = QDateTime() );
120 123
121 QArray<int> matchRegexp( const QRegExp &r ) const; 124 QArray<int> matchRegexp( const QRegExp &r ) const;
122 125
123 const uint querySettings(); 126 const uint querySettings();
124 127
125 bool hasQuerySettings (uint querySettings) const; 128 bool hasQuerySettings (uint querySettings) const;
126 129
127 // Currently only asc implemented.. 130 // Currently only asc implemented..
128 QArray<int> sorted( bool asc, int , int , int ); 131 QArray<int> sorted( bool asc, int , int , int );
129 bool add ( const OContact &newcontact ); 132 bool add ( const OContact &newcontact );
130 133
131 bool replace ( const OContact &contact ); 134 bool replace ( const OContact &contact );
132 135
133 bool remove ( int uid ); 136 bool remove ( int uid );
134 bool reload(); 137 bool reload();
135 138
136 private: 139 private:
137 140
138 enum journal_action { ACTION_ADD, ACTION_REMOVE, ACTION_REPLACE }; 141 enum journal_action { ACTION_ADD, ACTION_REMOVE, ACTION_REPLACE };
139 142
140 void addContact_p( const OContact &newcontact ); 143 void addContact_p( const OContact &newcontact );
141 144
142 /* This function loads the xml-database and the journalfile */ 145 /* This function loads the xml-database and the journalfile */
143 bool load( const QString filename, bool isJournal ); 146 bool load( const QString filename, bool isJournal );
144 147
145 148
146 void updateJournal( const OContact& cnt, journal_action action ); 149 void updateJournal( const OContact& cnt, journal_action action );
147 void removeJournal(); 150 void removeJournal();
148 151
149 protected: 152 protected:
150 bool m_changed; 153 bool m_changed;
151 QString m_journalName; 154 QString m_journalName;
152 QString m_fileName; 155 QString m_fileName;
153 QString m_appName; 156 QString m_appName;
154 QList<OContact> m_contactList; 157 QList<OContact> m_contactList;
155 QDateTime m_readtime; 158 QDateTime m_readtime;
156 159
157 QDict<OContact> m_uidToContact; 160 QDict<OContact> m_uidToContact;
158}; 161};
159 162
160#endif 163#endif
diff --git a/libopie/pim/ocontactfields.cpp b/noncore/unsupported/libopie/pim/ocontactfields.cpp
index 0f08a5a..0f08a5a 100644
--- a/libopie/pim/ocontactfields.cpp
+++ b/noncore/unsupported/libopie/pim/ocontactfields.cpp
diff --git a/libopie/pim/ocontactfields.h b/noncore/unsupported/libopie/pim/ocontactfields.h
index f105de7..f105de7 100644
--- a/libopie/pim/ocontactfields.h
+++ b/noncore/unsupported/libopie/pim/ocontactfields.h
diff --git a/libopie/pim/oconversion.cpp b/noncore/unsupported/libopie/pim/oconversion.cpp
index 0d15414..0d15414 100644
--- a/libopie/pim/oconversion.cpp
+++ b/noncore/unsupported/libopie/pim/oconversion.cpp
diff --git a/libopie/pim/oconversion.h b/noncore/unsupported/libopie/pim/oconversion.h
index 4c0a497..4c0a497 100644
--- a/libopie/pim/oconversion.h
+++ b/noncore/unsupported/libopie/pim/oconversion.h
diff --git a/libopie/pim/odatebookaccess.cpp b/noncore/unsupported/libopie/pim/odatebookaccess.cpp
index d95fed6..d95fed6 100644
--- a/libopie/pim/odatebookaccess.cpp
+++ b/noncore/unsupported/libopie/pim/odatebookaccess.cpp
diff --git a/libopie/pim/odatebookaccess.h b/noncore/unsupported/libopie/pim/odatebookaccess.h
index 62196da..62196da 100644
--- a/libopie/pim/odatebookaccess.h
+++ b/noncore/unsupported/libopie/pim/odatebookaccess.h
diff --git a/libopie/pim/odatebookaccessbackend.cpp b/noncore/unsupported/libopie/pim/odatebookaccessbackend.cpp
index f0c5d65..f0c5d65 100644
--- a/libopie/pim/odatebookaccessbackend.cpp
+++ b/noncore/unsupported/libopie/pim/odatebookaccessbackend.cpp
diff --git a/libopie/pim/odatebookaccessbackend.h b/noncore/unsupported/libopie/pim/odatebookaccessbackend.h
index 3472ab3..3472ab3 100644
--- a/libopie/pim/odatebookaccessbackend.h
+++ b/noncore/unsupported/libopie/pim/odatebookaccessbackend.h
diff --git a/libopie/pim/odatebookaccessbackend_sql.cpp b/noncore/unsupported/libopie/pim/odatebookaccessbackend_sql.cpp
index 44dd2bc..5f87afe 100644
--- a/libopie/pim/odatebookaccessbackend_sql.cpp
+++ b/noncore/unsupported/libopie/pim/odatebookaccessbackend_sql.cpp
@@ -1,208 +1,211 @@
1/* 1/*
2 * SQL Backend for the OPIE-Calender Database. 2 * SQL Backend for the OPIE-Calender Database.
3 * 3 *
4 * Copyright (c) 2003 by Stefan Eilers (Eilers.Stefan@epost.de) 4 * Copyright (c) 2003 by Stefan Eilers (Eilers.Stefan@epost.de)
5 * 5 *
6 * ===================================================================== 6 * =====================================================================
7 *This program is free software; you can redistribute it and/or 7 *This program is free software; you can redistribute it and/or
8 *modify it under the terms of the GNU Library General Public 8 *modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
11 * ===================================================================== 11 * =====================================================================
12 * ===================================================================== 12 * =====================================================================
13 * Version: $Id$ 13 * Version: $Id$
14 * ===================================================================== 14 * =====================================================================
15 * History: 15 * History:
16 * $Log$ 16 * $Log$
17 * Revision 1.1 2004/11/16 21:46:08 mickeyl
18 * libopie1 goes into unsupported
19 *
17 * Revision 1.4 2004/03/14 13:50:35 alwin 20 * Revision 1.4 2004/03/14 13:50:35 alwin
18 * namespace correction 21 * namespace correction
19 * 22 *
20 * Revision 1.3 2003/12/22 11:41:39 eilers 23 * Revision 1.3 2003/12/22 11:41:39 eilers
21 * Fixing stupid bug, found by sourcode review.. 24 * Fixing stupid bug, found by sourcode review..
22 * 25 *
23 * Revision 1.2 2003/12/22 10:19:26 eilers 26 * Revision 1.2 2003/12/22 10:19:26 eilers
24 * Finishing implementation of sql-backend for datebook. But I have to 27 * Finishing implementation of sql-backend for datebook. But I have to
25 * port the PIM datebook application to use it, before I could debug the 28 * port the PIM datebook application to use it, before I could debug the
26 * whole stuff. 29 * whole stuff.
27 * Thus, PIM-Database backend is finished, but highly experimental. And some 30 * Thus, PIM-Database backend is finished, but highly experimental. And some
28 * parts are still generic. For instance, the "queryByExample()" methods are 31 * parts are still generic. For instance, the "queryByExample()" methods are
29 * not (or not fully) implemented. Todo: custom-entries not stored. 32 * not (or not fully) implemented. Todo: custom-entries not stored.
30 * The big show stopper: matchRegExp() (needed by OpieSearch) needs regular 33 * The big show stopper: matchRegExp() (needed by OpieSearch) needs regular
31 * expression search in the database, which is not supported by sqlite ! 34 * expression search in the database, which is not supported by sqlite !
32 * Therefore we need either an extended sqlite or a workaround which would 35 * Therefore we need either an extended sqlite or a workaround which would
33 * be very slow and memory consuming.. 36 * be very slow and memory consuming..
34 * 37 *
35 * Revision 1.1 2003/12/08 15:18:12 eilers 38 * Revision 1.1 2003/12/08 15:18:12 eilers
36 * Committing unfinished sql implementation before merging to libopie2 starts.. 39 * Committing unfinished sql implementation before merging to libopie2 starts..
37 * 40 *
38 * 41 *
39 */ 42 */
40 43
41#include <stdio.h> 44#include <stdio.h>
42#include <stdlib.h> 45#include <stdlib.h>
43 46
44#include <qarray.h> 47#include <qarray.h>
45#include <qstringlist.h> 48#include <qstringlist.h>
46 49
47#include <qpe/global.h> 50#include <qpe/global.h>
48 51
49#include <opie2/osqldriver.h> 52#include <opie2/osqldriver.h>
50#include <opie2/osqlmanager.h> 53#include <opie2/osqlmanager.h>
51#include <opie2/osqlquery.h> 54#include <opie2/osqlquery.h>
52 55
53#include "orecur.h" 56#include "orecur.h"
54#include "odatebookaccessbackend_sql.h" 57#include "odatebookaccessbackend_sql.h"
55 58
56using namespace Opie::DB; 59using namespace Opie::DB;
57 60
58 61
59ODateBookAccessBackend_SQL::ODateBookAccessBackend_SQL( const QString& , 62ODateBookAccessBackend_SQL::ODateBookAccessBackend_SQL( const QString& ,
60 const QString& fileName ) 63 const QString& fileName )
61 : ODateBookAccessBackend(), m_driver( NULL ) 64 : ODateBookAccessBackend(), m_driver( NULL )
62{ 65{
63 m_fileName = fileName.isEmpty() ? Global::applicationFileName( "datebook", "datebook.db" ) : fileName; 66 m_fileName = fileName.isEmpty() ? Global::applicationFileName( "datebook", "datebook.db" ) : fileName;
64 67
65 // Get the standart sql-driver from the OSQLManager.. 68 // Get the standart sql-driver from the OSQLManager..
66 OSQLManager man; 69 OSQLManager man;
67 m_driver = man.standard(); 70 m_driver = man.standard();
68 m_driver->setUrl( m_fileName ); 71 m_driver->setUrl( m_fileName );
69 72
70 initFields(); 73 initFields();
71 74
72 load(); 75 load();
73} 76}
74 77
75ODateBookAccessBackend_SQL::~ODateBookAccessBackend_SQL() { 78ODateBookAccessBackend_SQL::~ODateBookAccessBackend_SQL() {
76 if( m_driver ) 79 if( m_driver )
77 delete m_driver; 80 delete m_driver;
78} 81}
79 82
80void ODateBookAccessBackend_SQL::initFields() 83void ODateBookAccessBackend_SQL::initFields()
81{ 84{
82 85
83 // This map contains the translation of the fieldtype id's to 86 // This map contains the translation of the fieldtype id's to
84 // the names of the table columns 87 // the names of the table columns
85 m_fieldMap.insert( OEvent::FUid, "uid" ); 88 m_fieldMap.insert( OEvent::FUid, "uid" );
86 m_fieldMap.insert( OEvent::FCategories, "Categories" ); 89 m_fieldMap.insert( OEvent::FCategories, "Categories" );
87 m_fieldMap.insert( OEvent::FDescription, "Description" ); 90 m_fieldMap.insert( OEvent::FDescription, "Description" );
88 m_fieldMap.insert( OEvent::FLocation, "Location" ); 91 m_fieldMap.insert( OEvent::FLocation, "Location" );
89 m_fieldMap.insert( OEvent::FType, "Type" ); 92 m_fieldMap.insert( OEvent::FType, "Type" );
90 m_fieldMap.insert( OEvent::FAlarm, "Alarm" ); 93 m_fieldMap.insert( OEvent::FAlarm, "Alarm" );
91 m_fieldMap.insert( OEvent::FSound, "Sound" ); 94 m_fieldMap.insert( OEvent::FSound, "Sound" );
92 m_fieldMap.insert( OEvent::FRType, "RType" ); 95 m_fieldMap.insert( OEvent::FRType, "RType" );
93 m_fieldMap.insert( OEvent::FRWeekdays, "RWeekdays" ); 96 m_fieldMap.insert( OEvent::FRWeekdays, "RWeekdays" );
94 m_fieldMap.insert( OEvent::FRPosition, "RPosition" ); 97 m_fieldMap.insert( OEvent::FRPosition, "RPosition" );
95 m_fieldMap.insert( OEvent::FRFreq, "RFreq" ); 98 m_fieldMap.insert( OEvent::FRFreq, "RFreq" );
96 m_fieldMap.insert( OEvent::FRHasEndDate, "RHasEndDate" ); 99 m_fieldMap.insert( OEvent::FRHasEndDate, "RHasEndDate" );
97 m_fieldMap.insert( OEvent::FREndDate, "REndDate" ); 100 m_fieldMap.insert( OEvent::FREndDate, "REndDate" );
98 m_fieldMap.insert( OEvent::FRCreated, "RCreated" ); 101 m_fieldMap.insert( OEvent::FRCreated, "RCreated" );
99 m_fieldMap.insert( OEvent::FRExceptions, "RExceptions" ); 102 m_fieldMap.insert( OEvent::FRExceptions, "RExceptions" );
100 m_fieldMap.insert( OEvent::FStart, "Start" ); 103 m_fieldMap.insert( OEvent::FStart, "Start" );
101 m_fieldMap.insert( OEvent::FEnd, "End" ); 104 m_fieldMap.insert( OEvent::FEnd, "End" );
102 m_fieldMap.insert( OEvent::FNote, "Note" ); 105 m_fieldMap.insert( OEvent::FNote, "Note" );
103 m_fieldMap.insert( OEvent::FTimeZone, "TimeZone" ); 106 m_fieldMap.insert( OEvent::FTimeZone, "TimeZone" );
104 m_fieldMap.insert( OEvent::FRecParent, "RecParent" ); 107 m_fieldMap.insert( OEvent::FRecParent, "RecParent" );
105 m_fieldMap.insert( OEvent::FRecChildren, "Recchildren" ); 108 m_fieldMap.insert( OEvent::FRecChildren, "Recchildren" );
106 109
107 // Create a map that maps the column name to the id 110 // Create a map that maps the column name to the id
108 QMapConstIterator<int, QString> it; 111 QMapConstIterator<int, QString> it;
109 for ( it = ++m_fieldMap.begin(); it != m_fieldMap.end(); ++it ){ 112 for ( it = ++m_fieldMap.begin(); it != m_fieldMap.end(); ++it ){
110 m_reverseFieldMap.insert( it.data(), it.key() ); 113 m_reverseFieldMap.insert( it.data(), it.key() );
111 } 114 }
112 115
113} 116}
114 117
115bool ODateBookAccessBackend_SQL::load() 118bool ODateBookAccessBackend_SQL::load()
116{ 119{
117 if (!m_driver->open() ) 120 if (!m_driver->open() )
118 return false; 121 return false;
119 122
120 // Don't expect that the database exists. 123 // Don't expect that the database exists.
121 // It is save here to create the table, even if it 124 // It is save here to create the table, even if it
122 // do exist. ( Is that correct for all databases ?? ) 125 // do exist. ( Is that correct for all databases ?? )
123 QStringqu = "create table datebook( uid INTEGER PRIMARY KEY "; 126 QStringqu = "create table datebook( uid INTEGER PRIMARY KEY ";
124 127
125 QMap<int, QString>::Iterator it; 128 QMap<int, QString>::Iterator it;
126 for ( it = ++m_fieldMap.begin(); it != m_fieldMap.end(); ++it ){ 129 for ( it = ++m_fieldMap.begin(); it != m_fieldMap.end(); ++it ){
127 qu += QString( ",%1 VARCHAR(10)" ).arg( it.data() ); 130 qu += QString( ",%1 VARCHAR(10)" ).arg( it.data() );
128 } 131 }
129 qu += " );"; 132 qu += " );";
130 133
131 qu += "create table custom_data( uid INTEGER, id INTEGER, type VARCHAR, priority INTEGER, value VARCHAR, PRIMARY KEY /* identifier */ (uid, id) );"; 134 qu += "create table custom_data( uid INTEGER, id INTEGER, type VARCHAR, priority INTEGER, value VARCHAR, PRIMARY KEY /* identifier */ (uid, id) );";
132 135
133 qWarning( "command: %s", qu.latin1() ); 136 qWarning( "command: %s", qu.latin1() );
134 137
135 OSQLRawQuery raw( qu ); 138 OSQLRawQuery raw( qu );
136 OSQLResult res = m_driver->query( &raw ); 139 OSQLResult res = m_driver->query( &raw );
137 if ( res.state() != OSQLResult::Success ) 140 if ( res.state() != OSQLResult::Success )
138 return false; 141 return false;
139 142
140 update(); 143 update();
141 144
142 return true; 145 return true;
143} 146}
144 147
145void ODateBookAccessBackend_SQL::update() 148void ODateBookAccessBackend_SQL::update()
146{ 149{
147 150
148 QString qu = "select uid from datebook"; 151 QString qu = "select uid from datebook";
149 OSQLRawQuery raw( qu ); 152 OSQLRawQuery raw( qu );
150 OSQLResult res = m_driver->query( &raw ); 153 OSQLResult res = m_driver->query( &raw );
151 if ( res.state() != OSQLResult::Success ){ 154 if ( res.state() != OSQLResult::Success ){
152 // m_uids.clear(); 155 // m_uids.clear();
153 return; 156 return;
154 } 157 }
155 158
156 m_uids = extractUids( res ); 159 m_uids = extractUids( res );
157 160
158} 161}
159 162
160bool ODateBookAccessBackend_SQL::reload() 163bool ODateBookAccessBackend_SQL::reload()
161{ 164{
162 return load(); 165 return load();
163} 166}
164 167
165bool ODateBookAccessBackend_SQL::save() 168bool ODateBookAccessBackend_SQL::save()
166{ 169{
167 return m_driver->close(); // Shouldn't m_driver->sync be better than close ? (eilers) 170 return m_driver->close(); // Shouldn't m_driver->sync be better than close ? (eilers)
168} 171}
169 172
170QArray<int> ODateBookAccessBackend_SQL::allRecords()const 173QArray<int> ODateBookAccessBackend_SQL::allRecords()const
171{ 174{
172 return m_uids; 175 return m_uids;
173} 176}
174 177
175QArray<int> ODateBookAccessBackend_SQL::queryByExample(const OEvent&, int, const QDateTime& ) { 178QArray<int> ODateBookAccessBackend_SQL::queryByExample(const OEvent&, int, const QDateTime& ) {
176 return QArray<int>(); 179 return QArray<int>();
177} 180}
178 181
179void ODateBookAccessBackend_SQL::clear() 182void ODateBookAccessBackend_SQL::clear()
180{ 183{
181 QString qu = "drop table datebook;"; 184 QString qu = "drop table datebook;";
182 qu += "drop table custom_data;"; 185 qu += "drop table custom_data;";
183 186
184 OSQLRawQuery raw( qu ); 187 OSQLRawQuery raw( qu );
185 OSQLResult res = m_driver->query( &raw ); 188 OSQLResult res = m_driver->query( &raw );
186 189
187 reload(); 190 reload();
188} 191}
189 192
190 193
191OEvent ODateBookAccessBackend_SQL::find( int uid ) const{ 194OEvent ODateBookAccessBackend_SQL::find( int uid ) const{
192 QString qu = "select *"; 195 QString qu = "select *";
193 qu += "from datebook where uid = " + QString::number(uid); 196 qu += "from datebook where uid = " + QString::number(uid);
194 197
195 OSQLRawQuery raw( qu ); 198 OSQLRawQuery raw( qu );
196 OSQLResult res = m_driver->query( &raw ); 199 OSQLResult res = m_driver->query( &raw );
197 200
198 OSQLResultItem resItem = res.first(); 201 OSQLResultItem resItem = res.first();
199 202
200 // Create Map for date event and insert UID 203 // Create Map for date event and insert UID
201 QMap<int,QString> dateEventMap; 204 QMap<int,QString> dateEventMap;
202 dateEventMap.insert( OEvent::FUid, QString::number( uid ) ); 205 dateEventMap.insert( OEvent::FUid, QString::number( uid ) );
203 206
204 // Now insert the data out of the columns into the map. 207 // Now insert the data out of the columns into the map.
205 QMapConstIterator<int, QString> it; 208 QMapConstIterator<int, QString> it;
206 for ( it = ++m_fieldMap.begin(); it != m_fieldMap.end(); ++it ){ 209 for ( it = ++m_fieldMap.begin(); it != m_fieldMap.end(); ++it ){
207 dateEventMap.insert( m_reverseFieldMap[*it], resItem.data( *it ) ); 210 dateEventMap.insert( m_reverseFieldMap[*it], resItem.data( *it ) );
208 } 211 }
diff --git a/libopie/pim/odatebookaccessbackend_sql.h b/noncore/unsupported/libopie/pim/odatebookaccessbackend_sql.h
index ba514bc..ba514bc 100644
--- a/libopie/pim/odatebookaccessbackend_sql.h
+++ b/noncore/unsupported/libopie/pim/odatebookaccessbackend_sql.h
diff --git a/libopie/pim/odatebookaccessbackend_xml.cpp b/noncore/unsupported/libopie/pim/odatebookaccessbackend_xml.cpp
index 929d004..929d004 100644
--- a/libopie/pim/odatebookaccessbackend_xml.cpp
+++ b/noncore/unsupported/libopie/pim/odatebookaccessbackend_xml.cpp
diff --git a/libopie/pim/odatebookaccessbackend_xml.h b/noncore/unsupported/libopie/pim/odatebookaccessbackend_xml.h
index a5cc0fc..a5cc0fc 100644
--- a/libopie/pim/odatebookaccessbackend_xml.h
+++ b/noncore/unsupported/libopie/pim/odatebookaccessbackend_xml.h
diff --git a/libopie/pim/oevent.cpp b/noncore/unsupported/libopie/pim/oevent.cpp
index 9b31957..9b31957 100644
--- a/libopie/pim/oevent.cpp
+++ b/noncore/unsupported/libopie/pim/oevent.cpp
diff --git a/libopie/pim/oevent.h b/noncore/unsupported/libopie/pim/oevent.h
index 9eb948f..9eb948f 100644
--- a/libopie/pim/oevent.h
+++ b/noncore/unsupported/libopie/pim/oevent.h
diff --git a/libopie/pim/opimaccessbackend.h b/noncore/unsupported/libopie/pim/opimaccessbackend.h
index fd264fc..fd264fc 100644
--- a/libopie/pim/opimaccessbackend.h
+++ b/noncore/unsupported/libopie/pim/opimaccessbackend.h
diff --git a/libopie/pim/opimaccesstemplate.h b/noncore/unsupported/libopie/pim/opimaccesstemplate.h
index ecbeb68..ecbeb68 100644
--- a/libopie/pim/opimaccesstemplate.h
+++ b/noncore/unsupported/libopie/pim/opimaccesstemplate.h
diff --git a/libopie/pim/opimcache.h b/noncore/unsupported/libopie/pim/opimcache.h
index 7f7cff5..7f7cff5 100644
--- a/libopie/pim/opimcache.h
+++ b/noncore/unsupported/libopie/pim/opimcache.h
diff --git a/libopie/pim/opimmaintainer.cpp b/noncore/unsupported/libopie/pim/opimmaintainer.cpp
index 92cb25a..92cb25a 100644
--- a/libopie/pim/opimmaintainer.cpp
+++ b/noncore/unsupported/libopie/pim/opimmaintainer.cpp
diff --git a/libopie/pim/opimmaintainer.h b/noncore/unsupported/libopie/pim/opimmaintainer.h
index 793d066..793d066 100644
--- a/libopie/pim/opimmaintainer.h
+++ b/noncore/unsupported/libopie/pim/opimmaintainer.h
diff --git a/libopie/pim/opimmainwindow.cpp b/noncore/unsupported/libopie/pim/opimmainwindow.cpp
index 99a0333..99a0333 100644
--- a/libopie/pim/opimmainwindow.cpp
+++ b/noncore/unsupported/libopie/pim/opimmainwindow.cpp
diff --git a/libopie/pim/opimmainwindow.h b/noncore/unsupported/libopie/pim/opimmainwindow.h
index 855d364..855d364 100644
--- a/libopie/pim/opimmainwindow.h
+++ b/noncore/unsupported/libopie/pim/opimmainwindow.h
diff --git a/libopie/pim/opimnotify.cpp b/noncore/unsupported/libopie/pim/opimnotify.cpp
index af5514b..af5514b 100644
--- a/libopie/pim/opimnotify.cpp
+++ b/noncore/unsupported/libopie/pim/opimnotify.cpp
diff --git a/libopie/pim/opimnotify.h b/noncore/unsupported/libopie/pim/opimnotify.h
index 58417db..58417db 100644
--- a/libopie/pim/opimnotify.h
+++ b/noncore/unsupported/libopie/pim/opimnotify.h
diff --git a/libopie/pim/opimnotifymanager.cpp b/noncore/unsupported/libopie/pim/opimnotifymanager.cpp
index d6f0ead..d6f0ead 100644
--- a/libopie/pim/opimnotifymanager.cpp
+++ b/noncore/unsupported/libopie/pim/opimnotifymanager.cpp
diff --git a/libopie/pim/opimnotifymanager.h b/noncore/unsupported/libopie/pim/opimnotifymanager.h
index f3c22f9..f3c22f9 100644
--- a/libopie/pim/opimnotifymanager.h
+++ b/noncore/unsupported/libopie/pim/opimnotifymanager.h
diff --git a/libopie/pim/opimrecord.cpp b/noncore/unsupported/libopie/pim/opimrecord.cpp
index 2365748..2365748 100644
--- a/libopie/pim/opimrecord.cpp
+++ b/noncore/unsupported/libopie/pim/opimrecord.cpp
diff --git a/libopie/pim/opimrecord.h b/noncore/unsupported/libopie/pim/opimrecord.h
index 3d774e2..3d774e2 100644
--- a/libopie/pim/opimrecord.h
+++ b/noncore/unsupported/libopie/pim/opimrecord.h
diff --git a/libopie/pim/opimresolver.cpp b/noncore/unsupported/libopie/pim/opimresolver.cpp
index 4ebbd6e..4ebbd6e 100644
--- a/libopie/pim/opimresolver.cpp
+++ b/noncore/unsupported/libopie/pim/opimresolver.cpp
diff --git a/libopie/pim/opimresolver.h b/noncore/unsupported/libopie/pim/opimresolver.h
index 1ce1619..1ce1619 100644
--- a/libopie/pim/opimresolver.h
+++ b/noncore/unsupported/libopie/pim/opimresolver.h
diff --git a/libopie/pim/opimstate.cpp b/noncore/unsupported/libopie/pim/opimstate.cpp
index 6fb2feb..6fb2feb 100644
--- a/libopie/pim/opimstate.cpp
+++ b/noncore/unsupported/libopie/pim/opimstate.cpp
diff --git a/libopie/pim/opimstate.h b/noncore/unsupported/libopie/pim/opimstate.h
index cf6af46..cf6af46 100644
--- a/libopie/pim/opimstate.h
+++ b/noncore/unsupported/libopie/pim/opimstate.h
diff --git a/libopie/pim/opimxref.cpp b/noncore/unsupported/libopie/pim/opimxref.cpp
index 8eefbd8..8eefbd8 100644
--- a/libopie/pim/opimxref.cpp
+++ b/noncore/unsupported/libopie/pim/opimxref.cpp
diff --git a/libopie/pim/opimxref.h b/noncore/unsupported/libopie/pim/opimxref.h
index 6852651..6852651 100644
--- a/libopie/pim/opimxref.h
+++ b/noncore/unsupported/libopie/pim/opimxref.h
diff --git a/libopie/pim/opimxrefmanager.cpp b/noncore/unsupported/libopie/pim/opimxrefmanager.cpp
index 58bfd24..58bfd24 100644
--- a/libopie/pim/opimxrefmanager.cpp
+++ b/noncore/unsupported/libopie/pim/opimxrefmanager.cpp
diff --git a/libopie/pim/opimxrefmanager.h b/noncore/unsupported/libopie/pim/opimxrefmanager.h
index c485e98..c485e98 100644
--- a/libopie/pim/opimxrefmanager.h
+++ b/noncore/unsupported/libopie/pim/opimxrefmanager.h
diff --git a/libopie/pim/opimxrefpartner.cpp b/noncore/unsupported/libopie/pim/opimxrefpartner.cpp
index 6ef3efb..6ef3efb 100644
--- a/libopie/pim/opimxrefpartner.cpp
+++ b/noncore/unsupported/libopie/pim/opimxrefpartner.cpp
diff --git a/libopie/pim/opimxrefpartner.h b/noncore/unsupported/libopie/pim/opimxrefpartner.h
index d76e384..d76e384 100644
--- a/libopie/pim/opimxrefpartner.h
+++ b/noncore/unsupported/libopie/pim/opimxrefpartner.h
diff --git a/libopie/pim/orecordlist.h b/noncore/unsupported/libopie/pim/orecordlist.h
index 5211f57..5211f57 100644
--- a/libopie/pim/orecordlist.h
+++ b/noncore/unsupported/libopie/pim/orecordlist.h
diff --git a/libopie/pim/orecur.cpp b/noncore/unsupported/libopie/pim/orecur.cpp
index f46f22e..f46f22e 100644
--- a/libopie/pim/orecur.cpp
+++ b/noncore/unsupported/libopie/pim/orecur.cpp
diff --git a/libopie/pim/orecur.h b/noncore/unsupported/libopie/pim/orecur.h
index d7ecd90..d7ecd90 100644
--- a/libopie/pim/orecur.h
+++ b/noncore/unsupported/libopie/pim/orecur.h
diff --git a/libopie/pim/otemplatebase.h b/noncore/unsupported/libopie/pim/otemplatebase.h
index cadac74..cadac74 100644
--- a/libopie/pim/otemplatebase.h
+++ b/noncore/unsupported/libopie/pim/otemplatebase.h
diff --git a/libopie/pim/otimezone.cpp b/noncore/unsupported/libopie/pim/otimezone.cpp
index 34659c3..34659c3 100644
--- a/libopie/pim/otimezone.cpp
+++ b/noncore/unsupported/libopie/pim/otimezone.cpp
diff --git a/libopie/pim/otimezone.h b/noncore/unsupported/libopie/pim/otimezone.h
index bb08349..bb08349 100644
--- a/libopie/pim/otimezone.h
+++ b/noncore/unsupported/libopie/pim/otimezone.h
diff --git a/libopie/pim/otodo.cpp b/noncore/unsupported/libopie/pim/otodo.cpp
index b2c76f8..b2c76f8 100644
--- a/libopie/pim/otodo.cpp
+++ b/noncore/unsupported/libopie/pim/otodo.cpp
diff --git a/libopie/pim/otodo.h b/noncore/unsupported/libopie/pim/otodo.h
index 6df98b9..6df98b9 100644
--- a/libopie/pim/otodo.h
+++ b/noncore/unsupported/libopie/pim/otodo.h
diff --git a/libopie/pim/otodoaccess.cpp b/noncore/unsupported/libopie/pim/otodoaccess.cpp
index 37f6fbc..37f6fbc 100644
--- a/libopie/pim/otodoaccess.cpp
+++ b/noncore/unsupported/libopie/pim/otodoaccess.cpp
diff --git a/libopie/pim/otodoaccess.h b/noncore/unsupported/libopie/pim/otodoaccess.h
index 916923f..916923f 100644
--- a/libopie/pim/otodoaccess.h
+++ b/noncore/unsupported/libopie/pim/otodoaccess.h
diff --git a/libopie/pim/otodoaccessbackend.cpp b/noncore/unsupported/libopie/pim/otodoaccessbackend.cpp
index baaeecc..baaeecc 100644
--- a/libopie/pim/otodoaccessbackend.cpp
+++ b/noncore/unsupported/libopie/pim/otodoaccessbackend.cpp
diff --git a/libopie/pim/otodoaccessbackend.h b/noncore/unsupported/libopie/pim/otodoaccessbackend.h
index 6be95bc..6be95bc 100644
--- a/libopie/pim/otodoaccessbackend.h
+++ b/noncore/unsupported/libopie/pim/otodoaccessbackend.h
diff --git a/libopie/pim/otodoaccesssql.cpp b/noncore/unsupported/libopie/pim/otodoaccesssql.cpp
index fd01a42..fd01a42 100644
--- a/libopie/pim/otodoaccesssql.cpp
+++ b/noncore/unsupported/libopie/pim/otodoaccesssql.cpp
diff --git a/libopie/pim/otodoaccesssql.h b/noncore/unsupported/libopie/pim/otodoaccesssql.h
index 72214de..72214de 100644
--- a/libopie/pim/otodoaccesssql.h
+++ b/noncore/unsupported/libopie/pim/otodoaccesssql.h
diff --git a/libopie/pim/otodoaccessvcal.cpp b/noncore/unsupported/libopie/pim/otodoaccessvcal.cpp
index 6415952..6415952 100644
--- a/libopie/pim/otodoaccessvcal.cpp
+++ b/noncore/unsupported/libopie/pim/otodoaccessvcal.cpp
diff --git a/libopie/pim/otodoaccessvcal.h b/noncore/unsupported/libopie/pim/otodoaccessvcal.h
index 2b17147..2b17147 100644
--- a/libopie/pim/otodoaccessvcal.h
+++ b/noncore/unsupported/libopie/pim/otodoaccessvcal.h
diff --git a/libopie/pim/otodoaccessxml.cpp b/noncore/unsupported/libopie/pim/otodoaccessxml.cpp
index 4a5cb33..4a5cb33 100644
--- a/libopie/pim/otodoaccessxml.cpp
+++ b/noncore/unsupported/libopie/pim/otodoaccessxml.cpp
diff --git a/libopie/pim/otodoaccessxml.h b/noncore/unsupported/libopie/pim/otodoaccessxml.h
index e4850a1..e4850a1 100644
--- a/libopie/pim/otodoaccessxml.h
+++ b/noncore/unsupported/libopie/pim/otodoaccessxml.h
diff --git a/libopie/sharp_compat.cpp b/noncore/unsupported/libopie/sharp_compat.cpp
index 1d16a09..1d16a09 100644
--- a/libopie/sharp_compat.cpp
+++ b/noncore/unsupported/libopie/sharp_compat.cpp
diff --git a/libopie/todayconfigwidget.h b/noncore/unsupported/libopie/todayconfigwidget.h
index f3501a1..f3501a1 100644
--- a/libopie/todayconfigwidget.h
+++ b/noncore/unsupported/libopie/todayconfigwidget.h
diff --git a/libopie/todayplugininterface.h b/noncore/unsupported/libopie/todayplugininterface.h
index 5dfeaa8..5dfeaa8 100644
--- a/libopie/todayplugininterface.h
+++ b/noncore/unsupported/libopie/todayplugininterface.h
diff --git a/libopie/xmltree.cc b/noncore/unsupported/libopie/xmltree.cc
index 27db5b3..27db5b3 100644
--- a/libopie/xmltree.cc
+++ b/noncore/unsupported/libopie/xmltree.cc
diff --git a/libopie/xmltree.h b/noncore/unsupported/libopie/xmltree.h
index 4b6bdfa..4b6bdfa 100644
--- a/libopie/xmltree.h
+++ b/noncore/unsupported/libopie/xmltree.h