2018-10-07 19:40:06 +02:00
|
|
|
|
#include "TriggerPage.h"
|
|
|
|
|
|
#include "ResultTableModelUtil.h"
|
|
|
|
|
|
#include "UserConfiguration.h"
|
|
|
|
|
|
#include <QTableView>
|
|
|
|
|
|
#include "PgClass.h"
|
|
|
|
|
|
#include "SqlCodePreview.h"
|
|
|
|
|
|
#include "TriggerTableModel.h"
|
|
|
|
|
|
#include "CustomFilterSortModel.h"
|
|
|
|
|
|
#include "CustomDataRole.h"
|
|
|
|
|
|
#include "PgLabItemDelegate.h"
|
|
|
|
|
|
#include <QStringBuilder>
|
|
|
|
|
|
#include <boost/container/flat_set.hpp>
|
|
|
|
|
|
|
|
|
|
|
|
TriggerPage::TriggerPage(QWidget *parent)
|
|
|
|
|
|
: QSplitter(Qt::Vertical, parent)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_tableView = new QTableView(this);
|
|
|
|
|
|
m_definitionView = new SqlCodePreview(this);
|
|
|
|
|
|
addWidget(m_tableView);
|
|
|
|
|
|
addWidget(m_definitionView);
|
|
|
|
|
|
|
|
|
|
|
|
SetTableViewDefault(m_tableView);
|
|
|
|
|
|
|
|
|
|
|
|
m_model = new TriggerTableModel(this);
|
|
|
|
|
|
m_sortFilterProxy = new CustomFilterSortModel(this);
|
|
|
|
|
|
m_sortFilterProxy->setSourceModel(m_model);
|
|
|
|
|
|
m_tableView->setModel(m_sortFilterProxy);
|
|
|
|
|
|
m_tableView->setSortingEnabled(true);
|
2018-10-21 13:47:38 +02:00
|
|
|
|
m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
2018-10-07 19:40:06 +02:00
|
|
|
|
|
|
|
|
|
|
auto item_delegate = new PgLabItemDelegate(this);
|
|
|
|
|
|
m_tableView->setItemDelegate(item_delegate);
|
|
|
|
|
|
//auto icon_delegate = new IconColumnDelegate(this);
|
|
|
|
|
|
|
|
|
|
|
|
connect(m_tableView->selectionModel(), &QItemSelectionModel::selectionChanged,
|
|
|
|
|
|
this, &TriggerPage::tableView_selectionChanged);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void TriggerPage::setCatalog(std::shared_ptr<const PgDatabaseCatalog> cat)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_catalog = cat;
|
|
|
|
|
|
m_definitionView->setCatalog(cat);
|
|
|
|
|
|
m_model->setCatalog(cat);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void TriggerPage::setFilter(const PgClass &cls)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_sortFilterProxy->setOidFilterTable(cls.oid, FirstHiddenValue);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void TriggerPage::tableView_selectionChanged(const QItemSelection &/*selected*/, const QItemSelection &/*deselected*/)
|
|
|
|
|
|
{
|
|
|
|
|
|
auto&& indexes = m_tableView->selectionModel()->selectedIndexes();
|
|
|
|
|
|
boost::container::flat_set<int> rijen;
|
|
|
|
|
|
for (const auto &e : indexes)
|
|
|
|
|
|
rijen.insert(m_sortFilterProxy->mapToSource(e).row());
|
|
|
|
|
|
|
|
|
|
|
|
QString drops;
|
|
|
|
|
|
QString creates;
|
|
|
|
|
|
for (auto rij : rijen) {
|
|
|
|
|
|
auto&& t = m_model->trigger(rij);
|
2018-11-18 19:30:45 +01:00
|
|
|
|
drops += t.dropSql() % "\n";
|
|
|
|
|
|
creates += t.createSql() % "\n";
|
2018-10-07 19:40:06 +02:00
|
|
|
|
}
|
|
|
|
|
|
m_definitionView->setPlainText(drops % "\n" % creates);
|
|
|
|
|
|
}
|