kaddressbook
undocmds.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <tqapplication.h>
00026 #include <tqclipboard.h>
00027
00028 #include <tdelocale.h>
00029 #include <tdeapplication.h>
00030
00031 #include <tdeabc/resource.h>
00032
00033 #include "addresseeutil.h"
00034 #include "addresseeconfig.h"
00035 #include "core.h"
00036 #include "kablock.h"
00037
00038 #include "undocmds.h"
00039
00040 bool Command::resourceExist( TDEABC::Resource *resource )
00041 {
00042 TQPtrList<TDEABC::Resource> lst = addressBook()->resources();
00043 for ( Resource *res = lst.first(); res; res = lst.next() ) {
00044 if ( res == resource )
00045 return true;
00046 }
00047 return false;
00048 }
00049
00050 DeleteCommand::DeleteCommand( TDEABC::AddressBook *addressBook,
00051 const TQStringList &uidList)
00052 : Command( addressBook ), mUIDList( uidList )
00053 {
00054 }
00055
00056 TQString DeleteCommand::name() const
00057 {
00058 return i18n( "Delete Contact", "Delete %n Contacts", mUIDList.count() );
00059 }
00060
00061 void DeleteCommand::unexecute()
00062 {
00063
00064 TDEABC::Addressee::List::ConstIterator it;
00065 const TDEABC::Addressee::List::ConstIterator endIt( mAddresseeList.end() );
00066
00067
00068 for ( it = mAddresseeList.begin(); it != endIt; ++it )
00069 lock()->lock( (*it).resource() );
00070
00071 for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
00072 if ( resourceExist( ( *it ).resource() ) )
00073 addressBook()->insertAddressee( *it );
00074 lock()->unlock( (*it).resource() );
00075 }
00076
00077 mAddresseeList.clear();
00078 }
00079
00080 void DeleteCommand::execute()
00081 {
00082 TDEABC::Addressee addr;
00083
00084 TQStringList::ConstIterator it;
00085 const TQStringList::ConstIterator endIt( mUIDList.end() );
00086 for ( it = mUIDList.begin(); it != endIt; ++it ) {
00087 addr = addressBook()->findByUid( *it );
00088 lock()->lock( addr.resource() );
00089 mAddresseeList.append( addr );
00090 AddresseeConfig cfg( addr );
00091 cfg.remove();
00092 }
00093
00094 TDEABC::Addressee::List::ConstIterator addrIt;
00095 const TDEABC::Addressee::List::ConstIterator addrEndIt( mAddresseeList.end() );
00096 for ( addrIt = mAddresseeList.begin(); addrIt != addrEndIt; ++addrIt ) {
00097 if ( resourceExist( ( *addrIt ).resource() ) )
00098 addressBook()->removeAddressee( *addrIt );
00099 lock()->unlock( (*addrIt).resource() );
00100 }
00101 }
00102
00103
00104 PasteCommand::PasteCommand( KAB::Core *core, const TDEABC::Addressee::List &addressees )
00105 : Command( core->addressBook() ), mAddresseeList( addressees ), mCore( core )
00106 {
00107 }
00108
00109 TQString PasteCommand::name() const
00110 {
00111 return i18n( "Paste Contact", "Paste %n Contacts", mAddresseeList.count() );
00112 }
00113
00114 void PasteCommand::unexecute()
00115 {
00116 TDEABC::Addressee::List::ConstIterator it;
00117 const TDEABC::Addressee::List::ConstIterator endIt( mAddresseeList.end() );
00118
00119
00120 for ( it = mAddresseeList.begin(); it != endIt; ++it )
00121 lock()->lock( (*it).resource() );
00122
00123 for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
00124 if ( resourceExist( ( *it ).resource() ) )
00125 addressBook()->removeAddressee( *it );
00126 lock()->unlock( (*it).resource() );
00127 }
00128 }
00129
00130 void PasteCommand::execute()
00131 {
00132 TQStringList uids;
00133
00134 TDEABC::Addressee::List::ConstIterator constIt;
00135 const TDEABC::Addressee::List::ConstIterator constEndIt( mAddresseeList.end() );
00136
00137
00138 for ( constIt = mAddresseeList.begin(); constIt != constEndIt; ++constIt )
00139 lock()->lock( (*constIt).resource() );
00140
00141 TDEABC::Addressee::List::Iterator it;
00142 const TDEABC::Addressee::List::Iterator endIt( mAddresseeList.end() );
00143 for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
00144 if ( resourceExist( ( *it ).resource() ) ) {
00145
00150 (*it).setUid( TDEApplication::randomString( 10 ) );
00151 uids.append( (*it).uid() );
00152 addressBook()->insertAddressee( *it );
00153 }
00154 lock()->unlock( (*it).resource() );
00155 }
00156
00157 }
00158
00159
00160 NewCommand::NewCommand( TDEABC::AddressBook *addressBook, const TDEABC::Addressee::List &addressees )
00161 : Command( addressBook ), mAddresseeList( addressees )
00162 {
00163 }
00164
00165 TQString NewCommand::name() const
00166 {
00167 return i18n( "New Contact", "New %n Contacts", mAddresseeList.count() );
00168 }
00169
00170 void NewCommand::unexecute()
00171 {
00172 TDEABC::Addressee::List::ConstIterator it;
00173 const TDEABC::Addressee::List::ConstIterator endIt( mAddresseeList.end() );
00174
00175
00176 for ( it = mAddresseeList.begin(); it != endIt; ++it )
00177 lock()->lock( (*it).resource() );
00178
00179 for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
00180 if ( resourceExist( ( *it ).resource() ) )
00181 addressBook()->removeAddressee( *it );
00182 lock()->unlock( (*it).resource() );
00183 }
00184 }
00185
00186 void NewCommand::execute()
00187 {
00188 TDEABC::Addressee::List::Iterator it;
00189 const TDEABC::Addressee::List::Iterator endIt( mAddresseeList.end() );
00190
00191
00192 for ( it = mAddresseeList.begin(); it != endIt; ++it )
00193 lock()->lock( (*it).resource() );
00194
00195 for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
00196 if ( resourceExist( ( *it ).resource() ) )
00197 addressBook()->insertAddressee( *it );
00198 lock()->unlock( (*it).resource() );
00199 }
00200 }
00201
00202
00203 EditCommand::EditCommand( TDEABC::AddressBook *addressBook,
00204 const TDEABC::Addressee &oldAddressee,
00205 const TDEABC::Addressee &newAddressee )
00206 : Command( addressBook ),
00207 mOldAddressee( oldAddressee ), mNewAddressee( newAddressee )
00208 {
00209 }
00210
00211 TQString EditCommand::name() const
00212 {
00213 return i18n( "Edit Contact" );
00214 }
00215
00216 void EditCommand::unexecute()
00217 {
00218 if ( resourceExist( mOldAddressee.resource() ) )
00219 {
00220 lock()->lock( mOldAddressee.resource() );
00221 addressBook()->insertAddressee( mOldAddressee );
00222 lock()->unlock( mOldAddressee.resource() );
00223 }
00224 }
00225
00226 void EditCommand::execute()
00227 {
00228 if ( resourceExist( mNewAddressee.resource() ) )
00229 {
00230 lock()->lock( mNewAddressee.resource() );
00231 addressBook()->insertAddressee( mNewAddressee );
00232 lock()->unlock( mNewAddressee.resource() );
00233 }
00234 }
00235
00236
00237 CutCommand::CutCommand( TDEABC::AddressBook *addressBook, const TQStringList &uidList )
00238 : Command( addressBook ), mUIDList( uidList )
00239 {
00240 }
00241
00242 TQString CutCommand::name() const
00243 {
00244 return i18n( "Cut Contact", "Cut %n Contacts", mUIDList.count() );
00245 }
00246
00247 void CutCommand::unexecute()
00248 {
00249 TDEABC::Addressee::List::ConstIterator it;
00250 const TDEABC::Addressee::List::ConstIterator endIt( mAddresseeList.end() );
00251
00252
00253 for ( it = mAddresseeList.begin(); it != endIt; ++it )
00254 lock()->lock( (*it).resource() );
00255
00256 for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
00257 if ( resourceExist( ( *it ).resource() ) )
00258 addressBook()->insertAddressee( *it );
00259 lock()->unlock( (*it).resource() );
00260 }
00261
00262 mAddresseeList.clear();
00263
00264 TQClipboard *cb = TQApplication::clipboard();
00265 kapp->processEvents();
00266 cb->setText( mOldText );
00267 }
00268
00269 void CutCommand::execute()
00270 {
00271 TDEABC::Addressee addr;
00272
00273 TQStringList::ConstIterator it;
00274 const TQStringList::ConstIterator endIt( mUIDList.end() );
00275 for ( it = mUIDList.begin(); it != endIt; ++it ) {
00276 addr = addressBook()->findByUid( *it );
00277 mAddresseeList.append( addr );
00278 lock()->lock( addr.resource() );
00279 }
00280
00281 TDEABC::Addressee::List::ConstIterator addrIt;
00282 const TDEABC::Addressee::List::ConstIterator addrEndIt( mAddresseeList.end() );
00283 for ( addrIt = mAddresseeList.begin(); addrIt != addrEndIt; ++addrIt ) {
00284 if ( resourceExist( ( *addrIt ).resource() ) )
00285 addressBook()->removeAddressee( *addrIt );
00286 lock()->unlock( addr.resource() );
00287 }
00288
00289
00290 mClipText = AddresseeUtil::addresseesToClipboard( mAddresseeList );
00291
00292 TQClipboard *cb = TQApplication::clipboard();
00293 mOldText = cb->text();
00294 kapp->processEvents();
00295 #if defined(KABC_VCARD_ENCODING_FIX)
00296 cb->setText( TQString::fromUtf8( mClipText.data() ) );
00297 #else
00298 cb->setText( mClipText );
00299 #endif
00300 }
00301
00302 CopyToCommand::CopyToCommand( TDEABC::AddressBook *addressBook, const TQStringList &uidList,
00303 TDEABC::Resource *resource )
00304 : Command( addressBook ), mUIDList( uidList ), mResource( resource )
00305 {
00306 }
00307
00308 TQString CopyToCommand::name() const
00309 {
00310 return i18n( "Copy Contact To", "Copy %n Contacts To", mUIDList.count() );
00311 }
00312
00313 void CopyToCommand::unexecute()
00314 {
00315 TDEABC::Addressee::List::ConstIterator it;
00316 const TDEABC::Addressee::List::ConstIterator endIt( mAddresseeList.end() );
00317
00318
00319 for ( it = mAddresseeList.begin(); it != endIt; ++it )
00320 lock()->lock( (*it).resource() );
00321
00322 for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
00323 if ( resourceExist( ( *it ).resource() ) )
00324 addressBook()->removeAddressee( *it );
00325 lock()->unlock( (*it).resource() );
00326 }
00327 }
00328
00329 void CopyToCommand::execute()
00330 {
00331 KABLock::self( addressBook() )->lock( mResource );
00332 TQStringList::Iterator it( mUIDList.begin() );
00333 const TQStringList::Iterator endIt( mUIDList.end() );
00334 while ( it != endIt ) {
00335 TDEABC::Addressee addr = addressBook()->findByUid( *it++ );
00336 if ( !addr.isEmpty() ) {
00337 TDEABC::Addressee newAddr( addr );
00338
00339
00340 newAddr.setUid( TDEApplication::randomString( 10 ) );
00341 newAddr.setResource( mResource );
00342 if ( resourceExist( newAddr.resource() ) )
00343 addressBook()->insertAddressee( newAddr );
00344 mAddresseeList.append( newAddr );
00345 }
00346 }
00347 KABLock::self( addressBook() )->unlock( mResource );
00348
00349 }
00350
00351 MoveToCommand::MoveToCommand( KAB::Core *core, const TQStringList &uidList,
00352 TDEABC::Resource *resource )
00353 : Command( core->addressBook() ), mUIDList( uidList ), mResource( resource ), mCore( core )
00354 {
00355 }
00356
00357 TQString MoveToCommand::name() const
00358 {
00359 return i18n( "Move Contact To", "Move %n Contacts To", mUIDList.count() );
00360 }
00361
00362 void MoveToCommand::unexecute()
00363 {
00364
00365 TDEABC::Resource *resource = mCore->requestResource( mCore->widget() );
00366 if ( !resource )
00367 return;
00368 moveContactTo( resource );
00369 }
00370
00371 void MoveToCommand::execute()
00372 {
00373 moveContactTo( mResource );
00374 }
00375
00376 void MoveToCommand::moveContactTo( TDEABC::Resource *resource )
00377 {
00378 KABLock::self( addressBook() )->lock( resource );
00379 TQStringList::Iterator it( mUIDList.begin() );
00380 const TQStringList::Iterator endIt( mUIDList.end() );
00381 while ( it != endIt ) {
00382 TDEABC::Addressee addr = addressBook()->findByUid( *it++ );
00383 if ( !addr.isEmpty() ) {
00384 TDEABC::Addressee newAddr( addr );
00385
00386
00387 TQString uid = TDEApplication::randomString( 10 );
00388 newAddr.setUid( uid );
00389 newAddr.setResource( resource );
00390 if ( resourceExist( newAddr.resource() ) )
00391 addressBook()->insertAddressee( newAddr );
00392 mAddresseeList.append( newAddr );
00393 mUIDList.append( uid );
00394 const bool inserted = addressBook()->find( newAddr ) != addressBook()->end();
00395 if ( inserted ) {
00396 if ( resourceExist( addr.resource() ) ) {
00397 KABLock::self( addressBook() )->lock( addr.resource() );
00398 addressBook()->removeAddressee( addr );
00399 KABLock::self( addressBook() )->unlock( addr.resource() );
00400 }
00401 }
00402 }
00403 }
00404 KABLock::self( addressBook() )->unlock( resource );
00405
00406 }
|