diff options
| author | 2010-06-12 15:56:53 +0000 | |
|---|---|---|
| committer | 2010-06-12 15:56:53 +0000 | |
| commit | 600255514ee47d6494046d9562d671d5fe31236c (patch) | |
| tree | 9c8abffe32635c31030690f61294a37dca65bde7 /src/modules/list | |
| parent | KVS objects improvements (diff) | |
| download | KVIrc-600255514ee47d6494046d9562d671d5fe31236c.tar.gz KVIrc-600255514ee47d6494046d9562d671d5fe31236c.tar.bz2 KVIrc-600255514ee47d6494046d9562d671d5fe31236c.zip | |
optimized a bit the list module (should fix #811)
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4454 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/list')
| -rw-r--r-- | src/modules/list/listwindow.cpp | 41 | ||||
| -rw-r--r-- | src/modules/list/listwindow.h | 3 |
2 files changed, 29 insertions, 15 deletions
diff --git a/src/modules/list/listwindow.cpp b/src/modules/list/listwindow.cpp index 290504b7c..d3c69b8b9 100644 --- a/src/modules/list/listwindow.cpp +++ b/src/modules/list/listwindow.cpp @@ -67,11 +67,8 @@ KviChannelTreeWidgetItemData::~KviChannelTreeWidgetItemData() KviChannelTreeWidgetItem::KviChannelTreeWidgetItem(QTreeWidget * v,KviChannelTreeWidgetItemData * pData) -: QTreeWidgetItem(v) +: QTreeWidgetItem(v), m_pData(pData) { - setText(0, pData->m_szChan); - setText(1, pData->m_szUsers); - setText(2, pData->m_szTopic); } KviChannelTreeWidgetItem::~KviChannelTreeWidgetItem() @@ -80,28 +77,40 @@ KviChannelTreeWidgetItem::~KviChannelTreeWidgetItem() int KviChannelTreeWidgetItem::width(const QFontMetrics & fm, const QTreeWidget *, int iColumn) const { - if(iColumn == 2) - return fm.width(KviMircCntrl::stripControlBytes(text(iColumn))); - else return fm.width(text(iColumn)); + switch(iColumn) + { + case 0: + //channel + return fm.width(m_pData->m_szChan); + break; + case 1: + //users + return fm.width(m_pData->m_szUsers.toInt()); + break; + case 2: + default: + //topic + return fm.width(KviMircCntrl::stripControlBytes(m_pData->m_szTopic)); + break; + } } bool KviChannelTreeWidgetItem::operator<(const QTreeWidgetItem & other) const { - int iSortCol = treeWidget()->sortColumn(); - switch(iSortCol) + switch(treeWidget()->sortColumn()) { case 0: //channel - return text(iSortCol).toUpper() < other.text(iSortCol).toUpper(); + return m_pData->m_szChan < ((KviChannelTreeWidgetItem*)&other)->itemdata()->m_szChan.toUpper(); break; case 1: //users - return text(iSortCol).toInt() < other.text(iSortCol).toInt(); + return m_pData->m_szUsers.toInt() < ((KviChannelTreeWidgetItem*)&other)->itemdata()->m_szUsers.toInt(); break; case 2: default: //topic - return KviMircCntrl::stripControlBytes(text(iSortCol)).toUpper() < KviMircCntrl::stripControlBytes(other.text(iSortCol)).toUpper(); + return KviMircCntrl::stripControlBytes(m_pData->m_szTopic.toUpper()) < KviMircCntrl::stripControlBytes(((KviChannelTreeWidgetItem*)&other)->itemdata()->m_szTopic.toUpper()); break; } } @@ -117,6 +126,8 @@ KviChannelTreeWidgetItemDelegate::~KviChannelTreeWidgetItemDelegate() void KviChannelTreeWidgetItemDelegate::paint(QPainter * p, const QStyleOptionViewItem & option, const QModelIndex & index) const { + KviChannelTreeWidgetItem* obj = static_cast<KviChannelTreeWidgetItem*>(index.internalPointer()); + if (option.state & QStyle::State_Selected) p->fillRect(option.rect, option.palette.brush( QPalette::Highlight ) ); @@ -127,16 +138,16 @@ void KviChannelTreeWidgetItemDelegate::paint(QPainter * p, const QStyleOptionVie { case 0: //channel - p->drawText(option.rect, index.data().toString()); + p->drawText(option.rect, obj->itemdata()->m_szChan); break; case 1: //users - p->drawText(option.rect, Qt::AlignHCenter, index.data().toString()); + p->drawText(option.rect, Qt::AlignHCenter, obj->itemdata()->m_szUsers); break; case 2: default: //topic - KviTopicWidget::paintColoredText(p,index.data().toString(),option.palette,option.rect); + KviTopicWidget::paintColoredText(p,obj->itemdata()->m_szTopic,option.palette,option.rect); break; } } diff --git a/src/modules/list/listwindow.h b/src/modules/list/listwindow.h index a7dcaedb5..9ef1afd7b 100644 --- a/src/modules/list/listwindow.h +++ b/src/modules/list/listwindow.h @@ -68,9 +68,12 @@ class KviChannelTreeWidgetItem : public QTreeWidgetItem public: KviChannelTreeWidgetItem(QTreeWidget * pWidget, KviChannelTreeWidgetItemData * pData); ~KviChannelTreeWidgetItem(); +private: + KviChannelTreeWidgetItemData * m_pData; public: int width (const QFontMetrics & fm, const QTreeWidget * pWidget, int iColumn) const; bool operator<(const QTreeWidgetItem & other) const; + inline KviChannelTreeWidgetItemData * itemdata() { return m_pData; }; }; class KviListWindow : public KviWindow, public KviExternalServerDataParser |
