summaryrefslogtreecommitdiffstats
path: root/src/modules/iograph
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/iograph')
-rw-r--r--src/modules/iograph/Makefile.am20
-rw-r--r--src/modules/iograph/libkviiograph.cpp297
-rw-r--r--src/modules/iograph/libkviiograph.h55
3 files changed, 372 insertions, 0 deletions
diff --git a/src/modules/iograph/Makefile.am b/src/modules/iograph/Makefile.am
new file mode 100644
index 00000000..a9ea3928
--- /dev/null
+++ b/src/modules/iograph/Makefile.am
@@ -0,0 +1,20 @@
+###############################################################################
+# KVirc IRC client Makefile - 10.03.2000 Szymon Stefanek <[email protected]>
+###############################################################################
+
+AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \
+$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\"
+
+pluglib_LTLIBRARIES = libkviiograph.la
+
+libkviiograph_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS)
+
+libkviiograph_la_SOURCES = libkviiograph.cpp
+libkviiograph_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la
+
+noinst_HEADERS= libkviiograph.h
+
+%.moc: %.h
+ $(SS_QT_MOC) $< -o $@
+
+libkviiograph.cpp: libkviiograph.moc
diff --git a/src/modules/iograph/libkviiograph.cpp b/src/modules/iograph/libkviiograph.cpp
new file mode 100644
index 00000000..ab9aa4f1
--- /dev/null
+++ b/src/modules/iograph/libkviiograph.cpp
@@ -0,0 +1,297 @@
+//
+// File : kvi_iograph.cpp
+// Creation date : Tue Oct 31 2000 00:14:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 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 "libkviiograph.h"
+#include "kvi_module.h"
+
+#if 0
+
+
+#include "kvi_console.h"
+#include "kvi_options.h"
+#include "kvi_ircsocket.h"
+#include "kvi_frame.h"
+#include "kvi_locale.h"
+
+#include "kvi_pointerlist.h"
+#include <qtooltip.h>
+#include <qpointarray.h>
+#include <qpainter.h>
+
+
+extern QPixmap * g_pIccMemBuffer;
+
+
+static KviPointerList<KviIOGraphDisplay> * g_pIOGraphWidgetList;
+
+KviIOGraphDisplay::KviIOGraphDisplay(KviIrcContextController * pController,bool sentGraph,bool recvGraph)
+: KviIrcContextGraphicalApplet(pController,"iograph_display")
+{
+ g_pIOGraphWidgetList->append(this);
+ for(int i=0;i < KVI_IOGRAPH_NUMBER_POINTS;i++)
+ {
+ m_sendRates[i] = 0;
+ m_recvRates[i] = 0;
+ }
+ m_iNextPoint = 1;
+ m_uLastSentBytes = pController->console()->socket()->sentBytes();
+ m_uLastRecvBytes = pController->console()->socket()->readBytes();
+ m_bShowSentGraph = sentGraph;
+ m_bShowRecvGraph = recvGraph;
+
+ KviStr tip;
+ if(sentGraph)tip = __tr("Outgoing traffic");
+ if(recvGraph)
+ {
+ if(tip.hasData())tip.append("\n");
+ tip.append(__tr("Incoming traffic"));
+ }
+
+ QToolTip::add(this,tip.ptr());
+
+ startTimer(1000);
+}
+
+KviIOGraphDisplay::~KviIOGraphDisplay()
+{
+ g_pIOGraphWidgetList->removeRef(this);
+}
+
+void KviIOGraphDisplay::timerEvent(QTimerEvent *e)
+{
+ unsigned int sB = console()->socket()->sentBytes();
+ unsigned int rB = console()->socket()->readBytes();
+ int sDiff = (sB - m_uLastSentBytes) / 8;
+ int rDiff = (rB - m_uLastRecvBytes) / 32;
+// debug("s:%d,r:%d",sDiff,rDiff);
+ if(sDiff < 0)sDiff = 0;
+ else if(sDiff > 30)sDiff = 30;
+ if(rDiff < 0)rDiff = 0;
+ else if(rDiff > 30)rDiff = 30;
+ m_uLastSentBytes = sB;
+ m_uLastRecvBytes = rB;
+ m_sendRates[m_iNextPoint] = sDiff;
+ m_recvRates[m_iNextPoint] = rDiff;
+ m_iNextPoint++;
+ if(m_iNextPoint >= KVI_IOGRAPH_NUMBER_POINTS)m_iNextPoint = 0;
+ update();
+}
+
+static QCOORD horizSegments[6 * 4]=
+{
+ 5 , 3 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 3 ,
+ 5 , 8 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 8 ,
+ 5 , 13 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 13 ,
+ 5 , 18 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 18 ,
+ 5 , 23 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 23 ,
+ 5 , 28 , KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4 , 28
+};
+
+static QCOORD vertSegments[29 * 4]=
+{
+ 9 , 4 , 9 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 14 , 4 , 14 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 19 , 4 , 19 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 24 , 4 , 24 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 29 , 4 , 29 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 34 , 4 , 34 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 39 , 4 , 39 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 44 , 4 , 44 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 49 , 4 , 49 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 54 , 4 , 54 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 59 , 4 , 59 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 64 , 4 , 64 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 69 , 4 , 69 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 74 , 4 , 74 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 79 , 4 , 79 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 84 , 4 , 84 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 89 , 4 , 89 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 94 , 4 , 94 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 99 , 4 , 99 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 104 , 4 , 104 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 109 , 4 , 109 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 114 , 4 , 114 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 119 , 4 , 119 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 124 , 4 , 124 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 129 , 4 , 129 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 134 , 4 , 134 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 139 , 4 , 139 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 144 , 4 , 144 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5 ,
+ 149 , 4 , 149 , KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5
+};
+
+void KviIOGraphDisplay::drawContents(QPainter * p)
+{
+ static QPointArray hp(6 * 4,horizSegments);
+ static QPointArray vp(29 * 4,vertSegments);
+
+ p->setPen(KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundLowContrast));
+ p->drawLineSegments(hp,0,6);
+ p->drawLineSegments(vp,0,29);
+ p->setPen(KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundMidContrast));
+
+ p->drawLine(4,33,KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH - 4,33);
+ p->drawLine(4,3,4,KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT - 5);
+
+ p->setPen(isActiveContext() ?
+ KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundHighContrastActive1) :
+ KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundHighContrastInactive1));
+
+ // the first point to draw is "m_iNextPoint"
+ // it will be drawn at X = 4
+
+ int leftPart = KVI_IOGRAPH_NUMBER_POINTS - m_iNextPoint;
+
+ int i;
+
+ if(m_bShowSentGraph)
+ {
+ for(i = 1;i < leftPart;i++)
+ {
+ p->drawLine(3 + i,33 - m_sendRates[m_iNextPoint + i - 1],4 + i,33 - m_sendRates[m_iNextPoint + i]);
+ }
+
+ p->drawLine(3 + i,33 - m_sendRates[m_iNextPoint + i - 1],4 + i,33 - m_sendRates[0]);
+
+ for(i = 1;i < m_iNextPoint;i++)
+ {
+ p->drawLine(leftPart + 3 + i,33 - m_sendRates[i - 1],leftPart + 4 + i,33 - m_sendRates[i]);
+ }
+ }
+
+ if(m_bShowRecvGraph)
+ {
+ p->setPen(isActiveContext() ?
+ KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundHighContrastActive2) :
+ KVI_OPTION_COLOR(KviOption_colorIrcToolBarAppletForegroundHighContrastInactive2));
+
+ for(i = 1;i < leftPart;i++)
+ {
+ p->drawLine(3 + i,33 - m_recvRates[m_iNextPoint + i - 1],4 + i,33 - m_recvRates[m_iNextPoint + i]);
+ }
+
+ p->drawLine(3 + i,33 - m_recvRates[m_iNextPoint + i - 1],4 + i,33 - m_recvRates[0]);
+
+ for(i = 1;i < m_iNextPoint;i++)
+ {
+ p->drawLine(leftPart + 3 + i,33 - m_recvRates[i - 1],leftPart + 4 + i,33 - m_recvRates[i]);
+ }
+ }
+}
+
+QSize KviIOGraphDisplay::sizeHint() const
+{
+ return QSize(KVI_IRCTOOLBARAPPLET_MAXIMUM_WIDTH,KVI_IRCTOOLBARAPPLET_MAXIMUM_HEIGHT);
+}
+
+
+/*
+ @doc: iograph.add
+ @type:
+ command
+ @title:
+ iograph.add
+ @short:
+ Adds an IOGraph applet
+ @syntax:
+ iograph.add [-i] [-o]
+ @description:
+ Adds an IOGraph applet to the current irc-context toolbar. It will
+ monitor the Incoming and Outgoing socket traffic.[br]
+ Since both graphs often are somewhat unreadable,
+ the -i switch will cause the IOGraph applet to show only
+ the incoming traffic, and the -o switch will cause it to show
+ only the outgoing traffic.[br]
+ Well...I agree...this is an amazing misuse of resources :)
+*/
+
+
+
+static bool iograph_module_cmd_add(KviModule *m,KviCommand *c)
+{
+ ENTER_STACK_FRAME(c,"iograph_module_cmd_add");
+
+ KviStr dummy;
+ if(!g_pUserParser->parseCmdFinalPart(c,dummy))return false;
+
+ if(!c->window()->console())return c->noIrcContext();
+
+ bool bSentGraph = !(c->hasSwitch('i'));
+ bool bRecvGraph = !(c->hasSwitch('o'));
+
+ if(!(bSentGraph || bRecvGraph))bRecvGraph = true;
+
+ KviIOGraphDisplay * dpy = new KviIOGraphDisplay(c->window()->console()->icController(),bSentGraph,bRecvGraph);
+ c->window()->console()->icController()->addApplet(dpy);
+ dpy->show();
+
+ return c->leaveStackFrame();
+}
+#endif
+
+static bool iograph_module_init(KviModule *m)
+{
+#if 0
+ g_pIOGraphWidgetList = new KviPointerList<KviIOGraphDisplay>;
+ g_pIOGraphWidgetList->setAutoDelete(false);
+ m->registerCommand("add",iograph_module_cmd_add);
+#endif
+ return true;
+}
+
+static bool iograph_module_cleanup(KviModule *m)
+{
+#if 0
+ while(g_pIOGraphWidgetList->first())
+ {
+ KviIOGraphDisplay * dpy = g_pIOGraphWidgetList->first();
+ dpy->controller()->removeApplet(dpy); // deleted path
+ }
+ delete g_pIOGraphWidgetList;
+#endif
+ return true;
+}
+
+static bool iograph_module_can_unload(KviModule *m)
+{
+#if 0
+ return g_pIOGraphWidgetList->isEmpty();
+#else
+ return true;
+#endif
+}
+
+KVIRC_MODULE(
+ "IOGraph", // module name
+ "1.0.0", // module version
+ "Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
+ "IRC socket traffic monitor",
+ iograph_module_init,
+ iograph_module_can_unload,
+ 0,
+ iograph_module_cleanup
+)
+
+#if 0
+#include "libkviiograph.moc"
+#endif
diff --git a/src/modules/iograph/libkviiograph.h b/src/modules/iograph/libkviiograph.h
new file mode 100644
index 00000000..9b134615
--- /dev/null
+++ b/src/modules/iograph/libkviiograph.h
@@ -0,0 +1,55 @@
+#ifndef _LIBKVIIOGRAPH_H_
+#define _LIBKVIIOGRAPH_H_
+
+//
+// File : kvi_iograph.cpp
+// Creation date : Tue Oct 31 2000 00:14:12 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 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.
+//
+
+#if 0
+
+#include "kvi_irctoolbar.h"
+
+
+#define KVI_IOGRAPH_NUMBER_POINTS 148
+
+class KviIOGraphDisplay : public KviIrcContextGraphicalApplet
+{
+ Q_OBJECT
+public:
+ KviIOGraphDisplay(KviIrcContextController * pController,bool sentGraph,bool recvGraph);
+ ~KviIOGraphDisplay();
+protected:
+ unsigned int m_sendRates[KVI_IOGRAPH_NUMBER_POINTS];
+ unsigned int m_recvRates[KVI_IOGRAPH_NUMBER_POINTS];
+ int m_iNextPoint;
+ unsigned int m_uLastSentBytes;
+ unsigned int m_uLastRecvBytes;
+ bool m_bShowSentGraph;
+ bool m_bShowRecvGraph;
+protected:
+ virtual void drawContents(QPainter *p);
+ virtual QSize sizeHint() const;
+ virtual void timerEvent(QTimerEvent *e);
+};
+
+#endif
+
+#endif