author | zecke <zecke> | 2002-09-21 15:29:37 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-09-21 15:29:37 (UTC) |
commit | 9176329414e7f85017dad819d3f819dc7a2b5fa0 (patch) (unidiff) | |
tree | 9b618d8b960153008aa3ebf5c512d8460aea5d5d | |
parent | 978dcbe44df66d4efbbc12bdacdcb293358581fd (diff) | |
download | opie-9176329414e7f85017dad819d3f819dc7a2b5fa0.zip opie-9176329414e7f85017dad819d3f819dc7a2b5fa0.tar.gz opie-9176329414e7f85017dad819d3f819dc7a2b5fa0.tar.bz2 |
THE OPIE PIM Design.....
I did not know what to write
-rw-r--r-- | libopie/pim/DESIGN | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/libopie/pim/DESIGN b/libopie/pim/DESIGN new file mode 100644 index 0000000..d878f45 --- a/dev/null +++ b/libopie/pim/DESIGN | |||
@@ -0,0 +1,50 @@ | |||
1 | Hija to the DESIGN of our OPIE PIM stuff | ||
2 | |||
3 | This design was firstly discussed in the train | ||
4 | from Frankfurt to Hannover between me (zecke ) and eilers. | ||
5 | |||
6 | We had a look at our pim implementation and the one from | ||
7 | trolltech and we looked what was missing. | ||
8 | |||
9 | GOALS: | ||
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 | |||
18 | GENERAL: | ||
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 | |||
24 | We've a 'public' and 'private' part in our lib | ||
25 | OPimAccessTemplate is the public part. This will be used | ||
26 | by 3rd party developers to access the PIMs. | ||
27 | OPimAccessBackend is the backend. You could also call it | ||
28 | resource. | ||
29 | |||
30 | Both things need to be implemented for different kind of records. | ||
31 | By using templates we can make sure we share code and the reason | ||
32 | not to use simple inheretance is that we can specialise quite easy. | ||
33 | |||
34 | For example we have OTodoAccess : public OPimAccessTemplate<OTodo>; | ||
35 | the we would do | ||
36 | OTodoAccess::List list = otodoAccess.all(); | ||
37 | OTodoAccess::List::Iterator it; | ||
38 | for( it = list.begin(); it != list.end(); ++it ); | ||
39 | |||
40 | |||
41 | as you can see from here it just behaves like you expect from Qt or STL. | ||
42 | |||
43 | The kewlest thing is that List and List::Iterator is free to use if you | ||
44 | want to implement your own OPimAccessTemplate. | ||
45 | You just have to sub class it and voila you're done | ||
46 | |||
47 | |||
48 | Hope you enjoy using OPIE PIM | ||
49 | |||
50 | regards Holger 'zecke' Freyther \ No newline at end of file | ||