diff --git a/.ci/debian_build.sh b/.ci/debian_build.sh index b38ff95..57aa9c9 100755 --- a/.ci/debian_build.sh +++ b/.ci/debian_build.sh @@ -28,7 +28,9 @@ cmake \ "-DGTA5VIEW_BUILDCODE=${PACKAGE_CODE}" \ "-DGTA5VIEW_APPVER=${APPLICATION_VERSION}" \ "-DGTA5VIEW_COMMIT=${APPLICATION_COMMIT}" \ + "-DWITH_DONATE=ON" \ "-DWITH_TELEMETRY=ON" \ + "-DDONATE_ADDRESSES=$(cat ${PROJECT_DIR}/.ci/donate.txt)" \ "-DTELEMETRY_WEBURL=https://dev.syping.de/gta5view-userstats/" \ "-DQCONF_BUILD=ON" \ ../../ && \ diff --git a/.ci/donate.txt b/.ci/donate.txt new file mode 100644 index 0000000..ab58641 --- /dev/null +++ b/.ci/donate.txt @@ -0,0 +1 @@ +btc:187NSQSPzdMpQDGhxZAuw4AhZ7LgoAPV7D,eth:0x19d71DfCa86104d37a13D3c5d419936421CDC569,ltc:LKr6yvBoMMGmcxViS8Kc1A2sDjVSWTXn4m,xmr:43TB3ZMP5nk1pu5EQXRGPzdTKvmFEBGgccX3tNhRknLLiUYQ7z7dNedVHEA6WrWdByZv1isvFmjSGhCF7ddx3eRxFdm5Fzz,zec:t1SpfDKj6qGZFwyRdzJBw9w2PTj8rUixZGh \ No newline at end of file diff --git a/.ci/osx_build.sh b/.ci/osx_build.sh index 81efae8..c8545c4 100755 --- a/.ci/osx_build.sh +++ b/.ci/osx_build.sh @@ -14,7 +14,9 @@ cd build && \ "-DGTA5VIEW_BUILDCODE=${PACKAGE_CODE}" \ "-DGTA5VIEW_APPVER=${APPLICATION_VERSION}" \ "-DGTA5VIEW_COMMIT=${APPLICATION_COMMIT}" \ + "-DWITH_DONATE=ON" \ "-DWITH_TELEMETRY=ON" \ + "-DDONATE_ADDRESSES=$(cat ${PROJECT_DIR}/.ci/donate.txt)" \ "-DTELEMETRY_WEBURL=https://dev.syping.de/gta5view-userstats/" \ ../ && \ make -j 4 && \ diff --git a/.ci/windows_build.sh b/.ci/windows_build.sh index e584dfc..4b85c38 100755 --- a/.ci/windows_build.sh +++ b/.ci/windows_build.sh @@ -17,7 +17,9 @@ mingw64-qt-cmake \ "-DGTA5VIEW_BUILDCODE=${PACKAGE_CODE}" \ "-DGTA5VIEW_APPVER=${APPLICATION_VERSION}" \ "-DGTA5VIEW_COMMIT=${APPLICATION_COMMIT}" \ + "-DWITH_DONATE=ON" \ "-DWITH_TELEMETRY=ON" \ + "-DDONATE_ADDRESSES=$(cat ${PROJECT_DIR}/.ci/donate.txt)" \ "-DTELEMETRY_WEBURL=https://dev.syping.de/gta5view-userstats/" \ .. && \ make -j 4 && \ diff --git a/.ci/wininstall_build.sh b/.ci/wininstall_build.sh index b55aee4..79e24d7 100755 --- a/.ci/wininstall_build.sh +++ b/.ci/wininstall_build.sh @@ -13,7 +13,9 @@ mingw64-qt-cmake \ "-DGTA5VIEW_BUILDCODE=${PACKAGE_CODE}" \ "-DGTA5VIEW_APPVER=${APPLICATION_VERSION}" \ "-DGTA5VIEW_COMMIT=${APPLICATION_COMMIT}" \ + "-DWITH_DONATE=ON" \ "-DWITH_TELEMETRY=ON" \ + "-DDONATE_ADDRESSES=$(cat ${PROJECT_DIR}/.ci/donate.txt)" \ "-DTELEMETRY_WEBURL=https://dev.syping.de/gta5view-userstats/" \ "-DQCONF_BUILD=ON" \ "-DGTA5VIEW_INLANG=RUNDIR:SEPARATOR:lang" \ diff --git a/.flatpak/de.syping.gta5view.yaml b/.flatpak/de.syping.gta5view.yaml index a67c9f7..2e6fa1d 100644 --- a/.flatpak/de.syping.gta5view.yaml +++ b/.flatpak/de.syping.gta5view.yaml @@ -15,6 +15,8 @@ modules: config-opts: - -DFLATPAK_BUILD=ON - -DQCONF_BUILD=ON + - -DGTA5VIEW_BUILDCODE=Flatpak + - -DGTA5VIEW_BUILDTYPE=Release sources: - type: dir path: ../ diff --git a/CMakeLists.txt b/CMakeLists.txt index 661e795..b081148 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -217,6 +217,22 @@ if(FLATPAK_BUILD) ) endif() +option(WITH_DONATE "Donate menu option and donation dialog" OFF) +if(WITH_DONATE) + set(DONATE_ADDRESSES "" CACHE STRING "Donation addresses") + list(APPEND GTA5VIEW_DEFINES + -DGTA5SYNC_DONATE + ) + list(APPEND GTA5VIEW_RESOURCES + res/donate.qrc + ) + if(DONATE_ADDRESSES) + list(APPEND GTA5VIEW_DEFINES + "-DGTA5SYNC_DONATE_ADDRESSES=\"${DONATE_ADDRESSES}\"" + ) + endif() +endif() + option(WITH_MOTD "Developer message system directed to users" OFF) if(WITH_MOTD) set(MOTD_WEBURL "" CACHE STRING "Messages WebURL") diff --git a/OptionsDialog.cpp b/OptionsDialog.cpp index 321d705..bbe5be0 100644 --- a/OptionsDialog.cpp +++ b/OptionsDialog.cpp @@ -234,15 +234,12 @@ void OptionsDialog::setupLanguageBox() availableLanguages.removeDuplicates(); availableLanguages.sort(); - for (QString lang : availableLanguages) - { + for (QString lang : availableLanguages) { // correcting Language Location if possible QString aLang = lang; - if (QFile::exists(":/global/global." % lang % ".loc")) - { + if (QFile::exists(":/global/global." % lang % ".loc")) { QFile locFile(":/global/global." % lang % ".loc"); - if (locFile.open(QFile::ReadOnly)) - { + if (locFile.open(QFile::ReadOnly)) { aLang = QString::fromUtf8(locFile.readLine()).trimmed(); locFile.close(); } @@ -253,8 +250,7 @@ void OptionsDialog::setupLanguageBox() QString langIconStr = "flag-" % TranslationClass::getCountryCode(langLocale); ui->cbAreaLanguage->addItem(QIcon::fromTheme(langIconStr), cbLangStr, lang); - if (currentAreaLanguage == lang) - { + if (currentAreaLanguage == lang) { #if QT_VERSION >= 0x050000 ui->cbAreaLanguage->setCurrentText(cbLangStr); #else @@ -265,8 +261,7 @@ void OptionsDialog::setupLanguageBox() } QString aCurrentAreaLanguage = Translator->getCurrentAreaLanguage(); - if (QFile::exists(":/global/global." % aCurrentAreaLanguage % ".loc")) - { + if (QFile::exists(":/global/global." % aCurrentAreaLanguage % ".loc")) { qDebug() << "locFile found"; QFile locFile(":/global/global." % aCurrentAreaLanguage % ".loc"); if (locFile.open(QFile::ReadOnly)) @@ -286,10 +281,8 @@ void OptionsDialog::setupRadioButtons() contentMode = settings->value("ContentMode", 0).toInt(&contentModeOk); settings->endGroup(); - if (contentModeOk) - { - switch (contentMode) - { + if (contentModeOk) { + switch (contentMode) { case 0: case 20: ui->rbModern->setChecked(true); @@ -329,8 +322,7 @@ void OptionsDialog::setupInterfaceSettings() currentIndex++; } } - else - { + else { if (availableStyles.contains(currentStyle, Qt::CaseInsensitive)) { int currentIndex = 0; for (const QString ¤tStyleFF : availableStyles) { @@ -379,16 +371,13 @@ void OptionsDialog::applySettings() settings->beginGroup("Profile"); int newContentMode = 20; - if (ui->rbModern->isChecked()) - { + if (ui->rbModern->isChecked()) { newContentMode = 20; } - else if (ui->rbClassic->isChecked()) - { + else if (ui->rbClassic->isChecked()) { newContentMode = 10; } - if (ui->cbDoubleclick->isChecked()) - { + if (ui->cbDoubleclick->isChecked()) { newContentMode++; } settings->setValue("ContentMode", newContentMode); @@ -400,18 +389,15 @@ void OptionsDialog::applySettings() settings->endGroup(); settings->beginGroup("Pictures"); - if (ui->cbPicCustomQuality->isChecked()) - { + if (ui->cbPicCustomQuality->isChecked()) { settings->setValue("CustomQuality", ui->hsPicQuality->value()); } settings->setValue("CustomQualityEnabled", ui->cbPicCustomQuality->isChecked()); QString sizeMode = "Default"; - if (ui->rbPicDesktopRes->isChecked()) - { + if (ui->rbPicDesktopRes->isChecked()) { sizeMode = "Desktop"; } - else if (ui->rbPicCustomRes->isChecked()) - { + else if (ui->rbPicCustomRes->isChecked()) { sizeMode = "Custom"; settings->setValue("CustomSize", QSize(ui->sbPicExportWidth->value(), ui->sbPicExportHeight->value())); } @@ -456,8 +442,7 @@ void OptionsDialog::applySettings() settings->endGroup(); Telemetry->refresh(); Telemetry->work(); - if (ui->cbUsageData->isChecked() && Telemetry->canPush()) - { + if (ui->cbUsageData->isChecked() && Telemetry->canPush()) { QJsonDocument jsonDocument; QJsonObject jsonObject; jsonObject["Type"] = "SettingsUpdated"; @@ -478,22 +463,19 @@ void OptionsDialog::applySettings() bool languageChanged = ui->cbLanguage->itemData(ui->cbLanguage->currentIndex()).toString() != currentLanguage; bool languageAreaChanged = ui->cbAreaLanguage->itemData(ui->cbLanguage->currentIndex()).toString() != currentAreaLanguage; #endif - if (languageChanged) - { + if (languageChanged) { Translator->unloadTranslation(qApp); Translator->initUserLanguage(); Translator->loadTranslation(qApp); } - else if (languageAreaChanged) - { + else if (languageAreaChanged) { Translator->initUserLanguage(); } settings->sync(); emit settingsApplied(newContentMode, languageChanged); - if ((forceCustomFolder && ui->txtFolder->text() != currentCFolder) || (forceCustomFolder != currentFFolder && forceCustomFolder)) - { + if ((forceCustomFolder && ui->txtFolder->text() != currentCFolder) || (forceCustomFolder != currentFFolder && forceCustomFolder)) { QMessageBox::information(this, tr("%1", "%1").arg(GTA5SYNC_APPSTR), tr("The new Custom Folder will initialise after you restart %1.").arg(GTA5SYNC_APPSTR)); } } @@ -510,11 +492,9 @@ void OptionsDialog::setupDefaultProfile() void OptionsDialog::commitProfiles(const QStringList &profiles) { - for (QString profile : profiles) - { + for (QString profile : profiles) { ui->cbProfiles->addItem(tr("Profile: %1").arg(profile), profile); - if (defaultProfile == profile) - { + if (defaultProfile == profile) { #if QT_VERSION >= 0x050000 ui->cbProfiles->setCurrentText(tr("Profile: %1").arg(profile)); #else @@ -552,8 +532,7 @@ void OptionsDialog::setupPictureSettings() // Quality Settings customQuality = settings->value("CustomQuality", defaultQuality).toInt(); - if (customQuality < 1 || customQuality > 100) - { + if (customQuality < 1 || customQuality > 100) { customQuality = 100; } ui->hsPicQuality->setValue(customQuality); @@ -561,42 +540,34 @@ void OptionsDialog::setupPictureSettings() // Size Settings cusExportSize = settings->value("CustomSize", defExportSize).toSize(); - if (cusExportSize.width() > 3840) - { + if (cusExportSize.width() > 3840) { cusExportSize.setWidth(3840); } - else if (cusExportSize.height() > 2160) - { + else if (cusExportSize.height() > 2160) { cusExportSize.setHeight(2160); } - if (cusExportSize.width() < 1) - { + if (cusExportSize.width() < 1) { cusExportSize.setWidth(1); } - else if (cusExportSize.height() < 1) - { + else if (cusExportSize.height() < 1) { cusExportSize.setHeight(1); } ui->sbPicExportWidth->setValue(cusExportSize.width()); ui->sbPicExportHeight->setValue(cusExportSize.height()); QString sizeMode = settings->value("ExportSizeMode", "Default").toString(); - if (sizeMode == "Desktop") - { + if (sizeMode == "Desktop") { ui->rbPicDesktopRes->setChecked(true); } - else if (sizeMode == "Custom") - { + else if (sizeMode == "Custom") { ui->rbPicCustomRes->setChecked(true); } - else - { + else { ui->rbPicDefaultRes->setChecked(true); } aspectRatio = (Qt::AspectRatioMode)settings->value("AspectRatio", Qt::KeepAspectRatio).toInt(); - if (aspectRatio == Qt::IgnoreAspectRatio) - { + if (aspectRatio == Qt::IgnoreAspectRatio) { ui->cbIgnoreAspectRatio->setChecked(true); } @@ -615,17 +586,14 @@ void OptionsDialog::setupStatisticsSettings() ui->cbUsageData->setChecked(settings->value("PushUsageData", false).toBool()); settings->endGroup(); - if (Telemetry->isStateForced()) - { + if (Telemetry->isStateForced()) { ui->cbParticipateStats->setEnabled(false); } - if (Telemetry->isRegistered()) - { + if (Telemetry->isRegistered()) { ui->labParticipationID->setText(tr("Participation ID: %1").arg(Telemetry->getRegisteredID())); } - else - { + else { ui->labParticipationID->setText(tr("Participation ID: %1").arg(tr("Not registered"))); ui->cmdCopyStatsID->setVisible(false); } @@ -639,62 +607,49 @@ void OptionsDialog::setupWindowsGameSettings() #ifdef GTA5SYNC_GAME GameVersion gameVersion = AppEnv::getGameVersion(); #ifdef Q_OS_WIN - if (gameVersion != GameVersion::NoVersion) - { - if (gameVersion == GameVersion::SocialClubVersion) - { + if (gameVersion != GameVersion::NoVersion) { + if (gameVersion == GameVersion::SocialClubVersion) { ui->gbSteam->setDisabled(true); ui->labSocialClubFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("Yes")))); ui->labSteamFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("No")))); - if (AppEnv::getGameLanguage(GameVersion::SocialClubVersion) != GameLanguage::Undefined) - { + if (AppEnv::getGameLanguage(GameVersion::SocialClubVersion) != GameLanguage::Undefined) { ui->labSocialClubLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SocialClubVersion))).nativeLanguageName())); } - else - { + else { ui->labSocialClubLanguage->setText(tr("Language: %1").arg(tr("OS defined"))); } ui->labSteamLanguage->setVisible(false); } - else if (gameVersion == GameVersion::SteamVersion) - { + else if (gameVersion == GameVersion::SteamVersion) { ui->gbSocialClub->setDisabled(true); ui->labSocialClubFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("No")))); ui->labSteamFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("Yes")))); ui->labSocialClubLanguage->setVisible(false); - if (AppEnv::getGameLanguage(GameVersion::SteamVersion) != GameLanguage::Undefined) - { + if (AppEnv::getGameLanguage(GameVersion::SteamVersion) != GameLanguage::Undefined) { ui->labSteamLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SteamVersion))).nativeLanguageName())); } - else - { + else { ui->labSteamLanguage->setText(tr("Language: %1").arg(tr("Steam defined"))); } } - else - { + else { ui->labSocialClubFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("Yes")))); ui->labSteamFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("Yes")))); - if (AppEnv::getGameLanguage(GameVersion::SocialClubVersion) != GameLanguage::Undefined) - { + if (AppEnv::getGameLanguage(GameVersion::SocialClubVersion) != GameLanguage::Undefined) { ui->labSocialClubLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SocialClubVersion))).nativeLanguageName())); } - else - { + else { ui->labSocialClubLanguage->setText(tr("Language: %1").arg(tr("OS defined"))); } - if (AppEnv::getGameLanguage(GameVersion::SteamVersion) != GameLanguage::Undefined) - { + if (AppEnv::getGameLanguage(GameVersion::SteamVersion) != GameLanguage::Undefined) { ui->labSteamLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SteamVersion))).nativeLanguageName())); } - else - { + else { ui->labSteamLanguage->setText(tr("Language: %1").arg(tr("Steam defined"))); } } } - else - { + else { ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabGame)); } #else @@ -707,12 +662,10 @@ void OptionsDialog::setupWindowsGameSettings() void OptionsDialog::on_cbIgnoreAspectRatio_toggled(bool checked) { - if (checked) - { + if (checked) { aspectRatio = Qt::IgnoreAspectRatio; } - else - { + else { aspectRatio = Qt::KeepAspectRatio; } } @@ -724,8 +677,7 @@ void OptionsDialog::setupCustomGTAFolder() settings->beginGroup("dir"); currentCFolder = settings->value("dir", "").toString(); currentFFolder = settings->value("force", false).toBool(); - if (currentCFolder == "" && ok) - { + if (currentCFolder == "" && ok) { currentCFolder = defaultGameFolder; } ui->txtFolder->setText(currentCFolder); @@ -754,8 +706,7 @@ void OptionsDialog::setupSnapmaticPictureViewer() void OptionsDialog::on_cmdExploreFolder_clicked() { QString GTAV_Folder = QFileDialog::getExistingDirectory(this, UserInterface::tr("Select GTA V Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly); - if (QFileInfo(GTAV_Folder).exists()) - { + if (QFileInfo(GTAV_Folder).exists()) { ui->txtFolder->setText(GTAV_Folder); } } diff --git a/UserInterface.cpp b/UserInterface.cpp index fad032a..08309c5 100644 --- a/UserInterface.cpp +++ b/UserInterface.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -50,11 +51,11 @@ UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, MessageThread *threadMessage, QWidget *parent) : QMainWindow(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB), threadMessage(threadMessage), ui(new Ui::UserInterface) -#else + #else UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent) : QMainWindow(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB), ui(new Ui::UserInterface) -#endif + #endif { ui->setupUi(this); contentMode = 0; @@ -153,6 +154,84 @@ UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, D ui->actionDelete_selected->setIcon(QIcon::fromTheme("remove")); } +#ifdef GTA5SYNC_DONATE +#ifdef GTA5SYNC_DONATE_ADDRESSES + donateAction = new QAction(tr("&Donate"), this); + if (QIcon::hasThemeIcon("help-donate")) { + donateAction->setIcon(QIcon::fromTheme("help-donate")); + } + else if (QIcon::hasThemeIcon("taxes-finances")) { + donateAction->setIcon(QIcon::fromTheme("taxes-finances")); + } + ui->menuHelp->insertAction(ui->actionAbout_gta5sync, donateAction); + QObject::connect(donateAction, &QAction::triggered, this, [=](){ + QDialog *donateDialog = new QDialog(this); + donateDialog->setWindowTitle(QString("%1 - %2").arg(GTA5SYNC_APPSTR, tr("Donate"))); +#if QT_VERSION >= 0x050900 + donateDialog->setWindowFlag(Qt::WindowContextHelpButtonHint, false); +#else + donateDialog->setWindowFlags(donateDialog->windowFlags()^Qt::WindowContextHelpButtonHint); +#endif + QVBoxLayout *donateLayout = new QVBoxLayout; + donateDialog->setLayout(donateLayout); + QLabel *methodsLabel = new QLabel(QString("%1").arg(tr("Donation methods")), this); + methodsLabel->setWordWrap(true); + donateLayout->addWidget(methodsLabel); + const QStringList addressList = QString::fromUtf8(GTA5SYNC_DONATE_ADDRESSES).split(','); + for (const QString &address : addressList) { + const QStringList addressList = address.split(':'); + if (addressList.length() == 2) { + const QString currency = addressList.at(0); + const QString address = addressList.at(1); + QHBoxLayout *addressLayout = new QHBoxLayout; + const QString iconPath = QString(":/donate/%1.svgz").arg(currency); + if (QFile::exists(iconPath)) { + QLabel *currencyLabel = new QLabel(this); + currencyLabel->setFixedSize(32, 32); + currencyLabel->setScaledContents(true); + currencyLabel->setPixmap(QIcon(iconPath).pixmap(QSize(32, 32))); + addressLayout->addWidget(currencyLabel); + } + else { + QLabel *currencyLabel = new QLabel(QString("%1").arg(currency.toUpper()), this); + addressLayout->addWidget(currencyLabel); + } + QLabel *addressLabel = new QLabel(address, this); + addressLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + addressLabel->setTextFormat(Qt::PlainText); + addressLabel->setTextInteractionFlags(Qt::TextSelectableByMouse); + addressLabel->setWordWrap(true); + addressLayout->addWidget(addressLabel); + QPushButton *addressButton = new QPushButton(tr("Copy"), this); + QObject::connect(addressButton, &QPushButton::pressed, this, [=](){ + QApplication::clipboard()->setText(address); + }); + addressLayout->addWidget(addressButton); + donateLayout->addLayout(addressLayout); + } + } + QHBoxLayout *buttonLayout = new QHBoxLayout; + buttonLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum)); + QPushButton *closeButton = new QPushButton(donateDialog); + closeButton->setText(tr("&Close")); + if (QIcon::hasThemeIcon("dialog-close")) { + closeButton->setIcon(QIcon::fromTheme("dialog-close")); + } + else if (QIcon::hasThemeIcon("gtk-close")) { + closeButton->setIcon(QIcon::fromTheme("gtk-close")); + } + buttonLayout->addWidget(closeButton); + donateLayout->addLayout(buttonLayout); + QObject::connect(closeButton, &QPushButton::clicked, donateDialog, &QDialog::accept); + QObject::connect(donateDialog, &QDialog::finished, donateDialog, &QDialog::deleteLater); + QTimer::singleShot(0, closeButton, [=](){ + closeButton->setFocus(); + }); + donateDialog->open(); + }); +#endif +#endif + // DPI calculation qreal screenRatio = AppEnv::screenRatio(); #ifndef Q_QS_ANDROID @@ -172,22 +251,20 @@ void UserInterface::setupDirEnv(bool showFolderDialog) if (folderExists) { QDir::setCurrent(GTAV_Folder); } - else { - if (showFolderDialog) { - GTAV_Folder = QFileDialog::getExistingDirectory(this, tr("Select GTA V Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly); - if (QFileInfo(GTAV_Folder).exists()) { - folderExists = true; - QDir::setCurrent(GTAV_Folder); - AppEnv::setGameFolder(GTAV_Folder); + else if (showFolderDialog) { + GTAV_Folder = QFileDialog::getExistingDirectory(this, tr("Select GTA V Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly); + if (QFileInfo(GTAV_Folder).exists()) { + folderExists = true; + QDir::setCurrent(GTAV_Folder); + AppEnv::setGameFolder(GTAV_Folder); - // First time folder selection save - settings.beginGroup("dir"); - if (settings.value("dir", "").toString().isEmpty()) - { - settings.setValue("dir", GTAV_Folder); - } - settings.endGroup(); + // First time folder selection save + settings.beginGroup("dir"); + if (settings.value("dir", "").toString().isEmpty()) + { + settings.setValue("dir", GTAV_Folder); } + settings.endGroup(); } } @@ -289,8 +366,7 @@ void UserInterface::openProfile(const QString &profileName_) void UserInterface::closeProfile() { - if (profileOpen) - { + if (profileOpen) { closeProfile_p(); } setWindowTitle(defaultWindowTitle.arg(tr("Select Profile"))); @@ -465,68 +541,61 @@ fileDialogPreOpen: bool UserInterface::openFile(QString selectedFile, bool warn) { QString selectedFileName = QFileInfo(selectedFile).fileName(); - if (QFile::exists(selectedFile)) - { - if (selectedFileName.left(4) == "PGTA" || selectedFileName.right(4) == ".g5e") - { + if (QFile::exists(selectedFile)) { + if (selectedFileName.left(4) == "PGTA" || selectedFileName.right(4) == ".g5e") { SnapmaticPicture *picture = new SnapmaticPicture(selectedFile); - if (picture->readingPicture()) - { + if (picture->readingPicture()) { openSnapmaticFile(picture); delete picture; return true; } - else - { - if (warn) QMessageBox::warning(this, tr("Open File"), ProfileInterface::tr("Failed to read Snapmatic picture")); + else { + if (warn) + QMessageBox::warning(this, tr("Open File"), ProfileInterface::tr("Failed to read Snapmatic picture")); delete picture; return false; } } - else if (selectedFileName.left(4) == "SGTA") - { + else if (selectedFileName.left(4) == "SGTA") { SavegameData *savegame = new SavegameData(selectedFile); - if (savegame->readingSavegame()) - { + if (savegame->readingSavegame()) { openSavegameFile(savegame); delete savegame; return true; } - else - { - if (warn) QMessageBox::warning(this, tr("Open File"), ProfileInterface::tr("Failed to read Savegame file")); + else { + if (warn) + QMessageBox::warning(this, tr("Open File"), ProfileInterface::tr("Failed to read Savegame file")); delete savegame; return false; } } - else - { + else { SnapmaticPicture *picture = new SnapmaticPicture(selectedFile); SavegameData *savegame = new SavegameData(selectedFile); - if (picture->readingPicture()) - { + if (picture->readingPicture()) { delete savegame; openSnapmaticFile(picture); delete picture; return true; } - else if (savegame->readingSavegame()) - { + else if (savegame->readingSavegame()) { delete picture; openSavegameFile(savegame); delete savegame; return true; } - else - { + else { delete savegame; delete picture; - if (warn) QMessageBox::warning(this, tr("Open File"), tr("Can't open %1 because of not valid file format").arg("\""+selectedFileName+"\"")); + if (warn) + QMessageBox::warning(this, tr("Open File"), tr("Can't open %1 because of not valid file format").arg("\""+selectedFileName+"\"")); return false; } } } - if (warn) QMessageBox::warning(this, tr("Open File"), ProfileInterface::tr("No valid file is selected")); + if (warn) + QMessageBox::warning(this, tr("Open File"), ProfileInterface::tr("No valid file is selected")); return false; } @@ -571,13 +640,11 @@ void UserInterface::openSavegameFile(SavegameData *savegame) void UserInterface::settingsApplied(int _contentMode, bool languageChanged) { - if (languageChanged) - { + if (languageChanged) { retranslateUi(); } contentMode = _contentMode; - if (profileOpen) - { + if (profileOpen) { profileUI->settingsApplied(contentMode, languageChanged); } } @@ -611,7 +678,11 @@ void UserInterface::showMessages(const QStringList messages) { QDialog *messageDialog = new QDialog(this); messageDialog->setWindowTitle(tr("%1 - Messages").arg(GTA5SYNC_APPSTR)); +#if QT_VERSION >= 0x050900 + messageDialog->setWindowFlag(Qt::WindowContextHelpButtonHint, false); +#else messageDialog->setWindowFlags(messageDialog->windowFlags()^Qt::WindowContextHelpButtonHint); +#endif QVBoxLayout *messageLayout = new QVBoxLayout; messageDialog->setLayout(messageLayout); QStackedWidget *stackWidget = new QStackedWidget(messageDialog); @@ -682,7 +753,9 @@ void UserInterface::showMessages(const QStringList messages) }); QObject::connect(closeButton, &QPushButton::clicked, messageDialog, &QDialog::accept); QObject::connect(messageDialog, &QDialog::finished, messageDialog, &QDialog::deleteLater); - QTimer::singleShot(0, closeButton, SLOT(setFocus())); + QTimer::singleShot(0, closeButton, [=](){ + closeButton->setFocus(); + }); messageDialog->show(); } @@ -698,10 +771,8 @@ void UserInterface::updateCacheId(uint cacheId) void UserInterface::on_actionSelect_GTA_Folder_triggered() { QString GTAV_Folder_Temp = QFileDialog::getExistingDirectory(this, tr("Select GTA V Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly); - if (QFileInfo(GTAV_Folder_Temp).exists()) - { - if (profileOpen) - { + if (QFileInfo(GTAV_Folder_Temp).exists()) { + if (profileOpen) { closeProfile_p(); } GTAV_Folder = GTAV_Folder_Temp; @@ -714,36 +785,36 @@ void UserInterface::on_actionSelect_GTA_Folder_triggered() void UserInterface::on_action_Enable_In_game_triggered() { if (profileOpen) - { profileUI->enableSelected(); - } } void UserInterface::on_action_Disable_In_game_triggered() { if (profileOpen) - { profileUI->disableSelected(); - } } void UserInterface::retranslateUi() { ui->retranslateUi(this); +#ifdef GTA5SYNC_DONATE +#ifdef GTA5SYNC_DONATE_ADDRESSES + donateAction->setText(tr("&Donate")); +#endif +#endif ui->actionAbout_gta5sync->setText(tr("&About %1").arg(GTA5SYNC_APPSTR)); QString appVersion = GTA5SYNC_APPVER; #ifndef GTA5SYNC_BUILDTYPE_REL #ifdef GTA5SYNC_COMMIT - if (!appVersion.contains("-")) { appVersion = appVersion % "-" % GTA5SYNC_COMMIT; } + if (!appVersion.contains("-")) + appVersion = appVersion % "-" % GTA5SYNC_COMMIT; #endif #endif ui->labVersion->setText(QString("%1 %2").arg(GTA5SYNC_APPSTR, appVersion)); - if (profileOpen) - { + if (profileOpen) { setWindowTitle(defaultWindowTitle.arg(profileName)); } - else - { + else { setWindowTitle(defaultWindowTitle.arg(tr("Select Profile"))); } } diff --git a/UserInterface.h b/UserInterface.h index 08c22ef..12abc90 100644 --- a/UserInterface.h +++ b/UserInterface.h @@ -90,6 +90,11 @@ private: DatabaseThread *threadDB; #ifdef GTA5SYNC_MOTD MessageThread *threadMessage; +#endif +#ifdef GTA5SYNC_DONATE +#ifdef GTA5SYNC_DONATE_ADDRESSES + QAction *donateAction; +#endif #endif Ui::UserInterface *ui; ProfileInterface *profileUI; diff --git a/res/btc.svgz b/res/btc.svgz new file mode 100644 index 0000000..e10b3a5 Binary files /dev/null and b/res/btc.svgz differ diff --git a/res/donate.qrc b/res/donate.qrc new file mode 100644 index 0000000..8d652ab --- /dev/null +++ b/res/donate.qrc @@ -0,0 +1,9 @@ + + + btc.svgz + eth.svgz + ltc.svgz + xmr.svgz + zec.svgz + + diff --git a/res/eth.svgz b/res/eth.svgz new file mode 100644 index 0000000..a2fbcc5 Binary files /dev/null and b/res/eth.svgz differ diff --git a/res/gta5sync.ts b/res/gta5sync.ts index 0c146f5..a4ea808 100644 --- a/res/gta5sync.ts +++ b/res/gta5sync.ts @@ -192,21 +192,21 @@ Pictures and Savegames - - + + Snapmatic Image Editor - + Patching of Snapmatic Image failed because of I/O Error - + Patching of Snapmatic Image failed because of Image Error @@ -728,26 +728,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 - - - - - - - - + + + + + + + + Language: %1 @@ -768,7 +768,7 @@ Y: %2 - + Participate in %1 User Statistics @@ -804,8 +804,8 @@ Y: %2 - - + + Participation ID: %1 @@ -828,7 +828,7 @@ Y: %2 - + Current: %1 @@ -923,62 +923,62 @@ Y: %2 - + %1 %1 - + The new Custom Folder will initialise after you restart %1. - + No Profile No Profile, as default - - - + + + Profile: %1 - + View %1 User Statistics Online - + Not registered - - - - + + + + Yes - - + + No - - + + OS defined - - + + Steam defined @@ -1055,42 +1055,42 @@ Y: %2 - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate - + Snapmatic Picture Viewer - + Failed at %1 - - - + + + No Players - - + + No Crew - + Unknown Location - + Avatar Preview Mode Press 1 for Default View @@ -1341,7 +1341,7 @@ Press 1 for Default View - + All files (**) @@ -1386,26 +1386,26 @@ Press 1 for Default View - + GTA V Export (*.g5e) - + Savegames files (SGTA*) - + Snapmatic pictures (PGTA*) - + No valid file is selected @@ -1424,13 +1424,13 @@ Press 1 for Default View - + Failed to read Snapmatic picture - + Failed to read Savegame file @@ -1640,7 +1640,7 @@ Press 1 for Default View - + All profile files (*.g5e SGTA* PGTA*) @@ -1854,8 +1854,8 @@ Press 1 for Default View - - + + Snapmatic Properties @@ -1947,8 +1947,8 @@ Press 1 for Default View - - + + Patching of Snapmatic Properties failed because of I/O Error @@ -1960,72 +1960,72 @@ Press 1 for Default View - + Snapmatic Crew - + New Snapmatic crew: - + Snapmatic Title - + New Snapmatic title: - - - + + + Edit - + Players: %1 (%2) Multiple Player are inserted here - + Player: %1 (%2) One Player is inserted here - + Title: %1 (%2) - - + + Appropriate: %1 - + Yes Yes, should work fine - + No No, could lead to issues - + Crew: %1 (%2) @@ -2259,7 +2259,7 @@ Press 1 for Default View UserInterface - + %2 - %1 @@ -2291,7 +2291,8 @@ Press 1 for Default View - + + &Close @@ -2327,8 +2328,8 @@ Press 1 for Default View - - + + &About %1 @@ -2384,15 +2385,15 @@ Press 1 for Default View - + Select &GTA V Folder... - - - + + + Select GTA V Folder... @@ -2449,32 +2450,53 @@ Press 1 for Default View - - - + + + Select Profile - + + + &Donate + + + + + Donate + + + + + Donation methods + + + + + Copy + + + + Open File... - - - - + + + + Open File - + Can't open %1 because of not valid file format - + %1 - Messages diff --git a/res/gta5sync_de.qm b/res/gta5sync_de.qm index 1397746..3149d28 100644 Binary files a/res/gta5sync_de.qm and b/res/gta5sync_de.qm differ diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts index 37cd720..3eea13d 100644 --- a/res/gta5sync_de.ts +++ b/res/gta5sync_de.ts @@ -177,8 +177,8 @@ Snapmatic Bilder und Spielständen ImageEditorDialog - - + + Snapmatic Image Editor @@ -210,13 +210,13 @@ Snapmatic Bilder und Spielständen S&chließen - + Patching of Snapmatic Image failed because of I/O Error Patchen von Snapmatic Bild fehlgeschlagen wegen I/O Fehler - + Patching of Snapmatic Image failed because of Image Error Patchen von Snapmatic Bild fehlgeschlagen wegen Bild Fehler @@ -756,26 +756,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 Gefunden: %1 - - - - - - - - + + + + + + + + Language: %1 Sprache: %1 @@ -796,7 +796,7 @@ Y: %2 - + Participate in %1 User Statistics An %1 Benutzerstatistik teilnehmen @@ -827,8 +827,8 @@ Y: %2 - - + + Participation ID: %1 Teilnahme ID: %1 @@ -885,7 +885,7 @@ Y: %2 - + Current: %1 Aktuell: %1 @@ -922,7 +922,7 @@ Y: %2 Abbre&chen - + %1 %1 %1 @@ -961,56 +961,56 @@ Y: %2 %1 (Sprachenpriorität) - + The new Custom Folder will initialise after you restart %1. Der eigene Ordner wird initialisiert sobald du %1 neugestartet hast. - + View %1 User Statistics Online %1 Benutzerstatistik Online ansehen - + Not registered Nicht registriert - - - - + + + + Yes Ja - - + + No Nein - - + + OS defined OS-defined - - + + Steam defined Steam-definiert - + No Profile No Profile, as default Kein Profil - - - + + + Profile: %1 Profil: %1 @@ -1090,7 +1090,7 @@ Y: %2 &Kartenansicht öffnen... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1099,37 +1099,37 @@ Taste 2 - Overlay umschalten Pfeiltasten - Navigieren - + Snapmatic Picture Viewer Snapmatic Bildansicht - + Failed at %1 Fehlgeschlagen beim %1 - - + + No Crew Keine Crew - - - + + + No Players Keine Spieler - + Avatar Preview Mode Press 1 for Default View Avatar Vorschaumodus Drücke 1 für Standardmodus - + Unknown Location Unbekannter Standort @@ -1379,13 +1379,13 @@ Drücke 1 für Standardmodus - + Savegames files (SGTA*) Spielstanddateien (SGTA*) - + Snapmatic pictures (PGTA*) Snapmatic Bilder (PGTA*) @@ -1405,7 +1405,7 @@ Drücke 1 für Standardmodus - + All files (**) Alle Dateien (**) @@ -1426,13 +1426,13 @@ Drücke 1 für Standardmodus - + Failed to read Snapmatic picture Fehler beim Lesen vom Snapmatic Bild - + Failed to read Savegame file Fehler beim Lesen von Spielstanddatei @@ -1473,7 +1473,7 @@ Drücke 1 für Standardmodus - + No valid file is selected Keine gültige Datei wurde ausgewählt @@ -1677,13 +1677,13 @@ Drücke 1 für Standardmodus Exportiere Datei %1 von %2 Dateien - + All profile files (*.g5e SGTA* PGTA*) Alle Profildateien (*.g5e SGTA* PGTA*) - + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1906,8 +1906,8 @@ Drücke 1 für Standardmodus - - + + Snapmatic Properties Snapmatic Eigenschaften @@ -1949,7 +1949,7 @@ Drücke 1 für Standardmodus - + Snapmatic Title Snapmatic Titel @@ -1959,30 +1959,30 @@ Drücke 1 für Standardmodus Snapmatic Werte - + Crew: %1 (%2) Crew: %1 (%2) - + Title: %1 (%2) Titel: %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here Spieler: %1 (%2) - + Player: %1 (%2) One Player is inserted here Spieler: %1 (%2) - - + + Appropriate: %1 Angemessen: %1 @@ -2022,20 +2022,20 @@ Drücke 1 für Standardmodus Abbre&chen - - - + + + Edit Bearbeiten - + Yes Yes, should work fine Ja - + No No, could lead to issues Nein @@ -2057,27 +2057,27 @@ Drücke 1 für Standardmodus - - + + Patching of Snapmatic Properties failed because of I/O Error Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen I/O Fehler - + New Snapmatic title: Neuer Snapmatic Titel: - + Snapmatic Crew Snapmatic Crew - + New Snapmatic crew: Neue Snapmatic Crew: @@ -2410,7 +2410,7 @@ Drücke 1 für Standardmodus - + Select &GTA V Folder... Wähle &GTA V Ordner... @@ -2426,7 +2426,8 @@ Drücke 1 für Standardmodus - + + &Close S&chließen @@ -2461,53 +2462,74 @@ Drücke 1 für Standardmodus Dateien &importieren... - - - + + + Select Profile Profil auswählen - - - + + + Select GTA V Folder... Wähle GTA V Ordner... - + Open File... Datei öffnen... - + %2 - %1 %2 - %1 - - + + &About %1 &Über %1 - - - - + + + &Donate + Spen&den + + + + Donate + Spenden + + + + Donation methods + Spendenmethoden + + + + Copy + Kopieren + + + + + + Open File Datei öffnen - + Can't open %1 because of not valid file format Kann nicht %1 öffnen weil Dateiformat nicht gültig ist - + %1 - Messages %1 - Nachrichten diff --git a/res/gta5sync_en_US.ts b/res/gta5sync_en_US.ts index 4889090..93ca28d 100644 --- a/res/gta5sync_en_US.ts +++ b/res/gta5sync_en_US.ts @@ -167,8 +167,8 @@ Pictures and Savegames ImageEditorDialog - - + + Snapmatic Image Editor @@ -200,13 +200,13 @@ Pictures and Savegames - + Patching of Snapmatic Image failed because of I/O Error - + Patching of Snapmatic Image failed because of Image Error @@ -728,26 +728,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 - - - - - - - - + + + + + + + + Language: %1 @@ -763,7 +763,7 @@ Y: %2 - + Participate in %1 User Statistics @@ -784,8 +784,8 @@ Y: %2 - - + + Participation ID: %1 @@ -848,7 +848,7 @@ Y: %2 - + Current: %1 @@ -923,62 +923,62 @@ Y: %2 - + %1 %1 - + The new Custom Folder will initialise after you restart %1. The new Custom Folder will initialize after you restart %1. - + No Profile No Profile, as default - - - + + + Profile: %1 - + View %1 User Statistics Online - + Not registered - - - - + + + + Yes - - + + No - - + + OS defined - - + + Steam defined @@ -1049,42 +1049,42 @@ Y: %2 - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate - + Snapmatic Picture Viewer - + Failed at %1 - - - + + + No Players - - + + No Crew - + Unknown Location - + Avatar Preview Mode Press 1 for Default View @@ -1357,19 +1357,19 @@ Press 1 for Default View - + GTA V Export (*.g5e) - + Savegames files (SGTA*) - + Snapmatic pictures (PGTA*) @@ -1384,14 +1384,14 @@ Press 1 for Default View - + All files (**) - + No valid file is selected @@ -1410,13 +1410,13 @@ Press 1 for Default View - + Failed to read Snapmatic picture - + Failed to read Savegame file @@ -1640,7 +1640,7 @@ Press 1 for Default View - + All profile files (*.g5e SGTA* PGTA*) @@ -1854,8 +1854,8 @@ Press 1 for Default View - - + + Snapmatic Properties @@ -1901,30 +1901,30 @@ Press 1 for Default View - + Crew: %1 (%2) - + Title: %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here - + Player: %1 (%2) One Player is inserted here - - + + Appropriate: %1 @@ -1964,20 +1964,20 @@ Press 1 for Default View - - - + + + Edit - + Yes Yes, should work fine - + No No, could lead to issues @@ -1999,33 +1999,33 @@ Press 1 for Default View - - + + Patching of Snapmatic Properties failed because of I/O Error - + Snapmatic Title - + New Snapmatic title: - + Snapmatic Crew - + New Snapmatic crew: @@ -2259,7 +2259,7 @@ Press 1 for Default View UserInterface - + %2 - %1 @@ -2291,7 +2291,8 @@ Press 1 for Default View - + + &Close @@ -2322,8 +2323,8 @@ Press 1 for Default View - - + + &About %1 @@ -2379,15 +2380,15 @@ Press 1 for Default View - + Select &GTA V Folder... - - - + + + Select GTA V Folder... @@ -2435,32 +2436,53 @@ Press 1 for Default View - - - + + + Select Profile - + + + &Donate + + + + + Donate + + + + + Donation methods + + + + + Copy + + + + Open File... - - - - + + + + Open File - + Can't open %1 because of not valid file format - + %1 - Messages diff --git a/res/gta5sync_fr.qm b/res/gta5sync_fr.qm index 703bceb..676f610 100644 Binary files a/res/gta5sync_fr.qm and b/res/gta5sync_fr.qm differ diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts index 9aaf33e..2b8df9e 100644 --- a/res/gta5sync_fr.ts +++ b/res/gta5sync_fr.ts @@ -178,8 +178,8 @@ et les fichiers de sauvegarde de Grand Theft Auto V ImageEditorDialog - - + + Snapmatic Image Editor @@ -211,13 +211,13 @@ et les fichiers de sauvegarde de Grand Theft Auto V &Fermer - + Patching of Snapmatic Image failed because of I/O Error Échec du patch Snapmatic : I/O Error - + Patching of Snapmatic Image failed because of Image Error Échec du patch Snapmatic : Image Error @@ -757,26 +757,26 @@ Y : %2 - - - - - - + + + + + + Found: %1 Trouvé : %1 - - - - - - - - + + + + + + + + Language: %1 Langue : %1 @@ -797,7 +797,7 @@ Y : %2 - + Participate in %1 User Statistics Participer aux statistiques d'usage %1 @@ -828,8 +828,8 @@ Y : %2 - - + + Participation ID: %1 ID de participation : %1 @@ -881,7 +881,7 @@ Y : %2 - + Current: %1 Actuel : %1 @@ -956,62 +956,62 @@ Y : %2 %1 (Priorité de la langue) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Le nouveau Dossier personnalisé sera initialisé au redémarrage de %1. - + View %1 User Statistics Online Voir les statistiques d'usage %1 en ligne - + Not registered Pas enregistré - - - - + + + + Yes Oui - - + + No Non - - + + OS defined Défini par le système d'exploitation - - + + Steam defined Défini par Steam - + No Profile No Profile, as default Aucun profil - - - + + + Profile: %1 Profil : %1 @@ -1171,7 +1171,7 @@ Y : %2 Ouvrir la &Visionneuse de Carte... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1180,37 +1180,37 @@ Touche 2 - Activer/désactiver l'overlay Touches fléchées - Naviguer - + Snapmatic Picture Viewer Visionneuse de photo Snapmatic - + Failed at %1 Echec de %1 - - + + No Crew Aucun crew - - - + + + No Players Aucun joueurs - + Avatar Preview Mode Press 1 for Default View Mode Aperçu Avatar Appuyer sur 1 pour le mode par défaut - + Unknown Location Emplacement inconnu @@ -1391,13 +1391,13 @@ Appuyer sur 1 pour le mode par défaut - + Savegames files (SGTA*) Fichiers de sauvegarde GTA (SGTA*) - + Snapmatic pictures (PGTA*) Photos Snapmatic (PGTA*) @@ -1412,7 +1412,7 @@ Appuyer sur 1 pour le mode par défaut - + All files (**) Tous les fichiers (**) @@ -1434,7 +1434,7 @@ Appuyer sur 1 pour le mode par défaut - + No valid file is selected Fichier invalide @@ -1445,13 +1445,13 @@ Appuyer sur 1 pour le mode par défaut - + Failed to read Snapmatic picture Impossible d'ouvrir la photo Snapmatic - + Failed to read Savegame file Impossible de lire le fichier de sauvegarde @@ -1679,13 +1679,13 @@ Appuyer sur 1 pour le mode par défaut Supprimer la sélection ? - + All profile files (*.g5e SGTA* PGTA*) Tous les fichiers de profil (*.g5e SGTA* PGTA*) - + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1916,8 +1916,8 @@ Appuyer sur 1 pour le mode par défaut - - + + Snapmatic Properties Propriétés Snapmatic @@ -1959,7 +1959,7 @@ Appuyer sur 1 pour le mode par défaut - + Snapmatic Title Titre Snapmatic @@ -1969,30 +1969,30 @@ Appuyer sur 1 pour le mode par défaut Valeurs Snapmatic - + Crew: %1 (%2) Crew : %1 (%2) - + Title: %1 (%2) Titre : %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here Joueurs : %1 (%2) - + Player: %1 (%2) One Player is inserted here Joueur : %1 (%2) - - + + Appropriate: %1 Valide : %1 @@ -2032,21 +2032,21 @@ Appuyer sur 1 pour le mode par défaut A&nnuler - - - + + + Edit Éditer - + Yes Yes, should work fine Oui, devrait fonctionner Oui - + No No, could lead to issues Non, pourrait causer des erreurs @@ -2069,27 +2069,27 @@ Appuyer sur 1 pour le mode par défaut - - + + Patching of Snapmatic Properties failed because of I/O Error La modification des propriétés Snapmatic a échoué : erreur d'entrée/sortie - + New Snapmatic title: Nouveau titre Snapmatic : - + Snapmatic Crew Crew Snapmatic - + New Snapmatic crew: Nouveau crew Snapmatic : @@ -2349,7 +2349,8 @@ Appuyer sur 1 pour le mode par défaut - + + &Close Fer&mer @@ -2425,15 +2426,15 @@ Appuyer sur 1 pour le mode par défaut - + Select &GTA V Folder... Modifier l'emplacement de &GTA V... - - - + + + Select GTA V Folder... Modifier l'emplacement de GTA V... @@ -2487,44 +2488,69 @@ Appuyer sur 1 pour le mode par défaut - + %2 - %1 %2 - %1 - - + + &About %1 &À propos de %1 - - - + + + Select Profile Sélectionner un profil - + + + &Donate + + + + + Donate + + + + + Donation methods + + + + + Copy + Copier + + + &Copy + &Copier + + + Open File... Ouvrir... - - - - + + + + Open File Ouvrir - + Can't open %1 because of not valid file format Impossible d'ouvrir %1, format invalide - + %1 - Messages %1 - Nouvelles diff --git a/res/gta5sync_ko.qm b/res/gta5sync_ko.qm index fc5b04b..3a3bfbf 100644 Binary files a/res/gta5sync_ko.qm and b/res/gta5sync_ko.qm differ diff --git a/res/gta5sync_ko.ts b/res/gta5sync_ko.ts index 97be712..b3687a1 100644 --- a/res/gta5sync_ko.ts +++ b/res/gta5sync_ko.ts @@ -202,21 +202,21 @@ Pictures and Savegames 닫기(&C) - - + + Snapmatic Image Editor 스냅매틱 이미지 편집기 - + Patching of Snapmatic Image failed because of I/O Error I/O 오류로 인해 스냅매틱 이미지를 패치하지 못했습니다. - + Patching of Snapmatic Image failed because of Image Error 이미지 오류로 인해 스냅매틱 이미지를 패치하지 못했습니다. @@ -763,26 +763,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 찾음: %1 - - - - - - - - + + + + + + + + Language: %1 언어: %1 @@ -803,7 +803,7 @@ Y: %2 - + Participate in %1 User Statistics 사용자 통계 참가 %1 @@ -839,8 +839,8 @@ Y: %2 - - + + Participation ID: %1 참여 아이디: %1 @@ -863,7 +863,7 @@ Y: %2 - + Current: %1 현재: %1 @@ -967,64 +967,64 @@ Y: %2 %1 (인터페이스와 가까운 언어) - + %1 %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. 다시 시작한 후 새 사용자 지정 폴더가 초기화됩니다. %1. - + No Profile No Profile, as default 프로필 없음 (기본값) 프로필 없음 - - - + + + Profile: %1 프로필: %1 - + View %1 User Statistics Online 온라인 %1 사용자 통계 보기 - + Not registered 등록되지 않았습니다. - - - - + + + + Yes - - + + No 아니요 - - + + OS defined OS 정의 - - + + Steam defined 스팀 정의 @@ -1104,7 +1104,7 @@ Y: %2 JSON 편집기 열기(&J) - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1113,35 +1113,35 @@ Arrow Keys - Navigate 화살표키 - 이동 - + Snapmatic Picture Viewer 스냅매틱 이미지 뷰어 - + Failed at %1 %1에서 실패했습니다. - - - + + + No Players 플레이어 없음 - - + + No Crew 조직 없음 - + Unknown Location 알 수 없는 위치 - + Avatar Preview Mode Press 1 for Default View 아바타 미리 보기 모드입니다. @@ -1393,7 +1393,7 @@ Press 1 for Default View - + All files (**) 모든 파일 (**) @@ -1438,26 +1438,26 @@ Press 1 for Default View - + GTA V Export (*.g5e) GTA V로 내보내기 (*.g5e) - + Savegames files (SGTA*) 세이브 파일 (SGTA*) - + Snapmatic pictures (PGTA*) 스냅매틱 이미지 (PGTA*) - + No valid file is selected 올바른 파일이 선택되지 않았습니다. @@ -1478,13 +1478,13 @@ Press 1 for Default View - + Failed to read Snapmatic picture 스냅매틱 이미지를 읽지 못했습니다. - + Failed to read Savegame file 세이브 파일을 읽지 못했습니다. @@ -1703,7 +1703,7 @@ Press 1 for Default View 제목 변경 - + All profile files (*.g5e SGTA* PGTA*) 모든 프로필 파일 (*.g5e SGTA* PGTA*) @@ -1934,8 +1934,8 @@ Press 1 for Default View - - + + Snapmatic Properties 스냅매틱 속성 @@ -2027,8 +2027,8 @@ Press 1 for Default View - - + + Patching of Snapmatic Properties failed because of I/O Error I/O 오류로 인해 스냅매틱 속성을 패치하지 못했습니다. @@ -2040,76 +2040,76 @@ Press 1 for Default View - + Snapmatic Crew 조직 스냅매틱 - + New Snapmatic crew: 새로운 조직 스냅매틱: - + Snapmatic Title 스냅매틱 제목 - + New Snapmatic title: 새로운 스냅매틱 제목: - - - + + + Edit 편집 - + Players: %1 (%2) Multiple Player are inserted here 여기에 여러 플레이어가 추가됩니다. 플레이어: %1 (%2) - + Player: %1 (%2) One Player is inserted here 여기에 플레이어 하나가 추가됩니다. 플레이어: %1 (%2) - + Title: %1 (%2) 제목: %1 (%2) - - + + Appropriate: %1 변경: %1 - + Yes Yes, should work fine 네, 잘 될 거예요. - + No No, could lead to issues 아니요, 문제가 발생할 수 있습니다. 아니요 - + Crew: %1 (%2) 조직: %1 (%2) @@ -2344,7 +2344,7 @@ Press 1 for Default View UserInterface - + %2 - %1 %2 - %1 @@ -2377,7 +2377,8 @@ Press 1 for Default View - + + &Close 닫기(&C) @@ -2413,8 +2414,8 @@ Press 1 for Default View - - + + &About %1 %1 정보(&A) @@ -2470,15 +2471,15 @@ Press 1 for Default View - + Select &GTA V Folder... GTA V 폴더 선택(&G) - - - + + + Select GTA V Folder... GTA V 폴더 선택 @@ -2535,32 +2536,57 @@ Press 1 for Default View 인게임 숨기기 - - - + + + Select Profile 프로필 선택 - + + + &Donate + + + + + Donate + + + + + Donation methods + + + + + Copy + 복사 + + + &Copy + 복사(&C) + + + Open File... 파일 열기... - - - - + + + + Open File 파일 열기 - + Can't open %1 because of not valid file format 올바른 파일 형식이 아니므로 %1을 열 수 없습니다. - + %1 - Messages %1 - 뉴스 diff --git a/res/gta5sync_ru.qm b/res/gta5sync_ru.qm index 4ffa050..68f63ab 100644 Binary files a/res/gta5sync_ru.qm and b/res/gta5sync_ru.qm differ diff --git a/res/gta5sync_ru.ts b/res/gta5sync_ru.ts index d4457fe..efa7ff8 100644 --- a/res/gta5sync_ru.ts +++ b/res/gta5sync_ru.ts @@ -181,8 +181,8 @@ Pictures and Savegames ImageEditorDialog - - + + Snapmatic Image Editor @@ -214,13 +214,13 @@ Pictures and Savegames &Закрыть - + Patching of Snapmatic Image failed because of I/O Error Не удалось изменить картинку Snapmatic из-за ошибки ввода-вывода - + Patching of Snapmatic Image failed because of Image Error Не удалось изменить картинку Snapmatic из-за ошибки Image Error @@ -763,26 +763,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 Найдено: %1 - - - - - - - - + + + + + + + + Language: %1 Язык: %1 @@ -803,7 +803,7 @@ Y: %2 - + Participate in %1 User Statistics Участвовать в пользовательской статистике %1 @@ -836,8 +836,8 @@ Y: %2 - - + + Participation ID: %1 Номер участника: %1 @@ -891,7 +891,7 @@ Y: %2 - + Current: %1 Сейчас: %1 @@ -966,62 +966,62 @@ Y: %2 %1 (Приоритетный язык) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Другая папка будет загружена после перезапуска %1. - + View %1 User Statistics Online Посмотреть пользовательскую статистику %1 онлайн - + Not registered Не зарегистрирован - - - - + + + + Yes Да - - + + No Нет - - + + OS defined Настройка от ОС - - + + Steam defined Настройка от Steam - + No Profile No Profile, as default Нет профиля - - - + + + Profile: %1 Профиль: %1 @@ -1101,7 +1101,7 @@ Y: %2 Открыть &карту... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1110,37 +1110,37 @@ Arrow Keys - Navigate Стрелки - Навигация - + Snapmatic Picture Viewer Просмотрщик фотографий Snapmatic - + Failed at %1 Ошибка при %1 - - + + No Crew Вне банды - - - + + + No Players Игроков нет - + Avatar Preview Mode Press 1 for Default View Режим просмотра аватарок Нажмите 1 для стандартного просмотра - + Unknown Location Неизвестное место @@ -1391,13 +1391,13 @@ Press 1 for Default View - + Savegames files (SGTA*) Файлы сохранения (SGTA*) - + Snapmatic pictures (PGTA*) Картинка Snapmatic (PGTA*) @@ -1405,7 +1405,7 @@ Press 1 for Default View - + All files (**) Все файлы (**) @@ -1426,20 +1426,20 @@ Press 1 for Default View - + Failed to read Snapmatic picture Не удалось загрузить картинку Snapmatic - + Failed to read Savegame file Не удалось загрузить файл сохранения - + No valid file is selected Выбранный файл неверен @@ -1692,13 +1692,13 @@ Press 1 for Default View Экспортируется файл %1 из %2 - + All profile files (*.g5e SGTA* PGTA*) Все файлы профиля (*.g5e SGTA* PGTA*) - + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1921,8 +1921,8 @@ Press 1 for Default View - - + + Snapmatic Properties Свойства Snapmatic @@ -1963,7 +1963,7 @@ Press 1 for Default View Значения в Snapmatic - + Crew: %1 (%2) Банда: %1 (%2) @@ -1974,30 +1974,30 @@ Press 1 for Default View - + Snapmatic Title Заголовок Snapmatic - + Title: %1 (%2) Заголовок: %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here Игроки: %1 (%2) - + Player: %1 (%2) One Player is inserted here Игрок: %1 (%2) - - + + Appropriate: %1 Подходит: %1 @@ -2037,20 +2037,20 @@ Press 1 for Default View &Отмена - - - + + + Edit Правка - + Yes Yes, should work fine Да - + No No, could lead to issues Нет @@ -2072,27 +2072,27 @@ Press 1 for Default View - - + + Patching of Snapmatic Properties failed because of I/O Error Не удалось измененить свойства Snapmatic из-за проблемы ввода/вывода - + New Snapmatic title: Новый заголовок Snapmatic: - + Snapmatic Crew Банда на Snapmatic - + New Snapmatic crew: Новая банда на Snapmatic: @@ -2392,7 +2392,7 @@ Press 1 for Default View - + Select &GTA V Folder... Выбрать &папку GTA V... @@ -2436,7 +2436,8 @@ Press 1 for Default View - + + &Close &Закрыть @@ -2476,53 +2477,78 @@ Press 1 for Default View &Открыть файл... - - - + + + Select Profile Выбор профиля - - - + + + Select GTA V Folder... Выбрать папку GTA V... - + %2 - %1 %2 - %1 - - + + &About %1 &О программе %1 - + + + &Donate + + + + + Donate + + + + + Donation methods + + + + &Copy + &Копировать + + + + Copy + Копировать + + + Open File... Открыть файл... - - - - + + + + Open File Открыть файл - + Can't open %1 because of not valid file format Не удалось открыть %1 из-за неверного формата файла - + %1 - Messages %1 - Новости diff --git a/res/gta5sync_uk.qm b/res/gta5sync_uk.qm index 84d9d94..76d1a87 100644 Binary files a/res/gta5sync_uk.qm and b/res/gta5sync_uk.qm differ diff --git a/res/gta5sync_uk.ts b/res/gta5sync_uk.ts index 749178c..5131e43 100644 --- a/res/gta5sync_uk.ts +++ b/res/gta5sync_uk.ts @@ -205,21 +205,21 @@ Pictures and Savegames &Закрити - - + + Snapmatic Image Editor Редактор Snapmatic зображень - + Patching of Snapmatic Image failed because of I/O Error Виправлення Snapmatic зображення не вдалося через I/O Error - + Patching of Snapmatic Image failed because of Image Error Виправлення Snapmatic зображення не вдалося через помилку картинки @@ -759,26 +759,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 Знайдено:%1 - - - - - - - - + + + + + + + + Language: %1 Мова: %1 @@ -800,7 +800,7 @@ Y: %2 - + Participate in %1 User Statistics Опитування %1 про устаткування ПК @@ -836,8 +836,8 @@ Y: %2 - - + + Participation ID: %1 ID учасника : %1 @@ -860,7 +860,7 @@ Y: %2 - + Current: %1 Зараз: %1 @@ -959,62 +959,62 @@ Y: %2 %1 (пріоритет мови) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Нова користувацька папка буде ініціалізована після перезапуску %1. - + No Profile No Profile, as default Жодного - - - + + + Profile: %1 Профіль: %1 - + View %1 User Statistics Online Переглянути користувацьку статистику %1 онлайн - + Not registered Не зареєстрований - - - - + + + + Yes Так - - + + No Ні - - + + OS defined Визначається ОС - - + + Steam defined Визначається Steam @@ -1094,7 +1094,7 @@ Y: %2 Відкрити редактор &JSON... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1103,35 +1103,35 @@ Arrow Keys - Navigate Стрілки - Навігація - + Snapmatic Picture Viewer Переглядач фотографій Snapmatic - + Failed at %1 Помилка на%1 - - - + + + No Players Гравців немає - - + + No Crew Банди немає - + Unknown Location Невідома локація - + Avatar Preview Mode Press 1 for Default View Режим для аватарок @@ -1383,7 +1383,7 @@ Press 1 for Default View - + All files (**) Усі файли (**) @@ -1428,26 +1428,26 @@ Press 1 for Default View - + GTA V Export (*.g5e) GTA V Export (*.g5e) - + Savegames files (SGTA*) Файли збереження гри (SGTA*) - + Snapmatic pictures (PGTA*) Snapmatic зображення (PGTA*) - + No valid file is selected Вибрані недійсні файли @@ -1468,13 +1468,13 @@ Press 1 for Default View - + Failed to read Snapmatic picture Не вдалося прочитати Snapmatic картинку - + Failed to read Savegame file Не вдалося прочитати файл збереження гри @@ -1688,7 +1688,7 @@ Press 1 for Default View Змінити назву - + All profile files (*.g5e SGTA* PGTA*) Усі файли зображень (*.g5e SGTA* PGTA*) @@ -1919,8 +1919,8 @@ Press 1 for Default View - - + + Snapmatic Properties Властивості Snapmatic @@ -2012,8 +2012,8 @@ Press 1 for Default View - - + + Patching of Snapmatic Properties failed because of I/O Error Змінити властивості Snapmatic не вдалося через I/O Помилку @@ -2025,72 +2025,72 @@ Press 1 for Default View - + Snapmatic Crew Snapmatic банда - + New Snapmatic crew: Нова Snapmatic банда: - + Snapmatic Title Snapmatic назва - + New Snapmatic title: Новий Snapmatic заголовок: - - - + + + Edit Правка - + Players: %1 (%2) Multiple Player are inserted here Гравці: %1 (%2) - + Player: %1 (%2) One Player is inserted here Гравець: %1 (%2) - + Title: %1 (%2) Назва: %1 (%2) - - + + Appropriate: %1 Підходить: %1 - + Yes Yes, should work fine Так - + No No, could lead to issues Ні - + Crew: %1 (%2) Банда: %1 (%2) @@ -2325,7 +2325,7 @@ Press 1 for Default View UserInterface - + %2 - %1 %2 - %1 @@ -2357,7 +2357,8 @@ Press 1 for Default View - + + &Close &Закрити @@ -2393,8 +2394,8 @@ Press 1 for Default View - - + + &About %1 &Про %1 @@ -2450,15 +2451,15 @@ Press 1 for Default View - + Select &GTA V Folder... Вибрати &GTA V теку... - - - + + + Select GTA V Folder... Вибрати GTA V теку... @@ -2515,32 +2516,57 @@ Press 1 for Default View Сховати у грі - - - + + + Select Profile Вибрати профіль - + + + &Donate + + + + + Donate + + + + + Donation methods + + + + + Copy + Копіювати + + + &Copy + &Копіювати + + + Open File... Відкрити файл... - - - - + + + + Open File Відкрити файл - + Can't open %1 because of not valid file format Неможливо відкрити %1 через невідомий формат файлу - + %1 - Messages %1 - Новини diff --git a/res/gta5sync_zh_TW.qm b/res/gta5sync_zh_TW.qm index 3d1013d..4aca74f 100644 Binary files a/res/gta5sync_zh_TW.qm and b/res/gta5sync_zh_TW.qm differ diff --git a/res/gta5sync_zh_TW.ts b/res/gta5sync_zh_TW.ts index ac51ab1..552ccd6 100644 --- a/res/gta5sync_zh_TW.ts +++ b/res/gta5sync_zh_TW.ts @@ -201,21 +201,21 @@ Pictures and Savegames 關閉(&C) - - + + Snapmatic Image Editor Snapmatic 圖片編輯器 - + Patching of Snapmatic Image failed because of I/O Error I/O 錯誤,Snapmatic 圖片更新失敗 - + Patching of Snapmatic Image failed because of Image Error 圖片錯誤,Snapmatic 圖片更新失敗 @@ -754,26 +754,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 找到: %1 - - - - - - - - + + + + + + + + Language: %1 語言: %1 @@ -794,7 +794,7 @@ Y: %2 - + Participate in %1 User Statistics 參與 %1 使用者統計 @@ -830,8 +830,8 @@ Y: %2 - - + + Participation ID: %1 參與 ID: %1 @@ -854,7 +854,7 @@ Y: %2 - + Current: %1 目前: %1 @@ -953,62 +953,62 @@ Y: %2 %1 (遊戲語言) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. 自訂資料夾將在 %1 重新啟動後初始化. - + No Profile No Profile, as default - - - + + + Profile: %1 設定檔: %1 - + View %1 User Statistics Online 檢視 %1 使用者統計資訊 - + Not registered 未註冊參與 - - - - + + + + Yes - - + + No - - + + OS defined 系統定義 - - + + Steam defined Steam 定義 @@ -1088,7 +1088,7 @@ Y: %2 開啟 JSON 編輯器(&J)... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1097,35 +1097,35 @@ Arrow Keys - Navigate 方向鍵 - 導覽 - + Snapmatic Picture Viewer Snapmatic 圖片檢視器 - + Failed at %1 失敗: %1 - - - + + + No Players - - + + No Crew - + Unknown Location 未知地點 - + Avatar Preview Mode Press 1 for Default View 大頭貼預覽模式 @@ -1377,7 +1377,7 @@ Press 1 for Default View - + All files (**) 所有檔案 (**) @@ -1422,26 +1422,26 @@ Press 1 for Default View - + GTA V Export (*.g5e) GTA V Export (*.g5e) - + Savegames files (SGTA*) 遊戲存檔 (SGTA*) - + Snapmatic pictures (PGTA*) Snapmatic 圖片 (PGTA*) - + No valid file is selected 沒有選擇有效的檔案 @@ -1460,13 +1460,13 @@ Press 1 for Default View - + Failed to read Snapmatic picture 無法讀取 Snapmatic 圖片 - + Failed to read Savegame file 無法讀取遊戲存檔 @@ -1678,7 +1678,7 @@ Press 1 for Default View 更改標題 - + All profile files (*.g5e SGTA* PGTA*) 所有設定檔檔案 (*.g5e SGTA* PGTA*) @@ -1901,8 +1901,8 @@ Press 1 for Default View - - + + Snapmatic Properties Snapmatic 屬性 @@ -1994,8 +1994,8 @@ Press 1 for Default View - - + + Patching of Snapmatic Properties failed because of I/O Error 讀寫錯誤,未能更新 Snapmatic 屬性 @@ -2007,72 +2007,72 @@ Press 1 for Default View - + Snapmatic Crew 幫會 - + New Snapmatic crew: 輸入新的幫會: - + Snapmatic Title 標題 - + New Snapmatic title: 輸入新的標題: - - - + + + Edit 編輯 - + Players: %1 (%2) Multiple Player are inserted here 玩家: %1 (%2) - + Player: %1 (%2) One Player is inserted here 玩家: %1 (%2) - + Title: %1 (%2) 標題: %1 (%2) - - + + Appropriate: %1 可使用: %1 - + Yes Yes, should work fine - + No No, could lead to issues - + Crew: %1 (%2) 幫會: %1 (%2) @@ -2306,7 +2306,7 @@ Press 1 for Default View UserInterface - + %2 - %1 %2 - %1 @@ -2338,7 +2338,8 @@ Press 1 for Default View - + + &Close 關閉(&C) @@ -2374,8 +2375,8 @@ Press 1 for Default View - - + + &About %1 關於 %1(&A) @@ -2431,15 +2432,15 @@ Press 1 for Default View - + Select &GTA V Folder... 選擇 GTA V 資料夾(&G)... - - - + + + Select GTA V Folder... 選擇 GTA V 資料夾... @@ -2496,32 +2497,57 @@ Press 1 for Default View 在遊戲中隱藏 - - - + + + Select Profile 選擇設定檔 - + + + &Donate + + + + + Donate + + + + + Donation methods + + + + + Copy + 複製 + + + &Copy + 複製(&C) + + + Open File... 開啟檔案... - - - - + + + + Open File 開啟檔案 - + Can't open %1 because of not valid file format 格式無效,無法開啟 %1 - + %1 - Messages %1 - 新聞 diff --git a/res/ltc.svgz b/res/ltc.svgz new file mode 100644 index 0000000..ae954e1 Binary files /dev/null and b/res/ltc.svgz differ diff --git a/res/qt6/qtbase_de.qm b/res/qt6/qtbase_de.qm index 4a4c988..a108050 100644 Binary files a/res/qt6/qtbase_de.qm and b/res/qt6/qtbase_de.qm differ diff --git a/res/qt6/qtbase_zh_TW.qm b/res/qt6/qtbase_zh_TW.qm index 6205298..f32a72f 100644 Binary files a/res/qt6/qtbase_zh_TW.qm and b/res/qt6/qtbase_zh_TW.qm differ diff --git a/res/xmr.svgz b/res/xmr.svgz new file mode 100644 index 0000000..55c269a Binary files /dev/null and b/res/xmr.svgz differ diff --git a/res/zec.svgz b/res/zec.svgz new file mode 100644 index 0000000..a39853d Binary files /dev/null and b/res/zec.svgz differ