00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include <kdebug.h>
00022
#include <klocale.h>
00023
00024
#include "resource.h"
00025
00026
using namespace KABC;
00027
00028 Ticket::Ticket( Resource *resource )
00029 : mResource( resource )
00030 {
00031 }
00032
00033 Ticket::~Ticket()
00034 {
00035
00036
00037
00038
00039 }
00040
00041 Resource *Ticket::resource()
00042 {
00043
return mResource;
00044 }
00045
00046
struct Resource::Iterator::IteratorData
00047 {
00048 Addressee::Map::Iterator mIt;
00049 };
00050
00051
struct Resource::ConstIterator::ConstIteratorData
00052 {
00053 Addressee::Map::ConstIterator mIt;
00054 };
00055
00056 Resource::Iterator::Iterator()
00057 {
00058 d =
new IteratorData;
00059 }
00060
00061 Resource::Iterator::Iterator(
const Resource::Iterator &i )
00062 {
00063 d =
new IteratorData;
00064 d->mIt = i.d->mIt;
00065 }
00066
00067 Resource::Iterator &Resource::Iterator::operator=(
const Resource::Iterator &i )
00068 {
00069
if (
this == &i )
00070
return *
this;
00071
delete d;
00072
00073 d =
new IteratorData;
00074 d->mIt = i.d->mIt;
00075
return *
this;
00076 }
00077
00078 Resource::Iterator::~Iterator()
00079 {
00080
delete d;
00081 }
00082
00083
const Addressee &Resource::Iterator::operator*()
const
00084
{
00085
return d->mIt.data();
00086 }
00087
00088
Addressee &Resource::Iterator::operator*()
00089 {
00090
return d->mIt.data();
00091 }
00092
00093 Resource::Iterator &Resource::Iterator::operator++()
00094 {
00095 (d->mIt)++;
00096
return *
this;
00097 }
00098
00099 Resource::Iterator &Resource::Iterator::operator++(
int )
00100 {
00101 (d->mIt)++;
00102
return *
this;
00103 }
00104
00105 Resource::Iterator &Resource::Iterator::operator--()
00106 {
00107 (d->mIt)--;
00108
return *
this;
00109 }
00110
00111 Resource::Iterator &Resource::Iterator::operator--(
int )
00112 {
00113 (d->mIt)--;
00114
return *
this;
00115 }
00116
00117
bool Resource::Iterator::operator==(
const Iterator &it )
00118 {
00119
return ( d->mIt == it.d->mIt );
00120 }
00121
00122
bool Resource::Iterator::operator!=(
const Iterator &it )
00123 {
00124
return ( d->mIt != it.d->mIt );
00125 }
00126
00127 Resource::ConstIterator::ConstIterator()
00128 {
00129 d =
new ConstIteratorData;
00130 }
00131
00132 Resource::ConstIterator::ConstIterator(
const Resource::ConstIterator &i )
00133 {
00134 d =
new ConstIteratorData;
00135 d->mIt = i.d->mIt;
00136 }
00137
00138 Resource::ConstIterator::ConstIterator(
const Resource::Iterator &i )
00139 {
00140 d =
new ConstIteratorData;
00141 d->mIt = i.d->mIt;
00142 }
00143
00144 Resource::ConstIterator &Resource::ConstIterator::operator=(
const Resource::ConstIterator &i )
00145 {
00146
if (
this == &i )
00147
return *
this;
00148
delete d;
00149
00150 d =
new ConstIteratorData;
00151 d->mIt = i.d->mIt;
00152
return *
this;
00153 }
00154
00155 Resource::ConstIterator::~ConstIterator()
00156 {
00157
delete d;
00158 }
00159
00160
const Addressee &Resource::ConstIterator::operator*()
const
00161
{
00162
return *(d->mIt);
00163 }
00164
00165 Resource::ConstIterator &Resource::ConstIterator::operator++()
00166 {
00167 (d->mIt)++;
00168
return *
this;
00169 }
00170
00171 Resource::ConstIterator &Resource::ConstIterator::operator++(
int )
00172 {
00173 (d->mIt)++;
00174
return *
this;
00175 }
00176
00177 Resource::ConstIterator &Resource::ConstIterator::operator--()
00178 {
00179 (d->mIt)--;
00180
return *
this;
00181 }
00182
00183 Resource::ConstIterator &Resource::ConstIterator::operator--(
int )
00184 {
00185 (d->mIt)--;
00186
return *
this;
00187 }
00188
00189
bool Resource::ConstIterator::operator==(
const ConstIterator &it )
00190 {
00191
return ( d->mIt == it.d->mIt );
00192 }
00193
00194
bool Resource::ConstIterator::operator!=(
const ConstIterator &it )
00195 {
00196
return ( d->mIt != it.d->mIt );
00197 }
00198
00199
00200 Resource::Resource(
const KConfig *config )
00201 : KRES::Resource( config ), mAddressBook( 0 )
00202 {
00203 }
00204
00205 Resource::~Resource()
00206 {
00207 }
00208
00209 Resource::Iterator Resource::begin()
00210 {
00211 Iterator it;
00212 it.d->mIt = mAddrMap.begin();
00213
00214
return it;
00215 }
00216
00217 Resource::ConstIterator Resource::begin()
const
00218
{
00219 ConstIterator it;
00220
#if QT_VERSION >= 0x030200
00221
it.d->mIt = mAddrMap.constBegin();
00222
#else
00223
it.d->mIt = mAddrMap.begin();
00224
#endif
00225
00226
return it;
00227 }
00228
00229 Resource::Iterator Resource::end()
00230 {
00231 Iterator it;
00232 it.d->mIt = mAddrMap.end();
00233
00234
return it;
00235 }
00236
00237 Resource::ConstIterator Resource::end()
const
00238
{
00239 ConstIterator it;
00240
#if QT_VERSION >= 0x030200
00241
it.d->mIt = mAddrMap.constEnd();
00242
#else
00243
it.d->mIt = mAddrMap.end();
00244
#endif
00245
00246
return it;
00247 }
00248
00249
void Resource::writeConfig(
KConfig *config )
00250 {
00251 KRES::Resource::writeConfig( config );
00252 }
00253
00254
void Resource::setAddressBook( AddressBook *ab )
00255 {
00256 mAddressBook = ab;
00257 }
00258
00259 AddressBook *Resource::addressBook()
00260 {
00261
return mAddressBook;
00262 }
00263
00264
Ticket *Resource::createTicket( Resource *resource )
00265 {
00266
return new Ticket( resource );
00267 }
00268
00269
void Resource::insertAddressee(
const Addressee &addr )
00270 {
00271 mAddrMap.insert( addr.
uid(), addr );
00272 }
00273
00274
void Resource::removeAddressee(
const Addressee &addr )
00275 {
00276 mAddrMap.erase( addr.
uid() );
00277 }
00278
00279
Addressee Resource::findByUid(
const QString &uid )
00280 {
00281 Addressee::Map::ConstIterator it = mAddrMap.find( uid );
00282
00283
if ( it != mAddrMap.end() )
00284
return it.data();
00285
00286
return Addressee();
00287 }
00288
00289 Addressee::List Resource::findByName(
const QString &name )
00290 {
00291 Addressee::List results;
00292
00293 ConstIterator it;
00294
for ( it = begin(); it !=
end(); ++it ) {
00295
if (
name == (*it).name() )
00296 results.append( *it );
00297 }
00298
00299
return results;
00300 }
00301
00302 Addressee::List Resource::findByEmail(
const QString &email )
00303 {
00304 Addressee::List results;
00305
const QString lowerEmail = email.
lower();
00306
00307 ConstIterator it;
00308
for ( it = begin(); it !=
end(); ++it ) {
00309
const QStringList mailList = (*it).emails();
00310
for ( QStringList::ConstIterator ite = mailList.begin(); ite != mailList.end(); ++ite ) {
00311
if ( lowerEmail == (*ite).
lower() )
00312 results.append( *it );
00313 }
00314 }
00315
00316
return results;
00317 }
00318
00319 Addressee::List Resource::findByCategory(
const QString &category )
00320 {
00321 Addressee::List results;
00322
00323 ConstIterator it;
00324
for ( it = begin(); it !=
end(); ++it ) {
00325
if ( (*it).hasCategory( category) ) {
00326 results.append( *it );
00327 }
00328 }
00329
00330
return results;
00331 }
00332
00333
void Resource::clear()
00334 {
00335 mAddrMap.clear();
00336 }
00337
00338
bool Resource::asyncLoad()
00339 {
00340
bool ok = load();
00341
if ( !ok )
00342 emit loadingError(
this, i18n(
"Loading resource '%1' failed!" )
00343 .arg( resourceName() ) );
00344
else
00345 emit loadingFinished(
this );
00346
00347
return ok;
00348 }
00349
00350
bool Resource::asyncSave(
Ticket *ticket ) {
00351
bool ok =
save( ticket );
00352
if ( !ok )
00353 emit savingError(
this, i18n(
"Saving resource '%1' failed!" )
00354 .arg( resourceName() ) );
00355
else
00356 emit savingFinished(
this );
00357
00358
return ok;
00359 }
00360
00361
#include "resource.moc"