diff options
Diffstat (limited to 'kopete/protocols/msn/msnnotifysocket.h')
-rw-r--r-- | kopete/protocols/msn/msnnotifysocket.h | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/kopete/protocols/msn/msnnotifysocket.h b/kopete/protocols/msn/msnnotifysocket.h new file mode 100644 index 00000000..838aee94 --- /dev/null +++ b/kopete/protocols/msn/msnnotifysocket.h @@ -0,0 +1,217 @@ +/* + msnnotifysocket.h - Notify Socket for the MSN Protocol + + Copyright (c) 2002 by Duncan Mac-Vicar Prett <[email protected]> + Copyright (c) 2002-2003 by Martijn Klingens <[email protected]> + Copyright (c) 2002-2005 by Olivier Goffart <ogoffart at kde.org> + Copyright (c) 2005 by Michaƫl Larouche <[email protected]> + Copyright (c) 2005 by Gregg Edghill <[email protected]> + + Kopete (c) 2002-2005 by the Kopete developers <[email protected]> + + Portions taken from + KMerlin (c) 2001 by Olaf Lueg <[email protected]> + + ************************************************************************* + * * + * 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 MSNNOTIFYSOCKET_H +#define MSNNOTIFYSOCKET_H + +#include "msnsocket.h" +#include "msnprotocol.h" + + +class MSNDispatchSocket; +class MSNAccount; +class KTempFile; +class MSNSecureLoginHandler; +class MSNChallengeHandler; + +/** + * @author Olaf Lueg + * @author Olivier Goffart + */ +class MSNNotifySocket : public MSNSocket +{ + Q_OBJECT + + +public: + MSNNotifySocket( MSNAccount* account, const TQString &msnId, const TQString &password ); + ~MSNNotifySocket(); + + virtual void disconnect(); + + void setStatus( const Kopete::OnlineStatus &status ); + void addContact( const TQString &handle, int list, const TQString& publicName, const TQString& contactGuid, const TQString& groupGuid ); + void removeContact( const TQString &handle, int list, const TQString &contactGuid, const TQString &groupGuid ); + + void addGroup( const TQString& groupName ); + void removeGroup( const TQString& group ); + void renameGroup( const TQString& groupName, const TQString& groupGuid ); + + void changePublicName( const TQString& publicName , const TQString &handle=TQString() ); + void changePersonalMessage( MSNProtocol::PersonalMessageType type , const TQString& personalMessage ); + + void changePhoneNumber( const TQString &key, const TQString &data ); + + void createChatSession(); + + void sendMail(const TQString &email); + + /** + * this should return a Kopete::Account::DisconnectReason value + */ + int disconnectReason() { return m_disconnectReason; } + + TQString localIP() { return m_localIP; } + + bool setUseHttpMethod( bool useHttpMethod ); + + bool isLogged() const { return m_isLogged; } + +public slots: + void slotOpenInbox(); + void slotMSNAlertLink(unsigned int action); + void slotMSNAlertUnwanted(); + +signals: + void newContactList(); + void contactList(const TQString& handle, const TQString& publicName, const TQString &contactGuid, uint lists, const TQString& groups); + void contactStatus(const TQString&, const TQString&, const TQString& ); + void contactAdded(const TQString& handle, const TQString& list, const TQString& publicName, const TQString& contactGuid, const TQString& groupGuid); + //void contactRemoved(const TQString&, const TQString&, uint); + void contactRemoved(const TQString& handle, const TQString& list, const TQString& contactGuid, const TQString& groupGuid); + + void groupListed(const TQString&, const TQString&); + void groupAdded( const TQString&, const TQString&); + void groupRenamed( const TQString&, const TQString& ); + void groupRemoved( const TQString& ); + + void invitedToChat(const TQString&, const TQString&, const TQString&, const TQString&, const TQString& ); + void startChat( const TQString&, const TQString& ); + + void statusChanged( const Kopete::OnlineStatus &newStatus ); + + void hotmailSeted(bool) ; + + + /** + * When the dispatch server sends us the notification server to use, this + * signal is emitted. After this the socket is automatically closed. + */ + void receivedNotificationServer( const TQString &host, uint port ); + + +protected: + /** + * Handle an MSN command response line. + */ + virtual void parseCommand( const TQString &cmd, uint id, + const TQString &data ); + + /** + * Handle an MSN error condition. + * This reimplementation handles most of the other MSN error codes. + */ + virtual void handleError( uint code, uint id ); + + /** + * This reimplementation sets up the negotiating with the server and + * suppresses the change of the status to online until the handshake + * is complete. + */ + virtual void doneConnect(); + + +private slots: + /** + * We received a message from the server, which is sent as raw data, + * instead of cr/lf line-based text. + */ + void slotReadMessage( const TQByteArray &bytes ); + + /** + * Send a keepalive to the server to avoid idle connections to cause + * MSN closing the connection + */ + void slotSendKeepAlive(); + + void sslLoginFailed(); + void sslLoginIncorrect(); + void sslLoginSucceeded(TQString ticket); + + +private: + /** + * Convert the MSN status strings to a Kopete::OnlineStatus + */ + Kopete::OnlineStatus convertOnlineStatus( const TQString &statusString ); + + MSNAccount *m_account; + TQString m_password; + TQStringList m_msnAlertURLs; + + unsigned int mailCount; + + Kopete::OnlineStatus m_newstatus; + + /** + * Convert an entry of the Status enum back to a string + */ + TQString statusToString( const Kopete::OnlineStatus &status ) const; + + /** + * Process the CurrentMedia XML element. + * @param mediaXmlElement the source XML element as text. + */ + TQString processCurrentMedia( const TQString &mediaXmlElement ); + + //know the last handle used + TQString m_tmpLastHandle; + TQMap <unsigned int,TQString> m_tmpHandles; + TQString m_configFile; + + //for hotmail inbox opening + bool m_isHotmailAccount; + TQString m_MSPAuth; + TQString m_kv; + TQString m_sid; + TQString m_loginTime; + TQString m_localIP; + MSNSecureLoginHandler *m_secureLoginHandler; + + MSNChallengeHandler *m_challengeHandler; + TQTimer *m_keepaliveTimer; + + bool m_ping; + + int m_disconnectReason; + + /** + * Used to set the myself() personalMessage when the acknowledge(UUX) command is received. + * The personalMessage is built into @ref changePersonalMessage + */ + TQString m_propertyPersonalMessage; + + /** + * Used to tell when we are logged in to MSN Messeger service. + * Logged when we receive the initial profile message from Hotmail. + * + * Some commands only make sense to be done when logged. + */ + bool m_isLogged; +}; + +#endif + +// vim: set noet ts=4 sts=4 sw=4: + |