summaryrefslogtreecommitdiffstats
path: root/src/kvirc/ui/kvi_statusbarapplet.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kvirc/ui/kvi_statusbarapplet.h')
-rw-r--r--src/kvirc/ui/kvi_statusbarapplet.h195
1 files changed, 195 insertions, 0 deletions
diff --git a/src/kvirc/ui/kvi_statusbarapplet.h b/src/kvirc/ui/kvi_statusbarapplet.h
new file mode 100644
index 0000000..6302be5
--- /dev/null
+++ b/src/kvirc/ui/kvi_statusbarapplet.h
@@ -0,0 +1,195 @@
+#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 <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 "kvi_pointerlist.h"
+#include "kvi_heapobject.h"
+#include "kvi_statusbar.h"
+
+#include <qstring.h>
+#include "kvi_pointerhashtable.h"
+#include <qstatusbar.h>
+#include <qlabel.h>
+#include <qpixmap.h>
+
+class QTimer;
+class QLabel;
+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:
+ QString m_szVisibleName; // visible name of the applet
+ QString m_szInternalName; // UNIQUE name of the applet
+ QString m_szPreloadModule; // name of the module that must be preloaded for this applet
+ CreateAppletCallback m_pProc; // creation callback
+ QPixmap * m_pIcon;
+ int m_iId;
+ KviPointerList<KviStatusBarApplet> * m_pAppletList;
+public:
+ KviStatusBarAppletDescriptor(const QString &szVisibleName,
+ const QString &szInternalName,
+ CreateAppletCallback pProc,
+ const QString &szPreloadModule = QString::null,
+ const QPixmap &pixIcon = QPixmap());
+ virtual ~KviStatusBarAppletDescriptor();
+public:
+ const QString &visibleName(){ return m_szVisibleName; };
+ const QString &internalName(){ return m_szInternalName; };
+ const QString &preloadModule(){ return m_szPreloadModule; };
+ int id(){ return m_iId; };
+ QPixmap * icon(){ return m_pIcon; };
+protected:
+ KviStatusBarApplet * create(KviStatusBar * pBar);
+ void registerApplet(KviStatusBarApplet * a);
+ void unregisterApplet(KviStatusBarApplet * a);
+};
+
+
+class KVIRC_API KviStatusBarApplet : public QLabel
+{
+ 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(QPaintEvent *e);
+ virtual void fillContextPopup(KviTalPopupMenu *p){};
+ virtual void loadState(const char * prefix,KviConfig *cfg){};
+ virtual void saveState(const char * prefix,KviConfig *cfg){};
+ virtual QString tipText(const QPoint &);
+};
+
+
+
+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(QTimerEvent * 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(QTimerEvent * 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(QMouseEvent *e);
+ virtual QString tipText(const QPoint &);
+ 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(QMouseEvent *e);
+ virtual QString tipText(const QPoint &);
+protected slots:
+ void updateDisplay();
+};
+
+
+#endif //!_KVI_STATUSBARAPPLET_H_