#ifndef _KVI_STATUSBARAPPLET_H_ #define _KVI_STATUSBARAPPLET_H_ //============================================================================= // // File : kvi_statusbarapplet.h // Created on Tue 07 Sep 2004 03:56:46 by Szymon Stefanek // // This file is part of the KVIrc IRC client distribution // Copyright (C) 2004 Szymon Stefanek // // 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 "kvi_pointerlist.h" #include "kvi_heapobject.h" #include "kvi_statusbar.h" #include #include "kvi_pointerhashtable.h" #include #include #include class TQTimer; class TQLabel; class KviTalPopupMenu; class KviConfig; class KviFrame; class KviIrcContext; class KviIrcConnection; class KviStatusBarApplet; class KviStatusBarAppletDescriptor; typedef KviStatusBarApplet * (*CreateAppletCallback)(KviStatusBar *,KviStatusBarAppletDescriptor *); class KVIRC_API KviStatusBarAppletDescriptor : public KviHeapObject { friend class KviStatusBar; friend class KviStatusBarApplet; protected: TQString m_szVisibleName; // visible name of the applet TQString m_szInternalName; // UNIQUE name of the applet TQString m_szPreloadModule; // name of the module that must be preloaded for this applet CreateAppletCallback m_pProc; // creation callback TQPixmap * m_pIcon; int m_iId; KviPointerList * m_pAppletList; public: KviStatusBarAppletDescriptor(const TQString &szVisibleName, const TQString &szInternalName, CreateAppletCallback pProc, const TQString &szPreloadModule = TQString(), const TQPixmap &pixIcon = TQPixmap()); virtual ~KviStatusBarAppletDescriptor(); public: const TQString &visibleName(){ return m_szVisibleName; }; const TQString &internalName(){ return m_szInternalName; }; const TQString &preloadModule(){ return m_szPreloadModule; }; int id(){ return m_iId; }; TQPixmap * icon(){ return m_pIcon; }; protected: KviStatusBarApplet * create(KviStatusBar * pBar); void registerApplet(KviStatusBarApplet * a); void unregisterApplet(KviStatusBarApplet * a); }; class KVIRC_API KviStatusBarApplet : public TQLabel { friend class KviStatusBar; Q_OBJECT protected: KviStatusBar * m_pStatusBar; KviStatusBarAppletDescriptor * m_pDescriptor; bool m_bSelected; public: KviStatusBarApplet(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor); virtual ~KviStatusBarApplet(); public: KviStatusBar * statusBar(){ return m_pStatusBar; }; KviFrame * frame(){ return m_pStatusBar->frame(); }; KviStatusBarAppletDescriptor * descriptor(){ return m_pDescriptor; }; void select(bool bSelect = true); bool isSelected(){ return m_bSelected; }; protected: virtual void paintEvent(TQPaintEvent *e); virtual void fillContextPopup(KviTalPopupMenu *p){}; virtual void loadState(const char * prefix,KviConfig *cfg){}; virtual void saveState(const char * prefix,KviConfig *cfg){}; virtual TQString tipText(const TQPoint &); }; class KviStatusBarClock : public KviStatusBarApplet { Q_OBJECT public: KviStatusBarClock(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor); virtual ~KviStatusBarClock(); protected: bool m_bUtc; public: static void selfRegister(KviStatusBar * pBar); protected: virtual void fillContextPopup(KviTalPopupMenu * p); virtual void timerEvent(TQTimerEvent * e); virtual void loadState(const char * prefix,KviConfig *cfg); virtual void saveState(const char * prefix,KviConfig *cfg); protected slots: void toggleUtc(); }; class KviStatusBarConnectionTimer : public KviStatusBarApplet { Q_OBJECT public: KviStatusBarConnectionTimer(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor); virtual ~KviStatusBarConnectionTimer(); protected: bool m_bTotal; protected: virtual void timerEvent(TQTimerEvent * e); virtual void fillContextPopup(KviTalPopupMenu *p); virtual void loadState(const char * prefix,KviConfig *cfg); virtual void saveState(const char * prefix,KviConfig *cfg); public: static void selfRegister(KviStatusBar * pBar); protected slots: void toggleTotal(); }; class KviStatusBarSeparator : public KviStatusBarApplet { Q_OBJECT public: KviStatusBarSeparator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor); virtual ~KviStatusBarSeparator(); public: static void selfRegister(KviStatusBar * pBar); }; class KviStatusBarAwayIndicator : public KviStatusBarApplet { Q_OBJECT public: KviStatusBarAwayIndicator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor); virtual ~KviStatusBarAwayIndicator(); public: static void selfRegister(KviStatusBar * pBar); protected: bool m_bAwayOnAllContexts; protected: virtual void mouseDoubleClickEvent(TQMouseEvent *e); virtual TQString tipText(const TQPoint &); virtual void fillContextPopup(KviTalPopupMenu *p); virtual void loadState(const char * prefix,KviConfig *cfg); virtual void saveState(const char * prefix,KviConfig *cfg); protected slots: void updateDisplay(); void toggleContext(); }; class KviStatusBarLagIndicator : public KviStatusBarApplet { Q_OBJECT public: KviStatusBarLagIndicator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor); virtual ~KviStatusBarLagIndicator(); public: static void selfRegister(KviStatusBar * pBar); protected: virtual void mouseDoubleClickEvent(TQMouseEvent *e); virtual TQString tipText(const TQPoint &); protected slots: void updateDisplay(); }; #endif //!_KVI_STATUSBARAPPLET_H_