From 9e4cef015d2e2b748b5898a8b793b77a1fe32619 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Mon, 19 Dec 2022 19:12:44 +0200 Subject: [PATCH] Initial test version of selectable translations for launcher. --- launcher/CMakeLists.txt | 6 +- launcher/lobby/lobby_moc.ui | 4 +- launcher/lobby/lobbyroomrequest_moc.ui | 17 +- launcher/main.cpp | 5 + launcher/mainwindow_moc.cpp | 51 +- launcher/mainwindow_moc.h | 4 +- launcher/mainwindow_moc.ui | 315 +++++--- launcher/modManager/cmodlistview_moc.ui | 12 +- launcher/settingsView/csettingsview_moc.cpp | 18 +- launcher/settingsView/csettingsview_moc.h | 2 - launcher/settingsView/csettingsview_moc.ui | 839 ++++++++++---------- launcher/translation/launcher_uk.ts | 536 +++++++++++++ 12 files changed, 1210 insertions(+), 599 deletions(-) create mode 100644 launcher/translation/launcher_uk.ts diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 5764c38a1..319b1ea06 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -87,6 +87,10 @@ else() qt5_wrap_ui(launcher_UI_HEADERS ${launcher_FORMS}) endif() +find_package(Qt5LinguistTools) +set(launcher_TS translation/launcher_pl.ts translation/launcher_ru.ts translation/launcher_uk.ts) +qt5_add_translation( QM_FILES ${launcher_TS} ) + if(WIN32) set(launcher_ICON VCMI_launcher.rc) endif() @@ -94,7 +98,7 @@ endif() if(BUILD_SINGLE_APP) add_library(vcmilauncher STATIC ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS}) else() - add_executable(vcmilauncher WIN32 ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS} ${launcher_ICON}) + add_executable(vcmilauncher WIN32 ${QM_FILES} ${launcher_SRCS} ${launcher_HEADERS} ${launcher_UI_HEADERS} ${launcher_ICON}) endif() if(WIN32) diff --git a/launcher/lobby/lobby_moc.ui b/launcher/lobby/lobby_moc.ui index 44d410903..e859f7f7c 100644 --- a/launcher/lobby/lobby_moc.ui +++ b/launcher/lobby/lobby_moc.ui @@ -11,7 +11,7 @@ - Form + @@ -52,7 +52,7 @@ - 127.0.0.1:5002 + 127.0.0.1:5002 diff --git a/launcher/lobby/lobbyroomrequest_moc.ui b/launcher/lobby/lobbyroomrequest_moc.ui index b9ef935fe..a05741970 100644 --- a/launcher/lobby/lobbyroomrequest_moc.ui +++ b/launcher/lobby/lobbyroomrequest_moc.ui @@ -51,39 +51,42 @@ 0 + + 2 + - 2 + 2 - 3 + 3 - 4 + 4 - 5 + 5 - 6 + 6 - 7 + 7 - 8 + 8 diff --git a/launcher/main.cpp b/launcher/main.cpp index 7180cb1d9..8cb856c22 100644 --- a/launcher/main.cpp +++ b/launcher/main.cpp @@ -32,6 +32,11 @@ int main(int argc, char * argv[]) { #endif QApplication vcmilauncher(argc, argv); + + //QTranslator translator; + //translator.load("./launcher_uk.qm"); + //vcmilauncher.installTranslator(&translator); + MainWindow mainWindow; mainWindow.show(); result = vcmilauncher.exec(); diff --git a/launcher/mainwindow_moc.cpp b/launcher/mainwindow_moc.cpp index 5b71b9043..38951556a 100644 --- a/launcher/mainwindow_moc.cpp +++ b/launcher/mainwindow_moc.cpp @@ -68,41 +68,13 @@ MainWindow::MainWindow(QWidget * parent) move(position); } - //set default margins - - auto width = ui->startGameTitle->fontMetrics().boundingRect(ui->startGameTitle->text()).width(); - if(ui->startGameButton->iconSize().width() < width) - { - ui->startGameButton->setIconSize(QSize(width, width)); - } - auto tab_icon_size = ui->tabSelectList->iconSize(); - if(tab_icon_size.width() < width) - { - ui->tabSelectList->setIconSize(QSize(width, width + tab_icon_size.height() - tab_icon_size.width())); - ui->tabSelectList->setGridSize(QSize(width, width)); - // 4 is a dirty hack to make it look right - ui->tabSelectList->setMaximumWidth(width + 4); - } ui->tabListWidget->setCurrentIndex(0); ui->settingsView->isExtraResolutionsModEnabled = ui->modlistView->isExtraResolutionsModEnabled(); ui->settingsView->setDisplayList(); connect(ui->modlistView, &CModListView::extraResolutionsEnabledChanged, ui->settingsView, &CSettingsView::fillValidResolutions); - - connect(ui->tabSelectList, &QListWidget::currentRowChanged, [this](int i) { -#ifdef Q_OS_IOS - if(auto widget = qApp->focusWidget()) - widget->clearFocus(); -#endif - ui->tabListWidget->setCurrentIndex(i); - }); -#ifdef Q_OS_IOS - QScroller::grabGesture(ui->tabSelectList, QScroller::LeftMouseButtonGesture); - ui->tabSelectList->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); -#endif - if(settings["launcher"]["updateOnStartup"].Bool()) UpdateDialog::showUpdateDialog(false); } @@ -122,12 +94,25 @@ void MainWindow::on_startGameButton_clicked() startGame({}); } -void MainWindow::on_tabSelectList_currentRowChanged(int currentRow) -{ - ui->startGameButton->setEnabled(currentRow != TabRows::LOBBY); -} - const CModList & MainWindow::getModList() const { return ui->modlistView->getModList(); } + +void MainWindow::on_modslistButton_clicked() +{ + ui->startGameButton->setEnabled(true); + ui->tabListWidget->setCurrentIndex(TabRows::MODS); +} + +void MainWindow::on_settingsButton_clicked() +{ + ui->startGameButton->setEnabled(true); + ui->tabListWidget->setCurrentIndex(TabRows::SETTINGS); +} + +void MainWindow::on_lobbyButton_clicked() +{ + ui->startGameButton->setEnabled(false); + ui->tabListWidget->setCurrentIndex(TabRows::LOBBY); +} diff --git a/launcher/mainwindow_moc.h b/launcher/mainwindow_moc.h index 0603790de..189f3f4f3 100644 --- a/launcher/mainwindow_moc.h +++ b/launcher/mainwindow_moc.h @@ -46,5 +46,7 @@ public slots: void on_startGameButton_clicked(); private slots: - void on_tabSelectList_currentRowChanged(int currentRow); + void on_modslistButton_clicked(); + void on_settingsButton_clicked(); + void on_lobbyButton_clicked(); }; diff --git a/launcher/mainwindow_moc.ui b/launcher/mainwindow_moc.ui index 01918642a..76f8cbfe1 100644 --- a/launcher/mainwindow_moc.ui +++ b/launcher/mainwindow_moc.ui @@ -31,153 +31,129 @@ - - + + - - 89 + + 1 0 - 89 - 89 + 0 + 0 - - Qt::ScrollBarAlwaysOff + + Settings - - Qt::ScrollBarAlwaysOff - - - QAbstractScrollArea::AdjustToContents - - - QAbstractItemView::NoEditTriggers - - - false - - - QAbstractItemView::NoDragDrop - - - QAbstractItemView::SelectItems + + + icons:menu-settings.pngicons:menu-settings.png - 89 - 89 + 60 + 60 - - QListView::Static - - - QListView::TopToBottom - - - false - - - QListView::Adjust - - - - 100 - 100 - - - - QListView::IconMode - - + true - + false - - - Mods - - - - icons:menu-mods.pngicons:menu-mods.png - - - - - Settings - - - - icons:menu-settings.pngicons:menu-settings.png - - - - - Lobby - - - - icons:menu-lobby.pngicons:menu-lobby.png - - + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + Qt::Vertical + + + + 80 + 0 + + + + - + + + + 1 + 0 + + + + + 0 + 0 + + + + Lobby + + + + icons:menu-lobby.pngicons:menu-lobby.png + + + + 60 + 60 + + + + true + + + false + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + + + 1 + 0 + + + + + 0 + 0 + + + 75 true - Start game - - - Qt::AlignCenter - - - - - - - true - - - - 0 - 0 - - - - 0 - - - - - - - - - - - 89 - 0 - - - - - 89 - 89 - - - - Play + @@ -198,6 +174,104 @@ Qt::ToolButtonIconOnly + + false + + + + + + + + 75 + true + + + + Start game + + + Qt::AlignCenter + + + + + + + true + + + + 10 + 0 + + + + 0 + + + + + + + + + + + 1 + 0 + + + + + 0 + 0 + + + + Mods + + + + icons:menu-mods.pngicons:menu-mods.png + + + + 60 + 60 + + + + true + + + true + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + + QFrame::Plain + + + 1 + + + 0 + + + Qt::Vertical + @@ -225,7 +299,6 @@ - tabSelectList startGameButton diff --git a/launcher/modManager/cmodlistview_moc.ui b/launcher/modManager/cmodlistview_moc.ui index 50542e75d..5e546e279 100644 --- a/launcher/modManager/cmodlistview_moc.ui +++ b/launcher/modManager/cmodlistview_moc.ui @@ -6,12 +6,12 @@ 0 0 - 596 + 680 342 - Form + @@ -252,11 +252,11 @@ true - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"><br /></p></body></html> +</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;"><br /></p></body></html> true diff --git a/launcher/settingsView/csettingsview_moc.cpp b/launcher/settingsView/csettingsview_moc.cpp index fbae12bec..f19164771 100644 --- a/launcher/settingsView/csettingsview_moc.cpp +++ b/launcher/settingsView/csettingsview_moc.cpp @@ -72,12 +72,10 @@ void CSettingsView::loadSettings() #ifdef Q_OS_IOS ui->comboBoxFullScreen->setCurrentIndex(true); - ui->checkBoxFullScreen->setChecked(false); - for (auto widget : std::initializer_list{ui->comboBoxFullScreen, ui->checkBoxFullScreen}) - widget->setDisabled(true); + ui->comboBoxFullScreen->setDisabled(true); #else ui->comboBoxFullScreen->setCurrentIndex(settings["video"]["fullscreen"].Bool()); - ui->checkBoxFullScreen->setChecked(settings["video"]["realFullscreen"].Bool()); + //ui->checkBoxFullScreen->setChecked(settings["video"]["realFullscreen"].Bool()); #endif ui->comboBoxFriendlyAI->setCurrentText(QString::fromStdString(settings["server"]["friendlyAI"].String())); @@ -192,14 +190,10 @@ void CSettingsView::on_comboBoxResolution_currentTextChanged(const QString & arg void CSettingsView::on_comboBoxFullScreen_currentIndexChanged(int index) { - Settings node = settings.write["video"]["fullscreen"]; - node->Bool() = index; -} - -void CSettingsView::on_checkBoxFullScreen_stateChanged(int state) -{ - Settings node = settings.write["video"]["realFullscreen"]; - node->Bool() = state; + Settings nodeFullscreen = settings.write["video"]["fullscreen"]; + Settings nodeRealFullscreen = settings.write["video"]["realFullscreen"]; + nodeFullscreen->Bool() = index != 0; + nodeFullscreen->Bool() = index == 2; } void CSettingsView::on_comboBoxAutoCheck_currentIndexChanged(int index) diff --git a/launcher/settingsView/csettingsview_moc.h b/launcher/settingsView/csettingsview_moc.h index fba5bd2c6..6ca30a741 100644 --- a/launcher/settingsView/csettingsview_moc.h +++ b/launcher/settingsView/csettingsview_moc.h @@ -32,8 +32,6 @@ public slots: void fillValidResolutions(bool isExtraResolutionsModEnabled); private slots: - void on_checkBoxFullScreen_stateChanged(int state); - void on_comboBoxResolution_currentTextChanged(const QString & arg1); void on_comboBoxFullScreen_currentIndexChanged(int index); diff --git a/launcher/settingsView/csettingsview_moc.ui b/launcher/settingsView/csettingsview_moc.ui index a9c12aadb..27568bafa 100644 --- a/launcher/settingsView/csettingsview_moc.ui +++ b/launcher/settingsView/csettingsview_moc.ui @@ -11,7 +11,7 @@ - Form + @@ -26,47 +26,67 @@ 0 - - - - - true - + + + + false - AI on the map + Change - - - - - true - - + + - Video + Open - - + + - Show intro + User data directory - - - - 1024 + + + + Qt::Horizontal - - 65535 + + QSizePolicy::Fixed - - 3030 + + + 8 + 20 + + + + + + + + 1 + + + + Off + + + + + On + + + + + + + + Open @@ -79,28 +99,7 @@ - /usr/share/vcmi - - - - - - - Heroes III character set - - - - - - - Real fullscreen mode - - - - - - - Resolution + /usr/share/vcmi @@ -111,22 +110,63 @@ - - - - false + + + + BattleAI - - - 150 - 0 - + + + BattleAI + + + + + StupidAI + + + + + + + + 1024 + + + 65535 + + + 3030 + + + + + + + + 75 + true + - /home/user/.vcmi + Repositories - - true + + + + + + + + + Check for updates + + + + + + + Neutral AI @@ -145,12 +185,25 @@ On + + + Real + + - + + + + Open + + + + + 75 true @@ -159,210 +212,8 @@ - - - - QPlainTextEdit::NoWrap - - - http://downloads.vcmi.eu/Mods/repository.json - - - - - - - Open - - - - - - - Player AI - - - - - - - - true - - - - Repositories - - - - - - - - VCAI - - - - - Nullkiller - - - - - - - - Display index - - - - - - - 1 - - - - Off - - - - - On - - - - - - - - - BattleAI - - - - - StupidAI - - - - - - - - false - - - BattleAI - - - - BattleAI - - - - - StupidAI - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 8 - 20 - - - - - - - - Open - - - - - - - - true - - - - Launcher Settings - - - - - - - Extra data directory - - - - - - - - 0 - 22 - - - - Enemy AI - - - - - - - false - - - Change - - - - - - - - - - Neutral AI - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 56 - 8 - - - - - - + + false @@ -373,158 +224,21 @@ - /home/user/.vcmi + /home/user/.vcmi true - - - - 1 - - - - Off - - - - - On - - - - - - - - 1 - - - - Off - - - - - On - - - - - - - - false - - - BattleAI - - - - BattleAI - - - - - StupidAI - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 8 - - - - - - - - - true - true - false - - + + - AI in the battlefield + Player AI - - - - Check repositories on startup - - - - - - - - 0 - 22 - - - - Friendly AI - - - - - - - Log files directory - - - - - - - - true - - - - Data Directories - - - - - - - User data directory - - - - - - - Open - - - - - - - Network port - - - - + @@ -558,34 +272,331 @@ - + + + + + 0 + 22 + + + + Friendly AI + + + + + + + Resolution + + + + + + + + 75 + true + + + + AI on the map + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 8 + + + + + + + + Autosave - - + + - Check for updates + Display index - + + + + false + + + + 150 + 0 + + + + /home/user/.vcmi + + + true + + + + + + + Check repositories on startup + + + + + + + Network port + + + + + + + VCAI + + + + VCAI + + + + + Nullkiller + + + + + + + + false + + + BattleAI + + + + BattleAI + + + + + StupidAI + + + + + + + + + 75 + true + + + + Data Directories + + + + + + + + 75 + true + + + + Video + + + + + + + Heroes III character set + + + + + + + false + + + BattleAI + + + + BattleAI + + + + + StupidAI + + + + + + + + Extra data directory + + + + + + + 1 + + + + Off + + + + + On + + + + + + + + Log files directory + + + + + + + QPlainTextEdit::NoWrap + + + http://downloads.vcmi.eu/Mods/repository.json + + + + + + + Show intro + + + + + + + + 75 + true + + + + Launcher Settings + + + + Build version - + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 56 + 8 + + + + + + + + + 0 + 22 + + + + Enemy AI + + + + + + + 1 + + + + Off + + + + + On + + + + + + + + + + 75 + true + true + false + + + + AI in the battlefield + + + diff --git a/launcher/translation/launcher_uk.ts b/launcher/translation/launcher_uk.ts new file mode 100644 index 000000000..17ea2be7a --- /dev/null +++ b/launcher/translation/launcher_uk.ts @@ -0,0 +1,536 @@ + + + + + CModListView + + + Filter + Фільтр + + + + All mods + Усі модифікації + + + + Downloadable + Усі доступні + + + + Installed + Встановлені + + + + Updatable + Доступні оновлення + + + + Active + Активні + + + + Inactive + Неактивні + + + + Download && refresh repositories + Завантажити та оновити репозиторії + + + + + Description + Опис + + + + Changelog + Зміни + + + + Screenshots + Знімки + + + + Show details + Показати подробиці + + + + Uninstall + Видалити + + + + Enable + Активувати + + + + Disable + Деактивувати + + + + Update + Оновити + + + + Install + Встановити + + + + %p% (%v KB out of %m KB) + %p% (%v КБ з %m КБ) + + + + Abort + Відмінити + + + + Mod name + Назва модифікації + + + + Installed version + Встановлена версія + + + + Latest version + Найновіша версія + + + + Download size + Розмір для завантаження + + + + Authors + Автори + + + + License + Ліцензія + + + + Home + Домашня сторінка + + + + + Compatibility + Сумісність + + + + + Required VCMI version + Необхідна версія VCMI + + + + Supported VCMI version + Підтримувана версія VCMI + + + + Supported VCMI versions + Підтримувані версії VCMI + + + + Required mods + Необхідні модифікації + + + + Conflicting mods + Конфліктуючі модифікації + + + + This mod can not be installed or enabled because following dependencies are not present + Цю модифікацію не можна встановити чи активувати, оскільки відсутні наступні залежності + + + + This mod can not be enabled because following mods are incompatible with this mod + Цю модифікацію не можна ввімкнути, оскільки наступні модифікації несумісні з цією модифікацією + + + + This mod can not be disabled because it is required to run following mods + Цю модифікацію не можна відключити, оскільки вона необхідна для запуску наступних модифікацій + + + + This mod can not be uninstalled or updated because it is required to run following mods + Цю модифікацію не можна видалити або оновити, оскільки вона необхідна для запуску наступних модифікацій + + + + This is submod and it can not be installed or uninstalled separately from parent mod + Це вкладена модифікація, і її не можна встановити або видалити окремо від батьківської модифікації + + + + Notes + Примітки + + + + Screenshot %1 + Знімок екрану %1 + + + + CSettingsView + + + Change + Змінити + + + + + + Open + Відкрити + + + + User data directory + Тека даних користувача + + + + + + + Off + Вимкнено + + + + + + + On + Увімкнено + + + + Fullscreen + Повноекранний режим + + + + AI in the battlefield + Штучний інтелект на полі бою + + + + Repositories + Репозиторії + + + + Check for updates + Оновити зараз + + + + Neutral AI + Нейтральний ШІ + + + + Real + Повний + + + + General + Загальні налаштування + + + + Player AI + ШІ гравців + + + + Central European (Windows 1250) + Центральноєвропейська (Windows 1250) + + + + Cyrillic script (Windows 1251) + Кирилиця (Windows 1251) + + + + Western European (Windows 1252) + Західноєвропейська (Windows 1252) + + + + Simplified Chinese (GBK) + Спрощена китайська (GBK) + + + + Simplified Chinese (GB2312) + Спрощена китайська (GB2312) + + + + Korean (Windows 949) + Корейська (Windows 949) + + + + Friendly AI + Дружній ШІ + + + + Resolution + Роздільна здатність + + + + AI on the map + Штучний інтелект на карті пригод + + + + Autosave + Автозбереження + + + + Display index + Дісплей + + + + Check repositories on startup + Перевірка репозиторіїв при запуску + + + + Network port + Мережевий порт + + + + Data Directories + Теки даних гри + + + + Video + Графіка + + + + Heroes III character set + Кодування Heroes III + + + + Extra data directory + Додаткова тека даних + + + + Log files directory + Тека файлів журналу + + + + Show intro + Вступні відео + + + + Launcher Settings + Налаштування лаунчера + + + + Build version + Версія збірки + + + + Enemy AI + Ворожий ШІ + + + + ImageViewer + + + Image Viewer + Перегляд зображень + + + + Lobby + + + Connect + Підключитися + + + + Username + Ім'я користувача + + + + Server + Сервер + + + + Session + Сесія + + + + Players + Гравці + + + + New room + Створити кімнату + + + + Join room + Приєднатися до кімнати + + + + Ready + Готовність! + + + + Mods mismatch + Модифікації, що не збігаються + + + + Leave + Вийти з кімнати + + + + Kick player + Виключити гравця + + + + Players in the room + Гравці у кімнаті + + + + LobbyRoomRequest + + + Room settings + Налаштування кімнати + + + + Room name + Назва кімнати + + + + Maximum players + Максимум гравців + + + + Password (optional) + Пароль (за бажанням) + + + + MainWindow + + + VCMI Launcher + VCMI Launcher + + + + Mods + Модифікації + + + + Settings + Налаштування + + + + Lobby + Лобі + + + + Start game + Грати! + + + + Play + Грати! + + + + UpdateDialog + + + You have latest version + У вас встановлена остання версія + + + + Close + Закрити + + + + Check updates on startup + Перевіряти наявність оновлень при запуску + + +