/*
yahooprotocol . cpp - Yahoo Plugin for Kopete
Copyright ( c ) 2002 by Duncan Mac - Vicar Prett < duncan @ kde . org >
Copyright ( c ) 2003 - 2004 by Matt Rogers < matt @ matt . rogers . name >
Copyright ( c ) 2002 - 2004 by the Kopete developers < kopete - devel @ kde . org >
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* 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 <kdebug.h>
# include <kgenericfactory.h>
# include <ksimpleconfig.h>
/* 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 < YahooProtocol > 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 ( ) , i18n ( " Offline " ) , i18n ( " Offline " ) , Kopete : : OnlineStatusManager : : Offline ) ,
Online ( Kopete : : OnlineStatus : : Online , 25 , this , 0 , TQString ( ) , 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 ( ) , true , false , true ) ,
iconExpire ( " iconExpire " , i18n ( " Buddy Icon Expire " ) , TQString ( ) , true , false , true ) ,
iconRemoteUrl ( " iconRemoteUrl " , i18n ( " Buddy Icon Remote Url " ) , TQString ( ) , 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 ( ) , true , false ) ,
propPhoneMobile ( Kopete : : Global : : Properties : : self ( ) - > privateMobilePhone ( ) ) ,
propEmail ( Kopete : : Global : : Properties : : self ( ) - > emailAddress ( ) ) ,
propYABId ( " YABId " , i18n ( " YAB Id " ) , TQString ( ) , true , false , true ) ,
propPager ( " YABPager " , i18n ( " Pager number " ) , TQString ( ) , true , false ) ,
propFax ( " YABFax " , i18n ( " Fax number " ) , TQString ( ) , true , false ) ,
propAdditionalNumber ( " YABAdditionalNumber " , i18n ( " Additional number " ) , TQString ( ) , true , false ) ,
propAltEmail1 ( " YABAlternativeEmail1 " , i18n ( " Alternative email 1 " ) , TQString ( ) , true , false ) ,
propAltEmail2 ( " YABAlternativeEmail2 " , i18n ( " Alternative email 1 " ) , TQString ( ) , true , false ) ,
propImAIM ( " YABIMAIM " , i18n ( " AIM " ) , TQString ( ) , true , false ) ,
propImICQ ( " YABIMICQ " , i18n ( " ICQ " ) , TQString ( ) , true , false ) ,
propImMSN ( " YABIMMSN " , i18n ( " MSN " ) , TQString ( ) , true , false ) ,
propImGoogleTalk ( " YABIMGoogleTalk " , i18n ( " GoogleTalk " ) , TQString ( ) , true , false ) ,
propImSkype ( " YABIMSkype " , i18n ( " Skype " ) , TQString ( ) , true , false ) ,
propImIRC ( " YABIMIRC " , i18n ( " IRC " ) , TQString ( ) , true , false ) ,
propImQQ ( " YABIMQQ " , i18n ( " QQ " ) , TQString ( ) , true , false ) ,
propPrivateAddress ( " YABPrivateAddress " , i18n ( " Private Address " ) , TQString ( ) , true , false ) ,
propPrivateCity ( " YABPrivateCity " , i18n ( " Private City " ) , TQString ( ) , true , false ) ,
propPrivateState ( " YABPrivateState " , i18n ( " Private State " ) , TQString ( ) , true , false ) ,
propPrivateZIP ( " YABPrivateZIP " , i18n ( " Private ZIP " ) , TQString ( ) , true , false ) ,
propPrivateCountry ( " YABPrivateCountry " , i18n ( " Private Country " ) , TQString ( ) , true , false ) ,
propPrivatePhone ( Kopete : : Global : : Properties : : self ( ) - > privatePhone ( ) ) ,
propPrivateURL ( " YABPrivateURL " , i18n ( " Private URL " ) , TQString ( ) , true , false ) ,
propCorporation ( " YABCorporation " , i18n ( " Corporation " ) , TQString ( ) , true , false ) ,
propWorkAddress ( " YABWorkAddress " , i18n ( " Work Address " ) , TQString ( ) , true , false ) ,
propWorkCity ( " YABWorkCity " , i18n ( " Work City " ) , TQString ( ) , true , false ) ,
propWorkState ( " YABWorkState " , i18n ( " Work State " ) , TQString ( ) , true , false ) ,
propWorkZIP ( " YABWorkZIP " , i18n ( " Work ZIP " ) , TQString ( ) , true , false ) ,
propWorkCountry ( " YABWorkCountry " , i18n ( " Work Country " ) , TQString ( ) , true , false ) ,
propWorkPhone ( Kopete : : Global : : Properties : : self ( ) - > workPhone ( ) ) ,
propWorkURL ( " YABWorkURL " , i18n ( " Work URL " ) , TQString ( ) , true , false ) ,
propBirthday ( " YABBirthday " , i18n ( " Birthday " ) , TQString ( ) , true , false ) ,
propAnniversary ( " YABAnniversary " , i18n ( " Anniversary " ) , TQString ( ) , true , false ) ,
propNotes ( " YABNotes " , i18n ( " Notes " ) , TQString ( ) , true , false ) ,
propAdditional1 ( " YABAdditional1 " , i18n ( " Additional 1 " ) , TQString ( ) , true , false ) ,
propAdditional2 ( " YABAdditional2 " , i18n ( " Additional 2 " ) , TQString ( ) , true , false ) ,
propAdditional3 ( " YABAdditional3 " , i18n ( " Additional 3 " ) , TQString ( ) , true , false ) ,
propAdditional4 ( " YABAdditional4 " , i18n ( " Additional 4 " ) , TQString ( ) , 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 < TQString , TQString > & serializedData , const TQMap < TQString , TQString > & /* addressBookData */ )
{
TQString contactId = serializedData [ " contactId " ] ;
TQString accountId = serializedData [ " accountId " ] ;
YahooAccount * theAccount = static_cast < YahooAccount * > ( 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(<parent>) " < < 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"