summaryrefslogtreecommitdiffstats
path: root/src/kvilib/tal/kvi_tal_listbox.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-24 02:13:59 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-24 02:13:59 +0000
commita6d58bb6052ac8cb01805a48c4ad2f129126116f (patch)
treedd867a099fcbb263a8009a9fb22695b87855dad6 /src/kvilib/tal/kvi_tal_listbox.cpp
downloadkvirc-a6d58bb6052ac8cb01805a48c4ad2f129126116f.tar.gz
kvirc-a6d58bb6052ac8cb01805a48c4ad2f129126116f.zip
Added KDE3 version of kvirc
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kvirc@1095341 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/kvilib/tal/kvi_tal_listbox.cpp')
-rw-r--r--src/kvilib/tal/kvi_tal_listbox.cpp513
1 files changed, 513 insertions, 0 deletions
diff --git a/src/kvilib/tal/kvi_tal_listbox.cpp b/src/kvilib/tal/kvi_tal_listbox.cpp
new file mode 100644
index 0000000..f5fcc08
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_listbox.cpp
@@ -0,0 +1,513 @@
+//=============================================================================
+//
+// File : kvi_tal_listbox.cpp
+// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2007 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, write to the Free Software Foundation,
+// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+#include "kvi_tal_listbox.h"
+
+#ifdef COMPILE_USE_QT4
+ #include <qpainter.h>
+ #include <qstyle.h>
+ #include <qapplication.h>
+
+ KviTalListBox::KviTalListBox(QWidget * pParent,Qt::WFlags f)
+ : Q3ListBox(pParent,0,f)
+ {
+ connect(this,SIGNAL(highlighted(Q3ListBoxItem *)),this,SLOT(redirect_highlighted(Q3ListBoxItem *)));
+ connect(this,SIGNAL(selected(Q3ListBoxItem *)),this,SLOT(redirect_selected(Q3ListBoxItem *)));
+ connect(this,SIGNAL(selectionChanged(Q3ListBoxItem *)),this,SLOT(redirect_selectionChanged(Q3ListBoxItem *)));
+ connect(this,SIGNAL(currentChanged(Q3ListBoxItem *)),this,SLOT(redirect_currentChanged(Q3ListBoxItem *)));
+ connect(this,SIGNAL(clicked(Q3ListBoxItem *)),this,SLOT(redirect_clicked(Q3ListBoxItem *)));
+ connect(this,SIGNAL(clicked(Q3ListBoxItem *,const QPoint &)),this,SLOT(redirect_clicked(Q3ListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(pressed(Q3ListBoxItem *)),this,SLOT(redirect_pressed(Q3ListBoxItem *)));
+ connect(this,SIGNAL(pressed(Q3ListBoxItem *,const QPoint &)),this,SLOT(redirect_pressed(Q3ListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(doubleClicked(Q3ListBoxItem *)),this,SLOT(redirect_doubleClicked(Q3ListBoxItem *)));
+ connect(this,SIGNAL(returnPressed(Q3ListBoxItem *)),this,SLOT(redirect_returnPressed(Q3ListBoxItem *)));
+ connect(this,SIGNAL(rightButtonClicked(Q3ListBoxItem *, const QPoint &)),this,SLOT(redirect_rightButtonClicked(Q3ListBoxItem *, const QPoint &)));
+ connect(this,SIGNAL(rightButtonPressed(Q3ListBoxItem *, const QPoint &)),this,SLOT(redirect_rightButtonPressed(Q3ListBoxItem *, const QPoint &)));
+ connect(this,SIGNAL(mouseButtonPressed(int,Q3ListBoxItem *,const QPoint &)),this,SLOT(redirect_mouseButtonPressed(int,Q3ListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(mouseButtonClicked(int,Q3ListBoxItem *,const QPoint &)),this,SLOT(redirect_mouseButtonClicked(int,Q3ListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(contextMenuRequested(Q3ListBoxItem *,const QPoint &)),this,SLOT(redirect_contextMenuRequested(Q3ListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(onItem(Q3ListBoxItem *)),this,SLOT(redirect_onItem(Q3ListBoxItem *)));
+ }
+
+ void KviTalListBox::redirect_highlighted(Q3ListBoxItem *item)
+ {
+ emit highlighted((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_selected(Q3ListBoxItem *item)
+ {
+ emit selected((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_selectionChanged(Q3ListBoxItem * item)
+ {
+ emit selectionChanged((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_currentChanged(Q3ListBoxItem * item)
+ {
+ emit currentChanged((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_clicked(Q3ListBoxItem * item)
+ {
+ emit clicked((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_clicked(Q3ListBoxItem * item,const QPoint & pnt)
+ {
+ emit clicked((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_pressed(Q3ListBoxItem * item)
+ {
+ emit pressed((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_pressed(Q3ListBoxItem * item,const QPoint & pnt)
+ {
+ emit pressed((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_doubleClicked(Q3ListBoxItem * item)
+ {
+ emit doubleClicked((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_returnPressed(Q3ListBoxItem * item)
+ {
+ emit returnPressed((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_rightButtonClicked(Q3ListBoxItem * item, const QPoint &pnt)
+ {
+ emit rightButtonClicked((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_rightButtonPressed(Q3ListBoxItem * item, const QPoint &pnt)
+ {
+ emit rightButtonPressed((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_mouseButtonPressed(int button,Q3ListBoxItem * item,const QPoint & pos)
+ {
+ emit mouseButtonPressed(button,(KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_mouseButtonClicked(int button,Q3ListBoxItem * item,const QPoint & pos)
+ {
+ emit mouseButtonClicked(button,(KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_contextMenuRequested(Q3ListBoxItem * item,const QPoint & pos)
+ {
+ emit contextMenuRequested((KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_onItem(Q3ListBoxItem * i)
+ {
+ emit onItem((KviTalListBoxItem *)i);
+ }
+
+ KviTalListBoxText::KviTalListBoxText(KviTalListBox *listbox, const QString &text)
+ :KviTalListBoxItem(listbox)
+ {
+ setText(text);
+ }
+
+ KviTalListBoxText::KviTalListBoxText(const QString &text)
+ :KviTalListBoxItem()
+ {
+ setText(text);
+ }
+
+ KviTalListBoxText::KviTalListBoxText(KviTalListBox* listbox, const QString &text, KviTalListBoxItem *after)
+ : KviTalListBoxItem(listbox, after)
+ {
+ setText(text);
+ }
+
+ KviTalListBoxText::~KviTalListBoxText()
+ {
+ }
+
+ void KviTalListBoxText::paint(QPainter *painter)
+ {
+ int itemHeight = height(listBox());
+ QFontMetrics fm = painter->fontMetrics();
+ int yPos = ((itemHeight - fm.height()) / 2) + fm.ascent();
+ painter->drawText(3, yPos, text());
+ }
+
+ int KviTalListBoxText::height(const KviTalListBox* lb) const
+ {
+ int h = lb ? lb->fontMetrics().lineSpacing() + 2 : 0;
+ return qMax(h, QApplication::globalStrut().height());
+ }
+
+ int KviTalListBoxText::width(const KviTalListBox* lb) const
+ {
+ int w = lb ? lb->fontMetrics().width(text()) + 6 : 0;
+ return qMax(w, QApplication::globalStrut().width());
+ }
+
+ int KviTalListBoxText::rtti() const
+ {
+ return RTTI;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap &pixmap)
+ : KviTalListBoxItem(listbox)
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(const QPixmap &pixmap)
+ : KviTalListBoxItem()
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap &pixmap, KviTalListBoxItem *after)
+ : KviTalListBoxItem(listbox, after)
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::~KviTalListBoxPixmap()
+ {
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap &pix, const QString& text)
+ : KviTalListBoxItem(listbox)
+ {
+ pm = pix;
+ setText(text);
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(const QPixmap & pix, const QString& text)
+ : KviTalListBoxItem()
+ {
+ pm = pix;
+ setText(text);
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap(KviTalListBox* listbox, const QPixmap & pix, const QString& text,
+ KviTalListBoxItem *after)
+ : KviTalListBoxItem(listbox, after)
+ {
+ pm = pix;
+ setText(text);
+ }
+
+ void KviTalListBoxPixmap::paint(QPainter *painter)
+ {
+ int itemHeight = height(listBox());
+ int yPos;
+
+ const QPixmap *pm = pixmap();
+ if (pm && ! pm->isNull()) {
+ yPos = (itemHeight - pm->height()) / 2;
+ painter->drawPixmap(3, yPos, *pm);
+ }
+
+ if (!text().isEmpty()) {
+ QFontMetrics fm = painter->fontMetrics();
+ yPos = ((itemHeight - fm.height()) / 2) + fm.ascent();
+ painter->drawText(pm->width() + 5, yPos, text());
+ }
+ }
+
+ int KviTalListBoxPixmap::height(const KviTalListBox* lb) const
+ {
+ int h;
+ if (text().isEmpty())
+ h = pm.height();
+ else
+ h = qMax(pm.height(), lb->fontMetrics().lineSpacing() + 2);
+ return qMax(h, QApplication::globalStrut().height());
+ }
+
+ int KviTalListBoxPixmap::width(const KviTalListBox* lb) const
+ {
+ if (text().isEmpty())
+ return qMax(pm.width() + 6, QApplication::globalStrut().width());
+ return qMax(pm.width() + lb->fontMetrics().width(text()) + 6,
+ QApplication::globalStrut().width());
+ }
+
+ int KviTalListBoxPixmap::rtti() const
+ {
+ return RTTI;
+ }
+
+
+ #include "kvi_tal_listbox_qt4.moc"
+#else
+ #include <qpainter.h>
+ #include <qstyle.h>
+ #include <qapplication.h>
+
+
+ KviTalListBox::KviTalListBox(QWidget * pParent,Qt::WFlags f)
+ : QListBox(pParent,0,f)
+ {
+ connect(this,SIGNAL(highlighted(QListBoxItem *)),this,SLOT(redirect_highlighted(QListBoxItem *)));
+ connect(this,SIGNAL(selected(QListBoxItem *)),this,SLOT(redirect_selected(QListBoxItem *)));
+ connect(this,SIGNAL(selectionChanged(QListBoxItem *)),this,SLOT(redirect_selectionChanged(QListBoxItem *)));
+ connect(this,SIGNAL(currentChanged(QListBoxItem *)),this,SLOT(redirect_currentChanged(QListBoxItem *)));
+ connect(this,SIGNAL(clicked(QListBoxItem *)),this,SLOT(redirect_clicked(QListBoxItem *)));
+ connect(this,SIGNAL(clicked(QListBoxItem *,const QPoint &)),this,SLOT(redirect_clicked(QListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(pressed(QListBoxItem *)),this,SLOT(redirect_pressed(QListBoxItem *)));
+ connect(this,SIGNAL(pressed(QListBoxItem *,const QPoint &)),this,SLOT(redirect_pressed(QListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(doubleClicked(QListBoxItem *)),this,SLOT(redirect_doubleClicked(QListBoxItem *)));
+ connect(this,SIGNAL(returnPressed(QListBoxItem *)),this,SLOT(redirect_returnPressed(QListBoxItem *)));
+ connect(this,SIGNAL(rightButtonClicked(QListBoxItem *, const QPoint &)),this,SLOT(redirect_rightButtonClicked(QListBoxItem *, const QPoint &)));
+ connect(this,SIGNAL(rightButtonPressed(QListBoxItem *, const QPoint &)),this,SLOT(redirect_rightButtonPressed(QListBoxItem *, const QPoint &)));
+ connect(this,SIGNAL(mouseButtonPressed(int,QListBoxItem *,const QPoint &)),this,SLOT(redirect_mouseButtonPressed(int,QListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(mouseButtonClicked(int,QListBoxItem *,const QPoint &)),this,SLOT(redirect_mouseButtonClicked(int,QListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(contextMenuRequested(QListBoxItem *,const QPoint &)),this,SLOT(redirect_contextMenuRequested(QListBoxItem *,const QPoint &)));
+ connect(this,SIGNAL(onItem(QListBoxItem *)),this,SLOT(redirect_onItem(QListBoxItem *)));
+ }
+
+ void KviTalListBox::redirect_highlighted(QListBoxItem *item)
+ {
+ emit highlighted((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_selected(QListBoxItem *item)
+ {
+ emit selected((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_selectionChanged(QListBoxItem * item)
+ {
+ emit selectionChanged((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_currentChanged(QListBoxItem * item)
+ {
+ emit currentChanged((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_clicked(QListBoxItem * item)
+ {
+ emit clicked((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_clicked(QListBoxItem * item,const QPoint & pnt)
+ {
+ emit clicked((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_pressed(QListBoxItem * item)
+ {
+ emit pressed((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_pressed(QListBoxItem * item,const QPoint & pnt)
+ {
+ emit pressed((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_doubleClicked(QListBoxItem * item)
+ {
+ emit doubleClicked((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_returnPressed(QListBoxItem * item)
+ {
+ emit returnPressed((KviTalListBoxItem *)item);
+ }
+
+ void KviTalListBox::redirect_rightButtonClicked(QListBoxItem * item, const QPoint &pnt)
+ {
+ emit rightButtonClicked((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_rightButtonPressed(QListBoxItem * item, const QPoint &pnt)
+ {
+ emit rightButtonPressed((KviTalListBoxItem *)item,pnt);
+ }
+
+ void KviTalListBox::redirect_mouseButtonPressed(int button,QListBoxItem * item,const QPoint & pos)
+ {
+ emit mouseButtonPressed(button,(KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_mouseButtonClicked(int button,QListBoxItem * item,const QPoint & pos)
+ {
+ emit mouseButtonClicked(button,(KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_contextMenuRequested(QListBoxItem * item,const QPoint & pos)
+ {
+ emit contextMenuRequested((KviTalListBoxItem *)item,pos);
+ }
+
+ void KviTalListBox::redirect_onItem(QListBoxItem * i)
+ {
+ emit onItem((KviTalListBoxItem *)i);
+ }
+
+ KviTalListBoxText::KviTalListBoxText( KviTalListBox *listbox, const QString &text )
+ :KviTalListBoxItem( listbox )
+ {
+ setText( text );
+ }
+
+ KviTalListBoxText::KviTalListBoxText( const QString &text )
+ :KviTalListBoxItem()
+ {
+ setText( text );
+ }
+
+ KviTalListBoxText::KviTalListBoxText( KviTalListBox* listbox, const QString &text, KviTalListBoxItem *after )
+ : KviTalListBoxItem( listbox, after )
+ {
+ setText( text );
+ }
+
+ KviTalListBoxText::~KviTalListBoxText()
+ {
+ }
+
+ void KviTalListBoxText::paint( QPainter *painter )
+ {
+ int itemHeight = height( listBox() );
+ QFontMetrics fm = painter->fontMetrics();
+ int yPos = ( ( itemHeight - fm.height() ) / 2 ) + fm.ascent();
+ painter->drawText( 3, yPos, text() );
+ }
+
+ int KviTalListBoxText::height( const KviTalListBox* lb ) const
+ {
+ int h = lb ? lb->fontMetrics().lineSpacing() + 2 : 0;
+ return QMAX( h, QApplication::globalStrut().height() );
+ }
+
+ int KviTalListBoxText::width( const KviTalListBox* lb ) const
+ {
+ int w = lb ? lb->fontMetrics().width( text() ) + 6 : 0;
+ return QMAX( w, QApplication::globalStrut().width() );
+ }
+
+ int KviTalListBoxText::RTTI = 1;
+
+ int KviTalListBoxText::rtti() const
+ {
+ return RTTI;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap &pixmap )
+ : KviTalListBoxItem( listbox )
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( const QPixmap &pixmap )
+ : KviTalListBoxItem()
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap &pixmap, KviTalListBoxItem *after )
+ : KviTalListBoxItem( listbox, after )
+ {
+ pm = pixmap;
+ }
+
+ KviTalListBoxPixmap::~KviTalListBoxPixmap()
+ {
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap &pix, const QString& text)
+ : KviTalListBoxItem( listbox )
+ {
+ pm = pix;
+ setText( text );
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( const QPixmap & pix, const QString& text)
+ : KviTalListBoxItem()
+ {
+ pm = pix;
+ setText( text );
+ }
+
+ KviTalListBoxPixmap::KviTalListBoxPixmap( KviTalListBox* listbox, const QPixmap & pix, const QString& text,
+ KviTalListBoxItem *after )
+ : KviTalListBoxItem( listbox, after )
+ {
+ pm = pix;
+ setText( text );
+ }
+
+ void KviTalListBoxPixmap::paint( QPainter *painter )
+ {
+ int itemHeight = height( listBox() );
+ int yPos;
+
+ const QPixmap *pm = pixmap();
+ if ( pm && ! pm->isNull() ) {
+ yPos = ( itemHeight - pm->height() ) / 2;
+ painter->drawPixmap( 3, yPos, *pm);
+ }
+
+ if ( !text().isEmpty() ) {
+ QFontMetrics fm = painter->fontMetrics();
+ yPos = ( ( itemHeight - fm.height() ) / 2 ) + fm.ascent();
+ painter->drawText( pm->width() + 5, yPos, text() );
+ }
+ }
+
+ int KviTalListBoxPixmap::height( const KviTalListBox* lb ) const
+ {
+ int h;
+ if ( text().isEmpty() )
+ h = pm.height();
+ else
+ h = QMAX( pm.height(), lb->fontMetrics().lineSpacing() + 2 );
+ return QMAX( h, QApplication::globalStrut().height() );
+ }
+
+ int KviTalListBoxPixmap::width( const KviTalListBox* lb ) const
+ {
+ if ( text().isEmpty() )
+ return QMAX( pm.width() + 6, QApplication::globalStrut().width() );
+ return QMAX( pm.width() + lb->fontMetrics().width( text() ) + 6,
+ QApplication::globalStrut().width() );
+ }
+
+ int KviTalListBoxPixmap::RTTI = 2;
+
+ int KviTalListBoxPixmap::rtti() const
+ {
+ return RTTI;
+ }
+
+ #include "kvi_tal_listbox_qt3.moc"
+#endif
+