[Turqstat-commits] [SCM] Turquoise SuperStat - http://www.softwolves.pp.se/sw/software/turquoise branch, xturqstat-win32, updated. release-3.0-2-24-g32a20f2

Peter Karlsson peter at softwolves.pp.se
Mon Jun 2 19:17:54 UTC 2008


The following commit has been merged in the xturqstat-win32 branch:
commit 1b4cef65dae5ff99c11f4b40a05c92861d86012d
Author: Peter Karlsson <peter at softwolves.pp.se>
Date:   Mon Jun 2 20:13:40 2008 +0200

    Changed the top-list view to use QTableWidget.
    
    This seems to be better suited for the type of data I want to display.

diff --git a/ChangeLog b/ChangeLog
index fd35204..dc5e926 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-06-02 - Peter Karlsson <peter at softwolves.pp.se>
+  qtlist.cpp
+  qtlist.h
+    Porting to Qt 4.
+
 2008-04-18 - Peter Karlsson <peter at softwolves.pp.se>
   visualc/
     Split project files so that common files reside in a common project.
diff --git a/qtlist.cpp b/qtlist.cpp
index 3693a1d..20e5a29 100644
--- a/qtlist.cpp
+++ b/qtlist.cpp
@@ -15,7 +15,7 @@
 
 #include <config.h>
 
-#include <qtreewidget.h>
+#include <qtablewidget.h>
 #include <qpushbutton.h>
 #include <qstring.h>
 #include <qlayout.h>
@@ -35,8 +35,8 @@ TopListWindow::TopListWindow(QWidget *parent, toplist_e list)
 	QGridLayout *layout_p = new QGridLayout(this);
 
     // Create list view
-	m_treeview_p = new QTreeWidget(this);
-	layout_p->addWidget(m_treeview_p, 0, 0, 0, 2);
+	m_tableview_p = new QTableWidget(this);
+	layout_p->addWidget(m_tableview_p, 0, 0, 0, 2);
 
     // Add buttons
     QPushButton *ok = new QPushButton(tr("Dismiss"), this);
@@ -54,7 +54,7 @@ TopListWindow::~TopListWindow()
 
 void TopListWindow::fillOut(StatEngine *engine)
 {
-	if (!engine || !m_treeview_p) return;
+	if (!engine || !m_tableview_p) return;
 
     setupHeaders();
 
@@ -102,70 +102,71 @@ void TopListWindow::fillOut(StatEngine *engine)
     }
 }
 
+void TopListWindow::SetItem(int row, int column, const QString &label)
+{
+	m_tableview_p->setItem(row, column, new QTableWidgetItem(label));
+}
+
 void TopListWindow::setupHeaders()
 {
-	int column = 0;
-	QTreeWidgetItem *header_p = new QTreeWidgetItem(m_treeview_p);
-	if (!header_p)
-		return;
+	QStringList headers;
 
 	// Create headers, counting them as we go along
     if (Quoters == toplist || Senders == toplist || OrigContent == toplist ||
         Receivers == toplist)
-		header_p->setText(column ++, tr("Name"));
+		headers.append(tr("Name"));
 
     if (OrigContent == toplist)
-		header_p->setText(column ++, tr("Original content"));
+		headers.append(tr("Original content"));
 
     if (FidoNets == toplist)
-		header_p->setText(column ++, tr("Zone:Net"));
+		headers.append(tr("Zone:Net"));
 
     if (Domains == toplist)
-		header_p->setText(column ++, tr("Domain"));
+		headers.append(tr("Domain"));
 
     if (Subjects == toplist)
-		header_p->setText(column ++, tr("Subject"));
+		headers.append(tr("Subject"));
 
     if (Software == toplist)
-		header_p->setText(column ++, tr("Program"));
+		headers.append(tr("Program"));
 
     if (Quoters == toplist || Senders == toplist || OrigContent == toplist ||
         FidoNets == toplist || Domains == toplist || Subjects == toplist ||
         Software == toplist)
-		header_p->setText(column ++, tr("Messages"));
+		headers.append(tr("Messages"));
 
     if (Receivers == toplist)
     {
-		header_p->setText(column ++, tr("Received"));
-		header_p->setText(column ++, tr("Sent"));
+		headers.append(tr("Received"));
+		headers.append(tr("Sent"));
     }
 
     if (Senders == toplist || FidoNets == toplist || Domains == toplist ||
         Subjects == toplist)
-		header_p->setText(column ++, tr("Bytes"));
+		headers.append(tr("Bytes"));
 
     if (Senders == toplist)
-		header_p->setText(column ++, tr("Lines"));
+		headers.append(tr("Lines"));
 
     if (Quoters == toplist || Senders == toplist)
-		header_p->setText(column ++, tr("Quote ratio"));
+		headers.append(tr("Quote ratio"));
 
     if (Receivers == toplist)
-		header_p->setText(column ++, tr("Ratio"));
+		headers.append(tr("Ratio"));
 
     if (OrigContent == toplist)
-		header_p->setText(column ++, tr("Per Message"));
+		headers.append(tr("Per Message"));
 
 	// Set up the tree view, and add the header
-	m_treeview_p->setColumnCount(column);
-	m_treeview_p->setHeaderItem(header_p);
+//	m_tableview_p->setColumnCount(column);
+	m_tableview_p->setHorizontalHeaderLabels(headers);
 }
 
 void TopListWindow::addQuoters(StatEngine *engine)
 {
-    unsigned place = 1;
+    int row = 0;
     bool restart = true;
-	QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::persstat_s data;
     while (engine->GetTopQuoters(restart, data))
@@ -173,19 +174,19 @@ void TopListWindow::addQuoters(StatEngine *engine)
         if (data.bytesquoted && data.byteswritten)
         {
             QString tmp;
-			QString name = QString::fromStdWString(data.name);
+			QString name;
+			name.fromWCharArray(data.name.c_str());
             if (name != QString(data.address.c_str()))
                 tmp = name + " <" + data.address.c_str() + ">";
             else
                 tmp = data.address.c_str();
 
-			QTreeWidgetItem *item_p = new QTreeWidgetItem(m_treeview_p, previous_p);
-			item_p->setText(0, QString::number(place ++));
-			item_p->setText(1, tmp);
-			item_p->setText(2, QString::number(data.messageswritten));
-			item_p->setText(3, percentString(data.bytesquoted, data.byteswritten));
+			SetItem(row, 0, QString::number(row + 1));
+			SetItem(row, 1, tmp);
+			SetItem(row, 2, QString::number(data.messageswritten));
+			SetItem(row, 3, percentString(data.bytesquoted, data.byteswritten));
 
-            previous_p = item_p;
+            ++ row;
         }
         restart = false;
     }
