code_app/app/scantool/form_deviceconfig.h

156 lines
3.8 KiB
C
Raw Normal View History

2024-04-24 03:57:56 +00:00
#ifndef FORM_DEVICECONFIG_H
#define FORM_DEVICECONFIG_H
#include <QWidget>
#include <string>
#include <vector>
#include <QMessageBox>
2024-05-07 08:09:36 +00:00
#include "base/HGDef.h"
#include "sane/sane_ex.h"
2024-05-07 08:09:36 +00:00
#include "sane/sane_option_definitions.h"
#include "setpicclrtool.h"
2024-04-24 03:57:56 +00:00
struct DeviceConfig
{
DeviceConfig()
2024-04-25 09:04:11 +00:00
{
valueType = 0;
intValue = 0;
doubleValue = 0;
boolValue = false;
2024-05-07 08:09:36 +00:00
gammaValue = {0};
2024-04-25 09:04:11 +00:00
}
// 配置名
std::string name;
// 配置值
2024-05-07 08:09:36 +00:00
int valueType; // 0-无1-字符串2-整型3-浮点4-布尔5-gamma
2024-04-25 09:04:11 +00:00
std::string stringValue;
int intValue;
double doubleValue;
bool boolValue;
2024-05-07 08:09:36 +00:00
SANE_Gamma gammaValue;
2024-04-25 09:04:11 +00:00
};
struct DeviceConfigEx
{
DeviceConfigEx()
{
label = nullptr;
ctrl = nullptr;
ctrlWidget = nullptr;
2024-05-07 08:09:36 +00:00
id = 0;
name.clear();
title.clear();
2024-04-30 02:39:08 +00:00
hide = false;
2024-04-30 03:53:18 +00:00
readOnly = false;
valueType = 0;
stringValue.clear();
2024-05-05 03:29:13 +00:00
defStringValue.clear();
intValue = 0;
2024-05-05 03:29:13 +00:00
defIntValue = 0;
doubleValue = 0;
2024-05-05 03:29:13 +00:00
defDoubleValue = 0;
boolValue = false;
2024-05-05 03:29:13 +00:00
defBoolValue = false;
2024-05-07 08:09:36 +00:00
gammaValue = {0};
defGammaValue = {0};
rangeType = 0;
stringValueList.clear();
intValueList.clear();
doubleValueList.clear();
intValueMin = 0;
intValueMax = 0;
doubleValueMin = 0;
doubleValueMax = 0;
}
// 控件
QWidget *label;
QWidget *ctrl;
QWidget *ctrlWidget;
// 配置名
2024-04-28 10:15:51 +00:00
int id;
std::string name;
std::string title;
2024-04-30 02:39:08 +00:00
bool hide;
2024-04-30 03:53:18 +00:00
bool readOnly;
2024-04-25 08:06:21 +00:00
// 配置值
2024-05-07 08:09:36 +00:00
int valueType; // 0-无1-字符串2-整型3-浮点4-布尔5-gamma
std::string stringValue;
2024-05-05 03:29:13 +00:00
std::string defStringValue;
int intValue;
2024-05-05 03:29:13 +00:00
int defIntValue;
double doubleValue;
2024-05-05 03:29:13 +00:00
double defDoubleValue;
bool boolValue;
2024-05-05 03:29:13 +00:00
bool defBoolValue;
2024-05-07 08:09:36 +00:00
SANE_Gamma gammaValue;
SANE_Gamma defGammaValue;
2024-04-25 08:06:21 +00:00
// 配置取值范围
int rangeType; // 0-无1-字符串列表2-整型列表3-浮点数列表4-整型范围5-浮点数范围
std::vector<std::string> stringValueList;
std::vector<int> intValueList;
std::vector<double> doubleValueList;
int intValueMin;
int intValueMax;
double doubleValueMin;
double doubleValueMax;
};
2024-05-05 03:29:13 +00:00
Q_DECLARE_METATYPE(DeviceConfigEx*)
struct DeviceConfigsGroup
{
std::string groupTitle;
2024-04-25 09:04:11 +00:00
std::vector<DeviceConfigEx> deviceConfigs;
};
2024-04-24 03:57:56 +00:00
class Form_DeviceConfig : public QWidget
{
Q_OBJECT
public:
explicit Form_DeviceConfig(SANE_Handle devHandle, const std::vector<DeviceConfig>& deviceConfigs, QWidget *parent = nullptr);
2024-04-24 03:57:56 +00:00
~Form_DeviceConfig();
std::vector<DeviceConfig> GetDeviceConfigs();
2024-04-24 03:57:56 +00:00
private:
void Init(const std::vector<DeviceConfig>& deviceConfigs);
void Update(int ignoreId);
2024-05-20 08:47:21 +00:00
void PopupMsgBox(const QString& content);
protected:
virtual bool eventFilter(QObject *target, QEvent *event) override;
2024-04-25 08:06:21 +00:00
private slots:
2024-05-07 08:09:36 +00:00
void on_closeDevice();
2024-04-25 08:06:21 +00:00
void on_defaultBtn_clicked();
void on_string_list_comboBoxClicked();
void on_int_list_comboBoxClicked();
void on_double_list_comboBoxClicked();
void on_int_sliderClicked(int value);
void on_double_sliderClicked(int value);
void on_relate_spinBoxClicked(int value);
void on_relate_doubleSpinboxClicked(double value);
void on_string_comboBoxClicked();
void on_spinBoxClicked(int value);
2024-05-07 08:09:36 +00:00
void on_customGamma_checkedClicked();
void on_customGammaBtn_clicked();
2024-04-28 10:15:51 +00:00
void on_checkedClicked();
2024-04-24 03:57:56 +00:00
private:
2024-05-07 08:09:36 +00:00
setPicClrTool *m_clrToolDlg;
QMessageBox *m_qMessageBoxDlg;
2024-04-28 10:15:51 +00:00
SANE_Handle m_devHandle;
2024-05-05 03:29:13 +00:00
int m_defButtonId;
std::vector<DeviceConfigsGroup> m_deviceConfigsGroups; // 当前配置信息
2024-04-24 03:57:56 +00:00
};
#endif // FORM_DEVICECONFIG_H