#include "gui\settingswidget.h" #include "ui_settingswidget.h" #include "legacyapp.h" #include "filesystem.h" #include #include #include SettingsWidget::SettingsWidget(LegacyApp *_app, QWidget *parent) : QWidget(parent), ui(new Ui::SettingsWidget), app(_app) { ui->setupUi(this); ui_update_timer.setInterval(500); connect(&ui_update_timer, &QTimer::timeout, this, &SettingsWidget::updateUI); ui_update_timer.start(); } SettingsWidget::~SettingsWidget() { ui_update_timer.stop(); delete ui; } void SettingsWidget::updateUI() { QString path = app->properties.value("settings/lotro_folder", "(не выбрана)").toString(); ui->folder_value_common->setText(path); ui->data_protection_checkbox_common->setChecked(app->properties.value("settings/data_protection", 0).toBool()); ui->restore_checkbox_common->setChecked(app->properties.value("settings/auto_restore", 0).toBool()); ui->download_updates_checkbox_common->setChecked(app->properties.value("settings/download_updates", 0).toBool()); ui->expert_tabs_checkbox_common->setChecked(app->properties.value("settings/expert_mode", 0).toBool()); ui->restrict_download_speed_checkbox_common->setChecked(app->properties.value("settings/limit_download_speed", 0).toBool()); ui->download_restrict_slider->setValue(app->properties.value("settings/download_speed", 64).toInt()); if (app->properties.value("settings/expert_mode", 0).toBool()) { ui->management_widget->show(); ui->data_protection_checkbox_common->show(); ui->restore_checkbox_common->show(); } else { ui->management_widget->hide(); ui->data_protection_checkbox_common->hide(); ui->restore_checkbox_common->hide(); } int locale_index = 0; QString value = app->properties.value("settings/locale", "English").toString(); if (value == "English") locale_index = 0; if (value == "DE") locale_index = 1; if (value == "FR") locale_index = 2; ui->lotro_patch_language_combobox_common->setCurrentIndex(locale_index); } void SettingsWidget::on_download_restrict_slider_valueChanged(int value) { if (value >= 1024) { double new_value = double(value) / 1024; ui->download_speed_label_common->setText(QString::number(new_value, 'g', 2) + " Мб/с"); } else { ui->download_speed_label_common->setText(QString::number(value) + " Кб/с"); } app->properties.setValue("settings/download_speed", value); app->properties.sync(); } void SettingsWidget::on_interface_scale_combobox_common_currentIndexChanged(const QString &arg1) { int value = arg1.left(arg1.length() - 1).toInt(); app->window.changeFontSizeRecursive(value, &app->window); app->window.resize(900 * value / 100, 650 * value / 100); app->properties.setValue("settings/ui_scale", value); app->properties.sync(); } void SettingsWidget::on_change_folder_button_clicked() { QStringList known_paths = FileSystem::recognizeRegistryLotroPath(); QString template_path = known_paths.size() > 0 ? known_paths[0] : ""; QString str = QFileDialog::getOpenFileName(0, "Расположение игры", template_path, "LotroLauncher.exe"); QString path = str.replace("/LotroLauncher.exe", "").replace("\\", "/").replace("//", "/"); if (!FileSystem::fileExists(path + "/LotroLauncher.exe")) { QMessageBox error_box("Ошибка!", "Похоже, указана неверная папка с игрой. Не могу найти файл LotroLauncher.exe", QMessageBox::Critical, QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); return; } if (!FileSystem::fileExists(path + "/client_local_English.dat")) { QMessageBox pmbx("Файл данных не найден", "Файл данных client_local_English.dat не обнаружен в папке с игрой. Запустить лаунчер игры с целью скачать недостающие данные?", QMessageBox::Warning, QMessageBox::Yes, QMessageBox::No, QMessageBox::NoButton); if (pmbx.exec() == QMessageBox::Yes) { // Start LotRO; return; } else { // Set status Файл данных не найден } } app->properties.setValue("settings/lotro_folder", path); app->properties.sync(); ui->folder_value_common->setText(path); } void SettingsWidget::on_data_protection_checkbox_common_stateChanged(int arg1) { app->properties.setValue("settings/data_protection", arg1); app->properties.sync(); } void SettingsWidget::on_restore_checkbox_common_stateChanged(int arg1) { app->properties.setValue("settings/auto_restore", arg1); app->properties.sync(); } void SettingsWidget::on_download_updates_checkbox_common_stateChanged(int arg1) { app->properties.setValue("settings/download_updates", arg1); app->properties.sync(); } void SettingsWidget::on_expert_tabs_checkbox_common_stateChanged(int arg1) { app->properties.setValue("settings/expert_mode", arg1); app->properties.sync(); } void SettingsWidget::on_restrict_download_speed_checkbox_common_stateChanged(int arg1) { app->properties.setValue("settings/limit_download_speed", arg1); app->properties.sync(); } void SettingsWidget::on_lotro_patch_language_combobox_common_activated(int index) { QString value = ""; if (index == 0) value = "English"; if (index == 1) value = "DE"; if (index == 2) value = "FR"; app->properties.setValue("settings/locale", value); app->properties.sync(); }