mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
34f2a5ecc7
This Patch fixes the tab behavior on the QComboBox delegate. For a QComboBox, tab was being treated as 'cancel' action on edit, but since it will send a editingFinished() signal, and the Qt::Key_Return will also send a editingFinished() signal, I couldn't use that method and had to do a little hack around it. The code is mostly clean and works. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
76 lines
2.8 KiB
C++
76 lines
2.8 KiB
C++
#ifndef MODELDELEGATES_H
|
|
#define MODELDELEGATES_H
|
|
|
|
#include <QStyledItemDelegate>
|
|
class QComboBox;
|
|
class QPainter;
|
|
|
|
class StarWidgetsDelegate : public QStyledItemDelegate {
|
|
Q_OBJECT
|
|
public:
|
|
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;
|
|
private:
|
|
QWidget *parentWidget;
|
|
};
|
|
|
|
class ComboBoxDelegate : public QStyledItemDelegate{
|
|
Q_OBJECT
|
|
public:
|
|
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());
|
|
//HACK: try to get rid of this in the future.
|
|
void fakeActivation();
|
|
void fixTabBehavior();
|
|
virtual void revertModelData(QWidget* widget, QAbstractItemDelegate::EndEditHint hint) = 0;
|
|
protected:
|
|
QAbstractItemModel *model;
|
|
};
|
|
|
|
class TankInfoDelegate : public ComboBoxDelegate{
|
|
Q_OBJECT
|
|
public:
|
|
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);
|
|
};
|
|
|
|
class WSInfoDelegate : public ComboBoxDelegate{
|
|
Q_OBJECT
|
|
public:
|
|
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);
|
|
};
|
|
|
|
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);
|
|
};
|
|
|
|
/* 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;
|
|
};
|
|
|
|
#endif
|