void ResourceSlox::uploadContacts() { QDomDocument doc; QDomElement root = WebdavHandler::addDavElement( doc, doc, "propertyupdate" ); QDomElement set = WebdavHandler::addDavElement( doc, root, "set" ); QDomElement prop = WebdavHandler::addDavElement( doc, set, "prop" ); bool isDelete = false; KABC::Addressee::List addedAddr = addedAddressees(); KABC::Addressee::List changedAddr = changedAddressees(); KABC::Addressee::List deletedAddr = deletedAddressees(); if ( !addedAddr.isEmpty() ) { mUploadAddressee = addedAddr.first(); WebdavHandler::addSloxElement( this, doc, prop, fieldName( ClientId ), mUploadAddressee.uid() ); } else if ( !changedAddr.isEmpty() ) { mUploadAddressee = changedAddr.first(); WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectId ), mUploadAddressee.uid().remove( 0, sizeof("kresources_slox_kabc_") - 1) ); } else if ( !deletedAddr.isEmpty() ) { mUploadAddressee = deletedAddr.first(); isDelete = true; } else { kdDebug() << k_funcinfo << "Upload finished." << endl; emit savingFinished( this ); return; } if ( !isDelete ) { createAddresseeFields( doc, prop, mUploadAddressee ); } else { QString tmp_uid = mUploadAddressee.uid().remove( 0, sizeof("kresources_slox_kabc_") - 1); // remove prefix from uid WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectId ), tmp_uid ); WebdavHandler::addSloxElement( this, doc, prop, "method", "DELETE" ); } kdDebug() << k_funcinfo << doc.toString() << endl; KURL url = mPrefs->url(); url.setPath( "/servlet/webdav.contacts/" ); url.setUser( mPrefs->user() ); url.setPass( mPrefs->password() ); mUploadJob = KIO::davPropPatch( url, doc, false ); connect( mUploadJob, SIGNAL( result( KIO::Job * ) ), SLOT( slotUploadResult( KIO::Job * ) ) ); connect( mUploadJob, SIGNAL( percent( KIO::Job *, unsigned long ) ), SLOT( slotProgress( KIO::Job *, unsigned long ) ) ); mUploadProgress = KPIM::ProgressManager::instance()->createProgressItem( KPIM::ProgressManager::getUniqueID(), i18n("Uploading contacts") ); connect( mUploadProgress, SIGNAL( progressItemCanceled( KPIM::ProgressItem * ) ), SLOT( cancelUpload() ) ); }
bool KAddrBookExternal::addVCard(const KABC::Addressee &addressee, QWidget *parent) { KABC::AddressBook *ab = KABC::StdAddressBook::self(true); bool inserted = false; ab->setErrorHandler(new KABC::GuiErrorHandler(parent)); KABC::Addressee::List addressees = ab->findByEmail(addressee.preferredEmail()); if(addressees.isEmpty()) { if(KAddrBookExternal::addAddressee(addressee)) { QString text = i18n("The VCard was added to your addressbook; " "you can add more information to this " "entry by opening the addressbook."); KMessageBox::information(parent, text, QString::null, "addedtokabc"); inserted = true; } } else { QString text = i18n("The VCard's primary email address is already in " "your addressbook; however, you may save the VCard " "into a file and import it into the addressbook " "manually."); KMessageBox::information(parent, text); inserted = true; } ab->setErrorHandler(0); return inserted; }
void DistributionListDialog::setRecipients( const Recipient::List &recipients ) { Recipient::List::ConstIterator it; for( it = recipients.constBegin(); it != recipients.constEnd(); ++it ) { QStringList emails = KPIMUtils::splitAddressList( (*it).email() ); QStringList::ConstIterator it2; for( it2 = emails.constBegin(); it2 != emails.constEnd(); ++it2 ) { QString name; QString email; KABC::Addressee::parseEmailAddress( *it2, name, email ); if ( !email.isEmpty() ) { DistributionListItem *item = new DistributionListItem( mRecipientsList ); KABC::Addressee::List addressees = KABC::StdAddressBook::self( true )->findByEmail( email ); if ( addressees.isEmpty() ) { KABC::Addressee a; a.setNameFromString( name ); a.insertEmail( email ); item->setTransientAddressee( a, email ); item->setCheckState( 0, Qt::Checked ); } else { KABC::Addressee::List::ConstIterator it3; for( it3 = addressees.constBegin(); it3 != addressees.constEnd(); ++it3 ) { item->setAddressee( *it3, email ); if ( it3 == addressees.constBegin() ) item->setCheckState( 0, Qt::Checked ); } } } } } }
void XXPortManager::slotImport( const QString &identifier ) { const XXPort *xxport = mFactory.createXXPort( identifier, mParentWidget ); if( !xxport ) { return; } const KABC::Addressee::List contacts = xxport->importContacts(); delete xxport; if ( contacts.isEmpty() ) { // nothing to import return; } const QStringList mimeTypes( KABC::Addressee::mimeType() ); QPointer<Akonadi::CollectionDialog> dlg = new Akonadi::CollectionDialog( mParentWidget ); dlg->setMimeTypeFilter( mimeTypes ); dlg->setAccessRightsFilter( Akonadi::Collection::CanCreateItem ); dlg->setCaption( i18n( "Select Address Book" ) ); dlg->setDescription( i18n( "Select the address book the imported contact(s) shall be saved in:" ) ); dlg->setDefaultCollection( mDefaultAddressBook ); if ( !dlg->exec() || !dlg ) { delete dlg; return; } const Akonadi::Collection collection = dlg->selectedCollection(); delete dlg; if ( !mImportProgressDialog ) { mImportProgressDialog = new KProgressDialog( mParentWidget, i18n( "Import Contacts" ) ); mImportProgressDialog->setLabelText( i18np( "Importing one contact to %2", "Importing %1 contacts to %2", contacts.count(), collection.name() ) ); mImportProgressDialog->setAllowCancel( false ); mImportProgressDialog->setAutoClose( true ); mImportProgressDialog->progressBar()->setRange( 1, contacts.count() ); } mImportProgressDialog->show(); for ( int i = 0; i < contacts.count(); ++i ) { Akonadi::Item item; item.setPayload<KABC::Addressee>( contacts.at( i ) ); item.setMimeType( KABC::Addressee::mimeType() ); Akonadi::ItemCreateJob *job = new Akonadi::ItemCreateJob( item, collection ); connect( job, SIGNAL(result(KJob*)), SLOT(slotImportJobDone(KJob*)) ); } }
void KMail::ACLEntryDialog::slotSelectAddresses() { AutoQPointer<KPIM::AddressesDialog> dlg( new KPIM::AddressesDialog( this ) ); dlg->setShowCC( false ); dlg->setShowBCC( false ); if ( mUserIdFormat == FullEmail ) // otherwise we have no way to go back from userid to email dlg->setSelectedTo( userIds() ); if ( dlg->exec() != QDialog::Accepted || !dlg ) { return; } const QStringList distrLists = dlg->toDistributionLists(); QString txt = distrLists.join( ", " ); const KABC::Addressee::List lst = dlg->toAddresses(); if ( !lst.isEmpty() ) { for( QList<KABC::Addressee>::ConstIterator it = lst.constBegin(); it != lst.constEnd(); ++it ) { if ( !txt.isEmpty() ) txt += ", "; txt += addresseeToUserId( *it, mUserIdFormat ); } } mUserIdLineEdit->setText( txt ); }
void KAddressBookView::updateView() { const QStringList uidList = selectedUids(); refresh(); // This relists and deselects everything, in all views if(!uidList.isEmpty()) { // Keep previous selection QStringList::ConstIterator it, uidListEnd(uidList.end()); for(it = uidList.begin(); it != uidListEnd; ++it) setSelected(*it, true); } else { const KABC::Addressee::List contacts = mCore->searchManager()->contacts(); if(!contacts.isEmpty()) setFirstSelected(true); else emit selected(QString::null); } }
void PublishDialog::openAddressbook() { KABC::Addressee::List addressList = KABC::AddresseeDialog::getAddressees( this ); if( addressList.isEmpty() ) { return; } KABC::Addressee a = addressList.first(); if ( !a.isEmpty() ) { int i; for ( i=0; i<addressList.size(); i++ ) { a = addressList[i]; mUI.mNameLineEdit->setEnabled( true ); mUI.mEmailLineEdit->setEnabled( true ); QListWidgetItem *item = new QListWidgetItem( mUI.mListWidget ); mUI.mListWidget->setItemSelected( item, true ); mUI.mNameLineEdit->setText( a.realName() ); mUI.mEmailLineEdit->setText( a.preferredEmail() ); mUI.mListWidget->addItem( item ); } mUI.mRemove->setEnabled( true ); } }
void readKMailEntry(const QString &kmailEntry, KABC::AddressBook *ab) { kdDebug() << "KMAILENTRY: " << kmailEntry << endl; QString entry = kmailEntry.simplifyWhiteSpace(); if(entry.isEmpty()) return; QString email; QString name; QString comment; if(entry.at(entry.length() - 1) == ')') { int br = entry.findRev('('); if(br >= 0) { comment = entry.mid(br + 1, entry.length() - br - 2); entry.truncate(br); if(entry.at(entry.length() - 1).isSpace()) { entry.truncate(br - 1); } } } int posSpace = entry.findRev(' '); if(posSpace < 0) { email = entry; if(!comment.isEmpty()) { name = comment; comment = ""; } } else { email = entry.mid(posSpace + 1); name = entry.left(posSpace); } if(email.at(0) == '<' && email.at(email.length() - 1) == '>') { email = email.mid(1, email.length() - 2); } if(name.at(0) == '"' && name.at(name.length() - 1) == '"') { name = name.mid(1, name.length() - 2); } if(name.at(0) == '\'' && name.at(name.length() - 1) == '\'') { name = name.mid(1, name.length() - 2); } if(name.at(name.length() - 1) == ')') { int br = name.findRev('('); if(br >= 0) { comment = name.mid(br + 1, name.length() - br - 2) + " " + comment; name.truncate(br); if(name.at(name.length() - 1).isSpace()) { name.truncate(br - 1); } } } kdDebug() << " EMAIL : " << email << endl; kdDebug() << " NAME : " << name << endl; kdDebug() << " COMMENT : " << comment << endl; KABC::Addressee::List al = ab->findByEmail(email); if(al.isEmpty()) { KABC::Addressee a; a.setNameFromString(name); a.insertEmail(email); a.setNote(comment); ab->insertAddressee(a); kdDebug() << "--INSERTED: " << a.realName() << endl; } }
int create(KCmdLineArgs *args) { KODE::Printer p; if(args->isSet("warning")) p.setCreationWarning(true); bool createKioslave = args->isSet("create-kioslave"); bool createMain = args->isSet("create-main"); QString filename = args->getOption("filename"); if(createMain) { if(filename.isEmpty()) { kdError() << "Error: No file name given." << endl; return 1; } if(filename.endsWith(".cpp")) { filename = filename.left(filename.length() - 4); } } else { if(!args->isSet("classname")) { kdError() << "Error: No class name given." << endl; return 1; } } QString className = args->getOption("classname"); QString protocol; if(createKioslave) { if(!args->isSet("protocol")) { protocol = className.lower(); kdWarning() << "Warning: No protocol for kioslave given. Assuming '" << protocol << "'" << endl; } else { protocol = args->getOption("protocol"); } } KODE::File file; file.setProject(args->getOption("project")); QString authorEmail = args->getOption("author-email"); QString authorName; KABC::Addressee a; if(authorEmail.isEmpty()) { a = KABC::StdAddressBook::self()->whoAmI(); authorEmail = a.preferredEmail(); } else { KABC::Addressee::List as = KABC::StdAddressBook::self()->findByEmail(authorEmail); if(as.isEmpty()) { kdDebug() << "Unable to find '" << authorEmail << "' in address book." << endl; } else { a = as.first(); } } if(!a.isEmpty()) { authorName = a.realName(); } if(!authorEmail.isEmpty()) { file.addCopyright(QDate::currentDate().year(), authorName, authorEmail); } KODE::License l; if(args->isSet("gpl")) l = KODE::License(KODE::License::GPL); if(args->isSet("lgpl")) l = KODE::License(KODE::License::LGPL); l.setQtException(args->isSet("qt-exception")); file.setLicense(l); file.setNameSpace(args->getOption("namespace")); if(createMain) { file.addInclude("kaboutdata.h"); file.addInclude("kapplication.h"); file.addInclude("kdebug"); file.addInclude("klocale"); file.addInclude("kcmdlineargs"); KODE::Code code; code += "static const KCmdLineOptions options[] ="; code += "{"; code += " { \"verbose\", \"Verbose output\", 0 },"; code += " KCmdLineLastOption"; code += "};"; file.addFileCode(code); KODE::Function main("main", "int"); main.addArgument("int argc"); main.addArgument("char **argv"); code.clear(); code += "KAboutData aboutData(\"test\",\"Test\",\"0.1\");"; code += "KCmdLineArgs::init(argc,argv,&aboutData);"; code += "KCmdLineArgs::addCmdLineOptions( options );"; code += ""; code += "KApplication app;"; code += ""; code += "KCmdLineArgs *args = KCmdLineArgs::parsedArgs();"; code += ""; code += "Q_UNUSED( args );"; main.setBody(code); file.addFileFunction(main); file.setFilename(filename); p.printImplementation(file, false); return 0; } KODE::Class c(className); if(args->isSet("create-dialog")) { c.addBaseClass(KODE::Class("KDialogBase")); c.addInclude("kdialogbase.h"); } else if(createKioslave) { c.setDocs("This class implements a kioslave for ..."); c.addBaseClass(KODE::Class("SlaveBase", "KIO")); c.addHeaderInclude("kio/slavebase.h"); KODE::Function get("get", "void"); get.addArgument("const KURL &url"); KODE::Code code; code += "kdDebug(7000) << \"" + className + "::get()\" << endl;"; code += "kdDebug(7000) << \" URL: \" << url.url() << endl;"; code += "#if 1"; code += "kdDebug(7000) << \" Path: \" << url.path() << endl;"; code += "kdDebug(7000) << \" Query: \" << url.query() << endl;"; code += "kdDebug(7000) << \" Protocol: \" << url.protocol() << endl;"; code += "kdDebug(7000) << \" Filename: \" << url.filename() << endl;"; code += "#endif"; code.newLine(); code += "mimeType( \"text/plain\" );"; code.newLine(); code += "QCString str( \"Hello!\" );"; code += "data( str );"; code.newLine(); code += "finished();"; code.newLine(); code += "kdDebug(7000) << \"" + className + "CgiProtocol::get() done\" << endl;"; get.setBody(code); c.addFunction(get); c.addInclude("kinstance.h"); c.addInclude("kdebug.h"); c.addInclude("sys/types.h"); c.addInclude("unistd.h"); c.addInclude("stdlib.h"); KODE::Function main("kdemain", "int"); main.addArgument("int argc"); main.addArgument("char **argv"); code.clear(); code += "KInstance instance( \"kio_" + protocol + "\" );"; code += ""; code += "kdDebug(7000) << \"Starting kio_" + protocol + "(pid: \" << getpid() << \")\" << endl;"; code += ""; code += "if (argc != 4) {"; code.indent(); code += "fprintf( stderr, \"Usage: kio_" + protocol + " protocol domain-socket1 domain-socket2\\n\");"; code += "exit( -1 );"; code.unindent(); code += "}"; code += ""; code += className + " slave( argv[2], argv[3] );"; code += "slave.dispatchLoop();"; code += ""; code += "return 0;"; main.setBody(code); file.addFileFunction(main); file.addExternCDeclaration(p.functionSignature(main)); } KODE::Function constructor(className); if(args->isSet("singleton")) { constructor.setAccess(KODE::Function::Private); KODE::Function self("self", className + " *"); self.setStatic(true); KODE::Code code; code += "if ( !mSelf ) {"; code += " selfDeleter.setObject( mSelf, new " + className + "() );"; code += "}"; code += "return mSelf;"; self.setBody(code); c.addFunction(self); KODE::MemberVariable selfVar("mSelf", className + " *", true); selfVar.setInitializer("0"); c.addMemberVariable(selfVar); KODE::Variable staticDeleter("selfDeleter", "KStaticDeleter<" + className + ">", true); file.addFileVariable(staticDeleter); file.addInclude("kstaticdeleter.h"); } if(createKioslave) { constructor.addArgument("const QCString &pool"); constructor.addArgument("const QCString &app"); constructor.addInitializer("SlaveBase( \"" + protocol + "\", pool, app )"); } c.addFunction(constructor); file.insertClass(c); p.printHeader(file); p.printImplementation(file); if(createKioslave) { // Write automake Makefile KODE::AutoMakefile am; am.addEntry("INCLUDES", "$(all_includes)"); am.newLine(); am.addEntry("noinst_HEADERS", className.lower() + ".h"); am.newLine(); am.addEntry("METASOURCES", "AUTO"); am.newLine(); am.addEntry("kdelnkdir", "$(kde_servicesdir)"); am.addEntry("kdelnk_DATA", protocol + ".protocol"); KODE::AutoMakefile::Target t("kde_module_LTLIBRARIES", "kio_" + protocol + ".la"); t.setSources(className.lower() + ".cpp"); t.setLibAdd("$(LIB_KIO)"); t.setLdFlags("$(all_libraries) -module $(KDE_PLUGIN)"); am.addTarget(t); p.printAutoMakefile(am); // Write protocol file QString protocolFilename = protocol + ".protocol"; QFileInfo fi(protocolFilename); protocolFilename = fi.absFilePath(); KSaveFile::backupFile(protocolFilename, QString::null, ".backup"); QFile::remove(protocolFilename); KSimpleConfig protocolFile(protocolFilename); protocolFile.setGroup("Protocol"); protocolFile.writeEntry("exec", "kio_" + protocol); protocolFile.writeEntry("protocol", protocol); protocolFile.writeEntry("input", "none"); protocolFile.writeEntry("output", "filesystem"); protocolFile.writeEntry("reading", "true"); protocolFile.writeEntry("DocPath", "kioslave/" + protocol + ".html"); protocolFile.sync(); } return 0; }
//----------------------------------------------------------------------------- void KAddrBookExternal::addEmail(const QString &addr, QWidget *parent) { QString email; QString name; KABC::Addressee::parseEmailAddress(addr, name, email); KABC::AddressBook *ab = KABC::StdAddressBook::self(true); ab->setErrorHandler(new KABC::GuiErrorHandler(parent)); // force a reload of the address book file so that changes that were made // by other programs are loaded ab->asyncLoad(); // if we have to reload the address book then we should also wait until // it's completely reloaded #if KDE_IS_VERSION(3,4,89) // This ugly hack will be removed in 4.0 while(!ab->loadingHasFinished()) { QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput); // use sleep here to reduce cpu usage usleep(100); } #endif KABC::Addressee::List addressees = ab->findByEmail(email); if(addressees.isEmpty()) { KABC::Addressee a; a.setNameFromString(name); a.insertEmail(email, true); { KConfig config("kaddressbookrc"); config.setGroup("General"); int type = config.readNumEntry("FormattedNameType", 1); QString name; switch(type) { case 1: name = a.givenName() + " " + a.familyName(); break; case 2: name = a.assembledName(); break; case 3: name = a.familyName() + ", " + a.givenName(); break; case 4: name = a.familyName() + " " + a.givenName(); break; case 5: name = a.organization(); break; default: name = ""; break; } name.simplifyWhiteSpace(); a.setFormattedName(name); } if(KAddrBookExternal::addAddressee(a)) { QString text = i18n("<qt>The email address <b>%1</b> was added to your " "addressbook; you can add more information to this " "entry by opening the addressbook.</qt>").arg(addr); KMessageBox::information(parent, text, QString::null, "addedtokabc"); } } else { QString text = i18n("<qt>The email address <b>%1</b> is already in your " "addressbook.</qt>").arg(addr); KMessageBox::information(parent, text, QString::null, "alreadyInAddressBook"); } ab->setErrorHandler(0); }