@@ -195,9 +196,8 @@ void TopListWindow::addQuoters(StatEngine *engine)
 
 void TopListWindow::addSenders(StatEngine *engine)
 {
-    unsigned place = 1;
+    int row = 0;
     bool restart = true;
-	QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::persstat_s data;
     while (engine->GetTopWriters(restart, data))
@@ -211,18 +211,17 @@ void TopListWindow::addSenders(StatEngine *engine)
         else
             tmp = data.address.c_str();
 
-		QTreeWidgetItem *item_p = new QTreeWidgetItem(m_treeview_p, previous_p);
-		item_p->setText(0, QString::number(place ++));
-		item_p->setText(1, tmp);
-		item_p->setText(2, QString::number(data.messageswritten));
-		item_p->setText(3, QString::number(data.byteswritten));
-		item_p->setText(4, QString::number(data.lineswritten));
-		item_p->setText(5, (data.bytesquoted > 0
-								? percentString(data.bytesquoted,
-								                data.byteswritten)
-								: tr("N/A")));
-
-		previous_p = item_p;
+		SetItem(row, 0, QString::number(row + 1));
+		SetItem(row, 1, tmp);
+		SetItem(row, 2, QString::number(data.messageswritten));
+		SetItem(row, 3, QString::number(data.byteswritten));
+		SetItem(row, 4, QString::number(data.lineswritten));
+		SetItem(row, 5, (data.bytesquoted > 0
+							? percentString(data.bytesquoted,
+							                data.byteswritten)
+							: tr("N/A")));
+
+		++ row;
         restart = false;
     }
 
@@ -231,9 +230,8 @@ void TopListWindow::addSenders(StatEngine *engine)
 
 void TopListWindow::addOriginalContent(StatEngine *engine)
 {
-    unsigned place = 1;
+    int row = 0;
     bool restart = true;
-    QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::persstat_s data;
     while (engine->GetTopOriginalPerMsg(restart, data))
@@ -254,14 +252,13 @@ void TopListWindow::addOriginalContent(StatEngine *engine)
         unsigned originalpermsg =
             (data.byteswritten - data.bytesquoted) / data.messageswritten;
 
-		QTreeWidgetItem *item_p = new QTreeWidgetItem(m_treeview_p, previous_p);
-		item_p->setText(0, QString::number(place ++));
-		item_p->setText(1, tmp);
-		item_p->setText(2, QString::number(data.byteswritten - data.bytesquoted));
-		item_p->setText(3, QString::number(data.messageswritten));
-		item_p->setText(4, QString::number(originalpermsg));
+		SetItem(row, 0, QString::number(row + 1));
+		SetItem(row, 1, tmp);
+		SetItem(row, 2, QString::number(data.byteswritten - data.bytesquoted));
+		SetItem(row, 3, QString::number(data.messageswritten));
+		SetItem(row, 4, QString::number(originalpermsg));
 
-		previous_p = item_p;
+		++ row;
     }
 
     engine->DoneTopPeople();
