summaryrefslogtreecommitdiffstats
path: root/kopete/protocols/yahoo/yahooaccount.h
diff options
context:
space:
mode:
Diffstat (limited to 'kopete/protocols/yahoo/yahooaccount.h')
-rw-r--r--kopete/protocols/yahoo/yahooaccount.h295
1 files changed, 295 insertions, 0 deletions
diff --git a/kopete/protocols/yahoo/yahooaccount.h b/kopete/protocols/yahoo/yahooaccount.h
new file mode 100644
index 00000000..cc01ff91
--- /dev/null
+++ b/kopete/protocols/yahoo/yahooaccount.h
@@ -0,0 +1,295 @@
+/*
+ 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
+