WIP: Added page showing list of functions.

Only list is shown, still working on details.
This commit is contained in:
eelke 2018-11-25 09:06:01 +01:00
parent 7db859737a
commit 840af1e0a9
19 changed files with 635 additions and 92 deletions

90
pglab/ProcTableModel.cpp Normal file
View file

@ -0,0 +1,90 @@
#include "ProcTableModel.h"
#include "PgDatabaseCatalog.h"
#include "PgProcContainer.h"
#include "CustomDataRole.h"
ProcTableModel::ProcTableModel(QObject *parent)
: QAbstractTableModel(parent)
{
}
QVariant ProcTableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
if (orientation == Qt::Horizontal) {
if (role == Qt::DisplayRole) {
switch (section) {
case NameCol: return tr("Name");
case NamespaceCol: return tr("Schema");
case OwnerCol: return tr("Owner");
case LangCol: return tr("Language");
case AclCol: return tr("ACL");
}
}
}
return QVariant();
}
void ProcTableModel::setCatalog(std::shared_ptr<const PgDatabaseCatalog> cat)
{
beginResetModel();
m_catalog = cat;
m_procs = cat->procs();
endResetModel();
}
int ProcTableModel::rowCount(const QModelIndex &) const
{
return m_procs ? static_cast<int>(m_procs->count()) : 0;
}
int ProcTableModel::columnCount(const QModelIndex &) const
{
return colCount;
}
QVariant ProcTableModel::data(const QModelIndex &index, int role) const
{
if (role == Qt::DisplayRole)
return getData(index);
else if (role == CustomDataTypeRole)
return getType(index.column());
// else if (role == FirstHiddenValue) {
// auto&& t = m_triggers->getByIdx(index.row());
// return t.relid; //
// }
return QVariant();
}
PgProc ProcTableModel::proc(int row) const
{
return m_procs->getByIdx(row);
}
Oid ProcTableModel::getType(int ) const
{
// switch (column) {
// case NameCol: return tr("Name");
// case NamespaceCol: return tr("Schema");
// case OwnerCol: return tr("Owner");
// case LangCol: return tr("Language");
// return Pgsql::bool_oid;
// }
return Pgsql::varchar_oid;
}
QVariant ProcTableModel::getData(const QModelIndex &index) const
{
auto&& t = m_procs->getByIdx(index.row());
switch (index.column()) {
case NameCol: return t.name;
case NamespaceCol: return t.schemaOid();
case OwnerCol: return t.owner;
case LangCol: return t.lang;
case AclCol: return t.acl;
}
return QVariant();
}