code_app/app/scanner/hg_settingdialog.h

140 lines
3.8 KiB
C++

#ifndef HG_SETTING_DIALOG_H
#define HG_SETTING_DIALOG_H
#include <QtWidgets>
#include <QSettings>
#include <algorithm>
#include "sane/sane_ex.h"
#include "cfg/gb_json.h"
#include "device_menu.h"
class hg_settingdialog : public QDialog
{
Q_OBJECT
int changed_count_;
bool save_;
bool clicked_gamma_;
dev_que *dev_que_;
gb::scanner_cfg *cur_cfg_;
gb::sane_config_schm *cur_scheme_;
void refresh_control_value(int op_id);
void on_select_scheme(bool apply_to_dev = true);
QString gen_gamma_file_path(void);
QMenu *top_menu_;
QLineEdit *edit_name_;
QPushButton *rename_;
QPushButton *apply_;
QPushButton *del_this_;
QPushButton *del_all_;
QLabel *custom_area_lable_;
QPushButton *btn_cut_area_;
QPushButton *btn_gamma_;
QTextEdit *sketch_;
void create_scheme_management_ui(QVBoxLayout* layout);
QString find_current_scheme_menu(int *scheme_id = nullptr);
static std::string property_combox_data_type_;
enum _cbox_type
{
COMBO_VAL_STRING = 0,
COMBO_VAL_INT,
COMBO_VAL_FLOAT,
};
public:
explicit hg_settingdialog(void *handle, QWidget *parent = nullptr,
dev_que* dev = nullptr);
~hg_settingdialog();
public:
void initUi();
void updateOpt();
void createUI();
void updateUIStatus();
QVector<QWidget*> find_control(int opt_num);
void keyPressEvent(QKeyEvent *e);
int get_changed_items(void);
private:
void *m_handle;
private:
QString m_qstrFileName;
QSettings *m_configIniWrite;
QSettings *m_configIniRead;
private:
void iniWrite(QString title, int id, QVariant value);
void iniRead(QString title, int id, QWidget *w);
QString md5(QString key);
const void* find_option_description(int id); // return const SANE_Option_Descriptor* pointer
const void* find_option_description(const std::string& title, int* id); // return const SANE_Option_Descriptor* pointer
QVariant find_default_value(int id);
virtual void closeEvent(QCloseEvent* e);
void save_scheme(void);
void cancel_setting(void);
void getAppVersion();
void apply_current_scheme(void);
private:
QVector<QPair<QPair<int, QVariant>, QString>> m_list_IdValueTitle;
QVector<QPair<const void*, QVariant>> m_list_defaultOptions; // default values of device
QVector<QPair<QObject*, QObject*>> m_list_sliderSpinbox;
QVector<QPair<int, const void*>> m_list_getOpt;
QVector<std::string> m_list_deviceNames;
QVector<QWidget*> m_list_widgets;
private slots:
void slot_checkedClicked();
void slot_sliderClicked(int value);
void slot_spinBoxClicked(int value);
void slot_doubleSpinboxClicked(double value);
void slot_string_list_comboBoxClicked();
void slot_pushButtonClicked();
void slot_cutButtonClicked();
void slot_gammaButtonClicked();
void slot_word_list_comboBoxClicked(int value);
void slot_lineEditInput();
void slot_buttonOkClicked();
void slot_buttonCancelClicked();
void slot_pushButton_scheme_management(void);
void on_current_scheme_changed(void);
void restore_2_default_settings(void);
private:
int m_dpiId;
int m_dpiValue;
int m_paperSizeId;
QString m_paperSizeValue;
int m_cutLeftId;
int m_cutTopId;
int m_cutRightId;
int m_cutBottomId;
double m_cutWidth; // 单位是毫米
double m_cutHeight; // 单位是毫米
double m_cutLeftValue; // 单位是毫米
double m_cutTopValue; // 单位是毫米
double m_cutRightValue; // 单位是毫米
double m_cutBottomValue; // 单位是毫米
int m_colorModeId;
QString m_colorModeValue;
SANE_Gamma m_gammaData;
QComboBox *comb_;
};
#endif // HG_SETTING_DIALOG_H