146 lines
4.1 KiB
C++
146 lines
4.1 KiB
C++
#ifndef HG_SETTING_DIALOG_H
|
|
#define HG_SETTING_DIALOG_H
|
|
|
|
#include <QtWidgets>
|
|
#include <QSettings>
|
|
#include <algorithm>
|
|
#include "cfg/gb_json.h"
|
|
#include "device_menu.h"
|
|
|
|
class hg_settingdialog : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
|
|
int changed_count_;
|
|
bool save_;
|
|
bool clicked_gamma_;
|
|
bool quit_ = false;
|
|
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 *m_pbtn_addNew;
|
|
QPushButton *del_this_;
|
|
QPushButton *del_all_;
|
|
QLabel *custom_area_lable_;
|
|
QPushButton *btn_cut_area_;
|
|
QPushButton *btn_gamma_;
|
|
QTextEdit *sketch_;
|
|
QLineEdit *m_lineEdit_name;
|
|
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(const SANEAPI* saneApi, SANE_Handle handle, const char *devName, QWidget *parent = 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);
|
|
gb::sane_config_schm *getCurScheme();
|
|
|
|
private:
|
|
static hg_settingdialog *hg_setting_ui_;
|
|
SANEAPI m_saneAPI;
|
|
SANE_Handle m_devHandle;
|
|
std::string m_devName;
|
|
QTranslator m_translator;
|
|
QTranslator m_translator_qt;
|
|
int m_langCode;
|
|
|
|
private:
|
|
QString m_qstrFileName;
|
|
QSettings *m_configIniWrite;
|
|
QSettings *m_configIniRead;
|
|
|
|
private:
|
|
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
|
|
|
|
virtual void closeEvent(QCloseEvent* e);
|
|
bool createMsgBoxUi(bool add, std::string &name);
|
|
std::string getCurUiShemeName(std::string name);
|
|
void save_scheme(void);
|
|
void cancel_setting(void);
|
|
std::string 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_buttonAboutClicked();
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|