From 26a24122e139bd420565a090767944e0b2e27464 Mon Sep 17 00:00:00 2001 From: Syping Date: Tue, 16 Jan 2018 00:13:08 +0100 Subject: [PATCH] improved telemetry + player list and fixed some other issues --- .travis.yml | 2 +- .travis/debian32_travis.sh | 6 +- .travis/debian64_travis.sh | 6 +- .travis/debian_build.sh | 12 +- .travis/debian_install.sh | 2 +- .travis/source.sh | 4 + .travis/travis.sh | 4 +- .travis/ubuntu64_travis.sh | 2 +- .travis/windows_build.sh | 16 +- .travis/windows_travis.sh | 8 +- AboutDialog.ui | 3 + GlobalString.cpp | 4 +- ImageEditorDialog.cpp | 1 - JsonEditorDialog.cpp | 1 - OptionsDialog.cpp | 93 +++- OptionsDialog.h | 3 + OptionsDialog.ui | 188 ++++++- PlayerListDialog.cpp | 51 +- PlayerListDialog.ui | 3 + ProfileInterface.cpp | 74 ++- SavegameDialog.cpp | 19 + SavegameDialog.h | 18 + SnapmaticEditor.cpp | 19 +- SnapmaticEditor.ui | 11 +- TelemetryClass.cpp | 155 +++++- TelemetryClass.h | 17 +- TranslationClass.h | 2 +- config.h | 16 +- lang/gta5sync_no.ts | 1049 +++++++++++++++++++++++++----------- main.cpp | 91 +++- res/app.rc | 6 +- res/gta5sync_de.qm | Bin 42321 -> 44925 bytes res/gta5sync_de.ts | 743 +++++++++++++++---------- res/gta5sync_en_US.qm | Bin 24091 -> 23883 bytes res/gta5sync_en_US.ts | 700 ++++++++++++++---------- res/gta5sync_fr.qm | Bin 26035 -> 25986 bytes res/gta5sync_fr.ts | 696 ++++++++++++++---------- res/gta5sync_ru.qm | Bin 31928 -> 31871 bytes res/gta5sync_ru.ts | 696 ++++++++++++++---------- 39 files changed, 3134 insertions(+), 1587 deletions(-) create mode 100755 .travis/source.sh diff --git a/.travis.yml b/.travis.yml index 74a2569..a33c7dc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,7 +25,7 @@ matrix: - EXECUTABLE_ARCH=_x64 before_install: - - cd tmext && rm -rf TelemetryClassAuthenticator.cpp && openssl aes-256-cbc -K $encrypted_55502862a724_key -iv $encrypted_55502862a724_iv -in TelemetryClassAuthenticator.cpp.enc -out TelemetryClassAuthenticator.cpp -d && cd .. + - ".travis/source.sh" script: - ".travis/travis.sh" diff --git a/.travis/debian32_travis.sh b/.travis/debian32_travis.sh index bcd8ce2..a4e6c75 100755 --- a/.travis/debian32_travis.sh +++ b/.travis/debian32_travis.sh @@ -3,9 +3,9 @@ DOCKER_IMAGE=i386/debian:jessie PROJECT_DIR_DOCKER=/gta5view -cd $PROJECT_DIR && \ -docker pull $DOCKER_IMAGE && \ +cd ${PROJECT_DIR} && \ +docker pull ${DOCKER_IMAGE} && \ docker run --rm \ -v "${PROJECT_DIR}:${PROJECT_DIR_DOCKER}" \ - $DOCKER_IMAGE \ + ${DOCKER_IMAGE} \ /bin/bash -c "export PROJECT_DIR=${PROJECT_DIR_DOCKER} && export QT_SELECT=${QT_SELECT} && export APPLICATION_VERSION=${APPLICATION_VERSION} && export APT_INSTALL=${APT_INSTALL} && export QMAKE_FLAGS_QT4=${QMAKE_FLAGS_QT4} && export QMAKE_FLAGS_QT5=${QMAKE_FLAGS_QT5} && export PACKAGE_VERSION=${PACKAGE_VERSION} && export PACKAGE_BUILD=${PACKAGE_BUILD} && export EXECUTABLE_VERSION=${EXECUTABLE_VERSION} && export EXECUTABLE_ARCH=${EXECUTABLE_ARCH} && cd ${PROJECT_DIR_DOCKER} && .travis/debian_install.sh && .travis/debian_build.sh" diff --git a/.travis/debian64_travis.sh b/.travis/debian64_travis.sh index 63d4610..d9b80fb 100755 --- a/.travis/debian64_travis.sh +++ b/.travis/debian64_travis.sh @@ -3,9 +3,9 @@ DOCKER_IMAGE=debian:jessie PROJECT_DIR_DOCKER=/gta5view -cd $PROJECT_DIR && \ -docker pull $DOCKER_IMAGE && \ +cd ${PROJECT_DIR} && \ +docker pull ${DOCKER_IMAGE} && \ docker run --rm \ -v "${PROJECT_DIR}:${PROJECT_DIR_DOCKER}" \ - $DOCKER_IMAGE \ + ${DOCKER_IMAGE} \ /bin/bash -c "export PROJECT_DIR=${PROJECT_DIR_DOCKER} && export QT_SELECT=${QT_SELECT} && export APPLICATION_VERSION=${APPLICATION_VERSION} && export APT_INSTALL=${APT_INSTALL} && export QMAKE_FLAGS_QT4=${QMAKE_FLAGS_QT4} && export QMAKE_FLAGS_QT5=${QMAKE_FLAGS_QT5} && export PACKAGE_VERSION=${PACKAGE_VERSION} && export PACKAGE_BUILD=${PACKAGE_BUILD} && export EXECUTABLE_VERSION=${EXECUTABLE_VERSION} && export EXECUTABLE_ARCH=${EXECUTABLE_ARCH} && cd ${PROJECT_DIR_DOCKER} && .travis/debian_install.sh && .travis/debian_build.sh" diff --git a/.travis/debian_build.sh b/.travis/debian_build.sh index 8e3b89b..2fcb0fe 100755 --- a/.travis/debian_build.sh +++ b/.travis/debian_build.sh @@ -1,8 +1,8 @@ #!/bin/bash # Creating folders -cd $PROJECT_DIR && \ -echo "gta5view build version is $APPLICATION_VERSION" && \ +cd ${PROJECT_DIR} && \ +echo "gta5view build version is ${APPLICATION_VERSION}" && \ mkdir build && \ mkdir assets && \ chmod -x res/gta5sync_*.qm res/gta5view.desktop res/gta5view.png && \ @@ -21,11 +21,11 @@ mkdir -p /usr/share/gta5view && \ # Starting build cd qt5 && \ -qmake -qt=5 -spec linux-clang GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=gnu++11 $QMAKE_FLAGS_QT5 DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"$APPLICATION_VERSION\\\\\\\"" DEFINES+=GTA5SYNC_QCONF DEFINES+=GTA5SYNC_TELEMETRY ../../gta5view.pro && \ +qmake -qt=5 -spec linux-clang GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=gnu++11 ${QMAKE_FLAGS_QT5} DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_QCONF DEFINES+=GTA5SYNC_TELEMETRY "DEFINES+=GTA5SYNC_TELEMETRY_WEBURL=\\\\\\\"https://dev.syping.de/gta5view-userstats/\\\\\\\"" ../../gta5view.pro && \ make -j 4 && \ -checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt5 --pkgversion=$PACKAGE_VERSION --pkgrelease=$PACKAGE_BUILD --pkggroup=utility --maintainer="Syping \" --requires=libqt5core5a,libqt5gui5,libqt5network5,libqt5widgets5,qttranslations5-l10n --conflicts=gta5view,gta5view-qt4 --replaces=gta5view,gta5view-qt4 --pakdir=$PROJECT_DIR/assets && \ +checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt5 --pkgversion=${PACKAGE_VERSION} --pkgrelease=${PACKAGE_BUILD} --pkggroup=utility --maintainer="Syping \" --requires=libqt5core5a,libqt5gui5,libqt5network5,libqt5widgets5,qttranslations5-l10n --conflicts=gta5view,gta5view-qt4 --replaces=gta5view,gta5view-qt4 --pakdir=${PROJECT_DIR}/assets && \ cd .. && \ cd qt4 && \ -qmake -qt=4 GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=gnu++11 $QMAKE_FLAGS_QT4 DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"$APPLICATION_VERSION\\\\\\\"" DEFINES+=GTA5SYNC_QCONF ../../gta5view.pro && \ +qmake -qt=4 GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=gnu++11 ${QMAKE_FLAGS_QT4} DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_QCONF ../../gta5view.pro && \ make -j 4 && \ -checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt4 --pkgversion=$PACKAGE_VERSION --pkgrelease=$PACKAGE_BUILD --pkggroup=utility --maintainer="Syping \" --requires=libqtcore4,libqtgui4,libqt4-network,qtcore4-l10n --conflicts=gta5view,gta5view-qt5 --replaces=gta5view,gta5view-qt5 --pakdir=$PROJECT_DIR/assets +checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt4 --pkgversion=${PACKAGE_VERSION} --pkgrelease=${PACKAGE_BUILD} --pkggroup=utility --maintainer="Syping \" --requires=libqtcore4,libqtgui4,libqt4-network,qtcore4-l10n --conflicts=gta5view,gta5view-qt5 --replaces=gta5view,gta5view-qt5 --pakdir=${PROJECT_DIR}/assets diff --git a/.travis/debian_install.sh b/.travis/debian_install.sh index 2c7092b..c0fb4e7 100755 --- a/.travis/debian_install.sh +++ b/.travis/debian_install.sh @@ -2,4 +2,4 @@ # Install packages apt-get update -qq && \ -apt-get install -qq $APT_INSTALL checkinstall dpkg-dev fakeroot g++ gcc qtbase5-dev qt5-qmake qttranslations5-l10n libqt4-dev +apt-get install -qq ${APT_INSTALL} checkinstall dpkg-dev fakeroot g++ gcc qtbase5-dev qt5-qmake qttranslations5-l10n libqt4-dev diff --git a/.travis/source.sh b/.travis/source.sh new file mode 100755 index 0000000..49d471d --- /dev/null +++ b/.travis/source.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +rm -rf tmext/TelemetryClassAuthenticator.cpp && \ +openssl aes-256-cbc -K $encrypted_55502862a724_key -iv $encrypted_55502862a724_iv -in tmext/TelemetryClassAuthenticator.cpp.enc -out tmext/TelemetryClassAuthenticator.cpp -d diff --git a/.travis/travis.sh b/.travis/travis.sh index 84571d4..b3da959 100755 --- a/.travis/travis.sh +++ b/.travis/travis.sh @@ -8,7 +8,7 @@ if [ `git name-rev --tags --name-only $(git rev-parse HEAD)` == "undefined" ]; t export PACKAGE_VERSION=$(grep -oE '^[^\-]*' <<< $APPLICATION_VERSION) export PACKAGE_BUILD=$(grep -oP '\-\K.+' <<< $APPLICATION_VERSION) export EXECUTABLE_VERSION=${PACKAGE_VERSION}${PACKAGE_BUILD} -if [ "$PACKAGE_BUILD" == "" ]; then export PACKAGE_BUILD=$TRAVIS_BUILD_NUMBER; fi +if [ "$PACKAGE_BUILD" == "" ]; then export PACKAGE_BUILD=${TRAVIS_BUILD_NUMBER}; fi export PROJECT_DIR=$(pwd) -.travis/$BUILD_SCRIPT +.travis/${BUILD_SCRIPT} diff --git a/.travis/ubuntu64_travis.sh b/.travis/ubuntu64_travis.sh index 08f790b..50de7d3 100755 --- a/.travis/ubuntu64_travis.sh +++ b/.travis/ubuntu64_travis.sh @@ -5,4 +5,4 @@ sudo .travis/debian_install.sh && \ # Build gta5view sudo .travis/debian_build.sh && \ -cd $PROJECT_DIR +cd ${PROJECT_DIR} diff --git a/.travis/windows_build.sh b/.travis/windows_build.sh index bfe407f..49b6b38 100755 --- a/.travis/windows_build.sh +++ b/.travis/windows_build.sh @@ -1,18 +1,18 @@ #!/bin/bash -export GTA5VIEW_EXECUTABLE=gta5view-${EXECUTABLE_VERSION}${EXECUTABLE_ARCH}.exe +export GTA5VIEW_EXECUTABLE=gta5view-${EXECUTABLE_VERSION}${EXECUTABLE_ARCH}.exe && \ # Creating folders -cd $PROJECT_DIR && \ -echo "gta5view build version is $APPLICATION_VERSION" && \ -echo "gta5view executable is $GTA5VIEW_EXECUTABLE" && \ +cd ${PROJECT_DIR} && \ +echo "gta5view build version is ${APPLICATION_VERSION}" && \ +echo "gta5view executable is ${GTA5VIEW_EXECUTABLE}" && \ mkdir build && \ mkdir assets && \ # Starting build cd build && \ -qmake-static $QMAKE_FLAGS DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"$APPLICATION_VERSION\\\\\\\"" DEFINES+=GTA5SYNC_TELEMETRY ../gta5view.pro && \ +qmake-static ${QMAKE_FLAGS} DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"${APPLICATION_VERSION}\\\\\\\"" DEFINES+=GTA5SYNC_TELEMETRY "DEFINES+=GTA5SYNC_TELEMETRY_WEBURL=\\\\\\\"https://dev.syping.de/gta5view-userstats/\\\\\\\"" ../gta5view.pro && \ make -j 4 && \ -cp -Rf release/*.exe $PROJECT_DIR/assets/$GTA5VIEW_EXECUTABLE && \ -cd $PROJECT_DIR/assets && \ -upx --best $GTA5VIEW_EXECUTABLE +cp -Rf release/*.exe ${PROJECT_DIR}/assets/${GTA5VIEW_EXECUTABLE} && \ +cd ${PROJECT_DIR}/assets && \ +upx --best ${GTA5VIEW_EXECUTABLE} diff --git a/.travis/windows_travis.sh b/.travis/windows_travis.sh index a6181cb..4811eb2 100755 --- a/.travis/windows_travis.sh +++ b/.travis/windows_travis.sh @@ -1,12 +1,12 @@ #!/bin/bash QT_VERSION=5.6.3 -DOCKER_IMAGE=syping/qt5-static-mingw:$QT_VERSION +DOCKER_IMAGE=syping/qt5-static-mingw:${QT_VERSION} PROJECT_DIR_DOCKER=/gta5view -cd $PROJECT_DIR && \ -docker pull $DOCKER_IMAGE && \ +cd ${PROJECT_DIR} && \ +docker pull ${DOCKER_IMAGE} && \ docker run --rm \ -v "${PROJECT_DIR}:${PROJECT_DIR_DOCKER}" \ - $DOCKER_IMAGE \ + ${DOCKER_IMAGE} \ /bin/bash -c "export PROJECT_DIR=${PROJECT_DIR_DOCKER} && export QT_SELECT=${QT_SELECT} && export APPLICATION_VERSION=${APPLICATION_VERSION} && export QMAKE_FLAGS_QT4=${QMAKE_FLAGS_QT4} && export QMAKE_FLAGS_QT5=${QMAKE_FLAGS_QT5} && export PACKAGE_VERSION=${PACKAGE_VERSION} && export PACKAGE_BUILD=${PACKAGE_BUILD} && export EXECUTABLE_VERSION=${EXECUTABLE_VERSION} && export EXECUTABLE_ARCH=${EXECUTABLE_ARCH} && cd ${PROJECT_DIR_DOCKER} && .travis/windows_build.sh" diff --git a/AboutDialog.ui b/AboutDialog.ui index 9419485..5093373 100644 --- a/AboutDialog.ui +++ b/AboutDialog.ui @@ -46,6 +46,9 @@ Running with Qt %6<br/> true + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + diff --git a/GlobalString.cpp b/GlobalString.cpp index 77c1591..4aa7aad 100644 --- a/GlobalString.cpp +++ b/GlobalString.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5sync GRAND THEFT AUTO V SYNC -* Copyright (C) 2016-2017 Syping +* Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -74,5 +74,5 @@ QString GlobalString::getLanguageFile() QString GlobalString::getLanguage() { - return TCInstance->getCurrentAreaLanguage(); + return Translator->getCurrentAreaLanguage(); } diff --git a/ImageEditorDialog.cpp b/ImageEditorDialog.cpp index b4a2589..749e412 100644 --- a/ImageEditorDialog.cpp +++ b/ImageEditorDialog.cpp @@ -37,7 +37,6 @@ ImageEditorDialog::ImageEditorDialog(SnapmaticPicture *picture, QString profileN setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); ui->setupUi(this); - ui->cmdClose->setDefault(true); ui->cmdClose->setFocus(); // Set Icon for Close Button diff --git a/JsonEditorDialog.cpp b/JsonEditorDialog.cpp index fb9ec6c..9aaa392 100644 --- a/JsonEditorDialog.cpp +++ b/JsonEditorDialog.cpp @@ -37,7 +37,6 @@ JsonEditorDialog::JsonEditorDialog(SnapmaticPicture *picture, QWidget *parent) : setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowMinMaxButtonsHint); ui->setupUi(this); - ui->cmdClose->setDefault(true); ui->cmdClose->setFocus(); // Set Icon for Close Button diff --git a/OptionsDialog.cpp b/OptionsDialog.cpp index 31f8aa4..f80f0a7 100644 --- a/OptionsDialog.cpp +++ b/OptionsDialog.cpp @@ -25,17 +25,25 @@ #include "config.h" #include #include +#include #include #include +#include #include #include #include +#include #include #include +#include #include #include #include +#ifdef GTA5SYNC_TELEMETRY +#include "TelemetryClass.h" +#endif + OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) : QDialog(parent), profileDB(profileDB), ui(new Ui::OptionsDialog) @@ -47,6 +55,7 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) : ui->setupUi(this); ui->tabWidget->setCurrentIndex(0); ui->labPicCustomRes->setVisible(false); + ui->cmdCancel->setFocus(); QRect desktopResolution = QApplication::desktop()->screenGeometry(this); int desktopSizeWidth = desktopResolution.width(); @@ -91,6 +100,7 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) : setupPictureSettings(); setupCustomGTAFolder(); setupInterfaceSettings(); + setupStatisticsSettings(); setupSnapmaticPictureViewer(); #ifndef Q_QS_ANDROID @@ -177,7 +187,7 @@ void OptionsDialog::setupLanguageBox() } QString aCurrentLanguage = QString("en_GB"); - if (TCInstance->isLanguageLoaded()) { aCurrentLanguage = TCInstance->getCurrentLanguage(); } + if (Translator->isLanguageLoaded()) { aCurrentLanguage = Translator->getCurrentLanguage(); } QLocale currentLocale = QLocale(aCurrentLanguage); ui->labCurrentLanguage->setText(tr("Current: %1").arg(currentLocale.nativeLanguageName() % " (" % currentLocale.nativeCountryName() % ") [" % aCurrentLanguage % "]")); @@ -216,7 +226,7 @@ void OptionsDialog::setupLanguageBox() } } - QString aCurrentAreaLanguage = TCInstance->getCurrentAreaLanguage(); + QString aCurrentAreaLanguage = Translator->getCurrentAreaLanguage(); if (QFile::exists(":/global/global." % currentAreaLanguage % ".loc")) { QFile locFile(":/global/global." % currentAreaLanguage % ".loc"); @@ -396,6 +406,15 @@ void OptionsDialog::applySettings() settings->setValue("AlwaysUseMessageFont", ui->cbAlwaysUseMessageFont->isChecked()); settings->endGroup(); +#ifdef GTA5SYNC_TELEMETRY + settings->beginGroup("Telemetry"); + settings->setValue("PushAppConf", ui->cbAppConfigStats->isChecked()); + if (!Telemetry->isStateForced()) { settings->setValue("IsEnabled", ui->cbParticipateStats->isChecked()); } + settings->endGroup(); + Telemetry->refresh(); + Telemetry->work(); +#endif + #if QT_VERSION >= 0x050000 bool languageChanged = ui->cbLanguage->currentData().toString() != currentLanguage; bool languageAreaChanged = ui->cbAreaLanguage->currentData().toString() != currentAreaLanguage; @@ -405,13 +424,13 @@ void OptionsDialog::applySettings() #endif if (languageChanged) { - TCInstance->unloadTranslation(qApp); - TCInstance->initUserLanguage(); - TCInstance->loadTranslation(qApp); + Translator->unloadTranslation(qApp); + Translator->initUserLanguage(); + Translator->loadTranslation(qApp); } else if (languageAreaChanged) { - TCInstance->initUserLanguage(); + Translator->initUserLanguage(); } emit settingsApplied(newContentMode, languageChanged); @@ -527,6 +546,44 @@ void OptionsDialog::setupPictureSettings() settings->endGroup(); } +void OptionsDialog::setupStatisticsSettings() +{ +#ifdef GTA5SYNC_TELEMETRY + ui->cbParticipateStats->setText(tr("Participate in %1 User Statistics").arg(GTA5SYNC_APPSTR)); + ui->labUserStats->setText(QString("%1").arg(tr("View %1 User Statistics Online").arg(GTA5SYNC_APPSTR), TelemetryClass::getWebURL().toString())); + + ui->gbUserFeedback->setVisible(false); + // settings->beginGroup("Startup"); + // if (settings->value("IsFirstStart", true).toBool() == true) + // { + // ui->gbUserFeedback->setVisible(false); + // } + // settings->endGroup(); + + settings->beginGroup("Telemetry"); + ui->cbParticipateStats->setChecked(Telemetry->isEnabled()); + ui->cbAppConfigStats->setChecked(settings->value("PushAppConf", false).toBool()); + settings->endGroup(); + + if (Telemetry->isStateForced()) + { + ui->cbParticipateStats->setEnabled(false); + } + + if (Telemetry->isRegistered()) + { + ui->labParticipationID->setText(tr("Participation ID: %1").arg(Telemetry->getRegisteredID())); + } + else + { + ui->labParticipationID->setText(tr("Participation ID: %1").arg(tr("Not registered"))); + ui->cmdCopyStatsID->setVisible(false); + } +#else + ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabStats)); +#endif +} + void OptionsDialog::on_cbIgnoreAspectRatio_toggled(bool checked) { if (checked) @@ -585,3 +642,27 @@ void OptionsDialog::on_cbDefaultStyle_toggled(bool checked) { ui->cbStyleList->setDisabled(checked); } + +void OptionsDialog::on_cmdUserFeedbackSend_clicked() +{ +#ifdef GTA5SYNC_TELEMETRY + if (ui->txtUserFeedback->toPlainText().length() < 1024 && ui->txtUserFeedback->toPlainText().length() >= 3) + { + QJsonDocument feedback; + QJsonObject feedbackObject; + feedbackObject["Message"] = ui->txtUserFeedback->toPlainText(); + feedback.setObject(feedbackObject); + Telemetry->push(TelemetryCategory::UserFeedback, feedback); + ui->txtUserFeedback->setPlainText(QString()); + } + else + { + QMessageBox::information(this, tr("User Feedback"), tr("A feedback message have to between 3-1024 characters long")); + } +#endif +} + +void OptionsDialog::on_cmdCopyStatsID_clicked() +{ + QApplication::clipboard()->setText(Telemetry->getRegisteredID()); +} diff --git a/OptionsDialog.h b/OptionsDialog.h index 03d2e81..ae086ba 100644 --- a/OptionsDialog.h +++ b/OptionsDialog.h @@ -47,6 +47,8 @@ private slots: void on_cbIgnoreAspectRatio_toggled(bool checked); void on_cmdExploreFolder_clicked(); void on_cbDefaultStyle_toggled(bool checked); + void on_cmdUserFeedbackSend_clicked(); + void on_cmdCopyStatsID_clicked(); signals: void settingsApplied(int contentMode, bool languageChanged); @@ -76,6 +78,7 @@ private: void setupPictureSettings(); void setupCustomGTAFolder(); void setupInterfaceSettings(); + void setupStatisticsSettings(); void setupSnapmaticPictureViewer(); void applySettings(); }; diff --git a/OptionsDialog.ui b/OptionsDialog.ui index 1a70c0f..2e8d394 100644 --- a/OptionsDialog.ui +++ b/OptionsDialog.ui @@ -7,7 +7,7 @@ 0 0 435 - 405 + 464 @@ -20,7 +20,7 @@ - 0 + 3 @@ -382,6 +382,184 @@ + + + Feedback + + + + + + Participation + + + + + + Participate in %1 User Statistics + + + + + + + <a href="%2">%1</a> + + + true + + + true + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + + + + + + + + + + Categorys + + + + + + false + + + Hardware, Application and OS Specification + + + true + + + + + + + false + + + System Language Configuration + + + true + + + + + + + Application Configuration + + + + + + + + + + Other + + + + + + + 0 + 0 + + + + Participation ID: %1 + + + true + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + &Copy + + + false + + + + + + + + + + User Feedback + + + + + + + + + + + Limit: 1 message/day + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + &Send + + + false + + + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + Interface @@ -401,6 +579,9 @@ Current: %1 + + true + @@ -420,6 +601,9 @@ Current: %1 + + true + diff --git a/PlayerListDialog.cpp b/PlayerListDialog.cpp index 5035f38..f828715 100644 --- a/PlayerListDialog.cpp +++ b/PlayerListDialog.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5sync GRAND THEFT AUTO V SYNC -* Copyright (C) 2016-2017 Syping +* Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,9 +34,7 @@ PlayerListDialog::PlayerListDialog(QStringList players, ProfileDatabase *profile setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); listUpdated = false; - ui->setupUi(this); - ui->cmdCancel->setDefault(true); ui->cmdCancel->setFocus(); // Set Icon for Apply Button @@ -150,16 +148,19 @@ void PlayerListDialog::drawSwitchButtons() QPainter avPainter(&avImage); avPainter.setFont(painterFont); avPainter.setBrush(palette.buttonText()); + avPainter.setPen(palette.buttonText().color()); avPainter.drawText(0, 0, makeAvSize, makeAvSize, Qt::AlignCenter | Qt::TextDontClip, "<"); avPainter.end(); QPainter sePainter(&seImage); sePainter.setFont(painterFont); sePainter.setBrush(palette.buttonText()); + sePainter.setPen(palette.buttonText().color()); sePainter.drawText(0, 0, makeSeSize, makeSeSize, Qt::AlignCenter | Qt::TextDontClip, ">"); sePainter.end(); QPainter adPainter(&adImage); adPainter.setFont(painterFont); adPainter.setBrush(palette.buttonText()); + adPainter.setPen(palette.buttonText().color()); adPainter.drawText(0, 0, makeAdSize, makeAdSize, Qt::AlignCenter | Qt::TextDontClip, "+"); adPainter.end(); @@ -182,24 +183,32 @@ void PlayerListDialog::buildInterface() const QStringList dbPlayers = profileDB->getPlayers(); for (QString sePlayer : players) { - ui->listSePlayers->addItem(QString("%1 (%2)").arg(sePlayer, profileDB->getPlayerName(sePlayer))); + QListWidgetItem *playerItem = new QListWidgetItem(profileDB->getPlayerName(sePlayer)); + playerItem->setData(Qt::UserRole, sePlayer); + ui->listSePlayers->addItem(playerItem); } for (QString dbPlayer : dbPlayers) { if (!players.contains(dbPlayer)) { - ui->listAvPlayers->addItem(QString("%1 (%2)").arg(dbPlayer, profileDB->getPlayerName(dbPlayer))); + QListWidgetItem *playerItem = new QListWidgetItem(profileDB->getPlayerName(dbPlayer)); + playerItem->setData(Qt::UserRole, dbPlayer); + ui->listAvPlayers->addItem(playerItem); } } + ui->listAvPlayers->sortItems(Qt::AscendingOrder); } void PlayerListDialog::on_cmdMakeAv_clicked() { for (QListWidgetItem *item : ui->listSePlayers->selectedItems()) { - QString playerItemText = item->text(); + QString playerName = item->text(); + int playerID = item->data(Qt::UserRole).toInt(); delete item; - ui->listAvPlayers->addItem(playerItemText); + QListWidgetItem *playerItem = new QListWidgetItem(playerName); + playerItem->setData(Qt::UserRole, playerID); + ui->listAvPlayers->addItem(playerItem); ui->listAvPlayers->sortItems(Qt::AscendingOrder); } } @@ -214,9 +223,12 @@ void PlayerListDialog::on_cmdMakeSe_clicked() } for (QListWidgetItem *item : ui->listAvPlayers->selectedItems()) { - QString playerItemText = item->text(); + QString playerName = item->text(); + int playerID = item->data(Qt::UserRole).toInt(); delete item; - ui->listSePlayers->addItem(playerItemText); + QListWidgetItem *playerItem = new QListWidgetItem(playerName); + playerItem->setData(Qt::UserRole, playerID); + ui->listSePlayers->addItem(playerItem); } } @@ -229,27 +241,30 @@ void PlayerListDialog::on_cmdMakeAd_clicked() for (int i = 0; i < ui->listAvPlayers->count(); ++i) { QListWidgetItem *item = ui->listAvPlayers->item(i); - QString playerItemText = item->text(); - if (playerItemText.split(" ").at(0) == QString::number(playerID)) + QString itemPlayerName = item->text(); + int itemPlayerID = item->data(Qt::UserRole).toInt(); + if (itemPlayerID == playerID) { delete item; - ui->listSePlayers->addItem(playerItemText); + QListWidgetItem *playerItem = new QListWidgetItem(itemPlayerName); + playerItem->setData(Qt::UserRole, playerID); + ui->listSePlayers->addItem(playerItem); return; } } for (int i = 0; i < ui->listSePlayers->count(); ++i) { QListWidgetItem *item = ui->listSePlayers->item(i); - QString playerItemText = item->text(); - if (playerItemText.split(" ").at(0) == QString::number(playerID)) + int itemPlayerID = item->data(Qt::UserRole).toInt(); + if (itemPlayerID == playerID) { QMessageBox::warning(this, tr("Add Player..."), tr("Failed to add Player %1 because Player %1 is already added!").arg(QString::number(playerID))); - //ui->listSePlayers->setCurrentItem(item); return; } } - QString playerItemText = QString("%1 (%1)").arg(QString::number(playerID)); - ui->listSePlayers->addItem(playerItemText); + QListWidgetItem *playerItem = new QListWidgetItem(QString::number(playerID)); + playerItem->setData(Qt::UserRole, playerID); + ui->listSePlayers->addItem(playerItem); } } @@ -258,7 +273,7 @@ void PlayerListDialog::on_cmdApply_clicked() players.clear(); for (int i = 0; i < ui->listSePlayers->count(); ++i) { - players += ui->listSePlayers->item(i)->text().split(" ").at(0); + players += ui->listSePlayers->item(i)->data(Qt::UserRole).toString(); } emit playerListUpdated(players); listUpdated = true; diff --git a/PlayerListDialog.ui b/PlayerListDialog.ui index 6373657..7db340b 100644 --- a/PlayerListDialog.ui +++ b/PlayerListDialog.ui @@ -105,6 +105,9 @@ + + QAbstractItemView::InternalMove + QAbstractItemView::ExtendedSelection diff --git a/ProfileInterface.cpp b/ProfileInterface.cpp index f44af9d..231598c 100644 --- a/ProfileInterface.cpp +++ b/ProfileInterface.cpp @@ -1046,7 +1046,7 @@ void ProfileInterface::exportSelected() if (errorStr != "") { errorStr.remove(0, 2); - QMessageBox::warning(this, tr("Export selected"), tr("Export failed with...\n\n%1").arg(errorStr)); + QMessageBox::warning(this, tr("Export selected..."), tr("Export failed with...\n\n%1").arg(errorStr)); } if (exportThread->isFinished()) @@ -1066,7 +1066,7 @@ void ProfileInterface::exportSelected() } else { - QMessageBox::information(this, tr("Export selected"), tr("No Snapmatic pictures or Savegames files are selected")); + QMessageBox::information(this, tr("Export selected..."), tr("No Snapmatic pictures or Savegames files are selected")); } } @@ -1160,7 +1160,7 @@ void ProfileInterface::settingsApplied(int _contentMode, bool languageChanged) void ProfileInterface::enableSelected() { - int fails = 0; + QList snapmaticWidgets; for (ProfileWidget *widget : widgets.keys()) { if (widget->isSelected()) @@ -1168,18 +1168,33 @@ void ProfileInterface::enableSelected() if (widget->getWidgetType() == "SnapmaticWidget") { SnapmaticWidget *snapmaticWidget = qobject_cast(widget); - if (!snapmaticWidget->makePictureVisible()) - { - fails++; - } + snapmaticWidgets += snapmaticWidget; } } } + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::information(this, QApplication::translate("UserInterface", "Show In-game"), QApplication::translate("ProfileInterface", "No Snapmatic pictures are selected")); + return; + } + QStringList fails; + for (SnapmaticWidget *widget : snapmaticWidgets) + { + SnapmaticPicture *picture = widget->getPicture(); + if (!widget->makePictureVisible()) + { + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + } + if (!fails.isEmpty()) + { + QMessageBox::warning(this, QApplication::translate("UserInterface", "Show In-game"), QApplication::translate("ProfileInterface", "%1 failed with...\n\n%2", "Action failed with...").arg(QApplication::translate("UserInterface", "Show In-game"), fails.join(", "))); + } } void ProfileInterface::disableSelected() { - int fails = 0; + QList snapmaticWidgets; for (ProfileWidget *widget : widgets.keys()) { if (widget->isSelected()) @@ -1187,13 +1202,28 @@ void ProfileInterface::disableSelected() if (widget->getWidgetType() == "SnapmaticWidget") { SnapmaticWidget *snapmaticWidget = qobject_cast(widget); - if (!snapmaticWidget->makePictureHidden()) - { - fails++; - } + snapmaticWidgets += snapmaticWidget; } } } + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::information(this, QApplication::translate("UserInterface", "Hide In-game"), QApplication::translate("ProfileInterface", "No Snapmatic pictures are selected")); + return; + } + QStringList fails; + for (SnapmaticWidget *widget : snapmaticWidgets) + { + SnapmaticPicture *picture = widget->getPicture(); + if (!widget->makePictureHidden()) + { + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + } + if (!fails.isEmpty()) + { + QMessageBox::warning(this, QApplication::translate("UserInterface", "Hide In-game"), QApplication::translate("ProfileInterface", "%1 failed with...\n\n%2", "Action failed with...").arg(QApplication::translate("UserInterface", "Hide In-game"), fails.join(", "))); + } } int ProfileInterface::selectedWidgets() @@ -1529,7 +1559,7 @@ void ProfileInterface::massTool(MassTool tool) if (snapmaticWidgets.isEmpty()) { - QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("You don't have any Snapmatics selected!")); + QMessageBox::information(this, tr("Qualify as Avatar"), tr("No Snapmatic pictures are selected")); return; } @@ -1594,7 +1624,7 @@ void ProfileInterface::massTool(MassTool tool) pbDialog.close(); if (!fails.isEmpty()) { - QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Qualify", "%1 failed with..."), fails.join(", "))); + QMessageBox::warning(this, tr("Qualify as Avatar"), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Qualify", "%1 failed with..."), fails.join(", "))); } } break; @@ -1615,7 +1645,7 @@ void ProfileInterface::massTool(MassTool tool) if (snapmaticWidgets.isEmpty()) { - QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("You don't have any Snapmatics selected!")); + QMessageBox::information(this, tr("Change Players..."), tr("No Snapmatic pictures are selected")); return; } @@ -1687,7 +1717,7 @@ void ProfileInterface::massTool(MassTool tool) pbDialog.close(); if (!fails.isEmpty()) { - QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Players", "%1 failed with..."), fails.join(", "))); + QMessageBox::warning(this, tr("Change Players..."), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Players", "%1 failed with..."), fails.join(", "))); } } break; @@ -1708,7 +1738,7 @@ void ProfileInterface::massTool(MassTool tool) if (snapmaticWidgets.isEmpty()) { - QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("You don't have any Snapmatics selected!")); + QMessageBox::information(this, tr("Change Crew..."), tr("No Snapmatic pictures are selected")); return; } @@ -1736,7 +1766,7 @@ preSelectionCrewID: { if (!crewChar.isNumber()) { - QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("Failed to enter a valid Snapmatic Crew ID")); + QMessageBox::warning(this, tr("Change Crew..."), tr("Failed to enter a valid Snapmatic Crew ID")); goto preSelectionCrewID; } } @@ -1805,7 +1835,7 @@ preSelectionCrewID: pbDialog.close(); if (!fails.isEmpty()) { - QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Crew", "%1 failed with..."), fails.join(", "))); + QMessageBox::warning(this, tr("Change Crew..."), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Crew", "%1 failed with..."), fails.join(", "))); } } break; @@ -1826,7 +1856,7 @@ preSelectionCrewID: if (snapmaticWidgets.isEmpty()) { - QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("You don't have any Snapmatics selected!")); + QMessageBox::information(this, tr("Change Title..."), tr("No Snapmatic pictures are selected")); return; } @@ -1839,7 +1869,7 @@ preSelectionTitle: { if (!SnapmaticPicture::verifyTitle(newTitle)) { - QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("Failed to enter a valid Snapmatic title")); + QMessageBox::warning(this, tr("Change Title..."), tr("Failed to enter a valid Snapmatic title")); goto preSelectionTitle; } snapmaticTitle = newTitle; @@ -1904,7 +1934,7 @@ preSelectionTitle: pbDialog.close(); if (!fails.isEmpty()) { - QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Title", "%1 failed with..."), fails.join(", "))); + QMessageBox::warning(this, tr("Change Title..."), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Title", "%1 failed with..."), fails.join(", "))); } } break; diff --git a/SavegameDialog.cpp b/SavegameDialog.cpp index 016c231..c244ed0 100644 --- a/SavegameDialog.cpp +++ b/SavegameDialog.cpp @@ -1,3 +1,21 @@ +/***************************************************************************** +* gta5sync GRAND THEFT AUTO V SYNC +* Copyright (C) 2016-2018 Syping +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + #include "SavegameDialog.h" #include "ui_SavegameDialog.h" #include "SavegameCopy.h" @@ -14,6 +32,7 @@ SavegameDialog::SavegameDialog(QWidget *parent) : // Setup User Interface ui->setupUi(this); + ui->cmdClose->setFocus(); savegameLabStr = ui->labSavegameText->text(); if (QIcon::hasThemeIcon("dialog-close")) diff --git a/SavegameDialog.h b/SavegameDialog.h index aaabf4f..cce13cc 100644 --- a/SavegameDialog.h +++ b/SavegameDialog.h @@ -1,3 +1,21 @@ +/***************************************************************************** +* gta5sync GRAND THEFT AUTO V SYNC +* Copyright (C) 2016-2018 Syping +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + #ifndef SAVEGAMEDIALOG_H #define SAVEGAMEDIALOG_H diff --git a/SnapmaticEditor.cpp b/SnapmaticEditor.cpp index 2ba6081..954571c 100644 --- a/SnapmaticEditor.cpp +++ b/SnapmaticEditor.cpp @@ -38,7 +38,6 @@ SnapmaticEditor::SnapmaticEditor(CrewDatabase *crewDB, ProfileDatabase *profileD setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); ui->setupUi(this); - ui->cmdCancel->setDefault(true); ui->cmdCancel->setFocus(); // Set Icon for Apply Button @@ -240,9 +239,9 @@ void SnapmaticEditor::setSnapmaticPlayers(const QStringList &players) ui->labPlayers->setText(playersStr.arg(QApplication::translate("PictureDialog", "No Players"), editStr)); } #ifndef Q_OS_ANDROID - ui->gbValues->resize(ui->gbValues->sizeHint()); - ui->frameWidget->resize(ui->frameWidget->sizeHint()); - resize(width(), heightForWidth(width())); + ui->gbValues->resize(ui->gbValues->width(), ui->gbValues->heightForWidth(ui->gbValues->width())); + ui->frameWidget->resize(ui->gbValues->width(), ui->frameWidget->heightForWidth(ui->frameWidget->width())); + if (heightForWidth(width()) > height()) { resize(width(), heightForWidth(width())); } #endif } @@ -268,9 +267,9 @@ void SnapmaticEditor::setSnapmaticTitle(const QString &title) ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("%1").arg(tr("No", "No, could lead to issues")))); } #ifndef Q_OS_ANDROID - ui->gbValues->resize(ui->gbValues->sizeHint()); - ui->frameWidget->resize(ui->frameWidget->sizeHint()); - resize(width(), heightForWidth(width())); + ui->gbValues->resize(ui->gbValues->width(), ui->gbValues->heightForWidth(ui->gbValues->width())); + ui->frameWidget->resize(ui->gbValues->width(), ui->frameWidget->heightForWidth(ui->frameWidget->width())); + if (heightForWidth(width()) > height()) { resize(width(), heightForWidth(width())); } #endif } @@ -280,9 +279,9 @@ void SnapmaticEditor::setSnapmaticCrew(const QString &crew) QString crewStr = tr("Crew: %1 (%2)").arg(StringParser::escapeString(crew), editStr); ui->labCrew->setText(crewStr); #ifndef Q_OS_ANDROID - ui->gbValues->resize(ui->gbValues->sizeHint()); - ui->frameWidget->resize(ui->frameWidget->sizeHint()); - resize(width(), heightForWidth(width())); + ui->gbValues->resize(ui->gbValues->width(), ui->gbValues->heightForWidth(ui->gbValues->width())); + ui->frameWidget->resize(ui->gbValues->width(), ui->frameWidget->heightForWidth(ui->frameWidget->width())); + if (heightForWidth(width()) > height()) { resize(width(), heightForWidth(width())); } #endif } diff --git a/SnapmaticEditor.ui b/SnapmaticEditor.ui index f368efa..e591fcc 100644 --- a/SnapmaticEditor.ui +++ b/SnapmaticEditor.ui @@ -7,7 +7,7 @@ 0 0 400 - 362 + 381 @@ -115,6 +115,9 @@ true + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + @@ -128,6 +131,9 @@ true + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + @@ -141,6 +147,9 @@ true + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + diff --git a/TelemetryClass.cpp b/TelemetryClass.cpp index de63174..abe526b 100644 --- a/TelemetryClass.cpp +++ b/TelemetryClass.cpp @@ -36,6 +36,10 @@ #include #include +#ifndef GTA5SYNC_TELEMETRY_WEBURL +#define GTA5SYNC_TELEMETRY_WEBURL "" +#endif + #ifdef GTA5SYNC_WIN #include "windows.h" #include "intrin.h" @@ -51,8 +55,10 @@ void TelemetryClass::init() telemetryEnabled = settings.value("IsEnabled", false).toBool(); #else telemetryEnabled = true; // Always enable Telemetry for Developer Versions + telemetryStateForced = true; #endif telemetryClientID = settings.value("ClientID", QString()).toString(); + telemetryPushAppConf = settings.value("PushAppConf", false).toBool(); settings.endGroup(); } @@ -88,6 +94,11 @@ bool TelemetryClass::isRegistered() return !telemetryClientID.isEmpty(); } +QString TelemetryClass::getRegisteredID() +{ + return telemetryClientID; +} + void TelemetryClass::setEnabled(bool enabled) { telemetryEnabled = enabled; @@ -114,7 +125,8 @@ void TelemetryClass::push(TelemetryCategory category) case TelemetryCategory::UserLocaleData: push(category, getSystemLocaleList()); break; - case TelemetryCategory::ApplicationConfiguration: + case TelemetryCategory::ApplicationConf: + push(category, getApplicationConf()); break; case TelemetryCategory::ApplicationSpec: push(category, getApplicationSpec()); @@ -276,6 +288,58 @@ QJsonDocument TelemetryClass::getApplicationSpec() return jsonDocument; } +QJsonDocument TelemetryClass::getApplicationConf() +{ + QJsonDocument jsonDocument; + QJsonObject jsonObject; + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + + settings.beginGroup("Interface"); + QJsonObject interfaceObject; + interfaceObject["AreaLanguage"] = settings.value("AreaLanguage", "Auto").toString(); + interfaceObject["Language"] = settings.value("Language", "System").toString(); + interfaceObject["NavigationBar"] = settings.value("NavigationBar", false).toBool(); + jsonObject["Interface"] = interfaceObject; + settings.endGroup(); + + settings.beginGroup("Pictures"); + QJsonObject picturesObject; + picturesObject["AspectRatio"] = ((Qt::AspectRatioMode)settings.value("AspectRatio").toInt() == Qt::IgnoreAspectRatio) ? "IgnoreAspectRatio" : "KeepAspectRatio"; + picturesObject["CustomQuality"] = settings.value("CustomQuality", 100).toInt(); + picturesObject["CustomQualityEnabled"] = settings.value("CustomQualityEnabled", false).toBool(); + picturesObject["ExportSizeMode"] = settings.value("ExportSizeMode", "Default").toString(); + jsonObject["Pictures"] = picturesObject; + settings.endGroup(); + + settings.beginGroup("Profile"); + QJsonObject profileObject; + int contentMode = settings.value("ContentMode", 0).toInt(); + switch (contentMode) + { + case 0: + profileObject["ContentMode"] = "OpenWithSingleClick"; + break; + case 1: + profileObject["ContentMode"] = "OpenWithDoubleClick"; + break; + case 2: + profileObject["ContentMode"] = "SelectWithSingleClick"; + break; + } + jsonObject["Profile"] = profileObject; + settings.endGroup(); + + settings.beginGroup("Startup"); + QJsonObject startupObject; + startupObject["AppStyle"] = settings.value("AppStyle", "System").toString(); + startupObject["CustomStyle"] = settings.value("CustomStyle", false).toBool(); + jsonObject["Startup"] = startupObject; + settings.endGroup(); + + jsonDocument.setObject(jsonObject); + return jsonDocument; +} + QJsonDocument TelemetryClass::getSystemLocaleList() { QJsonDocument jsonDocument; @@ -307,8 +371,8 @@ QString TelemetryClass::categoryToString(TelemetryCategory category) case TelemetryCategory::UserLocaleData: return QString("UserLocaleData"); break; - case TelemetryCategory::ApplicationConfiguration: - return QString("ApplicationConfiguration"); + case TelemetryCategory::ApplicationConf: + return QString("ApplicationConf"); break; case TelemetryCategory::UserFeedback: return QString("UserFeedback"); @@ -325,6 +389,11 @@ QString TelemetryClass::categoryToString(TelemetryCategory category) } } +QUrl TelemetryClass::getWebURL() +{ + return QUrl(GTA5SYNC_TELEMETRY_WEBURL); +} + void TelemetryClass::registerClient() { QNetworkAccessManager *netManager = new QNetworkAccessManager(); @@ -334,33 +403,88 @@ void TelemetryClass::registerClient() connect(netManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(registerFinished(QNetworkReply*))); } -void TelemetryClass::pushStartupSet() +void TelemetryClass::work() { - push(TelemetryCategory::ApplicationSpec); - push(TelemetryCategory::UserLocaleData); - push(TelemetryCategory::OperatingSystemSpec); - push(TelemetryCategory::HardwareSpec); + if (!canPush() && canRegister()) + { + connect(this, SIGNAL(registered(bool)), this, SLOT(work_pd(bool))); + registerClient(); + } + else if (canPush()) + { + work_p(true); + } +} + +void TelemetryClass::work_p(bool doWork) +{ + if (doWork) + { + push(TelemetryCategory::ApplicationSpec); + push(TelemetryCategory::UserLocaleData); + push(TelemetryCategory::OperatingSystemSpec); + push(TelemetryCategory::HardwareSpec); + if (telemetryPushAppConf) + { + push(TelemetryCategory::ApplicationConf); + } + } +} + +void TelemetryClass::work_pd(bool doWork) +{ + disconnect(this, SIGNAL(registered(bool)), this, SLOT(work_pd(bool))); + work_p(doWork); } void TelemetryClass::pushFinished(QNetworkReply *reply) { + bool isSuccessful = false; + if (reply->canReadLine()) + { + QByteArray readedData = reply->readLine(); + if (QString::fromUtf8(readedData).trimmed() == QString("Submit success!")) + { #ifdef GTA5SYNC_DEBUG - qDebug() << "Telemetry" << reply->readAll().trimmed(); + qDebug() << "Telemetry" << QString("Submit success!"); #endif + isSuccessful = true; +#ifdef GTA5SYNC_DEBUG + if (reply->isReadable()) + { + readedData = reply->readAll().trimmed(); + if (!readedData.isEmpty()) { qDebug() << "Telemetry Push" << readedData; } + } +#endif + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "Telemetry" << QString("Submit failed!"); +#endif + } + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "Telemetry" << QString("Submit failed!"); +#endif + } reply->deleteLater(); sender()->deleteLater(); - emit pushed(); + emit pushed(isSuccessful); } void TelemetryClass::registerFinished(QNetworkReply *reply) { + bool isSuccessful = false; if (reply->canReadLine()) { - QByteArray readData = reply->readLine(); - if (QString::fromUtf8(readData).trimmed() == QString("Registration success!") && reply->canReadLine()) + QByteArray readedData = reply->readLine(); + if (QString::fromUtf8(readedData).trimmed() == QString("Registration success!") && reply->canReadLine()) { - readData = reply->readLine(); - telemetryClientID = QString::fromUtf8(readData).trimmed(); + readedData = reply->readLine(); + telemetryClientID = QString::fromUtf8(readedData).trimmed(); QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); settings.beginGroup("Telemetry"); settings.setValue("ClientID", telemetryClientID); @@ -368,6 +492,7 @@ void TelemetryClass::registerFinished(QNetworkReply *reply) #ifdef GTA5SYNC_DEBUG qDebug() << "Telemetry" << QString("Registration success!"); #endif + isSuccessful = true; } else { @@ -384,5 +509,5 @@ void TelemetryClass::registerFinished(QNetworkReply *reply) } reply->deleteLater(); sender()->deleteLater(); - emit registered(); + emit registered(isSuccessful); } diff --git a/TelemetryClass.h b/TelemetryClass.h index a009f31..1e06ff5 100644 --- a/TelemetryClass.h +++ b/TelemetryClass.h @@ -23,8 +23,9 @@ #include #include #include +#include -enum class TelemetryCategory : int { OperatingSystemSpec = 0, HardwareSpec = 1, UserLocaleData = 2, ApplicationConfiguration = 3, UserFeedback = 4, ApplicationSpec = 5, CustomEmitted = 99}; +enum class TelemetryCategory : int { OperatingSystemSpec = 0, HardwareSpec = 1, UserLocaleData = 2, ApplicationConf = 3, UserFeedback = 4, ApplicationSpec = 5, CustomEmitted = 99}; class TelemetryClass : public QObject { @@ -32,40 +33,44 @@ class TelemetryClass : public QObject public: static TelemetryClass* getInstance() { return &telemetryClassInstance; } static QString categoryToString(TelemetryCategory category); + static QUrl getWebURL(); bool canPush(); bool canRegister(); bool isEnabled(); bool isStateForced(); bool isRegistered(); void init(); + void work(); void refresh(); void setEnabled(bool enabled); void setDisabled(bool disabled); void push(TelemetryCategory category); void push(TelemetryCategory category, const QJsonDocument json); void registerClient(); + QString getRegisteredID(); private: static TelemetryClass telemetryClassInstance; QString telemetryClientID; bool telemetryEnabled; bool telemetryStateForced; + bool telemetryPushAppConf; + void work_p(bool doWork); QJsonDocument getOperatingSystem(); QJsonDocument getSystemHardware(); QJsonDocument getApplicationSpec(); + QJsonDocument getApplicationConf(); QJsonDocument getSystemLocaleList(); -public slots: - void pushStartupSet(); - private slots: void pushFinished(QNetworkReply *reply); void registerFinished(QNetworkReply *reply); + void work_pd(bool doWork); signals: - void pushed(); - void registered(); + void pushed(bool isSucessful); + void registered(bool isSucessful); }; extern TelemetryClass telemetryClass; diff --git a/TranslationClass.h b/TranslationClass.h index db62010..138216d 100644 --- a/TranslationClass.h +++ b/TranslationClass.h @@ -62,6 +62,6 @@ private: extern TranslationClass translationClass; -#define TCInstance TranslationClass::getInstance() +#define Translator TranslationClass::getInstance() #endif // TRANSLATIONCLASS_H diff --git a/config.h b/config.h index d917acd..fec2e16 100644 --- a/config.h +++ b/config.h @@ -1,6 +1,6 @@ /***************************************************************************** * gta5sync GRAND THEFT AUTO V SYNC -* Copyright (C) 2016-2017 Syping +* Copyright (C) 2016-2018 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -45,15 +45,11 @@ #endif #ifndef GTA5SYNC_COPYRIGHT -#define GTA5SYNC_COPYRIGHT "2016-2017" +#define GTA5SYNC_COPYRIGHT "2016-2018" #endif #ifndef GTA5SYNC_APPVER -#ifndef GTA5SYNC_DAILYB -#define GTA5SYNC_APPVER "1.5.0-dev8" -#else -#define GTA5SYNC_APPVER GTA5SYNC_DAILYB -#endif +#define GTA5SYNC_APPVER "1.5.0-dev9" #endif #ifdef GTA5SYNC_BUILDTYPE_REL @@ -92,12 +88,6 @@ #endif #endif -#ifdef GTA5SYNC_DAILYB -#ifndef GTA5SYNC_BUILDTYPE -#define GTA5SYNC_BUILDTYPE QT_TRANSLATE_NOOP("AboutDialog", "Daily Build") -#endif -#endif - #ifndef GTA5SYNC_BUILDTYPE #define GTA5SYNC_BUILDTYPE QT_TRANSLATE_NOOP("AboutDialog", "Custom") #endif diff --git a/lang/gta5sync_no.ts b/lang/gta5sync_no.ts index c6a588e..7391c43 100644 --- a/lang/gta5sync_no.ts +++ b/lang/gta5sync_no.ts @@ -23,7 +23,7 @@ Running with Qt %6<br/> - + &Close @@ -74,38 +74,37 @@ Pictures and Savegames - + Release - + Release Candidate - - + Daily Build - + Developer - + Beta - + Alpha - + Custom @@ -182,90 +181,181 @@ Pictures and Savegames + + ImageEditorDialog + + + Overwrite Image... + + + + + + Capacity: %1 + + + + + ? + + + + + &Import... + + + + + &Overwrite + + + + + &Close + + + + + + + Snapmatic Image Editor + + + + + Patching of Snapmatic Image failed because of I/O Error + + + + + Patching of Snapmatic Image failed because of Image Error + + + + + Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality. + + + ImportDialog - + Import... - - Settings - - - - - - + + + Background Colour: <span style="color: %1">%1</span> - + + Ignore Aspect Ratio - + + Picture + + + + Avatar - + + Background + + + + + ... - + + + + Background Image: + + + + + X + + + + + Force Colour in Avatar Zone + + + + Import picture - + &OK - + Discard picture - + &Cancel - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! - + Snapmatic Avatar Zone - + Select Colour... + + + Background Image: %1 + + + + + File + Background Image: File + + JsonEditorDialog @@ -275,15 +365,20 @@ When you want to use it as Avatar the image will be detached! - + &Save - + &Close + + + JSON Error + + MapLocationDialog @@ -318,7 +413,7 @@ When you want to use it as Avatar the image will be detached! - + X: %1 Y: %2 X and Y position @@ -460,132 +555,216 @@ Y: %2 - Interface + Feedback + Participation + + + + + + Participate in %1 User Statistics + + + + + Categorys + + + + + Hardware, Application and OS Specification + + + + + System Language Configuration + + + + + Application Configuration + + + + + Other + + + + + + + Participation ID: %1 + + + + + &Copy + + + + + + User Feedback + + + + + Limit: 1 message/day + + + + + &Send + + + + + Interface + + + + Language for Interface - - - - + + + + Current: %1 - + Language for Areas - + Style - + Use Default Style (Restart) - + Style: - + Font - + Always use Message Font (Windows 2003 and earlier) - + Sync - + Sync is not implemented at current time - + Apply changes - + &OK OK, Cancel, Apply - + Discard changes - + &Cancel OK, Cancel, Apply - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". - + System System in context of System default - + %1 (Closest to Interface) Next closest language compared to the Interface - + Auto Automatic language choice. - + %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 + + + + + A feedback message have to between 3-1024 characters long + + PictureDialog @@ -623,73 +802,80 @@ Y: %2 - - + + Export as &Picture... - - + + Export as &Snapmatic... - - + + &Edit Properties... - - + + + &Overwrite Image... + + + + + Open &Map Viewer... - - + + Open &JSON Editor... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate - - + + Snapmatic Picture Viewer - - + + Failed at %1 - - + + No Crew - + Unknown Location - - + + + No Players - + Avatar Preview Mode Press 1 for Default View @@ -798,6 +984,60 @@ Press 1 for Default View + + PlayerListDialog + + + Edit Players... + + + + + Available Players: + + + + + Selected Players: + + + + + &Apply + + + + + &Cancel + + + + + Add Players... + + + + + Failed to add more Players because the limit of Players are %1! + + + + + + Add Player... + + + + + Enter Social Club Player ID + + + + + Failed to add Player %1 because Player %1 is already added! + + + ProfileInterface @@ -843,212 +1083,343 @@ Press 1 for Default View - + Enabled pictures: %1 of %2 - + Loading... - - + + + + Import... - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + Import - - + + + + Can't import %1 because file can't be open + + + + + GTA V Export (*.g5e) - - + + Savegames files (SGTA*) - - + + Snapmatic pictures (PGTA*) - + Importable files (%1) - + + + All image files (%1) - - + + + + All files (**) - - - + + + No valid file is selected - - + + Import file %1 of %2 files - + Import failed with... %1 - - + + Failed to read Snapmatic picture - - + + Failed to read Savegame file - + + + Can't import %1 because file can't be parsed properly - + Can't import %1 because file format can't be detected - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e - + Failed to import the Snapmatic picture, the picture is already in the game - + Failed to import the Snapmatic picture, can't copy the file into profile - + Failed to import the Savegame, can't copy the file into profile - + Failed to import the Savegame, no Savegame slot is left - - - - - Export selected - - - - - + + JPG pictures and GTA Snapmatic - - + + JPG pictures only - - + + GTA Snapmatic only - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: - + + + + + Export selected... - + + Snapmatic Loader + + + + + <h4>Following Snapmatic Pictures got repaired</h4>%1 + + + + Initialising export... - + Export failed with... %1 - - + + No Snapmatic pictures or Savegames files are selected - - - + + + Remove selected - + You really want remove the selected Snapmatic picutres and Savegame files? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files - + + + + + + + No Snapmatic pictures are selected + + + + + + + + + + %1 failed with... + +%2 + Action failed with... + + + + + + Qualify as Avatar + + + + + + + + Patch selected... + + + + + + + + + + + + Patch file %1 of %2 files + + + + + Qualify + %1 failed with... + + + + + + Change Players... + + + + + Change Players + %1 failed with... + + + + + + + Change Crew... + + + + + Failed to enter a valid Snapmatic Crew ID + + + + + Change Crew + %1 failed with... + + + + + + + Change Title... + + + + + Failed to enter a valid Snapmatic title + + + + + Change Title + %1 failed with... + + + + All profile files (*.g5e SGTA* PGTA*) @@ -1056,17 +1427,17 @@ Press 1 for Default View QApplication - + Font - + Selected Font: %1 - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? @@ -1075,7 +1446,7 @@ Press 1 for Default View SavegameDialog - + Savegame Viewer @@ -1095,7 +1466,7 @@ Press 1 for Default View - + Failed at %1 @@ -1144,37 +1515,37 @@ Press 1 for Default View - + &View - + &Export - + &Remove - + &Select - + &Deselect - + Select &All - + &Deselect All @@ -1268,13 +1639,13 @@ Press 1 for Default View - - - - - - - + + + + + + + Snapmatic Properties @@ -1319,103 +1690,121 @@ Press 1 for Default View - - + Crew: %1 (%2) - - + Title: %1 (%2) - - - + + Appropriate: %1 - + Extras - + Qualify as Avatar automatically at apply - + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture - + &Apply - + &Cancel - - + + + Edit - + + Players: %1 (%2) + Multiple Player are inserted here + + + + + Player: %1 (%2) + One Player is inserted here + + + + Yes Yes, should work fine - + No No, could lead to issues - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? - - + + Patching of Snapmatic Properties failed because of %1 + + + + Patching of Snapmatic Properties failed because of JSON Error - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error - + + Snapmatic Title - + + New Snapmatic title: - + + Snapmatic Crew - + + New Snapmatic crew: @@ -1423,10 +1812,69 @@ Press 1 for Default View SnapmaticPicture - + PHOTO - %1 + + + open file %1 + + + + + header not exists + + + + + header is malformed + + + + + picture not exists (%1) + + + + + JSON not exists (%1) + + + + + title not exists (%1) + + + + + description not exists (%1) + + + + + reading file %1 because of %2 + Example for %2: JSON is malformed error + + + + + + JSON is incomplete and malformed + + + + + + JSON is incomplete + + + + + + JSON is malformed + + SnapmaticWidget @@ -1472,8 +1920,8 @@ Press 1 for Default View - - + + Delete picture @@ -1483,66 +1931,89 @@ Press 1 for Default View - + Edi&t - + Show &In-game - + Hide &In-game - + &Export - + &View - + &Remove - + &Select - + &Deselect - + Select &All - + &Deselect All - + Are you sure to delete %1 from your Snapmatic pictures? - + Failed at deleting %1 from your Snapmatic pictures + + TelemetryDialog + + + You want help %1 to improve in the future by collection of data? + + + + + %1 User Statistics + + + + + Yes, I would like to take part. + + + + + &OK + + + UserInterface @@ -1608,175 +2079,147 @@ Press 1 for Default View - + + Selection &mass tools + + + + - + &About %1 - - Ctrl+P + + Change &Title... - + + Change &Crew... + + + + + &Qualify as Avatar + + + + + Change &Players... + + + + &Exit - + Exit - - Ctrl+Q - - - - + Close &Profile - - Ctrl+End - - - - + &Settings - - Ctrl+S - - - - + Select &All - - Ctrl+A - - - - + &Deselect All - - Ctrl+D - - - - + &Export selected... - - Ctrl+E - - - - + &Remove selected - - Ctrl+Del - - - - + &Import files... - - Ctrl+I - - - - + &Open File... - - Ctrl+O - - - - - + + Select &GTA V Folder... - - - - + + + + Select GTA V Folder... - - Ctrl+G - - - - + Show In-gam&e - - Shift+E - - - - + Hi&de In-game - - - Shift+D - - - - + + Select Profile - + Open File... - - + - + + Open File - + Can't open %1 because of not valid file format + + + + Show In-game + + + + + + Hide In-game + + diff --git a/main.cpp b/main.cpp index b2dfca2..3cd4115 100644 --- a/main.cpp +++ b/main.cpp @@ -26,18 +26,27 @@ #include "UserInterface.h" #include "CrewDatabase.h" #include "SavegameData.h" +#include "UiModWidget.h" +#include "UiModLabel.h" #include "IconLoader.h" #include "AppEnv.h" #include "config.h" #include #include +#include #include #include +#include +#include +#include +#include #include #include #include +#include #include #include +#include #include #include #include @@ -98,19 +107,28 @@ int main(int argc, char *argv[]) #endif #endif - QString pluginsDir = AppEnv::getPluginsFolder(); - if (QFileInfo(pluginsDir).exists()) - { - a.addLibraryPath(pluginsDir); - } - QStringList applicationArgs = a.arguments(); QString selectedAction; QString arg1; applicationArgs.removeAt(0); - TCInstance->initUserLanguage(); - TCInstance->loadTranslation(&a); + Translator->initUserLanguage(); + Translator->loadTranslation(&a); + +#ifdef GTA5SYNC_TELEMETRY + if (!applicationArgs.contains("--disable-telemetry")) + { + if (!applicationArgs.contains("--skip-telemetryinit")) + { + Telemetry->init(); + Telemetry->work(); + } + } + else + { + Telemetry->setDisabled(true); + } +#endif if (!applicationArgs.contains("--skip-firststart")) { @@ -129,31 +147,54 @@ int main(int argc, char *argv[]) } } - settings.endGroup(); - #ifdef GTA5SYNC_TELEMETRY - if (!applicationArgs.contains("--disable-telemetry")) + bool telemetryWindowLaunched = settings.value("TelemetryWindowLaunched", false).toBool(); + if (!telemetryWindowLaunched && !Telemetry->isEnabled() && !Telemetry->isStateForced()) { - QObject::connect(Telemetry, SIGNAL(registered()), Telemetry, SLOT(pushStartupSet())); - if (!applicationArgs.contains("--skip-telemetryinit")) + QDialog telemetryDialog; + telemetryDialog.setObjectName(QStringLiteral("TelemetryDialog")); + telemetryDialog.setWindowTitle(QString("%1 %2").arg(GTA5SYNC_APPSTR, GTA5SYNC_APPVER)); + telemetryDialog.setWindowFlags(telemetryDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + telemetryDialog.setWindowIcon(IconLoader::loadingAppIcon()); + QVBoxLayout telemetryLayout; + telemetryLayout.setObjectName(QStringLiteral("TelemetryLayout")); + telemetryDialog.setLayout(&telemetryLayout); + UiModLabel telemetryLabel(&telemetryDialog); + telemetryLabel.setObjectName(QStringLiteral("TelemetryLabel")); + telemetryLabel.setText(QString("

