| 
									
										
										
										
											2013-04-27 12:27:27 -03:00
										 |  |  | #ifndef MODELDELEGATES_H
 | 
					
						
							|  |  |  | #define MODELDELEGATES_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-02 19:27:36 -03:00
										 |  |  | #include <QStyledItemDelegate>
 | 
					
						
							| 
									
										
										
										
											2013-07-16 15:31:44 -03:00
										 |  |  | class QComboBox; | 
					
						
							| 
									
										
										
										
											2013-10-03 17:50:40 +03:00
										 |  |  | class QPainter; | 
					
						
							| 
									
										
										
										
											2013-04-27 12:27:27 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | class DiveListDelegate : public QStyledItemDelegate { | 
					
						
							| 
									
										
										
										
											2013-12-11 21:44:05 -02:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	explicit DiveListDelegate(QObject *parent = 0) | 
					
						
							|  |  |  | 	    : QStyledItemDelegate(parent) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							| 
									
										
										
										
											2013-12-11 21:44:05 -02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-02 19:27:36 -03:00
										 |  |  | class StarWidgetsDelegate : public QStyledItemDelegate { | 
					
						
							| 
									
										
										
										
											2013-04-27 12:27:27 -03:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	explicit StarWidgetsDelegate(QWidget *parent = 0); | 
					
						
							|  |  |  | 	virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | 	virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							| 
									
										
										
										
											2014-10-15 15:30:49 +02:00
										 |  |  | 	const QSize& starSize() const; | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-02 19:27:36 -03:00
										 |  |  | private: | 
					
						
							|  |  |  | 	QWidget *parentWidget; | 
					
						
							| 
									
										
										
										
											2014-10-15 15:30:49 +02:00
										 |  |  | 	QSize minStarSize; | 
					
						
							| 
									
										
										
										
											2013-04-27 12:27:27 -03:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2013-05-22 14:11:49 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | class ComboBoxDelegate : public QStyledItemDelegate { | 
					
						
							| 
									
										
										
										
											2013-05-22 14:11:49 -03:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	explicit ComboBoxDelegate(QAbstractItemModel *model, QObject *parent = 0); | 
					
						
							|  |  |  | 	virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | 	virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; | 
					
						
							|  |  |  | 	virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | 	virtual bool eventFilter(QObject *object, QEvent *event); | 
					
						
							|  |  |  | public | 
					
						
							|  |  |  | slots: | 
					
						
							|  |  |  | 	void testActivation(const QString &currString = QString()); | 
					
						
							| 
									
										
										
										
											2014-04-24 15:17:30 -03:00
										 |  |  | 	void testActivation(const QModelIndex &currIndex); | 
					
						
							| 
									
										
										
											
												Make the Qt ComboBox behave in a Better Way
So, the ComboBox is a beast, and when used on a Delegate
it's very hard to get things right, wich is a pitty, because
I overly like qt. So:
1 - Combobox needs to show the popup when user press ↓ and ↑ keys
2 - Combobox needs to select when user press enter, not twice.
3 - Combobox neesds to select when user selects from the mouse, not
pressing enter after.
4 - Combobox needs to not mess with stuff when moving around.
Everything that I listed there works on a non-delegate combobox,
but for some reason, a delegate missed those, so I reimplemented
all. not nice, but now we have a code that will work, I hope.
*fingers crossed*
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
											
										 
											2013-09-25 16:37:24 -03:00
										 |  |  | 	//HACK: try to get rid of this in the future.
 | 
					
						
							|  |  |  | 	void fakeActivation(); | 
					
						
							| 
									
										
										
										
											2013-10-15 13:45:24 -03:00
										 |  |  | 	void fixTabBehavior(); | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	virtual void revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint) = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-16 10:15:19 -03:00
										 |  |  | protected: | 
					
						
							|  |  |  | 	QAbstractItemModel *model; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | class TankInfoDelegate : public ComboBoxDelegate { | 
					
						
							| 
									
										
										
										
											2013-06-16 10:15:19 -03:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	explicit TankInfoDelegate(QObject *parent = 0); | 
					
						
							|  |  |  | 	virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; | 
					
						
							|  |  |  | 	virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | public | 
					
						
							|  |  |  | slots: | 
					
						
							|  |  |  | 	void revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint); | 
					
						
							| 
									
										
										
										
											2013-05-22 14:11:49 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | class WSInfoDelegate : public ComboBoxDelegate { | 
					
						
							| 
									
										
										
										
											2013-05-23 18:40:16 -07:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	explicit WSInfoDelegate(QObject *parent = 0); | 
					
						
							|  |  |  | 	virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; | 
					
						
							|  |  |  | 	virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | public | 
					
						
							|  |  |  | slots: | 
					
						
							|  |  |  | 	void revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint); | 
					
						
							| 
									
										
										
										
											2013-05-23 18:40:16 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | class AirTypesDelegate : public ComboBoxDelegate { | 
					
						
							| 
									
										
										
										
											2013-08-30 07:14:30 -03:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	explicit AirTypesDelegate(QObject *parent = 0); | 
					
						
							|  |  |  | 	virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; | 
					
						
							|  |  |  | public | 
					
						
							|  |  |  | slots: | 
					
						
							|  |  |  | 	void revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint); | 
					
						
							| 
									
										
										
										
											2013-08-30 07:14:30 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-03 17:50:40 +03:00
										 |  |  | /* ProfilePrintDelagate:
 | 
					
						
							|  |  |  |  * this delegate is used to modify the look of the table that is printed | 
					
						
							|  |  |  |  * bellow profiles. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | class ProfilePrintDelegate : public QStyledItemDelegate { | 
					
						
							| 
									
										
										
										
											2013-10-03 17:50:40 +03:00
										 |  |  | public: | 
					
						
							|  |  |  | 	explicit ProfilePrintDelegate(QObject *parent = 0); | 
					
						
							|  |  |  | 	void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-11 17:42:43 -03:00
										 |  |  | class SpinBoxDelegate : public QStyledItemDelegate { | 
					
						
							|  |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-07-12 14:24:25 +02:00
										 |  |  | 	SpinBoxDelegate(int min, int max, int step, QObject *parent = 0); | 
					
						
							| 
									
										
										
										
											2014-07-11 17:42:43 -03:00
										 |  |  | 	virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  | 	int min; | 
					
						
							|  |  |  | 	int max; | 
					
						
							| 
									
										
										
										
											2014-07-12 14:24:25 +02:00
										 |  |  | 	int step; | 
					
						
							| 
									
										
										
										
											2014-07-11 17:42:43 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DoubleSpinBoxDelegate : public QStyledItemDelegate { | 
					
						
							|  |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-07-12 14:24:25 +02:00
										 |  |  | 	DoubleSpinBoxDelegate(double min, double max, double step, QObject *parent = 0); | 
					
						
							| 
									
										
										
										
											2014-07-11 17:42:43 -03:00
										 |  |  | 	virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2014-07-12 14:24:24 +02:00
										 |  |  | 	double min; | 
					
						
							|  |  |  | 	double max; | 
					
						
							| 
									
										
										
										
											2014-07-12 14:24:25 +02:00
										 |  |  | 	double step; | 
					
						
							| 
									
										
										
										
											2014-07-11 17:42:43 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-17 20:10:44 -03:00
										 |  |  | class HTMLDelegate : public ProfilePrintDelegate { | 
					
						
							|  |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-07-17 21:06:12 -03:00
										 |  |  | 	explicit HTMLDelegate(QObject *parent = 0); | 
					
						
							| 
									
										
										
										
											2014-07-17 20:10:44 -03:00
										 |  |  | 	virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | 	virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2014-02-11 19:14:46 +01:00
										 |  |  | #endif // MODELDELEGATES_H
 |