46 lines
1.6 KiB
C++
46 lines
1.6 KiB
C++
#include "catalog/widgets/CatalogConstraintPage.h"
|
|
#include "catalog/models/ConstraintModel.h"
|
|
#include "CustomFilterSortModel.h"
|
|
#include "catalog/delegates/IconColumnDelegate.h"
|
|
#include "util/PgLabTableView.h"
|
|
#include "widgets/SqlCodePreview.h"
|
|
#include <QHeaderView>
|
|
#include <QStringBuilder>
|
|
|
|
CatalogConstraintPage::CatalogConstraintPage(QWidget *parent)
|
|
: CatalogPageBase(parent)
|
|
{
|
|
m_constraintModel = new ConstraintModel(this);
|
|
m_sortFilterProxy->setSourceModel(m_constraintModel);
|
|
|
|
m_tableView->setItemDelegateForColumn(0, new IconColumnDelegate(this));
|
|
m_tableView->horizontalHeader()->setSortIndicator(ConstraintModel::NameCol, Qt::AscendingOrder);
|
|
m_tableView->setSortingEnabled(true);
|
|
|
|
connect(m_tableView->selectionModel(), &QItemSelectionModel::selectionChanged,
|
|
this, &CatalogConstraintPage::tableView_selectionChanged);
|
|
connect(m_constraintModel, &ConstraintModel::modelReset, m_definitionView, &SqlCodePreview::clear);
|
|
}
|
|
|
|
void CatalogConstraintPage::catalogSet()
|
|
{
|
|
}
|
|
|
|
void CatalogConstraintPage::setFilter(const std::optional<PgClass> &cls)
|
|
{
|
|
m_constraintModel->setData(m_catalog, cls);
|
|
m_tableView->resizeColumnsToContents();
|
|
}
|
|
|
|
void CatalogConstraintPage::tableView_selectionChanged(const QItemSelection &/*selected*/, const QItemSelection &/*deselected*/)
|
|
{
|
|
auto rijen = selectedRows();
|
|
QString drops;
|
|
QString creates;
|
|
for (auto rij : rijen) {
|
|
const PgConstraint constraint = m_constraintModel->constraint(rij);
|
|
drops += constraint.dropSql() % "\n";
|
|
creates += constraint.createSql() % "\n";
|
|
}
|
|
m_definitionView->setPlainText(drops % "\n" % creates);
|
|
}
|