added ability to read GTA V game language
This commit is contained in:
parent
c29cc44717
commit
39f20aca9d
30 changed files with 3131 additions and 1856 deletions
|
@ -15,11 +15,7 @@ docker run --rm \
|
|||
export GTA5VIEW_EXECUTABLE=gta5view-${EXECUTABLE_VERSION}${EXECUTABLE_ARCH}.exe && \
|
||||
|
||||
# Upload Assets to Dropbox
|
||||
if [ "${PACKAGE_CODE}" == "Dropbox" ]; then
|
||||
${PROJECT_DIR}/.ci/dropbox_uploader.sh mkdir gta5view-builds/${PACKAGE_VERSION}
|
||||
${PROJECT_DIR}/.ci/dropbox_uploader.sh upload ${PROJECT_DIR}/assets/${GTA5VIEW_EXECUTABLE} gta5view-builds/${PACKAGE_VERSION}/${GTA5VIEW_EXECUTABLE} && \
|
||||
rm -rf ${GTA5VIEW_EXECUTABLE}
|
||||
elif [ "${PACKAGE_CODE}" == "gta5-mods" ]; then
|
||||
if [ "${PACKAGE_CODE}" == "gta5-mods" ]; then
|
||||
${PROJECT_DIR}/.ci/dropbox_uploader.sh mkdir gta5-mods/${PACKAGE_VERSION}
|
||||
${PROJECT_DIR}/.ci/dropbox_uploader.sh upload ${PROJECT_DIR}/assets/${GTA5VIEW_EXECUTABLE} gta5-mods/${PACKAGE_VERSION}/${GTA5VIEW_EXECUTABLE} && \
|
||||
rm -rf ${GTA5VIEW_EXECUTABLE}
|
||||
|
|
|
@ -22,11 +22,6 @@ matrix:
|
|||
- BUILD_SCRIPT=windows_docker.sh
|
||||
- QT_SELECT=qt5-x86_64-w64-mingw32
|
||||
- RELEASE_LABEL="Windows 64-Bit Portable"
|
||||
- EXECUTABLE_ARCH=_x64
|
||||
- env:
|
||||
- BUILD_SCRIPT=windows_docker.sh
|
||||
- QT_SELECT=qt5-x86_64-w64-mingw32
|
||||
- PACKAGE_CODE=Dropbox
|
||||
- env:
|
||||
- BUILD_SCRIPT=windows_docker.sh
|
||||
- QT_SELECT=qt5-x86_64-w64-mingw32
|
||||
|
|
286
AppEnv.cpp
286
AppEnv.cpp
|
@ -206,6 +206,292 @@ QUrl AppEnv::getPlayerFetchingUrl(QString crewID, int pageNumber)
|
|||
return getPlayerFetchingUrl(crewID, QString::number(pageNumber));
|
||||
}
|
||||
|
||||
// Game Stuff
|
||||
|
||||
GameVersion AppEnv::getGameVersion()
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
QString argumentValue;
|
||||
#ifdef _WIN64
|
||||
argumentValue = "\\WOW6432Node";
|
||||
#endif
|
||||
QSettings registrySettingsSc(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Grand Theft Auto V").arg(argumentValue), QSettings::NativeFormat);
|
||||
QString installFolderSc = registrySettingsSc.value("InstallFolder", "").toString();
|
||||
QDir installFolderScDir(installFolderSc);
|
||||
bool scVersionInstalled = false;
|
||||
if (!installFolderSc.isEmpty() && installFolderScDir.exists())
|
||||
{
|
||||
#ifdef GTA5SYNC_DEBUG
|
||||
qDebug() << "gameVersionFoundSocialClubVersion";
|
||||
#endif
|
||||
scVersionInstalled = true;
|
||||
}
|
||||
|
||||
QSettings registrySettingsSteam(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\GTAV").arg(argumentValue), QSettings::NativeFormat);
|
||||
QString installFolderSteam = registrySettingsSteam.value("installfoldersteam", "").toString();
|
||||
if (installFolderSteam.right(5) == "\\GTAV")
|
||||
{
|
||||
installFolderSteam = installFolderSteam.remove(installFolderSteam.length() - 5, 5);
|
||||
}
|
||||
QDir installFolderSteamDir(installFolderSteam);
|
||||
bool steamVersionInstalled = false;
|
||||
if (!installFolderSteam.isEmpty() && installFolderSteamDir.exists())
|
||||
{
|
||||
#ifdef GTA5SYNC_DEBUG
|
||||
qDebug() << "gameVersionFoundSteamVersion";
|
||||
#endif
|
||||
steamVersionInstalled = true;
|
||||
}
|
||||
|
||||
if (scVersionInstalled && steamVersionInstalled)
|
||||
{
|
||||
return GameVersion::BothVersions;
|
||||
}
|
||||
else if (scVersionInstalled)
|
||||
{
|
||||
return GameVersion::SocialClubVersion;
|
||||
}
|
||||
else if (steamVersionInstalled)
|
||||
{
|
||||
return GameVersion::SteamVersion;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GameVersion::NoVersion;
|
||||
}
|
||||
#else
|
||||
return GameVersion::NoVersion;
|
||||
#endif
|
||||
}
|
||||
|
||||
GameLanguage AppEnv::getGameLanguage(GameVersion gameVersion)
|
||||
{
|
||||
if (gameVersion == GameVersion::SocialClubVersion)
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
QString argumentValue;
|
||||
#ifdef _WIN64
|
||||
argumentValue = "\\WOW6432Node";
|
||||
#endif
|
||||
QSettings registrySettingsSc(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Grand Theft Auto V").arg(argumentValue), QSettings::NativeFormat);
|
||||
QString languageSc = registrySettingsSc.value("Language", "").toString();
|
||||
return gameLanguageFromString(languageSc);
|
||||
#else
|
||||
return GameLanguage::Undefined;
|
||||
#endif
|
||||
}
|
||||
else if (gameVersion == GameVersion::SteamVersion)
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
QString argumentValue;
|
||||
#ifdef _WIN64
|
||||
argumentValue = "\\WOW6432Node";
|
||||
#endif
|
||||
QSettings registrySettingsSteam(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Grand Theft Auto V Steam").arg(argumentValue), QSettings::NativeFormat);
|
||||
QString languageSteam = registrySettingsSteam.value("Language", "").toString();
|
||||
return gameLanguageFromString(languageSteam);
|
||||
#else
|
||||
return GameLanguage::Undefined;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
return GameLanguage::Undefined;
|
||||
}
|
||||
}
|
||||
|
||||
GameLanguage AppEnv::gameLanguageFromString(QString gameLanguage)
|
||||
{
|
||||
if (gameLanguage == "en-US")
|
||||
{
|
||||
return GameLanguage::English;
|
||||
}
|
||||
else if (gameLanguage == "fr-FR")
|
||||
{
|
||||
return GameLanguage::French;
|
||||
}
|
||||
else if (gameLanguage == "it-IT")
|
||||
{
|
||||
return GameLanguage::Italian;
|
||||
}
|
||||
else if (gameLanguage == "de-DE")
|
||||
{
|
||||
return GameLanguage::German;
|
||||
}
|
||||
else if (gameLanguage == "es-ES")
|
||||
{
|
||||
return GameLanguage::Spanish;
|
||||
}
|
||||
else if (gameLanguage == "es-MX")
|
||||
{
|
||||
return GameLanguage::Mexican;
|
||||
}
|
||||
else if (gameLanguage == "pt-BR")
|
||||
{
|
||||
return GameLanguage::Brasilian;
|
||||
}
|
||||
else if (gameLanguage == "ru-RU")
|
||||
{
|
||||
return GameLanguage::Russian;
|
||||
}
|
||||
else if (gameLanguage == "pl-PL")
|
||||
{
|
||||
return GameLanguage::Polish;
|
||||
}
|
||||
else if (gameLanguage == "ja-JP")
|
||||
{
|
||||
return GameLanguage::Japanese;
|
||||
}
|
||||
else if (gameLanguage == "zh-CHS")
|
||||
{
|
||||
return GameLanguage::SChinese;
|
||||
}
|
||||
else if (gameLanguage == "zh-CHT")
|
||||
{
|
||||
return GameLanguage::TChinese;
|
||||
}
|
||||
else if (gameLanguage == "ko-KR")
|
||||
{
|
||||
return GameLanguage::Koreana;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GameLanguage::Undefined;
|
||||
}
|
||||
}
|
||||
|
||||
QString AppEnv::gameLanguageToString(GameLanguage gameLanguage)
|
||||
{
|
||||
if (gameLanguage == GameLanguage::English)
|
||||
{
|
||||
return "en-US";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::French)
|
||||
{
|
||||
return "fr-FR";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::Italian)
|
||||
{
|
||||
return "it-IT";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::German)
|
||||
{
|
||||
return "de-DE";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::Spanish)
|
||||
{
|
||||
return "es-ES";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::Mexican)
|
||||
{
|
||||
return "es-MX";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::Brasilian)
|
||||
{
|
||||
return "pt-BR";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::Russian)
|
||||
{
|
||||
return "ru-RU";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::Polish)
|
||||
{
|
||||
return "pl-PL";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::Japanese)
|
||||
{
|
||||
return "ja-JP";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::SChinese)
|
||||
{
|
||||
return "zh-CHS";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::TChinese)
|
||||
{
|
||||
return "zh-CHT";
|
||||
}
|
||||
else if (gameLanguage == GameLanguage::Koreana)
|
||||
{
|
||||
return "ko-KR";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Undefinied";
|
||||
}
|
||||
}
|
||||
|
||||
bool AppEnv::setGameLanguage(GameVersion gameVersion, GameLanguage gameLanguage)
|
||||
{
|
||||
bool socialClubVersion = false;
|
||||
bool steamVersion = false;
|
||||
if (gameVersion == GameVersion::SocialClubVersion)
|
||||
{
|
||||
socialClubVersion = true;
|
||||
}
|
||||
else if (gameVersion == GameVersion::SteamVersion)
|
||||
{
|
||||
steamVersion = true;
|
||||
}
|
||||
else if (gameVersion == GameVersion::BothVersions)
|
||||
{
|
||||
socialClubVersion = true;
|
||||
steamVersion = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (socialClubVersion)
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
QString argumentValue;
|
||||
#ifdef _WIN64
|
||||
argumentValue = "\\WOW6432Node";
|
||||
#endif
|
||||
QSettings registrySettingsSc(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Grand Theft Auto V").arg(argumentValue), QSettings::NativeFormat);
|
||||
if (gameLanguage != GameLanguage::Undefined)
|
||||
{
|
||||
registrySettingsSc.setValue("Language", gameLanguageToString(gameLanguage));
|
||||
}
|
||||
else
|
||||
{
|
||||
registrySettingsSc.remove("Language");
|
||||
}
|
||||
registrySettingsSc.sync();
|
||||
if (registrySettingsSc.status() != QSettings::NoError)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (steamVersion)
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
QString argumentValue;
|
||||
#ifdef _WIN64
|
||||
argumentValue = "\\WOW6432Node";
|
||||
#endif
|
||||
QSettings registrySettingsSteam(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Grand Theft Auto V Steam").arg(argumentValue), QSettings::NativeFormat);
|
||||
if (gameLanguage != GameLanguage::Undefined)
|
||||
{
|
||||
registrySettingsSteam.setValue("Language", gameLanguageToString(gameLanguage));
|
||||
}
|
||||
else
|
||||
{
|
||||
registrySettingsSteam.remove("Language");
|
||||
}
|
||||
registrySettingsSteam.sync();
|
||||
if (registrySettingsSteam.status() != QSettings::NoError)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Screen Stuff
|
||||
|
||||
qreal AppEnv::screenRatio()
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
|
|
10
AppEnv.h
10
AppEnv.h
|
@ -22,6 +22,9 @@
|
|||
#include <QString>
|
||||
#include <QUrl>
|
||||
|
||||
enum class GameVersion : int { NoVersion = 0, SocialClubVersion = 1, SteamVersion = 2, BothVersions = 3 };
|
||||
enum class GameLanguage : int { Undefined = 0, English = 1, French = 2, Italian = 3, German = 4, Spanish = 5, Mexican = 6, Brasilian = 7, Russian = 8, Polish = 9, Japanese = 10, SChinese = 11, TChinese = 12, Koreana = 13 };
|
||||
|
||||
class AppEnv
|
||||
{
|
||||
public:
|
||||
|
@ -44,6 +47,13 @@ public:
|
|||
static QUrl getPlayerFetchingUrl(QString crewID, QString pageNumber);
|
||||
static QUrl getPlayerFetchingUrl(QString crewID, int pageNumber);
|
||||
|
||||
// Game Stuff
|
||||
static GameVersion getGameVersion();
|
||||
static GameLanguage getGameLanguage(GameVersion gameVersion);
|
||||
static GameLanguage gameLanguageFromString(QString gameLanguage);
|
||||
static QString gameLanguageToString(GameLanguage gameLanguage);
|
||||
static bool setGameLanguage(GameVersion gameVersion, GameLanguage gameLanguage);
|
||||
|
||||
// Screen Stuff
|
||||
static qreal screenRatio();
|
||||
};
|
||||
|
|
|
@ -63,13 +63,6 @@ ImportDialog::ImportDialog(QString profileName, QWidget *parent) :
|
|||
avatarAreaImage = QImage(":/img/avatarareaimport.png");
|
||||
selectedColour = QColor::fromRgb(0, 0, 0, 255);
|
||||
|
||||
// Set Import Settings
|
||||
QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
settings.beginGroup("Import");
|
||||
QString currentProfile = settings.value("Profile", "Default").toString();
|
||||
settings.endGroup();
|
||||
processSettings(currentProfile);
|
||||
|
||||
// Set Icon for OK Button
|
||||
if (QIcon::hasThemeIcon("dialog-ok"))
|
||||
{
|
||||
|
@ -95,6 +88,13 @@ ImportDialog::ImportDialog(QString profileName, QWidget *parent) :
|
|||
ui->labBackgroundImage->setText(tr("Background Image:"));
|
||||
ui->cmdBackgroundWipe->setVisible(false);
|
||||
|
||||
// Set Import Settings
|
||||
QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
settings.beginGroup("Import");
|
||||
QString currentProfile = settings.value("Profile", "Default").toString();
|
||||
settings.endGroup();
|
||||
processSettings(currentProfile);
|
||||
|
||||
// DPI calculation
|
||||
qreal screenRatio = AppEnv::screenRatio();
|
||||
snapmaticResolutionLW = 516 * screenRatio; // 430
|
||||
|
|
|
@ -20,8 +20,10 @@
|
|||
#include "ui_JsonEditorDialog.h"
|
||||
#include "SnapmaticEditor.h"
|
||||
#include "AppEnv.h"
|
||||
#include "config.h"
|
||||
#include <QStringBuilder>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QMessageBox>
|
||||
|
||||
#if QT_VERSION >= 0x050200
|
||||
|
@ -29,6 +31,10 @@
|
|||
#include <QDebug>
|
||||
#endif
|
||||
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
#include "TelemetryClass.h"
|
||||
#endif
|
||||
|
||||
JsonEditorDialog::JsonEditorDialog(SnapmaticPicture *picture, QWidget *parent) :
|
||||
QDialog(parent), smpic(picture),
|
||||
ui(new Ui::JsonEditorDialog)
|
||||
|
@ -185,6 +191,22 @@ bool JsonEditorDialog::saveJsonContent()
|
|||
jsonCode = newCode;
|
||||
smpic->updateStrings();
|
||||
smpic->emitUpdate();
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "JSONEdited";
|
||||
jsonObject["EditedSize"] = QString::number(smpic->getContentMaxLength());
|
||||
jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
|
@ -198,13 +220,13 @@ bool JsonEditorDialog::saveJsonContent()
|
|||
|
||||
void JsonEditorDialog::on_cmdClose_clicked()
|
||||
{
|
||||
this->close();
|
||||
close();
|
||||
}
|
||||
|
||||
void JsonEditorDialog::on_cmdSave_clicked()
|
||||
{
|
||||
if (saveJsonContent())
|
||||
{
|
||||
this->close();
|
||||
close();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -103,6 +103,7 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) :
|
|||
setupInterfaceSettings();
|
||||
setupStatisticsSettings();
|
||||
setupSnapmaticPictureViewer();
|
||||
setupWindowsGameSettings();
|
||||
|
||||
#ifndef Q_QS_ANDROID
|
||||
// DPI calculation
|
||||
|
@ -110,7 +111,7 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) :
|
|||
resize(435 * screenRatio, 405 * screenRatio);
|
||||
#endif
|
||||
|
||||
this->setWindowTitle(windowTitle().arg(GTA5SYNC_APPSTR));
|
||||
setWindowTitle(windowTitle().arg(GTA5SYNC_APPSTR));
|
||||
}
|
||||
|
||||
OptionsDialog::~OptionsDialog()
|
||||
|
@ -150,9 +151,21 @@ void OptionsDialog::setupLanguageBox()
|
|||
currentAreaLanguage = settings->value("AreaLanguage", "Auto").toString();
|
||||
settings->endGroup();
|
||||
|
||||
QString cbSysStr = tr("%1 (Next Closest Language)", "First language a person can talk with a different person/application. \"Native\" or \"Not Native\".").arg(tr("System",
|
||||
"System in context of System default"));
|
||||
QString cbSysStr = tr("%1 (Language priority)", "First language a person can talk with a different person/application. \"Native\" or \"Not Native\".").arg(tr("System",
|
||||
"System in context of System default"));
|
||||
#ifdef GTA5SYNC_WIN
|
||||
QString cbAutoStr;
|
||||
if (AppEnv::getGameLanguage(AppEnv::getGameVersion()) != GameLanguage::Undefined)
|
||||
{
|
||||
cbAutoStr = tr("%1 (Game language)", "Next closest language compared to the Game settings").arg(tr("Auto", "Automatic language choice."));
|
||||
}
|
||||
else
|
||||
{
|
||||
cbAutoStr = tr("%1 (Closest to Interface)", "Next closest language compared to the Interface").arg(tr("Auto", "Automatic language choice."));
|
||||
}
|
||||
#else
|
||||
QString cbAutoStr = tr("%1 (Closest to Interface)", "Next closest language compared to the Interface").arg(tr("Auto", "Automatic language choice."));
|
||||
#endif
|
||||
ui->cbLanguage->addItem(cbSysStr, "System");
|
||||
ui->cbAreaLanguage->addItem(cbAutoStr, "Auto");
|
||||
|
||||
|
@ -412,6 +425,15 @@ void OptionsDialog::applySettings()
|
|||
settings->endGroup();
|
||||
Telemetry->refresh();
|
||||
Telemetry->work();
|
||||
if (ui->cbUsageData->isChecked() && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "SettingsUpdated";
|
||||
jsonObject["UpdateTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if QT_VERSION >= 0x050000
|
||||
|
@ -432,6 +454,7 @@ void OptionsDialog::applySettings()
|
|||
Translator->initUserLanguage();
|
||||
}
|
||||
|
||||
settings->sync();
|
||||
emit settingsApplied(newContentMode, languageChanged);
|
||||
|
||||
if ((forceCustomFolder && ui->txtFolder->text() != currentCFolder) || (forceCustomFolder != currentFFolder && forceCustomFolder))
|
||||
|
@ -576,6 +599,77 @@ void OptionsDialog::setupStatisticsSettings()
|
|||
#endif
|
||||
}
|
||||
|
||||
void OptionsDialog::setupWindowsGameSettings()
|
||||
{
|
||||
#ifdef GTA5SYNC_GAME
|
||||
GameVersion gameVersion = AppEnv::getGameVersion();
|
||||
#ifdef GTA5SYNC_WIN
|
||||
if (gameVersion != GameVersion::NoVersion)
|
||||
{
|
||||
if (gameVersion == GameVersion::SocialClubVersion)
|
||||
{
|
||||
ui->gbSteam->setDisabled(true);
|
||||
ui->labSocialClubFound->setText(tr("Found: %1").arg(QString("<span style=\"color: green\">%1</span>").arg(tr("Yes"))));
|
||||
ui->labSteamFound->setText(tr("Found: %1").arg(QString("<span style=\"color: red\">%1</span>").arg(tr("No"))));
|
||||
if (AppEnv::getGameLanguage(GameVersion::SocialClubVersion) != GameLanguage::Undefined)
|
||||
{
|
||||
ui->labSocialClubLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SocialClubVersion))).nativeLanguageName()));
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->labSocialClubLanguage->setText(tr("Language: %1").arg(tr("OS defined")));
|
||||
}
|
||||
ui->labSteamLanguage->setVisible(false);
|
||||
}
|
||||
else if (gameVersion == GameVersion::SteamVersion)
|
||||
{
|
||||
ui->gbSocialClub->setDisabled(true);
|
||||
ui->labSocialClubFound->setText(tr("Found: %1").arg(QString("<span style=\"color: red\">%1</span>").arg(tr("No"))));
|
||||
ui->labSteamFound->setText(tr("Found: %1").arg(QString("<span style=\"color: green\">%1</span>").arg(tr("Yes"))));
|
||||
ui->labSocialClubLanguage->setVisible(false);
|
||||
if (AppEnv::getGameLanguage(GameVersion::SteamVersion) != GameLanguage::Undefined)
|
||||
{
|
||||
ui->labSteamLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SteamVersion))).nativeLanguageName()));
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->labSteamLanguage->setText(tr("Language: %1").arg(tr("Steam defined")));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->labSocialClubFound->setText(tr("Found: %1").arg(QString("<span style=\"color: green\">%1</span>").arg(tr("Yes"))));
|
||||
ui->labSteamFound->setText(tr("Found: %1").arg(QString("<span style=\"color: green\">%1</span>").arg(tr("Yes"))));
|
||||
if (AppEnv::getGameLanguage(GameVersion::SocialClubVersion) != GameLanguage::Undefined)
|
||||
{
|
||||
ui->labSocialClubLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SocialClubVersion))).nativeLanguageName()));
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->labSocialClubLanguage->setText(tr("Language: %1").arg(tr("OS defined")));
|
||||
}
|
||||
if (AppEnv::getGameLanguage(GameVersion::SteamVersion) != GameLanguage::Undefined)
|
||||
{
|
||||
ui->labSteamLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SteamVersion))).nativeLanguageName()));
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->labSteamLanguage->setText(tr("Language: %1").arg(tr("Steam defined")));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabGame));
|
||||
}
|
||||
#else
|
||||
ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabGame));
|
||||
#endif
|
||||
#else
|
||||
ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabGame));
|
||||
#endif
|
||||
}
|
||||
|
||||
void OptionsDialog::on_cbIgnoreAspectRatio_toggled(bool checked)
|
||||
{
|
||||
if (checked)
|
||||
|
|
|
@ -79,6 +79,7 @@ private:
|
|||
void setupInterfaceSettings();
|
||||
void setupStatisticsSettings();
|
||||
void setupSnapmaticPictureViewer();
|
||||
void setupWindowsGameSettings();
|
||||
void applySettings();
|
||||
};
|
||||
|
||||
|
|
|
@ -382,6 +382,72 @@
|
|||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tabGame">
|
||||
<attribute name="title">
|
||||
<string>Game</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="vlGame">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gbSocialClub">
|
||||
<property name="title">
|
||||
<string>Social Club Version</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="vlGameSocialClub">
|
||||
<item>
|
||||
<widget class="QLabel" name="labSocialClubFound">
|
||||
<property name="text">
|
||||
<string>Found: %1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="labSocialClubLanguage">
|
||||
<property name="text">
|
||||
<string>Language: %1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gbSteam">
|
||||
<property name="title">
|
||||
<string>Steam Version</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="vlGameSteam">
|
||||
<item>
|
||||
<widget class="QLabel" name="labSteamFound">
|
||||
<property name="text">
|
||||
<string>Found: %1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="labSteamLanguage">
|
||||
<property name="text">
|
||||
<string>Language: %1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="vsGame">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tabStats">
|
||||
<attribute name="title">
|
||||
<string>Feedback</string>
|
||||
|
@ -473,7 +539,7 @@
|
|||
<property name="title">
|
||||
<string>Other</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<layout class="QVBoxLayout" name="vlFeedbackOther">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="hlParticipation">
|
||||
<item>
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "GlobalString.h"
|
||||
#include "UiModLabel.h"
|
||||
#include "AppEnv.h"
|
||||
#include "config.h"
|
||||
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
|
@ -45,6 +46,7 @@
|
|||
#include <QJsonDocument>
|
||||
#include <QApplication>
|
||||
#include <QFontMetrics>
|
||||
#include <QJsonObject>
|
||||
#include <QSizePolicy>
|
||||
#include <QStaticText>
|
||||
#include <QFileDialog>
|
||||
|
@ -67,6 +69,10 @@
|
|||
#include <QUrl>
|
||||
#include <QDir>
|
||||
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
#include "TelemetryClass.h"
|
||||
#endif
|
||||
|
||||
// Macros for better Overview + RAM
|
||||
#define locX QString::number(picture->getSnapmaticProperties().location.x)
|
||||
#define locY QString::number(picture->getSnapmaticProperties().location.y)
|
||||
|
@ -910,6 +916,23 @@ void PictureDialog::openPreviewMap()
|
|||
else
|
||||
{
|
||||
updated();
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "LocationEdited";
|
||||
jsonObject["ExtraFlags"] = "Viewer";
|
||||
jsonObject["EditedSize"] = QString::number(picture->getContentMaxLength());
|
||||
jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
delete mapLocDialog;
|
||||
|
@ -976,6 +999,23 @@ void PictureDialog::editSnapmaticImage()
|
|||
return;
|
||||
}
|
||||
smpic->emitCustomSignal("PictureUpdated");
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "ImageEdited";
|
||||
jsonObject["ExtraFlags"] = "Viewer";
|
||||
jsonObject["EditedSize"] = QString::number(smpic->getContentMaxLength());
|
||||
jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -66,6 +66,12 @@
|
|||
#include <random>
|
||||
#include <ctime>
|
||||
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
#include "TelemetryClass.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#endif
|
||||
|
||||
#define importTimeFormat "HHmmss"
|
||||
#define findRetryLimit 500
|
||||
|
||||
|
@ -597,6 +603,26 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime
|
|||
{
|
||||
bool success = importSnapmaticPicture(picture, notMultiple);
|
||||
if (!success) delete picture;
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
if (success)
|
||||
{
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "ImportSuccess";
|
||||
jsonObject["ImportSize"] = QString::number(picture->getContentMaxLength());
|
||||
jsonObject["ImportTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonObject["ImportType"] = "Snapmatic";
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return success;
|
||||
}
|
||||
else
|
||||
|
@ -613,6 +639,25 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime
|
|||
{
|
||||
bool success = importSavegameData(savegame, selectedFile, notMultiple);
|
||||
if (!success) delete savegame;
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
if (success)
|
||||
{
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "ImportSuccess";
|
||||
jsonObject["ImportTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonObject["ImportType"] = "Savegame";
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return success;
|
||||
}
|
||||
else
|
||||
|
@ -767,6 +812,27 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime
|
|||
picture->setPictureTitle(importDialog->getImageTitle());
|
||||
picture->updateStrings();
|
||||
success = importSnapmaticPicture(picture, notMultiple);
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
if (success)
|
||||
{
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "ImportSuccess";
|
||||
jsonObject["ExtraFlag"] = "Dialog";
|
||||
jsonObject["ImportSize"] = QString::number(picture->getContentMaxLength());
|
||||
jsonObject["ImportTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonObject["ImportType"] = "Image";
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -794,6 +860,26 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime
|
|||
bool success = importSnapmaticPicture(picture, notMultiple);
|
||||
delete savegame;
|
||||
if (!success) delete picture;
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
if (success)
|
||||
{
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "ImportSuccess";
|
||||
jsonObject["ImportSize"] = QString::number(picture->getContentMaxLength());
|
||||
jsonObject["ImportTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonObject["ImportType"] = "Snapmatic";
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return success;
|
||||
}
|
||||
else if (savegame->readingSavegame())
|
||||
|
@ -801,6 +887,25 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime
|
|||
bool success = importSavegameData(savegame, selectedFile, notMultiple);
|
||||
delete picture;
|
||||
if (!success) delete savegame;
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
if (success)
|
||||
{
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "ImportSuccess";
|
||||
jsonObject["ImportTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonObject["ImportType"] = "Savegame";
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return success;
|
||||
}
|
||||
else
|
||||
|
@ -1326,7 +1431,7 @@ void ProfileInterface::deleteSelected()
|
|||
if (widget->getWidgetType() == "SnapmaticWidget")
|
||||
{
|
||||
SnapmaticWidget *picWidget = qobject_cast<SnapmaticWidget*>(widget);
|
||||
if (picWidget->getPicture()->deletePicFile())
|
||||
if (picWidget->getPicture()->deletePictureFile())
|
||||
{
|
||||
pictureDeleted(picWidget);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "PlayerListDialog.h"
|
||||
#include "StringParser.h"
|
||||
#include "AppEnv.h"
|
||||
#include "config.h"
|
||||
#include <QStringListIterator>
|
||||
#include <QStringBuilder>
|
||||
#include <QTextDocument>
|
||||
|
@ -30,6 +31,12 @@
|
|||
#include <QDebug>
|
||||
#include <QFile>
|
||||
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
#include "TelemetryClass.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#endif
|
||||
|
||||
SnapmaticEditor::SnapmaticEditor(CrewDatabase *crewDB, ProfileDatabase *profileDB, QWidget *parent) :
|
||||
QDialog(parent), crewDB(crewDB), profileDB(profileDB),
|
||||
ui(new Ui::SnapmaticEditor)
|
||||
|
@ -261,11 +268,11 @@ void SnapmaticEditor::setSnapmaticTitle(const QString &title)
|
|||
ui->labTitle->setText(titleStr);
|
||||
if (SnapmaticPicture::verifyTitle(snapmaticTitle))
|
||||
{
|
||||
ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("<span style=\"color: green\">%1</a>").arg(tr("Yes", "Yes, should work fine"))));
|
||||
ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("<span style=\"color: green\">%1</span>").arg(tr("Yes", "Yes, should work fine"))));
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("<span style=\"color: red\">%1</a>").arg(tr("No", "No, could lead to issues"))));
|
||||
ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("<span style=\"color: red\">%1</span>").arg(tr("No", "No, could lead to issues"))));
|
||||
}
|
||||
#ifndef Q_OS_ANDROID
|
||||
ui->gbValues->resize(ui->gbValues->width(), ui->gbValues->heightForWidth(ui->gbValues->width()));
|
||||
|
@ -332,6 +339,22 @@ void SnapmaticEditor::on_cmdApply_clicked()
|
|||
{
|
||||
smpic->updateStrings();
|
||||
smpic->emitUpdate();
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "PropertyEdited";
|
||||
jsonObject["EditedSize"] = QString::number(smpic->getContentMaxLength());
|
||||
jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
close();
|
||||
|
|
|
@ -38,6 +38,12 @@
|
|||
#include <QMenu>
|
||||
#include <QFile>
|
||||
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
#include "TelemetryClass.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#endif
|
||||
|
||||
SnapmaticWidget::SnapmaticWidget(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QString profileName, QWidget *parent) :
|
||||
ProfileWidget(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB), profileName(profileName),
|
||||
ui(new Ui::SnapmaticWidget)
|
||||
|
@ -158,8 +164,24 @@ bool SnapmaticWidget::deletePicture()
|
|||
int uchoice = QMessageBox::question(this, tr("Delete picture"), tr("Are you sure to delete %1 from your Snapmatic pictures?").arg("\""+smpic->getPictureTitle()+"\""), QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
||||
if (uchoice == QMessageBox::Yes)
|
||||
{
|
||||
if (smpic->deletePicFile())
|
||||
if (smpic->deletePictureFile())
|
||||
{
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "DeleteSuccess";
|
||||
jsonObject["DeletedSize"] = QString::number(smpic->getContentMaxLength());
|
||||
jsonObject["DeletedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
@ -347,6 +369,23 @@ void SnapmaticWidget::editSnapmaticImage()
|
|||
return;
|
||||
}
|
||||
smpic->emitCustomSignal("PictureUpdated");
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "ImageEdited";
|
||||
jsonObject["ExtraFlags"] = "Interface";
|
||||
jsonObject["EditedSize"] = QString::number(smpic->getContentMaxLength());
|
||||
jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -387,6 +426,26 @@ void SnapmaticWidget::openMapViewer()
|
|||
QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of I/O Error"));
|
||||
picture->setSnapmaticProperties(fallbackProperties);
|
||||
}
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
else
|
||||
{
|
||||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool();
|
||||
telemetrySettings.endGroup();
|
||||
if (pushUsageData && Telemetry->canPush())
|
||||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
jsonObject["Type"] = "LocationEdited";
|
||||
jsonObject["ExtraFlags"] = "Interface";
|
||||
jsonObject["EditedSize"] = QString::number(picture->getContentMaxLength());
|
||||
jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
|
||||
jsonDocument.setObject(jsonObject);
|
||||
Telemetry->push(TelemetryCategory::PersonalData, jsonDocument);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
delete mapLocDialog;
|
||||
}
|
||||
|
|
|
@ -169,6 +169,8 @@ void TelemetryClass::push(TelemetryCategory category)
|
|||
break;
|
||||
case TelemetryCategory::UserFeedback:
|
||||
break;
|
||||
case TelemetryCategory::PersonalData:
|
||||
break;
|
||||
case TelemetryCategory::CustomEmitted:
|
||||
break;
|
||||
}
|
||||
|
@ -393,6 +395,7 @@ QJsonDocument TelemetryClass::getApplicationConf()
|
|||
QJsonObject startupObject;
|
||||
startupObject["AppStyle"] = settings.value("AppStyle", "System").toString();
|
||||
startupObject["CustomStyle"] = settings.value("CustomStyle", false).toBool();
|
||||
startupObject["StartCount"] = QString::number(settings.value("StartCount", 0).toUInt());
|
||||
jsonObject["Startup"] = startupObject;
|
||||
settings.endGroup();
|
||||
|
||||
|
@ -434,11 +437,14 @@ QString TelemetryClass::categoryToString(TelemetryCategory category)
|
|||
case TelemetryCategory::ApplicationConf:
|
||||
return QString("ApplicationConf");
|
||||
break;
|
||||
case TelemetryCategory::ApplicationSpec:
|
||||
return QString("ApplicationSpec");
|
||||
break;
|
||||
case TelemetryCategory::UserFeedback:
|
||||
return QString("UserFeedback");
|
||||
break;
|
||||
case TelemetryCategory::ApplicationSpec:
|
||||
return QString("ApplicationSpec");
|
||||
case TelemetryCategory::PersonalData:
|
||||
return QString("PersonalData");
|
||||
break;
|
||||
case TelemetryCategory::CustomEmitted:
|
||||
return QString("CustomEmitted");
|
||||
|
@ -489,6 +495,10 @@ void TelemetryClass::work_p(bool doWork)
|
|||
{
|
||||
push(TelemetryCategory::ApplicationConf);
|
||||
}
|
||||
else
|
||||
{
|
||||
push(TelemetryCategory::ApplicationConf, QJsonDocument());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#include <QString>
|
||||
#include <QUrl>
|
||||
|
||||
enum class TelemetryCategory : int { OperatingSystemSpec = 0, HardwareSpec = 1, UserLocaleData = 2, ApplicationConf = 3, UserFeedback = 4, ApplicationSpec = 5, CustomEmitted = 99};
|
||||
enum class TelemetryCategory : int { OperatingSystemSpec = 0, HardwareSpec = 1, UserLocaleData = 2, ApplicationConf = 3, UserFeedback = 4, ApplicationSpec = 5, PersonalData = 6, CustomEmitted = 99 };
|
||||
|
||||
class TelemetryClass : public QObject
|
||||
{
|
||||
|
|
|
@ -517,25 +517,52 @@ QString TranslationClass::getCurrentAreaLanguage()
|
|||
const QStringList areaTranslations = listAreaTranslations();
|
||||
if (userAreaLanguage == "Auto" || userAreaLanguage.trimmed().isEmpty())
|
||||
{
|
||||
#ifdef GTA5SYNC_DEBUG
|
||||
qDebug() << "autoAreaLanguageMode";
|
||||
#endif
|
||||
QString langCode = QString(currentLanguage).replace("-", "_");
|
||||
if (areaTranslations.contains(langCode))
|
||||
GameLanguage gameLanguage = AppEnv::getGameLanguage(AppEnv::getGameVersion());
|
||||
if (gameLanguage == GameLanguage::Undefined)
|
||||
{
|
||||
#ifdef GTA5SYNC_DEBUG
|
||||
qDebug() << "autoAreaLanguageSelected" << langCode;
|
||||
qDebug() << "autoAreaLanguageModeInterface";
|
||||
#endif
|
||||
return langCode;
|
||||
QString langCode = QString(currentLanguage).replace("-", "_");
|
||||
if (areaTranslations.contains(langCode))
|
||||
{
|
||||
#ifdef GTA5SYNC_DEBUG
|
||||
qDebug() << "autoAreaLanguageSelected" << langCode;
|
||||
#endif
|
||||
return langCode;
|
||||
}
|
||||
else if (langCode.contains("_"))
|
||||
{
|
||||
langCode = langCode.split("_").at(0);
|
||||
if (!areaTranslations.contains(langCode)) goto outputDefaultLanguage;
|
||||
#ifdef GTA5SYNC_DEBUG
|
||||
qDebug() << "autoAreaLanguageSelected" << langCode;
|
||||
#endif
|
||||
return langCode;
|
||||
}
|
||||
}
|
||||
else if (langCode.contains("_"))
|
||||
else
|
||||
{
|
||||
langCode = langCode.split("_").at(0);
|
||||
if (!areaTranslations.contains(langCode)) goto outputDefaultLanguage;
|
||||
#ifdef GTA5SYNC_DEBUG
|
||||
qDebug() << "autoAreaLanguageSelected" << langCode;
|
||||
qDebug() << "autoAreaLanguageModeGame";
|
||||
#endif
|
||||
return langCode;
|
||||
QString langCode = AppEnv::gameLanguageToString(gameLanguage).replace("-", "_");
|
||||
if (areaTranslations.contains(langCode))
|
||||
{
|
||||
#ifdef GTA5SYNC_DEBUG
|
||||
qDebug() << "autoAreaLanguageSelected" << langCode;
|
||||
#endif
|
||||
return langCode;
|
||||
}
|
||||
else if (langCode.contains("_"))
|
||||
{
|
||||
langCode = langCode.split("_").at(0);
|
||||
if (!areaTranslations.contains(langCode)) goto outputDefaultLanguage;
|
||||
#ifdef GTA5SYNC_DEBUG
|
||||
qDebug() << "autoAreaLanguageSelected" << langCode;
|
||||
#endif
|
||||
return langCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (areaTranslations.contains(userAreaLanguage))
|
||||
|
|
11
main.cpp
11
main.cpp
|
@ -75,6 +75,14 @@ int main(int argc, char *argv[])
|
|||
QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
settings.beginGroup("Startup");
|
||||
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
// Increase Start count at every startup
|
||||
uint startCount = settings.value("StartCount", 0).toUInt();
|
||||
startCount++;
|
||||
settings.setValue("StartCount", startCount);
|
||||
settings.sync();
|
||||
#endif
|
||||
|
||||
bool isFirstStart = settings.value("IsFirstStart", true).toBool();
|
||||
bool customStyle = settings.value("CustomStyle", false).toBool();
|
||||
QString appStyle = settings.value("AppStyle", "Default").toString();
|
||||
|
@ -181,7 +189,9 @@ int main(int argc, char *argv[])
|
|||
QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
telemetrySettings.beginGroup("Telemetry");
|
||||
telemetrySettings.setValue("PushUsageData", true);
|
||||
telemetrySettings.setValue("PushAppConf", true);
|
||||
telemetrySettings.endGroup();
|
||||
telemetrySettings.sync();
|
||||
Telemetry->init();
|
||||
Telemetry->work();
|
||||
}
|
||||
|
@ -189,7 +199,6 @@ int main(int argc, char *argv[])
|
|||
delete telemetryDialog;
|
||||
}
|
||||
#endif
|
||||
|
||||
settings.endGroup();
|
||||
|
||||
for (QString currentArg : applicationArgs)
|
||||
|
|
594
res/gta5sync.ts
594
res/gta5sync.ts
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff