From a5d73a9a6028f2c0b6320a80e57e4b9ca7cd3f3e Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Thu, 23 Sep 2010 15:11:28 +0200 Subject: [PATCH] User list sorting fix --- cockatrice/src/tab_server.cpp | 18 ++++++++++++++++-- cockatrice/src/tab_server.h | 7 +++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/cockatrice/src/tab_server.cpp b/cockatrice/src/tab_server.cpp index 7c8d19ce..9014d783 100644 --- a/cockatrice/src/tab_server.cpp +++ b/cockatrice/src/tab_server.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include #include #include @@ -237,6 +236,20 @@ void ServerMessageLog::processServerMessageEvent(Event_ServerMessage *event) textEdit->append(event->getMessage()); } +UserListTWI::UserListTWI() + : QTreeWidgetItem(Type) +{ +} + +bool UserListTWI::operator<(const QTreeWidgetItem &other) const +{ + // Equal user level => sort by name + if (data(0, Qt::UserRole) == other.data(0, Qt::UserRole)) + return data(2, Qt::UserRole).toString().toLower() < other.data(2, Qt::UserRole).toString().toLower(); + // Else sort by user level + return data(0, Qt::UserRole).toInt() > other.data(0, Qt::UserRole).toInt(); +} + UserList::UserList(AbstractClient *_client, QWidget *parent) : QGroupBox(parent) { @@ -279,10 +292,11 @@ void UserList::processUserInfo(ServerInfo_User *user) } } if (!item) { - item = new QTreeWidgetItem; + item = new UserListTWI; userTree->addTopLevelItem(item); retranslateUi(); } + item->setData(0, Qt::UserRole, user->getUserLevel()); item->setIcon(0, QIcon(UserLevelPixmapGenerator::generatePixmap(12, user->getUserLevel()))); item->setIcon(1, QIcon(CountryPixmapGenerator::generatePixmap(12, user->getCountry()))); item->setData(2, Qt::UserRole, user->getName()); diff --git a/cockatrice/src/tab_server.h b/cockatrice/src/tab_server.h index 643bae2a..d9549e20 100644 --- a/cockatrice/src/tab_server.h +++ b/cockatrice/src/tab_server.h @@ -2,6 +2,7 @@ #define TAB_SERVER_H #include +#include #include "tab.h" #include "protocol_datastructures.h" @@ -76,6 +77,12 @@ public: void retranslateUi(); }; +class UserListTWI : public QTreeWidgetItem { +public: + UserListTWI(); + bool operator<(const QTreeWidgetItem &other) const; +}; + class UserList : public QGroupBox { Q_OBJECT private: