Added settings for Camp module. Changed Camp data model.
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
#include "campsettings.h"
|
||||
#include <define.h>
|
||||
#include <QDebug>
|
||||
|
||||
CampSettings::CampSettings(QObject *parent) : QObject(parent)
|
||||
{
|
||||
m_accFee = 0;
|
||||
m_rounding = Enums::R_MATH;
|
||||
m_decimalPlaces = 0;
|
||||
}
|
||||
|
||||
QDecDouble CampSettings::accFee() const
|
||||
{
|
||||
return TO_DEC(m_accFee);
|
||||
}
|
||||
|
||||
void CampSettings::setAccFee(QDecDouble accFee)
|
||||
{
|
||||
m_accFee = FROM_DEC(accFee);
|
||||
}
|
||||
|
||||
Enums::Rounding CampSettings::rounding() const
|
||||
{
|
||||
return m_rounding;
|
||||
}
|
||||
|
||||
void CampSettings::setRounding(const Enums::Rounding &rounding)
|
||||
{
|
||||
m_rounding = rounding;
|
||||
}
|
||||
|
||||
int CampSettings::decimalPlaces() const
|
||||
{
|
||||
return m_decimalPlaces;
|
||||
}
|
||||
|
||||
void CampSettings::setDecimalPlaces(int decimalPlaces)
|
||||
{
|
||||
m_decimalPlaces = decimalPlaces;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef CAMPSETTINGS_H
|
||||
#define CAMPSETTINGS_H
|
||||
|
||||
#include <QObject>
|
||||
#include <enums.h>
|
||||
#include <QDecDouble.hh>
|
||||
#include <QSharedPointer>
|
||||
|
||||
class CampSettings : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QDecDouble accFee READ accFee WRITE setAccFee)
|
||||
Q_PROPERTY(Enums::Rounding rounding READ rounding WRITE setRounding)
|
||||
Q_PROPERTY(int decimalPlaces READ decimalPlaces WRITE setDecimalPlaces)
|
||||
|
||||
public:
|
||||
explicit CampSettings(QObject *parent = 0);
|
||||
|
||||
QDecDouble accFee() const;
|
||||
void setAccFee(QDecDouble accFee);
|
||||
|
||||
Enums::Rounding rounding() const;
|
||||
void setRounding(const Enums::Rounding &rounding);
|
||||
|
||||
int decimalPlaces() const;
|
||||
void setDecimalPlaces(int decimalPlaces);
|
||||
|
||||
private:
|
||||
int m_accFee;
|
||||
Enums::Rounding m_rounding;
|
||||
int m_decimalPlaces;
|
||||
};
|
||||
|
||||
typedef QSharedPointer<CampSettings> CampSettingsPtr;
|
||||
|
||||
#endif // CAMPSETTINGS_H
|
||||
@@ -0,0 +1,137 @@
|
||||
#include "camp-odb.hxx"
|
||||
#include "campsettingsform.h"
|
||||
#include "ui_campsettingsform.h"
|
||||
|
||||
#include <settingsservice.h>
|
||||
#include <QScroller>
|
||||
|
||||
CampSettingsForm::CampSettingsForm(QWidget *parent) :
|
||||
FormBinder<CampSettings>(parent),
|
||||
ui(new Ui::CampSettingsForm)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
m_personPriceModel = new AutoTableModel<PersonPrice>();
|
||||
m_personPriceModel->setEditableCols(QList<int>() << 0 << 1 << 2 << 3);
|
||||
m_saleModel = new AutoTableModel<Sale>();
|
||||
m_saleModel->setEditableCols(QList<int>() << 0 << 1 << 2);
|
||||
|
||||
ui->tablePersonPrices->setModel(m_personPriceModel);
|
||||
ui->tableSales->setModel(m_saleModel);
|
||||
|
||||
ui->tablePersonPrices->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||
ui->tableSales->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||
|
||||
QScroller::grabGesture(ui->tablePersonPrices, QScroller::LeftMouseButtonGesture);
|
||||
QScroller::grabGesture(ui->tableSales, QScroller::LeftMouseButtonGesture);
|
||||
|
||||
connect(ui->tablePersonPrices->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](){
|
||||
ui->btnPriceDisable->setEnabled(ui->tablePersonPrices->currentIndex().isValid());
|
||||
ui->btnPriceRemove->setEnabled(ui->tablePersonPrices->currentIndex().isValid());
|
||||
ui->btnPriceDisable->setChecked(m_personPriceModel->itemFromIndex(ui->tablePersonPrices->currentIndex())->active());
|
||||
});
|
||||
|
||||
connect(ui->tableSales->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](){
|
||||
ui->btnSaleRemove->setEnabled(ui->tableSales->currentIndex().isValid());
|
||||
});
|
||||
|
||||
registerBinding(ui->accFee);
|
||||
registerBinding(ui->decimalPlaces);
|
||||
QList<ComboData> roundings ;
|
||||
roundings << ComboData(Enums::R_NONE, tr("None"))
|
||||
<< ComboData(Enums::R_UP, tr("Up"))
|
||||
<< ComboData(Enums::R_DOWN, tr("Down"))
|
||||
<< ComboData(Enums::R_MATH, tr("Mathematic"));
|
||||
registerBinding(ui->rounding, roundings);
|
||||
}
|
||||
|
||||
CampSettingsForm::~CampSettingsForm()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
bool CampSettingsForm::saveRecord()
|
||||
{
|
||||
bindToData();
|
||||
SettingsService srv("CAMP");
|
||||
srv.saveSettings(entity());
|
||||
|
||||
Service<PersonPrice> personSrv;
|
||||
Service<Sale> saleSrv;
|
||||
|
||||
foreach (PersonPricePtr p, personSrv.all()) {
|
||||
personSrv.erase(p);
|
||||
}
|
||||
|
||||
foreach (PersonPricePtr p, m_personPriceModel->list()) {
|
||||
personSrv.save(p);
|
||||
}
|
||||
|
||||
foreach (SalePtr s, saleSrv.all()) {
|
||||
saleSrv.erase(s);
|
||||
}
|
||||
|
||||
foreach (SalePtr s, m_saleModel->list()) {
|
||||
saleSrv.save(s);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CampSettingsForm::loadEntity()
|
||||
{
|
||||
SettingsService srv("CAMP");
|
||||
CampSettingsPtr settings = srv.loadSettings<CampSettings>();
|
||||
setEntity(settings);
|
||||
|
||||
Service<PersonPrice> personSrv;
|
||||
Service<Sale> saleSrv;
|
||||
|
||||
m_personPriceModel->setData(personSrv.all());
|
||||
m_saleModel->setData(saleSrv.all());
|
||||
|
||||
ui->btnPriceDisable->setEnabled(false);
|
||||
ui->btnPriceRemove->setEnabled(false);
|
||||
ui->btnSaleRemove->setEnabled(false);
|
||||
}
|
||||
|
||||
void CampSettingsForm::on_btnPriceAdd_clicked()
|
||||
{
|
||||
PersonPricePtr price(new PersonPrice());
|
||||
m_personPriceModel->addRow(price);
|
||||
}
|
||||
|
||||
void CampSettingsForm::on_btnSaleAdd_clicked()
|
||||
{
|
||||
SalePtr sale(new Sale());
|
||||
m_saleModel->addRow(sale);
|
||||
}
|
||||
|
||||
void CampSettingsForm::on_btnPriceRemove_clicked()
|
||||
{
|
||||
m_personPriceModel->removeRowAt(ui->tablePersonPrices->currentIndex());
|
||||
}
|
||||
|
||||
void CampSettingsForm::on_btnPriceDisable_clicked()
|
||||
{
|
||||
PersonPricePtr price = m_personPriceModel->itemFromIndex(ui->tablePersonPrices->currentIndex());
|
||||
price->setActive(!price->active());
|
||||
}
|
||||
|
||||
void CampSettingsForm::on_btnPriceFilter_clicked()
|
||||
{
|
||||
Service<PersonPrice> srv;
|
||||
if (ui->btnPriceFilter->isChecked())
|
||||
{
|
||||
m_personPriceModel->setData(srv.all("active = 1"));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_personPriceModel->setData(srv.all());
|
||||
}
|
||||
}
|
||||
|
||||
void CampSettingsForm::on_btnSaleRemove_clicked()
|
||||
{
|
||||
m_saleModel->removeRowAt(ui->tableSales->currentIndex());
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
#ifndef CAMPSETTINGSFORM_H
|
||||
#define CAMPSETTINGSFORM_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QList>
|
||||
|
||||
#include "campsettings.h"
|
||||
#include "data/camp-data.h"
|
||||
#include <formbinder.h>
|
||||
#include <autotablemodel.h>
|
||||
|
||||
namespace Ui {
|
||||
class CampSettingsForm;
|
||||
}
|
||||
|
||||
class CampSettingsForm : public FormBinder<CampSettings>
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit CampSettingsForm(QWidget *parent = 0);
|
||||
~CampSettingsForm();
|
||||
|
||||
// IForm interface
|
||||
public slots:
|
||||
bool saveRecord();
|
||||
|
||||
// IForm interface
|
||||
public:
|
||||
void loadEntity();
|
||||
|
||||
private slots:
|
||||
void on_btnPriceAdd_clicked();
|
||||
|
||||
void on_btnSaleAdd_clicked();
|
||||
|
||||
void on_btnPriceRemove_clicked();
|
||||
|
||||
void on_btnPriceDisable_clicked();
|
||||
|
||||
void on_btnPriceFilter_clicked();
|
||||
|
||||
void on_btnSaleRemove_clicked();
|
||||
|
||||
private:
|
||||
Ui::CampSettingsForm *ui;
|
||||
AutoTableModel<PersonPrice> *m_personPriceModel;
|
||||
AutoTableModel<Sale> *m_saleModel;
|
||||
};
|
||||
|
||||
#endif // CAMPSETTINGSFORM_H
|
||||
@@ -0,0 +1,282 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>CampSettingsForm</class>
|
||||
<widget class="QWidget" name="CampSettingsForm">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>696</width>
|
||||
<height>489</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Person prices</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<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>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QToolButton" name="btnPriceAdd">
|
||||
<property name="toolTip">
|
||||
<string>Add</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../core/rc.qrc">
|
||||
<normaloff>:/icons/new.svg</normaloff>:/icons/new.svg</iconset>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="btnPriceRemove">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Remove</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../core/rc.qrc">
|
||||
<normaloff>:/icons/remove.svg</normaloff>:/icons/remove.svg</iconset>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="btnPriceDisable">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Deactivate</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../core/rc.qrc">
|
||||
<normaloff>:/icons/ok.svg</normaloff>:/icons/ok.svg</iconset>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="btnPriceFilter">
|
||||
<property name="toolTip">
|
||||
<string>Filter active</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../core/rc.qrc">
|
||||
<normaloff>:/icons/filter.svg</normaloff>:/icons/filter.svg</iconset>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</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="tablePersonPrices"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Sales</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_2" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_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>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QToolButton" name="btnSaleAdd">
|
||||
<property name="toolTip">
|
||||
<string>Add</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../core/rc.qrc">
|
||||
<normaloff>:/icons/new.svg</normaloff>:/icons/new.svg</iconset>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="btnSaleRemove">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Remove</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../core/rc.qrc">
|
||||
<normaloff>:/icons/remove.svg</normaloff>:/icons/remove.svg</iconset>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<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="tableSales"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="title">
|
||||
<string>Other settings</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Accommodation fee</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Rounding</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="rounding"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="decimalPlaceslab">
|
||||
<property name="text">
|
||||
<string>Decimal places</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QDoubleSpinBox" name="decimalPlaces">
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>100000.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QDoubleSpinBox" name="accFee">
|
||||
<property name="buttonSymbols">
|
||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>99999.990000000005239</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="../../core/rc.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
Reference in New Issue
Block a user