/* ircusercontact.h - IRC User Contact Copyright (c) 2002 by Nick Betcher Copyright (c) 2003 by Jason Keirstead ************************************************************************* * * * 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 IRCUSERCONTACT_H #define IRCUSERCONTACT_H #include "kopetechatsessionmanager.h" #include "irccontact.h" #include "kopeteonlinestatus.h" class TQTimer; class TDEActionCollection; class TDEAction; class TDEActionMenu; class KCodecAction; class IRCContactManager; class IRCChannelContact; struct IRCUserInfo { TQString userName; TQString hostName; TQString realName; TQString serverName; TQString serverInfo; TQString flags; TQStringList channels; unsigned long idle; bool isOperator; bool isIdentified; bool away; bool online; uint hops; TQDateTime lastOnline; TQTime lastUpdate; }; /** * @author Jason Keirstead *customContextMenuActions( Kopete::ChatSession *manager ); virtual const TQString caption() const; void setAway(bool isAway); TQString formattedName() const; //Methods handled by the signal mapper void incomingUserIsAway(const TQString &message ); void userOnline(); void newAction( const TQString &from, const TQString &action ); void newWhoIsUser(const TQString &username, const TQString &hostname, const TQString &realname); void newWhoIsServer(const TQString &server, const TQString &serverInfo); void newWhoIsOperator(); void newWhoIsIdentified(); void newWhoIsIdle(unsigned long seconds); void newWhoIsChannels(const TQString &channel); void whoIsComplete(); void whoWasComplete(); void newWhoReply( const TQString &channel, const TQString &user, const TQString &host, const TQString &server, bool away, const TQString &flags, uint hops, const TQString &realName ); public slots: /** \brief Updates online status for channels based on current internal status. */ virtual void updateStatus(); virtual void sendFile(const KURL &sourceURL, const TQString&, unsigned int); protected slots: virtual void privateMessage(IRCContact *from, IRCContact *to, const TQString &message); private slots: void slotOp(); void slotDeop(); void slotVoice(); void slotDevoice(); void slotCtcpPing(); void slotCtcpVersion(); void slotBanHost(); void slotBanUserHost(); void slotBanDomain(); void slotBanUserDomain(); void slotKick(); void slotUserOffline(); void slotBanHostOnce(); void slotBanUserHostOnce(); void slotBanDomainOnce(); void slotBanUserDomainOnce(); virtual void slotUserInfo(); //This can't be handled by the contact manager since void slotIncomingModeChange(const TQString &nick, const TQString &channel, const TQString &mode); private: enum bitAdjustment { RemoveBits, AddBits }; void adjustInternalOnlineStatusBits(IRCChannelContact *channel, unsigned statusAdjustment, bitAdjustment adj); void contactMode(const TQString &mode); void updateInfo(); TDEActionMenu *actionModeMenu; TDEActionMenu *actionCtcpMenu; TDEAction *actionKick; TDEActionMenu *actionBanMenu; KCodecAction *codecAction; Kopete::ChatSession *mActiveManager; TQTimer *mOnlineTimer; IRCUserInfo mInfo; }; #endif // vim: set noet ts=4 sts=4 tw=4: