mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-01 08:53:24 +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;
|
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) :
|
ConfigureDiveComputerDialog::ConfigureDiveComputerDialog(QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
config(0),
|
config(0),
|
||||||
|
@ -53,6 +89,11 @@ ConfigureDiveComputerDialog::ConfigureDiveComputerDialog(QWidget *parent) :
|
||||||
ui.DiveComputerList->setCurrentRow(0);
|
ui.DiveComputerList->setCurrentRow(0);
|
||||||
on_DiveComputerList_currentRowChanged(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;
|
QSettings settings;
|
||||||
settings.beginGroup("ConfigureDiveComputerDialog");
|
settings.beginGroup("ConfigureDiveComputerDialog");
|
||||||
settings.beginGroup("ostc3GasTable");
|
settings.beginGroup("ostc3GasTable");
|
||||||
|
|
|
@ -6,6 +6,27 @@
|
||||||
#include "ui_configuredivecomputerdialog.h"
|
#include "ui_configuredivecomputerdialog.h"
|
||||||
#include "../libdivecomputer.h"
|
#include "../libdivecomputer.h"
|
||||||
#include "configuredivecomputer.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
|
class ConfigureDiveComputerDialog : public QDialog
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue