140 lines
3.8 KiB
C++
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|