mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-19 22:35:27 +00:00
Create a delegate for gas type columns
This creates a delegate for the type column to choose the type value for gases that is less confusing then the raw value. Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
49401eec0b
commit
0e3a9328bc
2 changed files with 62 additions and 0 deletions
|
@ -28,6 +28,42 @@ struct mydescriptor {
|
|||
unsigned int model;
|
||||
};
|
||||
|
||||
GasTypeComboBoxItemDelegate::GasTypeComboBoxItemDelegate(QObject *parent, computer_type type) : QStyledItemDelegate(parent), type(type) { }
|
||||
GasTypeComboBoxItemDelegate::~GasTypeComboBoxItemDelegate() { }
|
||||
|
||||
QWidget* GasTypeComboBoxItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
|
||||
{
|
||||
// Create the combobox and populate it
|
||||
QComboBox *cb = new QComboBox(parent);
|
||||
cb->addItem(QString("Disabled"));
|
||||
if (type == OSTC3) {
|
||||
cb->addItem(QString("Fist"));
|
||||
cb->addItem(QString("Travel"));
|
||||
cb->addItem(QString("Deco"));
|
||||
} else if (type == OSTC) {
|
||||
cb->addItem(QString("Active"));
|
||||
cb->addItem(QString("Fist"));
|
||||
}
|
||||
return cb;
|
||||
}
|
||||
|
||||
void GasTypeComboBoxItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
|
||||
{
|
||||
if(QComboBox *cb = qobject_cast<QComboBox *>(editor))
|
||||
cb->setCurrentIndex(index.data(Qt::EditRole).toInt());
|
||||
else
|
||||
QStyledItemDelegate::setEditorData(editor, index);
|
||||
}
|
||||
|
||||
|
||||
void GasTypeComboBoxItemDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
|
||||
{
|
||||
if(QComboBox *cb = qobject_cast<QComboBox *>(editor))
|
||||
model->setData(index, cb->currentIndex(), Qt::EditRole);
|
||||
else
|
||||
QStyledItemDelegate::setModelData(editor, model, index);
|
||||
}
|
||||
|
||||
ConfigureDiveComputerDialog::ConfigureDiveComputerDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
config(0),
|
||||
|
@ -53,6 +89,11 @@ ConfigureDiveComputerDialog::ConfigureDiveComputerDialog(QWidget *parent) :
|
|||
ui.DiveComputerList->setCurrentRow(0);
|
||||
on_DiveComputerList_currentRowChanged(0);
|
||||
|
||||
ui.ostc3GasTable->setItemDelegateForColumn(3, new GasTypeComboBoxItemDelegate(this, GasTypeComboBoxItemDelegate::OSTC3));
|
||||
ui.ostc3DilTable->setItemDelegateForColumn(3, new GasTypeComboBoxItemDelegate(this, GasTypeComboBoxItemDelegate::OSTC3));
|
||||
ui.ostcGasTable->setItemDelegateForColumn(3, new GasTypeComboBoxItemDelegate(this, GasTypeComboBoxItemDelegate::OSTC));
|
||||
ui.ostcDilTable->setItemDelegateForColumn(3, new GasTypeComboBoxItemDelegate(this, GasTypeComboBoxItemDelegate::OSTC));
|
||||
|
||||
QSettings settings;
|
||||
settings.beginGroup("ConfigureDiveComputerDialog");
|
||||
settings.beginGroup("ostc3GasTable");
|
||||
|
|
|
@ -6,6 +6,27 @@
|
|||
#include "ui_configuredivecomputerdialog.h"
|
||||
#include "../libdivecomputer.h"
|
||||
#include "configuredivecomputer.h"
|
||||
#include <QStyledItemDelegate>
|
||||
|
||||
class GasTypeComboBoxItemDelegate : public QStyledItemDelegate
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum computer_type {
|
||||
OSTC3,
|
||||
OSTC,
|
||||
};
|
||||
|
||||
GasTypeComboBoxItemDelegate(QObject *parent = 0, computer_type type = OSTC3);
|
||||
~GasTypeComboBoxItemDelegate();
|
||||
|
||||
virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
|
||||
virtual void setEditorData(QWidget *editor, const QModelIndex &index) const;
|
||||
virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
|
||||
private:
|
||||
computer_type type;
|
||||
};
|
||||
|
||||
class ConfigureDiveComputerDialog : public QDialog
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue