File indexing completed on 2024-04-28 04:02:32
0001 /*************************************************************************** 0002 dlgstatistics.cpp - Statistics dialog 0003 ------------------- 0004 begin : Pi mar 14 2003 0005 copyright : (C) 2003 by Tomas Mecir 0006 email : kmuddy@kmuddy.com 0007 ***************************************************************************/ 0008 0009 /*************************************************************************** 0010 * * 0011 * This program is free software; you can redistribute it and/or modify * 0012 * it under the terms of the GNU General Public License as published by * 0013 * the Free Software Foundation; either version 2 of the License, or * 0014 * (at your option) any later version. * 0015 * * 0016 ***************************************************************************/ 0017 0018 #include "dlgstatistics.h" 0019 0020 #include "cactionmanager.h" 0021 #include "cconnection.h" 0022 #include "csessionmanager.h" 0023 #include "cstatus.h" 0024 #include "ctelnet.h" 0025 #include "ctextprocessor.h" 0026 #ifdef HAVE_MXP 0027 #include "cmxpmanager.h" 0028 #endif 0029 0030 #include <QLabel> 0031 #include <QTreeWidget> 0032 #include <QTimer> 0033 #include <QVBoxLayout> 0034 #include <KLocalizedString> 0035 0036 dlgStatistics::dlgStatistics (QWidget *parent) 0037 : QDockWidget (parent), cActionBase ("dialog-statistics", 0) 0038 { 0039 //initial size 0040 //setSize (QSize (250, 300)); 0041 setWindowTitle (i18n ("Connection statistics")); 0042 0043 //main widget 0044 QWidget *page = new QWidget (this); 0045 QVBoxLayout *layout = new QVBoxLayout (page); 0046 setWidget (page); 0047 0048 setFocusPolicy (Qt::StrongFocus); 0049 0050 QLabel *label = new QLabel (i18n ("&Statistics, updated every second:"), page); 0051 view = new QTreeWidget (page); 0052 label->setBuddy (view); 0053 view->setHeaderLabels (QStringList() << i18n ("Counter") << i18n ("Value")); 0054 view->setUniformRowHeights (true); 0055 view->setRootIsDecorated (false); 0056 view->setSelectionMode (QAbstractItemView::NoSelection); 0057 0058 layout->setSpacing (5); 0059 layout->addWidget (label); 0060 layout->addWidget (view); 0061 0062 //establish auto-updating of data 0063 updateTimer = new QTimer; 0064 connect (updateTimer, &QTimer::timeout, this, &dlgStatistics::update); 0065 updateTimer->start (1000); 0066 0067 //no focus - we don't want this dialog to get focus 0068 setFocusPolicy (Qt::NoFocus); 0069 view->setFocusPolicy (Qt::NoFocus); 0070 0071 addEventHandler ("session-activated", 50, PT_INT); 0072 } 0073 0074 dlgStatistics::~dlgStatistics () 0075 { 0076 removeEventHandler ("session-activated"); 0077 0078 updateTimer->stop (); 0079 delete updateTimer; 0080 } 0081 0082 void dlgStatistics::eventIntHandler (QString event, int, int, int) 0083 { 0084 if (event == "session-activated") 0085 update (); 0086 } 0087 0088 0089 void dlgStatistics::update () 0090 { 0091 view->clear (); 0092 0093 //fetch required information 0094 int sess = cSessionManager::self()->activeSession(); 0095 if (!sess) return; 0096 cActionManager *am = cActionManager::self(); 0097 cTelnet *telnet = dynamic_cast<cTelnet *>(am->object ("telnet", sess)); 0098 cConnection *connection = dynamic_cast<cConnection *>(am->object ("connection", sess)); 0099 cStatus *status = dynamic_cast<cStatus *>(am->object ("status", sess)); 0100 cTextProcessor *textproc = dynamic_cast<cTextProcessor *>(am->object ("textproc", sess)); 0101 int compr = telnet->compressedBytes(); 0102 int decompr = telnet->uncompressedBytes(); 0103 QString connTime = status->connTimeString(); 0104 int sentbytes = telnet->sentBytes(); 0105 int sentcmds = connection->sentCommands(); 0106 int recvlines = textproc->linesReceived(); 0107 bool usingmccp = telnet->usingMCCP(); 0108 int mccpver = telnet->MCCPVer(); 0109 bool usingmsp = telnet->usingMSP(); 0110 #ifdef HAVE_MXP 0111 cMXPManager *mxp = dynamic_cast<cMXPManager *>(am->object ("mxpmanager", sess)); 0112 bool usingmxp = mxp->isMXPActive(); 0113 #endif 0114 0115 //fill in those information 0116 0117 QList<QTreeWidgetItem *> items; 0118 items << new QTreeWidgetItem (view, QStringList() << i18n ("Using MCCP") << 0119 (usingmccp ? i18n ("Yes") : i18n ("No"))); 0120 items << new QTreeWidgetItem (view, QStringList() << i18n ("MCCP version") << 0121 (usingmccp ? QString::number (mccpver) : i18n ("N/A"))); 0122 items << new QTreeWidgetItem (view, QStringList() << i18n ("Using MSP") << 0123 (usingmsp ? i18n ("Yes") : i18n ("No"))); 0124 #ifdef HAVE_MXP 0125 items << new QTreeWidgetItem (view, QStringList() << i18n ("Using MXP") << 0126 (usingmxp ? i18n ("Yes") : i18n ("No"))); 0127 #endif 0128 items << new QTreeWidgetItem (view, QStringList() << i18n ("Sent bytes") << 0129 QString::number (sentbytes)); 0130 items << new QTreeWidgetItem (view, QStringList() << i18n ("Sent commands") << 0131 QString::number (sentcmds)); 0132 items << new QTreeWidgetItem (view, QStringList() << i18n ("Received bytes") << 0133 QString::number (compr)); 0134 items << new QTreeWidgetItem (view, QStringList() << i18n ("... after decompression") << 0135 QString::number (decompr)); 0136 items << new QTreeWidgetItem (view, QStringList() << i18n ("Received lines") << 0137 QString::number (recvlines)); 0138 items << new QTreeWidgetItem (view, QStringList() << i18n ("Connection time") << 0139 connTime); 0140 0141 view->addTopLevelItems (items); 0142 } 0143 0144 #include "moc_dlgstatistics.cpp"