code_app/modules/twainui/hg_settingdialog.h

177 lines
4.9 KiB
C
Raw Normal View History

2023-04-20 09:49:48 +00:00
#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"
2023-05-06 02:55:17 +00:00
#include "twain_user/twainui.h"
2023-04-20 09:49:48 +00:00
class hg_settingdialog : public QDialog
{
Q_OBJECT
int changed_count_;
bool save_;
bool clicked_gamma_;
2023-05-24 06:40:06 +00:00
bool quit_ = false;
2023-04-20 09:49:48 +00:00
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_;
2023-05-31 07:31:04 +00:00
QPushButton *m_pbtn_addNew;
2023-06-27 13:03:57 +00:00
QPushButton* m_pbtn_Save;
QPushButton *m_deleteCur;
QPushButton *m_deleteAll;
2023-04-20 09:49:48 +00:00
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:
2023-05-06 02:55:17 +00:00
explicit hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, bool showScan, const char* devName,
std::function<void(ui_result)> callback, QWidget *parent = nullptr);
2023-04-20 09:49:48 +00:00
~hg_settingdialog();
public:
2023-05-19 10:41:49 +00:00
static hg_settingdialog *GetSettingDialog();
2023-04-20 09:49:48 +00:00
void initUi();
void updateOpt();
void createUI();
void updateUIStatus();
QVector<QWidget*> find_control(int opt_num);
void keyPressEvent(QKeyEvent *e);
int get_changed_items(void);
int getCloseButtonCliked();
gb::sane_config_schm *getCurScheme();
2023-05-24 06:40:06 +00:00
void clear_callback(void)
{
quit_ = true;
m_callback = std::function<void(ui_result)>();
}
2023-04-20 09:49:48 +00:00
public:
enum closeButtonClicked
{
closeButtonOk = 0,
closeButtonCancel,
closeButtonNormal,
2023-04-20 09:49:48 +00:00
closeButtonScan,
};
int m_closeButton;
private:
2023-06-27 13:03:57 +00:00
gb::sane_config_schm* m_scheme;
2023-05-19 10:41:49 +00:00
static hg_settingdialog *hg_setting_ui_;
2023-04-20 09:49:48 +00:00
SANEAPI m_saneAPI;
SANE_Handle m_devHandle;
bool m_showScan;
2023-05-16 05:50:53 +00:00
std::string m_devName;
2023-05-06 02:55:17 +00:00
QTranslator m_translator;
QTranslator m_translator_qt;
int m_langCode;
2023-04-20 09:49:48 +00:00
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);
virtual bool eventFilter(QObject *target, QEvent *event) override;
2023-04-20 09:49:48 +00:00
bool createMsgBoxUi(bool add, std::string &name);
std::string getCurUiShemeName(std::string name);
void save_scheme(void);
void cancel_setting(void);
std::string getAppVersion();
2023-04-20 09:49:48 +00:00
void apply_current_scheme(void);
2023-06-01 09:18:46 +00:00
void setIcon();
2023-06-27 13:03:57 +00:00
void updateDefaultScheme();
void processIniFile();
void setDefault();
2023-04-20 09:49:48 +00:00
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();
2023-05-16 05:50:53 +00:00
void slot_buttonAboutClicked();
2023-04-20 09:49:48 +00:00
void slot_buttonScanClicked();
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_;
2023-05-06 02:55:17 +00:00
std::function<void(ui_result)> m_callback;
2023-04-20 09:49:48 +00:00
};
#endif // HG_SETTING_DIALOG_H