Type selection for parameters is now sorted and limited to non array and non composite types.

This commit is contained in:
eelke 2017-02-20 06:44:15 +01:00
parent dd19077281
commit 0a809a7288
2 changed files with 15 additions and 5 deletions

View file

@ -1,5 +1,6 @@
#include "typeselectionitemmodel.h" #include "typeselectionitemmodel.h"
#include "PgTypeContainer.h" #include "PgTypeContainer.h"
#include <algorithm>
TypeSelectionItemModel::TypeSelectionItemModel(QObject *parent) TypeSelectionItemModel::TypeSelectionItemModel(QObject *parent)
: QAbstractListModel(parent) : QAbstractListModel(parent)
@ -8,7 +9,7 @@ TypeSelectionItemModel::TypeSelectionItemModel(QObject *parent)
int TypeSelectionItemModel::rowCount(const QModelIndex &parent) const int TypeSelectionItemModel::rowCount(const QModelIndex &parent) const
{ {
int result = m_types->count(); int result = m_types.size();
// if (!parent.isValid()) { // if (!parent.isValid()) {
// } // }
@ -32,9 +33,9 @@ QVariant TypeSelectionItemModel::data(const QModelIndex &index, int role) const
int row = index.row(); int row = index.row();
int column = index.column(); int column = index.column();
if (role == Qt::DisplayRole) { if (role == Qt::DisplayRole) {
const PgType &tp = m_types->getByIdx(row); //const PgType &tp = m_types->getByIdx(row);
if (column == 0) { if (column == 0) {
result = tp.typname; result = m_types[row]; //tp.typname;
// switch (row) { // switch (row) {
// case 0: result = "integer"; break; // case 0: result = "integer"; break;
@ -58,7 +59,14 @@ QVariant TypeSelectionItemModel::data(const QModelIndex &index, int role) const
void TypeSelectionItemModel::setTypeList(const PgTypeContainer* types) void TypeSelectionItemModel::setTypeList(const PgTypeContainer* types)
{ {
beginResetModel(); beginResetModel();
m_types = types; m_types.clear();
for (const auto &e : *types) {
if (e.typcategory != 'A'
&& e.typtype != 'c') {
m_types.push_back(e.typname);
}
}
std::sort(m_types.begin(), m_types.end());
//emit dataChanged(this->createIndex(0, 0), this->createIndex(types->count(), 0), QVector<int>() << Qt::DisplayRole); //emit dataChanged(this->createIndex(0, 0), this->createIndex(types->count(), 0), QVector<int>() << Qt::DisplayRole);
endResetModel(); endResetModel();
} }

View file

@ -2,6 +2,7 @@
#define TYPESELECTIONITEMMODEL_H #define TYPESELECTIONITEMMODEL_H
#include <QAbstractListModel> #include <QAbstractListModel>
#include <vector>
class PgTypeContainer; class PgTypeContainer;
@ -19,7 +20,8 @@ public:
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
private: private:
const PgTypeContainer* m_types; // const PgTypeContainer* m_types;
std::vector<QString> m_types;
}; };
#endif // TYPESELECTIONITEMMODEL_H #endif // TYPESELECTIONITEMMODEL_H