diff --git a/src/GUI/HotkeysMainWindow.cpp b/src/GUI/HotkeysMainWindow.cpp index 50bb82d..e8d998b 100644 --- a/src/GUI/HotkeysMainWindow.cpp +++ b/src/GUI/HotkeysMainWindow.cpp @@ -123,9 +123,9 @@ HotkeysMainWindow::HotkeysMainWindow(QWidget* parent) btnEmptyButton->setProperty("key", "null"); btnEmptyButton->setFixedWidth(PROGRAM_CONSTANTS->EMPTY_KEY_WIDTH); - pKeyboardFirstLine = CreateKeysOnKeyboard("QWERTYUIOP"); + pKeyboardFirstLine = CreateKeysOnKeyboard("QWERTYUIOP"); pKeyboardSecondLine = CreateKeysOnKeyboard("ASDFGHJKL"); - pKeyboardThirdLine = CreateKeysOnKeyboard("ZXCVBNM"); + pKeyboardThirdLine = CreateKeysOnKeyboard("ZXCVBNM"); pKeyboardThirdLine->addWidget(btnEmptyButton); @@ -184,17 +184,14 @@ void HotkeysMainWindow::ConfigureMenu() mnStatusBarChecbox->addAction(tr("Disable")); mnViewOptions->addMenu(mnStatusBarChecbox); menuBar()->addMenu(mnViewOptions); - - QMenu* mnSettingsOptions = new QMenu(tr("Settings")); - menuBar()->addMenu(mnSettingsOptions); - - QAction* actLanguage = new QAction(tr("Language")); - connect(actLanguage, &QAction::triggered, this, &HotkeysMainWindow::ActLanguage_Triggered); - mnSettingsOptions->addAction(actLanguage); + + QAction* actSettings = new QAction(tr("Settings")); + connect(actSettings, &QAction::triggered, this, &HotkeysMainWindow::ActLanguage_Triggered); + menuBar()->addAction(actSettings); QAction* actAbout = new QAction(tr("About")); connect(actAbout, &QAction::triggered, this, &HotkeysMainWindow::ActAbout_Triggered); - mnSettingsOptions->addAction(actAbout); + menuBar()->addAction(actAbout); } void HotkeysMainWindow::SetGameObjectList(const QString& factionShortName) @@ -479,12 +476,6 @@ void HotkeysMainWindow::ActAbout_Triggered() ~Qt::WindowContextHelpButtonHint | Qt::MSWindowsFixedSizeDialogHint); - connect(pAboutDialog, &QDialog::finished, this, [this]() - { - pAboutDialog->deleteLater(); - pAboutDialog = nullptr; - }); - QVBoxLayout* ltMainBlock = new QVBoxLayout(); ltMainBlock->addLayout(lblContent); @@ -492,78 +483,27 @@ void HotkeysMainWindow::ActAbout_Triggered() pAboutDialog->show(); pAboutDialog->raise(); pAboutDialog->activateWindow(); + + connect(pAboutDialog, &QDialog::finished, this, [this]() + { + pAboutDialog->deleteLater(); + pAboutDialog = nullptr; + }); } void HotkeysMainWindow::ActLanguage_Triggered() { - // if dialog already exists - if (pWindowToChangeLanguage != nullptr) + if (pSettingsWindow != nullptr) { - pWindowToChangeLanguage->activateWindow(); + pSettingsWindow->show(); return; } - Languages currLang = PROGRAM_CONSTANTS->pSettingsFile->GetLanguage(); - Languages actLang = Languages::English; - - pWindowToChangeLanguage = new QDialog{this}; - pWindowToChangeLanguage->setWindowTitle(tr("Lanugage")); - pWindowToChangeLanguage->setObjectName("WindowToChangeLanguage"); - pWindowToChangeLanguage->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - // pWindowToChangeLanguage->setFixedSize(LANGUAGE_CHANGE_SIZE); - pWindowToChangeLanguage->setWindowFlags(pWindowToChangeLanguage->windowFlags() & - ~Qt::WindowContextHelpButtonHint | - Qt::MSWindowsFixedSizeDialogHint); - - QHBoxLayout* ltLanguageAndCombobox = new QHBoxLayout(); - QLabel* lblLanguage = new QLabel(tr("LANGUAGE")); - QComboBox* cmbLangList = new QComboBox(); - - for (int i = 0; i < static_cast(Languages::Count); ++i) - cmbLangList->addItem(Unsorted::GetLanguageFullName(static_cast(i))); - - cmbLangList->setCurrentIndex(static_cast(currLang)); - - ltLanguageAndCombobox->addWidget(lblLanguage); - ltLanguageAndCombobox->addWidget(cmbLangList); - - QHBoxLayout* ltOkAndCancel = new QHBoxLayout(); - QPushButton* btnOk = new QPushButton(tr("OK")); - QPushButton* btnCancel = new QPushButton(tr("Cancel")); - ltOkAndCancel->addWidget(btnOk); - ltOkAndCancel->addWidget(btnCancel); - - QVBoxLayout* ltMainBlock = new QVBoxLayout(); - ltMainBlock->addLayout(ltLanguageAndCombobox); - ltMainBlock->addLayout(ltOkAndCancel); - - pWindowToChangeLanguage->setLayout(ltMainBlock); - pWindowToChangeLanguage->show(); - pWindowToChangeLanguage->raise(); - pWindowToChangeLanguage->activateWindow(); - - // TODO: Make it work. Need to recreate HotkeysMainWindow through WindowManager - connect(cmbLangList, QOverload::of(&QComboBox::activated), this, &HotkeysMainWindow::languageChanged); - - connect(pWindowToChangeLanguage, &QDialog::finished, this, [this]() - { - pWindowToChangeLanguage->deleteLater(); - pWindowToChangeLanguage = nullptr; - }); - - connect(btnCancel, &QPushButton::clicked, this, [this]() - { - pWindowToChangeLanguage->deleteLater(); - pWindowToChangeLanguage = nullptr; - }); - - // TODO: Make there emit signal to WindowsManager and - // show 2nd window to ask to apply new language and reset unsaved changes. - connect(btnOk, &QPushButton::clicked, this, [this]() - { - pWindowToChangeLanguage->deleteLater(); - pWindowToChangeLanguage = nullptr; - }); + pSettingsWindow = new SettingsWindow(); + pSettingsWindow->setObjectName(nameof(pSettingsWindow)); + pSettingsWindow->setWindowTitle(tr("Settings")); + pSettingsWindow->setWindowModality(Qt::WindowModality::ApplicationModal); + pSettingsWindow->show(); } QHBoxLayout* HotkeysMainWindow::CreateKeysOnKeyboard(const QString& str) diff --git a/src/GUI/HotkeysMainWindow.hpp b/src/GUI/HotkeysMainWindow.hpp index b8d7c7a..9b85686 100644 --- a/src/GUI/HotkeysMainWindow.hpp +++ b/src/GUI/HotkeysMainWindow.hpp @@ -6,6 +6,7 @@ #include #include "../Parsers/JSONFile.hpp" +#include "SettingsWindow.hpp" #include "ActionHotkeyWidget.hpp" #include "Faction.hpp" @@ -27,9 +28,9 @@ class HotkeysMainWindow final : public QMainWindow QScrollArea* pKeyboardWindow = nullptr; // Renewable widgets - QTabWidget* pHotkeysPanelsWidget = nullptr; - QDialog* pAboutDialog = nullptr; - QDialog* pWindowToChangeLanguage = nullptr; + QTabWidget* pHotkeysPanelsWidget = nullptr; + QDialog* pAboutDialog = nullptr; + SettingsWindow* pSettingsWindow = nullptr; QVector> vHotkeyWidgets; diff --git a/src/GUI/Theme/Styles.css b/src/GUI/Theme/Styles.css index a34843b..c0fa4e8 100644 --- a/src/GUI/Theme/Styles.css +++ b/src/GUI/Theme/Styles.css @@ -56,7 +56,7 @@ QComboBox::down-arrow { image: url(Resources/Theme/ScrollArrowDown.webp); } QComboBox::up-arrow { image: url(Resources/Theme/ScrollArrowUp.webp); } /* Start widget style setting */ -LoadFromTheFileWindow, SetUpWindowsWrapper, LoadFromTheGameWindow +LoadFromTheFileWindow, SetUpWindowsWrapper, LoadFromTheGameWindow, SettingsWindow#pSettingsWindow { border-image: url(Resources/Theme/StartMenuBackground.webp) 0 0 0 0 stretch stretch; background-color: black; diff --git a/src/GUI/Translations/ru.ts b/src/GUI/Translations/ru.ts index 5699458..fb7680e 100644 --- a/src/GUI/Translations/ru.ts +++ b/src/GUI/Translations/ru.ts @@ -119,69 +119,65 @@ + Settings Настройки - Language - Язык + Язык - - + + About О программе - + Layout %1 Раскладка %1 - + Authors: Авторы: - + Version: Версия: - + Program licensed with Программа лицензирована под - + GitHub repository: Репозиторий на GitHub: - + Support development: Поддержать разработку: - Lanugage - Язык + Язык - LANGUAGE - ЯЗЫК + ЯЗЫК - OK - Ок + Ок - Cancel - Отмена + Отмена Program licensed by GNU GPL v3