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