aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Fabio Bas2010-06-12 15:56:53 +0000
committerGravatar Fabio Bas2010-06-12 15:56:53 +0000
commit600255514ee47d6494046d9562d671d5fe31236c (patch)
tree9c8abffe32635c31030690f61294a37dca65bde7 /src
parentKVS objects improvements (diff)
downloadKVIrc-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')
-rw-r--r--src/modules/list/listwindow.cpp41
-rw-r--r--src/modules/list/listwindow.h3
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