aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Fabio Bas2008-08-25 17:04:32 +0000
committerGravatar Fabio Bas2008-08-25 17:04:32 +0000
commit181a585d24521feecbd47ed997e57202c43cd8c9 (patch)
treea1cf623b6a14cae8f56ac89699181f8ffbd4732a /src
parentadded 3.4.1 splash to the site (diff)
downloadKVIrc-181a585d24521feecbd47ed997e57202c43cd8c9.tar.gz
KVIrc-181a585d24521feecbd47ed997e57202c43cd8c9.tar.bz2
KVIrc-181a585d24521feecbd47ed997e57202c43cd8c9.zip
added itemdelegate for topicwidget
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@2293 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
-rw-r--r--src/kvirc/ui/kvi_topicw.cpp22
-rw-r--r--src/kvirc/ui/kvi_topicw.h16
2 files changed, 33 insertions, 5 deletions
diff --git a/src/kvirc/ui/kvi_topicw.cpp b/src/kvirc/ui/kvi_topicw.cpp
index 94a8c2b05..fa1fa725f 100644
--- a/src/kvirc/ui/kvi_topicw.cpp
+++ b/src/kvirc/ui/kvi_topicw.cpp
@@ -72,9 +72,21 @@ int KviListBoxTopicItem::width ( const KviTalListWidget * lb ) const
return fm.width(KviMircCntrl::stripControlBytes(text()));
}
-void KviListBoxTopicItem::paint ( QPainter * p )
+QSize KviListBoxTopicItemDelegate::sizeHint(const QStyleOptionViewItem &option,const QModelIndex &index) const
{
- KviTopicWidget::paintColoredText(p,text(),listWidget()->palette(),height(listWidget()));
+ KviTalListWidget* listWidget = (KviTalListWidget*)parent();
+ QFontMetrics fm(listWidget->font());
+ KviListBoxTopicItem* item = (KviListBoxTopicItem*) listWidget->item(index.row());
+
+ return QSize(listWidget->width(), fm.height());
+}
+
+void KviListBoxTopicItemDelegate::paint(QPainter * p, const QStyleOptionViewItem & option, const QModelIndex & index) const
+{
+ KviTalListWidget* listWidget = (KviTalListWidget*)parent();
+ KviListBoxTopicItem* item = (KviListBoxTopicItem*) listWidget->item(index.row());
+
+ if(item) KviTopicWidget::paintColoredText(p,item->text(),option.palette,listWidget->visualItemRect(item).top());
}
@@ -99,7 +111,11 @@ KviTopicWidget::KviTopicWidget(QWidget * par,const char * name)
// m_pCompletionBox->setHScrollBarMode( KviTalListWidget::AlwaysOff );
m_pCompletionBox->setFrameStyle( QFrame::Box | QFrame::Plain );
m_pCompletionBox->setLineWidth( 1 );
- connect(m_pCompletionBox,SIGNAL(selected(int)),this,SLOT(complete(int)));
+
+ m_pItemDelegate = new KviListBoxTopicItemDelegate(m_pCompletionBox);
+ m_pCompletionBox->setItemDelegate(m_pItemDelegate);
+
+ connect(m_pCompletionBox,SIGNAL(itemSelectionChanged(int)),this,SLOT(complete(int)));
m_pCompletionBox->hide();
}
diff --git a/src/kvirc/ui/kvi_topicw.h b/src/kvirc/ui/kvi_topicw.h
index fdb871dfc..515d2bfb6 100644
--- a/src/kvirc/ui/kvi_topicw.h
+++ b/src/kvirc/ui/kvi_topicw.h
@@ -30,6 +30,7 @@
#include "kvi_app.h"
#include "kvi_input.h"
#include "kvi_tal_listwidget.h"
+#include "kvi_tal_itemdelegates.h"
#include <QFrame>
#include <QPushButton>
@@ -45,7 +46,7 @@ public:
KviListBoxTopicItem( KviTalListWidget * listbox = 0 , const QString & text = QString::null):KviTalListWidgetText(listbox,text) { ; };
virtual int width ( const KviTalListWidget * lb ) const;
protected:
- virtual void paint ( QPainter * p );
+ //virtual void paint ( QPainter * p );
};
@@ -54,7 +55,7 @@ class KVIRC_API KviTopicWidget : public QFrame
Q_OBJECT
Q_PROPERTY(int TransparencyCapable READ dummyRead)
friend class KviChannel;
-
+ friend class KviTalListWidget;
public:
KviTopicWidget(QWidget * par,const char * name);
~KviTopicWidget();
@@ -67,6 +68,7 @@ private:
QPushButton * m_pDiscard;
QPushButton * m_pHistory;
KviTalPopupMenu * m_pContextPopup;
+ QAbstractItemDelegate* m_pItemDelegate;
QChar getSubstituteChar(unsigned short control_code);
int xCursorPostionCalculation(int xInd);
KviInputEditor* m_pInput;
@@ -115,4 +117,14 @@ signals:
void topicSelected(const QString &szTopic);
};
+class KVIRC_API KviListBoxTopicItemDelegate : public KviTalIconAndRichTextItemDelegate
+{
+ Q_OBJECT
+public:
+ KviListBoxTopicItemDelegate(QAbstractItemView * pWidget=0)
+ : KviTalIconAndRichTextItemDelegate(pWidget) {};
+ ~KviListBoxTopicItemDelegate(){};
+ QSize sizeHint(const QStyleOptionViewItem &option,const QModelIndex &index) const;
+ void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const;
+};
#endif //_KVI_TOPICW_H_