summaryrefslogtreecommitdiff
path: root/libopie2/opiepim/core/opimresolver.cpp
Unidiff
Diffstat (limited to 'libopie2/opiepim/core/opimresolver.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/core/opimresolver.cpp38
1 files changed, 35 insertions, 3 deletions
diff --git a/libopie2/opiepim/core/opimresolver.cpp b/libopie2/opiepim/core/opimresolver.cpp
index 4ebbd6e..eceabcb 100644
--- a/libopie2/opiepim/core/opimresolver.cpp
+++ b/libopie2/opiepim/core/opimresolver.cpp
@@ -1,198 +1,230 @@
1/*
2 This file is part of the Opie Project
3 Copyright (C) The Main Author <main-author@whereever.org>
4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org>
5 .=l.
6 .>+-=
7 _;:, .> :=|. This program is free software; you can
8.> <`_, > . <= redistribute it and/or modify it under
9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
10.="- .-=="i, .._ License as published by the Free Software
11 - . .-<_> .<> Foundation; either version 2 of the License,
12 ._= =} : or (at your option) any later version.
13 .%`+i> _;_.
14 .i_,=:_. -<s. This program is distributed in the hope that
15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
16 : .. .:, . . . without even the implied warranty of
17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.= = ; Library General Public License for more
20++= -. .` .: details.
21 : = ...= . :.=-
22 -. .:....=;==+<; You should have received a copy of the GNU
23 -_. . . )=. = Library General Public License along with
24 -- :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA.
28*/
1#include <qcopchannel_qws.h> 29#include <qcopchannel_qws.h>
2 30
3#include <qpe/qcopenvelope_qws.h> 31#include <qpe/qcopenvelope_qws.h>
4 32
5#include "otodoaccess.h" 33#include <opie2/otodoaccess.h>
6#include "ocontactaccess.h" 34#include <opie2/ocontactaccess.h>
7 35
8//#include "opimfactory.h" 36//#include "opimfactory.h"
9#include "opimresolver.h" 37#include <opie2/opimresolver.h>
38
39namespace Opie {
10 40
11OPimResolver* OPimResolver::m_self = 0l; 41OPimResolver* OPimResolver::m_self = 0l;
12 42
13OPimResolver::OPimResolver() { 43OPimResolver::OPimResolver() {
14 /* the built in channels */ 44 /* the built in channels */
15 m_builtIns << "Todolist" << "Addressbook" << "Datebook"; 45 m_builtIns << "Todolist" << "Addressbook" << "Datebook";
16} 46}
17OPimResolver* OPimResolver::self() { 47OPimResolver* OPimResolver::self() {
18 if (!m_self) 48 if (!m_self)
19 m_self = new OPimResolver(); 49 m_self = new OPimResolver();
20 50
21 return m_self; 51 return m_self;
22} 52}
23 53
24/* 54/*
25 * FIXME use a cache here too 55 * FIXME use a cache here too
26 */ 56 */
27OPimRecord* OPimResolver::record( const QString& service, int uid ) { 57OPimRecord* OPimResolver::record( const QString& service, int uid ) {
28 OPimRecord* rec = 0l; 58 OPimRecord* rec = 0l;
29 OPimBase* base = backend( service ); 59 OPimBase* base = backend( service );
30 60
31 if ( base ) 61 if ( base )
32 rec = base->record( uid ); 62 rec = base->record( uid );
33 delete base; 63 delete base;
34 64
35 return rec; 65 return rec;
36} 66}
37OPimRecord* OPimResolver::record( const QString& service ) { 67OPimRecord* OPimResolver::record( const QString& service ) {
38 return record( serviceId( service ) ); 68 return record( serviceId( service ) );
39} 69}
40OPimRecord* OPimResolver::record( int rtti ) { 70OPimRecord* OPimResolver::record( int rtti ) {
41 OPimRecord* rec = 0l; 71 OPimRecord* rec = 0l;
42 switch( rtti ) { 72 switch( rtti ) {
43 case 1: /* todolist */ 73 case 1: /* todolist */
44 rec = new OTodo(); 74 rec = new OTodo();
45 case 2: /* contact */ 75 case 2: /* contact */
46 rec = new OContact(); 76 rec = new OContact();
47 default: 77 default:
48 break; 78 break;
49 } 79 }
50 /* 80 /*
51 * FIXME resolve externally 81 * FIXME resolve externally
52 */ 82 */
53 if (!rec ) { 83 if (!rec ) {
54 ; 84 ;
55 } 85 }
56 return 0l; 86 return 0l;
57} 87}
58bool OPimResolver::isBuiltIn( const QString& str) const{ 88bool OPimResolver::isBuiltIn( const QString& str) const{
59 return m_builtIns.contains( str ); 89 return m_builtIns.contains( str );
60} 90}
61QCString OPimResolver::qcopChannel( enum BuiltIn& built)const { 91QCString OPimResolver::qcopChannel( enum BuiltIn& built)const {
62 QCString str("QPE/"); 92 QCString str("QPE/");
63 switch( built ) { 93 switch( built ) {
64 case TodoList: 94 case TodoList:
65 str += "Todolist"; 95 str += "Todolist";
66 break; 96 break;
67 case DateBook: 97 case DateBook:
68 str += "Datebook"; 98 str += "Datebook";
69 break; 99 break;
70 case AddressBook: 100 case AddressBook:
71 str += "Addressbook"; 101 str += "Addressbook";
72 break; 102 break;
73 default: 103 default:
74 break; 104 break;
75 } 105 }
76 106
77 return str; 107 return str;
78} 108}
79QCString OPimResolver::qcopChannel( const QString& service )const { 109QCString OPimResolver::qcopChannel( const QString& service )const {
80 QCString str("QPE/"); 110 QCString str("QPE/");
81 str += service.latin1(); 111 str += service.latin1();
82 return str; 112 return str;
83} 113}
84/* 114/*
85 * Implement services!! 115 * Implement services!!
86 * FIXME 116 * FIXME
87 */ 117 */
88QCString OPimResolver::applicationChannel( enum BuiltIn& built)const { 118QCString OPimResolver::applicationChannel( enum BuiltIn& built)const {
89 QCString str("QPE/Application/"); 119 QCString str("QPE/Application/");
90 switch( built ) { 120 switch( built ) {
91 case TodoList: 121 case TodoList:
92 str += "todolist"; 122 str += "todolist";
93 break; 123 break;
94 case DateBook: 124 case DateBook:
95 str += "datebook"; 125 str += "datebook";
96 break; 126 break;
97 case AddressBook: 127 case AddressBook:
98 str += "addressbook"; 128 str += "addressbook";
99 break; 129 break;
100 } 130 }
101 131
102 return str; 132 return str;
103} 133}
104QCString OPimResolver::applicationChannel( const QString& service )const { 134QCString OPimResolver::applicationChannel( const QString& service )const {
105 QCString str("QPE/Application/"); 135 QCString str("QPE/Application/");
106 136
107 if ( isBuiltIn( service ) ) { 137 if ( isBuiltIn( service ) ) {
108 if ( service == "Todolist" ) 138 if ( service == "Todolist" )
109 str += "todolist"; 139 str += "todolist";
110 else if ( service == "Datebook" ) 140 else if ( service == "Datebook" )
111 str += "datebook"; 141 str += "datebook";
112 else if ( service == "Addressbook" ) 142 else if ( service == "Addressbook" )
113 str += "addressbook"; 143 str += "addressbook";
114 }else 144 }else
115 ; // FIXME for additional stuff 145 ; // FIXME for additional stuff
116 146
117 return str; 147 return str;
118} 148}
119QStringList OPimResolver::services()const { 149QStringList OPimResolver::services()const {
120 return m_builtIns; 150 return m_builtIns;
121} 151}
122QString OPimResolver::serviceName( int rtti ) const{ 152QString OPimResolver::serviceName( int rtti ) const{
123 QString str; 153 QString str;
124 switch ( rtti ) { 154 switch ( rtti ) {
125 case TodoList: 155 case TodoList:
126 str = "Todolist"; 156 str = "Todolist";
127 break; 157 break;
128 case DateBook: 158 case DateBook:
129 str = "Datebook"; 159 str = "Datebook";
130 break; 160 break;
131 case AddressBook: 161 case AddressBook:
132 str = "Addressbook"; 162 str = "Addressbook";
133 break; 163 break;
134 default: 164 default:
135 break; 165 break;
136 } 166 }
137 return str; 167 return str;
138 // FIXME me for 3rd party 168 // FIXME me for 3rd party
139} 169}
140int OPimResolver::serviceId( const QString& service ) { 170int OPimResolver::serviceId( const QString& service ) {
141 int rtti = 0; 171 int rtti = 0;
142 if ( service == "Todolist" ) 172 if ( service == "Todolist" )
143 rtti = TodoList; 173 rtti = TodoList;
144 else if ( service == "Datebook" ) 174 else if ( service == "Datebook" )
145 rtti = DateBook; 175 rtti = DateBook;
146 else if ( service == "Addressbook" ) 176 else if ( service == "Addressbook" )
147 rtti = AddressBook; 177 rtti = AddressBook;
148 178
149 return rtti; 179 return rtti;
150} 180}
151/** 181/**
152 * check if the 'service' is registered and if so we'll 182 * check if the 'service' is registered and if so we'll
153 */ 183 */
154bool OPimResolver::add( const QString& service, const OPimRecord& rec) { 184bool OPimResolver::add( const QString& service, const OPimRecord& rec) {
155 if ( QCopChannel::isRegistered( applicationChannel( service ) ) ) { 185 if ( QCopChannel::isRegistered( applicationChannel( service ) ) ) {
156 QByteArray data; 186 QByteArray data;
157 QDataStream arg(data, IO_WriteOnly ); 187 QDataStream arg(data, IO_WriteOnly );
158 if ( rec.saveToStream( arg ) ) { 188 if ( rec.saveToStream( arg ) ) {
159 QCopEnvelope env( applicationChannel( service ), "add(int,QByteArray)" ); 189 QCopEnvelope env( applicationChannel( service ), "add(int,QByteArray)" );
160 env << rec.rtti(); 190 env << rec.rtti();
161 env << data; 191 env << data;
162 }else 192 }else
163 return false; 193 return false;
164 }else{ 194 }else{
165 OPimBase* base = backend( service ); 195 OPimBase* base = backend( service );
166 if (!base ) return false; 196 if (!base ) return false;
167 197
168 base->load(); 198 base->load();
169 base->add( rec ); 199 base->add( rec );
170 base->save(); 200 base->save();
171 delete base; 201 delete base;
172 } 202 }
173 203
174 return true; 204 return true;
175} 205}
176OPimBase* OPimResolver::backend( const QString& service ) { 206OPimBase* OPimResolver::backend( const QString& service ) {
177 return backend( serviceId( service ) ); 207 return backend( serviceId( service ) );
178} 208}
179OPimBase* OPimResolver::backend( int rtti ) { 209OPimBase* OPimResolver::backend( int rtti ) {
180 OPimBase* base = 0l; 210 OPimBase* base = 0l;
181 switch( rtti ) { 211 switch( rtti ) {
182 case TodoList: 212 case TodoList:
183 base = new OTodoAccess(); 213 base = new OTodoAccess();
184 break; 214 break;
185 case DateBook: 215 case DateBook:
186 break; 216 break;
187 case AddressBook: 217 case AddressBook:
188 base = new OContactAccess("Resolver"); 218 base = new OContactAccess("Resolver");
189 break; 219 break;
190 default: 220 default:
191 break; 221 break;
192 } 222 }
193 // FIXME for 3rd party 223 // FIXME for 3rd party
194 if (!base ) 224 if (!base )
195 ; 225 ;
196 226
197 return base; 227 return base;
198} 228}
229
230}