#include "shopsettingsform.h" #include "ui_shopsettingsform.h" #include #include #include #include #include #include "shopservice.h" #include "shop-odb.hxx" ShopSettingsForm::ShopSettingsForm(QWidget *parent) : FormBinder(parent), ui(new Ui::ShopSettingsForm) { ui->setupUi(this); registerBinding(ui->output); registerBinding(ui->lettersPerLine); registerBinding(ui->byMessage); registerBinding(ui->eetActive); registerBinding(ui->eetShopId); registerBinding(ui->eetRegisterId); QList listModes; listModes << ComboData(0, tr("Simplifyed")) << ComboData(1, tr("Standard")); registerBinding(ui->eetMode, listModes); registerBinding(ui->eetCertificate); registerBinding(ui->eetKeyPassword); registerBinding(ui->eetTest); registerBinding(ui->eetPlayground); registerBinding(ui->favBtnCols); registerBinding(ui->favBtnRows); registerBinding(ui->favBtnSize); QList listRounding; listRounding << 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, listRounding); registerBinding(ui->decimalPlaces); registerBinding(ui->roundingItem); registerBinding(ui->doublePrint); registerBinding(ui->doublePrintItem); registerBinding(ui->showCount); QList listVatTypes; listVatTypes << ComboData(Enums::NONE, tr("None")) << ComboData(Enums::HIGH, tr("High")) << ComboData(Enums::FIRST_LOWER, tr("First lower")) << ComboData(Enums::SECOND_LOWER, tr("Second lower")); registerBinding(ui->defaultVat, listVatTypes); m_itemModel = new AutoTableModel(); } ShopSettingsForm::~ShopSettingsForm() { delete ui; } void ShopSettingsForm::drawButtons() { foreach (QWidget *child, ui->btnWidget->findChildren()) { delete child; } for (int i = 0; i < entity()->favBtnRows(); i++) { for (int j = 0; j < entity()->favBtnCols(); j++) { FavButton *btn = new FavButton(ui->btnWidget); btn->setObjectName(QString::number(i) + "_" + QString::number(j)); btn->setAcceptDrops(true); if (m_btnMap[btn->objectName()] != nullptr) { btn->setText(m_btnMap[btn->objectName()]->shortName()); } if (entity()->favBtnSize() > 0) { btn->setMinimumHeight(entity()->favBtnSize()); btn->setMinimumWidth(entity()->favBtnSize()); } btn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); ((QGridLayout*)ui->btnWidget->layout())->addWidget(btn, i, j); connect(btn, &FavButton::clicked, [this, btn](bool){ btn->setText(""); m_btnMap.remove(btn->objectName()); }); connect(btn, &FavButton::itemDropped, [this, btn](){ ShopItemPtr item = m_itemModel->itemFromIndex(ui->tableItems->currentIndex()); FavoritItemPtr favItem = QSharedPointer(new FavoritItem); favItem->setFavButtonName(btn->objectName()); favItem->setName(item->name()); favItem->setShortName(item->shortName()); favItem->setRefId(item->id()); favItem->setPluginId(item->pluginId()); m_btnMap[btn->objectName()] = favItem; btn->setText(item->shortName()); }); } } } void ShopSettingsForm::loadEntity() { SettingsService srv("SHOP"); ShopSettingsPtr settings = srv.loadSettings(); setEntity(settings); ShopService srvShop; m_itemModel->setData(srvShop.allSellableItems()); m_itemModel->setTranslations(Context::instance().plugin("SHOP")->translations()); ui->tableItems->setModel(m_itemModel); ui->tableItems->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); ui->tableItems->setColumnHidden(0, true); ui->tableItems->setColumnHidden(2, true); ui->tableItems->setColumnHidden(4, true); Service srvFav; foreach (FavoritItemPtr favItem, srvFav.all()) { m_btnMap[favItem->favButtonName()] = favItem; } drawButtons(); } bool ShopSettingsForm::saveRecord() { bindToData(); SettingsService srv("SHOP"); srv.saveSettings(entity()); Service srvFav; foreach (FavoritItemPtr item, srvFav.all()) { srvFav.erase(item); } foreach (QString btnName, m_btnMap.keys()) { if (m_btnMap[btnName] != NULL) { srvFav.save(m_btnMap[btnName]); } } return true; } void ShopSettingsForm::on_btnCertBrowse_clicked() { QString certFile = QFileDialog::getOpenFileName(this, "Certificate file", "", "P12 Files (*.p12)"); if (!certFile.isEmpty()) { ui->eetCertificate->setText(certFile); } } void ShopSettingsForm::on_favBtnCols_textChanged(const QString &arg1) { entity()->setFavBtnCols(arg1.toInt()); drawButtons(); } void ShopSettingsForm::on_favBtnRows_textChanged(const QString &arg1) { entity()->setFavBtnRows(arg1.toInt()); drawButtons(); } void ShopSettingsForm::on_favBtnSize_textChanged(const QString &arg1) { entity()->setFavBtnSize(arg1.toInt()); drawButtons(); } ////////////////////////////////////////////////////////// /// \brief FavButtonStyle::FavButtonStyle /// FavButtonStyle::FavButtonStyle() :QProxyStyle() { } FavButtonStyle::~FavButtonStyle() { } void FavButtonStyle::drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole) const { flags |= Qt::TextWordWrap; QProxyStyle::drawItemText(painter, rect, flags, pal, enabled, text, textRole); } /////////////////////////////////////////////////////////// /// \brief FavButton::FavButton /// \param parent /// FavButton::FavButton(QWidget *parent) : QToolButton(parent) { setStyle(&m_style); } void FavButton::dragEnterEvent(QDragEnterEvent *event) { event->acceptProposedAction(); } void FavButton::dropEvent(QDropEvent *) { emit itemDropped(); }