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.
kvirc/src/kvirc/kernel/kvi_notifylist.h

166 lines
5.2 KiB

#ifndef _KVI_NOTIFYLIST_H_
#define _KVI_NOTIFYLIST_H_
//=============================================================================
//
// File : kvi_notifylist.h
// Creation date : Fri Oct 27 2000 23:39:09 CEST by Szymon Stefanek
//
// This file is part of the KVirc irc client distribution
// Copyright (C) 2000-2004 Szymon Stefanek (pragma at kvirc dot net)
//
// 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 opinion) any later version.
//
// This program is distributed in the HOPE that it will be USEFUL,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, write to the Free Software Foundation,
// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
//=============================================================================
#include "kvi_settings.h"
#include <tqobject.h>
#include "kvi_pointerlist.h"
#include "kvi_pointerhashtable.h"
#include <tqtimer.h>
#include "kvi_qstring.h"
class KviConsole;
class KviIrcMessage;
class KviIrcMask;
class KviIrcConnection;
class KVIRC_API KviNotifyListManager : public TQObject
{
friend class KviConsole;
friend class KviConnectionInfo;
friend class KviServerParser;
friend class KviIrcConnection;
Q_OBJECT
protected:
KviNotifyListManager(KviIrcConnection * pConnection);
~KviNotifyListManager();
protected:
KviConsole * m_pConsole;
KviIrcConnection * m_pConnection;
protected:
virtual void start();
virtual void stop();
virtual bool handleUserhost(KviIrcMessage * msg);
virtual bool handleIsOn(KviIrcMessage * msg);
virtual bool handleWatchReply(KviIrcMessage *msg);
void notifyOnLine(const TQString &nick,const TQString &user = TQString(),const TQString &host = TQString(),const TQString &szReason = TQString(),bool bJoin=true);
void notifyOffLine(const TQString &nick,const TQString &user = TQString(),const TQString &host = TQString(),const TQString &szReason = TQString());
public:
KviConsole * console(){ return m_pConsole; };
};
class KVIRC_API KviIsOnNotifyListManager : public KviNotifyListManager
{
friend class KviConsole;
friend class KviServerParser;
friend class KviIrcConnection;
Q_OBJECT
protected:
KviIsOnNotifyListManager(KviIrcConnection * pConnection);
~KviIsOnNotifyListManager();
private:
KviPointerHashTable<TQString,TQString> * m_pRegUserDict; // dict notifystring->reguser name
KviPointerList<TQString> * m_pNotifyList; // list of notifystring (total)
KviPointerList<TQString> * m_pIsOnList; // list of notifystring (one session)
TQString m_szIsOnString; // m_pIsOnList in form of a string
KviPointerList<TQString> * m_pOnlineList; //
KviPointerList<TQString> * m_pUserhostList;
TQString m_szUserhostString;
bool m_bExpectingIsOn;
bool m_bExpectingUserhost;
TQTimer * m_pDelayedIsOnTimer;
TQTimer * m_pDelayedNotifyTimer;
TQTimer * m_pDelayedUserhostTimer;
bool m_bRunning;
protected:
virtual void start();
virtual void stop();
virtual bool handleUserhost(KviIrcMessage *msg);
virtual bool handleIsOn(KviIrcMessage *msg);
private:
void delayedNotifySession();
void delayedIsOnSession();
void delayedUserhostSession();
private slots:
void newNotifySession();
void newIsOnSession();
void newUserhostSession();
void buildRegUserDict();
void buildIsOnList();
void buildUserhostList();
void buildNotifyList();
void sendIsOn();
void sendUserhost();
bool doMatchUser(const TQString &notifyString,const KviIrcMask & mask);
};
class KVIRC_API KviStupidNotifyListManager : public KviNotifyListManager
{
friend class KviConsole;
friend class KviServerParser;
friend class KviIrcConnection;
Q_OBJECT
protected:
KviStupidNotifyListManager(KviIrcConnection * pConnection);
~KviStupidNotifyListManager();
protected:
KviPointerList<TQString> * m_pNickList;
TQString m_szLastIsOnMsg;
int m_iNextNickToCheck;
int m_iRestartTimer;
protected:
virtual void start();
virtual void stop();
virtual bool handleIsOn(KviIrcMessage *msg);
protected:
virtual void timerEvent(TQTimerEvent *e);
private:
void buildNickList();
void sendIsOn();
};
class KVIRC_API KviWatchNotifyListManager : public KviNotifyListManager
{
friend class KviConsole;
friend class KviServerParser;
friend class KviIrcConnection;
Q_OBJECT
public:
KviWatchNotifyListManager(KviIrcConnection * pConnection);
~KviWatchNotifyListManager();
protected:
KviPointerHashTable<TQString,TQString> * m_pRegUserDict; // dict notifystring->reguser name
protected:
void buildRegUserDict();
virtual void start();
virtual void stop();
virtual bool handleWatchReply(KviIrcMessage *msg);
bool doMatchUser(KviIrcMessage *msg,const TQString &notifyString,const KviIrcMask & mask);
};
#endif //_KVI_NOTIFYLIST_H_