Files

194 lines
3.8 KiB
C++
Raw Permalink Normal View History

2015-11-17 22:24:00 +01:00
#include "igridform.h"
#include "ui_gridform.h"
#include <QList>
2016-03-02 20:33:24 +01:00
#include <QDebug>
#include <QMap>
#include <QItemSelectionModel>
#include "context.h"
2015-12-29 16:09:55 +01:00
#include "filterui.h"
#include "iplugin.h"
#include "reporting/reportdialog.h"
2015-11-17 22:24:00 +01:00
IGridForm::IGridForm(QWidget *parent) :
QWidget(parent),
ui(new Ui::GridForm)
{
ui->setupUi(this);
2015-12-29 16:09:55 +01:00
ui->filterWidget->setVisible(false);
m_contextMenu = new QMenu(this);
m_contextMenu->addAction(ui->actionSelectColumns);
m_form = nullptr;
m_columnDialog = new ColumnDialog(this);
connect(m_columnDialog, SIGNAL(accepted()), this, SLOT(columnsAccepted()));
2017-05-30 10:38:02 +02:00
m_varFiller = new VariableFiller();
2015-11-17 22:24:00 +01:00
}
IGridForm::~IGridForm()
{
if (m_varFiller != nullptr)
2017-05-30 10:38:02 +02:00
{
delete m_varFiller;
}
2016-02-09 10:04:17 +01:00
delete ui;
2015-11-17 22:24:00 +01:00
}
void IGridForm::setPluginId(const QString &pluginId)
{
m_pluginId = pluginId;
2016-01-17 21:09:28 +01:00
if (m_filterUi != NULL)
{
m_filterUi->setPluginId(pluginId);
}
2016-02-13 21:41:05 +01:00
if (m_form != NULL)
{
m_form->setPluginId(pluginId);
}
2015-11-17 22:24:00 +01:00
}
QString IGridForm::pluginId()
{
return m_pluginId;
}
QTableView *IGridForm::tableView()
{
return ui->tableView;
}
QWidget *IGridForm::toolbar()
{
return ui->widget;
}
2017-05-30 10:38:02 +02:00
void IGridForm::setReportVarFiller(VariableFiller *filler)
{
if (m_varFiller != NULL)
{
delete m_varFiller;
}
m_varFiller = filler;
}
void IGridForm::hideColumns(const QList<int> &cols)
{
foreach (int col, cols) {
tableView()->setColumnHidden(col, true);
}
}
2015-12-29 16:09:55 +01:00
QWidget *IGridForm::filterWidget()
{
return ui->filterWidget;
}
QVBoxLayout *IGridForm::mainLayout()
{
return ui->verticalLayout;
}
void IGridForm::enableButtons()
{
ui->btnNew->setEnabled(canAddRecord());
if (ui->tableView->currentIndex().isValid())
{
ui->btnEdit->setEnabled(canEditRecord());
ui->btnDelete->setEnabled(canDeleteRecord());
}
}
2015-11-17 22:24:00 +01:00
void IGridForm::on_btnNew_clicked()
{
handleNewRecord();
}
void IGridForm::on_btnEdit_clicked()
{
handleEditRecord();
}
void IGridForm::on_btnDelete_clicked()
{
handleDeleteRecord();
}
void IGridForm::on_tableView_customContextMenuRequested(const QPoint &pos)
{
m_contextMenu->popup(tableView()->viewport()->mapToGlobal(pos));
}
void IGridForm::on_actionSelectColumns_triggered()
{
m_columnDialog->setTable(tableView());
m_columnDialog->show();
}
void IGridForm::columnsAccepted()
{
for(int i = 0; i < tableView()->model()->columnCount(); i++)
{
tableView()->setColumnHidden(i, false);
}
QList<int> hide = m_columnDialog->columnsToHide();
hideColumns(hide);
QList<QVariant> varList;
foreach (int i, hide) {
varList.append(i);
}
Context::instance().settings()->setValue("grids/" + pluginId() + "/hide", QVariant::fromValue(varList));
}
2015-12-29 16:09:55 +01:00
2016-03-02 20:33:24 +01:00
void IGridForm::widthChanged(int logicalIndex, int oldSize, int newSize)
{
Q_UNUSED(oldSize);
QMap<QString, QVariant> widths = Context::instance().settings()->value("grids/" + pluginId() + "/widths").toMap();
widths[QString::number(logicalIndex)] = newSize;
Context::instance().settings()->setValue("grids/" + pluginId() + "/widths", QVariant::fromValue(widths));
}
2015-12-29 16:09:55 +01:00
void IGridForm::on_btnFilter_toggled(bool checked)
{
if (checked)
{
ui->filterWidget->setVisible(true);
}
else
{
ui->filterWidget->setVisible(false);
}
}
void IGridForm::on_tableView_clicked(const QModelIndex &)
{
enableButtons();
}
void IGridForm::on_btnPrint_clicked()
{
ReportDialog *dialog = new ReportDialog(currentRecordId() != 0, this);
dialog->setAttribute(Qt::WA_DeleteOnClose);
2017-05-30 10:38:02 +02:00
if (m_varFiller != NULL)
{
m_varFiller->fillList(Context::instance().plugin(pluginId())->reports(), currentRecordId());
}
dialog->setReports(Context::instance().plugin(pluginId())->reports());
dialog->show();
}