diff --git a/outputdialog.cpp b/outputdialog.cpp index 217c494..b1c0502 100644 --- a/outputdialog.cpp +++ b/outputdialog.cpp @@ -22,7 +22,7 @@ OutputDialog::OutputDialog(QWidget *parent, std::vector *checks) columns = new std::vector; - OutputColumnModel *model = new OutputColumnModel(&(*columns), this); + OutputColumnModel *model = new OutputColumnModel(columns, this); ui->listView->setModel(model); diff --git a/outputdialog.h b/outputdialog.h index 2380acc..9c0a461 100644 --- a/outputdialog.h +++ b/outputdialog.h @@ -19,15 +19,6 @@ class OutputDialog : public QDialog { std::vector *columns; Settings *settings; - const std::map column_names = { - {"date", ColumnType::date}, - {"goods_name", ColumnType::goods_name}, - {"goods_price_per_unit", ColumnType::goods_price_per_unit}, - {"goods_quantity", ColumnType::goods_quantity}, - {"goods_net_weight", ColumnType::goods_net_weight}, - {"goods_total", ColumnType::goods_total} - }; - public: explicit OutputDialog(QWidget *parent = nullptr, std::vector *checks = nullptr); ~OutputDialog(); diff --git a/scenes/settingsdialog.ui b/scenes/settingsdialog.ui index f53ee43..efa58e7 100644 --- a/scenes/settingsdialog.ui +++ b/scenes/settingsdialog.ui @@ -16,6 +16,12 @@ + + + 0 + 0 + + true @@ -24,14 +30,28 @@ 0 0 - 659 - 634 + 673 + 554 - + + + + + + + + + + + Print total + + + + @@ -45,161 +65,52 @@ - - - - Goods quantity alias - - - - - - - - - - - - - - - - - - - Goods price per unit alias - - - - - - - - + + Print header - - - - Goods quantity position - - - - - - - - - - Goods net weight position - - - - - - - - - - - - - Goods name position - - - - - - - Print total - - - - - - - Date name position - - - - - - - Goods price per unit position - - - - + - - - - Goods total position - - - - - - - - - Goods name alias - - - - - - - - - - Goods total alias - - - - - - - - - - - - - - - + Language - - - - Goods net weight alias + + + + + 0 + 0 + + + + true + + + QAbstractItemView::DragDropMode::InternalMove + + + Qt::DropAction::TargetMoveAction + + + true + + + QAbstractItemView::SelectionBehavior::SelectRows - - - - Date name alias - - - - - - diff --git a/settingsdialog.cpp b/settingsdialog.cpp index b147112..f69ac75 100644 --- a/settingsdialog.cpp +++ b/settingsdialog.cpp @@ -7,6 +7,7 @@ #include #include +#include SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::settingsdialog), @@ -15,23 +16,24 @@ SettingsDialog::SettingsDialog(QWidget *parent) ui->setupUi(this); - ui->goodsNamePositionSpin->setValue(this->settings.get_all_settings()["output_order"]["goods_name"]["position"]); - ui->goodsNameAliasEdit->setText(QString::fromStdString(this->settings.get_all_settings()["output_order"]["goods_name"]["name"])); + columns = new std::vector; - ui->goodsPricePerUnitPositionSpin->setValue(this->settings.get_all_settings()["output_order"]["goods_price_per_unit"]["position"]); - ui->goodsPricePerUnitAliasEdit->setText(QString::fromStdString(this->settings.get_all_settings()["output_order"]["goods_price_per_unit"]["name"])); + OutputColumnModel *model = new OutputColumnModel(columns, this); - ui->goodsQuantityPositionSpin->setValue(this->settings.get_all_settings()["output_order"]["goods_quantity"]["position"]); - ui->goodsQuantityAliasEdit->setText(QString::fromStdString(this->settings.get_all_settings()["output_order"]["goods_quantity"]["name"])); + ui->outputOptionsListView->setModel(model); - ui->goodsNetWeightPositionSpin->setValue(this->settings.get_all_settings()["output_order"]["goods_net_weight"]["position"]); - ui->goodsNetWeightAliasEdit->setText(QString::fromStdString(this->settings.get_all_settings()["output_order"]["goods_net_weight"]["name"])); + for (unsigned short i = 0; i < 6; i ++) + columns->push_back(OutputColumn(tr("Кто здесь?"), ColumnType::date)); - ui->goodsTotalPositionSpin->setValue(this->settings.get_all_settings()["output_order"]["goods_total"]["position"]); - ui->goodsTotalAliasEdit->setText(QString::fromStdString(this->settings.get_all_settings()["output_order"]["goods_total"]["name"])); + for (auto &column : column_names) { + std::string name = settings.get_all_settings()["output_order"][column.first]["name"]; + unsigned short position = settings.get_all_settings()["output_order"][column.first]["position"]; + ColumnType type = column.second; + columns->at(position - 1) = (OutputColumn(QString::fromStdString(name), type)); + } - ui->printHeaderCheckBox->setChecked(this->settings.get_all_settings()["print_header"]); - ui->printTotalCheckBox->setChecked(this->settings.get_all_settings()["print_total"]); + ui->printHeaderCheckBox->setChecked(settings.get_all_settings()["print_header"]); + ui->printTotalCheckBox->setChecked(settings.get_all_settings()["print_total"]); int currentLanguageIndex = 0; bool languageSettingPresent = false; @@ -51,59 +53,6 @@ SettingsDialog::SettingsDialog(QWidget *parent) } -void SettingsDialog::on_goodsNamePositionSpin_valueChanged(int value) { - this->settings.get_all_settings()["output_order"]["goods_name"]["position"] = - value; -} -void SettingsDialog::on_goodsNameAliasEdit_editingFinished() { - this->settings.get_all_settings()["output_order"]["goods_name"]["name"] = - ui->goodsNameAliasEdit->text().toStdString(); -} - -void SettingsDialog::on_goodsPricePerUnitPositionSpin_valueChanged(int value) { - this->settings - .get_all_settings()["output_order"]["goods_price_per_unit"]["position"] = - value; -} - -void SettingsDialog::on_goodsPricePerUnitAliasEdit_editingFinished() { - this->settings.get_all_settings()["output_order"]["goods_price_per_unit"]["name"] = - ui->goodsPricePerUnitAliasEdit->text().toStdString(); -} - -void SettingsDialog::on_goodsQuantityPositionSpin_valueChanged(int value) { - this->settings - .get_all_settings()["output_order"]["goods_quantity"]["position"] = value; -} - -void SettingsDialog::on_goodsQuantityAliasEdit_editingFinished() { - this->settings.get_all_settings()["output_order"]["goods_quantity"]["name"] = - ui->goodsQuantityAliasEdit->text().toStdString(); -} - -void SettingsDialog::on_goodsNetWeightPositionSpin_valueChanged(int value) { - this->settings - .get_all_settings()["output_order"]["goods_net_weight"]["position"] = - value; -} - -void SettingsDialog::on_goodsNetWeightAliasEdit_editingFinished() { - this->settings.get_all_settings()["output_order"]["goods_net_weight"]["name"] = - ui->goodsNetWeightAliasEdit->text().toStdString(); -} - - -void SettingsDialog::on_goodsTotalPositionSpin_valueChanged(int value) { - this->settings - .get_all_settings()["output_order"]["goods_total"]["position"] = - value; -} - -void SettingsDialog::on_goodsTotalAliasEdit_editingFinished() { - this->settings.get_all_settings()["output_order"]["goods_total"]["name"] = - ui->goodsTotalAliasEdit->text().toStdString(); -} - void SettingsDialog::on_printHeaderCheckBox_stateChanged(int value) { this->settings.get_all_settings()["print_header"] = (value? true : false); } @@ -112,7 +61,16 @@ void SettingsDialog::on_printTotalCheckBox_stateChanged(int value) { this->settings.get_all_settings()["print_total"] = (value? true : false); } -void SettingsDialog::on_buttonBox_accepted() { this->settings.flush(); } +void SettingsDialog::on_buttonBox_accepted() { + for (int i = 0; i < columns->size(); i ++) { + OutputColumn &column = columns->at(i); + std::string key = find_key_by_value(column_names, column.get_column_type()); + settings.get_all_settings()["output_order"][key]["name"] = column.get_text().toStdString(); + settings.get_all_settings()["output_order"][key]["position"] = i + 1; + } + + this->settings.flush(); +} void SettingsDialog::on_buttonBox_rejected() { this->close(); } diff --git a/settingsdialog.h b/settingsdialog.h index ff2c9ee..b853b8a 100644 --- a/settingsdialog.h +++ b/settingsdialog.h @@ -2,6 +2,7 @@ #define SETTINGSDIALOG_H #include +#include #include namespace Ui { @@ -11,28 +12,13 @@ class settingsdialog; class SettingsDialog : public QDialog { Q_OBJECT Settings settings; + std::vector *columns; + public: explicit SettingsDialog(QWidget *parent = nullptr); ~SettingsDialog(); private slots: - void on_goodsNamePositionSpin_valueChanged(int arg1); - void on_goodsNameAliasEdit_editingFinished(); - - void on_goodsPricePerUnitPositionSpin_valueChanged(int arg1); - void on_goodsPricePerUnitAliasEdit_editingFinished(); - - void on_goodsQuantityPositionSpin_valueChanged(int arg1); - void on_goodsQuantityAliasEdit_editingFinished(); - - void on_goodsNetWeightPositionSpin_valueChanged(int arg1); - void on_goodsNetWeightAliasEdit_editingFinished(); - - - - void on_goodsTotalPositionSpin_valueChanged(int arg1); - void on_goodsTotalAliasEdit_editingFinished(); - void on_printTotalCheckBox_stateChanged(int arg1); void on_printHeaderCheckBox_stateChanged(int arg1); diff --git a/translations/en_US.ts b/translations/en_US.ts index 50c90fe..1403f41 100644 --- a/translations/en_US.ts +++ b/translations/en_US.ts @@ -634,12 +634,17 @@ SettingsDialog - + + Кто здесь? + + + + You need to restart program to apply language changes You need to restart program to apply language changes - + Restart required Restart required @@ -670,41 +675,37 @@ Dialog - Goods name position - Goods name position + Goods name position - Goods price per unit alias - Goods price per unit alias + Goods price per unit alias - Date name position - Date name position + Date name position - + Language Language - Date name alias - Date name alias + Date name alias TextLabel Language - + en_US en_US - + ru_RU ru_RU @@ -713,33 +714,29 @@ Choose - + Print header Print header - Goods net weight alias - Goods net weight alias + Goods net weight alias Stores modules url Stores modules url - Goods total alias - Goods total alias + Goods total alias - Goods name alias - Goods name alias + Goods name alias - Goods quantity alias - Goods quantity alias + Goods quantity alias Stores modules directory @@ -750,31 +747,27 @@ OFD modules directory - Goods price per unit position - Goods price per unit position + Goods price per unit position - Goods net weight position - Goods net weight position + Goods net weight position OFD modules url OFD modules url - Goods total position - Goods total position + Goods total position - Goods quantity position - Goods quantity position + Goods quantity position - + Print total Print total diff --git a/translations/ru_RU.ts b/translations/ru_RU.ts index 9b6112c..10553d4 100644 --- a/translations/ru_RU.ts +++ b/translations/ru_RU.ts @@ -618,12 +618,17 @@ SettingsDialog - + + Кто здесь? + + + + You need to restart program to apply language changes Требуется перезагрузить программу, чтобы применить изменения языка - + Restart required Требуется перезагрузка @@ -654,41 +659,29 @@ Диалог - Goods name position - Позиция имени товара + Позиция имени товара - Goods price per unit alias - Алиас цены товара + Алиас цены товара - - Date name position - - - - + Language Язык - - - Date name alias - - TextLabel Язык - + en_US en_US - + ru_RU ru_RU @@ -697,33 +690,29 @@ Выбрать - + Print header Печатать заголовок - Goods net weight alias - Алиас массы нетто товара + Алиас массы нетто товара Stores modules url URL модулей магазина - Goods total alias - Алиас всего за продукт + Алиас всего за продукт - Goods name alias - Алиас имени товара + Алиас имени товара - Goods quantity alias - Алиас количества товара + Алиас количества товара Stores modules directory @@ -734,31 +723,27 @@ Директория модулей ОФД - Goods price per unit position - Позиция центы товара + Позиция центы товара - Goods net weight position - Позиция массы нетто товара + Позиция массы нетто товара OFD modules url URL модулей ОФД - Goods total position - Позиция всего за товар + Позиция всего за товар - Goods quantity position - Позиция количества товара + Позиция количества товара - + Print total Печатать Итого diff --git a/utils/utils.h b/utils/utils.h index c26b8a6..3a35621 100644 --- a/utils/utils.h +++ b/utils/utils.h @@ -12,6 +12,15 @@ std::wstring from_utf8(std::string string); std::string get_path_relative_to_home(std::string path); +const std::map column_names = { + {"date", ColumnType::date}, + {"goods_name", ColumnType::goods_name}, + {"goods_price_per_unit", ColumnType::goods_price_per_unit}, + {"goods_quantity", ColumnType::goods_quantity}, + {"goods_net_weight", ColumnType::goods_net_weight}, + {"goods_total", ColumnType::goods_total} +}; + // template // K find_key_by_value(std::map &m, V value); std::string find_key_by_value(const std::map &m, ColumnType value);