Summary: | sort by user doesn't work in the right way | ||
---|---|---|---|
Product: | [Applications] atlantik | Reporter: | cerebro84 |
Component: | general | Assignee: | Rob Kaper <atlantik-devel> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | esigra |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
cerebro84
2003-07-12 22:39:31 UTC
Subject: KDE_3_1_BRANCH: kdegames/atlantik CVS commit by kaper: backport to kde 3.1 branch, fix #61152: sort by user doesn't work in the right way CCMAIL: 61152-done@bugs.kde.org M +1 -0 ChangeLog 1.121.4.19 M +19 -0 client/monopigator.cpp 1.9.8.5 M +8 -0 client/monopigator.h 1.8.8.5 M +2 -3 client/selectserver_widget.cpp 1.18.6.5 --- kdegames/atlantik/ChangeLog #1.121.4.18:1.121.4.19 @@ -12,4 +12,5 @@ - make use of trade revisions (monopd >= 0.8.2 recommended) - don't tell game has started when it has not +- sort user column in server list by number, not alphabetically 0.5.2 --- kdegames/atlantik/client/monopigator.cpp #1.9.8.4:1.9.8.5 @@ -103,2 +103,21 @@ void Monopigator::processData(const QByt } } + +MonopigatorEntry::MonopigatorEntry(QListView *parent, QString host, QString version, QString users, QString port) : QListViewItem(parent, host, version, users, port) +{ +} + +int MonopigatorEntry::compare(QListViewItem *i, int col, bool ascending) const +{ + if (col == 2) + { + int myVal = text(col).toInt(), iVal = i->text(col).toInt(); + if (myVal == iVal) + return 0; + else if (myVal > iVal) + return 1; + else + return -1; + } + return key( col, ascending ).compare( i->key( col, ascending) ); +} --- kdegames/atlantik/client/monopigator.h #1.8.8.4:1.8.8.5 @@ -20,4 +20,5 @@ #include <qobject.h> #include <qbuffer.h> +#include <qlistview.h> #include <qtimer.h> @@ -50,4 +51,11 @@ private: QTimer *m_timer; KIO::Job *m_job; +}; + +class MonopigatorEntry : public QListViewItem +{ +public: + MonopigatorEntry(QListView *parent, QString host, QString version, QString users, QString port); + int compare(QListViewItem *i, int col, bool ascending) const; }; --- kdegames/atlantik/client/selectserver_widget.cpp #1.18.6.4:1.18.6.5 @@ -115,5 +115,5 @@ void SelectServer::checkLocalServer() void SelectServer::slotMonopigatorAdd(QString host, QString port, QString version, int users) { - QListViewItem *item = new QListViewItem(m_serverList, host, version, (users == -1) ? i18n("unknown") : QString::number(users), port); + MonopigatorEntry *item = new MonopigatorEntry(m_serverList, host, version, (users == -1) ? i18n("unknown") : QString::number(users), port); item->setPixmap(0, BarIcon("atlantik", KIcon::SizeSmall)); validateConnectButton(); @@ -124,7 +124,6 @@ void SelectServer::slotLocalConnected() m_localServerAvailable = true; - QListViewItem *item = new QListViewItem(m_serverList, "localhost", i18n("unknown"), i18n("unknown"), QString::number(1234)); + MonopigatorEntry *item = new MonopigatorEntry(m_serverList, "localhost", i18n("unknown"), i18n("unknown"), QString::number(1234)); item->setPixmap(0, BarIcon("atlantik", KIcon::SizeSmall)); - validateConnectButton(); } |