HM-SPMS/platform/src/dbms/db_studio/CColumnModeDelegate.cpp
2025-03-13 10:45:13 +08:00

126 lines
3.8 KiB
C++

#include "CColumnModeDelegate.h"
CColumnModeDelegate::CColumnModeDelegate()
{
}
CColumnModeDelegate::~CColumnModeDelegate()
{
}
QWidget* CColumnModeDelegate::createEditor( QWidget *parent, const QStyleOptionViewItem &/*option*/, const QModelIndex &index ) const
{
int nCol = index.column();
if ( nCol == 4 )
{
QComboBox *pComboBox = new QComboBox(parent);
pComboBox->addItem("db+rdb");
pComboBox->addItem("db");
pComboBox->addItem("rdb");
return pComboBox;
}
else if ( nCol == 5 || nCol == 9 || nCol == 10 || nCol == 13 || nCol ==19 || nCol == 20 )
{
QComboBox *pComboBox = new QComboBox(parent);
pComboBox->addItem("yes");
pComboBox->addItem("no");
return pComboBox;
}
else if ( nCol == 16 )
{
QComboBox *pComboBox = new QComboBox(parent);
pComboBox->addItem("char");
pComboBox->addItem("decimal");
pComboBox->addItem("int");
pComboBox->addItem("float");
pComboBox->addItem("double");
return pComboBox;
}
else if ( nCol == 7 || nCol == 8 || nCol == 17 )
{
QSpinBox* pSpinBox = new QSpinBox(parent);
pSpinBox->setMaximum( 100000000 );
return pSpinBox;
}
else if ( nCol == 11 )
{
QComboBox *pComboBox = new QComboBox(parent);
pComboBox->addItem("");
pComboBox->addItem("normal");
pComboBox->addItem("unique");
return pComboBox;
}
else if ( nCol == 12 )
{
QComboBox *pComboBox = new QComboBox(parent);
pComboBox->addItem("asc");
pComboBox->addItem("desc");
return pComboBox;
}
else if ( nCol == 15 )
{
QComboBox *pComboBox = new QComboBox(parent);
pComboBox->addItem("param");
pComboBox->addItem("data");
return pComboBox;
}
else if ( nCol == 6 )
{
QComboBox *pComboBox = new QComboBox(parent);
pComboBox->addItem("uchar");
pComboBox->addItem("char");
pComboBox->addItem("ushort");
pComboBox->addItem("short");
pComboBox->addItem("uint");
pComboBox->addItem("int");
pComboBox->addItem("ulong");
pComboBox->addItem("long");
pComboBox->addItem("float");
pComboBox->addItem("double");
pComboBox->addItem("string");
return pComboBox;
}
return NULL;
}
void CColumnModeDelegate::setEditorData( QWidget *editor, const QModelIndex &index ) const
{
int nCol = index.column();
if ( nCol == 7 || nCol == 8 || nCol == 17 )
{
int nValue = index.model()->data(index).toInt();
QSpinBox* pSpinBox = static_cast<QSpinBox*>(editor);
pSpinBox->setValue( nValue );
}
else if ( nCol == 4 || nCol == 5 || nCol == 9 || nCol == 10 || nCol == 13 || nCol == 19 ||
nCol == 20 || nCol == 6 || nCol == 11 || nCol == 12 || nCol == 15 || nCol == 16 )
{
QString text = index.model()->data(index).toString();
QComboBox* pComboBox = static_cast<QComboBox*>(editor);
int tindex = pComboBox->findText(text);
pComboBox->setCurrentIndex(tindex);
}
}
void CColumnModeDelegate::setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const
{
int nCol = index.column();
if ( nCol == 7 || nCol == 8 || nCol == 17 )
{
QSpinBox* pSpinBox = static_cast<QSpinBox*>(editor);
model->setData(index, pSpinBox->value());
}
else if ( nCol == 4 || nCol == 5 || nCol == 9 || nCol == 10 || nCol == 13 || nCol == 19 ||
nCol == 20 || nCol == 6 || nCol == 11 || nCol == 12 || nCol == 15 || nCol == 16 )
{
QComboBox* pComboBox = static_cast<QComboBox*>(editor);
QString data = pComboBox->currentText();
model->setData(index, data);
}
}