author | eilers <eilers> | 2005-03-25 18:05:34 (UTC) |
---|---|---|
committer | eilers <eilers> | 2005-03-25 18:05:34 (UTC) |
commit | 28ad1605bc23bda70b4af757ddac7c252732e8d0 (patch) (unidiff) | |
tree | 6862f32d7dcfa12791c8df1eeb40b88b57a4cb7b /development/pim/pim_howto | |
parent | d5415bbb5918ba26882108ba710373d85a112327 (diff) | |
download | opie-28ad1605bc23bda70b4af757ddac7c252732e8d0.zip opie-28ad1605bc23bda70b4af757ddac7c252732e8d0.tar.gz opie-28ad1605bc23bda70b4af757ddac7c252732e8d0.tar.bz2 |
Remove some things which makes it hard to understand this paper by a beginner..
-rw-r--r-- | development/pim/pim_howto/pim_howto.lyx | 252 |
1 files changed, 163 insertions, 89 deletions
diff --git a/development/pim/pim_howto/pim_howto.lyx b/development/pim/pim_howto/pim_howto.lyx index 1e43d63..a99b0df 100644 --- a/development/pim/pim_howto/pim_howto.lyx +++ b/development/pim/pim_howto/pim_howto.lyx | |||
@@ -1,65 +1,34 @@ | |||
1 | #LyX 1.3 created this file. For more info see http://www.lyx.org/ | 1 | #LyX 1.3 created this file. For more info see http://www.lyx.org/ |
2 | \lyxformat 221 | 2 | \lyxformat 221 |
3 | \textclass scrbook | 3 | \textclass scrbook |
4 | \begin_preamble | 4 | \begin_preamble |
5 | \fancyhead{} | 5 | \fancyhead{} |
6 | \fancyfoot{} | 6 | \fancyfoot{} |
7 | \fancyhead[LE,RO]{\slshape \leftmark} | 7 | \fancyhead[LE,RO]{\slshape \leftmark} |
8 | \fancyhead[LO,RE]{\slshape \leftmark} | 8 | \fancyhead[LO,RE]{\slshape \leftmark} |
9 | \fancyhead[RE,LO]{\thepage} | 9 | \fancyhead[RE,LO]{\thepage} |
10 | %\fancyhead[LO,RE]{} | 10 | %\fancyhead[LO,RE]{} |
11 | % \usepackage{ae} | 11 | % \usepackage{ae} |
12 | \usepackage[T1]{fontenc} | ||
12 | \usepackage[bookmarksopen,colorlinks]{hyperref} | 13 | \usepackage[bookmarksopen,colorlinks]{hyperref} |
13 | % \pdfoutput=1 | 14 | % \pdfoutput=1 |
14 | % \pdfcompresslevel=8 | 15 | % \pdfcompresslevel=8 |
15 | % \pdfinfo{ | 16 | % \pdfinfo{ |
16 | % /Title ClearSim-RealtTime und Andere | 17 | % /Title ClearSim-RealtTime und Andere |
17 | % /Creator (Tex) | 18 | % /Creator (Tex) |
18 | % /Author (Stefan Eilers) | 19 | % /Author (Stefan Eilers) |
19 | % /Subject () | 20 | % /Subject () |
20 | % /Keywords (Simulation,Real-Time,ClearSim,prototype,efsm) | 21 | % /Keywords (Simulation,Real-Time,ClearSim,prototype,efsm) |
21 | % } | 22 | % } |
22 | \renewcommand\familydefault{\sfdefault} | ||
23 | |||
24 | \usepackage{multicol} | ||
25 | \newcommand\NrCol{3} | ||
26 | \renewenvironment{theindex} | ||
27 | {\columnseprule \z@ | ||
28 | \columnsep 35\p@ | ||
29 | \section*{\indexname}% | ||
30 | \@mkboth{\MakeUppercase\indexname}% | ||
31 | {\MakeUppercase\indexname}% | ||
32 | \begin{multicols}{\NrCol}\thispagestyle{plain}\parindent\z@ | ||
33 | \parskip\z@ \@plus .3\p@\relax | ||
34 | \let\item\@idxitem} | ||
35 | {\clearpage % | ||
36 | \end{multicols}} | ||
37 | |||
38 | \renewenvironment{theindex} | ||
39 | {\if@twocolumn | ||
40 | \@restonecolfalse | ||
41 | \else | ||
42 | \@restonecoltrue | ||
43 | \fi | ||
44 | \columnseprule \z@ | ||
45 | \columnsep 35\p@ | ||
46 | \twocolumn[\refstepcounter{section}% | ||
47 | \section{\indexname}]% | ||
48 | \@mkboth{\MakeUppercase\indexname}% | ||
49 | {\MakeUppercase\indexname}% | ||
50 | \thispagestyle{plain}\parindent\z@ | ||
51 | \parskip\z@ \@plus .3\p@\relax | ||
52 | \let\item\@idxitem} | ||
53 | {\if@restonecol\onecolumn\else\clearpage\fi} | ||
54 | \end_preamble | 23 | \end_preamble |
55 | \language american | 24 | \language american |
56 | \inputencoding default | 25 | \inputencoding default |
57 | \fontscheme ae | 26 | \fontscheme ae |
58 | \graphics default | 27 | \graphics default |
59 | \float_placement htbp | 28 | \float_placement htbp |
60 | \paperfontsize default | 29 | \paperfontsize default |
61 | \spacing single | 30 | \spacing single |
62 | \papersize a4paper | 31 | \papersize a4paper |
63 | \paperpackage widemarginsa4 | 32 | \paperpackage widemarginsa4 |
64 | \use_geometry 0 | 33 | \use_geometry 0 |
65 | \use_amsmath 0 | 34 | \use_amsmath 0 |
@@ -73,30 +42,30 @@ | |||
73 | \quotes_language english | 42 | \quotes_language english |
74 | \quotes_times 2 | 43 | \quotes_times 2 |
75 | \papercolumns 1 | 44 | \papercolumns 1 |
76 | \papersides 2 | 45 | \papersides 2 |
77 | \paperpagestyle fancy | 46 | \paperpagestyle fancy |
78 | 47 | ||
79 | \layout Title | 48 | \layout Title |
80 | 49 | ||
81 | How to use the Opie-Pim API without getting tired! | 50 | How to use the Opie-Pim API without getting tired! |
82 | \newline | 51 | \newline |
83 | (Aka: Hitchhikers Guide Through the Opie-Pim API) | 52 | (Aka: Hitchhikers Guide Through the Opie-Pim API) |
84 | \newline | 53 | \newline |
85 | (Pre V 0.1) | 54 | (V 0.2) |
86 | \layout Author | 55 | \layout Author |
87 | 56 | ||
88 | 57 | ||
89 | \family sans | 58 | \family sans |
90 | Stefan Eilers | 59 | Stefan Eilers (stefan@eilers-online.net) |
91 | \layout Section* | 60 | \layout Section* |
92 | 61 | ||
93 | 62 | ||
94 | \family sans | 63 | \family sans |
95 | Abstract | 64 | Abstract |
96 | \layout Standard | 65 | \layout Standard |
97 | 66 | ||
98 | The Opie-Pim API provides a powerfull access interface to the PIM (Personal | 67 | The Opie-Pim API provides a powerfull access interface to the PIM (Personal |
99 | Information Management) data which contains your contact information, the | 68 | Information Management) data which contains your contact information, the |
100 | dates in your calendar tool (in this paper called datebook events) and | 69 | dates in your calendar tool (in this paper called datebook events) and |
101 | your todo events. | 70 | your todo events. |
102 | Beside providing full featured access to this information, it covers the | 71 | Beside providing full featured access to this information, it covers the |
@@ -105,24 +74,34 @@ The Opie-Pim API provides a powerfull access interface to the PIM (Personal | |||
105 | 74 | ||
106 | \layout Standard | 75 | \layout Standard |
107 | 76 | ||
108 | While starting to read the automatically generated API-documentation, the | 77 | While starting to read the automatically generated API-documentation, the |
109 | user may be confused by a lot of unnecessary classes and details which | 78 | user may be confused by a lot of unnecessary classes and details which |
110 | makes the quick start not as easy as possible. | 79 | makes the quick start not as easy as possible. |
111 | Due to the fact that a user will not need most of the details, this paper | 80 | Due to the fact that a user will not need most of the details, this paper |
112 | should help to start to become confortable with those details he need to | 81 | should help to start to become confortable with those details he need to |
113 | solve his problems. | 82 | solve his problems. |
114 | \layout Standard | 83 | \layout Standard |
115 | 84 | ||
116 | 85 | ||
86 | \series bold | ||
87 | You will find a more recent version at: | ||
88 | \begin_inset LatexCommand \url{http://www.sra.uni-hannover.de/~eilers/apihowto/pim_howto.pdf} | ||
89 | |||
90 | \end_inset | ||
91 | |||
92 | |||
93 | \layout Standard | ||
94 | |||
95 | |||
117 | \begin_inset LatexCommand \tableofcontents{} | 96 | \begin_inset LatexCommand \tableofcontents{} |
118 | 97 | ||
119 | \end_inset | 98 | \end_inset |
120 | 99 | ||
121 | 100 | ||
122 | \layout Chapter | 101 | \layout Chapter |
123 | 102 | ||
124 | Introduction | 103 | Introduction |
125 | \layout Standard | 104 | \layout Standard |
126 | 105 | ||
127 | Before starting to jump into the work, we should introduce some specialties | 106 | Before starting to jump into the work, we should introduce some specialties |
128 | of the PIM API, first. | 107 | of the PIM API, first. |
@@ -208,68 +187,91 @@ defaultAccess() | |||
208 | \series bold | 187 | \series bold |
209 | OPimAccessFactory | 188 | OPimAccessFactory |
210 | \series default | 189 | \series default |
211 | (see | 190 | (see |
212 | \begin_inset LatexCommand \url{http://www.sra.uni-hannover.de/~eilers/apidocs/pim2/html/classOpie_1_1OPimAccessFactory.html} | 191 | \begin_inset LatexCommand \url{http://www.sra.uni-hannover.de/~eilers/apidocs/pim2/html/classOpie_1_1OPimAccessFactory.html} |
213 | 192 | ||
214 | \end_inset | 193 | \end_inset |
215 | 194 | ||
216 | ). | 195 | ). |
217 | This operation is defined like this: | 196 | This operation is defined like this: |
218 | \layout LyX-Code | 197 | \layout LyX-Code |
219 | 198 | ||
220 | T* defaultAccess (typename OPimGlobal::PimType type, const QString &appName) | 199 | T* defaultAccess ( |
200 | \newline | ||
201 | typename OPimGlobal::PimType type, | ||
202 | \newline | ||
203 | const QString &appName) | ||
221 | \layout Standard | 204 | \layout Standard |
222 | 205 | ||
223 | You just have to add the following lines to your source code to use it (this | 206 | You just have to add the following lines to your source code to use it (this |
224 | example is for accessing the contact database): | 207 | example is for accessing the contact database): |
225 | \layout LyX-Code | 208 | \layout LyX-Code |
226 | 209 | ||
210 | \layout LyX-Code | ||
211 | |||
227 | #include <opie2/opimaccessfactory.h> | 212 | #include <opie2/opimaccessfactory.h> |
228 | \layout LyX-Code | 213 | \layout LyX-Code |
229 | 214 | ||
230 | use namespace Opie; | 215 | use namespace Opie; |
231 | \layout Standard | 216 | \layout Standard |
232 | 217 | ||
233 | [...] | 218 | [...] |
234 | \layout LyX-Code | 219 | \layout LyX-Code |
235 | 220 | ||
236 | OPimContactAccess* sourceDB = OPimAccessFactory<OPimContactAccess>::defaultAcces | 221 | OPimContactAccess* sourceDB = |
237 | s( OPimGlobal::CONTACTLIST, "my-app" ); | 222 | \newline |
223 | OPimAccessFactory<OPimContactAccess>::defaultAccess( | ||
224 | \newline | ||
225 | OPimGlobal::CONTACTLIST, | ||
226 | \newline | ||
227 | "my-app" ); | ||
228 | \layout LyX-Code | ||
229 | |||
238 | \layout Standard | 230 | \layout Standard |
239 | 231 | ||
240 | If everything works as expected, you will receive a pointer to the contact | 232 | If everything works as expected, you will receive a pointer to the contact |
241 | access-class which has to be used for accessing the database. | 233 | access-class which has to be used for accessing the database. |
242 | Accessing the datebook database works equally | 234 | Accessing the datebook database works equally |
243 | \begin_inset Foot | 235 | \begin_inset Foot |
244 | collapsed false | 236 | collapsed false |
245 | 237 | ||
246 | \layout Standard | 238 | \layout Standard |
247 | 239 | ||
248 | The API will be changed in the future: ODateBookAccess will be renamed to | 240 | The API will be changed in the future: ODateBookAccess will be renamed to |
249 | OPimEventAccess. | 241 | OPimEventAccess. |
250 | \end_inset | 242 | \end_inset |
251 | 243 | ||
252 | : | 244 | : |
253 | \layout LyX-Code | 245 | \layout LyX-Code |
254 | 246 | ||
255 | ODateBookAccess* sourceDB = OPimAccessFactory<ODatebookAccess>::defaultAccess( | 247 | ODateBookAccess* sourceDB = |
256 | OPimGlobal::DATEBOOK, "my-app" ); | 248 | \newline |
249 | OPimAccessFactory<ODatebookAccess>::defaultAccess( | ||
250 | \newline | ||
251 | OPimGlobal::DATEBOOK, | ||
252 | \newline | ||
253 | "my-app" ); | ||
257 | \layout Standard | 254 | \layout Standard |
258 | 255 | ||
259 | And the same for todo: | 256 | And the same for todo: |
260 | \layout LyX-Code | 257 | \layout LyX-Code |
261 | 258 | ||
262 | OPimTodoAccess* sourceDB = OPimAccessFactory<OPimTodoAccess>::defaultAccess( | 259 | OPimTodoAccess* sourceDB = |
263 | OPimGlobal::TODOLIST, "my-app" ); | 260 | \newline |
261 | OPimAccessFactory<OPimTodoAccess>::defaultAccess( | ||
262 | \newline | ||
263 | OPimGlobal::TODOLIST, | ||
264 | \newline | ||
265 | "my-app" ); | ||
264 | \layout Standard | 266 | \layout Standard |
265 | 267 | ||
266 | Using | 268 | Using |
267 | \emph on | 269 | \emph on |
268 | 270 | ||
269 | \begin_inset Quotes gld | 271 | \begin_inset Quotes gld |
270 | \end_inset | 272 | \end_inset |
271 | 273 | ||
272 | defaultAccess() | 274 | defaultAccess() |
273 | \begin_inset Quotes grd | 275 | \begin_inset Quotes grd |
274 | \end_inset | 276 | \end_inset |
275 | 277 | ||
@@ -476,60 +478,143 @@ We should check whether all databases behave like this! (se) | |||
476 | If you want to work with the existing dataset, you need to get a list of | 478 | If you want to work with the existing dataset, you need to get a list of |
477 | all available information. | 479 | all available information. |
478 | This list is returned by the call | 480 | This list is returned by the call |
479 | \begin_inset Quotes gld | 481 | \begin_inset Quotes gld |
480 | \end_inset | 482 | \end_inset |
481 | 483 | ||
482 | allRecords() | 484 | allRecords() |
483 | \begin_inset Quotes grd | 485 | \begin_inset Quotes grd |
484 | \end_inset | 486 | \end_inset |
485 | 487 | ||
486 | which returns a list of all available records as an | 488 | which returns a list of all available records as an |
487 | \series bold | 489 | \series bold |
488 | OPimRecordList | 490 | OPimRecordList<T> |
489 | \series default | 491 | \series default |
490 | (see | 492 | (see |
491 | \begin_inset LatexCommand \url{http://www.sra.uni-hannover.de/~eilers/apidocs/pim2/html/classOpie_1_1OPimRecordList.html} | 493 | \begin_inset LatexCommand \url{http://www.sra.uni-hannover.de/~eilers/apidocs/pim2/html/classOpie_1_1OPimRecordList.html} |
492 | 494 | ||
493 | \end_inset | 495 | \end_inset |
494 | 496 | ||
495 | ). | 497 | ). |
496 | 498 | This OPimRecordList is a template and should be used with the right class | |
499 | parameter | ||
500 | \begin_inset Quotes eld | ||
501 | \end_inset | ||
502 | |||
503 | T | ||
504 | \begin_inset Quotes erd | ||
505 | \end_inset | ||
506 | |||
507 | which is currently one of the following: OPimContact, OPimTodo and OPimEvent. | ||
497 | \layout LyX-Code | 508 | \layout LyX-Code |
498 | 509 | ||
499 | List allRecords(); | 510 | OPimRecordList<T> allRecords(); |
500 | \layout Standard | 511 | \layout Standard |
501 | 512 | ||
502 | In fact, this | 513 | In fact, this |
503 | \emph on | 514 | \begin_inset Quotes eld |
504 | List | 515 | \end_inset |
505 | \emph default | 516 | |
517 | OPimRecordList<T> | ||
518 | \begin_inset Quotes erd | ||
519 | \end_inset | ||
520 | |||
506 | just contains a list of uid's to take care of memory space. | 521 | just contains a list of uid's to take care of memory space. |
507 | As every record is identified by an unique identification number which | 522 | Every record is identified by an unique identification number which is |
508 | is called UID (Unique Identification), these numbers just exists once in | 523 | called UID (Unique Identification). |
509 | the database which is currently on access! To receive the real record, | 524 | These numbers just exists once in the database which is currently on access! |
510 | you have to use the operation | 525 | To receive the real record, you have to use the operation |
511 | \begin_inset Quotes gld | 526 | \begin_inset Quotes gld |
512 | \end_inset | 527 | \end_inset |
513 | 528 | ||
514 | find() | 529 | find() |
515 | \begin_inset Quotes grd | 530 | \begin_inset Quotes grd |
516 | \end_inset | 531 | \end_inset |
517 | 532 | ||
518 | with a valid UID as parameter: | 533 | with a valid UID as parameter: |
519 | \layout LyX-Code | 534 | \layout LyX-Code |
520 | 535 | ||
521 | T find (UID uid); | 536 | T find (UID uid); |
522 | \layout Standard | 537 | \layout Standard |
523 | 538 | ||
539 | The remaining question is, how to get a valid UID out of a list to use the | ||
540 | |||
541 | \begin_inset Quotes eld | ||
542 | \end_inset | ||
543 | |||
544 | find() | ||
545 | \begin_inset Quotes erd | ||
546 | \end_inset | ||
547 | |||
548 | in a correct manner. | ||
549 | This could be done by requesting a special element of the list, using the | ||
550 | operator[] or by using iterators. | ||
551 | The first one would be like this | ||
552 | \begin_inset Foot | ||
553 | collapsed true | ||
554 | |||
555 | \layout Standard | ||
556 | |||
557 | Please do not forget to use | ||
558 | \begin_inset Quotes eld | ||
559 | \end_inset | ||
560 | |||
561 | use namespace Opie; | ||
562 | \begin_inset Quotes erd | ||
563 | \end_inset | ||
564 | |||
565 | to enable the namespace | ||
566 | \begin_inset Quotes eld | ||
567 | \end_inset | ||
568 | |||
569 | Opie | ||
570 | \begin_inset Quotes erd | ||
571 | \end_inset | ||
572 | |||
573 | !! | ||
574 | \end_inset | ||
575 | |||
576 | : | ||
577 | \layout LyX-Code | ||
578 | |||
579 | OPimRecordList<OPimContact> list = allRecords(); | ||
580 | \layout LyX-Code | ||
581 | |||
582 | for ( int i = 0; i < list.count(); i++ ){ | ||
583 | \layout LyX-Code | ||
584 | |||
585 | cout << "The UID is: " << list[i] << endl; | ||
586 | \layout LyX-Code | ||
587 | |||
588 | } | ||
589 | \layout Standard | ||
590 | |||
591 | Using the iterator is as easy as the previous one: | ||
592 | \layout LyX-Code | ||
593 | |||
594 | OPimRecordList<OPimContact> list = allRecords(); | ||
595 | \layout LyX-Code | ||
596 | |||
597 | OPimRecordList<OPimContact>::iterator it; | ||
598 | \layout LyX-Code | ||
599 | |||
600 | for ( it = list.begin(); it != list.end(); ++it ){ | ||
601 | \layout LyX-Code | ||
602 | |||
603 | count << "The UID is: " << (*it) << endl; | ||
604 | \layout LyX-Code | ||
605 | |||
606 | } | ||
607 | \layout Standard | ||
608 | |||
524 | This is all you need to realize a basic access to the PIM-Databases! The | 609 | This is all you need to realize a basic access to the PIM-Databases! The |
525 | next chapter will guide you into more details of the PIM-API. | 610 | next chapter will guide you into more details of the PIM-API. |
526 | \layout Chapter | 611 | \layout Chapter |
527 | 612 | ||
528 | How to Access PIM-Data: Detailed View | 613 | How to Access PIM-Data: Detailed View |
529 | \layout Standard | 614 | \layout Standard |
530 | 615 | ||
531 | As shown in the previous chapter, all we need to access the PIM-Database | 616 | As shown in the previous chapter, all we need to access the PIM-Database |
532 | is to request an access-object from the OPimAccessFactory and to use it. | 617 | is to request an access-object from the OPimAccessFactory and to use it. |
533 | We will now introduce some special features of this factory (see section | 618 | We will now introduce some special features of this factory (see section |
534 | 619 | ||
535 | \begin_inset LatexCommand \ref{sec:Advanced-Factory-Features} | 620 | \begin_inset LatexCommand \ref{sec:Advanced-Factory-Features} |
@@ -744,39 +829,32 @@ Special Features: Searching and Sorting | |||
744 | 829 | ||
745 | In most cases it is not sufficient to receive just a list of all information | 830 | In most cases it is not sufficient to receive just a list of all information |
746 | in a database. | 831 | in a database. |
747 | It is essential to get a subset of the information available and to be | 832 | It is essential to get a subset of the information available and to be |
748 | able to sort it. | 833 | able to sort it. |
749 | For this kind of exercise we provide some special operations which provide | 834 | For this kind of exercise we provide some special operations which provide |
750 | searching and sorting in an incremental manner | 835 | searching and sorting in an incremental manner |
751 | \begin_inset Foot | 836 | \begin_inset Foot |
752 | collapsed false | 837 | collapsed false |
753 | 838 | ||
754 | \layout Standard | 839 | \layout Standard |
755 | 840 | ||
756 | FIXME: matchRegexp() does take a list of uid's. | 841 | FIXME: matchRegexp() does not take a list of uid's. |
757 | Therefore it is currently not possible to use it in an incremental manner! | 842 | Therefore it is currently not possible to use it in an incremental manner! |
758 | (se) | 843 | (se) |
759 | \end_inset | 844 | \end_inset |
760 | 845 | ||
761 | . | 846 | . |
762 | Therefore it is possible to research a | 847 | Therefore it is possible to use a list which was returned by a previous |
763 | \begin_inset Quotes gld | 848 | search query and to sort it afterwards. |
764 | \end_inset | ||
765 | |||
766 | List | ||
767 | \begin_inset Quotes grd | ||
768 | \end_inset | ||
769 | |||
770 | which was returned by a previous search query and to sort it afterwards. | ||
771 | Before we will take a close look into sorting, we will start with searching. | 849 | Before we will take a close look into sorting, we will start with searching. |
772 | There exist two different ways of searching: | 850 | There exist two different ways of searching: |
773 | \layout Enumerate | 851 | \layout Enumerate |
774 | 852 | ||
775 | Search a complete database for a special regular expression, using | 853 | Search a complete database for a special regular expression, using |
776 | \begin_inset Quotes gld | 854 | \begin_inset Quotes gld |
777 | \end_inset | 855 | \end_inset |
778 | 856 | ||
779 | matchRegexp () | 857 | matchRegexp () |
780 | \begin_inset Quotes grd | 858 | \begin_inset Quotes grd |
781 | \end_inset | 859 | \end_inset |
782 | 860 | ||
@@ -831,36 +909,36 @@ Searching with | |||
831 | \end_inset | 909 | \end_inset |
832 | 910 | ||
833 | matchRegexp() | 911 | matchRegexp() |
834 | \begin_inset Quotes grd | 912 | \begin_inset Quotes grd |
835 | \end_inset | 913 | \end_inset |
836 | 914 | ||
837 | 915 | ||
838 | \layout Standard | 916 | \layout Standard |
839 | 917 | ||
840 | The function is defined like this: | 918 | The function is defined like this: |
841 | \layout LyX-Code | 919 | \layout LyX-Code |
842 | 920 | ||
843 | List matchRegexp (const QRegExp& r); | 921 | OPimRecordList<T> matchRegexp (const QRegExp& r); |
844 | \layout Standard | 922 | \layout Standard |
845 | 923 | ||
846 | The | 924 | The |
847 | \begin_inset Quotes gld | 925 | \begin_inset Quotes gld |
848 | \end_inset | 926 | \end_inset |
849 | 927 | ||
850 | List | 928 | OPimRecordList<T> |
851 | \begin_inset Quotes grd | 929 | \begin_inset Quotes grd |
852 | \end_inset | 930 | \end_inset |
853 | 931 | ||
854 | is still a OPimRecordList which contains 0 or more uid's of matching records. | 932 | is still a list which contains 0 or more uid's of matching records. |
855 | As already discussed in section | 933 | As already discussed in section |
856 | \begin_inset LatexCommand \ref{sec:Accessing-the-access-object} | 934 | \begin_inset LatexCommand \ref{sec:Accessing-the-access-object} |
857 | 935 | ||
858 | \end_inset | 936 | \end_inset |
859 | 937 | ||
860 | you have to use the | 938 | you have to use the |
861 | \begin_inset Quotes gld | 939 | \begin_inset Quotes gld |
862 | \end_inset | 940 | \end_inset |
863 | 941 | ||
864 | find() | 942 | find() |
865 | \begin_inset Quotes grd | 943 | \begin_inset Quotes grd |
866 | \end_inset | 944 | \end_inset |
@@ -887,44 +965,28 @@ Eilers | |||
887 | \end_inset | 965 | \end_inset |
888 | 966 | ||
889 | 3 | 967 | 3 |
890 | \begin_inset Quotes grd | 968 | \begin_inset Quotes grd |
891 | \end_inset | 969 | \end_inset |
892 | 970 | ||
893 | you have to do the following: | 971 | you have to do the following: |
894 | \layout LyX-Code | 972 | \layout LyX-Code |
895 | 973 | ||
896 | OPimContact searchQuery; | 974 | OPimContact searchQuery; |
897 | \layout LyX-Code | 975 | \layout LyX-Code |
898 | 976 | ||
899 | searchQuery.setLastName( | 977 | searchQuery.setLastName( "Eilers" ); |
900 | \begin_inset Quotes eld | ||
901 | \end_inset | ||
902 | |||
903 | Eilers | ||
904 | \begin_inset Quotes erd | ||
905 | \end_inset | ||
906 | |||
907 | ); | ||
908 | \layout LyX-Code | 978 | \layout LyX-Code |
909 | 979 | ||
910 | searchQuery.setHomeZip( | 980 | searchQuery.setHomeZip( "3*" ); |
911 | \begin_inset Quotes eld | ||
912 | \end_inset | ||
913 | |||
914 | 3* | ||
915 | \begin_inset Quotes srd | ||
916 | \end_inset | ||
917 | |||
918 | ); | ||
919 | \layout Standard | 981 | \layout Standard |
920 | 982 | ||
921 | We use an usual | 983 | We use an usual |
922 | \begin_inset Quotes gld | 984 | \begin_inset Quotes gld |
923 | \end_inset | 985 | \end_inset |
924 | 986 | ||
925 | OPimContact | 987 | OPimContact |
926 | \begin_inset Quotes grd | 988 | \begin_inset Quotes grd |
927 | \end_inset | 989 | \end_inset |
928 | 990 | ||
929 | and fill into two fields the query information. | 991 | and fill into two fields the query information. |
930 | All filled fields are taken for the search operation (using an | 992 | All filled fields are taken for the search operation (using an |
@@ -950,26 +1012,27 @@ AND | |||
950 | 1012 | ||
951 | * | 1013 | * |
952 | \begin_inset Quotes grd | 1014 | \begin_inset Quotes grd |
953 | \end_inset | 1015 | \end_inset |
954 | 1016 | ||
955 | as we would do to find files in a filesystem. | 1017 | as we would do to find files in a filesystem. |
956 | \layout Standard | 1018 | \layout Standard |
957 | 1019 | ||
958 | The next step is to put this query into the operation which is defined like | 1020 | The next step is to put this query into the operation which is defined like |
959 | this: | 1021 | this: |
960 | \layout LyX-Code | 1022 | \layout LyX-Code |
961 | 1023 | ||
962 | List queryByExample (const T& query, int querySettings, const QDateTime& | 1024 | OPimRecordList<T> queryByExample (const T& query, |
963 | startperiod=QDateTime()) | 1025 | \newline |
1026 | int querySettings, const QDateTime& startperiod=QDateTime()) | ||
964 | \layout Standard | 1027 | \layout Standard |
965 | 1028 | ||
966 | The first parameter | 1029 | The first parameter |
967 | \begin_inset Quotes gld | 1030 | \begin_inset Quotes gld |
968 | \end_inset | 1031 | \end_inset |
969 | 1032 | ||
970 | query | 1033 | query |
971 | \begin_inset Quotes grd | 1034 | \begin_inset Quotes grd |
972 | \end_inset | 1035 | \end_inset |
973 | 1036 | ||
974 | should used to set our query, but we have to set the parameter | 1037 | should used to set our query, but we have to set the parameter |
975 | \begin_inset Quotes gld | 1038 | \begin_inset Quotes gld |
@@ -1061,26 +1124,29 @@ endperiod | |||
1061 | \begin_inset Quotes grd | 1124 | \begin_inset Quotes grd |
1062 | \end_inset | 1125 | \end_inset |
1063 | 1126 | ||
1064 | will be ignored for this case which will look like this: | 1127 | will be ignored for this case which will look like this: |
1065 | \layout LyX-Code | 1128 | \layout LyX-Code |
1066 | 1129 | ||
1067 | use namespace Opie; | 1130 | use namespace Opie; |
1068 | \layout LyX-Code | 1131 | \layout LyX-Code |
1069 | 1132 | ||
1070 | [...] | 1133 | [...] |
1071 | \layout LyX-Code | 1134 | \layout LyX-Code |
1072 | 1135 | ||
1073 | List found_items = queryByExample( searchQuery, OPimBase::WildCards | OpimBase:: | 1136 | OPimRecordList<OPimContact> found_items = |
1074 | IgnoreCase ); | 1137 | \newline |
1138 | sourceDB->queryByExample( searchQuery, | ||
1139 | \newline | ||
1140 | OPimBase::WildCards | OpimBase::IgnoreCase ); | ||
1075 | \layout Standard | 1141 | \layout Standard |
1076 | 1142 | ||
1077 | This operation may return a list of entries which can be accessed as above, | 1143 | This operation may return a list of entries which can be accessed as above, |
1078 | using the | 1144 | using the |
1079 | \begin_inset Quotes gld | 1145 | \begin_inset Quotes gld |
1080 | \end_inset | 1146 | \end_inset |
1081 | 1147 | ||
1082 | find() | 1148 | find() |
1083 | \begin_inset Quotes grd | 1149 | \begin_inset Quotes grd |
1084 | \end_inset | 1150 | \end_inset |
1085 | 1151 | ||
1086 | operation. | 1152 | operation. |
@@ -1208,29 +1274,37 @@ queryByExample() | |||
1208 | List | 1274 | List |
1209 | \begin_inset Quotes grd | 1275 | \begin_inset Quotes grd |
1210 | \end_inset | 1276 | \end_inset |
1211 | 1277 | ||
1212 | as the first parameter. | 1278 | as the first parameter. |
1213 | The search operation will just occur on this set of uid's! | 1279 | The search operation will just occur on this set of uid's! |
1214 | \layout Subsection | 1280 | \layout Subsection |
1215 | 1281 | ||
1216 | Sorting | 1282 | Sorting |
1217 | \layout Standard | 1283 | \layout Standard |
1218 | 1284 | ||
1219 | To sort a given dataset, you should use the following operation (or one | 1285 | To sort a given dataset, you should use the following operation (or one |
1220 | of the others which behave slightly differently): | 1286 | of the others which behave slightly differently, see |
1287 | \begin_inset LatexCommand \url{http://www.sra.uni-hannover.de/~eilers/apidocs/pim2/html/classOpie_1_1OPimAccessTemplate.html} | ||
1288 | |||
1289 | \end_inset | ||
1290 | |||
1291 | ): | ||
1221 | \layout LyX-Code | 1292 | \layout LyX-Code |
1222 | 1293 | ||
1223 | List sorted (const List& list, bool ascending, int sortOrder, int sortFilter, | 1294 | OPimRecordList<T> sorted (const List& list, |
1224 | const QArray< UID >& cats); | 1295 | \newline |
1296 | bool ascending, int sortOrder, int sortFilter, | ||
1297 | \newline | ||
1298 | const QArray< UID >& cats); | ||
1225 | \layout Standard | 1299 | \layout Standard |
1226 | 1300 | ||
1227 | This sort operation takes a list of uid's as returned for instance from | 1301 | This sort operation takes a list of uid's as returned for instance from |
1228 | a search query. | 1302 | a search query. |
1229 | The parameter | 1303 | The parameter |
1230 | \begin_inset Quotes gld | 1304 | \begin_inset Quotes gld |
1231 | \end_inset | 1305 | \end_inset |
1232 | 1306 | ||
1233 | ascending | 1307 | ascending |
1234 | \begin_inset Quotes grd | 1308 | \begin_inset Quotes grd |
1235 | \end_inset | 1309 | \end_inset |
1236 | 1310 | ||