/** * Send the file to the contact * @param uid the KABC uid you are sending to. * @param sourceURL a KURL to send. * @param altFileName an alternate filename describing the file * @param fileSize file size in bytes */ void Addressbook::sendFile(const QString &uid, const KURL &sourceURL, const QString &altFileName, uint fileSize) { if(uid.isEmpty()) { focusAndShowErrorMessage(i18n("Another KDE application tried to use Konversation to send a file to a contact, but did not specify any contact to send the file to. This is probably a bug in the other application.")); return; } KABC::Addressee addressee = addressBook->findByUid(uid); if(addressee.isEmpty()) { focusAndShowErrorMessage(i18n("Another KDE application tried to use Konversation to send a file to a contact, but Konversation could not find the specified contact in the KDE address book.")); return; } NickInfoPtr nickInfo = getNickInfo(addressee); if(!nickInfo) { QString user = addressee.fullEmail(); if(!user.isEmpty()) user = "******" + user + ')'; focusAndShowErrorMessage(i18n("Another KDE application tried to use Konversation to send a file to a contact, but the requested user%1 is not currently online.").arg(user)); return; } nickInfo->getServer()->addDccSend(nickInfo->getNickname(), sourceURL, altFileName, fileSize); QWidget *widget = nickInfo->getServer()->getViewContainer()->getWindow(); KWin::demandAttention(widget->winId()); //If activeWindow request is denied, at least demand attention! KWin::activateWindow(widget->winId()); //May or may not work, depending on focus stealing prevention. }
QString KAddressBookView::selectedEmails() { bool first = true; QString emailAddrs; const QStringList uidList = selectedUids(); KABC::Addressee addr; QString email; QStringList::ConstIterator it; for(it = uidList.begin(); it != uidList.end(); ++it) { addr = mCore->addressBook()->findByUid(*it); if(!addr.isEmpty()) { QString m = QString::null; if(addr.emails().count() > 1) m = KABC::EmailSelector::getEmail(addr.emails(), addr.preferredEmail(), this); email = addr.fullEmail(m); if(!first) emailAddrs += ", "; else first = false; emailAddrs += email; } } return emailAddrs; }
/** * Return a string containing formatted additional information about a nick. * @param nickInfo A pointer to NickInfo structure for the nick. May be Null. * @param addressee Addressbook entry for the nick. May be empty. * @return A string formatted for display containing the information * about the nick. * @return needWhois True if a WHOIS needs to be performed on the nick * to get additional information. */ QString NicksOnline::getNickAdditionalInfo(NickInfoPtr nickInfo, KABC::Addressee addressee, bool& needWhois) { QString info; if (!addressee.isEmpty()) { if (addressee.fullEmail().isEmpty()) info += addressee.realName(); else info += addressee.fullEmail(); } QString niInfo; if (nickInfo) { if (nickInfo->isAway()) { niInfo += i18n("Away"); if (!nickInfo->getAwayMessage().isEmpty()) niInfo += '(' + nickInfo->getAwayMessage() + ')'; } if (!nickInfo->getHostmask().isEmpty()) niInfo += ' ' + nickInfo->getHostmask(); if (!nickInfo->getRealName().isEmpty()) niInfo += " (" + nickInfo->getRealName() + ')'; if (!nickInfo->getNetServer().isEmpty()) { niInfo += i18n( " online via %1" ).arg( nickInfo->getNetServer() ); if (!nickInfo->getNetServerInfo().isEmpty()) niInfo += " (" + nickInfo->getNetServerInfo() + ')'; } if (!nickInfo->getOnlineSince().isNull()) niInfo += i18n( " since %1" ).arg( nickInfo->getPrettyOnlineSince() ); } needWhois = niInfo.isEmpty(); if (!info.isEmpty() && !needWhois) info += ' '; return info + niInfo; }
/** * Send a single message to the specified addressee * Any response will be handled by the IM client as a normal * conversation. * @param uid the KABC uid you want to chat with. * @param message the message to send them. */ void Addressbook::messageContact( const QString &uid, const QString& message ) { if(uid.isEmpty()) { focusAndShowErrorMessage(i18n("Another KDE application tried to use Konversation for instant messaging, but did not specify any contact to send the message to. This is probably a bug in the other application.")); return; } KABC::Addressee addressee = addressBook->findByUid(uid); if(addressee.isEmpty()) { focusAndShowErrorMessage(i18n("Another KDE application tried to use Konversation for instant messaging, but Konversation could not find the specified contact in the KDE address book.")); return; } NickInfoPtr nickInfo = getNickInfo(addressee); if(!nickInfo) { QString user = addressee.fullEmail(); if(!user.isEmpty()) user = "******" + user + ')'; focusAndShowErrorMessage(i18n("Another KDE application tried to use Konversation for instant messaging, but the requested user%1 is not online.").arg(user)); return; } nickInfo->getServer()->dcopSay(nickInfo->getNickname(), message); }