path fixes
This commit is contained in:
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
|
|
||||||
project(Minecraft_launcher VERSION 0.1 LANGUAGES CXX C)
|
project(BiLauncher VERSION 0.1 LANGUAGES CXX C)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||||
@@ -69,7 +69,7 @@ qt_add_resources(BiLauncher "appicon"
|
|||||||
)
|
)
|
||||||
|
|
||||||
qt_add_qml_module(BiLauncher
|
qt_add_qml_module(BiLauncher
|
||||||
URI Minecraft_launcher
|
URI BiLauncher
|
||||||
SOURCES
|
SOURCES
|
||||||
localization.h
|
localization.h
|
||||||
localization.cpp
|
localization.cpp
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts 2.15
|
import QtQuick.Layouts 2.15
|
||||||
import QtQuick.Controls 2.15
|
import QtQuick.Controls 2.15
|
||||||
import Minecraft_launcher
|
import BiLauncher
|
||||||
|
|
||||||
Window {
|
Window {
|
||||||
id: window
|
id: window
|
||||||
|
|||||||
+2
-23
@@ -15,24 +15,10 @@
|
|||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
// ── Про потоки ──────────────────────────────────────────────────────────────
|
|
||||||
//
|
|
||||||
// Каталог (m_singles, m_lists, m_codes, m_displayNames) заполняется ровно один
|
|
||||||
// раз в load(), который отрабатывает в main() до того, как BuildSwitcher создаст
|
|
||||||
// свой QThread. Дальше эти поля только читаются, а копирование QString из хэша
|
|
||||||
// безопасно само по себе — поэтому Loc::text() зовётся из рабочего потока
|
|
||||||
// BuildArchiveWorker без единой блокировки.
|
|
||||||
//
|
|
||||||
// Единственное, что меняется на ходу, — m_index, и он QAtomicInt. В худшем
|
|
||||||
// случае сообщение, уже собиравшееся в момент переключения, уедет на прежнем
|
|
||||||
// языке; заметить это невозможно.
|
|
||||||
//
|
|
||||||
// setLanguage(), m_tree, rebuildTree() и languageChanged — только GUI-поток.
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
const QString kCatalogPath =
|
const QString kCatalogPath =
|
||||||
QStringLiteral(":/qt/qml/Minecraft_launcher/i18n/translations.json");
|
QStringLiteral(":/qt/qml/BiLauncher/i18n/translations.json");
|
||||||
|
|
||||||
const QString kSystem = QStringLiteral("system");
|
const QString kSystem = QStringLiteral("system");
|
||||||
|
|
||||||
@@ -43,9 +29,6 @@ QString systemLanguage()
|
|||||||
: QStringLiteral("en");
|
: QStringLiteral("en");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Язык из settings.json. Читается напрямую, не через LauncherBackend: тот
|
|
||||||
// появляется только вместе с QML, а язык нужен раньше первой привязки.
|
|
||||||
// Обратной зависимости это не создаёт — файл только читается.
|
|
||||||
QString storedLanguage()
|
QString storedLanguage()
|
||||||
{
|
{
|
||||||
QFile file(LauncherPaths::settingsFile());
|
QFile file(LauncherPaths::settingsFile());
|
||||||
@@ -60,7 +43,7 @@ QString storedLanguage()
|
|||||||
return value.isString() ? value.toString() : kSystem;
|
return value.isString() ? value.toString() : kSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
}
|
||||||
|
|
||||||
Localization::Localization(QObject *parent)
|
Localization::Localization(QObject *parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
@@ -78,8 +61,6 @@ Localization *Localization::create(QQmlEngine *, QJSEngine *jsEngine)
|
|||||||
Localization &loc = instance();
|
Localization &loc = instance();
|
||||||
loc.m_engine = jsEngine;
|
loc.m_engine = jsEngine;
|
||||||
loc.rebuildTree();
|
loc.rebuildTree();
|
||||||
// Синглтон живёт до конца процесса и движку не принадлежит — иначе сборщик
|
|
||||||
// мусора QML попытается удалить статический объект.
|
|
||||||
QJSEngine::setObjectOwnership(&loc, QJSEngine::CppOwnership);
|
QJSEngine::setObjectOwnership(&loc, QJSEngine::CppOwnership);
|
||||||
return &loc;
|
return &loc;
|
||||||
}
|
}
|
||||||
@@ -132,8 +113,6 @@ bool Localization::load()
|
|||||||
m_lists.clear();
|
m_lists.clear();
|
||||||
for (auto it = strings.constBegin(); it != strings.constEnd(); ++it) {
|
for (auto it = strings.constBegin(); it != strings.constEnd(); ++it) {
|
||||||
const QJsonObject entry = it.value().toObject();
|
const QJsonObject entry = it.value().toObject();
|
||||||
// Тип значения определяется по первому языку и обязан совпадать у всех:
|
|
||||||
// за этим следит tools/check_translations.py.
|
|
||||||
const bool isList = entry.value(m_codes.first()).isArray();
|
const bool isList = entry.value(m_codes.first()).isArray();
|
||||||
|
|
||||||
if (isList) {
|
if (isList) {
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ int main(int argc, char *argv[])
|
|||||||
&app,
|
&app,
|
||||||
[]() { QCoreApplication::exit(-1); },
|
[]() { QCoreApplication::exit(-1); },
|
||||||
Qt::QueuedConnection);
|
Qt::QueuedConnection);
|
||||||
engine.loadFromModule("Minecraft_launcher", "Main");
|
engine.loadFromModule("BiLauncher", "Main");
|
||||||
|
|
||||||
return app.exec();
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user