%2

%1").arg(QApplication::translate("TelemetryDialog", "You want help %1 to improve in the future by collection of data?").arg(GTA5SYNC_APPSTR), QApplication::translate("TelemetryDialog", "%1 User Statistics").arg(GTA5SYNC_APPSTR))); + telemetryLayout.addWidget(&telemetryLabel); + QCheckBox telemetryCheckBox(&telemetryDialog); + telemetryCheckBox.setObjectName(QStringLiteral("TelemetryCheckBox")); + telemetryCheckBox.setText(QApplication::translate("TelemetryDialog", "Yes, I would like to take part.")); + telemetryCheckBox.setChecked(true); + telemetryLayout.addWidget(&telemetryCheckBox); + QHBoxLayout telemetryButtonLayout; + telemetryButtonLayout.setObjectName(QStringLiteral("TelemetryButtonLayout")); + telemetryLayout.addLayout(&telemetryButtonLayout); + QSpacerItem telemetryButtonSpacer(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); + telemetryButtonLayout.addSpacerItem(&telemetryButtonSpacer); + QPushButton telemetryButton(&telemetryDialog); + telemetryButton.setObjectName(QStringLiteral("TelemetryButton")); + telemetryButton.setText(QApplication::translate("TelemetryDialog", "&OK")); + telemetryButtonLayout.addWidget(&telemetryButton); + QObject::connect(&telemetryButton, SIGNAL(clicked(bool)), &telemetryDialog, SLOT(close())); + telemetryDialog.setFixedSize(telemetryDialog.sizeHint()); + telemetryDialog.exec(); + if (telemetryCheckBox.isChecked()) { + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + telemetrySettings.setValue("IsEnabled", true); + telemetrySettings.endGroup(); Telemetry->init(); - if (Telemetry->canPush()) - { - Telemetry->pushStartupSet(); - } - else if (Telemetry->canRegister()) - { - Telemetry->registerClient(); - } + Telemetry->work(); } - } - else - { - Telemetry->setDisabled(true); + settings.setValue("TelemetryWindowLaunched", true); } #endif + settings.endGroup(); + for (QString currentArg : applicationArgs) { QString reworkedArg; diff --git a/res/app.rc b/res/app.rc index 4722b1a..dc5d462 100644 --- a/res/app.rc +++ b/res/app.rc @@ -25,12 +25,12 @@ BEGIN BEGIN VALUE "CompanyName", "Syping" VALUE "FileDescription", "gta5view" - VALUE "FileVersion", "1.5.0-dev8" + VALUE "FileVersion", "1.5.0-dev9" VALUE "InternalName", "gta5view" - VALUE "LegalCopyright", "Copyright 2016-2017 Syping" + VALUE "LegalCopyright", "Copyright 2016-2018 Syping" VALUE "OriginalFilename", "gta5view.exe" VALUE "ProductName", "gta5view" - VALUE "ProductVersion", "1.5.0-dev8" + VALUE "ProductVersion", "1.5.0-dev9" END END END diff --git a/res/gta5sync_de.qm b/res/gta5sync_de.qm index 50b6529c2d736fab99286b5be9ed32e28d91e8ca..1ed4c3618dadfc2618a556f72cd01ceae8abd7ce 100644 GIT binary patch delta 5050 zcmb7Hd0bTW`hI6Qvz=Lziy{zszzqS}6&F+xLUbQkJ+SidT)Fl_{p?UA%eIv>P9{>|V3X-}U#LIYr*;kKg@cc;+nc_Po#geuqy# zmj3S*>6ExbMg2d%+uU>};OS#?TaSJ|kx0uC(F7vh4&bvy-Uos6aet?XQC|>A7ZW}G zkVt-!Xy`s7CWB~kP2&_V=L4dUu|!Q>M3H(Tk2gddFq7!HlSFmHNc#QB0)L|$Pezm!ch#3-UQgqXMyM2ixLNdXRf ziDNVE%Turr(7%&{4@@HRT}r`1;B}1@ zECgP6mV$-A>q{y4Rs?V(g{(tSK0XxEoJ2GrkV1~85+yWHh!D@NaHEq})zY|8a9A*h zCh?$WV-8Jz30StCQbt}y#S%&}2Ex&^l(rl98<$hgJ14+e80GExlqhWh<^2(X!!A+z zSGAzGKRIV+5)DtMMT@o(4a%iuqr-@vA4jk3Igg6-X-82XBI_J#tLt(SsZ4b6VI|ST zN;R(**U)=T!MJNFVz=`ZPifWY-% zN-jKOA>toMZf@`=iU^h5zI~m@bC={B-FrlZUr7TxTts7*OQ(hQfXc_x*{2ZjwZqcV z>1fr`+0yctvWc3rrMAs)5@oHD)`#PH|8deSb0dl3GDV!HlkTb>jTTCzyY#}B$q&RE z3)Qau(lBTAeCb;wn~0|QiD*3{;yRVI&3J>z(IVZye*`ohFFkN#AW_vtX{US`nDvkz zKLVmQJth6lx5^w)Fnx zvqU**(jO8n5mbAAbPn@Ci8g*;@>7yzwsH7D@4}s!+#Tvv&y_3ASz;~Y((XK zFg-vvqwQs)m}4?iRR992W#;W5cGPpSRWsF)z+Tyb5lAfQFS3(H5SMve*0lZ73apOkC~$!a*`#AQY(WVoy2zNs~r9|FzG4R zCdS{%Cn(FV;x!#B;z}R>C7)5g)=~-P|Ez2}+eEZsp>q3i3ouOiUfLbR->2Mv z9)y)vDo>oi2n=4M{9?*s2pY&BpS$rCMk~C(@Uz z76tqTBXU`_lgIs%YpO%xb=Y#ZRh=i!qmvz~6NeB;c~#Z*0i-tbHPz>b{)9EWM0K|V zg#^x3{gdk?ntoXIIDZZ@&AFxaI(8gV(W$*YkH@SnQ~OulKqs!NhkQSfX!T6>u=z+t zD-&_>HFZ=3q%di$dSu-sBx+HQJoi44U!Z#O+6Hv^ta?i0M_6XBsPmQWApBKz!CEl2 z;Evjyau0=`QJaf_%xSglfintgwOH*~4UMV?s8<|A1wNb9E0eEaC~m9k!$u$hM!o&` zRHBxn>b7u5W5y%(NAXD9eqDX~`eUMnFRRbZeg?yGKz%7JmMFGeeK+r0v}(Ub(u2e+ zLp73{0@iADeFKq5orar&xM32_VCSM#^g2Zo5rdw-@S|pIaWn935ncC0+)}FSizm1xiclAWA5t?WJ0gB^;G{yt9M5D7cMTCMvU(&2g zg_syXy@U-WRTrZZqEdK94Pyu=XAs@9ykd=(DDH6O0+LQ5uV zPTxept?MwD3w;>(&FtQ`kYl&0r2C@!AMN`wkZcCfN|Pl#zSYY-?ci)Ov|A(4Td zY|KJX*@t0AO}>vI3t;m;1*P`!>{2~iF}#aiX1)kbonz}qWMhr^vh~R~h-@oGTt#gC zCrH@Wd4z3zv>4Q!W1GB2L%jpo=8$E0@k0?;O<=e01q1bK*tTOr<+s@Pm-^!*yv-h7 zItxEmhO(XINT~H15CK|OvmcD_fw~8=-3}D65DBUJY3*sixkt1w9-M=N;5ltwViQ_1M7wr4?z1V{W{DgkKO$m7xVAYN3F&gR z+YO^J|7AC|hwp;=W}WtAs1#HeYd=ZzB9bi7Uj81HaQWJsn<1_-f!as&;IL(g&i6_f zk>R|~w+DM-#d2LxEcSt)OBZ|@fmhtp#nxf5dR-84=-+hX;#Xj5N_6qM<2V77y2K5b zn%7Obtj=tVQC^2G+Y@S@94Vr?O*j7{dQ*2$*SHInnojEWQGe6|!^9N^pXZ^0f}4i%--7bmlZLz?3(lPRhJtzb;ozFVa(*w-k}5+* z14N~H*RbvsC?B6>*!p+|evKFmyU!qz(7zkn7L3QnY%rWW1geb}4Cl`7$2gucTnl^; zE!=6i=Z}IT>kaqWji9os99e9OYhS>g@Mk<|2&K7>6?!R{A&J(C8dpMymn$wf#9xmG zS;UitiiE!^{Kh8*KFp9T-csa#tt2?axrio_2`}-)Q8NDWc)fs(R7hpGGu8dAlx%pX zkV?scd!@K1-~y_~UAz0f5Qd{@8cvZEK~WTgt33D;t;DBh*jcE=ZCQ!GcH#M?Co&tI zz!md+QGv0rj4S8uc4G<8l^Uyf&SB*WctTg&%ZIqZD|zA*pIN z@)QaRew!@kPPz!sGSEE^p9&PS07Mq!Q|8Xlg#3QVEI7qzE2=iy_)zZ20*#g;E+dP} zs^AMv#U_PVwmbK-h&7V5P)dita(o;#25}dh7B`HWpiwcnKpTfEL5*g-$3wy8f<>?6 zfN4gX!&GRhK#w_-g&Q2n&9L(}F3SOV*zv@!#Ng;MDg^1+lT1d}v=CLW2gv!^r&09T z>rwZMN0i5_l@__3D>Z1Fp-tbfcxDQW&lO7=iZVBWomM0_oRO{$?rk z`qQ~7dQ#}I$^S(^GSCS#I)Z+ESf9u?7pm{XAz@s>I(_v1O?1PK%1kHaX0^ zaKF7})M>*3YG{ReJ|cwQ^Y&V?{Z1P{>u73LTX;-p(0q zE~j;n!~&DdUzxPC<;hZ61SPn>TN&%oC$rLMHWk-!Mmv{KWpuz$GSjC$(>hEd^wMQ9 zC|uuEq_ua?OApEl`v0=m+X9c@7pftfH}mDZ!&c*p3?AtGE3}%;e4+dNuoiPg=;wqdD+S-t(}%T>-mp#Sy1F((rcE)mceJjO ixfX4dO9EYwwh!p@pB}fsWxTM^+)BUH=T!GOgwbq?i4^w1P~194ihc_2A?5Z31~l((d#_G763zE0Nib0 zcsHP&1+1>#5p8Fw2i~v&UOytEV;AuDC1CyAV9$O|n-t)R4*{yNgw=qP54a<%fTCJ( zbsWWM2G>kj+6Jy=1YqY4?oKQP@s}~x0OcemZ} zn9V-$F%Z3!EgnO^4+>&GNPGkEA1z~g7<+WZ1d@i4F|XWST%q8P zd<7I66a%lm0s^8GgUz(iGeO~(`vfS7Q^Zwm2E6wv((;_i%b|*lN+NPxpkmv6o|JA- zoc5!HCf6t~8Hlf_{ff)mXy2@F6ixX=sHR!*^dLFJZV{&vNqPT5ZuntmQdZZ*xi5bm zNRc?dm!#CxC0sx#ZOlEu%^rUc$iBf9+?h<3KH@g_n+rH9xZ*7&fNd_fHKByM7hFX+ zS#81~uFC5$VDgl4%S5i~_#(1w4_CcmK23mKT%DLiO(t^n2Ym@Y;+pd;yQqTq>47jy zCF7QtTyyOPS`f-TSX2j$jOCuS-k`4R;r=}5N0k>SxxV!aJCwFZ%K$!A#-M7Y?}vMV zjT@B-O^rZKvNH37WFRJ6xsE4>HhiPBc*oJ`nXfGOq5|_hl;xI=yE}kFqL&q?mF-dE(dwlEO{d#!~aV8KLa>kt$JFsFVR#K#{H*9QmBQ z{8Z&|*@n72NHu2>QN5r}mCR-VOJY>1al{7w5kstG23x)tyAWSG!tx zVkYgz$!NGMWA;?FEk^@#cei@TJ<`^DqT2n>OVr(A>e2rs4EjZKP&rx_uTw8=r=NAA zjMK-fv%c;CLOxb+KbT9zRjW&zN`W0U>dFQa;S%+yQNIGCx2tPfseZ#Sbz>uW+OFQsP`v7|fs$ZQZORa6vC?m)^Tk|vym%V{GvoxVED#^oQon}fe z&EJwH&5WbXz~*jE=AjB|;+LAN1|v01qvqXqA~@`-X03^cjY!huJO7KCp`WI9Oc9X0 zRa4*CN^`bH(^yLZ)a{zfpA*5eb2N|YC~>DO&10u}V8(9V?qUNe9LC$-4WV8+$2;bA zQl@SWyxTKZ;Qg)qsFf5@tB}#PhaWeV6b!cG{fojWq2s)N%UQs|g`ZkhLQJUm=pEO9 z#aH=7YEsg@j!!BhM$E(cjL06E<4Qhb38C@^pZ#;N?*9ek)$=V2r<1pT;qQ0{&~3Jj zf0WQmiF6B07bR{=5}1d5cuLR>a3K$06r7?d@Tf7ui2P|J>2P7JFG-jCh7h=evGIJ(iYg>Q}# zBhK!^{gWh3;vk_@%mFr~3J?C!(wO>D=(<77zP(>$`VvpL_ z4&0L`em=R2Tnn+;OqrHdi>>>OKtYb!R!WzCzDfL}?pqp+jEv5kwA??!$vca+{6k87 zezCUSC%1s@)>>%kpzN3Hz zF1mms8hmzbGL9Ia3koTuZV1zb=o+Z6f7VSYAPHig=;qdw1aqJ1Vr|K!p*k6jGj%I( zlLYI#bvuqyg-OY}>UkvTdxg3)7vkw%Kr7?I0^Ozf0n}czoptw3G;rpewBhkv?k2hcV)aSOpU}Pzy{Yvi@NSiUSqUXBoY3#NGM%U%@1+0muQ4D!e>6m|`B+m7 - + &Close S&chließen @@ -219,38 +219,37 @@ Pictures and Savegames Grand Theft Auto V Snapmatic Bilder und Spielständen - + Release Release - + Release Candidate Release Candidate - - + Daily Build Daily Build - + Developer Entwickler - + Beta Beta - + Alpha Alpha - + Custom Eigener @@ -344,9 +343,9 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen ImageEditorDialog - - - + + + Snapmatic Image Editor Snapmatic Bild Editor @@ -357,7 +356,7 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen - + Capacity: %1 Kapazität: %1 @@ -394,17 +393,17 @@ Grand Theft Auto V 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 - + Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality. Jedes geschossene Snapmatic hat seine eigene Kapazität, ein Snapmatic mit besserer Kapazität kann ein Bild mit besserer Qualität beinhalten. @@ -463,8 +462,8 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen - - + + Background Colour: <span style="color: %1">%1</span> Hintergrundfarbe: <span style="color: %1">%1</span> @@ -475,7 +474,7 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen ... - + Background Image: %1 Hintergrundbild: %1 @@ -527,44 +526,44 @@ Wenn du planst es als Avatar zu verwenden das Bild wird abgetrennt! - - + + Background Image: Hintergrundbild: - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Eigener Avatar - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! Eigenes Bild - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Bist du sicher ein Quadrat Bild außerhalb der Avatar Zone zu verwenden? Wenn du es als Avatar verwenden möchtest wird es abgetrennt! - + Snapmatic Avatar Zone Snapmatic Avatar Zone - + Select Colour... Farbe auswählen... - + File Background Image: File Datei @@ -604,7 +603,7 @@ Wenn du es als Avatar verwenden möchtest wird es abgetrennt! Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen JSON Fehler - + JSON Error JSON Fehler @@ -827,17 +826,102 @@ Y: %2 Name - + + Feedback + Feedback + + + + Participation + Teilnahme + + + + &Send + &Senden + + + User Statistics + Benutzerstatistik + + + + + Participate in %1 User Statistics + An %1 Benutzerstatistik teilnehmen + + + + Categorys + Kategorien + + + + Hardware, Application and OS Specification + Hardware, Anwendung und OS Spezifikation + + + + System Language Configuration + Spracheinstellungen des System + + + OS Language Configuration + Spracheinstellungen des OS + + + + Application Configuration + Anwendungseinstellungen + + + + Other + Sonstiges + + + + + + Participation ID: %1 + Teilnahme ID: %1 + + + + &Copy + &Kopieren + + + + + User Feedback + Benutzer Feedback + + + Message for the Developers + Nachricht an den Entwickler + + + + Limit: 1 message/day + Limit: 1 Nachricht/Tag + + + Send + Senden + + + Language for Areas Sprache für Standorte - + Style Stil - + Use Default Style (Restart) Benutze Standard Stil (Neustart) @@ -846,17 +930,17 @@ Y: %2 Benutze Standard Stil - + Style: Stil: - + Font Schrift - + Always use Message Font (Windows 2003 and earlier) Immer Nachrichtenschrift nutzen (Windows 2003 und früher) @@ -865,20 +949,20 @@ Y: %2 Sprache - + Interface Oberfläche - + Language for Interface Sprache für Oberfläche - - - - + + + + Current: %1 Aktuell: %1 @@ -887,33 +971,33 @@ Y: %2 Standorte - + Sync Sync - + Sync is not implemented at current time Sync wurde bisher nicht implementiert - + Apply changes Änderungen übernehmen - + &OK OK, Cancel, Apply &OK - + Discard changes Änderungen verwerfen - + &Cancel OK, Cancel, Apply Abbre&chen @@ -934,7 +1018,7 @@ Y: %2 %1 (%2 wenn verfügbar) - + %1 %1 %1 @@ -948,48 +1032,63 @@ Y: %2 Der eigene Ordner initialisiert sobald du %1 neugestartet hast. - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (Erste näheste Sprache) - + System System in context of System default System - + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Näheste zur Oberfläche) - + Auto Automatic language choice. Automatisch - + 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 + + + + A feedback message have to between 3-1024 characters long + Eine Feedback Nachricht hat zwischen 3-1024 Zeichen lang zu sein + The language change will take effect after you restart %1. Die Änderung der Sprache nimmt Effekt sobald du %1 neugestartet hast. - + No Profile No Profile, as default Kein Profil - - - + + + Profile: %1 Profil: %1 @@ -1104,7 +1203,7 @@ Y: %2 - + Export as &Picture... Als &Bild exportieren... @@ -1114,7 +1213,7 @@ Y: %2 - + Export as &Snapmatic... Als &Snapmatic exportieren... @@ -1128,7 +1227,7 @@ Y: %2 - + &Edit Properties... Eigenschaften bearb&eiten... @@ -1143,18 +1242,18 @@ Y: %2 - + &Overwrite Image... Bild &überschreiben... - + Open &Map Viewer... &Kartenansicht öffnen... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1163,32 +1262,32 @@ 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 @@ -1233,7 +1332,7 @@ Drücke A für Standardansicht Keine Crew - + Unknown Location Unbekannter Standort @@ -1404,7 +1503,7 @@ Drücke A für Standardansicht - + Open &JSON Editor... &JSON Editor öffnen... @@ -1435,38 +1534,38 @@ Drücke A für Standardansicht Ausgewählte Spieler: - + &Apply &Übernehmen - + &Cancel Abbre&chen - + Add Players... Spieler hinzufügen... - + Failed to add more Players because the limit of Players are %1! Fehlgeschlagen beim Hinzufügen von mehr Spielern weil der Limit von Spielern %1 ist! - - + + Add Player... Spieler hinzufügen... - + Enter Social Club Player ID Social Club Spieler ID eingeben - + Failed to add Player %1 because Player %1 is already added! Fehlgeschlagen beim Hinzufügen vom Spieler %1 weil Spieler %1 bereits hinzugefügt wurde! @@ -1530,49 +1629,49 @@ Drücke A für Standardansicht Profil schließen - + Loading... Lade... - + Snapmatic Loader Snapmatic Lader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 <h4>Folgende Snapmatic Bilder wurden repariert</h4>%1 - - - - + + + + Import... Importieren... - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + + Import Importieren @@ -1585,14 +1684,14 @@ Drücke A für Standardansicht Importfähige Dateien (*.g5e *.jpg *.png SGTA* PGTA*) - - + + Savegames files (SGTA*) Spielstanddateien (SGTA*) - - + + Snapmatic pictures (PGTA*) Snapmatic Bilder (PGTA*) @@ -1601,33 +1700,33 @@ Drücke A für Standardansicht Alle Bilddateien (*.jpg *.png) - + Importable files (%1) Importfähige Dateien (%1) - - - + + + All image files (%1) Alle Bilddateien (%1) - - - - + + + + All files (**) Alle Dateien (**) - - + + Import file %1 of %2 files Importiere Datei %1 von %2 Dateien - + Import failed with... %1 @@ -1636,38 +1735,38 @@ Drücke A für Standardansicht %1 - - + + Failed to read Snapmatic picture Fehler beim Lesen vom Snapmatic Bild - - + + Failed to read Savegame file Fehler beim Lesen von Spielstanddatei - - - + + + Can't import %1 because file can't be open Kann %1 nicht importieren weil die Datei nicht geöffnet werden kann - - - + + + Can't import %1 because file can't be parsed properly Kann %1 nicht importieren weil die Datei nicht richtig gelesen werden kann - + Can't import %1 because file format can't be detected Kann %1 nicht importieren weil das Dateiformat nicht erkannt werden kann - + Initialising export... Initialisiere Export... @@ -1676,24 +1775,24 @@ Drücke A für Standardansicht Kann %1 nicht importieren weil das Dateiformat nicht gültig ist - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Fehlgeschlagen beim Importieren vom Snapmatic Bild, Datei beginnt nicht mit PGTA oder endet mit .g5e - + Failed to import the Snapmatic picture, the picture is already in the game Fehlgeschlagen beim Importieren vom Snapmatic Bild, dieses Bild ist bereits im Spiel - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1Exportiere Snapmatic Bilder%2<br><br>JPG Bilder machen es möglich sie mit ein Bildansicht Programm zu öffnen<br>Das GTA Snapmatic Format macht es möglich sie wieder ins Game zu importieren<br><br>Exportieren als: - - - + + + No valid file is selected Keine gültige Datei wurde ausgewählt @@ -1707,77 +1806,63 @@ Drücke A für Standardansicht Fehlgeschlagen beim Importieren vom Snapmatic Bild, Datei beginnt nicht mit PGTA - + Failed to import the Snapmatic picture, can't copy the file into profile Fehlgeschlagen beim Importieren vom Snapmatic Bild, kann Snapmatic Bild nicht ins Profil kopieren - + Failed to import the Savegame, can't copy the file into profile Fehlgeschlagen beim Importieren vom Spielstand, kann Spielstanddatei nicht ins Profil kopieren - + Failed to import the Savegame, no Savegame slot is left Fehlgeschlagen beim Importieren vom Spielstand, kein Spielstandslot mehr frei - - + + JPG pictures and GTA Snapmatic JPG Bilder und GTA Snapmatic - - + + JPG pictures only Nur JPG Bilder - - + + GTA Snapmatic only Nur GTA Snapmatic - - - - - - - - - - Snapmatic Mass Tool - Snapmatic Massenwerkzeug + Snapmatic Massenwerkzeug - - - - You don't have any Snapmatics selected! - Du hast keine Snapmatics ausgewählt! + Du hast keine Snapmatics ausgewählt! - - - - + + + + Patch selected... Auswahl patchen... - - - - - - - - + + + + + + + + Patch file %1 of %2 files Patche Datei %1 von %2 Dateien @@ -1786,10 +1871,28 @@ Drücke A für Standardansicht Du hast keine Snapmatic ausgewählt! - - - - + + + Qualify as Avatar + Als Avatar qualifizieren + + + + + + + + + No Snapmatic pictures are selected + Keine Snapmatic Bilder sind ausgewählt + + + + + + + + %1 failed with... %2 @@ -1799,35 +1902,55 @@ Drücke A für Standardansicht %2 - + Qualify %1 failed with... Qualifizieren - + + + Change Players... + Spieler ändern... + + + Change Players %1 failed with... Spieler ändern - + + + + Change Crew... + Crew ändern... + + + Failed to enter a valid Snapmatic Crew ID Fehlgeschlagen beim Eingeben von einer gültigen Crew ID - + Change Crew %1 failed with... Crew ändern - + + + + Change Title... + Titel ändern... + + + Failed to enter a valid Snapmatic title Fehlgeschlagen beim Eingeben eines gültigen Snapmatic Titel - + Change Title %1 failed with... Titel ändern @@ -1847,25 +1970,25 @@ Das GTA Snapmatic Format macht es möglich sie wieder ins Game zu importieren Exportieren als: - - + + No Snapmatic pictures or Savegames files are selected - Keine Snapmatic Bilder oder Spielstände ausgewählt + Keine Snapmatic Bilder oder Spielstände sind ausgewählt - - - + + + Remove selected Auswahl löschen - + You really want remove the selected Snapmatic picutres and Savegame files? Möchtest du wirklich die ausgewählten Snapmatic Bilder und Spielstanddateien löschen? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files Fehlgeschlagen beim kompletten entfernen der ausgewählten Snapmatic Bilder und/oder der Spielstanddateien @@ -1886,10 +2009,8 @@ Exportieren als: Fehlgeschlagenen beim Import vom Spielstand weil kein Spielstandslot mehr übrig ist - - Export selected - Auswahl exportieren + Auswahl exportieren Export and Copy pictures @@ -1908,9 +2029,11 @@ Exportieren als: Wie sollen wir mit den Snapmatic Bilder umgehen? - - - + + + + + Export selected... Auswahl exportieren... @@ -1923,7 +2046,7 @@ Exportieren als: Initialisierung... - + Export failed with... %1 @@ -1953,13 +2076,13 @@ Exportieren als: 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) @@ -1967,26 +2090,39 @@ Exportieren als: QApplication - + Font Schrift - + Selected Font: %1 Ausgewähle Schrift: %1 - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? <h4>Willkommen zu %1!</h4>Möchtest du %1 einstellen bevor du es nutzt? + + No Snapmatic pictures are selected + Keine Snapmatic Bilder sind ausgewählt + + + %1 failed with... + +%2 + Action failed with... + %1 fehlgeschlagen mit... + +%2 + SavegameDialog - + Savegame Viewer Spielstandanzeiger @@ -2018,7 +2154,7 @@ Exportieren als: Schließen - + Failed at %1 Fehlgeschlagen bei %1 @@ -2127,32 +2263,32 @@ Exportieren als: Fehlgeschlagen beim Löschen %1 von deinen Spielständen - + &View A&nsehen - + &Remove Entfe&rnen - + &Select Au&swählen - + &Deselect A&bwählen - + Select &All &Alles auswählen - + &Deselect All Alles a&bwählen @@ -2191,7 +2327,7 @@ Exportieren als: Spielstand kopieren - + &Export &Exportieren @@ -2267,12 +2403,12 @@ Exportieren als: - - - - - - + + + + + + Snapmatic Properties Snapmatic Eigenschaften @@ -2317,8 +2453,8 @@ Exportieren als: Meme - - + + Snapmatic Title Snapmatic Titel @@ -2328,55 +2464,55 @@ Exportieren als: 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 - + Extras Extras - + Qualify as Avatar automatically at apply Beim Übernehmen als Avatar qualifizieren - + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture Das Qualifizieren als Avatar erlaubt dir dieses Snapmatic als Social Club Profilbild zu nutzen - + &Apply &Übernehmen - + &Cancel Abbre&chen @@ -2389,9 +2525,9 @@ Exportieren als: Cancel - - - + + + Edit Bearbeiten @@ -2406,55 +2542,55 @@ Exportieren als: Spieler: (%1) (%2) - + Yes Yes, should work fine Ja - + No No, could lead to issues Nein - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? <h4>Ungespeicherte Änderungen erkannt</h4>Möchtest du den JSON Inhalt speichern bevor du verlässt? - + Patching of Snapmatic Properties failed because of %1 Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen %1 - + Patching of Snapmatic Properties failed because of JSON Error Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen JSON Fehler - - - + + + 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: @@ -2544,19 +2680,19 @@ Exportieren als: Datei lesen %1 wegen %2 - + JSON is incomplete and malformed JSON ist unvollständig und Fehlerhaft - + JSON is incomplete JSON ist unvollständig - + JSON is malformed JSON ist Fehlerhaft @@ -2607,7 +2743,7 @@ Exportieren als: Bist du sicher %1 von deine Snapmatic Bilder zu löschen? - + Edi&t Bearbei&ten @@ -2620,7 +2756,7 @@ Exportieren als: &Im Spiel deaktivieren - + &Export &Exportieren @@ -2633,12 +2769,12 @@ Exportieren als: Exportiere als &GTA Snapmatic - + Show &In-game &Im Spiel anzeigen - + Hide &In-game &Im Spiel ausblenden @@ -2671,32 +2807,32 @@ Exportieren als: Exportiere als &Snapmatic... - + &View A&nsehen - + &Remove Entfe&rnen - + &Select Au&swählen - + &Deselect A&bwählen - + Select &All Alles &auswählen - + &Deselect All Alles a&bwählen @@ -2749,6 +2885,37 @@ Exportieren als: Fehlgeschlagen beim Löschen von %1 von deinen Snapmatic Bildern + + TelemetryDialog + + You want help to improve %1 in the future with the collection of data? + Möchtest du helfen %1 in der Zukunft zu verbessern mit der Sammlung von Daten? + + + + %1 User Statistics + %1 Benutzerstatistik + + + You want help to improve %1 in the future by collection of data? + Möchtest du helfen %1 in der Zukunft zu verbessern durch Sammlung von Daten? + + + + You want help %1 to improve in the future by collection of data? + Möchtest du helfen %1 in der Zukunft zu verbessern durch Sammlung von Daten? + + + + Yes, I would like to take part. + Ja, ich möchte teilnehmen. + + + + &OK + &OK + + UserInterface @@ -2976,7 +3143,7 @@ Exportieren als: - + Select &GTA V Folder... Wähle &GTA V Ordner... @@ -3075,16 +3242,16 @@ Exportieren als: - - + + Select Profile Profil auswählen - - - + + + Select GTA V Folder... Wähle GTA V Ordner... @@ -3093,7 +3260,7 @@ Exportieren als: Wähle GTA V &Ordner... - + Open File... Datei öffnen... @@ -3114,20 +3281,20 @@ Exportieren als: - + &About %1 &Über %1 - - - - + + + + Open File Datei öffnen - + Can't open %1 because of not valid file format Kann nicht %1 öffnen weil Dateiformat nicht gültig ist @@ -3160,5 +3327,17 @@ Exportieren als: Not able to reload profiles Nicht fähig Profile neuzuladen + + + + Show In-game + Im Spiel anzeigen + + + + + Hide In-game + Im Spiel ausblenden + diff --git a/res/gta5sync_en_US.qm b/res/gta5sync_en_US.qm index 97316139aa29e5cf895ecb0952499a41824e7a11..f47f8310815144875ca29dbdf993068490a4e12f 100644 GIT binary patch delta 2082 zcmXAqeN+_Z6~^z(&agW(yE`#JR{Q{gfC^+G^0A;S2*|R4AP8usY9$s^djw+yk|yeE zm19Y%$vUxUB{3>0RV)z%KM-2C-KfR7gdlBbG{FN$38K*in~)ss!Fga*TMuib0QgU=T`sc?YYEta70Oi#CgCab`o=zltC~Pv)Vu8XYBQ1`iu$~aGmcs5wfvpt2 z-%Vs3qVUd4qQF@cJ{c@NOJ&AC$r_J1kq0Qfw2vsqMH$s#Og7o$28q}*vX=xQkCC!Z z;r~pQikm+rQg$+dj#m18b1%ARqhr6ELKJ7FrW)kp40LXy61fi0jibn!@(UX7!@FLm z>E00@zdxZz<+(&J#xmj;5k!`Hl^Ii2W)Cnk|BReI#mu^8;}Bq!*&O{Hk#!lfwSF~` ze>LMwoR1oU*}#-&=CiDFqL=qDV`D=^;sfRz!x^He->`ul3eHYt^CCu2%g@=BR}jly z#r|sPZ;2K@Wy`7yiE@`I)og&D%r?G}fG*!q`Qoc8t<_2=o8*XF!=8-WN0i;dHkAw$ zCCp~q+G2?oaBRCPm}q_l+r`a=5WCpRm(W=5arW9DWujm+>)C{JOFG$}vAsk(7yIS4 zY&2wL?;Q6b$~wi4+$$nlG@tz;4NXXX?2l32L}{lr!tt9B`raLO9W<;5RDneTEt`jc=< zQVd+En6R8{iZ})-jw@Eq9ESOk5Q=O*8a%H@3;>oEKqDubf=m?H;>(hK?G8!i-alP~*dEm63O-zEs? z`9AM37ZC*+OZfT-RGWI1uiu427Pa$-CklyPI>|TeSOG_Vr;KxP(`;wFX1a|q^m4DI zt3rs(o4wYu8;N2gm2^IGibX4qS0GD))`vSml$Wkl^A;vl>EvfS7HAtTL%bZl_DuEz zqG?aGZM{e|@0Ql(!qj}6+OKk!5_!9{!xtQg_@VZ}sc547E!wB;uujTe9dC1ET5suQ zy3Irpj4oxO0d_9Xr9M84VXW3IZuAgke5)%vd=yID)or|73RnD1_x2zf2@2Vx+gkn( zQRrUX_Q20E-a*~@$QtZefUe7h{YkA+s=a3Wg$Slw3z5bs_*V@>V671PJD{!t4K= zhaF22D)wRw+)-ioUy)O`3h&r%W8BF?tr=s?ED{&=grf6xJ+UTL>}Y`-SeI zXG9L`fY7rt3qJT*=r>!4W*ihA7C(lnr6MzeZWFeP%;+RrM1wDuH&H9j%0c3(8Zl&h zCU#+q7!?Ec6K{$O*42Y2RAyzX%-befk4|6*`o!dtd?LMyOku7e!aN- zp%E1hDP!6=hqYNeKf{+OdPMB%=P{KD@oJr$$hT4K9<9XmTE*+7a70*$_^(t3ms6|g zsX9xUB#f!tzX88HKIMQ8! zdR`uvnD%XW@E4^`7wU+AUD|1cKBmv5T^ssv?tQ5?wh;OpkZNti7{C*i85L6Pb<`nG zNY0;j;KB-%_L&l30;^OXz6*lSQkii`YG@fGva!;Io&LDUa-^;@^q0RFM7;bN(m#?$ zi000dJQdq0n(|Iby&sgqU2jXD?ZXY9dRuzZF@T0YRq4G}&;2PK3wvKLjE-Z0yp%r( z{>906_2F~AMH}V%HNntL^M!tMHfSEvZ#lObciF%7HEH`0CQD!U68`6(>gySNXe_U( zw2kWPZAhyv(KpEGBgUb>_z*hfhAX@nIpsOS91AQzWx65kzlf4%SJK5mM?n{qiD)tu z`b;|G2bD437~brIGK)4DoQPK{V@Yl~KNizpwDcP2z1BD#yM> z#2Y!ujSItO6bE2w?bpWXSMOj|@{P7+I8eX9cy`TtqB)vNi|3T%yVNDWvS}PI?w8AZTkx&;P=0L>3g$nO_g{e|0hi<>&x)|%2E{6w zLVqUr+-SolHOqH`&fs*q{Ky||O^cMr51Mf*8M*WCw7wXe~{$*mhx Hnr8eTvn)*# delta 2185 zcmX|CdsGv57QQo?A(=-q#ee}62q3SJCM*zMlJJr@s64bsR^3L#3PMp6R(f28R$8&FQc+Rx5KF~FHAq>v?Y7ohSfMPk+G1O~x_dcu&i?hCnR9=?d%y2~ z_x^@^iNhC(H#~@E9iDN--yH=;V%V|6Z$XY5P!}kGHY5Ld2noYaI50G(t4Nbv+Z z8*yPW(0@$_@EQc#bp^nDR>Hg%$Bf243%Z^R0Ko;i`J3_wKsSF={v_x|f&mJaf$m?C zh+81y?Lh$5I7Ia200d|uV*auOQo`)rV2;OojMpHed<~{cUHDp@@ zF^>xJPT>EXUMTIl0U+)n0_=C;&t0R)q8i@Y=nfG3Pw3o-xhN%^eN>OR4#D*{%$cTv zi7`Cub`mC!(fGX+?%S3FEHM%6*Lr~X5(%?LB+PFnd_TaP9;L*l)pIDoG*KJ<6M#iU z>}XvN;MYVrk`l3oATl6zn)p1|2Jky4F*7p`z}_SNtvm$~d6EpcAY!Z+xl%ucwfvr3 zdj;>xF_4>!b_1mLkkw5k04r2t6Y1}Lh3t4f0a-pT;gaVhw3x*{(qfPEB0r2hh~id~ zoz@8y?_2WB856+Li)4>82vJY=Q{gB?5;<@YiLF>qUVTdd2r`hatr)kmo*bEJ22eQ3 zZ?EPdAv1aBeGh=VGIDBi6~M9w0J;-gEnp}4Q zT{%SkGCGXtp#IZqLT>&vHGeL0H|^2Ug3Z4!VPG^JbLTN|;E3>$s)Q3=4)x9Ij=YtWIM;v5z0lU3p7JE%fK z3vNa0f&mQ2-O9)s0MlJDgEqQvk+XAkn1z#jP{*;V$6^y5N0f?vbg2DDdHVp0SMZ7a zRNg%RpNH}@qnIe#UG8*Z*E}5Z+XY1cYNveSyd7=4T7K_DG(b^|{7Da5CoNY&XAYw1 zQ3~Hd1AyM7NPX0fb}m+=JvfT4Sg6SFZ~)MZXj0Cp}ecatrnThS7YJf=&OF@oShsf#podFKDjZ zWO2~V-#*R6j+_U0>Nb0&mtAgQFEn5yjiSX44owF!~T zVE*)T6hPcVrmh*=K(#TiT*91!nRzwy7PdQ?*>Au$<|>)?f#oQii|I5L1L(S#t0^c( z!U1M@{J#KpOEWXFHWz)enYn3*16X{RnJs;Q?eS%aDP)@%&l1z~Sjj3qad?w1vDyMm z>?LD^U(UfBgps-b(k;mFC&#~tgd!mTGZ2wIf?P6euS_T0;JJ{jrdhFg7_Oo(ygf5u9 zmPVieTUb}a#{l#;3FA^FjBk`Mn_ykXQCQUi_NMi&VZECbQZ2H4Yfp-_54S=^68>2E7bJmwAatAwVt%57sG<6a0?Iy$hj=ns@#tI=Rt zp~|y;YXG!ANEn%;yu8K}7mQjtZo@IuSE(p&5RI{2#eQ`QEBZm@CA#CnIILPUbO$G? zP?edC2IZHE*H~3l!a7x-4Z{Ovf=?wD9=SlUJV0TR8KE@HhL2Uhuwm;QhQBS?Mo;4d zvRYJf8q1(?;u3)g{~sJcY787Vi5YDIcRSci4ba z@^b|?^_}hwoS+wXWGKWJEqbvlL(%<0++Br-y4Ys@W3{!eqD)(0t*zCT)YMdoj@V$a z(JQ?y~BYijDX8*6N#b=u9=hH|ad_Ja2RXKJ;z$la#I2?!-A7V77yl2y CU~8=a diff --git a/res/gta5sync_en_US.ts b/res/gta5sync_en_US.ts index 1c0671e..948d834 100644 --- a/res/gta5sync_en_US.ts +++ b/res/gta5sync_en_US.ts @@ -23,7 +23,7 @@ Running with Qt %6<br/> - + &Close @@ -74,38 +74,37 @@ Pictures and Savegames - + Release - + Release Candidate - - + Daily Build - + Developer - + Beta - + Alpha - + Custom @@ -185,9 +184,9 @@ Pictures and Savegames ImageEditorDialog - - - + + + Snapmatic Image Editor @@ -198,7 +197,7 @@ Pictures and Savegames - + Capacity: %1 @@ -223,17 +222,17 @@ Pictures and Savegames - + Patching of Snapmatic Image failed because of I/O Error - + Patching of Snapmatic Image failed because of Image Error - + Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality. @@ -247,8 +246,8 @@ Pictures and Savegames - - + + Background Colour: <span style="color: %1">%1</span> Background Color: <span style="color: %1">%1</span> @@ -280,7 +279,7 @@ Pictures and Savegames - + Background Image: %1 @@ -316,43 +315,43 @@ Pictures and Savegames - - + + Background Image: - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Snapmatic Avatar Zone - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! - + Select Colour... Select Color... - + File Background Image: File @@ -376,7 +375,7 @@ When you want to use it as Avatar the image will be detached! - + JSON Error @@ -555,133 +554,217 @@ Y: %2 - + + Feedback + + + + + + Participate in %1 User Statistics + + + + + Categorys + + + + + Hardware, Application and OS Specification + + + + + Application Configuration + + + + + Other + + + + + + + Participation ID: %1 + + + + + &Copy + + + + + + User Feedback + + + + + Limit: 1 message/day + + + + Language for Areas - + Style - + Style: - + Font - + Always use Message Font (Windows 2003 and earlier) - + Interface + Participation + + + + + System Language Configuration + + + + + &Send + + + + Language for Interface - - - - + + + + Current: %1 - + Use Default Style (Restart) - + Sync - + Sync is not implemented at current time - + Apply changes - + &OK OK, Cancel, Apply - + Discard changes - + &Cancel OK, Cancel, Apply - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". - + System System in context of System default - + %1 (Closest to Interface) Next closest language compared to the Interface - + Auto Automatic language choice. - + %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 + + + + + A feedback message have to between 3-1024 characters long + + PictureDialog @@ -720,73 +803,73 @@ Y: %2 - + Export as &Picture... - + Export as &Snapmatic... - + &Overwrite Image... - + &Edit Properties... - + Open &Map Viewer... - + 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 @@ -896,7 +979,7 @@ Press 1 for Default View - + Open &JSON Editor... @@ -919,38 +1002,38 @@ Press 1 for Default View - + &Apply - + &Cancel - + Add Players... - + Failed to add more Players because the limit of Players are %1! - - + + Add Player... - + Enter Social Club Player ID - + Failed to add Player %1 because Player %1 is already added! @@ -1005,284 +1088,276 @@ Press 1 for Default View - + Loading... - + Snapmatic Loader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 - - - - + + + + Import... - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + + Import - + Importable files (%1) - - + + GTA V Export (*.g5e) - - + + Savegames files (SGTA*) - - + + Snapmatic pictures (PGTA*) - - - + + + All image files (%1) - - - - + + + + All files (**) - - - + + + No valid file is selected - - + + Import file %1 of %2 files - + Import failed with... %1 - - + + Failed to read Snapmatic picture - - + + Failed to read Savegame file - - - + + + Can't import %1 because file can't be open - - - + + + Can't import %1 because file can't be parsed properly - + Can't import %1 because file format can't be detected - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e - + Failed to import the Snapmatic picture, the picture is already in the game - + Failed to import the Snapmatic picture, can't copy the file into profile - + Failed to import the Savegame, can't copy the file into profile - + Failed to import the Savegame, no Savegame slot is left - - - Export selected - - - - - + + JPG pictures and GTA Snapmatic - - + + JPG pictures only - - + + GTA Snapmatic only - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: - - - + + + + + Export selected... - + Initialising export... Initializing export... - + Export failed with... %1 - - + + No Snapmatic pictures or Savegames files are selected - - - + + + Remove selected - + You really want remove the selected Snapmatic picutres and Savegame files? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files - - - - - - - - - - - Snapmatic Mass Tool - + + + Qualify as Avatar + - - - - - You don't have any Snapmatics selected! - + + + + + + + No Snapmatic pictures are selected + - - - - + + + + Patch selected... - - - - - - - - + + + + + + + + Patch file %1 of %2 files - - - - + + + + + + %1 failed with... %2 @@ -1290,41 +1365,61 @@ Press 1 for Default View - + Qualify %1 failed with... - + + + Change Players... + + + + Change Players %1 failed with... - + + + + Change Crew... + + + + Failed to enter a valid Snapmatic Crew ID - + Change Crew %1 failed with... - + + + + Change Title... + + + + Failed to enter a valid Snapmatic title - + Change Title %1 failed with... - + All profile files (*.g5e SGTA* PGTA*) @@ -1332,17 +1427,17 @@ Press 1 for Default View QApplication - + Font - + Selected Font: %1 - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? @@ -1351,7 +1446,7 @@ Press 1 for Default View SavegameDialog - + Savegame Viewer @@ -1371,7 +1466,7 @@ Press 1 for Default View - + Failed at %1 @@ -1420,37 +1515,37 @@ Press 1 for Default View - + &View - + &Export - + &Remove - + &Select - + &Deselect - + Select &All - + &Deselect All @@ -1544,12 +1639,12 @@ Press 1 for Default View - - - - - - + + + + + + Snapmatic Properties @@ -1595,121 +1690,121 @@ 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 - + Extras - + Qualify as Avatar automatically at apply - + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture - + &Apply - + &Cancel - - - + + + Edit - + Yes Yes, should work fine - + No No, could lead to issues - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? - + Patching of Snapmatic Properties failed because of %1 - + Patching of Snapmatic Properties failed because of JSON Error - - - + + + Patching of Snapmatic Properties failed because of I/O Error - - + + Snapmatic Title - - + + New Snapmatic title: - - + + Snapmatic Crew - - + + New Snapmatic crew: @@ -1763,19 +1858,19 @@ Press 1 for Default View - + JSON is incomplete and malformed - + JSON is incomplete - + JSON is malformed @@ -1836,52 +1931,52 @@ Press 1 for Default View - + Edi&t - + Show &In-game - + Hide &In-game - + &Export - + &View - + &Remove - + &Select - + &Deselect - + Select &All - + &Deselect All @@ -1896,6 +1991,29 @@ Press 1 for Default View + + TelemetryDialog + + + %1 User Statistics + + + + + You want help %1 to improve in the future by collection of data? + + + + + Yes, I would like to take part. + + + + + &OK + + + UserInterface @@ -1963,7 +2081,7 @@ Press 1 for Default View - + &About %1 @@ -2019,15 +2137,15 @@ Press 1 for Default View - + Select &GTA V Folder... - - - + + + Select GTA V Folder... @@ -2068,28 +2186,40 @@ Press 1 for Default View - - + + Select Profile - + Open File... - - - - + + + + Open File - + Can't open %1 because of not valid file format + + + + Show In-game + + + + + + Hide In-game + + diff --git a/res/gta5sync_fr.qm b/res/gta5sync_fr.qm index 56814ae602b131e13075830cc2b07a94be60ac1d..26829fd202ec27b5f584ebf656d74cb3e1b73cb6 100644 GIT binary patch delta 1639 zcmXApdr(wm7{;G-_Uz@Hvlmfd4M7qTWkJLR1mq%u2)J^Ui`-1nrKtc-5%mvUyk!!S zx^8A+x`t-T3@M0CTpB<|iEI@O@8vk+h?oXSI@XN6%-Mf_JLi1o{hs%Ip6_eyWw!P* zdm`Ax(|e=bEPfF{=1pLh7Enh@)b0h|?*fwhz#ZQRq@{yv;eZ8Q;2gxfN^t#|z<6F_ zxI5&LAwYr|@(6aYacV7*VPS?SjQ*yKCg-Wv&TdO-@-mP?o5VGWd9AEKnD8D z_~X9=8BMZ~b))pW##+h-Smxj0(!ve{v0>b2PKyCeBUfETeyEGN-FY>jA6M^xjJ9u< zn0Ae;KUD}Q{@@z6~j)F!vT$prjsR^7)d)VG>Zv zmlP8fa(>M#BV{q1FW=V*sK)Wt0U;Ffe!i|F1;}5>_rzG}a18TT3KqhGg!_DdKq%n8 zL|}$!!{}i_GO#Kjd7^Q(m9L0T7Q z7jm9!fr30?C8%TPFNCj>XuWt_qIQPF_-5g}y9+6q{fp2$v<@h&5iZ9vz#K2ZQPBkO zA4m*;Br!5hV#*_--!qFk(g`wP^>X1yzN}O1|AZq}Kw9p@7s<&v%bje@E;)WCj+Eh}Ud%@0ea#3l)0b32J_56qr$@cHT)xOp&Da zXmtY;6V!gwUy#fj>a`|nd#25LNTIjb)wK-WX(_SlIvr^Utx^B+_4eun$TSoZS_Hk;~#2bG!!G>3QeXnx!}DQz7R;UDtUULSU_K^qT;B{+Nmt4mR#nnhlLv#`Om4e=ZXRU8cFj TTxu>~v(c*d_icPq(4+bv$PCE= delta 1583 zcmXApX;2hb6ot<;-OP0NEGmO2hy+oVVG$;vD66dEAe#dyGA<}uCV)mkvpS%$j1g18 z4q_rkF=!dVB8poCQ9#NfL`R7sF~-C)SV{nmSVV(XkxTWjuex8q`|dsGyx!KOXzWsa z9>yf;Dk7Y%L0Ui^4vbM-0W5C^QUbvqdk;u!0Nca@iSA%+#GF%Ld(6NDUgn(l!G(v= zdONuJM2Bo}-^BtG2f*2`0rB=S&CO8NWYE4acpJ9?)5~OL&Vto2c0g7!3}XjmeG9|Q z89;U-3-v$;pB5?Hw6vI6qQCb#0PGp`Es1CY}|g03LrUgx~#u@FbZj{W7y$ zr9BF#q+N=Ss+R$-DT;qIr+_y-nA~f_q|#qZ;SN$|Nh@=BMG!F6Q)XBOb9~DjKx2|Q zJw|4Hk2I+8%$uuWPRyzVG9NMZD<1-p&CJ=eB;vgD%(*rXAo?WJ!un9}`7x7 zV|$0za~?8(cA7}!GUmZCJz(Cnwo%A8f<+Y(RLMZ4&dy%1pN9P%!a1Yuo$<4Leb0RD;a) z5!QBLJFV|wA6uFLy^(#{-9^@4V_#n!>ux#6j_or(=Jdy_09B^UH(qf$H`?HVn3r7P z;Z=ao6Rz5i+DvxgYDUa}-vC!zwuDr4kP7YG#^1Nku*?7g?%A(m)&rq;rGs{E{0~ZD zxR_>{D|Og;GQrN$pq-aBTv^*%L|OSydCK$zm^7$7+Z_yqyjHfgk$&UXDDN+%@QsU9 zaS7zT*-Pcx5dau2tLBZ=(&R@}F+(-v!&+7HaU0ngsw%AchU`6{THl&ae)y|O-S3dT z_f;)zlqFNIs^cmt<)ctNZK?#EwavWKkLwHK8tXdI_eU9;rRIr-cW!q!v+aUaTDbX(@qCShS8 zU8LAiA^WKo$lWa!a#O7ddf~zpN4huOLRWtYV7V+@k5K?~O9k8JGXTF<=G-`$;WaW- z>rzX*L@i-^la#ksBIL8CbN3~8?G7jtgWkP#K)b}bFz zcuOn~F~f?*#bP;KPK4i+nOY`RI?RqvwR6wJy@~3CPOI@v?KUCPL%#_3GS{*eydq92h z=_ZP8srpBg6QC&7xb#tak`HMNcWHm}s5EFl*&0)Jn-aHDW7d-i9vfwb7HH02qR6|k zGL1Vm?MobKsCG?n5!LYZ)UqNC?fXD`X2m+dt665mkk0unI@>r+7db?3C8X+#x=#a1 zVY&^UnW^U*-I38uipFDI-F2#??{n0(Um$e?M|8snDEiR}RBf4a<6dRHL1B>G6J4bJ d#z{(D{JR_0Z!DG+Q67yig0>hM59B^l{SP9KzheLZ diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts index 2e003d5..5f2e1bb 100644 --- a/res/gta5sync_fr.ts +++ b/res/gta5sync_fr.ts @@ -106,7 +106,7 @@ Copyright &copy; <a href="%5">%6</a> %7<br/> %8 est distribué sous license <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - + &Close &Fermer @@ -183,38 +183,37 @@ Pictures and Savegames et les fichiers de sauvegarde de Grand Theft Auto V - + Release - + Release Candidate - - + Daily Build - + Developer - + Beta - + Alpha - + Custom Personnalisé @@ -294,9 +293,9 @@ et les fichiers de sauvegarde de Grand Theft Auto V ImageEditorDialog - - - + + + Snapmatic Image Editor @@ -307,7 +306,7 @@ et les fichiers de sauvegarde de Grand Theft Auto V - + Capacity: %1 @@ -332,17 +331,17 @@ et les fichiers de sauvegarde de Grand Theft Auto V - + Patching of Snapmatic Image failed because of I/O Error - + Patching of Snapmatic Image failed because of Image Error - + Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality. @@ -397,8 +396,8 @@ et les fichiers de sauvegarde de Grand Theft Auto V - - + + Background Colour: <span style="color: %1">%1</span> @@ -409,7 +408,7 @@ et les fichiers de sauvegarde de Grand Theft Auto V ... - + Background Image: %1 @@ -445,43 +444,43 @@ et les fichiers de sauvegarde de Grand Theft Auto V - - + + Background Image: - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! - + Snapmatic Avatar Zone - + Select Colour... - + File Background Image: File @@ -509,7 +508,7 @@ When you want to use it as Avatar the image will be detached! - + JSON Error @@ -695,27 +694,96 @@ Y: %2 Nom - + + Feedback + + + + + Participation + + + + + + Participate in %1 User Statistics + + + + + Categorys + + + + + Hardware, Application and OS Specification + + + + + System Language Configuration + + + + + Application Configuration + + + + + Other + + + + + + + Participation ID: %1 + + + + + &Copy + + + + + + User Feedback + + + + + Limit: 1 message/day + + + + + &Send + + + + Language for Areas - + Style - + Style: - + Font Police - + Always use Message Font (Windows 2003 and earlier) @@ -724,56 +792,56 @@ Y: %2 Langue - + Interface - + Language for Interface - - - - + + + + Current: %1 - + Use Default Style (Restart) - + Sync Synchronisation - + Sync is not implemented at current time La synchronisation n'est pas encore implémentée - + Apply changes - + &OK OK, Cancel, Apply &OK - + Discard changes - + &Cancel OK, Cancel, Apply &Annuler @@ -789,40 +857,55 @@ Y: %2 Système - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". - + System System in context of System default Système - + %1 (Closest to Interface) Next closest language compared to the Interface - + Auto Automatic language choice. - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. + + + View %1 User Statistics Online + + + + + Not registered + + + + + A feedback message have to between 3-1024 characters long + + The new Custom Folder will initialize after you restart %1. Le répertoire personnalisé sera actif au prochain lancement de %1. @@ -832,15 +915,15 @@ Y: %2 Le changement de langue sera actif au prochain lancement de %1. - + No Profile No Profile, as default Aucun profil - - - + + + Profile: %1 Profil : %1 @@ -1007,7 +1090,7 @@ Y: %2 - + Export as &Picture... @@ -1017,7 +1100,7 @@ Y: %2 - + Export as &Snapmatic... @@ -1027,24 +1110,24 @@ Y: %2 - + &Overwrite Image... - + &Edit Properties... Modifier les &propriétés... - + Open &Map Viewer... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1053,32 +1136,32 @@ 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 @@ -1097,7 +1180,7 @@ Appuyer sur 1 pour le mode par défaut Aucun crew - + Unknown Location Emplacement inconnu @@ -1132,7 +1215,7 @@ Appuyer sur 1 pour le mode par défaut - + Open &JSON Editor... @@ -1155,38 +1238,38 @@ Appuyer sur 1 pour le mode par défaut - + &Apply A&ppliquer - + &Cancel - + Add Players... - + Failed to add more Players because the limit of Players are %1! - - + + Add Player... - + Enter Social Club Player ID - + Failed to add Player %1 because Player %1 is already added! @@ -1245,49 +1328,49 @@ Appuyer sur 1 pour le mode par défaut Photos activées : %1 sur %2 - + Loading... Chargement... - + Snapmatic Loader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 - - - - + + + + Import... Importer... - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + + Import Importer @@ -1296,40 +1379,40 @@ Appuyer sur 1 pour le mode par défaut Fichiers de profil GTA (SGTA* PGTA*) - - + + Savegames files (SGTA*) Fichiers de sauvegarde GTA (SGTA*) - - + + Snapmatic pictures (PGTA*) Photos Snapmatic (PGTA*) - - - + + + All image files (%1) - - - - + + + + All files (**) Tous les fichiers (**) - - + + Import file %1 of %2 files Importation du fichier %1 sur %2 - + Import failed with... %1 @@ -1338,26 +1421,26 @@ Appuyer sur 1 pour le mode par défaut %1 - - - + + + No valid file is selected Fichier invalide - + Importable files (%1) - - + + Failed to read Snapmatic picture Impossible d'ouvrir la photo Snapmatic - - + + Failed to read Savegame file Impossible de lire le fichier de sauvegarde @@ -1378,137 +1461,133 @@ Appuyer sur 1 pour le mode par défaut Tous les fichiers image (*.jpg *.png) - - - + + + Can't import %1 because file can't be open - - - + + + Can't import %1 because file can't be parsed properly - + Can't import %1 because file format can't be detected - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Impossible d'importer la photo Snapmatic,nom de fichier incorrect (PGTA*, *.g5e) - + Failed to import the Snapmatic picture, the picture is already in the game Impossible d'importer la photo Snapmatic, un fichier du même nom existe déjà - + Failed to import the Snapmatic picture, can't copy the file into profile Impossible d'importer la photo Snapmatic, impossible de copier le fichier dans le profil - + Failed to import the Savegame, can't copy the file into profile Impossible d'importer la sauvegarde, impossible de copier le fichier dans le profil - + Failed to import the Savegame, no Savegame slot is left Impossible d'importer la sauvegarde, aucun emplacement libre - - Export selected - Exporter la sélection + Exporter la sélection - - + + JPG pictures and GTA Snapmatic Images JPG et GTA Snapmatic - - + + JPG pictures only Images JPG seulement - - + + GTA Snapmatic only GTA Snapmatic seulement - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1Exporter les photos Snapmatic%2<br><br>Les fichiers JPG permettent d'ouvrir les photos avec une visionneuse d'images<br>Les GTA Snapmatic permettent d'importer les photos dans le jeu<br><br>Exporter comme : - - - + + + + + Export selected... Exporter la sélection... - + Initialising export... - - - - - - - - - - - Snapmatic Mass Tool + + + Qualify as Avatar - - - - - You don't have any Snapmatics selected! + + + + + + + No Snapmatic pictures are selected - - - - + + + + Patch selected... - - - - - - - - + + + + + + + + Patch file %1 of %2 files - - - - + + + + + + %1 failed with... %2 @@ -1516,35 +1595,55 @@ Appuyer sur 1 pour le mode par défaut - + Qualify %1 failed with... - + + + Change Players... + + + + Change Players %1 failed with... - + + + + Change Crew... + + + + Failed to enter a valid Snapmatic Crew ID - + Change Crew %1 failed with... - + + + + Change Title... + + + + Failed to enter a valid Snapmatic title - + Change Title %1 failed with... @@ -1554,7 +1653,7 @@ Appuyer sur 1 pour le mode par défaut Initialisation de l'export... - + Export failed with... %1 @@ -1563,36 +1662,36 @@ Appuyer sur 1 pour le mode par défaut %1 - - + + No Snapmatic pictures or Savegames files are selected Aucun fichier de sauvegarde ou photo Snapmatic sélectionné - - - + + + Remove selected Supprimer la sélection - + You really want remove the selected Snapmatic picutres and Savegame files? Supprimer la sélection ? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files Impossible de 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) @@ -1600,17 +1699,17 @@ Appuyer sur 1 pour le mode par défaut QApplication - + Font Police - + Selected Font: %1 Police sélectionnée : %1 - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? @@ -1619,7 +1718,7 @@ Appuyer sur 1 pour le mode par défaut SavegameDialog - + Savegame Viewer Gestionnaire de sauvegardes @@ -1639,7 +1738,7 @@ Appuyer sur 1 pour le mode par défaut &Fermer - + Failed at %1 Échec de %1 @@ -1688,7 +1787,7 @@ Appuyer sur 1 pour le mode par défaut Supprimer - + &Export &Exporter @@ -1779,32 +1878,32 @@ Appuyer sur 1 pour le mode par défaut Impossible de supprimer %1 - + &View &Voir - + &Remove &Supprimer - + &Select &Sélectionner - + &Deselect &Déselectionner - + Select &All Sélectionner to&ut - + &Deselect All &Déselectionner tout @@ -1814,12 +1913,12 @@ Appuyer sur 1 pour le mode par défaut - - - - - - + + + + + + Snapmatic Properties Propriétés Snapmatic @@ -1864,8 +1963,8 @@ Appuyer sur 1 pour le mode par défaut Meme - - + + Snapmatic Title Titre Snapmatic @@ -1875,117 +1974,117 @@ 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 - + Player: %1 (%2) One Player is inserted here - - + + Appropriate: %1 Valide : %1 - + Extras Extras - + Qualify as Avatar automatically at apply Qualifier comme Avatar - + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture Qualifier comme Avatar permet d'utiliser cette image en tant que photo de profil sur le Social Club - + &Apply A&ppliquer - + &Cancel A&nnuler - - - + + + Edit Éditer - + Yes Yes, should work fine Oui, devrait fonctionner Oui - + No No, could lead to issues Non, pourrait causer des erreurs Non - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? - + Patching of Snapmatic Properties failed because of %1 - + Patching of Snapmatic Properties failed because of JSON Error - - - + + + 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 : @@ -2039,19 +2138,19 @@ Appuyer sur 1 pour le mode par défaut - + JSON is incomplete and malformed - + JSON is incomplete - + JSON is malformed @@ -2122,17 +2221,17 @@ Appuyer sur 1 pour le mode par défaut Impossible de supprimer %1 - + Edi&t Édi&ter - + Show &In-game &Visible en jeu - + Hide &In-game &Invisible en jeu @@ -2141,7 +2240,7 @@ Appuyer sur 1 pour le mode par défaut Modifier les &propriétés... - + &Export &Exporter @@ -2154,36 +2253,59 @@ Appuyer sur 1 pour le mode par défaut Exporter comme &GTA Snapmatic... - + &View &Voir - + &Remove S&upprimer - + &Select &Sélectionner - + &Deselect &Déselectionner - + Select &All Sélectionner &tout - + &Deselect All &Déselectionner tout + + TelemetryDialog + + + %1 User Statistics + + + + + You want help %1 to improve in the future by collection of data? + + + + + Yes, I would like to take part. + + + + + &OK + &OK + + UserInterface @@ -2337,15 +2459,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... @@ -2410,34 +2532,46 @@ Appuyer sur 1 pour le mode par défaut - + &About %1 &À propos de %1 - - + + Select Profile Sélectionner un profil - + Open File... Ouvrir... - - - - + + + + Open File Ouvrir - + Can't open %1 because of not valid file format Impossible d'ouvrir %1, format invalide + + + + Show In-game + + + + + + Hide In-game + + diff --git a/res/gta5sync_ru.qm b/res/gta5sync_ru.qm index bf22251be5f1d415a6bb24ad87e3d97fe0de8278..4ccaf028aa5d8b91b86d8747b6058be8898e9ef1 100644 GIT binary patch delta 1791 zcmXApdsI|a6vn@M=iZt7m|;Sm662_)JS7wmOhFJ)0`Y+ej!Md7P?U!-K(#VQLo13X zx}mwmWhOpS@{N%QEnruKEO zfYsng z{3Vo_jiA=2fRIQ8jT~M$MP;rQ(NPINd^{4Yp8={HqQ&n;^MSA(jC3;?STIIq_OQxzJY#x) zJm9^Y$xC-qE$NIc>`%aw&Ad?mG~l1e)K+{4cs$EoNh$*7e8T)@I1bFdp?t-7iRowwG5j*MG=Xj70;qx#wtJhA`cuj}N@#ukWcHixWWdzP-rny{J#=Ls#8WE9eeB<%Za~%> z8ja5p!0n7i-2XYSx<%u8@n0a&S2Mbd_L~kiSc_r12GCT&^a+VjNIxQ+Q3J zsO1($?FQ0kDhV1tyNPQI-bV&F!ZjYwBtvv_M=LV`c|F%6XH)M(xVGKl#G9O>;%#6; znaaiFlacSdV$RWAN$YF4pE6s3M=Q9Yz8<21dw7P5DL&3~Bl~7=eD zmpUlv^j^O3-5g;0JG?z)35odxUmxrwmk#lJhSPwU8opt(g(NpC9-P_ryf!tHToqfT z&0&jyCeKzBU(E-?0ET~l8; zkl3l~=pgmI&+Bfbq>`Va1%6H!u;#2_>Iwm77=^gu1`?u4m^Da~vNlDSchCXk#tDUc z_5umJh2nNAb@6Rs)3|HYl>woxgZ#MioY2usadfRh*Lf09iRWGI1)|qiu@qYnCk|2P z^B#x+&(c{vqjI#TIJGK)VkV1ox7SdvJH(XQZZco4n5jESp1&hzZ>O9yYQ%!X-zk?Z zVnH5}uM1lCN+!IAtZj@0kNTdK44#ePVA1glLfuS%PW$A z6(;d24I&<2Dlz?(NNSqI42>B2CytLp#M=3JoXmmexws^XiGo zD%X^&EZHEX^wYkK+fv3o7ogN%TKZ!h5Ii7do!$r~RXfgZ`BiH6^#GpwM(P9y>a>%3^NSDNJdpe?jMq%x;l{-|;c;MXU&6?RdXSBZ4Kv|2tN(+@;3 zvZIWyE@_whc9EP}@$!{Adh1q2$$zz6Cofd$T(dUl#Q`TUvsCZ?GEK8KTyHw-LoInp zALRcBrLEVmdW_`J-PPNYiE%yps`xq@oQL}DljvLa*Vi-jzRtg{GW!F4gOPGgs?wji zXQMgUs5o_IdyT#2t%jE19;M6_`Zl-KVyRnCsXCoZ@N5s@ix6dNiL^W_Cnb<-Eb2P}WR6i<1+R&b#>2f7);G-9*-V1XI%B+i zsR@|4-{{;K0xaH1v2C`K!-Ct4leUCglN80%TQa6u3#^6KveM@ib98{xROWVai!EII EAGP577XSbN delta 1736 zcmXAqcT^Nt6vn@qonfc!vLa;z0TC-rL;))h+9HChNKwHCQWT^}5zR?-HE0qOVnRl& zs4)UIQczJWaE>6cvmPwbXcA-e4`Pc3EQFNHnZJJf=FPl&-*>-z_rKRn(;McC$?W_& zl_4&b3mq-{z*X!4Yy@z1?*dtCz@6fNxoP06#ATDfT^$Y#r~`L132;tVIqeGg;2>b$ zK=3g{m)+pMj|2vJg14RnQi4?GT!OGCfxfGR=hzQ`Kwp))$?)!vV_8}S@BTnbFT%S& zP+l&)ANvz`z^8dC;5QyV{RhTxRhgNGkO?Lr@&HU(*MS0H%6ek#PQ;A+4d8Dh?hviB zcfm4yCgA!t)~wkJ7!`c_T_;^^7-}=^fN6cG-_Q=Fm~rvQ!}EgaK)^Oey6X$fSf?^0 zP36*1v2i}MrN_`zFm~~VRqiR z9#Zr)o4=lvD|o5!th@6zcK?crz`zcb0Z&w>Iw~P-sKuPb9voLiYS^&#=?{SfFSfCf zijlEyz0OYJ--$YV!hFbP- ze|sRkN27817O+355$kRMOFT4A=l=z~T{X_7^q#xBCTMvN?2)U{B-eiocw}mF$~=I= zdPT1pFXnOa6Ltf$Y8A6)q*%_?`__`g4$3Nx(Q6aevOAER5W!i?HUYy+RVHSu%)Y@{ zo61S}4y9RRocagP^}iL>$2;ub0*DbR{WtQd9j(CZ06zb#3}EtB-r|=`I*sP5eS3hk z1^k}gBp|e#uUVTyYR*yIICr~$Y!c>^X~Le_WUz%mT!&(&r+2hcPbp;^qIKZ*0Yy>D zDsCk6zEaDLw5-+EoS_TnkJUEBJp~5;pl$371g3gvTU$xkx6W$snaQul5P^?wCn1Lj zZtZ?R@Nyx%w+4_Kg@_l_FS#EI)An0|%zZ-sp1nXcFBG21q5|~_YdmfPi)IQftz@^f z;X-Q@ouh3Q+RrWmlsMkbu2VGr97aVb5J$YGqAp&jR+#k`p36uDW<%O>(wV)3i7!1ViK>6fIO@Jjq7`WMo_Nv!ZAODxul zHD{)iHC~Gs!Yshd)#BB8u~esW@g_ADhRu}R$>ak^r*@w22RN=>eg)P^SM(xc@-Ns4qii)t|O zJ?TmW1DMZA*0Q4%WtK|wXDVmhRhe-@vhJhX+uf6Hx+jyjrb)LBz5txUr3Z&ejTk4X z>rx_h+YXsIwwl%tWKEa@&8=6m^HFN!UYmiIPPyEcF6ibaR|F+diBHKD(GO{I3{#oW zEm!uf1@v8Vm62L-VYyuGvyS!`sLUKKpC}(h4csZW>fz(KsVaWrn@3#z2Y3 zKGU6iRzf{+T-WBy()Xdd%W+01k}%M&TkkoZ?B_61?|p}kN{?4Y3C@;?wb#kQ27QtP zRW86wW!zl-@#Yj@)NPefJM?WSj=-c8{euFsbnty!P9_~fUfRBW{yxo)Slgp%Ily?6 z%9&$qn+s^)f0Dr^m(q#~HiW*QQm0lJ78Ui-Uq*tVpz|;=f1T1S7)R_h9J)fMx&|29 znn=CK!G^0HjlhUHL(dLBY8-}+E~!7#E7%7sLGuPHJ|=tRaha$!m{u+;EG|{z6NVnq No9>M|;!=_&{ttgt^6mft diff --git a/res/gta5sync_ru.ts b/res/gta5sync_ru.ts index 44a51c4..05d2da5 100644 --- a/res/gta5sync_ru.ts +++ b/res/gta5sync_ru.ts @@ -58,7 +58,7 @@ Running with Qt %6<br/> %7 - + &Close &Закрыть @@ -143,38 +143,37 @@ Pictures and Savegames Grand Theft Auto V Snapmatic картинок и сохранений - + Release Релиз - + Release Candidate Предварительный выпуск - - + Daily Build Дневная сборка - + Developer Разработчик - + Beta Бета - + Alpha Альфа - + Custom Не известен контекст Своя @@ -256,9 +255,9 @@ Grand Theft Auto V Snapmatic картинок и сохранений ImageEditorDialog - - - + + + Snapmatic Image Editor @@ -269,7 +268,7 @@ Grand Theft Auto V Snapmatic картинок и сохранений - + Capacity: %1 @@ -294,17 +293,17 @@ Grand Theft Auto V Snapmatic картинок и сохранений&Закрыть - + Patching of Snapmatic Image failed because of I/O Error - + Patching of Snapmatic Image failed because of Image Error - + Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality. @@ -359,8 +358,8 @@ Grand Theft Auto V Snapmatic картинок и сохранений - - + + Background Colour: <span style="color: %1">%1</span> Цвет фона: <span style="color: %1">%1</span> @@ -371,7 +370,7 @@ Grand Theft Auto V Snapmatic картинок и сохранений... - + Background Image: %1 @@ -408,43 +407,43 @@ Grand Theft Auto V Snapmatic картинок и сохранений - - + + Background Image: - - + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Ты точно хочешь использовать квадратное изображение вне зоны аватарки? Если это аватар, то изображение будет обрезано! - + Snapmatic Avatar Zone Зона Snapmatic Аватарки - + Select Colour... Выбрать цвет... - + File Background Image: File Файл @@ -476,7 +475,7 @@ When you want to use it as Avatar the image will be detached! &Закрыть - + JSON Error @@ -663,27 +662,96 @@ Y: %2 Имя - + + Feedback + + + + + Participation + + + + + + Participate in %1 User Statistics + + + + + Categorys + + + + + Hardware, Application and OS Specification + + + + + System Language Configuration + + + + + Application Configuration + + + + + Other + + + + + + + Participation ID: %1 + + + + + &Copy + + + + + + User Feedback + + + + + Limit: 1 message/day + + + + + &Send + + + + Language for Areas - + Style - + Style: - + Font Шрифт - + Always use Message Font (Windows 2003 and earlier) @@ -692,56 +760,56 @@ Y: %2 Язык - + Interface - + Language for Interface - - - - + + + + Current: %1 - + Use Default Style (Restart) - + Sync Sync - + Sync is not implemented at current time Синхронизация пока ещё не реализована - + Apply changes Применить изменения - + &OK OK, Cancel, Apply &ОК - + Discard changes Отвергнуть изменения - + &Cancel OK, Cancel, Apply От&мена @@ -758,40 +826,55 @@ Y: %2 %1 (%2 если имеется) - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". - + System System in context of System default Система - + %1 (Closest to Interface) Next closest language compared to the Interface - + Auto Automatic language choice. - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Другая папка будет загружена после перезапуска %1. + + + View %1 User Statistics Online + + + + + Not registered + + + + + A feedback message have to between 3-1024 characters long + + The new Custom Folder will initialize after you restart %1. Другая папка будет загружена после перезапуска %1. @@ -801,15 +884,15 @@ Y: %2 Язык изменится после перезапуска %1. - + No Profile No Profile, as default Нет профиля - - - + + + Profile: %1 Профиль: %1 @@ -890,7 +973,7 @@ Y: %2 - + Export as &Picture... Экспортировать как &картинку... @@ -900,7 +983,7 @@ Y: %2 - + Export as &Snapmatic... Экспортировать как &Snapmatic... @@ -914,24 +997,24 @@ Y: %2 - + &Overwrite Image... - + &Edit Properties... &Изменить свойства... - + Open &Map Viewer... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -940,32 +1023,32 @@ Arrow Keys - Navigate Стрелки - Навигация - - + + Snapmatic Picture Viewer Просмотрщик фотографий Snapmatic - - + + Failed at %1 Ошибка при %1 - - + + No Crew Вне банды - - - + + + No Players Игроков нет - + Avatar Preview Mode Press 1 for Default View Режим просмотра аватарок @@ -980,7 +1063,7 @@ Press 1 for Default View Без группы - + Unknown Location Неизвестное место @@ -1119,7 +1202,7 @@ Press 1 for Default View - + Open &JSON Editor... @@ -1142,38 +1225,38 @@ Press 1 for Default View - + &Apply &Применить - + &Cancel - + Add Players... - + Failed to add more Players because the limit of Players are %1! - - + + Add Player... - + Enter Social Club Player ID - + Failed to add Player %1 because Player %1 is already added! @@ -1228,49 +1311,49 @@ Press 1 for Default View Закрыть профиль - + Loading... Загрузка... - + Snapmatic Loader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 - - - - + + + + Import... Импортировать... - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + + Import Импортировать @@ -1279,33 +1362,33 @@ Press 1 for Default View Все файлы профиля (SGTA* PGTA*) - - + + Savegames files (SGTA*) Файлы сохранения (SGTA*) - - + + Snapmatic pictures (PGTA*) Картинка Snapmatic (PGTA*) - - - - + + + + All files (**) Все файлы (**) - - + + Import file %1 of %2 files Импортируются файлы %1 из %2 - + Import failed with... %1 @@ -1314,14 +1397,14 @@ Press 1 for Default View %1 - - + + Failed to read Snapmatic picture Не удалось загрузить картинку Snapmatic - - + + Failed to read Savegame file Не удалось загрузить файл сохранения @@ -1330,9 +1413,9 @@ Press 1 for Default View Не получилось импортировать %1 из-за неправильного формата файла - - - + + + No valid file is selected Выбранный файл неверен @@ -1350,154 +1433,150 @@ Press 1 for Default View Все изображения (*.jpg *.png) - + Importable files (%1) Файлы для импорта (%1) - - - + + + All image files (%1) Все файлы изображений (%1) - - - + + + Can't import %1 because file can't be open - - - + + + Can't import %1 because file can't be parsed properly Не получилось импортировать %1, файл не может быть правильно обработан - + Can't import %1 because file format can't be detected Не получилось импортировать %1, не удалось определить формат файла - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Не удалось импортировать картинку Snapmatic, название не начинается с PGTA или не заканчивается с .g5e - + Failed to import the Snapmatic picture, the picture is already in the game Не удалось импортировать картинку Snapmatic, картинка уже в игре - + Failed to import the Snapmatic picture, can't copy the file into profile Не удалось импортировать картинку Snapmatic, не получилось скопировать файл в профиль - + Failed to import the Savegame, can't copy the file into profile Не удалось импортировать сохранение, не получилось скопировать файл в профиль - + Failed to import the Savegame, no Savegame slot is left Не удалось импортировать сохранение, нет пустых ячеек под сохранения - - + + JPG pictures and GTA Snapmatic Картинки JPG и GTA Snapmatic - - + + JPG pictures only Только картинки JPG - - + + GTA Snapmatic only Только GTA Snapmatic - + Initialising export... Подготовка к экспорту... - - + + No Snapmatic pictures or Savegames files are selected Не выделены ни один Snapmatic или сохранение - - - + + + Remove selected Снять выделение - + You really want remove the selected Snapmatic picutres and Savegame files? Точно ли хочешь удалить выбранные картинки Snapmatic и файлы сохранений? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files Не удалось удалить полностью выбранные картинки Snapmatic и/или файлы сохранений - - - - - - - - - - - Snapmatic Mass Tool + + + Qualify as Avatar - - - - - You don't have any Snapmatics selected! + + + + + + + No Snapmatic pictures are selected - - - - + + + + Patch selected... - - - - - - - - + + + + + + + + Patch file %1 of %2 files - - - - + + + + + + %1 failed with... %2 @@ -1505,35 +1584,55 @@ Press 1 for Default View - + Qualify %1 failed with... - + + + Change Players... + + + + Change Players %1 failed with... - + + + + Change Crew... + + + + Failed to enter a valid Snapmatic Crew ID - + Change Crew %1 failed with... - + + + + Change Title... + + + + Failed to enter a valid Snapmatic title - + Change Title %1 failed with... @@ -1555,20 +1654,20 @@ Press 1 for Default View Не получилось имортировать копию сохранения, потому что не осталось свободных под них слотов - - Export selected - Экспортировать выделенное + Экспортировать выделенное - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1Эскпортировать картинки Snapmatic%2<br><br>Картинки JPG можно открыть любым просмотрщиком<br>Картинки формата GTA Snapmatic можно снова импортировать в игру<br><br>Экспортировать как: - - - + + + + + Export selected... Экпортировать выделенное... @@ -1577,7 +1676,7 @@ Press 1 for Default View Подготавливаю эскпорт... - + Export failed with... %1 @@ -1593,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) @@ -1607,17 +1706,17 @@ Press 1 for Default View QApplication - + Font Шрифт - + Selected Font: %1 Выбранный шрифт: %1 - + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? @@ -1626,7 +1725,7 @@ Press 1 for Default View SavegameDialog - + Savegame Viewer Просмотрщик сохранений @@ -1654,7 +1753,7 @@ Press 1 for Default View Закрыть - + Failed at %1 Ошибка при %1 @@ -1754,32 +1853,32 @@ Press 1 for Default View Не удалось удалить сохранение %1 - + &View &Просмотр - + &Remove &Удалить - + &Select &Выбрать - + &Deselect Сн&ять выбор - + Select &All В&ыбрать все - + &Deselect All Снять выбо&р со всех @@ -1789,7 +1888,7 @@ Press 1 for Default View Копировать сохранение - + &Export &Экспортировать @@ -1849,12 +1948,12 @@ Press 1 for Default View - - - - - - + + + + + + Snapmatic Properties Свойства Snapmatic @@ -1895,7 +1994,7 @@ Press 1 for Default View Значения в Snapmatic - + Crew: %1 (%2) Банда: %1 (%2) @@ -1905,116 +2004,116 @@ Press 1 for Default View Meme - - + + Snapmatic Title Заголовок Snapmatic - + Title: %1 (%2) Заголовок: %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here - + Player: %1 (%2) One Player is inserted here - - + + Appropriate: %1 Подходит: %1 - + Extras Дополнительно - + Qualify as Avatar automatically at apply При применении настроек пометить как аватар - + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture C меткой аватара можно загрузить эту картинку Snapmatic в профиль на Social Club - + &Apply &Применить - + &Cancel &Отмена - - - + + + Edit Правка - + Yes Yes, should work fine Да - + No No, could lead to issues Нет - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? - + Patching of Snapmatic Properties failed because of %1 - + Patching of Snapmatic Properties failed because of JSON Error - - - + + + Patching of Snapmatic Properties failed because of I/O Error Не удалось измененить свойства Snapmatic из-за проблемы ввода/вывода - - + + New Snapmatic title: Новый заголовок Snapmatic: - - + + Snapmatic Crew Банда на Snapmatic - - + + New Snapmatic crew: Новая банда на Snapmatic: @@ -2068,19 +2167,19 @@ Press 1 for Default View - + JSON is incomplete and malformed - + JSON is incomplete - + JSON is malformed @@ -2141,17 +2240,17 @@ Press 1 for Default View Не удалось удалить %1 из колелкции картинок Snapmatic - + Edi&t &Правка - + Show &In-game Показывать в &игре - + Hide &In-game Ск&рыть в игре @@ -2160,7 +2259,7 @@ Press 1 for Default View &Изменить свойства... - + &Export &Экспорт @@ -2173,32 +2272,32 @@ Press 1 for Default View Экс&портировать как GTA Snapmatic... - + &View По&казать - + &Remove У&далить - + &Select &Выделить - + &Deselect Сн&ять выделение - + Select &All В&ыбрать все - + &Deselect All Снять выбо&р со всех @@ -2213,6 +2312,29 @@ Press 1 for Default View Экспорт картинки + + TelemetryDialog + + + %1 User Statistics + + + + + You want help %1 to improve in the future by collection of data? + + + + + Yes, I would like to take part. + + + + + &OK + &ОК + + UserInterface @@ -2299,7 +2421,7 @@ Press 1 for Default View - + Select &GTA V Folder... Выбрать &папку GTA V... @@ -2431,16 +2553,16 @@ Press 1 for Default View - - + + Select Profile Выбор профиля - - - + + + Select GTA V Folder... Выбрать папку GTA V... @@ -2453,25 +2575,25 @@ Press 1 for Default View - + &About %1 &О программе %1 - + Open File... Открыть файл... - - - - + + + + Open File Открыть файл - + Can't open %1 because of not valid file format Не удалось открыть %1 из-за неверного формата файла @@ -2488,5 +2610,17 @@ Press 1 for Default View GTA V Folder not found! Папка GTA V не была найдена! + + + + Show In-game + + + + + + Hide In-game + +