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

Peter Karlsson peter at softwolves.pp.se
Sat Mar 22 23:53:31 UTC 2008


The following commit has been merged in the xturqstat-win32 branch:
commit f75b0aa7ef3d9113d4ac7765fe1055e8723e6867
Author: Peter Karlsson <peter at softwolves.pp.se>
Date:   Sun Mar 23 00:21:52 2008 +0100

    Further porting to Qt 4.
    
    Compiles, but not tested run-time.

diff --git a/outputqt.cpp b/outputqt.cpp
index 66e382c..110ac2f 100644
--- a/outputqt.cpp
+++ b/outputqt.cpp
@@ -52,8 +52,8 @@ void TDisplay::SetMessagesTotal(int number)
     {
         QProgressDialog *p =
             InfoWindow::getMainWindow()->getProgressDialog(maximum);
-        p->setTotalSteps(number);
-        p->setProgress(0);
+		p->setMaximum(number);
+		p->setValue(0);
     }
 }
 
@@ -63,7 +63,7 @@ void TDisplay::UpdateProgress(int messages)
     {
         QProgressDialog *p =
             InfoWindow::getMainWindow()->getProgressDialog(maximum);
-        p->setProgress(messages);
+		p->setValue(messages);
     }
     else
     {
diff --git a/qtgui.cpp b/qtgui.cpp
index 46ac4e5..f8ea081 100644
--- a/qtgui.cpp
+++ b/qtgui.cpp
@@ -279,7 +279,7 @@ ProgressText *InfoWindow::getProgressText()
         }
 
 		m_progresstext_p =
