resource.cpp
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"
This file is part of the documentation for kabc Library Version 3.4.0.