You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
207 lines
9.9 KiB
207 lines
9.9 KiB
/*
|
|
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"
|