1 #ifndef _KVI_TAL_LISTWIDGET_H_
2 #define _KVI_TAL_LISTWIDGET_H_
3 //=============================================================================
4 //
5 //   File : KviTalListWidget.h
6 //   Creation date : Mon May 05 2008 11:25:08 by Alessandro Carbone
7 //
8 //   This file is part of the KVIrc IRC client distribution
9 //   Copyright (C) 2008 Alessandro Carbone (elfonol at gmail dot com)
10 //
11 //   This program is FREE software. You can redistribute it and/or
12 //   modify it under the terms of the GNU General Public License
13 //   as published by the Free Software Foundation; either version 2
14 //   of the License, or (at your option) any later version.
15 //
16 //   This program is distributed in the HOPE that it will be USEFUL,
17 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
18 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19 //   See the GNU General Public License for more details.
20 //
21 //   You should have received a copy of the GNU General Public License
22 //   along with this program. If not, write to the Free Software Foundation,
23 //   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24 //
25 //=============================================================================
26 
27 #include "kvi_settings.h"
28 #include "KviTalIconAndRichTextItemDelegate.h"
29 
30 #include <QListWidget>
31 
32 class KviTalListWidgetItem;
33 
34 class KVILIB_API KviTalListWidget : public QListWidget
35 {
36 	Q_OBJECT
37 public:
38 	KviTalListWidget(QWidget * pParent, QString name, Qt::WindowType f = Qt::Widget);
KviTalListWidget(QWidget * pParent)39 	KviTalListWidget(QWidget * pParent)
40 	    : QListWidget(pParent){};
41 	~KviTalListWidget() = default;
42 
43 protected:
44 	bool event(QEvent * e) override;
45 	bool eventFilter(QObject * o, QEvent * e) override;
46 signals:
47 	void tipRequest(QListWidgetItem *, const QPoint &);
48 };
49 
50 class KVILIB_API KviTalListWidgetItem : public QListWidgetItem
51 {
52 public:
KviTalListWidgetItem()53 	KviTalListWidgetItem()
54 	    : QListWidgetItem(){};
KviTalListWidgetItem(KviTalListWidget * pParent)55 	KviTalListWidgetItem(KviTalListWidget * pParent)
56 	    : QListWidgetItem(pParent){};
KviTalListWidgetItem(KviTalListWidget * pParent,QString & label)57 	KviTalListWidgetItem(KviTalListWidget * pParent, QString & label)
58 	    : QListWidgetItem(label, pParent){};
listWidget()59 	KviTalListWidget * listWidget() { return (KviTalListWidget *)QListWidgetItem::listWidget(); };
60 	~KviTalListWidgetItem() = default;
61 };
62 
63 class KVILIB_API KviTalListWidgetText : public KviTalListWidgetItem
64 {
65 public:
66 	KviTalListWidgetText(KviTalListWidget * listbox, const QString & text = QString());
67 	KviTalListWidgetText(const QString & text = QString());
68 	KviTalListWidgetText(const KviTalListWidgetText &) = delete;
69 	~KviTalListWidgetText();
70 
71 	int height(const KviTalListWidget *) const;
72 	int width(const KviTalListWidget *) const;
73 
74 	int rtti() const;
75 	enum
76 	{
77 		RTTI = 1
78 	};
79 
80 protected:
81 	virtual void paint(QPainter *);
82 };
83 
84 class KVILIB_API KviTalListWidgetPixmap : public KviTalListWidgetItem
85 {
86 public:
87 	KviTalListWidgetPixmap(KviTalListWidget * listbox, const QPixmap &);
88 	KviTalListWidgetPixmap(const QPixmap &);
89 	KviTalListWidgetPixmap(KviTalListWidget * listbox, const QPixmap &, const QString &);
90 	KviTalListWidgetPixmap(const QPixmap &, const QString &);
91 	KviTalListWidgetPixmap(const KviTalListWidgetPixmap &) = delete;
92 	~KviTalListWidgetPixmap();
93 
pixmap()94 	const QPixmap * pixmap() const { return &pm; }
95 
96 	int height(const KviTalListWidget *) const;
97 	int width(const KviTalListWidget *) const;
98 
99 	int rtti() const;
100 	enum
101 	{
102 		RTTI = 2
103 	};
104 
105 protected:
106 	virtual void paint(QPainter *);
107 
108 private:
109 	QPixmap pm;
110 };
111 
112 #endif // _KVI_TAL_LISTWIDGET_H_
113