#include "DatabasesTableModel.h" #include "PgDatabaseCatalogue.h" #include "PgDatabaseContainer.h" #include "PgAuthIdContainer.h" #include "ResultTableModelUtil.h" using namespace Pgsql; DatabasesTableModel::DatabasesTableModel(QObject *parent) : BaseTableModel(parent) { } void DatabasesTableModel::setDatabaseList(std::shared_ptr cat) { beginResetModel(); m_catalog = cat; m_databases = cat->databases(); endResetModel(); } QVariant DatabasesTableModel::headerData(int section, Qt::Orientation orientation, int role) const { QVariant v; if (orientation == Qt::Horizontal) { if (role == Qt::DisplayRole) { switch (section) { case NameCol: v = tr("Name"); break; case DbaCol: v = tr("Owner"); break; case EncodingCol: v = tr("Encoding"); break; case CollateCol: v = tr("Collation"); break; case CTypeCol: v = tr("CType"); break; case IsTemplateCol: v = tr("Is template"); break; case AllowConnCol: v = tr("Can connect"); break; case ConnLimitCol: v = tr("Conn. limit"); break; case TablespaceCol: v = tr("Tablespace"); break; case AclCol: v = tr("ACL"); break; } } } return v; } int DatabasesTableModel::rowCount(const QModelIndex &) const { int result = 0; if (m_databases) { result = m_databases->count(); } return result; } int DatabasesTableModel::columnCount(const QModelIndex &) const { int result = COL_COUNT; return result; } Oid DatabasesTableModel::getType(int column) const { Oid oid; switch (column) { case AllowConnCol: case IsTemplateCol: oid = BOOLOID; break; case ConnLimitCol: oid = INT4OID; break; case AclCol: case CollateCol: case CTypeCol: case EncodingCol: case DbaCol: case NameCol: case TablespaceCol: oid = VARCHAROID; break; default: oid = InvalidOid; } return oid; } QVariant DatabasesTableModel::getData(const QModelIndex &index) const { QVariant v; //if (!index.isValid()) if (m_databases) { const PgDatabase &db = m_databases->getByIdx(index.row()); switch (index.column()) { case NameCol: v = db.name; break; case DbaCol: v = getRoleDisplayString(m_catalog, db.dba); break; case EncodingCol: // todo lookup encoding name v = db.encoding; break; case CollateCol: v = db.collate; break; case CTypeCol: v = db.ctype; break; case IsTemplateCol: v = db.isTemplate; break; case AllowConnCol: v = db.allowConn; break; case ConnLimitCol: v = db.connLimit; break; case TablespaceCol: // todo lookup tablespace name v = db.tablespace; break; case AclCol: v = db.acl; break; } } return v; }