@@ -269,20 +266,18 @@ void TopListWindow::addOriginalContent(StatEngine *engine)
 
 void TopListWindow::addFidoNets(StatEngine *engine)
 {
-    unsigned place = 1;
+    int row = 0;
     bool restart = true;
-    QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::netstat_s data;
     while (engine->GetTopNets(restart, data))
     {
-		QTreeWidgetItem *item_p = new QTreeWidgetItem(m_treeview_p, previous_p);
-		item_p->setText(0, QString::number(place ++));
-		item_p->setText(1, QString::number(data.zone) + ":" + QString::number(data.net));
-		item_p->setText(2, QString::number(data.messages));
-		item_p->setText(3, QString::number(data.bytes));
+		SetItem(row, 0, QString::number(row + 1));
+		SetItem(row, 1, QString::number(data.zone) + ":" + QString::number(data.net));
+		SetItem(row, 2, QString::number(data.messages));
+		SetItem(row, 3, QString::number(data.bytes));
 
-		previous_p = item_p;
+		++ row;
         restart = false;
     }
 
@@ -291,20 +286,18 @@ void TopListWindow::addFidoNets(StatEngine *engine)
 
 void TopListWindow::addDomains(StatEngine *engine)
 {
-    unsigned place = 1;
+    int row = 0;
     bool restart = true;
-    QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::domainstat_s data;
     while (engine->GetTopDomains(restart, data))
     {
-		QTreeWidgetItem *item_p = new QTreeWidgetItem(m_treeview_p, previous_p);
-		item_p->setText(0, QString::number(place ++));
-		item_p->setText(1, data.topdomain.c_str());
-		item_p->setText(2, QString::number(data.messages));
-		item_p->setText(3, QString::number(data.bytes));
+		SetItem(row, 0, QString::number(row + 1));
+		SetItem(row, 1, data.topdomain.c_str());
+		SetItem(row, 2, QString::number(data.messages));
+		SetItem(row, 3, QString::number(data.bytes));
 
-		previous_p = item_p;
+		++ row;
         restart = false;
     }
 
@@ -313,9 +306,8 @@ void TopListWindow::addDomains(StatEngine *engine)
 
 void TopListWindow::addReceivers(StatEngine *engine)
 {
-    unsigned place = 1;
+    int row = 0;
     bool restart = true;
-    QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::persstat_s data;
     while (engine->GetTopReceivers(restart, data))
@@ -328,17 +320,16 @@ void TopListWindow::addReceivers(StatEngine *engine)
         else
             tmp = tr("(none)");
 
-		QTreeWidgetItem *item_p = new QTreeWidgetItem(m_treeview_p, previous_p);
-		item_p->setText(0, QString::number(place ++));
-		item_p->setText(1, tmp);
-		item_p->setText(2, QString::number(data.messagesreceived));
-		item_p->setText(3, QString::number(data.messageswritten));
-		item_p->setText(4, (data.messageswritten
-								? QString::number((100 * data.messagesreceived)
-								                  / data.messageswritten) + "%"
-								: tr("N/A")));
-
-		previous_p = item_p;
+		SetItem(row, 0, QString::number(row + 1));
+		SetItem(row, 1, tmp);
+		SetItem(row, 2, QString::number(data.messagesreceived));
+		SetItem(row, 3, QString::number(data.messageswritten));
+		SetItem(row, 4, (data.messageswritten
+						 ? QString::number((100 * data.messagesreceived)
+						                   / data.messageswritten) + "%"
+						 : tr("N/A")));
+
+		++ row;
         restart = false;
     }
 
@@ -347,10 +338,9 @@ void TopListWindow::addReceivers(StatEngine *engine)
 
 void TopListWindow::addSubjects(StatEngine *engine)
 {
-    unsigned place = 1;
+    int row = 0;
     bool restart = true;
     StatEngine::subjstat_s data;
-    QTreeWidgetItem *previous_p = NULL;
 
     while (engine->GetTopSubjects(restart, data))
     {
@@ -360,13 +350,12 @@ void TopListWindow::addSubjects(StatEngine *engine)
         else
             tmp = tr("(none)");
 
-		QTreeWidgetItem *item_p = new QTreeWidgetItem(m_treeview_p, previous_p);
-		item_p->setText(0, QString::number(place ++));
-		item_p->setText(1, tmp);
-		item_p->setText(2, QString::number(data.count));
-		item_p->setText(3, QString::number(data.bytes));
+		SetItem(row, 0, QString::number(row + 1));
+		SetItem(row, 1, tmp);
+		SetItem(row, 2, QString::number(data.count));
+		SetItem(row, 3, QString::number(data.bytes));
 
-		previous_p = item_p;
+		++ row;
         restart = false;
     }
 
@@ -375,9 +364,8 @@ void TopListWindow::addSubjects(StatEngine *engine)
 
 void TopListWindow::addSoftware(StatEngine *engine)
 {
-    unsigned place = 1;
+    int row = 0;
     bool restart = true;
-    QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::progstat_s data;
     while (engine->GetTopPrograms(restart, data))
@@ -388,12 +376,11 @@ void TopListWindow::addSoftware(StatEngine *engine)
         else
             tmp = tr("(none)");
 
-		QTreeWidgetItem *item_p = new QTreeWidgetItem(m_treeview_p, previous_p);
-		item_p->setText(0, QString::number(place ++));
-		item_p->setText(1, tmp);
-		item_p->setText(2, QString::number(data.count));
+		SetItem(row, 0, QString::number(row + 1));
+		SetItem(row, 1, tmp);
+		SetItem(row, 2, QString::number(data.count));
 
-		previous_p = item_p;
+		++ row;
         restart = false;
     }
 
@@ -409,8 +396,8 @@ QString TopListWindow::percentString(int numerator, int denumerator)
 
 void TopListWindow::saveToFile()
 {
-	int numentries = m_treeview_p->topLevelItemCount();
-	int numcolumns = m_treeview_p->columnCount();
+	int numentries = m_tableview_p->rowCount();
+	int numcolumns = m_tableview_p->columnCount();
     if (0 == numentries || 0 == numcolumns)
     {
         QMessageBox::warning(this, "Turquoise SuperStat",
@@ -473,14 +460,14 @@ void TopListWindow::saveToFile()
         // Traverse the list and find the widest element of each column
         for (int i = 0; i < numentries; i ++)
         {
-			QTreeWidgetItem *current_p = m_treeview_p->topLevelItem(i);
-			if (current_p)
+			for (int j = 0; j < numcolumns - 1; j ++)
 			{
-				for (int j = 0; j < numcolumns - 1; j ++)
+				QTableWidgetItem *current_p = m_tableview_p->itemAt(i, j);
+				if (current_p)
 				{
-					if (current_p->text(j).length() >= columnwidth_p[j])
+					if (current_p->text().length() >= columnwidth_p[j])
 					{
-						columnwidth_p[j] = current_p->text(j).length() + 1;
+						columnwidth_p[j] = current_p->text().length() + 1;
 					}
 				}
 			}
@@ -490,10 +477,13 @@ void TopListWindow::saveToFile()
     QTextStream out(&output);
 
     // Print the titles
-	QTreeWidgetItem *header_p = m_treeview_p->headerItem();
     for (int i = 0; i < numcolumns; i ++)
     {
-		QString s = header_p->text(i);
+		QTableWidgetItem *current_p = m_tableview_p->horizontalHeaderItem(i);
+		if (!current_p)
+			continue;
+
+		QString s = current_p->text();
         if (i < numcolumns - 1)
         {
             switch (filternum)
@@ -530,13 +520,13 @@ void TopListWindow::saveToFile()
     // Print the entries
     for (int i = 0; i < numentries; i ++)
     {
-		QTreeWidgetItem *current_p = m_treeview_p->topLevelItem(i);
-		if (!current_p)
-			continue;
-
         for (int j = 0; j < numcolumns; j ++)
         {
-			QString s = current_p->text(j);
+			QTableWidgetItem *current_p = m_tableview_p->itemAt(i, j);
+			if (!current_p)
+				continue;
+
+			QString s = current_p->text();
 
             if (j < numcolumns - 1)
             {
diff --git a/qtlist.h b/qtlist.h
index c4809be..ed382b8 100644
--- a/qtlist.h
+++ b/qtlist.h
@@ -24,7 +24,7 @@
 using namespace std;
 #endif
 
-class QTreeWidget;
+class QTableWidget;
 class StatEngine;
 #if !defined(HAVE_WORKING_WSTRING)
 class wstring;
@@ -92,11 +92,14 @@ protected:
     /** Internal method used for creating a software toplist. */
     void addSoftware(StatEngine *);
 
+	/** Internal method to add a text string to the table. */
+	void SetItem(int, int, const QString &);
+
     /** Create a percent string to display in a toplist. */
     QString percentString(int, int);
 
     /** List view used to display the actual toplist. */
-	QTreeWidget *m_treeview_p;
+	QTableWidget *m_tableview_p;
 
     /** The kind of toplist associated with this object. */
     enum toplist_e toplist;

-- 
Turquoise SuperStat - http://www.softwolves.pp.se/sw/software/turquoise



More information about the Turqstat-commits mailing list