-            new ProgressText(this, "progress2",
+			new ProgressText(this,
 			                 m_hasnews ? tr("Reading news group")
 			                           : tr("Reading message base"));
 		m_progresstext_p->setWindowTitle("Turquoise SuperStat");
@@ -548,7 +548,7 @@ void InfoWindow::update()
 void InfoWindow::quotelist()
 {
     TopListWindow *quotedialog =
-        new TopListWindow(this, "quotelist", TopListWindow::Quoters);
+        new TopListWindow(this, TopListWindow::Quoters);
     if (quotedialog)
     {
 		quotedialog->fillOut(m_engine_p);
@@ -559,7 +559,7 @@ void InfoWindow::quotelist()
 void InfoWindow::senderlist()
 {
     TopListWindow *senderdialog =
-        new TopListWindow(this, "senderlist", TopListWindow::Senders);
+        new TopListWindow(this, TopListWindow::Senders);
     if (senderdialog)
     {
 		senderdialog->fillOut(m_engine_p);
@@ -570,7 +570,7 @@ void InfoWindow::senderlist()
 void InfoWindow::contentlist()
 {
     TopListWindow *contentdialog =
-        new TopListWindow(this, "contentlist", TopListWindow::OrigContent);
+        new TopListWindow(this, TopListWindow::OrigContent);
     if (contentdialog)
     {
 		contentdialog->fillOut(m_engine_p);
@@ -581,7 +581,7 @@ void InfoWindow::contentlist()
 void InfoWindow::fidonetlist()
 {
     TopListWindow *fidonetsdialog =
-        new TopListWindow(this, "netlist", TopListWindow::FidoNets);
+        new TopListWindow(this, TopListWindow::FidoNets);
     if (fidonetsdialog)
     {
 		fidonetsdialog->fillOut(m_engine_p);
@@ -592,7 +592,7 @@ void InfoWindow::fidonetlist()
 void InfoWindow::domainlist()
 {
     TopListWindow *domaindialog =
-        new TopListWindow(this, "domainlist", TopListWindow::Domains);
+        new TopListWindow(this, TopListWindow::Domains);
     if (domaindialog)
     {
 		domaindialog->fillOut(m_engine_p);
@@ -603,7 +603,7 @@ void InfoWindow::domainlist()
 void InfoWindow::receiverlist()
 {
     TopListWindow *receiverdialog =
-        new TopListWindow(this, "receiverlist", TopListWindow::Receivers);
+        new TopListWindow(this, TopListWindow::Receivers);
     if (receiverdialog)
     {
 		receiverdialog->fillOut(m_engine_p);
@@ -614,7 +614,7 @@ void InfoWindow::receiverlist()
 void InfoWindow::subjectlist()
 {
     TopListWindow *subjectdialog =
-        new TopListWindow(this, "subjectlist", TopListWindow::Subjects);
+        new TopListWindow(this, TopListWindow::Subjects);
     if (subjectdialog)
     {
 		subjectdialog->fillOut(m_engine_p);
@@ -625,7 +625,7 @@ void InfoWindow::subjectlist()
 void InfoWindow::softwarelist()
 {
     TopListWindow *softwaredialog =
-        new TopListWindow(this, "softwaredialog", TopListWindow::Software);
+        new TopListWindow(this, TopListWindow::Software);
     if (softwaredialog)
     {
 		softwaredialog->fillOut(m_engine_p);
@@ -668,7 +668,7 @@ void InfoWindow::clear()
 void InfoWindow::report()
 {
     ReportSelectWindow *reportwindow =
-		new ReportSelectWindow(this, "reportselect", m_engine_p);
+		new ReportSelectWindow(this, m_engine_p);
     reportwindow->exec();
 }
 
diff --git a/qtlist.cpp b/qtlist.cpp
index 3d6819e..7ac4e81 100644
--- a/qtlist.cpp
+++ b/qtlist.cpp
@@ -15,7 +15,7 @@
 
 #include <config.h>
 
-#include <qlistview.h>
+#include <qtreewidget.h>
 #include <qpushbutton.h>
 #include <qstring.h>
 #include <qlayout.h>
@@ -28,26 +28,23 @@
 #include "qtlist.h"
 #include "statengine.h"
 
-TopListWindow::TopListWindow(QWidget *parent, const char *name, toplist_e list)
-    : QDialog(parent, name), toplist(list)
+TopListWindow::TopListWindow(QWidget *parent, toplist_e list)
+    : QDialog(parent), toplist(list)
 {
     // Create layout
-    QVBoxLayout *layout = new QVBoxLayout(this);
+	QGridLayout *layout_p = new QGridLayout(this);
 
     // Create list view
-    m_listview_p = new QListView(this, "toplistview");
-	m_listview_p->setSorting(-1);
-	layout->addWidget(m_listview_p);
+	m_treeview_p = new QTreeWidget(this);
+	layout_p->addWidget(m_treeview_p, 0, 0, 0, 2);
 
     // Add buttons
-    QHBoxLayout *buttonlayout = new QHBoxLayout(layout);
-
     QPushButton *ok = new QPushButton(tr("Dismiss"), this);
-    buttonlayout->addWidget(ok);
+	layout_p->addWidget(ok, 1, 0);
     connect(ok, SIGNAL(clicked()), SLOT(accept()));
 
     QPushButton *save = new QPushButton(tr("&Save"), this);
-    buttonlayout->addWidget(save);
+	layout_p->addWidget(save, 1, 1);
     connect(save, SIGNAL(clicked()), SLOT(saveToFile()));
 }
 
@@ -57,49 +54,49 @@ TopListWindow::~TopListWindow()
 
 void TopListWindow::fillOut(StatEngine *engine)
 {
-	if (!engine || !m_listview_p) return;
+	if (!engine || !m_treeview_p) return;
 
     setupHeaders();
 
     switch (toplist)
     {
         case Quoters:
-            setCaption(tr("Quoters"));
+			setWindowTitle(tr("Quoters"));
             addQuoters(engine);
             break;
 
         case Senders:
-            setCaption(tr("Senders"));
+            setWindowTitle(tr("Senders"));
             addSenders(engine);
             break;
 
         case OrigContent:
-            setCaption(tr("Original content per message"));
+            setWindowTitle(tr("Original content per message"));
             addOriginalContent(engine);
             break;
 
         case FidoNets:
-            setCaption(tr("Fidonet nets"));
+            setWindowTitle(tr("Fidonet nets"));
             addFidoNets(engine);
             break;
 
         case Domains:
-            setCaption(tr("Internet topdomains"));
+            setWindowTitle(tr("Internet topdomains"));
             addDomains(engine);
             break;
 
         case Receivers:
-            setCaption(tr("Receivers"));
+            setWindowTitle(tr("Receivers"));
             addReceivers(engine);
             break;
 
         case Subjects:
-            setCaption(tr("Subjects"));
+            setWindowTitle(tr("Subjects"));
             addSubjects(engine);
             break;
 
         case Software:
-            setCaption(tr("Software"));
+            setWindowTitle(tr("Software"));
             addSoftware(engine);
             break;
     }
@@ -107,60 +104,68 @@ void TopListWindow::fillOut(StatEngine *engine)
 
 void TopListWindow::setupHeaders()
 {
-	m_listview_p->addColumn(tr("Place"));
+	int column = 0;
+	QTreeWidgetItem *header_p = new QTreeWidgetItem(m_treeview_p);
+	if (!header_p)
+		return;
 
+	// Create headers, counting them as we go along
     if (Quoters == toplist || Senders == toplist || OrigContent == toplist ||
         Receivers == toplist)
-		m_listview_p->addColumn(tr("Name"));
+		header_p->setText(column ++, tr("Name"));
 
     if (OrigContent == toplist)
-		m_listview_p->addColumn(tr("Original content"));
+		header_p->setText(column ++, tr("Original content"));
 
     if (FidoNets == toplist)
-		m_listview_p->addColumn(tr("Zone:Net"));
+		header_p->setText(column ++, tr("Zone:Net"));
 
     if (Domains == toplist)
-		m_listview_p->addColumn(tr("Domain"));
+		header_p->setText(column ++, tr("Domain"));
 
     if (Subjects == toplist)
-		m_listview_p->addColumn(tr("Subject"));
+		header_p->setText(column ++, tr("Subject"));
 
     if (Software == toplist)
-		m_listview_p->addColumn(tr("Program"));
+		header_p->setText(column ++, tr("Program"));
 
     if (Quoters == toplist || Senders == toplist || OrigContent == toplist ||
         FidoNets == toplist || Domains == toplist || Subjects == toplist ||
         Software == toplist)
-		m_listview_p->addColumn(tr("Messages"));
+		header_p->setText(column ++, tr("Messages"));
 
     if (Receivers == toplist)
     {
-		m_listview_p->addColumn(tr("Received"));
-		m_listview_p->addColumn(tr("Sent"));
+		header_p->setText(column ++, tr("Received"));
+		header_p->setText(column ++, tr("Sent"));
     }
 
     if (Senders == toplist || FidoNets == toplist || Domains == toplist ||
         Subjects == toplist)
-		m_listview_p->addColumn(tr("Bytes"));
+		header_p->setText(column ++, tr("Bytes"));
 
     if (Senders == toplist)
-		m_listview_p->addColumn(tr("Lines"));
+		header_p->setText(column ++, tr("Lines"));
 
     if (Quoters == toplist || Senders == toplist)
-		m_listview_p->addColumn(tr("Quote ratio"));
+		header_p->setText(column ++, tr("Quote ratio"));
 
     if (Receivers == toplist)
-		m_listview_p->addColumn(tr("Ratio"));
+		header_p->setText(column ++, tr("Ratio"));
 
     if (OrigContent == toplist)
-		m_listview_p->addColumn(tr("Per Message"));
+		header_p->setText(column ++, tr("Per Message"));
+
+	// Set up the tree view, and add the header
+	m_treeview_p->setColumnCount(column);
+	m_treeview_p->setHeaderItem(header_p);
 }
 
 void TopListWindow::addQuoters(StatEngine *engine)
 {
     unsigned place = 1;
     bool restart = true;
-    QListViewItem *previous = NULL;
+	QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::persstat_s data;
     while (engine->GetTopQuoters(restart, data))
@@ -174,12 +179,13 @@ void TopListWindow::addQuoters(StatEngine *engine)
             else
                 tmp = data.address.c_str();
 
-            QListViewItem *item =
-				new QListViewItem(m_listview_p, previous, QString::number(place ++),
-                                  tmp, QString::number(data.messageswritten),
-                                  percentString(data.bytesquoted,
-                                                data.byteswritten));
-            previous = item;
+			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));
+
+            previous_p = item_p;
         }
         restart = false;
     }
@@ -191,7 +197,7 @@ void TopListWindow::addSenders(StatEngine *engine)
 {
     unsigned place = 1;
     bool restart = true;
-    QListViewItem *previous = NULL;
+	QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::persstat_s data;
     while (engine->GetTopWriters(restart, data))
@@ -205,17 +211,18 @@ void TopListWindow::addSenders(StatEngine *engine)
         else
             tmp = data.address.c_str();
 
-        QListViewItem *item =
-			new QListViewItem(m_listview_p, previous, QString::number(place ++),
-                              tmp, QString::number(data.messageswritten),
-                              QString::number(data.byteswritten),
-                              QString::number(data.lineswritten),
-                              (data.bytesquoted > 0
-                               ? percentString(data.bytesquoted,
-                                               data.byteswritten)
-                               : tr("N/A")));
-
-        previous = item;
+		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;
         restart = false;
     }
 
@@ -226,7 +233,7 @@ void TopListWindow::addOriginalContent(StatEngine *engine)
 {
     unsigned place = 1;
     bool restart = true;
-    QListViewItem *previous = NULL;
+    QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::persstat_s data;
     while (engine->GetTopOriginalPerMsg(restart, data))
@@ -247,14 +254,14 @@ 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));
 
-        QListViewItem *item =
-			new QListViewItem(m_listview_p, previous, QString::number(place ++),
-                              tmp, QString::number(data.byteswritten -
-                                                   data.bytesquoted),
-                              QString::number(data.messageswritten),
-                              QString::number(originalpermsg));
-        previous = item;
+		previous_p = item_p;
     }
 
     engine->DoneTopPeople();
@@ -264,18 +271,18 @@ void TopListWindow::addFidoNets(StatEngine *engine)
 {
     unsigned place = 1;
     bool restart = true;
-    QListViewItem *previous = NULL;
+    QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::netstat_s data;
     while (engine->GetTopNets(restart, data))
     {
-        QListViewItem *item =
-			new QListViewItem(m_listview_p, previous, QString::number(place ++),
-                              QString::number(data.zone) + ":" +
-                              QString::number(data.net),
-                              QString::number(data.messages),
-                              QString::number(data.bytes));
-        previous = item;
+		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));
+
+		previous_p = item_p;
         restart = false;
     }
 
@@ -286,18 +293,18 @@ void TopListWindow::addDomains(StatEngine *engine)
 {
     unsigned place = 1;
     bool restart = true;
-    QListViewItem *previous = NULL;
+    QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::domainstat_s data;
     while (engine->GetTopDomains(restart, data))
     {
-        QListViewItem *item =
-			new QListViewItem(m_listview_p, previous, QString::number(place ++),
-                              data.topdomain.c_str(),
-                              QString::number(data.messages),
-                              QString::number(data.bytes));
+		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));
 
-        previous = item;
+		previous_p = item_p;
         restart = false;
     }
 
@@ -308,7 +315,7 @@ void TopListWindow::addReceivers(StatEngine *engine)
 {
     unsigned place = 1;
     bool restart = true;
-    QListViewItem *previous = NULL;
+    QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::persstat_s data;
     while (engine->GetTopReceivers(restart, data))
@@ -321,16 +328,17 @@ void TopListWindow::addReceivers(StatEngine *engine)
         else
             tmp = tr("(none)");
 
-        QListViewItem *item =
-			new QListViewItem(m_listview_p, previous, QString::number(place ++),
-                              tmp, QString::number(data.messagesreceived),
-                              QString::number(data.messageswritten),
-                              (data.messageswritten
-                               ? QString::number((100 * data.messagesreceived)
-                                                 / data.messageswritten) + "%"
-                               : tr("N/A")));
-
-        previous = item;
+		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;
         restart = false;
     }
 
@@ -342,7 +350,7 @@ void TopListWindow::addSubjects(StatEngine *engine)
     unsigned place = 1;
     bool restart = true;
     StatEngine::subjstat_s data;
-    QListViewItem *previous = NULL;
+    QTreeWidgetItem *previous_p = NULL;
 
     while (engine->GetTopSubjects(restart, data))
     {
@@ -352,12 +360,13 @@ void TopListWindow::addSubjects(StatEngine *engine)
         else
             tmp = tr("(none)");
 
-        QListViewItem *item =
-			new QListViewItem(m_listview_p, previous, QString::number(place ++),
-                              tmp, QString::number(data.count),
-                              QString::number(data.bytes));
+		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));
 
-        previous = item;
+		previous_p = item_p;
         restart = false;
     }
 
@@ -368,7 +377,7 @@ void TopListWindow::addSoftware(StatEngine *engine)
 {
     unsigned place = 1;
     bool restart = true;
-    QListViewItem *previous = NULL;
+    QTreeWidgetItem *previous_p = NULL;
 
     StatEngine::progstat_s data;
     while (engine->GetTopPrograms(restart, data))
@@ -379,12 +388,12 @@ void TopListWindow::addSoftware(StatEngine *engine)
         else
             tmp = tr("(none)");
 
-        QListViewItem *item =
-			new QListViewItem(m_listview_p, previous, QString::number(place ++),
-                              tmp, QString::number(data.count));
-
+		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));
 
-        previous = item;
+		previous_p = item_p;
         restart = false;
     }
 
@@ -415,8 +424,8 @@ QString TopListWindow::percentString(int numerator, int denumerator)
 
 void TopListWindow::saveToFile()
 {
-	int numentries = m_listview_p->childCount();
-	int numcolumns = m_listview_p->columns();
+	int numentries = m_treeview_p->topLevelItemCount();
+	int numcolumns = m_treeview_p->columnCount();
     if (0 == numentries || 0 == numcolumns)
     {
         QMessageBox::warning(this, "Turquoise SuperStat",
@@ -437,13 +446,10 @@ void TopListWindow::saveToFile()
         tr("Tab separated file (*.tsv)")
     };
 
-    QFileDialog filedialog(QString::null,
-                           filter[0] + ";;" + filter[1] + ";;" + filter[2] +
-                           ";;" + filter[3],
-                           this, "savefile", true);
-    filedialog.setMode(QFileDialog::AnyFile);
-    filedialog.setCaption(tr("Save toplist"));
-    filedialog.setShowHiddenFiles(false);
+	QFileDialog filedialog(this, tr("Save toplist"), QString(),
+	                       filter[0] + ";;" + filter[1] + ";;" + filter[2] +
+	                       ";;" + filter[3]);
+    filedialog.setFileMode(QFileDialog::AnyFile);
     if (filedialog.exec() != QDialog::Accepted)
     {
         return;
@@ -460,59 +466,62 @@ void TopListWindow::saveToFile()
     }
 
     // Create the file
-    QFile output(filedialog.selectedFile());
-    if (!output.open(IO_WriteOnly | IO_Translate))
+	QFile output(filedialog.selectedFiles().at(0));
+	if (!output.open(QIODevice::WriteOnly | QIODevice::Text))
     {
-        QMessageBox::warning(this, filedialog.selectedFile(),
+        QMessageBox::warning(this, filedialog.selectedFiles().at(0),
                              tr("Unable to create the selected file"));
         return;
     }
 
     // Select output format
     QString format;
-    unsigned *columnwidth = NULL;
+	int *columnwidth_p = NULL;
     if (PLAINTEXT == filternum)
     {
         // TODO: Give the user some option to edit this...
-        columnwidth = new unsigned[numcolumns - 1];
+		columnwidth_p = new int[numcolumns - 1];
         for (int i = 0; i < numcolumns; i ++)
         {
-            columnwidth[i] = 1;
+			columnwidth_p[i] = 1;
         }
         // Traverse the list and find the widest element of each column
-		QListViewItem *current = m_listview_p->firstChild();
         for (int i = 0; i < numentries; i ++)
         {
-            for (int j = 0; j < numcolumns - 1; j ++)
-            {
-                if (current->text(j).length() >= columnwidth[j])
-                {
-                    columnwidth[j] = current->text(j).length() + 1;
-                }
-            }
-            current = current->nextSibling();
+			QTreeWidgetItem *current_p = m_treeview_p->topLevelItem(i);
+			if (current_p)
+			{
+				for (int j = 0; j < numcolumns - 1; j ++)
+				{
+					if (current_p->text(j).length() >= columnwidth_p[j])
+					{
+						columnwidth_p[j] = current_p->text(j).length() + 1;
+					}
+				}
+			}
         }
     }
 
     QTextStream out(&output);
 
     // Print the titles
+	QTreeWidgetItem *header_p = m_treeview_p->headerItem();
     for (int i = 0; i < numcolumns; i ++)
     {
-		QString s = m_listview_p->columnText(i);
+		QString s = header_p->text(i);
         if (i < numcolumns - 1)
         {
             switch (filternum)
             {
                 case PLAINTEXT:
-                    if (s.length() > columnwidth[i])
+					if (s.length() > columnwidth_p[i])
                     {
-                        s.truncate(columnwidth[i] - 1);
+						s.truncate(columnwidth_p[i] - 1);
                         s += '.';
                     }
                     else
                     {
-                        s = s.leftJustify(columnwidth[i], ' ', true);
+						s = s.leftJustified(columnwidth_p[i], ' ', true);
                     }
                     break;
 
@@ -533,20 +542,23 @@ void TopListWindow::saveToFile()
     }
     out << endl;
 
-	QListViewItem *current = m_listview_p->firstChild();
     // 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->text(j);
+			QString s = current_p->text(j);
 
             if (j < numcolumns - 1)
             {
                 switch (filternum)
                 {
                     case PLAINTEXT:
-                        s = s.leftJustify(columnwidth[j], ' ', true);
+						s = s.leftJustified(columnwidth_p[j], ' ', true);
                         break;
 
                     case COMMA:
@@ -568,9 +580,6 @@ void TopListWindow::saveToFile()
             out << s;
         }
         out << endl;
-
-        // Go to next item
-        current = current->nextSibling();
     }
 
     // Done
diff --git a/qtlist.h b/qtlist.h
index b83b3da..5b6a16e 100644
--- a/qtlist.h
+++ b/qtlist.h
@@ -24,7 +24,7 @@
 using namespace std;
 #endif
 
-class QListView;
+class QTreeWidget;
 class StatEngine;
 #if !defined(HAVE_WORKING_WSTRING)
 class wstring;
@@ -62,7 +62,7 @@ public:
      * @param name   Name given to this instance.
      * @param list   Type of list to display in the window.
      */
-    TopListWindow(QWidget *parent, const char *name, toplist_e list);
+    TopListWindow(QWidget *parent, toplist_e list);
     /** Standard destructor. */
     ~TopListWindow();
 
@@ -102,7 +102,7 @@ protected:
     QString percentString(int, int);
 
     /** List view used to display the actual toplist. */
-	QListView *m_listview_p;
+	QTreeWidget *m_treeview_p;
 
     /** The kind of toplist associated with this object. */
     enum toplist_e toplist;
diff --git a/qtprogress.cpp b/qtprogress.cpp
index 09e0ce4..bfce1aa 100644
--- a/qtprogress.cpp
+++ b/qtprogress.cpp
@@ -20,19 +20,16 @@
 
 #include "qtprogress.h"
 
-ProgressText::ProgressText(QWidget *parent, const char *name,
-                           const QString &title)
-    : QDialog(parent, name, false)
+ProgressText::ProgressText(QWidget *parent, const QString &title)
+	: QDialog(parent)
 {
-    // Create vertical layout
-    QBoxLayout *vlayout = new QVBoxLayout(this);
-    QLabel *t = new QLabel(title, this);
-    vlayout->addWidget(t);
+	QGridLayout *layout_p = new QGridLayout(this);
+	QLabel *t_p = new QLabel(title, this);
+	layout_p->addWidget(t_p, 0, 0, 1, 2);
 
-    // Create horizontal layout
-    QBoxLayout *hlayout = new QHBoxLayout(vlayout);
+	// Create horizontal layout
 	m_progress_p = new QLabel("0", this);
-    hlayout->addWidget(m_progress_p);
-    QLabel *l = new QLabel(tr("message(s) read"), this);
-    hlayout->addWidget(l);
+	layout_p->addWidget(m_progress_p, 1, 0);
+	QLabel *l_p = new QLabel(tr("message(s) read"), this);
+	layout_p->addWidget(m_progress_p, 1, 1);
 }
diff --git a/qtprogress.h b/qtprogress.h
index 65dcd05..ccdab26 100644
--- a/qtprogress.h
+++ b/qtprogress.h
@@ -40,7 +40,7 @@ public:
      * @param name   Name given to this instance.
      * @param title  Title to display in window.
      */
-    ProgressText(QWidget *parent, const char *name, const QString &title);
+	ProgressText(QWidget *parent, const QString &title);
 
     /**
      * Update the progress indicator.
diff --git a/qtreport.cpp b/qtreport.cpp
index 07d6b7c..4e1b5c2 100644
--- a/qtreport.cpp
+++ b/qtreport.cpp
@@ -24,6 +24,9 @@
 #include <qlabel.h>
 #include <qlineedit.h>
 #include <limits.h>
+#ifdef HAVE_WIN32_GETMODULEFILENAME
+# include <windows.h>
+#endif
 
 #include "qtreport.h"
 #include "statview.h"
@@ -49,9 +52,8 @@ int ReportSelectWindow::g_defaultmaxnum = 15;
 QString ReportSelectWindow::g_templpath;
 Template *ReportSelectWindow::g_template = NULL;
 
-ReportSelectWindow::ReportSelectWindow(QWidget *parent, const char *name,
-                                       StatEngine *engine_p)
-    : QDialog(parent, name, true), m_engine_p(engine_p)
+ReportSelectWindow::ReportSelectWindow(QWidget *parent, StatEngine *engine_p)
+	: QDialog(parent), m_engine_p(engine_p)
 {
     // Create layout
     QVBoxLayout *layout = new QVBoxLayout(this);
@@ -113,7 +115,10 @@ ReportSelectWindow::ReportSelectWindow(QWidget *parent, const char *name,
 #endif
 
     // Input boxes
-	m_maxnum_p = new QSpinBox(1, INT_MAX, 1, this);
+	m_maxnum_p = new QSpinBox(this);
+	m_maxnum_p->setMinimum(1);
+	m_maxnum_p->setMaximum(INT_MAX);
+	m_maxnum_p->setSingleStep(1);
 	m_maxnum_p->setValue(g_defaultmaxnum);
 	m_maxnum_p->setSuffix(tr(" entries"));
 	layout->addWidget(m_maxnum_p);
@@ -121,20 +126,20 @@ ReportSelectWindow::ReportSelectWindow(QWidget *parent, const char *name,
     QLabel *charsetlabel = new QLabel(tr("&Character set for report"), this);
     layout->addWidget(charsetlabel);
 
-	m_charset_p = new QComboBox(false, this);
+	m_charset_p = new QComboBox(this);
 	layout->addWidget(m_charset_p);
 	charsetlabel->setBuddy(m_charset_p);
 
     CharsetEnumerator charsets(CharsetEnumerator::Usenet);
-    const char *charsetname;
-    while (NULL != (charsetname = charsets.Next()))
-    {
-		m_charset_p->insertItem(charsetname);
-		if (g_docharset == charsetname)
-        {
-			m_charset_p->setCurrentItem(m_charset_p->count() - 1);
-        }
-    }
+	const char *charsetname_p;
+	while (NULL != (charsetname_p = charsets.Next()))
+	{
+		m_charset_p->addItem(charsetname_p);
+		if (g_docharset == charsetname_p)
+		{
+			m_charset_p->setCurrentIndex(m_charset_p->count() - 1);
+		}
+	}
 
 	// Template file browser
 	if (!g_template)
@@ -167,31 +172,29 @@ ReportSelectWindow::ReportSelectWindow(QWidget *parent, const char *name,
 		g_template = Template::Parse(templatefile, is_error);
 		if (!is_error)
 		{
-			g_templpath = templatefile;
+			g_templpath.fromStdString(templatefile);
 		}
 	}
 	QLabel *templatelabel = new QLabel(tr("Template file to use"), this);
 	layout->addWidget(templatelabel);
 
-	QHBoxLayout *filebrowselayout = new QHBoxLayout(layout);
+	QGridLayout *filebrowselayout_p = new QGridLayout(this);
 
-	m_templatefilename_p = new QLineEdit(this, "templatefile");
+	m_templatefilename_p = new QLineEdit(this);
 	m_templatefilename_p->setReadOnly(true);
 	m_templatefilename_p->setText(g_templpath);
-	filebrowselayout->addWidget(m_templatefilename_p);
+	filebrowselayout_p->addWidget(m_templatefilename_p, 0, 0);
 	m_filebrowsebutton_p = new QPushButton(tr("&Browse"), this);
-	filebrowselayout->addWidget(m_filebrowsebutton_p);
+	filebrowselayout_p->addWidget(m_filebrowsebutton_p, 0, 1);
 	connect(m_filebrowsebutton_p, SIGNAL(clicked()), SLOT(browseForTemplate()));
 
     // Add buttons
-    QHBoxLayout *buttonlayout = new QHBoxLayout(layout);
-
     QPushButton *save = new QPushButton(tr("&Save"), this);
-    buttonlayout->addWidget(save);
+	filebrowselayout_p->addWidget(save, 1, 0);
     connect(save, SIGNAL(clicked()), SLOT(saveToFile()));
 
     QPushButton *ok = new QPushButton(tr("Cancel"), this);
-    buttonlayout->addWidget(ok);
+	filebrowselayout_p->addWidget(ok, 1, 1);
     connect(ok, SIGNAL(clicked()), SLOT(accept()));
 }
 
@@ -208,10 +211,10 @@ void ReportSelectWindow::saveToFile()
 	}
 
     // Browse for filename
-    QString filename =
-        QFileDialog::getSaveFileName(tr("report.txt"),
-                                     tr("Report files (*.txt)"),
-                                     this, "savereport", tr("Save report"));
+	QString filename =
+		QFileDialog::getSaveFileName(this, tr("Save report"),
+		                             tr("report.txt"),
+		                             tr("Report files (*.txt)"));
     if (filename.isEmpty()) return; // Cancel
 
     // Create view object
@@ -253,11 +256,11 @@ void ReportSelectWindow::saveToFile()
     view.ShowVersions(true);
     view.ShowAllNums(false);
 	view.SetMaxEntries(g_defaultmaxnum);
-	view.SetCharset(g_docharset.latin1());
+	view.SetCharset(g_docharset.toLatin1());
 
     // Write output
 	view.SetTemplate(g_template);
-	view.CreateReport(m_engine_p, string(filename.local8Bit()));
+	view.CreateReport(m_engine_p, string(filename.toLocal8Bit()));
 
     // Close
     accept();
@@ -267,15 +270,15 @@ void ReportSelectWindow::browseForTemplate()
 {
 	// Browse for filename
 	QString filename =
-		QFileDialog::getSaveFileName(g_templpath,
-		                             tr("Template files (*.tpl)"),
-		                             this, "browsefortemplate", tr("Browse for template"));
+		QFileDialog::getOpenFileName(this, tr("Browse for template"),
+		                             g_templpath,
+		                             tr("Template files (*.tpl)"));
 	if (filename.isEmpty()) return; // Cancel
 
 	// Load template if possible
 	bool error = false;
 	Template *new_template =
-		Template::Parse(string(filename.local8Bit()), error);
+		Template::Parse(string(filename.toLocal8Bit()), error);
 	if (!new_template || error)
 	{
 		TDisplay *display = TDisplay::GetOutputObject();
diff --git a/qtreport.h b/qtreport.h
index 27897a9..388b642 100644
--- a/qtreport.h
+++ b/qtreport.h
@@ -43,7 +43,7 @@ public:
      * @param name     Name given to this instance.
      * @param engine_p Pointer to engine containing the statistics.
      */
-    ReportSelectWindow(QWidget *parent, const char *name, StatEngine *);
+	ReportSelectWindow(QWidget *parent, StatEngine *);
     /** Standard destructor. */
     ~ReportSelectWindow();
 

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



More information about the Turqstat-commits mailing list