summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/DESIGN14
1 files changed, 13 insertions, 1 deletions
diff --git a/libopie/pim/DESIGN b/libopie/pim/DESIGN
index d878f45..4def7b9 100644
--- a/libopie/pim/DESIGN
+++ b/libopie/pim/DESIGN
@@ -1,50 +1,62 @@
1Hija to the DESIGN of our OPIE PIM stuff 1Hija to the DESIGN of our OPIE PIM stuff
2 2
3This design was firstly discussed in the train 3This design was firstly discussed in the train
4from Frankfurt to Hannover between me (zecke ) and eilers. 4from Frankfurt to Hannover between me (zecke ) and eilers.
5 5
6We had a look at our pim implementation and the one from 6We had a look at our pim implementation and the one from
7trolltech and we looked what was missing. 7trolltech and we looked what was missing.
8 8
9GOALS: 9GOALS:
10 - clean implementation 10 - clean implementation
11 - share code 11 - share code
12 - ObjectOriented Design 12 - ObjectOriented Design
13 - Scalable 13 - Scalable
14 - Integration into common solutions like STL and Qt 14 - Integration into common solutions like STL and Qt
15 - Addition 15 - Addition
16 - Ease of Use 16 - Ease of Use
17 17
18GENERAL: 18GENERAL:
19 - use templates 19 - use templates
20 - have a common base class for all Records OPimRecord 20 - have a common base class for all Records OPimRecord
21 - use references instead of pointers 21 - use references instead of pointers
22 - make use of QShared internally memory consumption 22 - make use of QShared internally memory consumption
23 23
24We've a 'public' and 'private' part in our lib 24We've a 'public' and 'private' part in our lib
25OPimAccessTemplate is the public part. This will be used 25OPimAccessTemplate is the public part. This will be used
26by 3rd party developers to access the PIMs. 26by 3rd party developers to access the PIMs.
27OPimAccessBackend is the backend. You could also call it 27OPimAccessBackend is the backend. You could also call it
28resource. 28resource.
29 29
30Both things need to be implemented for different kind of records. 30Both things need to be implemented for different kind of records.
31By using templates we can make sure we share code and the reason 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. 32not to use simple inheretance is that we can specialise quite easy.
33 33
34For example we have OTodoAccess : public OPimAccessTemplate<OTodo>; 34For example we have OTodoAccess : public OPimAccessTemplate<OTodo>;
35the we would do 35the we would do
36OTodoAccess::List list = otodoAccess.all(); 36OTodoAccess::List list = otodoAccess.all();
37OTodoAccess::List::Iterator it; 37OTodoAccess::List::Iterator it;
38for( it = list.begin(); it != list.end(); ++it ); 38for( it = list.begin(); it != list.end(); ++it );
39 39
40 40
41as you can see from here it just behaves like you expect from Qt or STL. 41as you can see from here it just behaves like you expect from Qt or STL.
42 42
43The kewlest thing is that List and List::Iterator is free to use if you 43The kewlest thing is that List and List::Iterator is free to use if you
44want to implement your own OPimAccessTemplate. 44want to implement your own OPimAccessTemplate.
45You just have to sub class it and voila you're done 45You just have to sub class it and voila you're done
46 46
47 47
48Hope you enjoy using OPIE PIM 48Hope you enjoy using OPIE PIM
49 49
50regards Holger 'zecke' Freyther \ No newline at end of file 50regards Holger 'zecke' Freyther
51
52
53Comment by Stefan Eilers:
54
55The opimaccesstemplate defines "SortOrder":
56I think sortorder is the wrong name for the meaning of it and
57it should be defined by the childs of opimaccesstemplate (every
58implementation may use different values for this..)
59
60
61
62