From 84835e9ed81d215511a0393d371ff9bf3ddf4953 Mon Sep 17 00:00:00 2001 From: Kevin Smith Date: Fri, 20 Aug 2010 17:03:24 +0100 Subject: Sort bookmark list. Resolves: #454 diff --git a/Swift/QtUI/ChatList/ChatListGroupItem.h b/Swift/QtUI/ChatList/ChatListGroupItem.h index 2fc99df..389410a 100644 --- a/Swift/QtUI/ChatList/ChatListGroupItem.h +++ b/Swift/QtUI/ChatList/ChatListGroupItem.h @@ -14,13 +14,19 @@ namespace Swift { class ChatListGroupItem : public ChatListItem { public: ChatListGroupItem(const QString& name, ChatListGroupItem* parent) : ChatListItem(parent), name_(name) {}; - void addItem(ChatListItem* item) {items_.push_back(item);}; + void addItem(ChatListItem* item) {items_.push_back(item); qStableSort(items_.begin(), items_.end(), pointerItemLessThan);}; void remove(int index) {items_.removeAt(index);}; int rowCount() {return items_.size();}; ChatListItem* item(int i) {return items_[i];}; int row(ChatListItem* item) {return items_.indexOf(item);}; - QVariant data(int role) {return (role == Qt::DisplayRole) ? name_ : QVariant();}; + QVariant data(int role) const {return (role == Qt::DisplayRole) ? name_ : QVariant();}; private: + static bool pointerItemLessThan(const ChatListItem* first, const ChatListItem* second) { + QString myName = first->data(Qt::DisplayRole).toString().toLower(); + QString theirName = second->data(Qt::DisplayRole).toString().toLower(); + return myName < theirName; + } + QString name_; QList items_; }; diff --git a/Swift/QtUI/ChatList/ChatListItem.h b/Swift/QtUI/ChatList/ChatListItem.h index 57a85da..e7be614 100644 --- a/Swift/QtUI/ChatList/ChatListItem.h +++ b/Swift/QtUI/ChatList/ChatListItem.h @@ -7,6 +7,7 @@ #pragma once #include +#include namespace Swift { class ChatListGroupItem; @@ -16,7 +17,7 @@ namespace Swift { virtual ~ChatListItem() {} ChatListGroupItem* parent() {return parent_;}; - virtual QVariant data(int role) = 0; + virtual QVariant data(int role) const = 0; private: ChatListGroupItem* parent_; diff --git a/Swift/QtUI/ChatList/ChatListMUCItem.cpp b/Swift/QtUI/ChatList/ChatListMUCItem.cpp index 370956e..e374ed5 100644 --- a/Swift/QtUI/ChatList/ChatListMUCItem.cpp +++ b/Swift/QtUI/ChatList/ChatListMUCItem.cpp @@ -17,7 +17,7 @@ const MUCBookmark& ChatListMUCItem::getBookmark() { return bookmark_; } -QVariant ChatListMUCItem::data(int role) { +QVariant ChatListMUCItem::data(int role) const { switch (role) { case Qt::DisplayRole: return P2QSTRING(bookmark_.getName()); case DetailTextRole: return P2QSTRING(bookmark_.getRoom().toString()); diff --git a/Swift/QtUI/ChatList/ChatListMUCItem.h b/Swift/QtUI/ChatList/ChatListMUCItem.h index f5e3242..068f5d6 100644 --- a/Swift/QtUI/ChatList/ChatListMUCItem.h +++ b/Swift/QtUI/ChatList/ChatListMUCItem.h @@ -25,7 +25,7 @@ namespace Swift { public: ChatListMUCItem(const MUCBookmark& bookmark, ChatListGroupItem* parent); const MUCBookmark& getBookmark(); - QVariant data(int role); + QVariant data(int role) const; private: MUCBookmark bookmark_; QList items_; -- cgit v0.10.2-6-g49f6