| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-11 21:44:05 -02:00
										 |  |  | class DiveListDelegate : public QStyledItemDelegate{ | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	DiveListDelegate(){} | 
					
						
							|  |  |  | 	QSize sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-02 19:27:36 -03:00
										 |  |  | class StarWidgetsDelegate : public QStyledItemDelegate { | 
					
						
							| 
									
										
										
										
											2013-04-27 12:27:27 -03:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2013-05-22 21:25:05 -07: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; | 
					
						
							| 
									
										
										
										
											2013-05-02 19:27:36 -03:00
										 |  |  | private: | 
					
						
							|  |  |  | 	QWidget *parentWidget; | 
					
						
							| 
									
										
										
										
											2013-04-27 12:27:27 -03:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2013-05-22 14:11:49 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-16 10:15:19 -03:00
										 |  |  | class ComboBoxDelegate : public QStyledItemDelegate{ | 
					
						
							| 
									
										
										
										
											2013-05-22 14:11:49 -03:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2013-06-16 10:15:19 -03:00
										 |  |  | 	explicit ComboBoxDelegate(QAbstractItemModel *model, QObject* parent = 0); | 
					
						
							| 
									
										
										
										
											2013-05-22 21:25:05 -07:00
										 |  |  | 	virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const; | 
					
						
							| 
									
										
										
										
											2013-05-23 15:33:20 -03:00
										 |  |  | 	virtual void setEditorData(QWidget* editor, const QModelIndex& index) const; | 
					
						
							| 
									
										
										
										
											2013-10-15 04:37:31 -07:00
										 |  |  | 	virtual void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const; | 
					
						
							|  |  |  | 	virtual bool eventFilter(QObject* object, QEvent* event); | 
					
						
							| 
									
										
										
										
											2013-07-16 19:13:58 -03:00
										 |  |  | public slots: | 
					
						
							| 
									
										
										
										
											2013-09-26 19:59:58 -03:00
										 |  |  | 	void testActivation(const QString& currString = QString()); | 
					
						
							| 
									
										
										
											
												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(); | 
					
						
							| 
									
										
										
										
											2013-07-18 11:53:47 -03:00
										 |  |  | 	virtual void revertModelData(QWidget* widget, QAbstractItemDelegate::EndEditHint hint) = 0; | 
					
						
							| 
									
										
										
										
											2013-06-16 10:15:19 -03:00
										 |  |  | protected: | 
					
						
							|  |  |  | 	QAbstractItemModel *model; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TankInfoDelegate : public ComboBoxDelegate{ | 
					
						
							|  |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	explicit TankInfoDelegate(QObject* parent = 0); | 
					
						
							| 
									
										
										
										
											2013-05-23 15:33:20 -03:00
										 |  |  | 	virtual void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const; | 
					
						
							| 
									
										
										
										
											2013-10-15 04:37:31 -07:00
										 |  |  | 	virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const; | 
					
						
							| 
									
										
										
										
											2013-07-18 10:24:02 -03:00
										 |  |  | public slots: | 
					
						
							|  |  |  | 	void revertModelData(QWidget* widget, QAbstractItemDelegate::EndEditHint hint); | 
					
						
							| 
									
										
										
										
											2013-05-22 14:11:49 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-16 10:15:19 -03:00
										 |  |  | class WSInfoDelegate : public ComboBoxDelegate{ | 
					
						
							| 
									
										
										
										
											2013-05-23 18:40:16 -07:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	explicit WSInfoDelegate(QObject* parent = 0); | 
					
						
							|  |  |  | 	virtual void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const; | 
					
						
							| 
									
										
										
										
											2013-10-15 04:37:31 -07:00
										 |  |  | 	virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const; | 
					
						
							| 
									
										
										
										
											2013-07-18 11:53:47 -03:00
										 |  |  | public slots: | 
					
						
							|  |  |  | 	void revertModelData(QWidget* widget, QAbstractItemDelegate::EndEditHint hint); | 
					
						
							| 
									
										
										
										
											2013-05-23 18:40:16 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-30 07:14:30 -03:00
										 |  |  | class AirTypesDelegate : public ComboBoxDelegate{ | 
					
						
							|  |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	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-10-03 17:50:40 +03:00
										 |  |  | /* ProfilePrintDelagate:
 | 
					
						
							|  |  |  |  * this delegate is used to modify the look of the table that is printed | 
					
						
							|  |  |  |  * bellow profiles. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | class ProfilePrintDelegate : public QStyledItemDelegate | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	explicit ProfilePrintDelegate(QObject *parent = 0); | 
					
						
							|  |  |  | 	void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-27 12:27:27 -03:00
										 |  |  | #endif
 |