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.
tdenetwork/kopete/protocols/yahoo/yahooaccount.h

296 lines
9.5 KiB

/*
yahooaccount.h - Manages a single Yahoo account
Copyright (c) 2003 by Gav Wood <gav@kde.org>
Copyright (c) 2003 by Matt Rogers <mattrogers@sbcglobal.net>
Based on code by Olivier Goffart <ogoffart @ kde.org>
Kopete (c) 2003 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. *
* *
*************************************************************************
*/
#ifndef YAHOOIDENTITY_H
#define YAHOOIDENTITY_H
// Qt
#include <qobject.h>
#include <qmap.h>
// Kopete
#include "kopetepasswordedaccount.h"
#include "kopeteawaydialog.h"
// Local
#include "yahooprotocol.h"
#include "yahootypes.h"
class QColor;
class KAction;
class KActionMenu;
class YahooContact;
class YahooAccount;
class YahooProtocol;
class YahooWebcam;
class YahooConferenceChatSession;
class KTempFile;
struct KURL;
namespace Kopete{
class Transfer;
class ChatSession;
class FileTransferInfo;
}
class Client;
class YABEntry;
namespace KIO{
class Job;
}
class YahooAwayDialog : public KopeteAwayDialog
{
public:
YahooAwayDialog(YahooAccount *account, QWidget *parent = 0, const char *name = 0);
virtual void setAway(int awayType);
private:
YahooAccount *theAccount;
};
class YahooAccount : public Kopete::PasswordedAccount
{
Q_OBJECT
public:
enum SignalConnectionType { MakeConnections, DeleteConnections };
YahooAccount(YahooProtocol *parent,const QString& accountID, const char *name = 0L);
~YahooAccount();
/*
* Returns a contact of name @p id
*/
YahooContact *contact(const QString &id);
virtual KActionMenu* actionMenu();
/**
* Sets the yahoo away status
*/
virtual void setAway(bool, const QString &);
/**
* The session
*/
Client *yahooSession();
/**
* Returns true if contact @p id is on the server-side contact list
*/
bool isOnServer(const QString &id) { return IDs.contains(id); }
/**
* Returns true if we have the server-side contact list
*/
bool haveContactList() const { return theHaveContactList; }
void setUseServerGroups(bool newSetting);
void setImportContacts(bool newSetting);
/**
* Set the pager server
*/
void setServer( const QString &server );
/**
* Set the port of the pager server
*/
void setPort( int port );
/**
* Set Buddy Icon
*/
void setBuddyIcon( KURL url );
void verifyAccount( const QString &word );
void sendConfMessage( YahooConferenceChatSession *s, Kopete::Message &message );
void prepareConference( const QString &who );
void sendFile( YahooContact *to, const KURL &url );
public slots:
/**
* Connect to the Yahoo service
*/
virtual void connectWithPassword( const QString & );
/**
* Disconnect from the Yahoo service
*/
virtual void disconnect();
/** Reimplemented from Kopete::Account */
void setOnlineStatus( const Kopete::OnlineStatus&, const QString &reason = QString::null);
signals:
/**
* Emitted when we receive notification that the person we're talking to is typing
*/
void receivedTypingMsg(const QString &contactId, bool isTyping);
/**
* Emitted when our Buddy Icon has changed
*/
void signalBuddyIconChanged( int type );
protected:
/**
* Adds our Yahoo contact to a metacontact
*/
virtual bool createContact(const QString &contactId, Kopete::MetaContact *parentContact);
/**
* Gets the just-received message color
*/
QColor getMsgColor(const QString& msg);
/**
* Remove color codes from a message
*/
QString stripMsgColorCodes(const QString& msg);
protected slots:
void slotConnected();
void slotGoOnline();
void slotGoOffline();
void slotOpenInbox(); // Open Yahoo Mailbox in browser
void slotOpenYAB(); // Open Yahoo Addressbook in browser
void slotEditOwnYABEntry(); // Show own Yahoo Addressbook entry
void slotGoStatus(int status, const QString &awayMessage = QString::null);
void slotLoginResponse(int succ, const QString &url);
void slotDisconnected();
void slotLoginFailed();
void slotGotBuddy(const QString &userid, const QString &alias, const QString &group);
void slotAuthorizationAccepted( const QString &who );
void slotAuthorizationRejected( const QString &who, const QString &msg );
void slotgotAuthorizationRequest( const QString &, const QString &, const QString & );
void slotContactAddedNotifyDialogClosed( const QString & );
void slotGotIgnore(const QStringList &);
void slotGotIdentities(const QStringList &);
void slotStatusChanged(const QString &who, int stat, const QString &msg, int away, int idle);
void slotStealthStatusChanged(const QString &who, Yahoo::StealthStatus state);
void slotGotIm(const QString &who, const QString &msg, long tm, int stat);
void slotGotBuzz(const QString &who, long tm);
void slotGotConfInvite(const QString &who, const QString &room, const QString &msg, const QStringList &members);
void slotConfUserDecline(const QString &who, const QString &room, const QString &msg);
void slotConfUserJoin(const QString &who, const QString &room);
void slotConfUserLeave(const QString &who, const QString &room);
void slotConfMessage(const QString &who, const QString &room, const QString &msg);
void slotConfLeave( YahooConferenceChatSession *s );
void slotInviteConference( const QString &room, const QStringList &who, const QStringList &members, const QString &msg );
void slotAddInviteConference( const QString &room, const QStringList &who, const QStringList &members, const QString &msg );
void slotGotFile(const QString &who, const QString &url, long expires, const QString &msg, const QString &fname, unsigned long fesize);
void slotContactAdded(const QString &myid, const QString &who, const QString &msg);
void slotRejected(const QString &, const QString &);
void slotTypingNotify(const QString &, int );
void slotGameNotify(const QString &, int);
void slotMailNotify(const QString &, const QString &, int);
void slotSystemMessage(const QString &);
void slotRemoveHandler(int fd);
//void slotHostConnect(const QString &host, int port);
void slotGotWebcamInvite(const QString &);
void slotWebcamNotAvailable( const QString &who );
void slotGotWebcamImage(const QString&, const QPixmap&);
void slotWebcamReadyForTransmission();
void slotWebcamStopTransmission();
void slotOutgoingWebcamClosing();
void slotWebcamClosed(const QString&, int);
void slotWebcamPaused(const QString&);
void slotWebcamViewerJoined( const QString & );
void slotWebcamViewerLeft( const QString & );
void slotWebcamViewerRequest( const QString & );
void slotPictureStatusNotiy( const QString&, int);
void slotGotBuddyIcon(const QString&, KTempFile*, int);
void slotGotBuddyIconInfo(const QString&, KURL, int);
void slotGotBuddyIconChecksum(const QString&, int);
void slotGotBuddyIconRequest(const QString &);
void slotBuddyIconChanged(const QString&);
void slotGotYABEntry( YABEntry *entry );
void slotGotYABRevision( long revision, bool merged );
void slotSaveYABEntry( YABEntry &entry );
void slotModifyYABEntryError( YABEntry *entry, const QString & );
void slotReceiveFileAccepted( Kopete::Transfer *trans, const QString& fileName );
void slotReceiveFileRefused( const Kopete::FileTransferInfo& info );
void slotFileTransferComplete( unsigned int id );
void slotFileTransferError( unsigned int id, int error, const QString &desc );
void slotFileTransferBytesProcessed( unsigned int id, unsigned int bytes );
void slotFileTransferResult( KIO::Job * );
void slotError( int level );
private slots:
/**
* When a global identity key get changed.
*/
void slotGlobalIdentityChanged( const QString &key, const QVariant &value );
private:
/**
* Handle the signal and slot connections and disconnects
*/
void initConnectionSignals( enum SignalConnectionType sct );
QString prepareIncomingMessage( const QString &msg );
/**
* internal (to the plugin) controls/flags
* This should be kept in sync with server - if a buddy is removed, this should be changed accordingly.
*/
QMap<QString, QPair<QString, QString> > IDs;
/**
* Conferences list, maped by room name (id)
*/
QMap<QString, YahooConferenceChatSession *> m_conferences;
QStringList m_pendingConfInvites;
QStringList m_pendingWebcamInvites;
QStringList m_pendingFileTransfers;
QMap<unsigned int, Kopete::Transfer *> m_fileTransfers;
bool theHaveContactList; // Do we have the full server-side contact list yet?
int stateOnConnection; // The state to change to on connection
/**
* External Settings and Descriptors
*/
bool m_useServerGroups; // Use the groups on the server for import
bool m_importContacts; // Import the contacts from the server
int m_sessionId; // The Yahoo session descriptor
int m_lastDisconnectCode; // The last disconnect code.
int m_currentMailCount;
long m_YABLastMerge; // The YAB Revision on which the last merge was done
long m_YABLastRemoteRevision; // The last remote YAB Revision on which a sync was done
YahooProtocol *m_protocol; // The Protocol Object
YahooWebcam *m_webcam;
YahooAwayDialog *theAwayDialog; // Our away message dialog
KAction *m_openInboxAction; // Menu item openInbox
KAction *m_openYABAction; // Menu item openYahooAddressbook
KAction *m_editOwnYABEntry; // Menu item editOwnYABEntry
Client *m_session; // The Connection object
};
#endif