Added base classes for plugin UI.
parent
07bb708437
commit
02c5bbe788
@ -0,0 +1,14 @@
|
|||||||
|
#include "accgrid.h"
|
||||||
|
|
||||||
|
#include "tablemodel.h"
|
||||||
|
|
||||||
|
AccGrid::AccGrid(QWidget *parent) :
|
||||||
|
GridForm<Person>(parent)
|
||||||
|
{
|
||||||
|
setTableModel(new TableModel());
|
||||||
|
}
|
||||||
|
|
||||||
|
AccGrid::~AccGrid()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
|||||||
|
#ifndef ACCGRID_H
|
||||||
|
#define ACCGRID_H
|
||||||
|
|
||||||
|
#include <core.h>
|
||||||
|
#include "data/person.h"
|
||||||
|
|
||||||
|
#include "accommodation-odb.hxx"
|
||||||
|
|
||||||
|
class AccGrid : public GridForm<Person>
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AccGrid(QWidget *parent = NULL);
|
||||||
|
~AccGrid();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ACCGRID_H
|
@ -1,47 +0,0 @@
|
|||||||
#include "accommodationform.h"
|
|
||||||
#include "ui_accommodationform.h"
|
|
||||||
|
|
||||||
#include <core.h>
|
|
||||||
#include <autotablemodel.h>
|
|
||||||
|
|
||||||
#include "dialog.h"
|
|
||||||
#include "data/person.h"
|
|
||||||
|
|
||||||
#include "tablemodel.h"
|
|
||||||
|
|
||||||
#include "accommodation-odb.hxx"
|
|
||||||
|
|
||||||
AccommodationForm::AccommodationForm(QWidget *parent) :
|
|
||||||
QWidget(parent),
|
|
||||||
ui(new Ui::AccommodationForm)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
AccommodationForm::~AccommodationForm()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccommodationForm::fillGrid()
|
|
||||||
{
|
|
||||||
Service<Person> service;
|
|
||||||
TableModel *model = qobject_cast<TableModel*>(ui->tableView->model());
|
|
||||||
|
|
||||||
if (model == NULL) {
|
|
||||||
model = new TableModel();
|
|
||||||
}
|
|
||||||
|
|
||||||
model->setData(service.all());
|
|
||||||
ui->tableView->setModel(model);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccommodationForm::on_pushButton_clicked()
|
|
||||||
{
|
|
||||||
Dialog *d = new Dialog();
|
|
||||||
if (ui->tableView->model()->rowCount() > 0)
|
|
||||||
{
|
|
||||||
d->setData(((TableModel*)ui->tableView->model())->itemFromIndex(ui->tableView->currentIndex()));
|
|
||||||
}
|
|
||||||
d->open();
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
#ifndef ACCOMMODATIONFORM_H
|
|
||||||
#define ACCOMMODATIONFORM_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class AccommodationForm;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AccommodationForm : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit AccommodationForm(QWidget *parent = 0);
|
|
||||||
~AccommodationForm();
|
|
||||||
|
|
||||||
void fillGrid();
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void on_pushButton_clicked();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AccommodationForm *ui;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ACCOMMODATIONFORM_H
|
|
@ -1,41 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AccommodationForm</class>
|
|
||||||
<widget class="QWidget" name="AccommodationForm">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>828</width>
|
|
||||||
<height>548</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Form</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="pushButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>PushButton</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QTableView" name="tableView">
|
|
||||||
<property name="selectionMode">
|
|
||||||
<enum>QAbstractItemView::SingleSelection</enum>
|
|
||||||
</property>
|
|
||||||
<property name="selectionBehavior">
|
|
||||||
<enum>QAbstractItemView::SelectRows</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sortingEnabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@ -1,44 +0,0 @@
|
|||||||
#include "dialog.h"
|
|
||||||
#include "ui_dialog.h"
|
|
||||||
|
|
||||||
#include <core.h>
|
|
||||||
|
|
||||||
#include "data/person.h"
|
|
||||||
#include "accommodationservice.h"
|
|
||||||
|
|
||||||
#include "acform.h"
|
|
||||||
|
|
||||||
#include "accommodation-odb.hxx"
|
|
||||||
|
|
||||||
Dialog::Dialog(QWidget *parent) :
|
|
||||||
QDialog(parent),
|
|
||||||
ui(new Ui::Dialog)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
Dialog::~Dialog()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Dialog::setData(QSharedPointer<Person> data)
|
|
||||||
{
|
|
||||||
m_data = data;
|
|
||||||
|
|
||||||
AcForm *form = new AcForm(this);
|
|
||||||
form->setEntity(data);
|
|
||||||
ui->verticalLayout->addWidget(form);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Dialog::on_buttonBox_accepted()
|
|
||||||
{
|
|
||||||
IPlugin *plugin = Context::instance().plugins().at(0);
|
|
||||||
QSharedPointer<Person> p(new Person());
|
|
||||||
|
|
||||||
p->setFirstName(ui->lineEdit->text());
|
|
||||||
p->setLastName(ui->lineEdit_2->text());
|
|
||||||
|
|
||||||
AccommodationService *service = (AccommodationService*)plugin->service<Person>();
|
|
||||||
service->pokus(p);
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
#ifndef DIALOG_H
|
|
||||||
#define DIALOG_H
|
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
#include <QSharedPointer>
|
|
||||||
|
|
||||||
#include "data/person.h"
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class Dialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
class Dialog : public QDialog
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit Dialog(QWidget *parent = 0);
|
|
||||||
~Dialog();
|
|
||||||
|
|
||||||
void setData(QSharedPointer<Person> data);
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void on_buttonBox_accepted();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::Dialog *ui;
|
|
||||||
QSharedPointer<Person> m_data;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // DIALOG_H
|
|
@ -1,99 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>Dialog</class>
|
|
||||||
<widget class="QDialog" name="Dialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>544</width>
|
|
||||||
<height>444</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Dialog</string>
|
|
||||||
</property>
|
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>30</x>
|
|
||||||
<y>340</y>
|
|
||||||
<width>341</width>
|
|
||||||
<height>32</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLineEdit" name="lineEdit">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>180</x>
|
|
||||||
<y>40</y>
|
|
||||||
<width>113</width>
|
|
||||||
<height>23</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLineEdit" name="lineEdit_2">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>180</x>
|
|
||||||
<y>90</y>
|
|
||||||
<width>113</width>
|
|
||||||
<height>23</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="verticalLayoutWidget">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>60</x>
|
|
||||||
<y>130</y>
|
|
||||||
<width>421</width>
|
|
||||||
<height>191</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout"/>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>Dialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>248</x>
|
|
||||||
<y>254</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>157</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>rejected()</signal>
|
|
||||||
<receiver>Dialog</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>316</x>
|
|
||||||
<y>260</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>286</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
|
@ -0,0 +1,19 @@
|
|||||||
|
#include "defaultformhandler.h"
|
||||||
|
|
||||||
|
DefaultFormHandler::DefaultFormHandler()
|
||||||
|
{
|
||||||
|
m_dialog = new FormDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
DefaultFormHandler::~DefaultFormHandler()
|
||||||
|
{
|
||||||
|
delete m_dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DefaultFormHandler::showForm(IForm *formWidget)
|
||||||
|
{
|
||||||
|
m_dialog->setForm(formWidget);
|
||||||
|
m_dialog->setModal(true);
|
||||||
|
m_dialog->show();
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
#ifndef DEFAULTFORMHANDLER_H
|
||||||
|
#define DEFAULTFORMHANDLER_H
|
||||||
|
|
||||||
|
#include "formdialog.h"
|
||||||
|
#include "iform.h"
|
||||||
|
|
||||||
|
#include "core_global.h"
|
||||||
|
|
||||||
|
class CORESHARED_EXPORT IFormHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
IFormHandler() {}
|
||||||
|
virtual ~IFormHandler() {}
|
||||||
|
|
||||||
|
virtual void showForm(IForm *formWidget) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class DefaultFormHandler : public IFormHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DefaultFormHandler();
|
||||||
|
virtual ~DefaultFormHandler();
|
||||||
|
|
||||||
|
private:
|
||||||
|
FormDialog *m_dialog;
|
||||||
|
|
||||||
|
// IFormHandler interface
|
||||||
|
public:
|
||||||
|
void showForm(IForm *formWidget) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DEFAULTFORMHANDLER_H
|
@ -0,0 +1,31 @@
|
|||||||
|
#include "formdialog.h"
|
||||||
|
#include "ui_formdialog.h"
|
||||||
|
|
||||||
|
FormDialog::FormDialog(QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::FormDialog)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
m_formSet = false;
|
||||||
|
m_form = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
FormDialog::~FormDialog()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormDialog::setForm(IForm *formWidget)
|
||||||
|
{
|
||||||
|
if (m_form == NULL)
|
||||||
|
{
|
||||||
|
ui->verticalLayout->addWidget(formWidget);
|
||||||
|
m_form = formWidget;
|
||||||
|
setGeometry(formWidget->geometry());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormDialog::on_buttonBox_accepted()
|
||||||
|
{
|
||||||
|
m_form->saveRecord();
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
#ifndef FORMDIALOG_H
|
||||||
|
#define FORMDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
#include "iform.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class FormDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class FormDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit FormDialog(QWidget *parent = 0);
|
||||||
|
~FormDialog();
|
||||||
|
|
||||||
|
void setForm(IForm *formWidget);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_buttonBox_accepted();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_formSet;
|
||||||
|
IForm *m_form;
|
||||||
|
Ui::FormDialog *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // FORMDIALOG_H
|
@ -0,0 +1,79 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>FormDialog</class>
|
||||||
|
<widget class="QDialog" name="FormDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>543</width>
|
||||||
|
<height>383</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>accepted()</signal>
|
||||||
|
<receiver>FormDialog</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>248</x>
|
||||||
|
<y>254</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>157</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>rejected()</signal>
|
||||||
|
<receiver>FormDialog</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>316</x>
|
||||||
|
<y>260</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>286</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
@ -0,0 +1,124 @@
|
|||||||
|
#ifndef GRIDFORM_H
|
||||||
|
#define GRIDFORM_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
#include "autoform.h"
|
||||||
|
#include "autotablemodel.h"
|
||||||
|
#include "context.h"
|
||||||
|
#include "iplugin.h"
|
||||||
|
|
||||||
|
#include "igridform.h"
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
class GridForm : public IGridForm
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit GridForm(QWidget *parent = 0) :
|
||||||
|
IGridForm(parent)
|
||||||
|
{
|
||||||
|
m_form = NULL;
|
||||||
|
m_tableModel = NULL;
|
||||||
|
m_formHandler = new DefaultFormHandler();
|
||||||
|
}
|
||||||
|
virtual ~GridForm()
|
||||||
|
{
|
||||||
|
delete m_formHandler;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setForm(AutoForm<T> *form) {
|
||||||
|
Q_ASSERT(m_form == NULL);
|
||||||
|
|
||||||
|
m_form = form;
|
||||||
|
//m_form->setParent(this);
|
||||||
|
|
||||||
|
connect(m_form, SIGNAL(recordAdded()), this, SLOT(saveNew()));
|
||||||
|
connect(m_form, SIGNAL(recordUpdated()), this, SLOT(saveUpdate()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void setTableModel(AutoTableModel<T> *tableModel) {
|
||||||
|
Q_ASSERT(m_tableModel == NULL);
|
||||||
|
|
||||||
|
m_tableModel = tableModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setFormHandler(IFormHandler *handler) {
|
||||||
|
delete m_formHandler;
|
||||||
|
m_formHandler = handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void fillData() {
|
||||||
|
if (m_tableModel == NULL) {
|
||||||
|
Q_ASSERT(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_tableModel->setData(service()->all());
|
||||||
|
tableView()->setModel(m_tableModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
void saveNew() {
|
||||||
|
service()->save(m_form->entity());
|
||||||
|
m_tableModel->addRow(m_form->entity());
|
||||||
|
emit dataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void saveUpdate() {
|
||||||
|
service()->update(m_form->entity());
|
||||||
|
emit dataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
AutoForm<T> *m_form;
|
||||||
|
AutoTableModel<T> *m_tableModel;
|
||||||
|
IFormHandler *m_formHandler;
|
||||||
|
|
||||||
|
Service<T> *service() {
|
||||||
|
IPlugin *plugin = Context::instance().plugin(pluginId());
|
||||||
|
if (plugin == NULL) {
|
||||||
|
Q_ASSERT(false);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Service<T> *service = plugin->service<T>();
|
||||||
|
if (service == NULL) {
|
||||||
|
Q_ASSERT(false);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return service;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IGridForm interface
|
||||||
|
protected:
|
||||||
|
void handleNewRecord() override
|
||||||
|
{
|
||||||
|
if (m_form == NULL)
|
||||||
|
{
|
||||||
|
Q_ASSERT(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_form->setEntity(QSharedPointer<T>(new T()));
|
||||||
|
m_form->setNewRec(true);
|
||||||
|
m_formHandler->showForm(m_form);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleEditRecord() override
|
||||||
|
{
|
||||||
|
if (m_form == NULL || m_tableModel == NULL || tableView()->currentIndex().row() < 0)
|
||||||
|
{
|
||||||
|
Q_ASSERT(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_form->setEntity(m_tableModel->itemFromIndex(tableView()->currentIndex()));
|
||||||
|
m_form->setNewRec(false);
|
||||||
|
m_formHandler->showForm(m_form);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // GRIDFORM_H
|
@ -0,0 +1,88 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>GridForm</class>
|
||||||
|
<widget class="QWidget" name="GridForm">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>680</width>
|
||||||
|
<height>480</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnNew">
|
||||||
|
<property name="text">
|
||||||
|
<string>N</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnEdit">
|
||||||
|
<property name="text">
|
||||||
|
<string>E</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnDelete">
|
||||||
|
<property name="text">
|
||||||
|
<string>D</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnFilter">
|
||||||
|
<property name="text">
|
||||||
|
<string>F</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnPrint">
|
||||||
|
<property name="text">
|
||||||
|
<string>P</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="tableView">
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>QAbstractItemView::SingleSelection</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sortingEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
@ -0,0 +1,10 @@
|
|||||||
|
#include "iform.h"
|
||||||
|
|
||||||
|
IForm::IForm(QWidget *parent) : QWidget(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
IForm::~IForm()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
|||||||
|
#ifndef IFORM_H
|
||||||
|
#define IFORM_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
class IForm : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit IForm(QWidget *parent = 0);
|
||||||
|
virtual ~IForm();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void recordAdded();
|
||||||
|
void recordUpdated();
|
||||||
|
void validationError(QString errMessage);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
virtual bool saveRecord() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // IFORM_H
|
@ -0,0 +1,40 @@
|
|||||||
|
#include "igridform.h"
|
||||||
|
|
||||||
|
#include "ui_gridform.h"
|
||||||
|
|
||||||
|
IGridForm::IGridForm(QWidget *parent) :
|
||||||
|
QWidget(parent),
|
||||||
|
ui(new Ui::GridForm)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
IGridForm::~IGridForm()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void IGridForm::setPluginId(const QString &pluginId)
|
||||||
|
{
|
||||||
|
m_pluginId = pluginId;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString IGridForm::pluginId()
|
||||||
|
{
|
||||||
|
return m_pluginId;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTableView *IGridForm::tableView()
|
||||||
|
{
|
||||||
|
return ui->tableView;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void IGridForm::on_btnNew_clicked()
|
||||||
|
{
|
||||||
|
handleNewRecord();
|
||||||
|
}
|
||||||
|
|
||||||
|
void IGridForm::on_btnEdit_clicked()
|
||||||
|
{
|
||||||
|
handleEditRecord();
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
#ifndef IGRIDFORM_H
|
||||||
|
#define IGRIDFORM_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QString>
|
||||||
|
#include <QTableView>
|
||||||
|
|
||||||
|
#include "defaultformhandler.h"
|
||||||
|
#include "core_global.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class GridForm;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CORESHARED_EXPORT IGridForm : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit IGridForm(QWidget *parent = 0);
|
||||||
|
virtual ~IGridForm();
|
||||||
|
|
||||||
|
void setPluginId(const QString &pluginId);
|
||||||
|
QString pluginId();
|
||||||
|
QTableView *tableView();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void dataChanged();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
virtual void fillData() = 0;
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
virtual void saveNew() = 0;
|
||||||
|
virtual void saveUpdate() = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void handleNewRecord() = 0;
|
||||||
|
virtual void handleEditRecord() = 0;
|
||||||
|
//virtual void handleDeleteRecord() = 0;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_btnNew_clicked();
|
||||||
|
void on_btnEdit_clicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString m_pluginId;
|
||||||
|
IFormHandler *m_formHandler;
|
||||||
|
Ui::GridForm *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // IGRIDFORM_H
|
Loading…
Reference in New Issue