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/irc/ircaccount.h

249 lines
6.2 KiB

/*
ircaccount.h - IRC Account
Copyright (c) 2002 by Nick Betcher <nbetcher@kde.org>
Copyright (c) 2003 by Jason Keirstead <jason@keirstead.org>
Kopete (c) 2002 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 IRCACCOUNT_H
#define IRCACCOUNT_H
#include "ircprotocol.h"
#include "kircengine.h"
#include "kopetepasswordedaccount.h"
#include <kdialogbase.h>
#include <tqstring.h>
#include <tqstringlist.h>
class ChannelListDialog;
class IRCContact;
class IRCChannelContact;
class IRCContactManager;
class IRCServerContact;
class IRCProtocol;
class IRCUserContact;
namespace Kopete
{
class AwayAction;
class Contact;
class Message;
class ChatSession;
class MetaContact;
}
class KAction;
class KActionMenu;
struct IRCHost
{
TQString host;
uint port;
TQString password;
bool ssl;
};
struct IRCNetwork
{
TQString name;
TQString description;
TQValueList<IRCHost*> hosts;
};
class IRCAccount
: public Kopete::PasswordedAccount
{
friend class IRCEditAccountWidget;
friend class IRCProtocolHandler;
Q_OBJECT
public:
static const TQString CONFIG_CODECMIB;
static const TQString CONFIG_NETWORKNAME;
static const TQString CONFIG_NICKNAME;
static const TQString CONFIG_USERNAME;
static const TQString CONFIG_REALNAME;
enum MessageType
{
ConnectReply = 1,
InfoReply = 2,
NoticeReply = 4,
ErrorReply = 8,
UnknownReply = 16,
Default = 32
};
enum MessageDestination
{
ActiveWindow = 1,
ServerWindow = 2,
AnonymousWindow = 3,
KNotify = 4,
Ignore = 5
};
IRCAccount(IRCProtocol *p, const TQString &accountid, const TQString &autoConnect = TQString::null,
const TQString& networkName = TQString::null, const TQString &nickName = TQString::null);
virtual ~IRCAccount();
void setNickName( const TQString & );
void setAutoShowServerWindow( bool show );
void setAltNick( const TQString & );
const TQString altNick() const;
void setUserName( const TQString & );
const TQString userName() const;
void setRealName( const TQString & );
const TQString realName() const;
const TQStringList connectCommands() const;
void setConnectCommands( const TQStringList & ) const;
void setDefaultPart( const TQString & );
void setNetwork( const TQString & );
void setDefaultQuit( const TQString & );
void setCodec( TQTextCodec *codec );
void setMessageDestinations( int serverNotices, int serverMessages,
int informationReplies, int errorMessages );
TQTextCodec *codec() const;
const TQString defaultPart() const;
const TQString defaultQuit() const;
const TQString networkName() const;
TQMap< TQString, TQString > customCtcp() const;
void setCustomCtcpReplies( const TQMap< TQString, TQString > &replys ) const;
const TQMap<TQString, TQString> customCtcpReplies() const;
void setCurrentCommandSource( Kopete::ChatSession *session );
Kopete::ChatSession *currentCommandSource();
IRCContact *getContact(const TQString &name, Kopete::MetaContact *metac=0);
IRCContact *getContact(KIRC::EntityPtr entity, Kopete::MetaContact *metac=0);
public slots:
virtual KActionMenu *actionMenu();
virtual void setAway( bool isAway, const TQString &awayMessage = TQString::null );
virtual bool isConnected();
/** Reimplemented from Kopete::Account */
void setOnlineStatus( const Kopete::OnlineStatus& status , const TQString &reason = TQString::null);
// Returns the KIRC engine instance
KIRC::Engine *engine() const { return m_engine; }
// Returns the IRCProtocol instance for contacts
IRCProtocol *protocol() const { return m_protocol; }
IRCContactManager *contactManager() const { return m_contactManager; }
// Returns the Kopete::Contact of the user
IRCUserContact *mySelf() const;
// Returns the Kopete::Contact of the server of the user
IRCServerContact *myServer() const;
void successfullyChangedNick(const TQString &, const TQString &);
virtual void connectWithPassword( const TQString & );
virtual void disconnect();
void quit( const TQString &quitMessage = TQString::null );
void listChannels();
void appendMessage( const TQString &message, MessageType type = Default );
protected:
virtual bool createContact( const TQString &contactId, Kopete::MetaContact *parentContact ) ;
private slots:
void engineStatusChanged(KIRC::Engine::Status newStatus);
void destroyed(IRCContact *contact);
void slotFailedServerPassword();
void slotGoAway( const TQString &reason );
void slotJoinNamedChannel( const TQString &channel );
void slotJoinChannel();
void slotShowServerWindow();
void slotNickInUse( const TQString &nick );
void slotNickInUseAlert( const TQString &nick );
void slotServerBusy();
void slotNoSuchNickname( const TQString &nick );
void slotSearchChannels();
void slotNewCtcpReply(const TQString &type, const TQString &target, const TQString &messageReceived);
void slotJoinedUnknownChannel( const TQString &channel, const TQString &nick );
void slotPerformOnConnectCommands();
private:
Kopete::ChatSession *m_manager;
TQString mNickName;
Kopete::AwayAction *mAwayAction;
bool triedAltNick;
bool autoShowServerWindow;
TQString autoConnect;
KIRC::Engine *m_engine;
IRCNetwork *m_network;
uint currentHost;
TQTextCodec *mCodec;
MessageDestination m_serverNotices;
MessageDestination m_serverMessages;
MessageDestination m_informationReplies;
MessageDestination m_errorMessages;
ChannelListDialog *m_channelList;
TQValueList<IRCContact *> m_contacts;
IRCContactManager *m_contactManager;
IRCServerContact *m_myServer;
TQMap< TQString, TQString > m_customCtcp;
Kopete::ChatSession *commandSource;
KAction *m_joinChannelAction;
KAction *m_searchChannelAction;
};
#endif
// vim: set noet ts=4 sts=4 sw=4: