Browse Source

QCONF build separates images

1.10.x
Syping 10 months ago
parent
commit
5244f72ec2
  1. 65
      .ci/gta5view.nsi
  2. 20
      AppEnv.cpp
  3. 2
      AppEnv.h
  4. 5
      CMakeLists.txt
  5. 41
      IconLoader.cpp
  6. 8
      ImportDialog.cpp
  7. 5
      MapLocationDialog.cpp
  8. 71
      OptionsDialog.cpp
  9. 8
      PictureDialog.cpp
  10. 9
      PlayerListDialog.cpp
  11. 3
      SavegameWidget.cpp
  12. 8
      UserInterface.cpp
  13. 10
      config.h
  14. 3
      gta5view.pro
  15. BIN
      res/add.svgz
  16. BIN
      res/back.svgz
  17. BIN
      res/empty1x16.png
  18. BIN
      res/flag-de.png
  19. BIN
      res/flag-fr.png
  20. BIN
      res/flag-gb.png
  21. BIN
      res/flag-kr.png
  22. BIN
      res/flag-ru.png
  23. BIN
      res/flag-tw.png
  24. BIN
      res/flag-ua.png
  25. BIN
      res/flag-us.png
  26. 126
      res/gta5sync.ts
  27. 126
      res/gta5sync_de.ts
  28. 126
      res/gta5sync_en_US.ts
  29. 126
      res/gta5sync_fr.ts
  30. 126
      res/gta5sync_ko.ts
  31. 126
      res/gta5sync_ru.ts
  32. 126
      res/gta5sync_uk.ts
  33. 126
      res/gta5sync_zh_TW.ts
  34. 27
      res/img.cmake
  35. 12
      res/img.qrc
  36. BIN
      res/next.svgz
  37. 5
      res/template.qrc

65
.ci/gta5view.nsi

@ -128,6 +128,39 @@ File "../res/qt5/qtbase_ko.qm"
File "../res/qt5/qtbase_ru.qm"
File "../res/qt5/qtbase_uk.qm"
File "../res/qt5/qtbase_zh_TW.qm"
SetOutPath "$INSTDIR\resources"
File "../res/add.svgz"
File "../res/avatararea.png"
File "../res/avatarareaimport.png"
File "../res/back.svgz"
File "../res/flag-de.png"
File "../res/flag-fr.png"
File "../res/flag-gb.png"
File "../res/flag-kr.png"
File "../res/flag-ru.png"
File "../res/flag-tw.png"
File "../res/flag-ua.png"
File "../res/flag-us.png"
File "../res/gta5view-16.png"
File "../res/gta5view-24.png"
File "../res/gta5view-32.png"
File "../res/gta5view-40.png"
File "../res/gta5view-48.png"
File "../res/gta5view-64.png"
File "../res/gta5view-96.png"
File "../res/gta5view-128.png"
File "../res/gta5view-256.png"
File "../res/mapcayoperico.jpg"
File "../res/mappreview.jpg"
File "../res/next.svgz"
File "../res/pointmaker-8.png"
File "../res/pointmaker-16.png"
File "../res/pointmaker-24.png"
File "../res/pointmaker-32.png"
File "../res/savegame.svgz"
File "../res/watermark_1b.png"
File "../res/watermark_2b.png"
File "../res/watermark_2r.png"
SetOutPath "$INSTDIR\imageformats"
File "/usr/local/lib/x86_64-w64-mingw32/qt5/plugins/imageformats/qgif.dll"
File "/usr/local/lib/x86_64-w64-mingw32/qt5/plugins/imageformats/qicns.dll"
@ -216,6 +249,38 @@ Delete "$INSTDIR\lang\qtbase_ko.qm"
Delete "$INSTDIR\lang\qtbase_ru.qm"
Delete "$INSTDIR\lang\qtbase_uk.qm"
Delete "$INSTDIR\lang\qtbase_zh_TW.qm"
Delete "$INSTDIR\resources\add.svgz"
Delete "$INSTDIR\resources\avatararea.png"
Delete "$INSTDIR\resources\avatarareaimport.png"
Delete "$INSTDIR\resources\back.svgz"
Delete "$INSTDIR\resources\flag-de.png"
Delete "$INSTDIR\resources\flag-fr.png"
Delete "$INSTDIR\resources\flag-gb.png"
Delete "$INSTDIR\resources\flag-kr.png"
Delete "$INSTDIR\resources\flag-ru.png"
Delete "$INSTDIR\resources\flag-tw.png"
Delete "$INSTDIR\resources\flag-ua.png"
Delete "$INSTDIR\resources\flag-us.png"
Delete "$INSTDIR\resources\gta5view-16.png"
Delete "$INSTDIR\resources\gta5view-24.png"
Delete "$INSTDIR\resources\gta5view-32.png"
Delete "$INSTDIR\resources\gta5view-40.png"
Delete "$INSTDIR\resources\gta5view-48.png"
Delete "$INSTDIR\resources\gta5view-64.png"
Delete "$INSTDIR\resources\gta5view-96.png"
Delete "$INSTDIR\resources\gta5view-128.png"
Delete "$INSTDIR\resources\gta5view-256.png"
Delete "$INSTDIR\resources\mapcayoperico.jpg"
Delete "$INSTDIR\resources\mappreview.jpg"
Delete "$INSTDIR\resources\next.svgz"
Delete "$INSTDIR\resources\pointmaker-8.png"
Delete "$INSTDIR\resources\pointmaker-16.png"
Delete "$INSTDIR\resources\pointmaker-24.png"
Delete "$INSTDIR\resources\pointmaker-32.png"
Delete "$INSTDIR\resources\savegame.svgz"
Delete "$INSTDIR\resources\watermark_1b.png"
Delete "$INSTDIR\resources\watermark_2b.png"
Delete "$INSTDIR\resources\watermark_2r.png"
Delete "$INSTDIR\imageformats\qgif.dll"
Delete "$INSTDIR\imageformats\qicns.dll"
Delete "$INSTDIR\imageformats\qico.dll"

20
AppEnv.cpp

@ -65,7 +65,7 @@ QString AppEnv::getGameFolder(bool *ok)
}
}
QString GTAV_defaultFolder = StandardPaths::documentsLocation() % QDir::separator() % "Rockstar Games" % QDir::separator() % "GTA V";
const QString GTAV_defaultFolder = StandardPaths::documentsLocation() % "/Rockstar Games/GTA V";
QString GTAV_returnFolder = GTAV_defaultFolder;
QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
@ -129,13 +129,13 @@ QString AppEnv::getInLangFolder()
#ifdef GTA5SYNC_INLANG
return StringParser::convertBuildedString(GTA5SYNC_INLANG);
#else
return StringParser::convertBuildedString(GTA5SYNC_SHARE % QLatin1String("SEPARATOR:APPNAME:SEPARATOR:translations"));
return StringParser::convertBuildedString(GTA5SYNC_SHARE % QLatin1String("/APPNAME:/translations"));
#endif
#else
#ifdef GTA5SYNC_INLANG
return StringParser::convertBuildedString(GTA5SYNC_INLANG);
#else
return QString(":/tr");
return QLatin1String(":/tr");
#endif
#endif
}
@ -145,6 +145,20 @@ QString AppEnv::getPluginsFolder()
return StringParser::convertBuildedString(GTA5SYNC_PLUG);
}
QString AppEnv::getImagesFolder()
{
#if defined(GTA5SYNC_QCONF) && defined(GTA5SYNC_CMAKE)
return StringParser::convertBuildedString(GTA5SYNC_SHARE % QLatin1String("/APPNAME:/resources"));
#else
return QLatin1String(":/img");
#endif
}
QString AppEnv::getShareFolder()
{
return StringParser::convertBuildedString(GTA5SYNC_SHARE);
}
// Web Stuff
QByteArray AppEnv::getUserAgent()

2
AppEnv.h

@ -39,7 +39,9 @@ public:
static bool setGameFolder(QString gameFolder);
static QString getExLangFolder();
static QString getInLangFolder();
static QString getImagesFolder();
static QString getPluginsFolder();
static QString getShareFolder();
// Web Stuff
static QByteArray getUserAgent();

5
CMakeLists.txt

@ -168,8 +168,8 @@ set(GTA5VIEW_TRANSLATIONS
)
list(APPEND GTA5VIEW_RESOURCES
res/app.qrc
res/global.qrc
res/template.qrc
)
set_property(SOURCE res/global.qrc PROPERTY AUTORCC_OPTIONS "-threshold;0;-compress;9")
@ -205,6 +205,7 @@ if(QCONF_BUILD)
)
else()
list(APPEND GTA5VIEW_RESOURCES
res/img.qrc
res/tr_g5p.qrc
res/qt${QT_VERSION_MAJOR}/tr_qt.qrc
)
@ -369,5 +370,7 @@ install(FILES res/gta5view-256.png DESTINATION share/icons/hicolor/256x256/apps
install(FILES res/gta5view-512.png DESTINATION share/icons/hicolor/512x512/apps RENAME de.syping.gta5view.png)
install(FILES res/de.syping.gta5view.png DESTINATION share/pixmaps)
if(QCONF_BUILD)
include(res/img.cmake)
install(FILES ${GTA5VIEW_IMGFILES} DESTINATION share/gta5view/resources)
install(FILES ${GTA5VIEW_QMFILES} DESTINATION share/gta5view/translations)
endif()

41
IconLoader.cpp

@ -1,6 +1,6 @@
/*****************************************************************************
* gta5view Grand Theft Auto V Profile Viewer
* Copyright (C) 2016-2017 Syping
* Copyright (C) 2016-2021 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
@ -17,34 +17,45 @@
*****************************************************************************/
#include "IconLoader.h"
#include "AppEnv.h"
#include <QStringBuilder>
#include <QIcon>
IconLoader::IconLoader()
{
}
QIcon IconLoader::loadingAppIcon()
{
QIcon appIcon;
appIcon.addFile(":/img/gta5view-16.png", QSize(16, 16));
appIcon.addFile(":/img/gta5view-24.png", QSize(24, 24));
appIcon.addFile(":/img/gta5view-32.png", QSize(32, 32));
appIcon.addFile(":/img/gta5view-40.png", QSize(40, 40));
appIcon.addFile(":/img/gta5view-48.png", QSize(48, 48));
appIcon.addFile(":/img/gta5view-64.png", QSize(64, 64));
appIcon.addFile(":/img/gta5view-96.png", QSize(96, 96));
appIcon.addFile(":/img/gta5view-128.png", QSize(128, 128));
appIcon.addFile(":/img/gta5view-256.png", QSize(256, 256));
#if defined(GTA5SYNC_QCONF) && defined(GTA5SYNC_CMAKE)
#ifdef Q_OS_WIN
const QString pattern = AppEnv::getImagesFolder() % QLatin1String(":/gta5view-%1.png");
#else
const QString pattern = AppEnv::getShareFolder() % QLatin1String("/icons/hicolor/%1x%1/apps/de.syping.gta5view.png");
#endif
#else
const QString pattern = AppEnv::getImagesFolder() % QLatin1String(":/gta5view-%1.png");
#endif
appIcon.addFile(pattern.arg("16"), QSize(16, 16));
appIcon.addFile(pattern.arg("24"), QSize(24, 24));
appIcon.addFile(pattern.arg("32"), QSize(32, 32));
appIcon.addFile(pattern.arg("40"), QSize(40, 40));
appIcon.addFile(pattern.arg("48"), QSize(48, 48));
appIcon.addFile(pattern.arg("64"), QSize(64, 64));
appIcon.addFile(pattern.arg("96"), QSize(96, 96));
appIcon.addFile(pattern.arg("128"), QSize(128, 128));
appIcon.addFile(pattern.arg("256"), QSize(256, 256));
return appIcon;
}
QIcon IconLoader::loadingPointmakerIcon()
{
QIcon pointmakerIcon;
pointmakerIcon.addFile(":/img/pointmaker-8.png", QSize(8, 8));
pointmakerIcon.addFile(":/img/pointmaker-16.png", QSize(16, 16));
pointmakerIcon.addFile(":/img/pointmaker-24.png", QSize(24, 24));
pointmakerIcon.addFile(":/img/pointmaker-32.png", QSize(32, 32));
const QString pattern = AppEnv::getImagesFolder() % QLatin1String("/pointmaker-%1.png");
pointmakerIcon.addFile(pattern.arg("8"), QSize(8, 8));
pointmakerIcon.addFile(pattern.arg("16"), QSize(16, 16));
pointmakerIcon.addFile(pattern.arg("24"), QSize(24, 24));
pointmakerIcon.addFile(pattern.arg("32"), QSize(32, 32));
return pointmakerIcon;
}

8
ImportDialog.cpp

@ -63,7 +63,7 @@ ImportDialog::ImportDialog(QString profileName, QWidget *parent) :
watermarkAvatar = true;
watermarkPicture = false;
insideAvatarZone = false;
avatarAreaImage = QImage(":/img/avatarareaimport.png");
avatarAreaImage = QImage(AppEnv::getImagesFolder() % "/avatarareaimport.png");
selectedColour = QColor::fromRgb(0, 0, 0, 255);
// Set Icon for OK Button
@ -323,18 +323,18 @@ void ImportDialog::processWatermark(QPainter *snapmaticPainter)
}
// draw watermark
if (redWatermark) {
const QImage viewWatermark = QImage(":/img/watermark_2r.png");
const QImage viewWatermark = QImage(AppEnv::getImagesFolder() % "/watermark_2r.png");
snapmaticPainter->drawImage(snapmaticResolution.width() - viewWatermark.width(), 0, viewWatermark);
}
else
{
QImage viewWatermark = QImage(":/img/watermark_2b.png");
QImage viewWatermark = QImage(AppEnv::getImagesFolder() % "/watermark_2b.png");
if (!blackWatermark) {
viewWatermark.invertPixels(QImage::InvertRgb);
}
snapmaticPainter->drawImage(snapmaticResolution.width() - viewWatermark.width(), 0, viewWatermark);
}
QImage textWatermark = QImage(":/img/watermark_1b.png");
QImage textWatermark = QImage(AppEnv::getImagesFolder() % "/watermark_1b.png");
if (!blackWatermark) {
textWatermark.invertPixels(QImage::InvertRgb);
}

5
MapLocationDialog.cpp

@ -20,6 +20,7 @@
#include "ui_MapLocationDialog.h"
#include "IconLoader.h"
#include "AppEnv.h"
#include <QStringBuilder>
#include <QPainter>
#include <QStyle>
@ -79,10 +80,10 @@ void MapLocationDialog::setCayoPerico(bool isCayoPerico)
ui->hlMapDialog->removeItem(ui->vlPosLayout);
ui->hlMapDialog->addLayout(ui->vlPosLayout);
ui->labPos->setAlignment(Qt::AlignRight);
mapImage = QImage(":/img/mapcayoperico.jpg");
mapImage = QImage(AppEnv::getImagesFolder() % "/mapcayoperico.jpg");
}
else {
mapImage = QImage(":/img/mappreview.jpg");
mapImage = QImage(AppEnv::getImagesFolder() % "/mappreview.jpg");
}
drawPointOnMap(xpos_old, ypos_old);
}

71
OptionsDialog.cpp

@ -21,6 +21,7 @@
#include "TranslationClass.h"
#include "StandardPaths.h"
#include "UserInterface.h"
#include "wrapper.h"
#include "AppEnv.h"
#include "config.h"
#include <QStringBuilder>
@ -92,22 +93,18 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) :
ui->rbPicDefaultRes->setText(ui->rbPicDefaultRes->text().arg(QString::number(defExportSize.width()), QString::number(defExportSize.height())));
// Set Icon for OK Button
if (QIcon::hasThemeIcon("dialog-ok"))
{
if (QIcon::hasThemeIcon("dialog-ok")) {
ui->cmdOK->setIcon(QIcon::fromTheme("dialog-ok"));
}
else if (QIcon::hasThemeIcon("gtk-ok"))
{
else if (QIcon::hasThemeIcon("gtk-ok")) {
ui->cmdOK->setIcon(QIcon::fromTheme("gtk-ok"));
}
// Set Icon for Cancel Button
if (QIcon::hasThemeIcon("dialog-cancel"))
{
if (QIcon::hasThemeIcon("dialog-cancel")) {
ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel"));
}
else if (QIcon::hasThemeIcon("gtk-cancel"))
{
else if (QIcon::hasThemeIcon("gtk-cancel")) {
ui->cmdCancel->setIcon(QIcon::fromTheme("gtk-cancel"));
}
@ -145,15 +142,11 @@ void OptionsDialog::setupTreeWidget()
{
const QStringList players = profileDB->getPlayers();
if (players.length() != 0) {
QStringList::const_iterator it = players.constBegin();
QStringList::const_iterator end = players.constEnd();
while (it != end)
{
for (auto it = players.constBegin(); it != players.constEnd(); it++) {
bool ok;
int playerID = it->toInt(&ok);
if (ok)
{
QString playerName = profileDB->getPlayerName(playerID);
if (ok) {
const QString playerName = profileDB->getPlayerName(playerID);
QStringList playerTreeViewList;
playerTreeViewList += *it;
@ -163,7 +156,6 @@ void OptionsDialog::setupTreeWidget()
ui->twPlayers->addTopLevelItem(playerItem);
playerItems += playerItem;
}
it++;
}
ui->twPlayers->sortItems(1, Qt::AscendingOrder);
}
@ -179,20 +171,18 @@ void OptionsDialog::setupLanguageBox()
currentAreaLanguage = settings->value("AreaLanguage", "Auto").toString();
settings->endGroup();
QString cbSysStr = tr("%1 (Language priority)", "First language a person can talk with a different person/application. \"Native\" or \"Not Native\".").arg(tr("System",
const 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 Q_OS_WIN
QString cbAutoStr;
if (AppEnv::getGameLanguage(AppEnv::getGameVersion()) != GameLanguage::Undefined)
{
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
{
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."));
const 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");
@ -206,15 +196,18 @@ void OptionsDialog::setupLanguageBox()
availableLanguages.removeDuplicates();
availableLanguages.sort();
for (QString lang : availableLanguages)
{
for (const QString &lang : qAsConst(availableLanguages)) {
QLocale langLocale(lang);
QString cbLangStr = langLocale.nativeLanguageName() % " (" % langLocale.nativeCountryName() % ") [" % lang % "]";
QString langIconStr = "flag-" % TranslationClass::getCountryCode(langLocale);
const QString cbLangStr = langLocale.nativeLanguageName() % " (" % langLocale.nativeCountryName() % ") [" % lang % "]";
const QString langIconPath = AppEnv::getImagesFolder() % "/flag-" % TranslationClass::getCountryCode(langLocale) % ".png";
ui->cbLanguage->addItem(QIcon::fromTheme(langIconStr), cbLangStr, lang);
if (currentLanguage == lang)
{
if (QFile::exists(langIconPath)) {
ui->cbLanguage->addItem(QIcon(langIconPath), cbLangStr, lang);
}
else {
ui->cbLanguage->addItem(cbLangStr, lang);
}
if (currentLanguage == lang) {
#if QT_VERSION >= 0x050000
ui->cbLanguage->setCurrentText(cbLangStr);
#else
@ -225,7 +218,8 @@ void OptionsDialog::setupLanguageBox()
}
QString aCurrentLanguage = QString("en_GB");
if (Translator->isLanguageLoaded()) { aCurrentLanguage = Translator->getCurrentLanguage(); }
if (Translator->isLanguageLoaded())
aCurrentLanguage = Translator->getCurrentLanguage();
QLocale currentLocale = QLocale(aCurrentLanguage);
ui->labCurrentLanguage->setText(tr("Current: %1").arg(currentLocale.nativeLanguageName() % " (" % currentLocale.nativeCountryName() % ") [" % aCurrentLanguage % "]"));
@ -234,7 +228,7 @@ void OptionsDialog::setupLanguageBox()
availableLanguages.removeDuplicates();
availableLanguages.sort();
for (QString lang : availableLanguages) {
for (const QString &lang : qAsConst(availableLanguages)) {
// correcting Language Location if possible
QString aLang = lang;
if (QFile::exists(":/global/global." % lang % ".loc")) {
@ -246,10 +240,8 @@ void OptionsDialog::setupLanguageBox()
}
QLocale langLocale(aLang);
QString cbLangStr = langLocale.nativeLanguageName() % " (" % langLocale.nativeCountryName() % ") [" % aLang % "]";
QString langIconStr = "flag-" % TranslationClass::getCountryCode(langLocale);
ui->cbAreaLanguage->addItem(QIcon::fromTheme(langIconStr), cbLangStr, lang);
const QString cbLangStr = langLocale.nativeLanguageName() % " (" % langLocale.nativeCountryName() % ") [" % aLang % "]";
ui->cbAreaLanguage->addItem(cbLangStr, lang);
if (currentAreaLanguage == lang) {
#if QT_VERSION >= 0x050000
ui->cbAreaLanguage->setCurrentText(cbLangStr);
@ -264,8 +256,7 @@ void OptionsDialog::setupLanguageBox()
if (QFile::exists(":/global/global." % aCurrentAreaLanguage % ".loc")) {
qDebug() << "locFile found";
QFile locFile(":/global/global." % aCurrentAreaLanguage % ".loc");
if (locFile.open(QFile::ReadOnly))
{
if (locFile.open(QFile::ReadOnly)) {
aCurrentAreaLanguage = QString::fromUtf8(locFile.readLine()).trimmed();
locFile.close();
}
@ -492,7 +483,7 @@ void OptionsDialog::setupDefaultProfile()
void OptionsDialog::commitProfiles(const QStringList &profiles)
{
for (QString profile : profiles) {
for (const QString &profile : profiles) {
ui->cbProfiles->addItem(tr("Profile: %1").arg(profile), profile);
if (defaultProfile == profile) {
#if QT_VERSION >= 0x050000
@ -705,8 +696,8 @@ void OptionsDialog::setupSnapmaticPictureViewer()
void OptionsDialog::on_cmdExploreFolder_clicked()
{
QString GTAV_Folder = QFileDialog::getExistingDirectory(this, UserInterface::tr("Select GTA V Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly);
if (QFileInfo(GTAV_Folder).exists()) {
const QString GTAV_Folder = QFileDialog::getExistingDirectory(this, UserInterface::tr("Select GTA V Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly);
if (QDir(GTAV_Folder).exists()) {
ui->txtFolder->setText(GTAV_Folder);
}
}

8
PictureDialog.cpp

@ -163,10 +163,10 @@ void PictureDialog::setupPictureDialog()
qreal screenRatio = AppEnv::screenRatio();
qreal screenRatioPR = AppEnv::screenRatioPR();
if (screenRatio != 1 || screenRatioPR != 1) {
avatarAreaPicture = QImage(":/img/avatararea.png").scaledToHeight(snapmaticResolution.height() * screenRatio * screenRatioPR, Qt::FastTransformation);
avatarAreaPicture = QImage(AppEnv::getImagesFolder() % "/avatararea.png").scaledToHeight(snapmaticResolution.height() * screenRatio * screenRatioPR, Qt::FastTransformation);
}
else {
avatarAreaPicture = QImage(":/img/avatararea.png");
avatarAreaPicture = QImage(AppEnv::getImagesFolder() % "/avatararea.png");
}
avatarLocX = 145;
avatarLocY = 66;
@ -243,8 +243,8 @@ void PictureDialog::addPreviousNextButtons()
#endif
uiToolbar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
uiToolbar->setObjectName("UiToolbar");
uiToolbar->addAction(QIcon(":/img/back.svgz"), "", this, SLOT(previousPictureRequestedSlot()));
uiToolbar->addAction(QIcon(":/img/next.svgz"), "", this, SLOT(nextPictureRequestedSlot()));
uiToolbar->addAction(QIcon(AppEnv::getImagesFolder() % "/back.svgz"), "", this, SLOT(previousPictureRequestedSlot()));
uiToolbar->addAction(QIcon(AppEnv::getImagesFolder() % "/next.svgz"), "", this, SLOT(nextPictureRequestedSlot()));
#ifdef Q_OS_MAC
#if QT_VERSION >= 0x050000
uiToolbar->setStyle(QStyleFactory::create("Fusion"));

9
PlayerListDialog.cpp

@ -19,6 +19,7 @@
#include "PlayerListDialog.h"
#include "ui_PlayerListDialog.h"
#include "AppEnv.h"
#include <QStringBuilder>
#include <QFontMetrics>
#include <QInputDialog>
#include <QMessageBox>
@ -94,9 +95,9 @@ PlayerListDialog::PlayerListDialog(QStringList players, ProfileDatabase *profile
ui->cmdMakeAd->setIconSize(iconSize);
}
#endif
ui->cmdMakeAv->setIcon(QIcon(":/img/back.svgz"));
ui->cmdMakeSe->setIcon(QIcon(":/img/next.svgz"));
ui->cmdMakeAd->setIcon(QIcon(":/img/add.svgz"));
ui->cmdMakeAv->setIcon(QIcon(AppEnv::getImagesFolder() % "/back.svgz"));
ui->cmdMakeSe->setIcon(QIcon(AppEnv::getImagesFolder() % "/next.svgz"));
ui->cmdMakeAd->setIcon(QIcon(AppEnv::getImagesFolder() % "/add.svgz"));
}
buildInterface();
@ -124,7 +125,7 @@ void PlayerListDialog::on_cmdCancel_clicked()
void PlayerListDialog::buildInterface()
{
const QStringList dbPlayers = profileDB->getPlayers();
for (const QString &sePlayer : players) {
for (const QString &sePlayer : qAsConst(players)) {
QListWidgetItem *playerItem = new QListWidgetItem(profileDB->getPlayerName(sePlayer));
playerItem->setData(Qt::UserRole, sePlayer);
ui->listSePlayers->addItem(playerItem);

3
SavegameWidget.cpp

@ -25,6 +25,7 @@
#include "SavegameCopy.h"
#include "AppEnv.h"
#include "config.h"
#include <QStringBuilder>
#include <QFileDialog>
#include <QMessageBox>
#include <QSettings>
@ -59,7 +60,7 @@ SavegameWidget::SavegameWidget(QWidget *parent) :
ui->labSavegamePic->setFixedSize(48 * screenRatio, 27 * screenRatio);
ui->labSavegamePic->setScaledContents(true);
ui->labSavegamePic->setPixmap(QPixmap(":/img/savegame.svgz"));
ui->labSavegamePic->setPixmap(QPixmap(AppEnv::getImagesFolder() % "/savegame.svgz"));
QString exportSavegameStr = tr("Export Savegame...");
Q_UNUSED(exportSavegameStr)

8
UserInterface.cpp

@ -1,6 +1,6 @@
/*****************************************************************************
* gta5view Grand Theft Auto V Profile Viewer
* Copyright (C) 2016-2019 Syping
* Copyright (C) 2016-2021 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
@ -170,7 +170,7 @@ UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, D
donateAction->setIcon(QIcon::fromTheme("taxes-finances"));
}
else {
donateAction->setIcon(QIcon(":/img/donate.svgz"));
donateAction->setIcon(QIcon(AppEnv::getImagesFolder() % "/donate.svgz"));
}
ui->menuHelp->insertAction(ui->actionAbout_gta5sync, donateAction);
QObject::connect(donateAction, &QAction::triggered, this, [=](){
@ -715,8 +715,8 @@ void UserInterface::showMessages(const QStringList messages)
nextButton->setIcon(QIcon::fromTheme("go-next"));
}
else {
backButton->setIcon(QIcon(":/img/back.svgz"));
nextButton->setIcon(QIcon(":/img/next.svgz"));
backButton->setIcon(QIcon(AppEnv::getImagesFolder() % "/back.svgz"));
nextButton->setIcon(QIcon(AppEnv::getImagesFolder() % "/next.svgz"));
}
backButton->setEnabled(false);
if (stackWidget->count() <= 1) {

10
config.h

@ -65,7 +65,11 @@
#ifdef GTA5SYNC_QCONF
#ifndef GTA5SYNC_SHARE
#define GTA5SYNC_SHARE "RUNDIR:SEPARATOR:..SEPARATOR:share"
#ifdef Q_OS_WIN
#define GTA5SYNC_SHARE "RUNDIR:"
#else
#define GTA5SYNC_SHARE "RUNDIR:/../share"
#endif
#endif
#ifndef GTA5SYNC_LANG
#define GTA5SYNC_LANG "QCONFLANG:"
@ -83,10 +87,10 @@
#define GTA5SYNC_SHARE "RUNDIR:"
#endif
#ifndef GTA5SYNC_LANG
#define GTA5SYNC_LANG "SHAREDDIR:SEPARATOR:lang"
#define GTA5SYNC_LANG "SHAREDDIR:/lang"
#endif
#ifndef GTA5SYNC_PLUG
#define GTA5SYNC_PLUG "RUNDIR:SEPARATOR:plugins"
#define GTA5SYNC_PLUG "RUNDIR:/plugins"
#endif
#endif

3
gta5view.pro

@ -144,7 +144,8 @@ TRANSLATIONS += \
res/gta5sync_zh_TW.ts
RESOURCES += \
res/app.qrc \
res/img.qrc \
res/template.qrc \
res/tr_g5p.qrc
DISTFILES += \

BIN
res/add.svgz

Binary file not shown.

BIN
res/back.svgz

Binary file not shown.

BIN
res/empty1x16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 B

BIN
res/flag-de.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
res/flag-fr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
res/flag-gb.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
res/flag-kr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
res/flag-ru.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
res/flag-tw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
res/flag-ua.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
res/flag-us.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

126
res/gta5sync.ts

@ -585,7 +585,7 @@ When you want to use it as Avatar the image will be detached!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../MapLocationDialog.cpp" line="64"/>
<location filename="../MapLocationDialog.cpp" line="65"/>
<source>X: %1
Y: %2</source>
<comment>X and Y position</comment>
@ -728,26 +728,26 @@ Y: %2</source>
<message>
<location filename="../OptionsDialog.ui" line="399"/>
<location filename="../OptionsDialog.ui" line="422"/>
<location filename="../OptionsDialog.cpp" line="613"/>
<location filename="../OptionsDialog.cpp" line="614"/>
<location filename="../OptionsDialog.cpp" line="625"/>
<location filename="../OptionsDialog.cpp" line="626"/>
<location filename="../OptionsDialog.cpp" line="636"/>
<location filename="../OptionsDialog.cpp" line="637"/>
<location filename="../OptionsDialog.cpp" line="604"/>
<location filename="../OptionsDialog.cpp" line="605"/>
<location filename="../OptionsDialog.cpp" line="616"/>
<location filename="../OptionsDialog.cpp" line="617"/>
<location filename="../OptionsDialog.cpp" line="627"/>
<location filename="../OptionsDialog.cpp" line="628"/>
<source>Found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.ui" line="406"/>
<location filename="../OptionsDialog.ui" line="429"/>
<location filename="../OptionsDialog.cpp" line="616"/>
<location filename="../OptionsDialog.cpp" line="619"/>
<location filename="../OptionsDialog.cpp" line="629"/>
<location filename="../OptionsDialog.cpp" line="632"/>
<location filename="../OptionsDialog.cpp" line="607"/>
<location filename="../OptionsDialog.cpp" line="610"/>
<location filename="../OptionsDialog.cpp" line="620"/>
<location filename="../OptionsDialog.cpp" line="623"/>
<location filename="../OptionsDialog.cpp" line="630"/>
<location filename="../OptionsDialog.cpp" line="633"/>
<location filename="../OptionsDialog.cpp" line="636"/>
<location filename="../OptionsDialog.cpp" line="639"/>
<location filename="../OptionsDialog.cpp" line="642"/>
<location filename="../OptionsDialog.cpp" line="645"/>
<location filename="../OptionsDialog.cpp" line="648"/>
<source>Language: %1</source>
<translation type="unfinished"></translation>
</message>
@ -768,7 +768,7 @@ Y: %2</source>
</message>
<message>
<location filename="../OptionsDialog.ui" line="465"/>
<location filename="../OptionsDialog.cpp" line="580"/>
<location filename="../OptionsDialog.cpp" line="571"/>
<source>Participate in %1 User Statistics</source>
<translation type="unfinished"></translation>
</message>
@ -804,8 +804,8 @@ Y: %2</source>
</message>
<message>
<location filename="../OptionsDialog.ui" line="554"/>
<location filename="../OptionsDialog.cpp" line="594"/>
<location filename="../OptionsDialog.cpp" line="597"/>
<location filename="../OptionsDialog.cpp" line="585"/>
<location filename="../OptionsDialog.cpp" line="588"/>
<source>Participation ID: %1</source>
<translation type="unfinished"></translation>
</message>
@ -827,8 +827,8 @@ Y: %2</source>
<message>
<location filename="../OptionsDialog.ui" line="611"/>
<location filename="../OptionsDialog.ui" line="633"/>
<location filename="../OptionsDialog.cpp" line="230"/>
<location filename="../OptionsDialog.cpp" line="274"/>
<location filename="../OptionsDialog.cpp" line="224"/>
<location filename="../OptionsDialog.cpp" line="265"/>
<source>Current: %1</source>
<translation type="unfinished"></translation>
</message>
@ -890,95 +890,95 @@ Y: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="182"/>
<location filename="../OptionsDialog.cpp" line="174"/>
<source>System</source>
<comment>System in context of System default</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="188"/>
<location filename="../OptionsDialog.cpp" line="179"/>
<source>%1 (Game language)</source>
<comment>Next closest language compared to the Game settings</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="192"/>
<location filename="../OptionsDialog.cpp" line="195"/>
<location filename="../OptionsDialog.cpp" line="182"/>
<location filename="../OptionsDialog.cpp" line="185"/>
<source>%1 (Closest to Interface)</source>
<comment>Next closest language compared to the Interface</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="188"/>
<location filename="../OptionsDialog.cpp" line="192"/>
<location filename="../OptionsDialog.cpp" line="195"/>
<location filename="../OptionsDialog.cpp" line="179"/>
<location filename="../OptionsDialog.cpp" line="182"/>
<location filename="../OptionsDialog.cpp" line="185"/>
<source>Auto</source>
<comment>Automatic language choice.</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="182"/>
<location filename="../OptionsDialog.cpp" line="174"/>
<source>%1 (Language priority)</source>
<comment>First language a person can talk with a different person/application. &quot;Native&quot; or &quot;Not Native&quot;.</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="479"/>
<location filename="../OptionsDialog.cpp" line="470"/>
<source>%1</source>
<comment>%1</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="479"/>
<location filename="../OptionsDialog.cpp" line="470"/>
<source>The new Custom Folder will initialise after you restart %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="489"/>
<location filename="../OptionsDialog.cpp" line="480"/>
<source>No Profile</source>
<comment>No Profile, as default</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="496"/>
<location filename="../OptionsDialog.cpp" line="499"/>
<location filename="../OptionsDialog.cpp" line="501"/>
<location filename="../OptionsDialog.cpp" line="487"/>
<location filename="../OptionsDialog.cpp" line="490"/>
<location filename="../OptionsDialog.cpp" line="492"/>
<source>Profile: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="581"/>
<location filename="../OptionsDialog.cpp" line="572"/>
<source>View %1 User Statistics Online</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="597"/>
<location filename="../OptionsDialog.cpp" line="588"/>
<source>Not registered</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="613"/>
<location filename="../OptionsDialog.cpp" line="626"/>
<location filename="../OptionsDialog.cpp" line="636"/>
<location filename="../OptionsDialog.cpp" line="637"/>
<location filename="../OptionsDialog.cpp" line="604"/>
<location filename="../OptionsDialog.cpp" line="617"/>
<location filename="../OptionsDialog.cpp" line="627"/>
<location filename="../OptionsDialog.cpp" line="628"/>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="614"/>
<location filename="../OptionsDialog.cpp" line="625"/>
<location filename="../OptionsDialog.cpp" line="605"/>
<location filename="../OptionsDialog.cpp" line="616"/>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="619"/>
<location filename="../OptionsDialog.cpp" line="642"/>
<location filename="../OptionsDialog.cpp" line="610"/>
<location filename="../OptionsDialog.cpp" line="633"/>
<source>OS defined</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="632"/>
<location filename="../OptionsDialog.cpp" line="648"/>
<location filename="../OptionsDialog.cpp" line="623"/>
<location filename="../OptionsDialog.cpp" line="639"/>
<source>Steam defined</source>
<translation type="unfinished"></translation>
</message>
@ -1227,28 +1227,28 @@ Press 1 for Default View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../PlayerListDialog.cpp" line="159"/>
<location filename="../PlayerListDialog.cpp" line="160"/>
<source>Add Players...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../PlayerListDialog.cpp" line="159"/>
<location filename="../PlayerListDialog.cpp" line="160"/>
<source>Failed to add more Players because the limit of Players are %1!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../PlayerListDialog.cpp" line="175"/>
<location filename="../PlayerListDialog.cpp" line="194"/>
<location filename="../PlayerListDialog.cpp" line="176"/>
<location filename="../PlayerListDialog.cpp" line="195"/>
<source>Add Player...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../PlayerListDialog.cpp" line="175"/>
<location filename="../PlayerListDialog.cpp" line="176"/>
<source>Enter Social Club Player ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../PlayerListDialog.cpp" line="194"/>
<location filename="../PlayerListDialog.cpp" line="195"/>
<source>Failed to add Player %1 because Player %1 is already added!</source>
<translation type="unfinished"></translation>
</message>
@ -1799,48 +1799,48 @@ Press 1 for Default View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="64"/>
<location filename="../SavegameWidget.cpp" line="65"/>
<source>Export Savegame...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="67"/>
<location filename="../SavegameWidget.cpp" line="124"/>
<location filename="../SavegameWidget.cpp" line="68"/>
<location filename="../SavegameWidget.cpp" line="125"/>
<source>AUTOSAVE - %1
%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="68"/>
<location filename="../SavegameWidget.cpp" line="125"/>
<location filename="../SavegameWidget.cpp" line="69"/>
<location filename="../SavegameWidget.cpp" line="126"/>
<source>SAVE %3 - %1
%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="96"/>
<location filename="../SavegameWidget.cpp" line="97"/>
<location filename="../SavegameWidget.cpp" line="98"/>
<source>WRONG FORMAT</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="118"/>
<location filename="../SavegameWidget.cpp" line="119"/>
<source>UNKNOWN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="138"/>
<location filename="../SavegameWidget.cpp" line="191"/>
<location filename="../SavegameWidget.cpp" line="139"/>
<location filename="../SavegameWidget.cpp" line="192"/>
<source>Delete Savegame</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="138"/>
<location filename="../SavegameWidget.cpp" line="139"/>
<source>Are you sure to delete %1 from your savegames?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="191"/>
<location filename="../SavegameWidget.cpp" line="192"/>
<source>Failed at deleting %1 from your savegames</source>
<translation type="unfinished"></translation>
</message>
@ -2391,7 +2391,7 @@ Press 1 for Default View</source>
</message>
<message>
<location filename="../UserInterface.ui" line="322"/>
<location filename="../OptionsDialog.cpp" line="708"/>
<location filename="../OptionsDialog.cpp" line="699"/>
<location filename="../UserInterface.cpp" line="269"/>
<location filename="../UserInterface.cpp" line="787"/>
<source>Select GTA V Folder...</source>

126
res/gta5sync_de.ts

@ -604,7 +604,7 @@ Wenn du es als Avatar verwenden möchtest wird es abgetrennt!</translation>
<translation>&amp;Fertig</translation>
</message>
<message>
<location filename="../MapLocationDialog.cpp" line="64"/>
<location filename="../MapLocationDialog.cpp" line="65"/>
<source>X: %1
Y: %2</source>
<comment>X and Y position</comment>
@ -756,26 +756,26 @@ Y: %2</translation>
<message>
<location filename="../OptionsDialog.ui" line="399"/>
<location filename="../OptionsDialog.ui" line="422"/>
<location filename="../OptionsDialog.cpp" line="613"/>
<location filename="../OptionsDialog.cpp" line="614"/>
<location filename="../OptionsDialog.cpp" line="625"/>
<location filename="../OptionsDialog.cpp" line="626"/>
<location filename="../OptionsDialog.cpp" line="636"/>
<location filename="../OptionsDialog.cpp" line="637"/>
<location filename="../OptionsDialog.cpp" line="604"/>
<location filename="../OptionsDialog.cpp" line="605"/>
<location filename="../OptionsDialog.cpp" line="616"/>
<location filename="../OptionsDialog.cpp" line="617"/>
<location filename="../OptionsDialog.cpp" line="627"/>
<location filename="../OptionsDialog.cpp" line="628"/>
<source>Found: %1</source>
<translation>Gefunden: %1</translation>
</message>
<message>
<location filename="../OptionsDialog.ui" line="406"/>
<location filename="../OptionsDialog.ui" line="429"/>
<location filename="../OptionsDialog.cpp" line="616"/>
<location filename="../OptionsDialog.cpp" line="619"/>
<location filename="../OptionsDialog.cpp" line="629"/>
<location filename="../OptionsDialog.cpp" line="632"/>
<location filename="../OptionsDialog.cpp" line="607"/>
<location filename="../OptionsDialog.cpp" line="610"/>
<location filename="../OptionsDialog.cpp" line="620"/>
<location filename="../OptionsDialog.cpp" line="623"/>
<location filename="../OptionsDialog.cpp" line="630"/>
<location filename="../OptionsDialog.cpp" line="633"/>
<location filename="../OptionsDialog.cpp" line="636"/>
<location filename="../OptionsDialog.cpp" line="639"/>
<location filename="../OptionsDialog.cpp" line="642"/>
<location filename="../OptionsDialog.cpp" line="645"/>
<location filename="../OptionsDialog.cpp" line="648"/>
<source>Language: %1</source>
<translation>Sprache: %1</translation>
</message>
@ -796,7 +796,7 @@ Y: %2</translation>
</message>
<message>
<location filename="../OptionsDialog.ui" line="465"/>
<location filename="../OptionsDialog.cpp" line="580"/>
<location filename="../OptionsDialog.cpp" line="571"/>
<source>Participate in %1 User Statistics</source>
<translation>An %1 Benutzerstatistik teilnehmen</translation>
</message>
@ -827,8 +827,8 @@ Y: %2</translation>
</message>
<message>
<location filename="../OptionsDialog.ui" line="554"/>
<location filename="../OptionsDialog.cpp" line="594"/>
<location filename="../OptionsDialog.cpp" line="597"/>
<location filename="../OptionsDialog.cpp" line="585"/>
<location filename="../OptionsDialog.cpp" line="588"/>
<source>Participation ID: %1</source>
<translation>Teilnahme ID: %1</translation>
</message>
@ -884,8 +884,8 @@ Y: %2</translation>
<message>
<location filename="../OptionsDialog.ui" line="611"/>
<location filename="../OptionsDialog.ui" line="633"/>
<location filename="../OptionsDialog.cpp" line="230"/>
<location filename="../OptionsDialog.cpp" line="274"/>
<location filename="../OptionsDialog.cpp" line="224"/>
<location filename="../OptionsDialog.cpp" line="265"/>
<source>Current: %1</source>
<translation>Aktuell: %1</translation>
</message>
@ -922,95 +922,95 @@ Y: %2</translation>
<translation>Abbre&amp;chen</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="479"/>
<location filename="../OptionsDialog.cpp" line="470"/>
<source>%1</source>
<comment>%1</comment>
<translation>%1</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="182"/>
<location filename="../OptionsDialog.cpp" line="174"/>
<source>System</source>
<comment>System in context of System default</comment>
<translation>System</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="188"/>
<location filename="../OptionsDialog.cpp" line="179"/>
<source>%1 (Game language)</source>
<comment>Next closest language compared to the Game settings</comment>
<translation>%1 (Spielsprache)</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="192"/>
<location filename="../OptionsDialog.cpp" line="195"/>
<location filename="../OptionsDialog.cpp" line="182"/>
<location filename="../OptionsDialog.cpp" line="185"/>
<source>%1 (Closest to Interface)</source>
<comment>Next closest language compared to the Interface</comment>
<translation>%1 (Näheste zur Oberfläche)</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="188"/>
<location filename="../OptionsDialog.cpp" line="192"/>
<location filename="../OptionsDialog.cpp" line="195"/>
<location filename="../OptionsDialog.cpp" line="179"/>
<location filename="../OptionsDialog.cpp" line="182"/>
<location filename="../OptionsDialog.cpp" line="185"/>
<source>Auto</source>
<comment>Automatic language choice.</comment>
<translation>Automatisch</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="182"/>
<location filename="../OptionsDialog.cpp" line="174"/>
<source>%1 (Language priority)</source>
<comment>First language a person can talk with a different person/application. &quot;Native&quot; or &quot;Not Native&quot;.</comment>
<translation>%1 (Sprachenpriorität)</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="479"/>
<location filename="../OptionsDialog.cpp" line="470"/>
<source>The new Custom Folder will initialise after you restart %1.</source>
<translation>Der eigene Ordner wird initialisiert sobald du %1 neugestartet hast.</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="581"/>
<location filename="../OptionsDialog.cpp" line="572"/>
<source>View %1 User Statistics Online</source>
<translation>%1 Benutzerstatistik Online ansehen</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="597"/>
<location filename="../OptionsDialog.cpp" line="588"/>
<source>Not registered</source>
<translation>Nicht registriert</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="613"/>
<location filename="../OptionsDialog.cpp" line="626"/>
<location filename="../OptionsDialog.cpp" line="636"/>
<location filename="../OptionsDialog.cpp" line="637"/>
<location filename="../OptionsDialog.cpp" line="604"/>
<location filename="../OptionsDialog.cpp" line="617"/>
<location filename="../OptionsDialog.cpp" line="627"/>
<location filename="../OptionsDialog.cpp" line="628"/>
<source>Yes</source>
<translation>Ja</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="614"/>
<location filename="../OptionsDialog.cpp" line="625"/>
<location filename="../OptionsDialog.cpp" line="605"/>
<location filename="../OptionsDialog.cpp" line="616"/>
<source>No</source>
<translation>Nein</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="619"/>
<location filename="../OptionsDialog.cpp" line="642"/>
<location filename="../OptionsDialog.cpp" line="610"/>
<location filename="../OptionsDialog.cpp" line="633"/>
<source>OS defined</source>
<translation>OS-defined</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="632"/>
<location filename="../OptionsDialog.cpp" line="648"/>
<location filename="../OptionsDialog.cpp" line="623"/>
<location filename="../OptionsDialog.cpp" line="639"/>
<source>Steam defined</source>
<translation>Steam-definiert</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="489"/>
<location filename="../OptionsDialog.cpp" line="480"/>
<source>No Profile</source>
<comment>No Profile, as default</comment>
<translation>Kein Profil</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="496"/>
<location filename="../OptionsDialog.cpp" line="499"/>
<location filename="../OptionsDialog.cpp" line="501"/>
<location filename="../OptionsDialog.cpp" line="487"/>
<location filename="../OptionsDialog.cpp" line="490"/>
<location filename="../OptionsDialog.cpp" line="492"/>
<source>Profile: %1</source>
<translation>Profil: %1</translation>
</message>
@ -1265,28 +1265,28 @@ Drücke 1 für Standardmodus</translation>
<translation>Abbre&amp;chen</translation>
</message>
<message>
<location filename="../PlayerListDialog.cpp" line="159"/>
<location filename="../PlayerListDialog.cpp" line="160"/>
<source>Add Players...</source>
<translation>Spieler hinzufügen...</translation>
</message>
<message>
<location filename="../PlayerListDialog.cpp" line="159"/>
<location filename="../PlayerListDialog.cpp" line="160"/>
<source>Failed to add more Players because the limit of Players are %1!</source>
<translation>Fehlgeschlagen beim Hinzufügen von mehr Spielern weil der Limit von Spielern %1 ist!</translation>
</message>
<message>
<location filename="../PlayerListDialog.cpp" line="175"/>
<location filename="../PlayerListDialog.cpp" line="194"/>
<location filename="../PlayerListDialog.cpp" line="176"/>
<location filename="../PlayerListDialog.cpp" line="195"/>
<source>Add Player...</source>
<translation>Spieler hinzufügen...</translation>
</message>
<message>
<location filename="../PlayerListDialog.cpp" line="175"/>
<location filename="../PlayerListDialog.cpp" line="176"/>
<source>Enter Social Club Player ID</source>
<translation>Social Club Spieler ID eingeben</translation>
</message>
<message>
<location filename="../PlayerListDialog.cpp" line="194"/>
<location filename="../PlayerListDialog.cpp" line="195"/>
<source>Failed to add Player %1 because Player %1 is already added!</source>
<translation>Fehlgeschlagen beim Hinzufügen vom Spieler %1 weil Spieler %1 bereits hinzugefügt wurde!</translation>
</message>
@ -1753,7 +1753,7 @@ Drücke 1 für Standardmodus</translation>
<translation>Savegame löschen</translation>
</message>
<