bool KAddrBookExternal::addAddressee(const KABC::Addressee &addr) { KABC::AddressBook *addressBook = KABC::StdAddressBook::self(true); #if KDE_IS_VERSION(3,4,89) // This ugly hack will be removed in 4.0 while(!addressBook->loadingHasFinished()) { QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput); // use sleep here to reduce cpu usage usleep(100); } #endif // Select a resource QPtrList<KABC::Resource> kabcResources = addressBook->resources(); QPtrList<KRES::Resource> kresResources; QPtrListIterator<KABC::Resource> resIt(kabcResources); KABC::Resource *kabcResource; while((kabcResource = resIt.current()) != 0) { ++resIt; if(!kabcResource->readOnly()) { KRES::Resource *res = static_cast<KRES::Resource *>(kabcResource); if(res) kresResources.append(res); } } kabcResource = static_cast<KABC::Resource *>(KRES::SelectDialog::getResource(kresResources, 0)); KABC::Ticket *ticket = addressBook->requestSaveTicket(kabcResource); bool saved = false; if(ticket) { KABC::Addressee addressee(addr); addressee.setResource(kabcResource); addressBook->insertAddressee(addressee); saved = addressBook->save(ticket); if(!saved) addressBook->releaseSaveTicket(ticket); } addressBook->emitAddressBookChanged(); return saved; }
void KoRdfFoaF::saveToKABC() { Q_D (KoRdfFoaF); kDebug(30015) << "saving name:" << d->m_name; #ifdef KDEPIMLIBS_FOUND KABC::StdAddressBook *ab = static_cast<KABC::StdAddressBook*> (KABC::StdAddressBook::self()); if (!ab) { return; } KABC::Ticket *ticket = ab->requestSaveTicket(); KABC::Addressee addr = d->toKABC(); ab->insertAddressee(addr); KABC::AddressBook* pab = ab; pab->save(ticket); #endif }
void KABCPersistence::slotWriteAddressBook() { //kDebug( 14010 ) ; KABC::AddressBook* ab = addressBook(); QListIterator<KABC::Resource *> it( d->pendingResources ); while ( it.hasNext() ) { //kDebug( 14010 ) << "Writing resource " << it.current()->resourceName(); KABC::Ticket *ticket = ab->requestSaveTicket( it.next() ); if ( !ticket ) kWarning( 14010 ) << "WARNING: Resource is locked by other application!"; else { if ( !ab->save( ticket ) ) { kWarning( 14010 ) << "ERROR: Saving failed!"; ab->releaseSaveTicket( ticket ); } } //kDebug( 14010 ) << "Finished writing KABC"; } d->pendingResources.clear(); d->addrBookWritePending = false; }
void DistributionListDialog::slotUser1() { bool isEmpty = true; KABC::AddressBook *ab = KABC::StdAddressBook::self( true ); for (int i = 0; i < mRecipientsList->topLevelItemCount(); ++i) { DistributionListItem *item = static_cast<DistributionListItem *>( mRecipientsList->topLevelItem( i )); if ( item && item->checkState( 0 ) == Qt::Checked ) { isEmpty = false; break; } } if ( isEmpty ) { KMessageBox::information( this, i18nc("@info", "There are no recipients in your list. " "First select some recipients, " "then try again.") ); return; } QString name = mTitleEdit->text(); if ( name.isEmpty() ) { bool ok = false; name = KInputDialog::getText( i18nc("@title:window","New Distribution List"), i18nc("@label:textbox","Please enter name:"), QString(), &ok, this ); if ( !ok || name.isEmpty() ) return; } if ( ab->findDistributionListByName( name ) ) { KMessageBox::information( this, i18nc( "@info", "<para>Distribution list with the given name <resource>%1</resource> " "already exists. Please select a different name.</para>", name ) ); return; } KABC::DistributionList *dlist = ab->createDistributionList( name ); for (int i = 0; i < mRecipientsList->topLevelItemCount(); ++i) { DistributionListItem *item = static_cast<DistributionListItem *>( mRecipientsList->topLevelItem( i )); if ( item && item->checkState( 0 ) == Qt::Checked ) { kDebug() << item->addressee().fullEmail() << item->addressee().uid(); if ( item->isTransient() ) { ab->insertAddressee( item->addressee() ); } if ( item->email() == item->addressee().preferredEmail() ) { dlist->insertEntry( item->addressee() ); } else { dlist->insertEntry( item->addressee(), item->email() ); } } } // let the resource know that the data has changed KABC::Resource *resource = dlist->resource(); resource->insertDistributionList( dlist ); // save the resource bool saveError = true; KABC::Ticket *ticket = ab->requestSaveTicket( resource ); if ( ticket ) { if ( ab->save( ticket ) ) { saveError = false; } else ab->releaseSaveTicket( ticket ); } if ( saveError ) { kWarning() << "Couldn't save new addresses in the distribution list just created to the address book"; } close(); }
void DistributionListDialog::slotUser1() { bool isEmpty = true; KABC::AddressBook *ab = KABC::StdAddressBook::self( true ); QListViewItem *i = mRecipientsList->firstChild(); while( i ) { DistributionListItem *item = static_cast<DistributionListItem *>( i ); if ( item->isOn() ) { isEmpty = false; break; } i = i->nextSibling(); } if ( isEmpty ) { KMessageBox::information( this, i18n("There are no recipients in your list. " "First select some recipients, " "then try again.") ); return; } #ifndef KDEPIM_NEW_DISTRLISTS KABC::DistributionListManager manager( ab ); manager.load(); #endif QString name = mTitleEdit->text(); if ( name.isEmpty() ) { bool ok = false; name = KInputDialog::getText( i18n("New Distribution List"), i18n("Please enter name:"), QString::null, &ok, this ); if ( !ok || name.isEmpty() ) return; } #ifdef KDEPIM_NEW_DISTRLISTS if ( !KPIM::DistributionList::findByName( ab, name ).isEmpty() ) { #else if ( manager.list( name ) ) { #endif KMessageBox::information( this, i18n( "<qt>Distribution list with the given name <b>%1</b> " "already exists. Please select a different name.</qt>" ).arg( name ) ); return; } #ifdef KDEPIM_NEW_DISTRLISTS KPIM::DistributionList dlist; dlist.setName( name ); i = mRecipientsList->firstChild(); while( i ) { DistributionListItem *item = static_cast<DistributionListItem *>( i ); if ( item->isOn() ) { kdDebug() << " " << item->addressee().fullEmail() << endl; if ( item->isTransient() ) { ab->insertAddressee( item->addressee() ); } if ( item->email() == item->addressee().preferredEmail() ) { dlist.insertEntry( item->addressee() ); } else { dlist.insertEntry( item->addressee(), item->email() ); } } i = i->nextSibling(); } ab->insertAddressee( dlist ); #else KABC::DistributionList *dlist = new KABC::DistributionList( &manager, name ); i = mRecipientsList->firstChild(); while( i ) { DistributionListItem *item = static_cast<DistributionListItem *>( i ); if ( item->isOn() ) { kdDebug() << " " << item->addressee().fullEmail() << endl; if ( item->isTransient() ) { ab->insertAddressee( item->addressee() ); } if ( item->email() == item->addressee().preferredEmail() ) { dlist->insertEntry( item->addressee() ); } else { dlist->insertEntry( item->addressee(), item->email() ); } } i = i->nextSibling(); } #endif // FIXME: Ask the user which resource to save to instead of the default bool saveError = true; KABC::Ticket *ticket = ab->requestSaveTicket( 0 /*default resource */ ); if ( ticket ) if ( ab->save( ticket ) ) saveError = false; else ab->releaseSaveTicket( ticket ); if ( saveError ) kdWarning(5006) << k_funcinfo << " Couldn't save new addresses in the distribution list just created to the address book" << endl; #ifndef KDEPIM_NEW_DISTRLISTS manager.save(); #endif close(); }