/* yahooprotocol.cpp - Yahoo Plugin for Kopete Copyright (c) 2002 by Duncan Mac-Vicar Prett Copyright (c) 2003-2004 by Matt Rogers Copyright (c) 2002-2004 by the Kopete developers ************************************************************************* * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ************************************************************************* */ /* QT Includes */ /* KDE Includes */ #include #include #include /* Local Includes */ #include "yahooprotocol.h" #include "yahooaccount.h" #include "yahooaddcontact.h" #include "yahooeditaccount.h" /* Kopete Includes */ #include "kopeteaccountmanager.h" #include "kopeteonlinestatusmanager.h" #include "kopeteglobal.h" typedef KGenericFactory YahooProtocolFactory; K_EXPORT_COMPONENT_FACTORY( kopete_yahoo, YahooProtocolFactory( "kopete_yahoo" ) ) YahooProtocol::YahooProtocol( TQObject *parent, const char *name, const TQStringList & ) : Kopete::Protocol( YahooProtocolFactory::instance(), parent, name ), Offline( Kopete::OnlineStatus::Offline, 0, this, 0x5a55aa56, TQString::null, i18n( "Offline" ), i18n( "Offline" ), Kopete::OnlineStatusManager::Offline ), Online( Kopete::OnlineStatus::Online, 25, this, 0, TQString::null, i18n( "Online" ), i18n( "Online" ), Kopete::OnlineStatusManager::Online, Kopete::OnlineStatusManager::HasAwayMessage ), BeRightBack( Kopete::OnlineStatus::Away, 22, this, 1, "contact_away_overlay", i18n( "Be right back" ), i18n( "Be right back" ) ), Busy( Kopete::OnlineStatus::Away, 20, this, 2, "contact_busy_overlay", i18n( "Busy" ), i18n( "Busy" ), Kopete::OnlineStatusManager::Busy, Kopete::OnlineStatusManager::HasAwayMessage ), NotAtHome( Kopete::OnlineStatus::Away, 17, this, 3, "contact_xa_overlay", i18n( "Not at home" ), i18n( "Not at home" ), Kopete::OnlineStatusManager::ExtendedAway ), NotAtMyDesk( Kopete::OnlineStatus::Away, 18, this, 4, "contact_xa_overlay", i18n( "Not at my desk"), i18n( "Not at my desk"), Kopete::OnlineStatusManager::Away ), NotInTheOffice( Kopete::OnlineStatus::Away, 16, this, 5, "contact_xa_overlay", i18n( "Not in the office" ), i18n( "Not in the office" ) ), OnThePhone( Kopete::OnlineStatus::Away, 12, this, 6, "contact_phone_overlay", i18n( "On the phone" ), i18n( "On the phone" ) ), OnVacation( Kopete::OnlineStatus::Away, 3, this, 7, "contact_xa_overlay", i18n( "On vacation" ), i18n( "On vacation" ) ), OutToLunch( Kopete::OnlineStatus::Away, 10, this, 8, "contact_food_overlay", i18n( "Out to lunch" ), i18n( "Out to lunch" ) ), SteppedOut( Kopete::OnlineStatus::Away, 14, this, 9, "contact_away_overlay", i18n( "Stepped out" ), i18n( "Stepped out" ) ), Invisible( Kopete::OnlineStatus::Invisible, 3, this, 12, "contact_invisible_overlay", i18n( "Invisible" ), i18n( "Invisible" ), Kopete::OnlineStatusManager::Invisible ), Custom( Kopete::OnlineStatus::Away, 25, this, 99, "contact_busy_overlay", i18n( "Custom" ), i18n( "Custom" ), Kopete::OnlineStatusManager::HideFromMenu ), Idle( Kopete::OnlineStatus::Away, 15, this, 999, "yahoo_idle", i18n( "Idle" ), i18n( "Idle" ), Kopete::OnlineStatusManager::Idle ), Connecting( Kopete::OnlineStatus::Connecting,2, this, 555, "yahoo_connecting", i18n( "Connecting" ) ), awayMessage(Kopete::Global::Properties::self()->awayMessage()), iconCheckSum("iconCheckSum", i18n("Buddy Icon Checksum"), TQString::null, true, false, true), iconExpire("iconExpire", i18n("Buddy Icon Expire"), TQString::null, true, false, true), iconRemoteUrl("iconRemoteUrl", i18n("Buddy Icon Remote Url"), TQString::null, true, false, true), propfirstName(Kopete::Global::Properties::self()->firstName()), propSecondName(), propLastName(Kopete::Global::Properties::self()->lastName()), propNickName(Kopete::Global::Properties::self()->nickName()), propTitle("YABTitle", i18n("Title"), TQString::null, true, false), propPhoneMobile(Kopete::Global::Properties::self()->privateMobilePhone()), propEmail(Kopete::Global::Properties::self()->emailAddress()), propYABId("YABId", i18n("YAB Id"), TQString::null, true, false, true), propPager("YABPager", i18n("Pager number"), TQString::null, true, false), propFax("YABFax", i18n("Fax number"), TQString::null, true, false), propAdditionalNumber("YABAdditionalNumber", i18n("Additional number"), TQString::null, true, false), propAltEmail1("YABAlternativeEmail1", i18n("Alternative email 1"), TQString::null, true, false), propAltEmail2("YABAlternativeEmail2", i18n("Alternative email 1"), TQString::null, true, false), propImAIM("YABIMAIM", i18n("AIM"), TQString::null, true, false), propImICQ("YABIMICQ", i18n("ICQ"), TQString::null, true, false), propImMSN("YABIMMSN", i18n("MSN"), TQString::null, true, false), propImGoogleTalk("YABIMGoogleTalk", i18n("GoogleTalk"), TQString::null, true, false), propImSkype("YABIMSkype", i18n("Skype"), TQString::null, true, false), propImIRC("YABIMIRC", i18n("IRC"), TQString::null, true, false), propImQQ("YABIMQQ", i18n("QQ"), TQString::null, true, false), propPrivateAddress("YABPrivateAddress", i18n("Private Address"), TQString::null, true, false), propPrivateCity("YABPrivateCity", i18n("Private City"), TQString::null, true, false), propPrivateState("YABPrivateState", i18n("Private State"), TQString::null, true, false), propPrivateZIP("YABPrivateZIP", i18n("Private ZIP"), TQString::null, true, false), propPrivateCountry("YABPrivateCountry", i18n("Private Country"), TQString::null, true, false), propPrivatePhone(Kopete::Global::Properties::self()->privatePhone()), propPrivateURL("YABPrivateURL", i18n("Private URL"), TQString::null, true, false), propCorporation("YABCorporation", i18n("Corporation"), TQString::null, true, false), propWorkAddress("YABWorkAddress", i18n("Work Address"), TQString::null, true, false), propWorkCity("YABWorkCity", i18n("Work City"), TQString::null, true, false), propWorkState("YABWorkState", i18n("Work State"), TQString::null, true, false), propWorkZIP("YABWorkZIP", i18n("Work ZIP"), TQString::null, true, false), propWorkCountry("YABWorkCountry", i18n("Work Country"), TQString::null, true, false), propWorkPhone(Kopete::Global::Properties::self()->workPhone()), propWorkURL("YABWorkURL", i18n("Work URL"), TQString::null, true, false), propBirthday("YABBirthday", i18n("Birthday"), TQString::null, true, false), propAnniversary("YABAnniversary", i18n("Anniversary"), TQString::null, true, false), propNotes("YABNotes", i18n("Notes"), TQString::null, true, false), propAdditional1("YABAdditional1", i18n("Additional 1"), TQString::null, true, false), propAdditional2("YABAdditional2", i18n("Additional 2"), TQString::null, true, false), propAdditional3("YABAdditional3", i18n("Additional 3"), TQString::null, true, false), propAdditional4("YABAdditional4", i18n("Additional 4"), TQString::null, true, false) { kdDebug(YAHOO_GEN_DEBUG) << k_funcinfo << endl; s_protocolStatic_ = this; setCapabilities( RichFgColor | RichFormatting | RichFont ); addAddressBookField( "messaging/yahoo", Kopete::Plugin::MakeIndexField ); } YahooProtocol::~YahooProtocol() { kdDebug(YAHOO_GEN_DEBUG) << k_funcinfo << endl; s_protocolStatic_ = 0L; } YahooProtocol* YahooProtocol::s_protocolStatic_ = 0L; Kopete::OnlineStatus YahooProtocol::statusFromYahoo( int status ) { switch ( status ) { case 0 : return Online; case 1: return BeRightBack; case 2: return Busy; case 3: return NotAtHome; case 4: return NotAtMyDesk; case 5: return NotInTheOffice; case 6: return OnThePhone; case 7: return OnVacation; case 8: return OutToLunch; case 9: return SteppedOut; case 12: return Invisible; case 99: return Custom; case 999: return Idle; case 0x5a55aa56: return Offline; } return Offline; } /*************************************************************************** * * * Re-implementation of Plugin class methods * * * ***************************************************************************/ YahooProtocol *YahooProtocol::protocol() { return s_protocolStatic_; } Kopete::Contact *YahooProtocol::deserializeContact( Kopete::MetaContact *metaContact, const TQMap &serializedData, const TQMap & /* addressBookData */ ) { TQString contactId = serializedData[ "contactId" ]; TQString accountId = serializedData[ "accountId" ]; YahooAccount *theAccount = static_cast(Kopete::AccountManager::self()->findAccount(protocol()->pluginId(), accountId)); if(!theAccount) { kdDebug( YAHOO_GEN_DEBUG ) << k_funcinfo << "Account " << accountId << " not found" << endl; return 0; } if(theAccount->contact(contactId)) { kdDebug( YAHOO_GEN_DEBUG ) << k_funcinfo << "User " << contactId << " already in contacts map" << endl; return 0; } theAccount->addContact(contactId, metaContact, Kopete::Account::DontChangeKABC); return theAccount->contacts()[contactId]; } AddContactPage *YahooProtocol::createAddContactWidget( TQWidget * parent , Kopete::Account* ) { kdDebug(YAHOO_GEN_DEBUG) << "YahooProtocol::createAddContactWidget()" << endl; return new YahooAddContact(this, parent); } KopeteEditAccountWidget *YahooProtocol::createEditAccountWidget(Kopete::Account *account, TQWidget *parent) { return new YahooEditAccount(this, account, parent); } Kopete::Account *YahooProtocol::createNewAccount(const TQString &accountId) { return new YahooAccount(this, accountId); } #include "yahooprotocol.moc" // vim: set noet ts=4 sts=4 sw=4: