0504合并前提交
This commit is contained in:
+87
-3
@@ -4,9 +4,35 @@
|
||||
#include <QDialog>
|
||||
|
||||
#include "ViewModels.h"
|
||||
#include "SysPara.h"
|
||||
#include "dlgQrcodeFormat.h"
|
||||
#include "DlgBarcodeFormat.h"
|
||||
#include <QVariant>
|
||||
|
||||
class DateFormatEditor;
|
||||
class DateReplaceEditor;
|
||||
class CounterEditor;
|
||||
|
||||
enum BarcodeType {
|
||||
BARCODE_TYPE_BARCODE,
|
||||
BARCODE_TYPE_QRCODE,
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 条码设置界面所用的视图模型
|
||||
*
|
||||
* @remark contentPattern 内可包含变量,如 {t} 表示日期/时间、{c} 表示计数器。
|
||||
* 仅当 contentPattern 含有相应变量时,counterViewModel / dateViewModel 字段才有意义。
|
||||
*/
|
||||
struct BarcodeViewModel {
|
||||
QString contentPattern; // 条形码内容模版,例如 "ABC{t}{c1}"
|
||||
CounterViewModel counterViewModel; // 计数器视图模型
|
||||
DateItemModel dateViewModel; // 日期视图模型
|
||||
BarcodeType type = BARCODE_TYPE_BARCODE;
|
||||
QVariant format;
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(BarcodeViewModel);
|
||||
|
||||
namespace Ui {
|
||||
class BarcodeEditor;
|
||||
@@ -20,9 +46,34 @@ public:
|
||||
explicit BarcodeEditor(QWidget *parent = nullptr);
|
||||
~BarcodeEditor();
|
||||
|
||||
void bindViewModel(QSharedPointer<BarcodeViewModel> vm);
|
||||
/**
|
||||
* @brief 绑定系统参数
|
||||
*
|
||||
* 计数器配置选项卡所需的各个计数器的配置通过此方式提供;
|
||||
* @note
|
||||
* BarcodeEditor 将在 @see bindViewModel 中读取 sysPara->para.cnt1*** 或 sysPara->para.cnt2*** 相关参数,并在用户点击确认按钮时修改它们。
|
||||
*
|
||||
* @remark 沿用的是旧逻辑
|
||||
*
|
||||
* @param sysPara
|
||||
*/
|
||||
void bindSysPara(SysPara* sysPara) { m_sysPara = sysPara; }
|
||||
|
||||
QSharedPointer<BarcodeViewModel> viewModel() const;
|
||||
/**
|
||||
* @brief 注入条形码视图模型(纯结构体,按值拷贝)
|
||||
*
|
||||
* @param vm
|
||||
*/
|
||||
void bindViewModel(const BarcodeViewModel& vm);
|
||||
|
||||
/**
|
||||
* @brief 获取当前视图模型
|
||||
*
|
||||
* @note 调用前会先从各子编辑器收集最新值回写到内部 m_vm,再返回。
|
||||
*
|
||||
* @return BarcodeViewModel
|
||||
*/
|
||||
BarcodeViewModel viewModel();
|
||||
|
||||
private slots:
|
||||
|
||||
@@ -51,13 +102,46 @@ private slots:
|
||||
*/
|
||||
void onBtnCounterClicked();
|
||||
|
||||
/**
|
||||
* @brief 确定按钮点击时触发
|
||||
*
|
||||
*/
|
||||
void onCheckBtnClicked();
|
||||
|
||||
/**
|
||||
* @brief 取消按钮点击时触发
|
||||
*
|
||||
*/
|
||||
void onCloseBtnClicked();
|
||||
|
||||
/**
|
||||
* @brief 条形码格式确认时触发
|
||||
*
|
||||
*/
|
||||
void onBarcodeFormatConfirmed();
|
||||
|
||||
/**
|
||||
* @brief 二维码格式确认时触发
|
||||
*
|
||||
*/
|
||||
void onQrcodeFormatConfirmed();
|
||||
|
||||
protected:
|
||||
virtual bool eventFilter(QObject* obj, QEvent* event) override;
|
||||
|
||||
private:
|
||||
Ui::BarcodeEditor *ui;
|
||||
|
||||
QSharedPointer<BarcodeViewModel> m_vm;
|
||||
BarcodeViewModel m_vm;
|
||||
|
||||
DateFormatEditor *m_dateFormatEditor = nullptr;
|
||||
DateReplaceEditor *m_dateReplaceEditor = nullptr;
|
||||
CounterEditor *m_counterEditor = nullptr;
|
||||
|
||||
SysPara* m_sysPara = nullptr;
|
||||
|
||||
DlgBarcodeFormat m_barcodeFormatEditor;
|
||||
DlgQrcodeFormat m_qrcodeFormatEditor;
|
||||
};
|
||||
|
||||
#endif // BARCODEEDITOR_H
|
||||
|
||||
Reference in New Issue
Block a user