summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--development/pim/pim_howto/pim_howto.lyx252
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
@@ -9,6 +9,7 @@
\fancyhead[RE,LO]{\thepage}
%\fancyhead[LO,RE]{}
% \usepackage{ae}
+\usepackage[T1]{fontenc}
\usepackage[bookmarksopen,colorlinks]{hyperref}
% \pdfoutput=1
% \pdfcompresslevel=8
@@ -19,38 +20,6 @@
% /Subject ()
% /Keywords (Simulation,Real-Time,ClearSim,prototype,efsm)
% }
-\renewcommand\familydefault{\sfdefault}
-
-\usepackage{multicol}
-\newcommand\NrCol{3}
-\renewenvironment{theindex}
- {\columnseprule \z@
- \columnsep 35\p@
- \section*{\indexname}%
- \@mkboth{\MakeUppercase\indexname}%
- {\MakeUppercase\indexname}%
- \begin{multicols}{\NrCol}\thispagestyle{plain}\parindent\z@
- \parskip\z@ \@plus .3\p@\relax
- \let\item\@idxitem}
- {\clearpage %
- \end{multicols}}
-
-\renewenvironment{theindex}
- {\if@twocolumn
- \@restonecolfalse
- \else
- \@restonecoltrue
- \fi
- \columnseprule \z@
- \columnsep 35\p@
- \twocolumn[\refstepcounter{section}%
- \section{\indexname}]%
- \@mkboth{\MakeUppercase\indexname}%
- {\MakeUppercase\indexname}%
- \thispagestyle{plain}\parindent\z@
- \parskip\z@ \@plus .3\p@\relax
- \let\item\@idxitem}
- {\if@restonecol\onecolumn\else\clearpage\fi}
\end_preamble
\language american
\inputencoding default
@@ -82,12 +51,12 @@ How to use the Opie-Pim API without getting tired!
\newline
(Aka: Hitchhikers Guide Through the Opie-Pim API)
\newline
-(Pre V 0.1)
+(V 0.2)
\layout Author
\family sans
-Stefan Eilers
+Stefan Eilers (stefan@eilers-online.net)
\layout Section*
@@ -114,6 +83,16 @@ While starting to read the automatically generated API-documentation, the
\layout Standard
+\series bold
+You will find a more recent version at:
+\begin_inset LatexCommand \url{http://www.sra.uni-hannover.de/~eilers/apihowto/pim_howto.pdf}
+
+\end_inset
+
+
+\layout Standard
+
+
\begin_inset LatexCommand \tableofcontents{}
\end_inset
@@ -217,13 +196,19 @@ OPimAccessFactory
This operation is defined like this:
\layout LyX-Code
-T* defaultAccess (typename OPimGlobal::PimType type, const QString &appName)
+T* defaultAccess (
+\newline
+typename OPimGlobal::PimType type,
+\newline
+const QString &appName)
\layout Standard
You just have to add the following lines to your source code to use it (this
example is for accessing the contact database):
\layout LyX-Code
+\layout LyX-Code
+
#include <opie2/opimaccessfactory.h>
\layout LyX-Code
@@ -233,8 +218,15 @@ use namespace Opie;
[...]
\layout LyX-Code
-OPimContactAccess* sourceDB = OPimAccessFactory<OPimContactAccess>::defaultAcces
-s( OPimGlobal::CONTACTLIST, "my-app" );
+OPimContactAccess* sourceDB =
+\newline
+OPimAccessFactory<OPimContactAccess>::defaultAccess(
+\newline
+OPimGlobal::CONTACTLIST,
+\newline
+"my-app" );
+\layout LyX-Code
+
\layout Standard
If everything works as expected, you will receive a pointer to the contact
@@ -252,15 +244,25 @@ The API will be changed in the future: ODateBookAccess will be renamed to
:
\layout LyX-Code
-ODateBookAccess* sourceDB = OPimAccessFactory<ODatebookAccess>::defaultAccess(
- OPimGlobal::DATEBOOK, "my-app" );
+ODateBookAccess* sourceDB =
+\newline
+OPimAccessFactory<ODatebookAccess>::defaultAccess(
+\newline
+OPimGlobal::DATEBOOK,
+\newline
+"my-app" );
\layout Standard
And the same for todo:
\layout LyX-Code
-OPimTodoAccess* sourceDB = OPimAccessFactory<OPimTodoAccess>::defaultAccess(
- OPimGlobal::TODOLIST, "my-app" );
+OPimTodoAccess* sourceDB =
+\newline
+OPimAccessFactory<OPimTodoAccess>::defaultAccess(
+\newline
+OPimGlobal::TODOLIST,
+\newline
+"my-app" );
\layout Standard
Using
@@ -485,7 +487,7 @@ allRecords()
which returns a list of all available records as an
\series bold
-OPimRecordList
+OPimRecordList<T>
\series default
(see
\begin_inset LatexCommand \url{http://www.sra.uni-hannover.de/~eilers/apidocs/pim2/html/classOpie_1_1OPimRecordList.html}
@@ -493,21 +495,34 @@ OPimRecordList
\end_inset
).
-
+ This OPimRecordList is a template and should be used with the right class
+ parameter
+\begin_inset Quotes eld
+\end_inset
+
+T
+\begin_inset Quotes erd
+\end_inset
+
+ which is currently one of the following: OPimContact, OPimTodo and OPimEvent.
\layout LyX-Code
-List allRecords();
+OPimRecordList<T> allRecords();
\layout Standard
In fact, this
-\emph on
-List
-\emph default
+\begin_inset Quotes eld
+\end_inset
+
+OPimRecordList<T>
+\begin_inset Quotes erd
+\end_inset
+
just contains a list of uid's to take care of memory space.
- As every record is identified by an unique identification number which
- is called UID (Unique Identification), these numbers just exists once in
- the database which is currently on access! To receive the real record,
- you have to use the operation
+ Every record is identified by an unique identification number which is
+ called UID (Unique Identification).
+ These numbers just exists once in the database which is currently on access!
+ To receive the real record, you have to use the operation
\begin_inset Quotes gld
\end_inset
@@ -521,6 +536,76 @@ find()
T find (UID uid);
\layout Standard
+The remaining question is, how to get a valid UID out of a list to use the
+
+\begin_inset Quotes eld
+\end_inset
+
+find()
+\begin_inset Quotes erd
+\end_inset
+
+ in a correct manner.
+ This could be done by requesting a special element of the list, using the
+ operator[] or by using iterators.
+ The first one would be like this
+\begin_inset Foot
+collapsed true
+
+\layout Standard
+
+Please do not forget to use
+\begin_inset Quotes eld
+\end_inset
+
+use namespace Opie;
+\begin_inset Quotes erd
+\end_inset
+
+ to enable the namespace
+\begin_inset Quotes eld
+\end_inset
+
+Opie
+\begin_inset Quotes erd
+\end_inset
+
+!!
+\end_inset
+
+:
+\layout LyX-Code
+
+OPimRecordList<OPimContact> list = allRecords();
+\layout LyX-Code
+
+for ( int i = 0; i < list.count(); i++ ){
+\layout LyX-Code
+
+ cout << "The UID is: " << list[i] << endl;
+\layout LyX-Code
+
+}
+\layout Standard
+
+Using the iterator is as easy as the previous one:
+\layout LyX-Code
+
+OPimRecordList<OPimContact> list = allRecords();
+\layout LyX-Code
+
+OPimRecordList<OPimContact>::iterator it;
+\layout LyX-Code
+
+for ( it = list.begin(); it != list.end(); ++it ){
+\layout LyX-Code
+
+ count << "The UID is: " << (*it) << endl;
+\layout LyX-Code
+
+}
+\layout Standard
+
This is all you need to realize a basic access to the PIM-Databases! The
next chapter will guide you into more details of the PIM-API.
\layout Chapter
@@ -753,21 +838,14 @@ collapsed false
\layout Standard
-FIXME: matchRegexp() does take a list of uid's.
+FIXME: matchRegexp() does not take a list of uid's.
Therefore it is currently not possible to use it in an incremental manner!
(se)
\end_inset
.
- Therefore it is possible to research a
-\begin_inset Quotes gld
-\end_inset
-
-List
-\begin_inset Quotes grd
-\end_inset
-
- which was returned by a previous search query and to sort it afterwards.
+ Therefore it is possible to use a list which was returned by a previous
+ search query and to sort it afterwards.
Before we will take a close look into sorting, we will start with searching.
There exist two different ways of searching:
\layout Enumerate
@@ -840,18 +918,18 @@ matchRegexp()
The function is defined like this:
\layout LyX-Code
-List matchRegexp (const QRegExp& r);
+OPimRecordList<T> matchRegexp (const QRegExp& r);
\layout Standard
The
\begin_inset Quotes gld
\end_inset
-List
+OPimRecordList<T>
\begin_inset Quotes grd
\end_inset
- is still a OPimRecordList which contains 0 or more uid's of matching records.
+ is still a list which contains 0 or more uid's of matching records.
As already discussed in section
\begin_inset LatexCommand \ref{sec:Accessing-the-access-object}
@@ -896,26 +974,10 @@ Eilers
OPimContact searchQuery;
\layout LyX-Code
-searchQuery.setLastName(
-\begin_inset Quotes eld
-\end_inset
-
-Eilers
-\begin_inset Quotes erd
-\end_inset
-
- );
+searchQuery.setLastName( "Eilers" );
\layout LyX-Code
-searchQuery.setHomeZip(
-\begin_inset Quotes eld
-\end_inset
-
-3*
-\begin_inset Quotes srd
-\end_inset
-
- );
+searchQuery.setHomeZip( "3*" );
\layout Standard
We use an usual
@@ -959,8 +1021,9 @@ The next step is to put this query into the operation which is defined like
this:
\layout LyX-Code
-List queryByExample (const T& query, int querySettings, const QDateTime&
- startperiod=QDateTime())
+OPimRecordList<T> queryByExample (const T& query,
+\newline
+int querySettings, const QDateTime& startperiod=QDateTime())
\layout Standard
The first parameter
@@ -1070,8 +1133,11 @@ use namespace Opie;
[...]
\layout LyX-Code
-List found_items = queryByExample( searchQuery, OPimBase::WildCards | OpimBase::
-IgnoreCase );
+OPimRecordList<OPimContact> found_items =
+\newline
+sourceDB->queryByExample( searchQuery,
+\newline
+OPimBase::WildCards | OpimBase::IgnoreCase );
\layout Standard
This operation may return a list of entries which can be accessed as above,
@@ -1217,11 +1283,19 @@ Sorting
\layout Standard
To sort a given dataset, you should use the following operation (or one
- of the others which behave slightly differently):
+ of the others which behave slightly differently, see
+\begin_inset LatexCommand \url{http://www.sra.uni-hannover.de/~eilers/apidocs/pim2/html/classOpie_1_1OPimAccessTemplate.html}
+
+\end_inset
+
+):
\layout LyX-Code
-List sorted (const List& list, bool ascending, int sortOrder, int sortFilter,
- const QArray< UID >& cats);
+OPimRecordList<T> sorted (const List& list,
+\newline
+bool ascending, int sortOrder, int sortFilter,
+\newline
+const QArray< UID >& cats);
\layout Standard
This sort operation takes a list of uid's as returned for instance from