/* msncontact.h - MSN Contact Copyright (c) 2002 by Duncan Mac-Vicar Prett Copyright (c) 2002 by Ryan Cumming Copyright (c) 2002 by Martijn Klingens Copyright (c) 2002-2005 by Olivier Goffart Copyright (c) 2005 by Michaƫl Larouche Kopete (c) 2002-2005 by the Kopete developers ************************************************************************* * * * 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 MSNCONTACT_H #define MSNCONTACT_H #include "kopetecontact.h" #include "kopeteonlinestatus.h" #include class TQListView; class TQListViewItem; class TQPixmap; class TQTimer; class MSNChatSession; class TDEAction; class TDEActionCollection; class KTempFile; namespace Kopete { class Protocol; } namespace Kopete { class OnlineStatus; } class MSNContact : public Kopete::Contact { TQ_OBJECT public: MSNContact( Kopete::Account *account, const TQString &id, Kopete::MetaContact *parent ); ~MSNContact(); /** * Indicate whether this contact is blocked */ bool isBlocked() const; void setBlocked( bool b ); /** * Indicate whether this contact is deleted * (not on the serverside list) */ bool isDeleted() const; void setDeleted( bool d ); /** * Indicate whether this contact is allowed */ bool isAllowed() const; void setAllowed( bool d ); /** * Indicate whether this contact is on the reversed list */ bool isReversed() const; void setReversed( bool d ); /** * set one phone number */ void setInfo(const TQString &type, const TQString &data); /** * The groups in which the user is located on the server. */ const TQMap serverGroups() const; /** * clear that map */ void clearServerGroups(); /** * client flags (say what version of msn messenger the contact is using) */ uint clientFlags() const; void setClientFlags( uint ); virtual bool isReachable(); virtual TQPtrList *customContextMenuActions(); /** * update the server group map */ void contactRemovedFromGroup( const TQString& groupId ); void contactAddedToGroup(const TQString& groupId, Kopete::Group *group ); virtual void serialize( TQMap &serializedData, TQMap &addressBookData ); /** * Rename contact on server */ virtual void rename( const TQString &newName ) KDE_DEPRECATED; /** * Returns the MSN Message Manager associated with this contact */ virtual Kopete::ChatSession *manager( Kopete::Contact::CanCreateFlags = Kopete::Contact::CannotCreate ); /** * Because blocked contact have a small auto-modified status */ void setOnlineStatus(const Kopete::OnlineStatus&); TQString guid(); TQString phoneHome(); TQString phoneWork(); TQString phoneMobile(); void setObject(const TQString &obj); TQString object() const { return m_obj; } public slots: virtual void slotUserInfo(); virtual void deleteContact(); virtual void sendFile( const KURL &sourceURL = KURL(), const TQString &fileName = TQString(), uint fileSize = 0L ); /** * Every time the kopete's contactlist is modified, we sync the serverlist with it */ virtual void sync( unsigned int cvhanged= 0xff); void setDisplayPicture(KTempFile *f) ; signals: void displayPictureChanged(); private slots: void slotBlockUser(); void slotShowProfile(); void slotSendMail(); void slotEmitDisplayPictureChanged(); /** * Workaround to make this checkboxe readonly */ void slotUserInfoDialogReversedToggled(); private: TQMap m_serverGroups; bool m_blocked; bool m_allowed; bool m_deleted; bool m_reversed; bool m_moving; bool m_phone_mob; uint m_clientFlags; TQString m_phoneHome; TQString m_phoneWork; TQString m_phoneMobile; TDEAction *actionBlock; TDEAction *actionShowProfile; TDEAction *actionSendMail; TDEAction *actionWebcamReceive; TDEAction *actionWebcamSend; TQString m_obj; //the MSNObject /** * keep the current status here. (it's normally already in Kopete::Contact::d->onlineStatus) * This is a workaround to prevent problems with the account offline status. */ Kopete::OnlineStatus m_currentStatus; //MSNProtocol::deserializeContact need to acess some contact insternals friend class MSNProtocol; }; #endif