summaryrefslogtreecommitdiffstats
path: root/src/sq_iconlistitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sq_iconlistitem.cpp')
-rw-r--r--src/sq_iconlistitem.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/sq_iconlistitem.cpp b/src/sq_iconlistitem.cpp
new file mode 100644
index 0000000..7bf06b3
--- /dev/null
+++ b/src/sq_iconlistitem.cpp
@@ -0,0 +1,105 @@
+/***************************************************************************
+ sq_iconlistitem.cpp - description
+ -------------------
+ begin : ??? ??? 19 2004
+ copyright : (C) 2004 by Baryshev Dmitry
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tqlistbox.h>
+#include <tqpainter.h>
+#include <tqbitmap.h>
+#include <tqpixmap.h>
+
+#include "sq_iconlistitem.h"
+
+SQ_IconListItem::SQ_IconListItem(TQListBox *listbox, const TQPixmap &pixmap, const TQString &text)
+ : TQListBoxItem(listbox)
+{
+ mPixmap = pixmap;
+
+ if(mPixmap.isNull())
+ mPixmap = defaultPixmap();
+
+ setText(text);
+ mMinimumWidth = 0;
+}
+
+int SQ_IconListItem::expandMinimumWidth( int width )
+{
+ mMinimumWidth = TQMAX(mMinimumWidth, width);
+
+ return mMinimumWidth;
+}
+
+const TQPixmap& SQ_IconListItem::defaultPixmap()
+{
+ static TQPixmap *pix=0;
+
+ if(pix == 0)
+ {
+ pix = new TQPixmap( 32, 32 );
+ TQPainter p(pix);
+ p.eraseRect(0, 0, pix->width(), pix->height());
+ p.setPen(TQt::red);
+ p.drawRect(0, 0, pix->width(), pix->height());
+ p.end();
+
+ TQBitmap mask(pix->width(), pix->height(), true);
+ mask.fill(TQt::black);
+ p.begin(&mask);
+ p.setPen(TQt::white);
+ p.drawRect(0, 0, pix->width(), pix->height());
+ p.end();
+
+ pix->setMask(mask);
+ }
+
+ return *pix;
+}
+
+void SQ_IconListItem::paint(TQPainter *painter)
+{
+ TQFontMetrics fm = painter->fontMetrics();
+ int ht = fm.boundingRect(0, 0, 0, 0, TQt::AlignCenter, text()).height();
+ int wp = mPixmap.width();
+ int hp = mPixmap.height();
+
+ painter->drawPixmap((mMinimumWidth-wp)/2, 5, mPixmap);
+
+ if(text().isEmpty() == false)
+ painter->drawText(0, hp+7, mMinimumWidth, ht, TQt::AlignCenter, text());
+}
+
+int SQ_IconListItem::height( const TQListBox *lb ) const
+{
+ if(text().isEmpty() == true)
+ return mPixmap.height();
+ else
+ {
+ int ht = lb->fontMetrics().boundingRect(0, 0, 0, 0, TQt::AlignCenter, text()).height();
+ return (mPixmap.height() + ht + 10);
+ }
+}
+
+int SQ_IconListItem::width( const TQListBox *lb ) const
+{
+ int wt = lb->fontMetrics().boundingRect(0, 0, 0, 0, TQt::AlignCenter, text()).width() + 10;
+ int wp = mPixmap.width() + 10;
+ int w = TQMAX(wt, wp);
+
+ return TQMAX(w, mMinimumWidth);
+}