From 0686b9a65df80b060cbb16c05d97f1f4c98dacc3 Mon Sep 17 00:00:00 2001 From: Syping Date: Mon, 15 Feb 2021 23:12:44 +0100 Subject: [PATCH] Add Cayo Perico Map, optimisations --- AboutDialog.cpp | 4 + CMakeLists.txt | 1 - ImportDialog.cpp | 4 + JsonEditorDialog.cpp | 74 +++---- MapLocationDialog.cpp | 172 ++++++++++------ MapLocationDialog.h | 8 +- OptionsDialog.cpp | 4 + PictureDialog.cpp | 32 ++- PlayerListDialog.cpp | 72 +++---- SavegameDialog.cpp | 4 + SnapmaticEditor.cpp | 172 ++++++---------- SnapmaticPicture.cpp | 238 +++++++++------------- SnapmaticPicture.h | 1 + SnapmaticWidget.cpp | 116 ++++------- StandardPaths.cpp | 7 +- StandardPaths.h | 3 +- StringParser.cpp | 16 +- StringParser.h | 5 +- UserInterface.cpp | 79 +++----- gta5view.pro | 1 - res/app.qrc | 1 + res/gta5sync.ts | 446 +++++++++++++++++++++--------------------- res/gta5sync_de.ts | 446 +++++++++++++++++++++--------------------- res/gta5sync_en_US.ts | 446 +++++++++++++++++++++--------------------- res/gta5sync_fr.ts | 446 +++++++++++++++++++++--------------------- res/gta5sync_ko.ts | 446 +++++++++++++++++++++--------------------- res/gta5sync_ru.ts | 446 +++++++++++++++++++++--------------------- res/gta5sync_uk.ts | 446 +++++++++++++++++++++--------------------- res/gta5sync_zh_TW.ts | 446 +++++++++++++++++++++--------------------- res/mapcayoperico.jpg | Bin 0 -> 207954 bytes 30 files changed, 2215 insertions(+), 2367 deletions(-) create mode 100644 res/mapcayoperico.jpg diff --git a/AboutDialog.cpp b/AboutDialog.cpp index 2e58a9d..642f9f7 100644 --- a/AboutDialog.cpp +++ b/AboutDialog.cpp @@ -29,7 +29,11 @@ AboutDialog::AboutDialog(QWidget *parent) : ui(new Ui::AboutDialog) { // Set Window Flags +#if QT_VERSION >= 0x050900 + setWindowFlag(Qt::WindowContextHelpButtonHint, false); +#else setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); +#endif // Build Strings QString appVersion = QApplication::applicationVersion(); diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e6ee10..08824db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,7 +47,6 @@ endif() list(APPEND GTA5VIEW_DEFINES -DGTA5SYNC_CMAKE -DGTA5SYNC_PROJECT - -DSNAPMATIC_NODEFAULT ) set(GTA5VIEW_SOURCES diff --git a/ImportDialog.cpp b/ImportDialog.cpp index a32f45b..369e1cf 100644 --- a/ImportDialog.cpp +++ b/ImportDialog.cpp @@ -49,7 +49,11 @@ ImportDialog::ImportDialog(QString profileName, QWidget *parent) : ui(new Ui::ImportDialog) { // Set Window Flags +#if QT_VERSION >= 0x050900 + setWindowFlag(Qt::WindowContextHelpButtonHint, false); +#else setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); +#endif ui->setupUi(this); ui->cmdOK->setDefault(true); diff --git a/JsonEditorDialog.cpp b/JsonEditorDialog.cpp index 9706934..ae13966 100644 --- a/JsonEditorDialog.cpp +++ b/JsonEditorDialog.cpp @@ -28,7 +28,6 @@ #if QT_VERSION >= 0x050200 #include -#include #endif #ifdef GTA5SYNC_TELEMETRY @@ -40,29 +39,30 @@ JsonEditorDialog::JsonEditorDialog(SnapmaticPicture *picture, QWidget *parent) : ui(new Ui::JsonEditorDialog) { // Set Window Flags +#if QT_VERSION >= 0x050900 + setWindowFlag(Qt::WindowContextHelpButtonHint, false); + setWindowFlag(Qt::WindowMinMaxButtonsHint, true); +#else setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowMinMaxButtonsHint); +#endif ui->setupUi(this); ui->cmdClose->setDefault(true); ui->cmdClose->setFocus(); // Set Icon for Close Button - if (QIcon::hasThemeIcon("dialog-close")) - { + if (QIcon::hasThemeIcon("dialog-close")) { ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close")); } - else if (QIcon::hasThemeIcon("gtk-close")) - { + else if (QIcon::hasThemeIcon("gtk-close")) { ui->cmdClose->setIcon(QIcon::fromTheme("gtk-close")); } // Set Icon for Save Button - if (QIcon::hasThemeIcon("document-save")) - { + if (QIcon::hasThemeIcon("document-save")) { ui->cmdSave->setIcon(QIcon::fromTheme("document-save")); } - else if (QIcon::hasThemeIcon("gtk-save")) - { + else if (QIcon::hasThemeIcon("gtk-save")) { ui->cmdSave->setIcon(QIcon::fromTheme("gtk-save")); } @@ -99,8 +99,7 @@ JsonEditorDialog::JsonEditorDialog(SnapmaticPicture *picture, QWidget *parent) : ui->hlButtons->setContentsMargins(9 * screenRatio, 0, 9 * screenRatio, 0); ui->vlInterface->setContentsMargins(0, 0, 0, 9 * screenRatio); #endif - if (screenRatio > 1) - { + if (screenRatio > 1) { ui->lineJSON->setMinimumHeight(qRound(1 * screenRatio)); ui->lineJSON->setMaximumHeight(qRound(1 * screenRatio)); ui->lineJSON->setLineWidth(qRound(1 * screenRatio)); @@ -121,28 +120,22 @@ void JsonEditorDialog::closeEvent(QCloseEvent *ev) QJsonDocument jsonOriginal = QJsonDocument::fromJson(jsonCode.toUtf8()); QString originalCode = QString::fromUtf8(jsonOriginal.toJson(QJsonDocument::Compact)); QString newCode = QString::fromUtf8(jsonNew.toJson(QJsonDocument::Compact)); - if (newCode != originalCode) - { + if (newCode != originalCode) { QMessageBox::StandardButton button = QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("

Unsaved changes detected

You want to save the JSON content before you quit?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::Cancel); - if (button == QMessageBox::Yes) - { - if (saveJsonContent()) - { + if (button == QMessageBox::Yes) { + if (saveJsonContent()) { ev->accept(); } - else - { + else { ev->ignore(); } return; } - else if (button == QMessageBox::No) - { + else if (button == QMessageBox::No) { ev->accept(); return; } - else - { + else { ev->ignore(); return; } @@ -153,47 +146,38 @@ bool JsonEditorDialog::saveJsonContent() { QString jsonPatched = QString(ui->txtJSON->toPlainText()).replace("\t", " "); QJsonDocument jsonNew = QJsonDocument::fromJson(jsonPatched.toUtf8()); - if (!jsonNew.isEmpty()) - { + if (!jsonNew.isEmpty()) { QJsonDocument jsonOriginal = QJsonDocument::fromJson(jsonCode.toUtf8()); QString originalCode = QString::fromUtf8(jsonOriginal.toJson(QJsonDocument::Compact)); QString newCode = QString::fromUtf8(jsonNew.toJson(QJsonDocument::Compact)); - if (newCode != originalCode) - { + if (newCode != originalCode) { QString currentFilePath = smpic->getPictureFilePath(); QString originalFilePath = smpic->getOriginalPictureFilePath(); QString backupFileName = originalFilePath % ".bak"; - if (!QFile::exists(backupFileName)) - { + if (!QFile::exists(backupFileName)) { QFile::copy(currentFilePath, backupFileName); } smpic->setJsonStr(newCode, true); - if (!smpic->isJsonOk()) - { + if (!smpic->isJsonOk()) { QString lastStep = smpic->getLastStep(false); QString readableError; - if (lastStep.contains("JSONINCOMPLETE") && lastStep.contains("JSONERROR")) - { + if (lastStep.contains("JSONINCOMPLETE") && lastStep.contains("JSONERROR")) { readableError = SnapmaticPicture::tr("JSON is incomplete and malformed"); } - else if (lastStep.contains("JSONINCOMPLETE")) - { + else if (lastStep.contains("JSONINCOMPLETE")) { readableError = SnapmaticPicture::tr("JSON is incomplete"); } - else if (lastStep.contains("JSONERROR")) - { + else if (lastStep.contains("JSONERROR")) { readableError = SnapmaticPicture::tr("JSON is malformed"); } - else - { + else { readableError = tr("JSON Error"); } QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of %1").arg(readableError)); smpic->setJsonStr(originalCode, true); return false; } - if (!smpic->exportPicture(currentFilePath)) - { + if (!smpic->exportPicture(currentFilePath)) { QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of I/O Error")); smpic->setJsonStr(originalCode, true); return false; @@ -206,8 +190,7 @@ bool JsonEditorDialog::saveJsonContent() telemetrySettings.beginGroup("Telemetry"); bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); telemetrySettings.endGroup(); - if (pushUsageData && Telemetry->canPush()) - { + if (pushUsageData && Telemetry->canPush()) { QJsonDocument jsonDocument; QJsonObject jsonObject; jsonObject["Type"] = "JSONEdited"; @@ -225,8 +208,7 @@ bool JsonEditorDialog::saveJsonContent() } return true; } - else - { + else { QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of JSON Error")); return false; } @@ -240,7 +222,5 @@ void JsonEditorDialog::on_cmdClose_clicked() void JsonEditorDialog::on_cmdSave_clicked() { if (saveJsonContent()) - { close(); - } } diff --git a/MapLocationDialog.cpp b/MapLocationDialog.cpp index 7268165..801177a 100644 --- a/MapLocationDialog.cpp +++ b/MapLocationDialog.cpp @@ -29,7 +29,11 @@ MapLocationDialog::MapLocationDialog(double x, double y, QWidget *parent) : ui(new Ui::MapLocationDialog) { // Set Window Flags +#if QT_VERSION >= 0x050900 + setWindowFlag(Qt::WindowContextHelpButtonHint, false); +#else setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); +#endif ui->setupUi(this); ui->cmdDone->setVisible(false); @@ -45,12 +49,10 @@ MapLocationDialog::MapLocationDialog(double x, double y, QWidget *parent) : ui->vlMapDialog->setSpacing(widgetMargin); setMinimumSize(500 * screenRatio, 600 * screenRatio); setMaximumSize(500 * screenRatio, 600 * screenRatio); - setFixedSize(500 * screenRatio, 600 * screenRatio); setMouseTracking(true); changeMode = false; propUpdate = false; - drawPointOnMap(xpos_old, ypos_old); } MapLocationDialog::~MapLocationDialog() @@ -66,6 +68,22 @@ void MapLocationDialog::drawPointOnMap(double xpos_d, double ypos_d) repaint(); } +void MapLocationDialog::setCayoPerico(bool isCayoPerico) +{ + qreal screenRatio = AppEnv::screenRatio(); + p_isCayoPerico = isCayoPerico; + if (isCayoPerico) { + setMinimumSize(500 * screenRatio, 500 * screenRatio); + setMaximumSize(500 * screenRatio, 500 * screenRatio); + ui->hlMapDialog->removeItem(ui->vlMapDialog); + ui->hlMapDialog->insertLayout(0, ui->vlMapDialog); + ui->hlMapDialog->removeItem(ui->vlPosLayout); + ui->hlMapDialog->addLayout(ui->vlPosLayout); + ui->labPos->setAlignment(Qt::AlignRight); + } + drawPointOnMap(xpos_old, ypos_old); +} + void MapLocationDialog::on_cmdChange_clicked() { qreal screenRatio = AppEnv::screenRatio(); @@ -85,45 +103,34 @@ void MapLocationDialog::on_cmdDone_clicked() { ui->cmdDone->setVisible(false); ui->cmdChange->setVisible(true); - if (xpos_new != xpos_old || ypos_new != ypos_old) - { + if (xpos_new != xpos_old || ypos_new != ypos_old) { ui->cmdApply->setVisible(true); ui->cmdRevert->setVisible(true); } - setCursor(Qt::ArrowCursor); changeMode = false; } -#if QT_VERSION >= 0x060000 void MapLocationDialog::updatePosFromEvent(double x, double y) { QSize mapPixelSize = size(); - double xpos_ad = x; - double ypos_ad = mapPixelSize.height() - y; - double xrat = 10000 / (double)mapPixelSize.width(); - double yrat = 12000 / (double)mapPixelSize.height(); - double xpos_rv = xrat * xpos_ad; - double ypos_rv = yrat * ypos_ad; - double xpos_fp = xpos_rv - 4000; - double ypos_fp = ypos_rv - 4000; - drawPointOnMap(xpos_fp, ypos_fp); + double x_per = x / mapPixelSize.width(); // get X % + double y_per = y / mapPixelSize.height(); // get Y % + double x_pos, y_pos; + if (p_isCayoPerico) { + x_pos = x_per * 2340; // 2340 is 100% for X (Cayo Perico) + y_pos = y_per * -2340; // -2340 is 100% for Y (Cayo Perico) + x_pos = x_pos + 3560; // +3560 gets corrected for X (Cayo Perico) + y_pos = y_pos - 3980; // -4000 gets corrected for Y (Cayo Perico) + } + else { + x_pos = x_per * 10000; // 10000 is 100% for X (Los Santos) + y_pos = y_per * -12000; // -12000 is 100% for Y (Los Santos) + x_pos = x_pos - 4000; // -4000 gets corrected for X (Los Santos) + y_pos = y_pos + 8000; // +8000 gets corrected for Y (Los Santos) + } + drawPointOnMap(x_pos, y_pos); } -#else -void MapLocationDialog::updatePosFromEvent(int x, int y) -{ - QSize mapPixelSize = size(); - int xpos_ad = x; - int ypos_ad = mapPixelSize.height() - y; - double xrat = 10000 / (double)mapPixelSize.width(); - double yrat = 12000 / (double)mapPixelSize.height(); - double xpos_rv = xrat * xpos_ad; - double ypos_rv = yrat * ypos_ad; - double xpos_fp = xpos_rv - 4000; - double ypos_fp = ypos_rv - 4000; - drawPointOnMap(xpos_fp, ypos_fp); -} -#endif void MapLocationDialog::paintEvent(QPaintEvent *ev) { @@ -132,73 +139,110 @@ void MapLocationDialog::paintEvent(QPaintEvent *ev) qreal screenRatioPR = AppEnv::screenRatioPR(); // Paint Map - QSize mapPixelSize = QSize(width() * screenRatioPR, height() * screenRatioPR); - painter.drawPixmap(0, 0, width(), height(), QPixmap(":/img/mappreview.jpg").scaled(mapPixelSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + QImage mapImage; + if (p_isCayoPerico) { + mapImage = QImage(":/img/mapcayoperico.jpg"); + } + else { + mapImage = QImage(":/img/mappreview.jpg"); + } + painter.setRenderHint(QPainter::SmoothPixmapTransform, true); + painter.drawImage(QRect(QPoint(0, 0), size()), mapImage); // Paint Marker + QSize mapPixelSize = size(); int pointMarkerSize = 8 * screenRatio; int pointMarkerHalfSize = pointMarkerSize / 2; - long xpos_ms = qRound(xpos_new); - long ypos_ms = qRound(ypos_new); - double xpos_ma = xpos_ms + 4000; - double ypos_ma = ypos_ms + 4000; - double xrat = (double)width() / 10000; - double yrat = (double)height() / 12000; - long xpos_mp = qRound(xpos_ma * xrat); - long ypos_mp = qRound(ypos_ma * yrat); - long xpos_pr; - long ypos_pr; + double xpos_mp, ypos_mp; + if (p_isCayoPerico) { + double xpos_per = xpos_new - 3560; // correct X in reserve + double ypos_per = ypos_new + 3980; // correct y in reserve + xpos_per = xpos_per / 2340; // divide 100% for X + ypos_per = ypos_per / -2340; // divide 100% for Y + xpos_mp = xpos_per * mapPixelSize.width(); // locate window width pos + ypos_mp = ypos_per * mapPixelSize.height(); // locate window height pos + } + else { + double xpos_per = xpos_new + 4000; // correct X in reserve + double ypos_per = ypos_new - 8000; // correct y in reserve + xpos_per = xpos_per / 10000; // divide 100% for X + ypos_per = ypos_per / -12000; // divide 100% for Y + xpos_mp = xpos_per * mapPixelSize.width(); // locate window width pos + ypos_mp = ypos_per * mapPixelSize.height(); // locate window height pos + } + long xpos_pr, ypos_pr; if (screenRatioPR != 1) { -#ifdef Q_OS_WIN - xpos_pr = xpos_mp - pointMarkerHalfSize; - ypos_pr = ypos_mp + pointMarkerHalfSize; -#else xpos_pr = xpos_mp - pointMarkerHalfSize + screenRatioPR; - ypos_pr = ypos_mp + pointMarkerHalfSize - screenRatioPR; -#endif + ypos_pr = ypos_mp - pointMarkerHalfSize + screenRatioPR; } else { xpos_pr = xpos_mp - pointMarkerHalfSize; - ypos_pr = ypos_mp + pointMarkerHalfSize; + ypos_pr = ypos_mp - pointMarkerHalfSize; } QPixmap mapMarkerPixmap = IconLoader::loadingPointmakerIcon().pixmap(QSize(pointMarkerSize, pointMarkerSize)); - painter.drawPixmap(xpos_pr, height() - ypos_pr, pointMarkerSize, pointMarkerSize, mapMarkerPixmap); + painter.drawPixmap(xpos_pr, ypos_pr, pointMarkerSize, pointMarkerSize, mapMarkerPixmap); QDialog::paintEvent(ev); } void MapLocationDialog::mouseMoveEvent(QMouseEvent *ev) { - if (!changeMode) { ev->ignore(); } - else if (ev->buttons() & Qt::LeftButton) - { + if (!changeMode) { + ev->ignore(); + } + else if (ev->buttons() & Qt::LeftButton) { #if QT_VERSION >= 0x060000 - updatePosFromEvent(ev->position().x(), ev->position().y()); + const QPointF localPos = ev->position(); +#elif QT_VERSION >= 0x050000 + const QPointF localPos = ev->localPos(); #else - updatePosFromEvent(ev->x(), ev->y()); + const QPoint localPos = ev->pos(); +#endif +#ifdef Q_OS_WIN + qreal screenRatioPR = AppEnv::screenRatioPR(); + if (screenRatioPR != 1) { + updatePosFromEvent(localPos.x() - screenRatioPR, localPos.y() - screenRatioPR); + } + else { + updatePosFromEvent(localPos.x(), localPos.y()); + } +#else + updatePosFromEvent(localPos.x(), localPos.y()); #endif ev->accept(); } - else - { + else { ev->ignore(); } } void MapLocationDialog::mouseReleaseEvent(QMouseEvent *ev) { - if (!changeMode) { ev->ignore(); } - else if (ev->button() == Qt::LeftButton) - { + if (!changeMode) { + ev->ignore(); + } + else if (ev->button() == Qt::LeftButton) { #if QT_VERSION >= 0x060000 - updatePosFromEvent(ev->position().x(), ev->position().y()); + const QPointF localPos = ev->position(); +#elif QT_VERSION >= 0x050000 + const QPointF localPos = ev->localPos(); #else - updatePosFromEvent(ev->x(), ev->y()); + const QPointF localPos = ev->posF(); +#endif +#ifdef Q_OS_WIN + qreal screenRatioPR = AppEnv::screenRatioPR(); + if (screenRatioPR != 1) { + updatePosFromEvent(localPos.x() - screenRatioPR, localPos.y() - screenRatioPR); + } + else { + updatePosFromEvent(localPos.x(), localPos.y()); + } +#else + updatePosFromEvent(localPos.x(), localPos.y()); #endif ev->accept(); } - else - { + else { ev->ignore(); } } diff --git a/MapLocationDialog.h b/MapLocationDialog.h index ecf847b..22075a0 100644 --- a/MapLocationDialog.h +++ b/MapLocationDialog.h @@ -1,6 +1,6 @@ /***************************************************************************** * gta5view Grand Theft Auto V Profile Viewer -* Copyright (C) 2017 Syping +* Copyright (C) 2017-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 @@ -33,6 +33,7 @@ class MapLocationDialog : public QDialog public: explicit MapLocationDialog(double x, double y, QWidget *parent = 0); void drawPointOnMap(double x, double y); + void setCayoPerico(bool isCayoPerico); bool propUpdated(); double getXpos(); double getYpos(); @@ -48,11 +49,7 @@ private slots: void on_cmdApply_clicked(); void on_cmdChange_clicked(); void on_cmdRevert_clicked(); -#if QT_VERSION >= 0x060000 void updatePosFromEvent(double x, double y); -#else - void updatePosFromEvent(int x, int y); -#endif void on_cmdClose_clicked(); private: @@ -62,6 +59,7 @@ private: double ypos_new; bool propUpdate; bool changeMode; + bool p_isCayoPerico; Ui::MapLocationDialog *ui; }; diff --git a/OptionsDialog.cpp b/OptionsDialog.cpp index a0b50db..321d705 100644 --- a/OptionsDialog.cpp +++ b/OptionsDialog.cpp @@ -55,7 +55,11 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) : ui(new Ui::OptionsDialog) { // Set Window Flags +#if QT_VERSION >= 0x050900 + setWindowFlag(Qt::WindowContextHelpButtonHint, false); +#else setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); +#endif // Setup User Interface ui->setupUi(this); diff --git a/PictureDialog.cpp b/PictureDialog.cpp index b0541d8..dfd062f 100644 --- a/PictureDialog.cpp +++ b/PictureDialog.cpp @@ -127,10 +127,20 @@ PictureDialog::PictureDialog(bool primaryWindow, ProfileDatabase *profileDB, Cre void PictureDialog::setupPictureDialog() { // Set Window Flags +#if QT_VERSION >= 0x050900 + setWindowFlag(Qt::WindowContextHelpButtonHint, false); + setWindowFlag(Qt::CustomizeWindowHint, true); +#else setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint^Qt::CustomizeWindowHint); +#endif #ifdef Q_OS_LINUX - // for stupid Window Manager (GNOME 3 should feel triggered) + // for stupid Window Manager like GNOME +#if QT_VERSION >= 0x050900 + setWindowFlag(Qt::Dialog, false); + setWindowFlag(Qt::Window, true); +#else setWindowFlags(windowFlags()^Qt::Dialog^Qt::Window); +#endif #endif // Setup User Interface @@ -684,7 +694,10 @@ void PictureDialog::on_labPicture_mouseDoubleClicked(Qt::MouseButton button) #endif PictureWidget *pictureWidget = new PictureWidget(this); // Work! pictureWidget->setObjectName("PictureWidget"); -#if QT_VERSION >= 0x050600 +#if QT_VERSION >= 0x050900 + pictureWidget->setWindowFlag(Qt::FramelessWindowHint, true); + pictureWidget->setWindowFlag(Qt::MaximizeUsingFullscreenGeometryHint, true); +#elif QT_VERSION >= 0x050600 pictureWidget->setWindowFlags(pictureWidget->windowFlags()^Qt::FramelessWindowHint^Qt::MaximizeUsingFullscreenGeometryHint); #else pictureWidget->setWindowFlags(pictureWidget->windowFlags()^Qt::FramelessWindowHint); @@ -729,13 +742,15 @@ int PictureDialog::getIndex() void PictureDialog::openPreviewMap() { SnapmaticPicture *picture = smpic; + SnapmaticProperties currentProperties = picture->getSnapmaticProperties(); MapLocationDialog *mapLocDialog; if (rqFullscreen && fullscreenWidget != nullptr) { - mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, fullscreenWidget); + mapLocDialog = new MapLocationDialog(currentProperties.location.x, currentProperties.location.y, fullscreenWidget); } else { - mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, this); + mapLocDialog = new MapLocationDialog(currentProperties.location.x, currentProperties.location.y, this); } + mapLocDialog->setCayoPerico(currentProperties.location.isCayoPerico); mapLocDialog->setWindowIcon(windowIcon()); mapLocDialog->setModal(true); #ifndef Q_OS_ANDROID @@ -746,10 +761,9 @@ void PictureDialog::openPreviewMap() mapLocDialog->exec(); if (mapLocDialog->propUpdated()) { // Update Snapmatic Properties - SnapmaticProperties localSpJson = picture->getSnapmaticProperties(); - localSpJson.location.x = mapLocDialog->getXpos(); - localSpJson.location.y = mapLocDialog->getYpos(); - localSpJson.location.z = 0; + currentProperties.location.x = mapLocDialog->getXpos(); + currentProperties.location.y = mapLocDialog->getYpos(); + currentProperties.location.z = 0; // Update Snapmatic Picture QString currentFilePath = picture->getPictureFilePath(); @@ -759,7 +773,7 @@ void PictureDialog::openPreviewMap() QFile::copy(currentFilePath, backupFileName); } SnapmaticProperties fallbackProperties = picture->getSnapmaticProperties(); - picture->setSnapmaticProperties(localSpJson); + picture->setSnapmaticProperties(currentProperties); if (!picture->exportPicture(currentFilePath)) { QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of I/O Error")); picture->setSnapmaticProperties(fallbackProperties); diff --git a/PlayerListDialog.cpp b/PlayerListDialog.cpp index 7ab0741..8531921 100644 --- a/PlayerListDialog.cpp +++ b/PlayerListDialog.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5view Grand Theft Auto V Profile Viewer -* Copyright (C) 2016-2020 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 @@ -31,7 +31,11 @@ PlayerListDialog::PlayerListDialog(QStringList players, ProfileDatabase *profile ui(new Ui::PlayerListDialog) { // Set Window Flags +#if QT_VERSION >= 0x050900 + setWindowFlag(Qt::WindowContextHelpButtonHint, false); +#else setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); +#endif listUpdated = false; ui->setupUi(this); @@ -39,40 +43,32 @@ PlayerListDialog::PlayerListDialog(QStringList players, ProfileDatabase *profile ui->cmdCancel->setFocus(); // Set Icon for Apply Button - if (QIcon::hasThemeIcon("dialog-ok-apply")) - { + if (QIcon::hasThemeIcon("dialog-ok-apply")) { ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok-apply")); } - else if (QIcon::hasThemeIcon("dialog-apply")) - { + else if (QIcon::hasThemeIcon("dialog-apply")) { ui->cmdApply->setIcon(QIcon::fromTheme("dialog-apply")); } - else if (QIcon::hasThemeIcon("gtk-apply")) - { + else if (QIcon::hasThemeIcon("gtk-apply")) { ui->cmdApply->setIcon(QIcon::fromTheme("gtk-apply")); } - else if (QIcon::hasThemeIcon("dialog-ok")) - { + else if (QIcon::hasThemeIcon("dialog-ok")) { ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok")); } - else if (QIcon::hasThemeIcon("gtk-ok")) - { + else if (QIcon::hasThemeIcon("gtk-ok")) { ui->cmdApply->setIcon(QIcon::fromTheme("dialog-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")); } // Set Icon for Manage Buttons - if (QIcon::hasThemeIcon("go-previous") && QIcon::hasThemeIcon("go-next") && QIcon::hasThemeIcon("list-add")) - { + if (QIcon::hasThemeIcon("go-previous") && QIcon::hasThemeIcon("go-next") && QIcon::hasThemeIcon("list-add")) { #if QT_VERSION < 0x050600 qreal screenRatio = AppEnv::screenRatio(); if (screenRatio != 1) { @@ -87,8 +83,7 @@ PlayerListDialog::PlayerListDialog(QStringList players, ProfileDatabase *profile ui->cmdMakeSe->setIcon(QIcon::fromTheme("go-next")); ui->cmdMakeAd->setIcon(QIcon::fromTheme("list-add")); } - else - { + else { #if QT_VERSION < 0x050600 qreal screenRatio = AppEnv::screenRatio(); if (screenRatio != 1) { @@ -112,12 +107,10 @@ PlayerListDialog::PlayerListDialog(QStringList players, ProfileDatabase *profile PlayerListDialog::~PlayerListDialog() { - for (QObject *object : ui->listAvPlayers->children()) - { + for (QObject *object : ui->listAvPlayers->children()) { delete object; } - for (QObject *object : ui->listSePlayers->children()) - { + for (QObject *object : ui->listSePlayers->children()) { delete object; } delete ui; @@ -131,16 +124,13 @@ void PlayerListDialog::on_cmdCancel_clicked() void PlayerListDialog::buildInterface() { const QStringList dbPlayers = profileDB->getPlayers(); - for (QString sePlayer : players) - { + for (const QString &sePlayer : players) { QListWidgetItem *playerItem = new QListWidgetItem(profileDB->getPlayerName(sePlayer)); playerItem->setData(Qt::UserRole, sePlayer); ui->listSePlayers->addItem(playerItem); } - for (QString dbPlayer : dbPlayers) - { - if (!players.contains(dbPlayer)) - { + for (const QString &dbPlayer : dbPlayers) { + if (!players.contains(dbPlayer)) { QListWidgetItem *playerItem = new QListWidgetItem(profileDB->getPlayerName(dbPlayer)); playerItem->setData(Qt::UserRole, dbPlayer); ui->listAvPlayers->addItem(playerItem); @@ -151,8 +141,7 @@ void PlayerListDialog::buildInterface() void PlayerListDialog::on_cmdMakeAv_clicked() { - for (QListWidgetItem *item : ui->listSePlayers->selectedItems()) - { + for (QListWidgetItem *item : ui->listSePlayers->selectedItems()) { QString playerName = item->text(); int playerID = item->data(Qt::UserRole).toInt(); delete item; @@ -166,13 +155,11 @@ void PlayerListDialog::on_cmdMakeAv_clicked() void PlayerListDialog::on_cmdMakeSe_clicked() { int maxPlayers = 30; - if (maxPlayers < ui->listSePlayers->count() + ui->listAvPlayers->selectedItems().count()) - { + if (maxPlayers < ui->listSePlayers->count() + ui->listAvPlayers->selectedItems().count()) { QMessageBox::warning(this, tr("Add Players..."), tr("Failed to add more Players because the limit of Players are %1!").arg(QString::number(maxPlayers))); return; } - for (QListWidgetItem *item : ui->listAvPlayers->selectedItems()) - { + for (QListWidgetItem *item : ui->listAvPlayers->selectedItems()) { QString playerName = item->text(); int playerID = item->data(Qt::UserRole).toInt(); delete item; @@ -186,15 +173,12 @@ void PlayerListDialog::on_cmdMakeAd_clicked() { bool playerOk; int playerID = QInputDialog::getInt(this, tr("Add Player..."), tr("Enter Social Club Player ID"), 1, 1, 214783647, 1, &playerOk, windowFlags()); - if (playerOk) - { - for (int i = 0; i < ui->listAvPlayers->count(); ++i) - { + if (playerOk) { + for (int i = 0; i < ui->listAvPlayers->count(); ++i) { QListWidgetItem *item = ui->listAvPlayers->item(i); QString itemPlayerName = item->text(); int itemPlayerID = item->data(Qt::UserRole).toInt(); - if (itemPlayerID == playerID) - { + if (itemPlayerID == playerID) { delete item; QListWidgetItem *playerItem = new QListWidgetItem(itemPlayerName); playerItem->setData(Qt::UserRole, playerID); @@ -202,8 +186,7 @@ void PlayerListDialog::on_cmdMakeAd_clicked() return; } } - for (int i = 0; i < ui->listSePlayers->count(); ++i) - { + for (int i = 0; i < ui->listSePlayers->count(); ++i) { QListWidgetItem *item = ui->listSePlayers->item(i); int itemPlayerID = item->data(Qt::UserRole).toInt(); if (itemPlayerID == playerID) @@ -221,8 +204,7 @@ void PlayerListDialog::on_cmdMakeAd_clicked() void PlayerListDialog::on_cmdApply_clicked() { players.clear(); - for (int i = 0; i < ui->listSePlayers->count(); ++i) - { + for (int i = 0; i < ui->listSePlayers->count(); ++i) { players += ui->listSePlayers->item(i)->data(Qt::UserRole).toString(); } emit playerListUpdated(players); diff --git a/SavegameDialog.cpp b/SavegameDialog.cpp index c13d82b..27b0229 100644 --- a/SavegameDialog.cpp +++ b/SavegameDialog.cpp @@ -28,7 +28,11 @@ SavegameDialog::SavegameDialog(QWidget *parent) : ui(new Ui::SavegameDialog) { // Set Window Flags +#if QT_VERSION >= 0x050900 + setWindowFlag(Qt::WindowContextHelpButtonHint, false); +#else setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); +#endif // Setup User Interface ui->setupUi(this); diff --git a/SnapmaticEditor.cpp b/SnapmaticEditor.cpp index f6b3b22..10414c5 100644 --- a/SnapmaticEditor.cpp +++ b/SnapmaticEditor.cpp @@ -41,41 +41,38 @@ SnapmaticEditor::SnapmaticEditor(CrewDatabase *crewDB, ProfileDatabase *profileD ui(new Ui::SnapmaticEditor) { // Set Window Flags +#if QT_VERSION >= 0x050900 + setWindowFlag(Qt::WindowContextHelpButtonHint, false); +#else setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); +#endif ui->setupUi(this); ui->cmdCancel->setDefault(true); ui->cmdCancel->setFocus(); // Set Icon for Apply Button - if (QIcon::hasThemeIcon("dialog-ok-apply")) - { + if (QIcon::hasThemeIcon("dialog-ok-apply")) { ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok-apply")); } - else if (QIcon::hasThemeIcon("dialog-apply")) - { + else if (QIcon::hasThemeIcon("dialog-apply")) { ui->cmdApply->setIcon(QIcon::fromTheme("dialog-apply")); } - else if (QIcon::hasThemeIcon("gtk-apply")) - { + else if (QIcon::hasThemeIcon("gtk-apply")) { ui->cmdApply->setIcon(QIcon::fromTheme("gtk-apply")); } - else if (QIcon::hasThemeIcon("dialog-ok")) - { + else if (QIcon::hasThemeIcon("dialog-ok")) { ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok")); } - else if (QIcon::hasThemeIcon("gtk-ok")) - { + else if (QIcon::hasThemeIcon("gtk-ok")) { ui->cmdApply->setIcon(QIcon::fromTheme("dialog-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")); } @@ -96,27 +93,18 @@ SnapmaticEditor::~SnapmaticEditor() void SnapmaticEditor::selfie_toggled(bool checked) { - if (checked) - { - isSelfie = true; - } - else - { - isSelfie = false; - } + isSelfie = checked; } void SnapmaticEditor::mugshot_toggled(bool checked) { - if (checked) - { + if (checked) { isMugshot = true; ui->cbDirector->setEnabled(false); ui->cbDirector->setChecked(false); } - else - { + else { isMugshot = false; ui->cbDirector->setEnabled(true); } @@ -124,14 +112,12 @@ void SnapmaticEditor::mugshot_toggled(bool checked) void SnapmaticEditor::editor_toggled(bool checked) { - if (checked) - { + if (checked) { isEditor = true; ui->cbDirector->setEnabled(false); ui->cbDirector->setChecked(false); } - else - { + else { isEditor = false; ui->cbDirector->setEnabled(true); } @@ -139,8 +125,7 @@ void SnapmaticEditor::editor_toggled(bool checked) void SnapmaticEditor::on_rbSelfie_toggled(bool checked) { - if (checked) - { + if (checked) { mugshot_toggled(false); editor_toggled(false); selfie_toggled(true); @@ -149,8 +134,7 @@ void SnapmaticEditor::on_rbSelfie_toggled(bool checked) void SnapmaticEditor::on_rbMugshot_toggled(bool checked) { - if (checked) - { + if (checked) { selfie_toggled(false); editor_toggled(false); mugshot_toggled(true); @@ -159,8 +143,7 @@ void SnapmaticEditor::on_rbMugshot_toggled(bool checked) void SnapmaticEditor::on_rbEditor_toggled(bool checked) { - if (checked) - { + if (checked) { selfie_toggled(false); mugshot_toggled(false); editor_toggled(true); @@ -169,8 +152,7 @@ void SnapmaticEditor::on_rbEditor_toggled(bool checked) void SnapmaticEditor::on_rbCustom_toggled(bool checked) { - if (checked) - { + if (checked) { selfie_toggled(false); mugshot_toggled(false); editor_toggled(false); @@ -189,20 +171,16 @@ void SnapmaticEditor::setSnapmaticPicture(SnapmaticPicture *picture) playersList = snapmaticProperties.playersList; ui->cbDirector->setChecked(snapmaticProperties.isFromDirector); ui->cbMeme->setChecked(snapmaticProperties.isMeme); - if (isSelfie) - { + if (isSelfie) { ui->rbSelfie->setChecked(true); } - else if (isMugshot) - { + else if (isMugshot) { ui->rbMugshot->setChecked(true); } - else if (isEditor) - { + else if (isEditor) { ui->rbEditor->setChecked(true); } - else - { + else { ui->rbCustom->setChecked(true); } setSnapmaticCrew(returnCrewName(crewID)); @@ -212,8 +190,7 @@ void SnapmaticEditor::setSnapmaticPicture(SnapmaticPicture *picture) void SnapmaticEditor::insertPlayerNames(QStringList *players) { - for (int i = 0; i < players->size(); ++i) - { + for (int i = 0; i < players->size(); ++i) { players->replace(i, profileDB->getPlayerName(players->at(i))); } } @@ -229,54 +206,48 @@ void SnapmaticEditor::setSnapmaticPlayers(const QStringList &players) { QString editStr = QString("%1").arg(tr("Edit")); QString playersStr; - if (players.length() != 1) - { + if (players.length() != 1) { playersStr = tr("Players: %1 (%2)", "Multiple Player are inserted here"); } - else - { + else { playersStr = tr("Player: %1 (%2)", "One Player is inserted here"); } - if (players.length() != 0) - { + if (players.length() != 0) { ui->labPlayers->setText(playersStr.arg(players.join(", "), editStr)); } - else - { + else { ui->labPlayers->setText(playersStr.arg(QApplication::translate("PictureDialog", "No Players"), editStr)); } #ifndef Q_OS_ANDROID ui->gbValues->resize(ui->gbValues->width(), ui->gbValues->heightForWidth(ui->gbValues->width())); ui->frameWidget->resize(ui->gbValues->width(), ui->frameWidget->heightForWidth(ui->frameWidget->width())); - if (heightForWidth(width()) > height()) { resize(width(), heightForWidth(width())); } + if (heightForWidth(width()) > height()) + resize(width(), heightForWidth(width())); #endif } void SnapmaticEditor::setSnapmaticTitle(const QString &title) { - if (title.length() > 39) - { + if (title.length() > 39) { snapmaticTitle = title.left(39); } - else - { + else { snapmaticTitle = title; } QString editStr = QString("%1").arg(tr("Edit")); QString titleStr = tr("Title: %1 (%2)").arg(StringParser::escapeString(snapmaticTitle), editStr); ui->labTitle->setText(titleStr); - if (SnapmaticPicture::verifyTitle(snapmaticTitle)) - { + if (SnapmaticPicture::verifyTitle(snapmaticTitle)) { ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("%1").arg(tr("Yes", "Yes, should work fine")))); } - else - { + else { ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("%1").arg(tr("No", "No, could lead to issues")))); } #ifndef Q_OS_ANDROID ui->gbValues->resize(ui->gbValues->width(), ui->gbValues->heightForWidth(ui->gbValues->width())); ui->frameWidget->resize(ui->gbValues->width(), ui->frameWidget->heightForWidth(ui->frameWidget->width())); - if (heightForWidth(width()) > height()) { resize(width(), heightForWidth(width())); } + if (heightForWidth(width()) > height()) + resize(width(), heightForWidth(width())); #endif } @@ -288,7 +259,8 @@ void SnapmaticEditor::setSnapmaticCrew(const QString &crew) #ifndef Q_OS_ANDROID ui->gbValues->resize(ui->gbValues->width(), ui->gbValues->heightForWidth(ui->gbValues->width())); ui->frameWidget->resize(ui->gbValues->width(), ui->frameWidget->heightForWidth(ui->frameWidget->width())); - if (heightForWidth(width()) > height()) { resize(width(), heightForWidth(width())); } + if (heightForWidth(width()) > height()) + resize(width(), heightForWidth(width())); #endif } @@ -304,8 +276,7 @@ void SnapmaticEditor::on_cmdCancel_clicked() void SnapmaticEditor::on_cmdApply_clicked() { - if (ui->cbQualify->isChecked()) - { + if (ui->cbQualify->isChecked()) { qualifyAvatar(); } snapmaticProperties.crewID = crewID; @@ -315,27 +286,23 @@ void SnapmaticEditor::on_cmdApply_clicked() snapmaticProperties.isFromDirector = ui->cbDirector->isChecked(); snapmaticProperties.isMeme = ui->cbMeme->isChecked(); snapmaticProperties.playersList = playersList; - if (smpic) - { + if (smpic) { QString currentFilePath = smpic->getPictureFilePath(); QString originalFilePath = smpic->getOriginalPictureFilePath(); QString backupFileName = originalFilePath % ".bak"; - if (!QFile::exists(backupFileName)) - { + if (!QFile::exists(backupFileName)) { QFile::copy(currentFilePath, backupFileName); } SnapmaticProperties fallbackProperties = smpic->getSnapmaticProperties(); QString fallbackTitle = smpic->getPictureTitle(); smpic->setSnapmaticProperties(snapmaticProperties); smpic->setPictureTitle(snapmaticTitle); - if (!smpic->exportPicture(currentFilePath)) - { + if (!smpic->exportPicture(currentFilePath)) { QMessageBox::warning(this, tr("Snapmatic Properties"), tr("Patching of Snapmatic Properties failed because of I/O Error")); smpic->setSnapmaticProperties(fallbackProperties); smpic->setPictureTitle(fallbackTitle); } - else - { + else { smpic->updateStrings(); smpic->emitUpdate(); #ifdef GTA5SYNC_TELEMETRY @@ -343,8 +310,7 @@ void SnapmaticEditor::on_cmdApply_clicked() telemetrySettings.beginGroup("Telemetry"); bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); telemetrySettings.endGroup(); - if (pushUsageData && Telemetry->canPush()) - { + if (pushUsageData && Telemetry->canPush()) { QJsonDocument jsonDocument; QJsonObject jsonObject; jsonObject["Type"] = "PropertyEdited"; @@ -373,8 +339,7 @@ void SnapmaticEditor::qualifyAvatar() void SnapmaticEditor::on_cbQualify_toggled(bool checked) { - if (checked) - { + if (checked) { ui->cbMeme->setEnabled(false); ui->cbDirector->setEnabled(false); ui->rbCustom->setEnabled(false); @@ -382,15 +347,13 @@ void SnapmaticEditor::on_cbQualify_toggled(bool checked) ui->rbEditor->setEnabled(false); ui->rbMugshot->setEnabled(false); } - else - { + else { ui->cbMeme->setEnabled(true); ui->rbCustom->setEnabled(true); ui->rbSelfie->setEnabled(true); ui->rbEditor->setEnabled(true); ui->rbMugshot->setEnabled(true); - if (ui->rbSelfie->isChecked() || ui->rbCustom->isChecked()) - { + if (ui->rbSelfie->isChecked() || ui->rbCustom->isChecked()) { ui->cbDirector->setEnabled(true); } } @@ -398,8 +361,7 @@ void SnapmaticEditor::on_cbQualify_toggled(bool checked) void SnapmaticEditor::on_labPlayers_linkActivated(const QString &link) { - if (link == "g5e://editplayers") - { + if (link == "g5e://editplayers") { PlayerListDialog *playerListDialog = new PlayerListDialog(playersList, profileDB, this); connect(playerListDialog, SIGNAL(playerListUpdated(QStringList)), this, SLOT(playerListUpdated(QStringList))); playerListDialog->setModal(true); @@ -411,12 +373,10 @@ void SnapmaticEditor::on_labPlayers_linkActivated(const QString &link) void SnapmaticEditor::on_labTitle_linkActivated(const QString &link) { - if (link == "g5e://edittitle") - { + if (link == "g5e://edittitle") { bool ok; QString newTitle = QInputDialog::getText(this, tr("Snapmatic Title"), tr("New Snapmatic title:"), QLineEdit::Normal, snapmaticTitle, &ok, windowFlags()); - if (ok && !newTitle.isEmpty()) - { + if (ok && !newTitle.isEmpty()) { setSnapmaticTitle(newTitle); } } @@ -424,39 +384,33 @@ void SnapmaticEditor::on_labTitle_linkActivated(const QString &link) void SnapmaticEditor::on_labCrew_linkActivated(const QString &link) { - if (link == "g5e://editcrew") - { + if (link == "g5e://editcrew") { bool ok; int indexNum = 0; QStringList itemList; QStringList crewList = crewDB->getCrews(); - if (!crewList.contains(QLatin1String("0"))) - { + if (!crewList.contains(QLatin1String("0"))) { crewList += QLatin1String("0"); } crewList.sort(); - for (QString crew : crewList) - { + for (const QString &crew : crewList) { itemList += QString("%1 (%2)").arg(crew, returnCrewName(crew.toInt())); } - if (crewList.contains(QString::number(crewID))) - { + if (crewList.contains(QString::number(crewID))) { indexNum = crewList.indexOf(QString::number(crewID)); } QString newCrew = QInputDialog::getItem(this, tr("Snapmatic Crew"), tr("New Snapmatic crew:"), itemList, indexNum, true, &ok, windowFlags()); - if (ok && !newCrew.isEmpty()) - { - if (newCrew.contains(" ")) newCrew = newCrew.split(" ").at(0); - if (newCrew.length() > 10) return; - for (QChar crewChar : newCrew) - { - if (!crewChar.isNumber()) - { + if (ok && !newCrew.isEmpty()) { + if (newCrew.contains(" ")) + newCrew = newCrew.split(" ").at(0); + if (newCrew.length() > 10) + return; + for (const QChar &crewChar : newCrew) { + if (!crewChar.isNumber()) { return; } } - if (!crewList.contains(newCrew)) - { + if (!crewList.contains(newCrew)) { crewDB->addCrew(crewID); } crewID = newCrew.toInt(); diff --git a/SnapmaticPicture.cpp b/SnapmaticPicture.cpp index b732703..d137f41 100644 --- a/SnapmaticPicture.cpp +++ b/SnapmaticPicture.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5spv Grand Theft Auto Snapmatic Picture Viewer -* Copyright (C) 2016-2020 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 @@ -84,8 +84,7 @@ bool SnapmaticPicture::preloadFile() isFormatSwitch = false; - if (!picFile->open(QFile::ReadOnly)) - { + if (!picFile->open(QFile::ReadOnly)) { lastStep = "1;/1,OpenFile," % convertDrawStringForLog(picFilePath); delete picFile; return false; @@ -98,8 +97,7 @@ bool SnapmaticPicture::preloadFile() if (!ok) return false; - if (picFilePath.right(4) != QLatin1String(".g5e")) - { + if (picFilePath.right(4) != QLatin1String(".g5e")) { if (p_ragePhoto.photoFormat() == RagePhoto::PhotoFormat::G5EX) isFormatSwitch = true; } @@ -122,9 +120,9 @@ bool SnapmaticPicture::readingPicture(bool cacheEnabled_) if (!ok) return false; - if (cacheEnabled) picOk = cachePicture.loadFromData(p_ragePhoto.photoData(), "JPEG"); - if (!cacheEnabled) - { + if (cacheEnabled) + picOk = cachePicture.loadFromData(p_ragePhoto.photoData(), "JPEG"); + if (!cacheEnabled) { QImage tempPicture; picOk = tempPicture.loadFromData(p_ragePhoto.photoData(), "JPEG"); } @@ -154,19 +152,18 @@ void SnapmaticPicture::updateStrings() pictureStr = tr("PHOTO - %1").arg(localProperties.createdDateTime.toString("MM/dd/yy HH:mm:ss")); sortStr = localProperties.createdDateTime.toString("yyMMddHHmmss") % QString::number(localProperties.uid); QString exportStr = localProperties.createdDateTime.toString("yyyyMMdd") % "-" % QString::number(localProperties.uid); - if (getSnapmaticFormat() == SnapmaticFormat::G5E_Format) picFileName = "PGTA5" % QString::number(localProperties.uid); + if (getSnapmaticFormat() == SnapmaticFormat::G5E_Format) + picFileName = "PGTA5" % QString::number(localProperties.uid); picExportFileName = exportStr % "_" % cmpPicTitl; } bool SnapmaticPicture::readingPictureFromFile(const QString &fileName, bool cacheEnabled_) { - if (!fileName.isEmpty()) - { + if (!fileName.isEmpty()) { picFilePath = fileName; return readingPicture(cacheEnabled_); } - else - { + else { return false; } } @@ -244,12 +241,10 @@ QString SnapmaticPicture::getExportPictureFileName() QString SnapmaticPicture::getOriginalPictureFileName() { QString newPicFileName = picFileName; - if (picFileName.right(4) == ".bak") - { + if (picFileName.right(4) == ".bak") { newPicFileName = QString(picFileName).remove(picFileName.length() - 4, 4); } - if (picFileName.right(7) == ".hidden") - { + if (picFileName.right(7) == ".hidden") { newPicFileName = QString(picFileName).remove(picFileName.length() - 7, 7); } return newPicFileName; @@ -258,12 +253,10 @@ QString SnapmaticPicture::getOriginalPictureFileName() QString SnapmaticPicture::getOriginalPictureFilePath() { QString newPicFilePath = picFilePath; - if (picFilePath.right(4) == ".bak") - { + if (picFilePath.right(4) == ".bak") { newPicFilePath = QString(picFilePath).remove(picFilePath.length() - 4, 4); } - if (picFilePath.right(7) == ".hidden") - { + if (picFilePath.right(7) == ".hidden") { newPicFilePath = QString(picFilePath).remove(picFilePath.length() - 7, 7); } return newPicFilePath; @@ -296,79 +289,65 @@ QString SnapmaticPicture::getPictureStr() QString SnapmaticPicture::getLastStep(bool readable) { - if (readable) - { + if (readable) { QStringList lastStepList = lastStep.split(";/"); - if (lastStepList.length() < 2) { return lastStep; } + if (lastStepList.length() < 2) + return lastStep; bool intOk; QStringList descStepList = lastStepList.at(1).split(","); - if (descStepList.length() < 1) { return lastStep; } + if (descStepList.length() < 1) + return lastStep; int argsCount = descStepList.at(0).toInt(&intOk); if (!intOk) { return lastStep; } - if (argsCount == 1) - { + if (argsCount == 1) { QString currentAction = descStepList.at(1); QString actionFile = descStepList.at(2); - if (currentAction == "OpenFile") - { + if (currentAction == "OpenFile") { return tr("open file %1").arg(actionFile); } } - else if (argsCount == 3 || argsCount == 4) - { + else if (argsCount == 3 || argsCount == 4) { QString currentAction = descStepList.at(1); QString actionFile = descStepList.at(2); QString actionError = descStepList.at(4); QString actionError2; if (argsCount == 4) { actionError2 = descStepList.at(5); } - if (currentAction == "ReadingFile") - { + if (currentAction == "ReadingFile") { QString readableError = actionError; - if (actionError == "NOHEADER") - { + if (actionError == "NOHEADER") { readableError = tr("header not exists"); } - else if (actionError == "MALFORMEDHEADER") - { + else if (actionError == "MALFORMEDHEADER") { readableError = tr("header is malformed"); } - else if (actionError == "NOJPEG" || actionError == "NOPIC") - { + else if (actionError == "NOJPEG" || actionError == "NOPIC") { readableError = tr("picture not exists (%1)").arg(actionError); } - else if (actionError == "NOJSON" || actionError == "CTJSON") - { + else if (actionError == "NOJSON" || actionError == "CTJSON") { readableError = tr("JSON not exists (%1)").arg(actionError); } - else if (actionError == "NOTITL" || actionError == "CTTITL") - { + else if (actionError == "NOTITL" || actionError == "CTTITL") { readableError = tr("title not exists (%1)").arg(actionError); } - else if (actionError == "NODESC" || actionError == "CTDESC") - { + else if (actionError == "NODESC" || actionError == "CTDESC") { readableError = tr("description not exists (%1)").arg(actionError); } - else if (actionError == "JSONINCOMPLETE" && actionError2 == "JSONERROR") - { + else if (actionError == "JSONINCOMPLETE" && actionError2 == "JSONERROR") { readableError = tr("JSON is incomplete and malformed"); } - else if (actionError == "JSONINCOMPLETE") - { + else if (actionError == "JSONINCOMPLETE") { readableError = tr("JSON is incomplete"); } - else if (actionError == "JSONERROR") - { + else if (actionError == "JSONERROR") { readableError = tr("JSON is malformed"); } return tr("reading file %1 because of %2", "Example for %2: JSON is malformed error").arg(actionFile, readableError); } - else - { + else { return lastStep; } } - else - { + else { return lastStep; } } @@ -437,25 +416,20 @@ void SnapmaticPicture::parseJsonContent() bool jsonIncomplete = false; bool jsonError = false; - if (jsonObject.contains("loc")) - { - if (jsonObject["loc"].isObject()) - { + if (jsonObject.contains("loc")) { + if (jsonObject["loc"].isObject()) { QJsonObject locObject = jsonObject["loc"].toObject(); - if (locObject.contains("x")) - { + if (locObject.contains("x")) { if (locObject["x"].isDouble()) { localProperties.location.x = locObject["x"].toDouble(); } else { jsonError = true; } } else { jsonIncomplete = true; } - if (locObject.contains("y")) - { + if (locObject.contains("y")) { if (locObject["y"].isDouble()) { localProperties.location.y = locObject["y"].toDouble(); } else { jsonError = true; } } else { jsonIncomplete = true; } - if (locObject.contains("z")) - { + if (locObject.contains("z")) { if (locObject["z"].isDouble()) { localProperties.location.z = locObject["z"].toDouble(); } else { jsonError = true; } } @@ -464,35 +438,30 @@ void SnapmaticPicture::parseJsonContent() else { jsonError = true; } } else { jsonIncomplete = true; } - if (jsonObject.contains("uid")) - { + if (jsonObject.contains("uid")) { bool uidOk; localProperties.uid = jsonMap["uid"].toInt(&uidOk); if (!uidOk) { jsonError = true; } } else { jsonIncomplete = true; } - if (jsonObject.contains("area")) - { + if (jsonObject.contains("area")) { if (jsonObject["area"].isString()) { localProperties.location.area = jsonObject["area"].toString(); } else { jsonError = true; } } else { jsonIncomplete = true; } - if (jsonObject.contains("crewid")) - { + if (jsonObject.contains("crewid")) { bool crewIDOk; localProperties.crewID = jsonMap["crewid"].toInt(&crewIDOk); if (!crewIDOk) { jsonError = true; } } else { jsonIncomplete = true; } - if (jsonObject.contains("street")) - { + if (jsonObject.contains("street")) { bool streetIDOk; localProperties.streetID = jsonMap["street"].toInt(&streetIDOk); if (!streetIDOk) { jsonError = true; } } else { jsonIncomplete = true; } - if (jsonObject.contains("creat")) - { + if (jsonObject.contains("creat")) { bool timestampOk; QDateTime createdTimestamp; localProperties.createdTimestamp = jsonMap["creat"].toUInt(×tampOk); @@ -505,59 +474,53 @@ void SnapmaticPicture::parseJsonContent() if (!timestampOk) { jsonError = true; } } else { jsonIncomplete = true; } - if (jsonObject.contains("plyrs")) - { + if (jsonObject.contains("plyrs")) { if (jsonObject["plyrs"].isArray()) { localProperties.playersList = jsonMap["plyrs"].toStringList(); } else { jsonError = true; } } // else { jsonIncomplete = true; } // 2016 Snapmatic pictures left out plyrs when none are captured, so don't force exists on that one - if (jsonObject.contains("meme")) - { + if (jsonObject.contains("meme")) { if (jsonObject["meme"].isBool()) { localProperties.isMeme = jsonObject["meme"].toBool(); } else { jsonError = true; } } else { jsonIncomplete = true; } - if (jsonObject.contains("mug")) - { + if (jsonObject.contains("mug")) { if (jsonObject["mug"].isBool()) { localProperties.isMug = jsonObject["mug"].toBool(); } else { jsonError = true; } } else { jsonIncomplete = true; } - if (jsonObject.contains("slf")) - { + if (jsonObject.contains("slf")) { if (jsonObject["slf"].isBool()) { localProperties.isSelfie = jsonObject["slf"].toBool(); } else { jsonError = true; } } else { jsonIncomplete = true; } - if (jsonObject.contains("drctr")) - { + if (jsonObject.contains("drctr")) { if (jsonObject["drctr"].isBool()) { localProperties.isFromDirector = jsonObject["drctr"].toBool(); } else { jsonError = true; } } else { jsonIncomplete = true; } - if (jsonObject.contains("rsedtr")) - { + if (jsonObject.contains("rsedtr")) { if (jsonObject["rsedtr"].isBool()) { localProperties.isFromRSEditor = jsonObject["rsedtr"].toBool(); } else { jsonError = true; } } - // else { jsonIncomplete = true; } // Game release Snapmatic pictures prior May 2015 left out rsedtr, so don't force exists on that one + else { localProperties.isFromRSEditor = false; } + if (jsonObject.contains("onislandx")) { + if (jsonObject["onislandx"].isBool()) { localProperties.location.isCayoPerico = jsonObject["onislandx"].toBool(); } + else { jsonError = true; } + } + else { localProperties.location.isCayoPerico = false; } - if (!jsonIncomplete && !jsonError) - { + if (!jsonIncomplete && !jsonError) { jsonOk = true; } - else - { - if (jsonIncomplete && jsonError) - { + else { + if (jsonIncomplete && jsonError) { lastStep = "2;/4,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,JSONINCOMPLETE,JSONERROR"; } - else if (jsonIncomplete) - { + else if (jsonIncomplete) { lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,JSONINCOMPLETE"; } - else if (jsonError) - { + else if (jsonError) { lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,JSONERROR"; } jsonOk = false; @@ -585,10 +548,10 @@ bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties properties) jsonObject["slf"] = properties.isSelfie; jsonObject["drctr"] = properties.isFromDirector; jsonObject["rsedtr"] = properties.isFromRSEditor; + jsonObject["onislandx"] = properties.location.isCayoPerico; QJsonDocument jsonDocument(jsonObject); - if (setJsonStr(QString::fromUtf8(jsonDocument.toJson(QJsonDocument::Compact)))) - { + if (setJsonStr(QString::fromUtf8(jsonDocument.toJson(QJsonDocument::Compact)))) { localProperties = properties; return true; } @@ -613,14 +576,11 @@ bool SnapmaticPicture::exportPicture(const QString &fileName, SnapmaticFormat fo { // Keep current format when Auto_Format is used SnapmaticFormat format = format_; - if (format_ == SnapmaticFormat::Auto_Format) - { - if (p_ragePhoto.photoFormat() == RagePhoto::PhotoFormat::G5EX) - { + if (format_ == SnapmaticFormat::Auto_Format) { + if (p_ragePhoto.photoFormat() == RagePhoto::PhotoFormat::G5EX) { format = SnapmaticFormat::G5E_Format; } - else - { + else { format = SnapmaticFormat::PGTA_Format; } } @@ -631,10 +591,8 @@ bool SnapmaticPicture::exportPicture(const QString &fileName, SnapmaticFormat fo #else QFile *picFile = new QFile(StandardPaths::tempLocation() % "/" % QFileInfo(fileName).fileName() % ".tmp"); #endif - if (picFile->open(QIODevice::WriteOnly)) - { - if (format == SnapmaticFormat::G5E_Format) - { + if (picFile->open(QIODevice::WriteOnly)) { + if (format == SnapmaticFormat::G5E_Format) { p_ragePhoto.save(picFile, RagePhoto::PhotoFormat::G5EX); #if QT_VERSION >= 0x050000 saveSuccess = picFile->commit(); @@ -644,8 +602,7 @@ bool SnapmaticPicture::exportPicture(const QString &fileName, SnapmaticFormat fo #endif delete picFile; } - else if (format == SnapmaticFormat::JPEG_Format) - { + else if (format == SnapmaticFormat::JPEG_Format) { picFile->write(p_ragePhoto.photoData()); #if QT_VERSION >= 0x050000 saveSuccess = picFile->commit(); @@ -655,8 +612,7 @@ bool SnapmaticPicture::exportPicture(const QString &fileName, SnapmaticFormat fo #endif delete picFile; } - else - { + else { p_ragePhoto.save(picFile, RagePhoto::PhotoFormat::GTA5); #if QT_VERSION >= 0x050000 saveSuccess = picFile->commit(); @@ -688,8 +644,7 @@ bool SnapmaticPicture::exportPicture(const QString &fileName, SnapmaticFormat fo #endif return saveSuccess; } - else - { + else { delete picFile; return saveSuccess; } @@ -708,16 +663,13 @@ void SnapmaticPicture::setPicFilePath(const QString &picFilePath_) bool SnapmaticPicture::deletePicFile() { bool success = false; - if (!QFile::exists(picFilePath)) - { + if (!QFile::exists(picFilePath)) { success = true; } - else if (QFile::remove(picFilePath)) - { + else if (QFile::remove(picFilePath)) { success = true; } - if (isHidden()) - { + if (isHidden()) { const QString picBakPath = QString(picFilePath).remove(picFilePath.length() - 7, 7) % ".bak"; if (QFile::exists(picBakPath)) QFile::remove(picBakPath); } @@ -732,8 +684,7 @@ bool SnapmaticPicture::deletePicFile() bool SnapmaticPicture::isHidden() { - if (picFilePath.right(7) == QLatin1String(".hidden")) - { + if (picFilePath.right(7) == QLatin1String(".hidden")) { return true; } return false; @@ -741,8 +692,7 @@ bool SnapmaticPicture::isHidden() bool SnapmaticPicture::isVisible() { - if (picFilePath.right(7) == QLatin1String(".hidden")) - { + if (picFilePath.right(7) == QLatin1String(".hidden")) { return false; } return true; @@ -750,15 +700,12 @@ bool SnapmaticPicture::isVisible() bool SnapmaticPicture::setPictureHidden() { - if (p_ragePhoto.photoFormat() == RagePhoto::PhotoFormat::G5EX) - { + if (p_ragePhoto.photoFormat() == RagePhoto::PhotoFormat::G5EX) { return false; } - if (!isHidden()) - { + if (!isHidden()) { QString newPicFilePath = QString(picFilePath % ".hidden"); - if (QFile::rename(picFilePath, newPicFilePath)) - { + if (QFile::rename(picFilePath, newPicFilePath)) { picFilePath = newPicFilePath; return true; } @@ -769,15 +716,12 @@ bool SnapmaticPicture::setPictureHidden() bool SnapmaticPicture::setPictureVisible() { - if (p_ragePhoto.photoFormat() == RagePhoto::PhotoFormat::G5EX) - { + if (p_ragePhoto.photoFormat() == RagePhoto::PhotoFormat::G5EX) { return false; } - if (isHidden()) - { + if (isHidden()) { QString newPicFilePath = QString(picFilePath).remove(picFilePath.length() - 7, 7); - if (QFile::rename(picFilePath, newPicFilePath)) - { + if (QFile::rename(picFilePath, newPicFilePath)) { picFilePath = newPicFilePath; return true; } @@ -797,8 +741,7 @@ QSize SnapmaticPicture::getSnapmaticResolution() SnapmaticFormat SnapmaticPicture::getSnapmaticFormat() { - if (p_ragePhoto.photoFormat() == RagePhoto::PhotoFormat::G5EX) - { + if (p_ragePhoto.photoFormat() == RagePhoto::PhotoFormat::G5EX) { return SnapmaticFormat::G5E_Format; } return SnapmaticFormat::PGTA_Format; @@ -806,13 +749,11 @@ SnapmaticFormat SnapmaticPicture::getSnapmaticFormat() void SnapmaticPicture::setSnapmaticFormat(SnapmaticFormat format) { - if (format == SnapmaticFormat::G5E_Format) - { + if (format == SnapmaticFormat::G5E_Format) { p_ragePhoto.setPhotoFormat(RagePhoto::PhotoFormat::G5EX); return; } - else if (format == SnapmaticFormat::PGTA_Format) - { + else if (format == SnapmaticFormat::PGTA_Format) { p_ragePhoto.setPhotoFormat(RagePhoto::PhotoFormat::GTA5); return; } @@ -829,10 +770,8 @@ bool SnapmaticPicture::isFormatSwitched() bool SnapmaticPicture::verifyTitle(const QString &title) { // VERIFY TITLE FOR BE A VALID SNAPMATIC TITLE - if (title.length() <= 39 && title.length() > 0) - { - for (const QChar &titleChar : title) - { + if (title.length() <= 39 && title.length() > 0) { + for (const QChar &titleChar : title) { if (!verifyTitleChar(titleChar)) return false; } return true; @@ -843,8 +782,7 @@ bool SnapmaticPicture::verifyTitle(const QString &title) bool SnapmaticPicture::verifyTitleChar(const QChar &titleChar) { // VERIFY CHAR FOR BE A VALID SNAPMATIC CHARACTER - if (titleChar.isLetterOrNumber() || titleChar.isPrint()) - { + if (titleChar.isLetterOrNumber() || titleChar.isPrint()) { if (titleChar == '<' || titleChar == '>' || titleChar == '\\') return false; return true; } diff --git a/SnapmaticPicture.h b/SnapmaticPicture.h index b5571ce..8113cdc 100644 --- a/SnapmaticPicture.h +++ b/SnapmaticPicture.h @@ -35,6 +35,7 @@ struct SnapmaticProperties { double x; double y; double z; + bool isCayoPerico; }; int uid; int crewID; diff --git a/SnapmaticWidget.cpp b/SnapmaticWidget.cpp index c30c0d5..9712e28 100644 --- a/SnapmaticWidget.cpp +++ b/SnapmaticWidget.cpp @@ -85,7 +85,8 @@ void SnapmaticWidget::setSnapmaticPicture(SnapmaticPicture *picture) QPixmap renderPixmap(renderResolution); renderPixmap.fill(Qt::transparent); QPainter renderPainter(&renderPixmap); - const QImage renderImage = picture->getImage().scaled(renderResolution, Qt::KeepAspectRatio, Qt::SmoothTransformation); + const QImage originalImage = picture->getImage(); + const QImage renderImage = originalImage.scaled(renderResolution, Qt::KeepAspectRatio, Qt::SmoothTransformation); // Stack smash if (renderImage.width() < renderResolution.width()) { renderPainter.drawImage((renderResolution.width() - renderImage.width()) / 2, 0, renderImage, Qt::AutoColor); } @@ -115,8 +116,7 @@ void SnapmaticWidget::snapmaticUpdated() void SnapmaticWidget::customSignal(QString signal) { - if (signal == "PictureUpdated") - { + if (signal == "PictureUpdated") { QPixmap SnapmaticPixmap = QPixmap::fromImage(smpic->getImage().scaled(ui->labPicture->width(), ui->labPicture->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::AutoColor); ui->labPicture->setPixmap(SnapmaticPixmap); } @@ -146,7 +146,8 @@ void SnapmaticWidget::on_cmdView_clicked() QObject::connect(picDialog, SIGNAL(previousPictureRequested()), this, SLOT(dialogPreviousPictureRequested())); // add previous next buttons - if (navigationBar) picDialog->addPreviousNextButtons(); + if (navigationBar) + picDialog->addPreviousNextButtons(); // show picture dialog #ifdef Q_OS_ANDROID @@ -175,23 +176,21 @@ void SnapmaticWidget::on_cmdExport_clicked() void SnapmaticWidget::on_cmdDelete_clicked() { - if (deletePicture()) emit pictureDeleted(); + if (deletePicture()) + emit pictureDeleted(); } bool SnapmaticWidget::deletePicture() { int uchoice = QMessageBox::question(this, tr("Delete picture"), tr("Are you sure to delete %1 from your Snapmatic pictures?").arg("\""+smpic->getPictureTitle()+"\""), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); - if (uchoice == QMessageBox::Yes) - { - if (smpic->deletePictureFile()) - { + if (uchoice == QMessageBox::Yes) { + if (smpic->deletePictureFile()) { #ifdef GTA5SYNC_TELEMETRY QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); telemetrySettings.beginGroup("Telemetry"); bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); telemetrySettings.endGroup(); - if (pushUsageData && Telemetry->canPush()) - { + if (pushUsageData && Telemetry->canPush()) { QJsonDocument jsonDocument; QJsonObject jsonObject; jsonObject["Type"] = "DeleteSuccess"; @@ -208,8 +207,7 @@ bool SnapmaticWidget::deletePicture() #endif return true; } - else - { + else { QMessageBox::warning(this, tr("Delete picture"), tr("Failed at deleting %1 from your Snapmatic pictures").arg("\""+smpic->getPictureTitle()+"\"")); } } @@ -224,29 +222,22 @@ void SnapmaticWidget::mousePressEvent(QMouseEvent *ev) void SnapmaticWidget::mouseReleaseEvent(QMouseEvent *ev) { ProfileWidget::mouseReleaseEvent(ev); - if (ui->cbSelected->isVisible()) - { - if (rect().contains(ev->pos()) && ev->button() == Qt::LeftButton) - { + if (ui->cbSelected->isVisible()) { + if (rect().contains(ev->pos()) && ev->button() == Qt::LeftButton) { ui->cbSelected->setChecked(!ui->cbSelected->isChecked()); } } - else - { + else { const int contentMode = getContentMode(); - if ((contentMode == 0 || contentMode == 10 || contentMode == 20) && rect().contains(ev->pos()) && ev->button() == Qt::LeftButton) - { - if (ev->modifiers().testFlag(Qt::ShiftModifier)) - { + if ((contentMode == 0 || contentMode == 10 || contentMode == 20) && rect().contains(ev->pos()) && ev->button() == Qt::LeftButton) { + if (ev->modifiers().testFlag(Qt::ShiftModifier)) { ui->cbSelected->setChecked(!ui->cbSelected->isChecked()); } - else - { + else { on_cmdView_clicked(); } } - else if (!ui->cbSelected->isVisible() && (contentMode == 1 || contentMode == 11 || contentMode == 21) && ev->button() == Qt::LeftButton && ev->modifiers().testFlag(Qt::ShiftModifier)) - { + else if (!ui->cbSelected->isVisible() && (contentMode == 1 || contentMode == 11 || contentMode == 21) && ev->button() == Qt::LeftButton && ev->modifiers().testFlag(Qt::ShiftModifier)) { ui->cbSelected->setChecked(!ui->cbSelected->isChecked()); } } @@ -257,8 +248,7 @@ void SnapmaticWidget::mouseDoubleClickEvent(QMouseEvent *ev) ProfileWidget::mouseDoubleClickEvent(ev); const int contentMode = getContentMode(); - if (!ui->cbSelected->isVisible() && (contentMode == 1 || contentMode == 11 || contentMode == 21) && ev->button() == Qt::LeftButton) - { + if (!ui->cbSelected->isVisible() && (contentMode == 1 || contentMode == 11 || contentMode == 21) && ev->button() == Qt::LeftButton) { on_cmdView_clicked(); } } @@ -290,32 +280,27 @@ void SnapmaticWidget::dialogPreviousPictureRequested() void SnapmaticWidget::on_cbSelected_stateChanged(int arg1) { - if (arg1 == Qt::Checked) - { + if (arg1 == Qt::Checked) { emit widgetSelected(); } - else if (arg1 == Qt::Unchecked) - { + else if (arg1 == Qt::Unchecked) { emit widgetDeselected(); } } void SnapmaticWidget::adjustTextColor() { - if (isHidden()) - { + if (isHidden()) { ui->labPicStr->setStyleSheet(QString("QLabel{color: rgb(%1, %2, %3);}").arg(QString::number(highlightHiddenColor.red()), QString::number(highlightHiddenColor.green()), QString::number(highlightHiddenColor.blue()))); } - else - { + else { ui->labPicStr->setStyleSheet(""); } } bool SnapmaticWidget::makePictureHidden() { - if (smpic->setPictureHidden()) - { + if (smpic->setPictureHidden()) { adjustTextColor(); return true; } @@ -324,8 +309,7 @@ bool SnapmaticWidget::makePictureHidden() bool SnapmaticWidget::makePictureVisible() { - if (smpic->setPictureVisible()) - { + if (smpic->setPictureVisible()) { adjustTextColor(); return true; } @@ -335,17 +319,13 @@ bool SnapmaticWidget::makePictureVisible() void SnapmaticWidget::makePictureHiddenSlot() { if (!makePictureHidden()) - { QMessageBox::warning(this, QApplication::translate("UserInterface", "Hide In-game"), QApplication::translate("SnapmaticWidget", "Failed to hide %1 In-game from your Snapmatic pictures").arg("\""+smpic->getPictureTitle()+"\"")); - } } void SnapmaticWidget::makePictureVisibleSlot() { if (!makePictureVisible()) - { QMessageBox::warning(this, QApplication::translate("UserInterface", "Show In-game"), QApplication::translate("SnapmaticWidget", "Failed to show %1 In-game from your Snapmatic pictures").arg("\""+smpic->getPictureTitle()+"\"")); - } } void SnapmaticWidget::editSnapmaticProperties() @@ -375,21 +355,17 @@ void SnapmaticWidget::editSnapmaticImage() importDialog->enableOverwriteMode(); importDialog->setModal(true); importDialog->exec(); - if (importDialog->isImportAgreed()) - { + if (importDialog->isImportAgreed()) { const QByteArray previousPicture = smpic->getPictureStream(); bool success = smpic->setImage(importDialog->image()); - if (success) - { + if (success) { QString currentFilePath = smpic->getPictureFilePath(); QString originalFilePath = smpic->getOriginalPictureFilePath(); QString backupFileName = originalFilePath % ".bak"; - if (!QFile::exists(backupFileName)) - { + if (!QFile::exists(backupFileName)) { QFile::copy(currentFilePath, backupFileName); } - if (!smpic->exportPicture(currentFilePath)) - { + if (!smpic->exportPicture(currentFilePath)) { smpic->setPictureStream(previousPicture); QMessageBox::warning(this, QApplication::translate("ImageEditorDialog", "Snapmatic Image Editor"), QApplication::translate("ImageEditorDialog", "Patching of Snapmatic Image failed because of I/O Error")); return; @@ -400,8 +376,7 @@ void SnapmaticWidget::editSnapmaticImage() telemetrySettings.beginGroup("Telemetry"); bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); telemetrySettings.endGroup(); - if (pushUsageData && Telemetry->canPush()) - { + if (pushUsageData && Telemetry->canPush()) { QJsonDocument jsonDocument; QJsonObject jsonObject; jsonObject["Type"] = "ImageEdited"; @@ -417,8 +392,7 @@ void SnapmaticWidget::editSnapmaticImage() } #endif } - else - { + else { QMessageBox::warning(this, QApplication::translate("ImageEditorDialog", "Snapmatic Image Editor"), QApplication::translate("ImageEditorDialog", "Patching of Snapmatic Image failed because of Image Error")); return; } @@ -429,42 +403,38 @@ void SnapmaticWidget::editSnapmaticImage() void SnapmaticWidget::openMapViewer() { SnapmaticPicture *picture = smpic; - MapLocationDialog *mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, this); + SnapmaticProperties currentProperties = picture->getSnapmaticProperties(); + MapLocationDialog *mapLocDialog = new MapLocationDialog(currentProperties.location.x, currentProperties.location.y, this); + mapLocDialog->setCayoPerico(currentProperties.location.isCayoPerico); mapLocDialog->setModal(true); mapLocDialog->show(); mapLocDialog->exec(); - if (mapLocDialog->propUpdated()) - { + if (mapLocDialog->propUpdated()) { // Update Snapmatic Properties - SnapmaticProperties localSpJson = picture->getSnapmaticProperties(); - localSpJson.location.x = mapLocDialog->getXpos(); - localSpJson.location.y = mapLocDialog->getYpos(); - localSpJson.location.z = 0; + currentProperties.location.x = mapLocDialog->getXpos(); + currentProperties.location.y = mapLocDialog->getYpos(); + currentProperties.location.z = 0; // Update Snapmatic Picture QString currentFilePath = picture->getPictureFilePath(); QString originalFilePath = picture->getOriginalPictureFilePath(); QString backupFileName = originalFilePath % ".bak"; - if (!QFile::exists(backupFileName)) - { + if (!QFile::exists(backupFileName)) { QFile::copy(currentFilePath, backupFileName); } SnapmaticProperties fallbackProperties = picture->getSnapmaticProperties(); - picture->setSnapmaticProperties(localSpJson); - if (!picture->exportPicture(currentFilePath)) - { + picture->setSnapmaticProperties(currentProperties); + if (!picture->exportPicture(currentFilePath)) { QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of I/O Error")); picture->setSnapmaticProperties(fallbackProperties); } #ifdef GTA5SYNC_TELEMETRY - else - { + else { QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); telemetrySettings.beginGroup("Telemetry"); bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); telemetrySettings.endGroup(); - if (pushUsageData && Telemetry->canPush()) - { + if (pushUsageData && Telemetry->canPush()) { QJsonDocument jsonDocument; QJsonObject jsonObject; jsonObject["Type"] = "LocationEdited"; diff --git a/StandardPaths.cpp b/StandardPaths.cpp index 3f466ab..c2f8111 100644 --- a/StandardPaths.cpp +++ b/StandardPaths.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 @@ -23,11 +23,6 @@ #include #endif -StandardPaths::StandardPaths() -{ - -} - QString StandardPaths::applicationsLocation() { #if QT_VERSION >= 0x050000 diff --git a/StandardPaths.h b/StandardPaths.h index d03df33..590e0dc 100644 --- a/StandardPaths.h +++ b/StandardPaths.h @@ -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 @@ -24,7 +24,6 @@ class StandardPaths { public: - StandardPaths(); static QString applicationsLocation(); static QString cacheLocation(); static QString dataLocation(); diff --git a/StringParser.cpp b/StringParser.cpp index f058ade..4ac3fba 100644 --- a/StringParser.cpp +++ b/StringParser.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,7 +17,9 @@ *****************************************************************************/ #include "StringParser.h" +#include "config.h" #include +#include #include #include #include @@ -25,16 +27,6 @@ #include #include -#ifdef GTA5SYNC_PROJECT -#include -#include "config.h" -#endif - -StringParser::StringParser() -{ - -} - QString StringParser::escapeString(const QString &toEscape) { #if QT_VERSION >= 0x050000 @@ -44,7 +36,6 @@ QString StringParser::escapeString(const QString &toEscape) #endif } -#ifdef GTA5SYNC_PROJECT QString StringParser::convertBuildedString(const QString &buildedStr) { QString outputStr = buildedStr; @@ -61,4 +52,3 @@ QString StringParser::convertBuildedString(const QString &buildedStr) outputStr.replace("SEPARATOR:", QDir::separator()); return outputStr; } -#endif diff --git a/StringParser.h b/StringParser.h index 59b6460..7dac436 100644 --- a/StringParser.h +++ b/StringParser.h @@ -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 @@ -25,11 +25,8 @@ class StringParser { public: - StringParser(); static QString escapeString(const QString &toEscape); -#ifdef GTA5SYNC_PROJECT static QString convertBuildedString(const QString &buildedStr); -#endif }; #endif // STRINGPARSER_H diff --git a/UserInterface.cpp b/UserInterface.cpp index 3f4d016..fad032a 100644 --- a/UserInterface.cpp +++ b/UserInterface.cpp @@ -77,96 +77,79 @@ UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, D ui->labVersion->setText(QString("%1 %2").arg(GTA5SYNC_APPSTR, appVersion)); // Set Icon for Close Button - if (QIcon::hasThemeIcon("dialog-close")) - { + if (QIcon::hasThemeIcon("dialog-close")) { ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close")); } - else if (QIcon::hasThemeIcon("gtk-close")) - { + else if (QIcon::hasThemeIcon("gtk-close")) { ui->cmdClose->setIcon(QIcon::fromTheme("gtk-close")); } // Set Icon for Reload Button - if (QIcon::hasThemeIcon("view-refresh")) - { + if (QIcon::hasThemeIcon("view-refresh")) { ui->cmdReload->setIcon(QIcon::fromTheme("view-refresh")); } - else if (QIcon::hasThemeIcon("reload")) - { + else if (QIcon::hasThemeIcon("reload")) { ui->cmdReload->setIcon(QIcon::fromTheme("reload")); } // Set Icon for Choose GTA V Folder Menu Item - if (QIcon::hasThemeIcon("document-open-folder")) - { + if (QIcon::hasThemeIcon("document-open-folder")) { ui->actionSelect_GTA_Folder->setIcon(QIcon::fromTheme("document-open-folder")); } - else if (QIcon::hasThemeIcon("gtk-directory")) - { + else if (QIcon::hasThemeIcon("gtk-directory")) { ui->actionSelect_GTA_Folder->setIcon(QIcon::fromTheme("gtk-directory")); } // Set Icon for Open File Menu Item - if (QIcon::hasThemeIcon("document-open")) - { + if (QIcon::hasThemeIcon("document-open")) { ui->actionOpen_File->setIcon(QIcon::fromTheme("document-open")); } // Set Icon for Close Profile Menu Item - if (QIcon::hasThemeIcon("dialog-close")) - { + if (QIcon::hasThemeIcon("dialog-close")) { ui->actionSelect_profile->setIcon(QIcon::fromTheme("dialog-close")); } - else if (QIcon::hasThemeIcon("gtk-close")) - { + else if (QIcon::hasThemeIcon("gtk-close")) { ui->actionSelect_profile->setIcon(QIcon::fromTheme("gtk-close")); } // Set Icon for Exit Menu Item - if (QIcon::hasThemeIcon("application-exit")) - { + if (QIcon::hasThemeIcon("application-exit")) { #ifndef Q_OS_MACOS // Setting icon for exit/quit lead to a crash in Mac OS X ui->actionExit->setIcon(QIcon::fromTheme("application-exit")); #endif } // Set Icon for Preferences Menu Item - if (QIcon::hasThemeIcon("preferences-system")) - { + if (QIcon::hasThemeIcon("preferences-system")) { #ifndef Q_OS_MACOS // Setting icon for preferences/settings/options lead to a crash in Mac OS X ui->actionOptions->setIcon(QIcon::fromTheme("preferences-system")); #endif } - else if (QIcon::hasThemeIcon("configure")) - { + else if (QIcon::hasThemeIcon("configure")) { #ifndef Q_OS_MACOS // Setting icon for preferences/settings/options lead to a crash in Mac OS X ui->actionOptions->setIcon(QIcon::fromTheme("configure")); #endif } // Set Icon for Profile Import Menu Item - if (QIcon::hasThemeIcon("document-import")) - { + if (QIcon::hasThemeIcon("document-import")) { ui->action_Import->setIcon(QIcon::fromTheme("document-import")); } - else if (QIcon::hasThemeIcon("document-open")) - { + else if (QIcon::hasThemeIcon("document-open")) { ui->action_Import->setIcon(QIcon::fromTheme("document-open")); } // Set Icon for Profile Export Menu Item - if (QIcon::hasThemeIcon("document-export")) - { + if (QIcon::hasThemeIcon("document-export")) { ui->actionExport_selected->setIcon(QIcon::fromTheme("document-export")); } - else if (QIcon::hasThemeIcon("document-save")) - { + else if (QIcon::hasThemeIcon("document-save")) { ui->actionExport_selected->setIcon(QIcon::fromTheme("document-save")); } // Set Icon for Profile Remove Menu Item - if (QIcon::hasThemeIcon("remove")) - { + if (QIcon::hasThemeIcon("remove")) { ui->actionDelete_selected->setIcon(QIcon::fromTheme("remove")); } @@ -245,8 +228,7 @@ void UserInterface::setupDirEnv(bool showFolderDialog) void UserInterface::setupProfileUi() { qreal screenRatio = AppEnv::screenRatio(); - if (GTAV_Profiles.isEmpty()) - { + if (GTAV_Profiles.isEmpty()) { QPushButton *changeDirBtn = new QPushButton(tr("Select >A V Folder..."), ui->swSelection); changeDirBtn->setObjectName("cmdChangeDir"); changeDirBtn->setMinimumSize(0, 40 * screenRatio); @@ -256,8 +238,7 @@ void UserInterface::setupProfileUi() QObject::connect(changeDirBtn, SIGNAL(clicked(bool)), this, SLOT(changeFolder_clicked())); } - else for (QString GTAV_Profile : GTAV_Profiles) - { + else for (const QString >AV_Profile : GTAV_Profiles) { QPushButton *profileBtn = new QPushButton(GTAV_Profile, ui->swSelection); profileBtn->setObjectName(GTAV_Profile); profileBtn->setMinimumSize(0, 40 * screenRatio); @@ -277,8 +258,7 @@ void UserInterface::changeFolder_clicked() void UserInterface::on_cmdReload_clicked() { - for (QPushButton *profileBtn : profileBtns) - { + for (QPushButton *profileBtn : profileBtns) { ui->vlButtons->removeWidget(profileBtn); delete profileBtn; } @@ -341,11 +321,8 @@ void UserInterface::closeEvent(QCloseEvent *ev) UserInterface::~UserInterface() { if (profileOpen) - { closeProfile_p(); - } - for (QPushButton *profileBtn : profileBtns) - { + for (QPushButton *profileBtn : profileBtns) { delete profileBtn; } profileBtns.clear(); @@ -392,33 +369,25 @@ void UserInterface::profileLoaded() void UserInterface::on_actionSelect_all_triggered() { if (profileOpen) - { profileUI->selectAllWidgets(); - } } void UserInterface::on_actionDeselect_all_triggered() { if (profileOpen) - { profileUI->deselectAllWidgets(); - } } void UserInterface::on_actionExport_selected_triggered() { if (profileOpen) - { profileUI->exportSelected(); - } } void UserInterface::on_actionDelete_selected_triggered() { if (profileOpen) - { profileUI->deleteSelected(); - } } void UserInterface::on_actionOptions_triggered() @@ -443,9 +412,7 @@ void UserInterface::on_actionOptions_triggered() void UserInterface::on_action_Import_triggered() { if (profileOpen) - { profileUI->importFiles(); - } } void UserInterface::on_actionOpen_File_triggered() @@ -459,7 +426,11 @@ fileDialogPreOpen: fileDialog.setViewMode(QFileDialog::Detail); fileDialog.setAcceptMode(QFileDialog::AcceptOpen); fileDialog.setOption(QFileDialog::DontUseNativeDialog, false); +#if QT_VERSION >= 0x050900 + fileDialog.setWindowFlag(Qt::WindowContextHelpButtonHint, false); +#else fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); +#endif fileDialog.setWindowTitle(tr("Open File...")); QStringList filters; diff --git a/gta5view.pro b/gta5view.pro index ed06e18..679cb3d 100644 --- a/gta5view.pro +++ b/gta5view.pro @@ -177,7 +177,6 @@ INCLUDEPATH += ./anpro ./pcg ./tmext ./uimod DEFINES += GTA5SYNC_QMAKE # We using qmake do we? DEFINES += GTA5SYNC_PROJECT # Enable exclusive gta5sync/gta5view functions -DEFINES += SNAPMATIC_NODEFAULT # Not assisting at proper usage of SnapmaticPicture class # WINDOWS ONLY diff --git a/res/app.qrc b/res/app.qrc index 151b282..f0e8b1c 100644 --- a/res/app.qrc +++ b/res/app.qrc @@ -14,6 +14,7 @@ gta5view-96.png gta5view-128.png gta5view-256.png + mapcayoperico.jpg mappreview.jpg next.svgz pointmaker-8.png diff --git a/res/gta5sync.ts b/res/gta5sync.ts index f6d7bfd..02eb2d8 100644 --- a/res/gta5sync.ts +++ b/res/gta5sync.ts @@ -28,30 +28,30 @@ Running with Qt %6<br/> - + Translated by %1 Translated by translator, example Translated by Syping - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames - + Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> @@ -167,47 +167,47 @@ Pictures and Savegames ImageEditorDialog - + Overwrite Image... - + Apply changes - + &Overwrite - + Discard changes - + &Close - - - - + + + + Snapmatic Image Editor - - + + Patching of Snapmatic Image failed because of I/O Error - - + + Patching of Snapmatic Image failed because of Image Error @@ -252,9 +252,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> @@ -265,9 +265,9 @@ Pictures and Savegames - - - + + + Background Image: @@ -352,143 +352,143 @@ Pictures and Savegames - + &Import new Picture... - + &Crop Picture... - + &Load Settings... - + &Save Settings... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Storage Background Image: Storage - + Crop Picture... - + &Crop - + Crop Picture - - + + Please import a new picture first - - + + Default Default as Default Profile - - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + + Profile %1 Profile %1 as Profile 1 - - + + Load Settings... - - + + Save Settings... - - + + Snapmatic Avatar Zone - - + + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! - + Select Colour... - - + + Background Image: %1 - - + + Please select your settings profile - + File Background Image: File @@ -522,7 +522,7 @@ When you want to use it as Avatar the image will be detached! - + JSON Error @@ -585,7 +585,7 @@ When you want to use it as Avatar the image will be detached! - + X: %1 Y: %2 X and Y position @@ -728,26 +728,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 - - + - + + Language: %1 @@ -768,7 +768,7 @@ Y: %2 - + Participate in %1 User Statistics @@ -804,8 +804,8 @@ Y: %2 - + Participation ID: %1 @@ -827,8 +827,8 @@ Y: %2 - - + + Current: %1 @@ -890,95 +890,95 @@ Y: %2 - + System System in context of System default - + %1 (Game language) Next closest language compared to the Game settings - - + + %1 (Closest to Interface) Next closest language compared to the Interface - - + + Auto Automatic language choice. - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". - + %1 %1 - + The new Custom Folder will initialise after you restart %1. - + No Profile No Profile, as default - - + + Profile: %1 - + View %1 User Statistics Online - + Not registered - - - - + + + + Yes - - + + No - - + + OS defined - - + + Steam defined @@ -1019,78 +1019,78 @@ Y: %2 - + Export as &Picture... - + Export as &Snapmatic... - + &Edit Properties... - + &Overwrite Image... - + Open &Map Viewer... - + Open &JSON Editor... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate - + Snapmatic Picture Viewer - + Failed at %1 - - - + + + No Players - - + + No Crew - + Unknown Location - + Avatar Preview Mode Press 1 for Default View @@ -1227,28 +1227,28 @@ Press 1 for Default View - + Add Players... - + Failed to add more Players because the limit of Players are %1! - - + + Add Player... - + Enter Social Club Player ID - + Failed to add Player %1 because Player %1 is already added! @@ -1298,8 +1298,8 @@ Press 1 for Default View - - + + @@ -1321,40 +1321,40 @@ Press 1 for Default View - - - - - - + + + + + + Import - - + + All image files (%1) - - + + - + All files (**) - - + + Can't import %1 because file can't be open - - + + Can't import %1 because file can't be parsed properly @@ -1386,26 +1386,26 @@ Press 1 for Default View - + GTA V Export (*.g5e) - + Savegames files (SGTA*) - + Snapmatic pictures (PGTA*) - + No valid file is selected @@ -1424,13 +1424,13 @@ Press 1 for Default View - + Failed to read Snapmatic picture - + Failed to read Savegame file @@ -1640,7 +1640,7 @@ Press 1 for Default View - + All profile files (*.g5e SGTA* PGTA*) @@ -1649,7 +1649,7 @@ Press 1 for Default View SavegameDialog - + Savegame Viewer @@ -1669,7 +1669,7 @@ Press 1 for Default View - + Failed at %1 @@ -1850,13 +1850,13 @@ Press 1 for Default View - - - - - - - + + + + + + + Snapmatic Properties @@ -1936,96 +1936,96 @@ Press 1 for Default View - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? - + Patching of Snapmatic Properties failed because of %1 - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error - + Patching of Snapmatic Properties failed because of JSON Error - + Snapmatic Crew - + New Snapmatic crew: - + Snapmatic Title - + New Snapmatic title: - - - + + + Edit - + Players: %1 (%2) Multiple Player are inserted here - + Player: %1 (%2) One Player is inserted here - + Title: %1 (%2) - - + + Appropriate: %1 - + Yes Yes, should work fine - + No No, could lead to issues - + Crew: %1 (%2) @@ -2033,65 +2033,65 @@ Press 1 for Default View SnapmaticPicture - - + + JSON is incomplete and malformed - - + + JSON is incomplete - - + + JSON is malformed - + PHOTO - %1 - + open file %1 - + header not exists - + header is malformed - + picture not exists (%1) - + JSON not exists (%1) - + title not exists (%1) - + description not exists (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error @@ -2141,8 +2141,8 @@ Press 1 for Default View - - + + Delete picture @@ -2212,22 +2212,22 @@ Press 1 for Default View - + Are you sure to delete %1 from your Snapmatic pictures? - + Failed at deleting %1 from your Snapmatic pictures - + Failed to hide %1 In-game from your Snapmatic pictures - + Failed to show %1 In-game from your Snapmatic pictures @@ -2291,7 +2291,7 @@ Press 1 for Default View - + &Close @@ -2328,7 +2328,7 @@ Press 1 for Default View - + &About %1 @@ -2384,15 +2384,15 @@ Press 1 for Default View - + Select &GTA V Folder... - - - + + + Select GTA V Folder... @@ -2437,44 +2437,44 @@ Press 1 for Default View - + Show In-game - + Hide In-game - - + + Select Profile - + Open File... - - - - + + + + Open File - + Can't open %1 because of not valid file format - + %1 - Messages diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts index c72c189..ffc3a1a 100644 --- a/res/gta5sync_de.ts +++ b/res/gta5sync_de.ts @@ -37,31 +37,31 @@ Läuft auf Qt %6<br/> S&chließen - + Translated by %1 Translated by translator, example Translated by Syping Übersetzt von %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile Syping,g5e://about?U3lwaW5n:R2l0TGFiOiA8YSBocmVmPSJodHRwczovL2dpdGxhYi5jb20vU3lwaW5nIj5TeXBpbmc8L2E+PGJyLz5HaXRIdWI6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TeXBpbmciPlN5cGluZzwvYT48YnIvPlNvY2lhbCBDbHViOiA8YSBocmVmPSJodHRwczovL3NvY2lhbGNsdWIucm9ja3N0YXJnYW1lcy5jb20vbWVtYmVyL1N5cGluZy80NjMwMzA1NiI+U3lwaW5nPC9hPg - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Ein Projekt zum ansehen von Grand Theft Auto V<br/> Snapmatic Bilder und Spielständen - + Copyright &copy; <a href="%1">%2</a> %3 Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 ist lizenziert unter <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> @@ -177,47 +177,47 @@ Snapmatic Bilder und Spielständen ImageEditorDialog - - - - + + + + Snapmatic Image Editor Snapmatic Bild Editor - + Overwrite Image... Bild überschreiben... - + Apply changes Änderungen übernehmen - + &Overwrite &Überschreiben - + Discard changes Änderungen verwerfen - + &Close S&chließen - - + + Patching of Snapmatic Image failed because of I/O Error Patchen von Snapmatic Bild fehlgeschlagen wegen I/O Fehler - - + + Patching of Snapmatic Image failed because of Image Error Patchen von Snapmatic Bild fehlgeschlagen wegen Bild Fehler @@ -262,9 +262,9 @@ Snapmatic Bilder und Spielständen - - - + + + Background Colour: <span style="color: %1">%1</span> Hintergrundfarbe: <span style="color: %1">%1</span> @@ -293,8 +293,8 @@ Snapmatic Bilder und Spielständen Importiere das Bild ohne Veränderungen, Snapmatic wird garantiert beschädigt wenn du nicht weißt was du tust - - + + Background Image: %1 Hintergrundbild: %1 @@ -369,145 +369,145 @@ Snapmatic Bilder und Spielständen - - - + + + Background Image: Hintergrundbild: - + &Import new Picture... Neues Bild &importieren... - + &Crop Picture... Bild zu&schneiden... - + &Load Settings... Einstellungen &laden... - + &Save Settings... Einstellungen &speichern... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Eigener Avatar - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! Eigenes Bild - + Storage Background Image: Storage Speicher - + Crop Picture... Bild zuschneiden... - + &Crop Zu&schneiden - + Crop Picture Bild zuschneiden - - + + Please import a new picture first Bitte importiere ein neues Bild zuerst - - + + Default Default as Default Profile Standard - - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + + Profile %1 Profile %1 as Profile 1 Profil %1 - - + + Load Settings... Einstellungen laden... - - + + Please select your settings profile Bitte wähle dein Einstellungsprofil aus - - + + Save Settings... Einstellungen speichern... - - + + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Bist du sicher ein Quadrat Bild außerhalb der Avatar Zone zu verwenden? Wenn du es als Avatar verwenden möchtest wird es abgetrennt! - - + + Snapmatic Avatar Zone Snapmatic Avatar Zone - + Select Colour... Farbe auswählen... - + File Background Image: File Datei @@ -541,7 +541,7 @@ Wenn du es als Avatar verwenden möchtest wird es abgetrennt! S&chließen - + JSON Error JSON Fehler @@ -604,7 +604,7 @@ Wenn du es als Avatar verwenden möchtest wird es abgetrennt! &Fertig - + X: %1 Y: %2 X and Y position @@ -756,26 +756,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 Gefunden: %1 - - + - + + Language: %1 Sprache: %1 @@ -796,7 +796,7 @@ Y: %2 - + Participate in %1 User Statistics An %1 Benutzerstatistik teilnehmen @@ -827,8 +827,8 @@ Y: %2 - + Participation ID: %1 Teilnahme ID: %1 @@ -884,8 +884,8 @@ Y: %2 - - + + Current: %1 Aktuell: %1 @@ -922,95 +922,95 @@ Y: %2 Abbre&chen - + %1 %1 %1 - + System System in context of System default System - + %1 (Game language) Next closest language compared to the Game settings %1 (Spielsprache) - - + + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Näheste zur Oberfläche) - - + + Auto Automatic language choice. Automatisch - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (Sprachenpriorität) - + The new Custom Folder will initialise after you restart %1. Der eigene Ordner wird initialisiert sobald du %1 neugestartet hast. - + View %1 User Statistics Online %1 Benutzerstatistik Online ansehen - + Not registered Nicht registriert - - - - + + + + Yes Ja - - + + No Nein - - + + OS defined OS-defined - - + + Steam defined Steam-definiert - + No Profile No Profile, as default Kein Profil - - + + Profile: %1 Profil: %1 @@ -1060,37 +1060,37 @@ Y: %2 Exportieren - + Export as &Picture... Als &Bild exportieren... - + Export as &Snapmatic... Als &Snapmatic exportieren... - + &Edit Properties... Eigenschaften bearb&eiten... - + &Overwrite Image... Bild &überschreiben... - + Open &Map Viewer... &Kartenansicht öffnen... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1099,37 +1099,37 @@ Taste 2 - Overlay umschalten Pfeiltasten - Navigieren - + Snapmatic Picture Viewer Snapmatic Bildansicht - + Failed at %1 Fehlgeschlagen beim %1 - - + + No Crew Keine Crew - - - + + + No Players Keine Spieler - + Avatar Preview Mode Press 1 for Default View Avatar Vorschaumodus Drücke 1 für Standardmodus - + Unknown Location Unbekannter Standort @@ -1231,7 +1231,7 @@ Drücke 1 für Standardmodus Keine gültige Datei wurde ausgewählt - + Open &JSON Editor... &JSON Editor öffnen... @@ -1265,28 +1265,28 @@ Drücke 1 für Standardmodus Abbre&chen - + Add Players... Spieler hinzufügen... - + Failed to add more Players because the limit of Players are %1! Fehlgeschlagen beim Hinzufügen von mehr Spielern weil der Limit von Spielern %1 ist! - - + + Add Player... Spieler hinzufügen... - + Enter Social Club Player ID Social Club Spieler ID eingeben - + Failed to add Player %1 because Player %1 is already added! Fehlgeschlagen beim Hinzufügen vom Spieler %1 weil Spieler %1 bereits hinzugefügt wurde! @@ -1345,8 +1345,8 @@ Drücke 1 für Standardmodus <h4>Folgende Snapmatic Bilder wurden repariert</h4>%1 - - + + @@ -1368,24 +1368,24 @@ Drücke 1 für Standardmodus Importieren... - - - - - - + + + + + + Import Importieren - + Savegames files (SGTA*) Spielstanddateien (SGTA*) - + Snapmatic pictures (PGTA*) Snapmatic Bilder (PGTA*) @@ -1395,17 +1395,17 @@ Drücke 1 für Standardmodus Importfähige Dateien (%1) - - + + All image files (%1) Alle Bilddateien (%1) - - + + - + All files (**) Alle Dateien (**) @@ -1426,26 +1426,26 @@ Drücke 1 für Standardmodus - + Failed to read Snapmatic picture Fehler beim Lesen vom Snapmatic Bild - + Failed to read Savegame file Fehler beim Lesen von Spielstanddatei - - + + Can't import %1 because file can't be open Kann %1 nicht importieren weil die Datei nicht geöffnet werden kann - - + + Can't import %1 because file can't be parsed properly Kann %1 nicht importieren weil die Datei nicht richtig gelesen werden kann @@ -1473,7 +1473,7 @@ Drücke 1 für Standardmodus - + No valid file is selected Keine gültige Datei wurde ausgewählt @@ -1677,13 +1677,13 @@ Drücke 1 für Standardmodus Exportiere Datei %1 von %2 Dateien - + All profile files (*.g5e SGTA* PGTA*) Alle Profildateien (*.g5e SGTA* PGTA*) - + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1699,7 +1699,7 @@ Drücke 1 für Standardmodus SavegameDialog - + Savegame Viewer Spielstandanzeiger @@ -1719,7 +1719,7 @@ Drücke 1 für Standardmodus S&chließen - + Failed at %1 Fehlgeschlagen bei %1 @@ -1902,13 +1902,13 @@ Drücke 1 für Standardmodus - - - - - - - + + + + + + + Snapmatic Properties Snapmatic Eigenschaften @@ -1949,7 +1949,7 @@ Drücke 1 für Standardmodus - + Snapmatic Title Snapmatic Titel @@ -1959,30 +1959,30 @@ Drücke 1 für Standardmodus Snapmatic Werte - + Crew: %1 (%2) Crew: %1 (%2) - + Title: %1 (%2) Titel: %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here Spieler: %1 (%2) - + Player: %1 (%2) One Player is inserted here Spieler: %1 (%2) - - + + Appropriate: %1 Angemessen: %1 @@ -2022,62 +2022,62 @@ Drücke 1 für Standardmodus Abbre&chen - - - + + + Edit Bearbeiten - + Yes Yes, should work fine Ja - + No No, could lead to issues Nein - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? <h4>Ungespeicherte Änderungen erkannt</h4>Möchtest du den JSON Inhalt speichern bevor du verlässt? - + Patching of Snapmatic Properties failed because of %1 Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen %1 - + Patching of Snapmatic Properties failed because of JSON Error Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen JSON Fehler - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen I/O Fehler - + New Snapmatic title: Neuer Snapmatic Titel: - + Snapmatic Crew Snapmatic Crew - + New Snapmatic crew: Neue Snapmatic Crew: @@ -2085,66 +2085,66 @@ Drücke 1 für Standardmodus SnapmaticPicture - + PHOTO - %1 FOTO - %1 - + open file %1 Datei öffnen %1 - + header not exists Header nicht existiert - + header is malformed Header fehlerhaft ist - + picture not exists (%1) Bild nicht existiert (%1) - + JSON not exists (%1) JSON nicht existiert (%1) - + title not exists (%1) Titel nicht existiert (%1) - + description not exists (%1) Beschreibung nicht existiert (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error Datei lesen von %1 weil %2 - - + + JSON is incomplete and malformed JSON ist unvollständig und Fehlerhaft - - + + JSON is incomplete JSON ist unvollständig - - + + JSON is malformed JSON ist Fehlerhaft @@ -2183,23 +2183,23 @@ Drücke 1 für Standardmodus - - + + Delete picture Bild löschen - + Are you sure to delete %1 from your Snapmatic pictures? Bist du sicher %1 von deine Snapmatic Bilder zu löschen? - + Failed to hide %1 In-game from your Snapmatic pictures Fehlgeschlagen beim Ausblenden von %1 im Spiel von deinen Snapmatic Bildern - + Failed to show %1 In-game from your Snapmatic pictures Fehlgeschlagen beim Anzeigen von %1 im Spiel von deinen Snapmatic Bildern @@ -2279,7 +2279,7 @@ Drücke 1 für Standardmodus Bild exportieren - + Failed at deleting %1 from your Snapmatic pictures Fehlgeschlagen beim Löschen von %1 von deinen Snapmatic Bildern @@ -2410,7 +2410,7 @@ Drücke 1 für Standardmodus - + Select &GTA V Folder... Wähle &GTA V Ordner... @@ -2426,7 +2426,7 @@ Drücke 1 für Standardmodus - + &Close S&chließen @@ -2462,21 +2462,21 @@ Drücke 1 für Standardmodus - - + + Select Profile Profil auswählen - - - + + + Select GTA V Folder... Wähle GTA V Ordner... - + Open File... Datei öffnen... @@ -2489,25 +2489,25 @@ Drücke 1 für Standardmodus - + &About %1 &Über %1 - - - - + + + + Open File Datei öffnen - + Can't open %1 because of not valid file format Kann nicht %1 öffnen weil Dateiformat nicht gültig ist - + %1 - Messages %1 - Nachrichten @@ -2519,14 +2519,14 @@ Drücke 1 für Standardmodus - + Show In-game Im Spiel anzeigen - + Hide In-game Im Spiel ausblenden diff --git a/res/gta5sync_en_US.ts b/res/gta5sync_en_US.ts index da5b1e2..5870936 100644 --- a/res/gta5sync_en_US.ts +++ b/res/gta5sync_en_US.ts @@ -28,30 +28,30 @@ Running with Qt %6<br/> - + Translated by %1 Translated by translator, example Translated by Syping - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile Syping,g5e://about?U3lwaW5n:R2l0TGFiOiA8YSBocmVmPSJodHRwczovL2dpdGxhYi5jb20vU3lwaW5nIj5TeXBpbmc8L2E+PGJyLz5HaXRIdWI6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TeXBpbmciPlN5cGluZzwvYT48YnIvPlNvY2lhbCBDbHViOiA8YSBocmVmPSJodHRwczovL3NvY2lhbGNsdWIucm9ja3N0YXJnYW1lcy5jb20vbWVtYmVyL1N5cGluZy80NjMwMzA1NiI+U3lwaW5nPC9hPg== - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames - + Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> @@ -167,47 +167,47 @@ Pictures and Savegames ImageEditorDialog - - - - + + + + Snapmatic Image Editor - + Overwrite Image... - + Apply changes - + &Overwrite - + Discard changes - + &Close - - + + Patching of Snapmatic Image failed because of I/O Error - - + + Patching of Snapmatic Image failed because of Image Error @@ -221,9 +221,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> Background Color: <span style="color: %1">%1</span> @@ -264,8 +264,8 @@ Pictures and Savegames - - + + Background Image: %1 @@ -351,144 +351,144 @@ Pictures and Savegames - - - + + + Background Image: - + &Import new Picture... - + &Crop Picture... - + &Load Settings... - + &Save Settings... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Storage Background Image: Storage - + Crop Picture... - + &Crop - + Crop Picture - - + + Please import a new picture first - - + + Default Default as Default Profile - - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + + Profile %1 Profile %1 as Profile 1 - - + + Load Settings... - - + + Please select your settings profile - - + + Save Settings... - - + + Snapmatic Avatar Zone - - + + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! - + Select Colour... Select Color... - + File Background Image: File @@ -522,7 +522,7 @@ When you want to use it as Avatar the image will be detached! - + JSON Error @@ -585,7 +585,7 @@ When you want to use it as Avatar the image will be detached! - + X: %1 Y: %2 X and Y position @@ -728,26 +728,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 - - + - + + Language: %1 @@ -763,7 +763,7 @@ Y: %2 - + Participate in %1 User Statistics @@ -784,8 +784,8 @@ Y: %2 - + Participation ID: %1 @@ -847,8 +847,8 @@ Y: %2 - - + + Current: %1 @@ -890,95 +890,95 @@ Y: %2 - + System System in context of System default - + %1 (Game language) Next closest language compared to the Game settings - - + + %1 (Closest to Interface) Next closest language compared to the Interface - - + + Auto Automatic language choice. - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". - + %1 %1 - + The new Custom Folder will initialise after you restart %1. The new Custom Folder will initialize after you restart %1. - + No Profile No Profile, as default - - + + Profile: %1 - + View %1 User Statistics Online - + Not registered - - - - + + + + Yes - - + + No - - + + OS defined - - + + Steam defined @@ -1019,72 +1019,72 @@ Y: %2 - + Export as &Picture... - + Export as &Snapmatic... - + &Overwrite Image... - + &Edit Properties... - + Open &Map Viewer... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate - + Snapmatic Picture Viewer - + Failed at %1 - - - + + + No Players - - + + No Crew - + Unknown Location - + Avatar Preview Mode Press 1 for Default View @@ -1193,7 +1193,7 @@ Press 1 for Default View - + Open &JSON Editor... @@ -1227,28 +1227,28 @@ Press 1 for Default View - + Add Players... - + Failed to add more Players because the limit of Players are %1! - - + + Add Player... - + Enter Social Club Player ID - + Failed to add Player %1 because Player %1 is already added! @@ -1318,8 +1318,8 @@ Press 1 for Default View - - + + @@ -1341,12 +1341,12 @@ Press 1 for Default View - - - - - - + + + + + + Import @@ -1357,41 +1357,41 @@ Press 1 for Default View - + GTA V Export (*.g5e) - + Savegames files (SGTA*) - + Snapmatic pictures (PGTA*) - - + + All image files (%1) - - + + - + All files (**) - + No valid file is selected @@ -1410,26 +1410,26 @@ Press 1 for Default View - + Failed to read Snapmatic picture - + Failed to read Savegame file - - + + Can't import %1 because file can't be open - - + + Can't import %1 because file can't be parsed properly @@ -1640,7 +1640,7 @@ Press 1 for Default View - + All profile files (*.g5e SGTA* PGTA*) @@ -1649,7 +1649,7 @@ Press 1 for Default View SavegameDialog - + Savegame Viewer @@ -1669,7 +1669,7 @@ Press 1 for Default View - + Failed at %1 @@ -1850,13 +1850,13 @@ Press 1 for Default View - - - - - - - + + + + + + + Snapmatic Properties @@ -1901,30 +1901,30 @@ Press 1 for Default View - + Crew: %1 (%2) - + Title: %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here - + Player: %1 (%2) One Player is inserted here - - + + Appropriate: %1 @@ -1964,68 +1964,68 @@ Press 1 for Default View - - - + + + Edit - + Yes Yes, should work fine - + No No, could lead to issues - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? - + Patching of Snapmatic Properties failed because of %1 - + Patching of Snapmatic Properties failed because of JSON Error - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error - + Snapmatic Title - + New Snapmatic title: - + Snapmatic Crew - + New Snapmatic crew: @@ -2033,66 +2033,66 @@ Press 1 for Default View SnapmaticPicture - + PHOTO - %1 - + open file %1 - + header not exists - + header is malformed - + picture not exists (%1) - + JSON not exists (%1) - + title not exists (%1) - + description not exists (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error - - + + JSON is incomplete and malformed - - + + JSON is incomplete - - + + JSON is malformed @@ -2141,8 +2141,8 @@ Press 1 for Default View - - + + Delete picture @@ -2212,22 +2212,22 @@ Press 1 for Default View - + Are you sure to delete %1 from your Snapmatic pictures? - + Failed at deleting %1 from your Snapmatic pictures - + Failed to hide %1 In-game from your Snapmatic pictures - + Failed to show %1 In-game from your Snapmatic pictures @@ -2291,7 +2291,7 @@ Press 1 for Default View - + &Close @@ -2323,7 +2323,7 @@ Press 1 for Default View - + &About %1 @@ -2379,15 +2379,15 @@ Press 1 for Default View - + Select &GTA V Folder... - - - + + + Select GTA V Folder... @@ -2436,45 +2436,45 @@ Press 1 for Default View - - + + Select Profile - + Open File... - - - - + + + + Open File - + Can't open %1 because of not valid file format - + %1 - Messages - + Show In-game - + Hide In-game diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts index 57e78f8..e0b4ae6 100644 --- a/res/gta5sync_fr.ts +++ b/res/gta5sync_fr.ts @@ -37,32 +37,32 @@ Fonctionne avec Qt %6<br/> &Fermer - + Translated by %1 Translated by translator, example Translated by Syping Traduit par %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile Ganjalo,https://github.com/Ganjalo/ XeriosG,g5e://about?WGVyaW9zRw:RGlzY29yZDogWGVyaW9zRyM1MzIxPGJyLz5TdGVhbTogPGEgaHJlZj0iaHR0cHM6Ly9zdGVhbWNvbW11bml0eS5jb20vcHJvZmlsZXMvNzY1NjExOTg0MjU2NjU3MjQvIj5YZXJpb3NHPC9hPg - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Un outil pour gérer les photos Snapmatic<br/> et les fichiers de sauvegarde de Grand Theft Auto V - + Copyright &copy; <a href="%1">%2</a> %3 Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 est distribué sous license <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> @@ -178,47 +178,47 @@ et les fichiers de sauvegarde de Grand Theft Auto V ImageEditorDialog - - - - + + + + Snapmatic Image Editor Éditeur d'images Snapmatic - + Overwrite Image... Remplacer l'image... - + Apply changes Appliquer les modifications - + &Overwrite &Remplacer - + Discard changes Annuler les modifications - + &Close &Fermer - - + + Patching of Snapmatic Image failed because of I/O Error Échec du patch Snapmatic : I/O Error - - + + Patching of Snapmatic Image failed because of Image Error Échec du patch Snapmatic : Image Error @@ -263,9 +263,9 @@ et les fichiers de sauvegarde de Grand Theft Auto V - - - + + + Background Colour: <span style="color: %1">%1</span> Couleur de fond : <span style="color: %1">%1</span> @@ -289,8 +289,8 @@ et les fichiers de sauvegarde de Grand Theft Auto V Supprimer l'image de fond - - + + Background Image: %1 Image de fond : %1 @@ -370,145 +370,145 @@ et les fichiers de sauvegarde de Grand Theft Auto V - - - + + + Background Image: Image de fond : - + &Import new Picture... &Importer une nouvelle image... - + &Crop Picture... &Rogner l'image... - + &Load Settings... &Charger les paramètres... - + &Save Settings... &Sauvegarder les paramètres... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Avatar personnalisé - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! Image personnalisé - + Storage Background Image: Storage Stockage - + Crop Picture... Rogner l'image... - + &Crop &Rogner - + Crop Picture Rogner l'image - - + + Please import a new picture first Veuillez d'abord importer une nouvelle image - - + + Default Default as Default Profile Défaut - - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + + Profile %1 Profile %1 as Profile 1 Profil %1 - - + + Load Settings... Charger les paramètres... - - + + Please select your settings profile Veuillez choisir votre profil de paramètres - - + + Save Settings... Sauvegarder les paramètres... - - + + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Êtes-vous sûr d'utiliser une image carrée en dehors de la Zone d'Avatar ? Si vous l'utilisez comme Avatar, l'image sera détachée ! - - + + Snapmatic Avatar Zone Zone d'avatar Snapmatic - + Select Colour... Choisir une couleur... - + File Background Image: File Fichier @@ -542,7 +542,7 @@ Si vous l'utilisez comme Avatar, l'image sera détachée !&Fermer - + JSON Error Erreur JSON @@ -605,7 +605,7 @@ Si vous l'utilisez comme Avatar, l'image sera détachée !&Terminer - + X: %1 Y: %2 X and Y position @@ -757,26 +757,26 @@ Y : %2 - - - - - - + + + + + + Found: %1 Trouvé : %1 - - + - + + Language: %1 Langue : %1 @@ -797,7 +797,7 @@ Y : %2 - + Participate in %1 User Statistics Participer aux statistiques d'usage %1 @@ -828,8 +828,8 @@ Y : %2 - + Participation ID: %1 ID de participation : %1 @@ -880,8 +880,8 @@ Y : %2 - - + + Current: %1 Actuel : %1 @@ -923,95 +923,95 @@ Y : %2 &Annuler - + System System in context of System default Système - + %1 (Game language) Next closest language compared to the Game settings %1 (Langue du jeu) - - + + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Langage proche de l'interface) - - + + Auto Automatic language choice. Automatique - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (Priorité de la langue) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Le nouveau Dossier personnalisé sera initialisé au redémarrage de %1. - + View %1 User Statistics Online Voir les statistiques d'usage %1 en ligne - + Not registered Pas enregistré - - - - + + + + Yes Oui - - + + No Non - - + + OS defined Défini par le système d'exploitation - - + + Steam defined Défini par Steam - + No Profile No Profile, as default Aucun profil - - + + Profile: %1 Profil : %1 @@ -1141,37 +1141,37 @@ Y : %2 Fichier invalide - + Export as &Picture... Exporter comme &image... - + Export as &Snapmatic... Exporter comme &Snapmatic... - + &Overwrite Image... &Remplacer l'image... - + &Edit Properties... Modifier les &propriétés... - + Open &Map Viewer... Ouvrir la &Visionneuse de Carte... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1180,37 +1180,37 @@ Touche 2 - Activer/désactiver l'overlay Touches fléchées - Naviguer - + Snapmatic Picture Viewer Visionneuse de photo Snapmatic - + Failed at %1 Echec de %1 - - + + No Crew Aucun crew - - - + + + No Players Aucun joueurs - + Avatar Preview Mode Press 1 for Default View Mode Aperçu Avatar Appuyer sur 1 pour le mode par défaut - + Unknown Location Emplacement inconnu @@ -1232,7 +1232,7 @@ Appuyer sur 1 pour le mode par défaut Échec de l'export de la photo Snapmatic - + Open &JSON Editor... Ouvrir l'éditeur &JSON... @@ -1266,28 +1266,28 @@ Appuyer sur 1 pour le mode par défaut A&nnuler - + Add Players... Ajouter des joueurs... - + Failed to add more Players because the limit of Players are %1! Échec de l'ajout de joueurs : la limite de %1 est atteinte ! - - + + Add Player... Ajouter un joueur... - + Enter Social Club Player ID Entrer l'ID Social Club du joueur - + Failed to add Player %1 because Player %1 is already added! Échec de l'ajout du joueur %1 car le joueur %1 est déjà ajouté ! @@ -1357,8 +1357,8 @@ Appuyer sur 1 pour le mode par défaut <h4>Les Snapmatic suivants ont été répaés</h4>%1 - - + + @@ -1380,39 +1380,39 @@ Appuyer sur 1 pour le mode par défaut Importer... - - - - - - + + + + + + Import Importer - + Savegames files (SGTA*) Fichiers de sauvegarde GTA (SGTA*) - + Snapmatic pictures (PGTA*) Photos Snapmatic (PGTA*) - - + + All image files (%1) Toutes les images (%1) - - + + - + All files (**) Tous les fichiers (**) @@ -1434,7 +1434,7 @@ Appuyer sur 1 pour le mode par défaut - + No valid file is selected Fichier invalide @@ -1445,26 +1445,26 @@ Appuyer sur 1 pour le mode par défaut - + Failed to read Snapmatic picture Impossible d'ouvrir la photo Snapmatic - + Failed to read Savegame file Impossible de lire le fichier de sauvegarde - - + + Can't import %1 because file can't be open Impossible d'importer %1, le fichier ne peut pas être ouvert - - + + Can't import %1 because file can't be parsed properly Impossible d'importer %1, le fichier ne peut pas être parsé correctement @@ -1679,13 +1679,13 @@ Appuyer sur 1 pour le mode par défaut Supprimer la sélection ? - + All profile files (*.g5e SGTA* PGTA*) Tous les fichiers de profil (*.g5e SGTA* PGTA*) - + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1709,7 +1709,7 @@ Appuyer sur 1 pour le mode par défaut SavegameDialog - + Savegame Viewer Gestionnaire de sauvegardes @@ -1729,7 +1729,7 @@ Appuyer sur 1 pour le mode par défaut &Fermer - + Failed at %1 Échec de %1 @@ -1912,13 +1912,13 @@ Appuyer sur 1 pour le mode par défaut - - - - - - - + + + + + + + Snapmatic Properties Propriétés Snapmatic @@ -1959,7 +1959,7 @@ Appuyer sur 1 pour le mode par défaut - + Snapmatic Title Titre Snapmatic @@ -1969,30 +1969,30 @@ Appuyer sur 1 pour le mode par défaut Valeurs Snapmatic - + Crew: %1 (%2) Crew : %1 (%2) - + Title: %1 (%2) Titre : %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here Joueurs : %1 (%2) - + Player: %1 (%2) One Player is inserted here Joueur : %1 (%2) - - + + Appropriate: %1 Valide : %1 @@ -2032,64 +2032,64 @@ Appuyer sur 1 pour le mode par défaut A&nnuler - - - + + + Edit Éditer - + Yes Yes, should work fine Oui, devrait fonctionner Oui - + No No, could lead to issues Non, pourrait causer des erreurs Non - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? <h4>Modifications détectées</h4>Voulez-vous sauvegarder le contenu JSON avant de quitter ? - + Patching of Snapmatic Properties failed because of %1 Patch des propriétés Snapmatic échoué : %1 - + Patching of Snapmatic Properties failed because of JSON Error Patch des propriétés Snapmatic échoué : erreur JSON - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error La modification des propriétés Snapmatic a échoué : erreur d'entrée/sortie - + New Snapmatic title: Nouveau titre Snapmatic : - + Snapmatic Crew Crew Snapmatic - + New Snapmatic crew: Nouveau crew Snapmatic : @@ -2097,66 +2097,66 @@ Appuyer sur 1 pour le mode par défaut SnapmaticPicture - + PHOTO - %1 PHOTO - %1 - + open file %1 ouverture du fichier %1 - + header not exists les headers n'existent pas - + header is malformed les headers sont incorrects - + picture not exists (%1) l'image n'existe pas (%1) - + JSON not exists (%1) le JSON n'existe pas (%1) - + title not exists (%1) le titre n'existe pas (%1) - + description not exists (%1) la description n'existe pas (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error lecture du fichier %1 : %2 - - + + JSON is incomplete and malformed JSON incomplet ou incorrect - - + + JSON is incomplete JSON incomplet - - + + JSON is malformed JSON incorrect @@ -2205,8 +2205,8 @@ Appuyer sur 1 pour le mode par défaut - - + + Delete picture Supprimer la photo @@ -2216,22 +2216,22 @@ Appuyer sur 1 pour le mode par défaut Supprimer - + Are you sure to delete %1 from your Snapmatic pictures? Supprimer %1 ? - + Failed at deleting %1 from your Snapmatic pictures Impossible de supprimer %1 - + Failed to hide %1 In-game from your Snapmatic pictures %1 n'a pas pu être rendu invisible en jeu - + Failed to show %1 In-game from your Snapmatic pictures %1 n'a pas pu être rendu visible en jeu @@ -2349,7 +2349,7 @@ Appuyer sur 1 pour le mode par défaut - + &Close Fer&mer @@ -2425,15 +2425,15 @@ Appuyer sur 1 pour le mode par défaut - + Select &GTA V Folder... Modifier l'emplacement de &GTA V... - - - + + + Select GTA V Folder... Modifier l'emplacement de GTA V... @@ -2494,51 +2494,51 @@ Appuyer sur 1 pour le mode par défaut - + &About %1 &À propos de %1 - - + + Select Profile Sélectionner un profil - + Open File... Ouvrir... - - - - + + + + Open File Ouvrir - + Can't open %1 because of not valid file format Impossible d'ouvrir %1, format invalide - + %1 - Messages %1 - Nouvelles - + Show In-game Visible en jeu - + Hide In-game Invisible en jeu diff --git a/res/gta5sync_ko.ts b/res/gta5sync_ko.ts index 5453fc8..2c58356 100644 --- a/res/gta5sync_ko.ts +++ b/res/gta5sync_ko.ts @@ -37,31 +37,31 @@ Qt로 실행 %6<br/> 닫기(&C) - + Translated by %1 Translated by translator, example Translated by Syping 번역 %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile 앙시모사우루스,https://steamcommunity.com/profiles/76561198166105984/ - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames 이 프로그램은 GTA 5 스냅매틱을 수정하고 보기 위한 프로젝트입니다.<br/> 이미지 뷰어 및 세이브 파일 관리 지원 - + Copyright &copy; <a href="%1">%2</a> %3 저작권 &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1는 <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> 에 따라 라이센스가 부여됩니다 @@ -177,47 +177,47 @@ Pictures and Savegames ImageEditorDialog - + Overwrite Image... 이미지 덮어쓰기 - + Apply changes 변경 사항 적용 - + &Overwrite 덮어쓰기(&O) - + Discard changes 변경 사항 무시 - + &Close 닫기(&C) - - - - + + + + Snapmatic Image Editor 스냅매틱 이미지 편집기 - - + + Patching of Snapmatic Image failed because of I/O Error I/O 오류로 인해 스냅매틱 이미지를 패치하지 못했습니다. - - + + Patching of Snapmatic Image failed because of Image Error 이미지 오류로 인해 스냅매틱 이미지를 패치하지 못했습니다. @@ -262,9 +262,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> 배경 색상: <span style="color: %1">%1</span> @@ -279,9 +279,9 @@ Pictures and Savegames - - - + + + Background Image: 배경 이미지: @@ -370,27 +370,27 @@ Pictures and Savegames 취소(&C) - + &Import new Picture... 새로운 사진 가져오기(&I) - + &Crop Picture... 사진 자르기(&C) - + &Load Settings... 설정 불러오기(&L) - + &Save Settings... 설정 저장(&S) - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! @@ -398,8 +398,8 @@ Pictures and Savegames 사용자 지정 아바타 - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! @@ -407,112 +407,112 @@ Pictures and Savegames 사용자 지정 사진 - - + + Background Image: %1 배경 이미지: %1 - + Storage Background Image: Storage 배경 이미지: 저장됨 저장됨 - + Crop Picture... 사진 자르기 - + &Crop 자르기(&C) - + Crop Picture 사진 자르기 - - + + Load Settings... 설정 불러오기 - - + + Please import a new picture first 먼저 새 이미지를 가져오세요 - - + + Default Default as Default Profile 기본 프로필로 기본 설정 기본 - - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + + Profile %1 Profile %1 as Profile 1 %1을 프로필 1로 지정합니다. 프로필 %1 - - + + Please select your settings profile 설정 프로필을 선택하세요 - - + + Save Settings... 설정 저장 - - + + Snapmatic Avatar Zone 스냅매틱 아바타 영역 - - + + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! 아바타 구역 밖에서 네모난 이미지를 정말 사용합니까? 아바타로 사용하려는 경우 이미지가 분리됩니다! - + Select Colour... 색상 선택 - + File Background Image: File 배경 이미지: 파일 @@ -547,7 +547,7 @@ When you want to use it as Avatar the image will be detached! 닫기(&C) - + JSON Error JSON 오류 @@ -610,7 +610,7 @@ When you want to use it as Avatar the image will be detached! 완료(&D) - + X: %1 Y: %2 X and Y position @@ -763,26 +763,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 찾음: %1 - - + - + + Language: %1 언어: %1 @@ -803,7 +803,7 @@ Y: %2 - + Participate in %1 User Statistics 사용자 통계 참가 %1 @@ -839,8 +839,8 @@ Y: %2 - + Participation ID: %1 참여 아이디: %1 @@ -862,8 +862,8 @@ Y: %2 - - + + Current: %1 현재: %1 @@ -931,100 +931,100 @@ Y: %2 취소(&C) - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (우선 순위) - + System System in context of System default 시스템 - + %1 (Game language) Next closest language compared to the Game settings 게임 설정과 가장 가까운 언어 %1 (게임 언어) - - + + Auto Automatic language choice. 언어 자동 선택 자동 - - + + %1 (Closest to Interface) Next closest language compared to the Interface 인터페이스와 가장 가까운 언어 %1 (인터페이스와 가까운 언어) - + %1 %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. 다시 시작한 후 새 사용자 지정 폴더가 초기화됩니다. %1. - + No Profile No Profile, as default 프로필 없음 (기본값) 프로필 없음 - - + + Profile: %1 프로필: %1 - + View %1 User Statistics Online 온라인 %1 사용자 통계 보기 - + Not registered 등록되지 않았습니다. - - - - + + + + Yes - - + + No 아니요 - - + + OS defined OS 정의 - - + + Steam defined 스팀 정의 @@ -1068,43 +1068,43 @@ Y: %2 닫기(&C) - + Export as &Picture... 내 PC에 이미지로 내보내기(&P) - + Export as &Snapmatic... 내 PC에 스냅매틱으로 내보내기(&S) - + &Edit Properties... 속성 편집(&E) - + &Overwrite Image... 이미지 덮어쓰기(&O) - + Open &Map Viewer... 지도 뷰어 열기(&M) - + Open &JSON Editor... JSON 편집기 열기(&J) - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1113,35 +1113,35 @@ Arrow Keys - Navigate 화살표키 - 이동 - + Snapmatic Picture Viewer 스냅매틱 이미지 뷰어 - + Failed at %1 %1에서 실패했습니다. - - - + + + No Players 플레이어 없음 - - + + No Crew 조직 없음 - + Unknown Location 알 수 없는 위치 - + Avatar Preview Mode Press 1 for Default View 아바타 미리 보기 모드입니다. @@ -1279,28 +1279,28 @@ Press 1 for Default View 취소(&C) - + Add Players... 플레이어 추가 - + Failed to add more Players because the limit of Players are %1! 플레이어의 제한이 %1이므로 플레이어를 추가하지 못했습니다! - - + + Add Player... 플레이어 추가 - + Enter Social Club Player ID 소셜 클럽 플레이어 아이디 입력 - + Failed to add Player %1 because Player %1 is already added! %1 플레이어가 이미 추가되어 %1 플레이어를 추가하지 못했습니다! @@ -1350,8 +1350,8 @@ Press 1 for Default View %2 파일 중 %1 파일을 내보냅니다. - - + + @@ -1373,40 +1373,40 @@ Press 1 for Default View 가져오기 - - - - - - + + + + + + Import 가져오기 - - + + All image files (%1) 모든 이미지 파일 (%1) - - + + - + All files (**) 모든 파일 (**) - - + + Can't import %1 because file can't be open 파일을 열 수 없으므로 %1을 가져올 수 없습니다. - - + + Can't import %1 because file can't be parsed properly 파일을 구문 분석할 수 없으므로 %1을 가져올 수 없습니다. @@ -1438,26 +1438,26 @@ Press 1 for Default View - + GTA V Export (*.g5e) GTA V로 내보내기 (*.g5e) - + Savegames files (SGTA*) 세이브 파일 (SGTA*) - + Snapmatic pictures (PGTA*) 스냅매틱 이미지 (PGTA*) - + No valid file is selected 올바른 파일이 선택되지 않았습니다. @@ -1478,13 +1478,13 @@ Press 1 for Default View - + Failed to read Snapmatic picture 스냅매틱 이미지를 읽지 못했습니다. - + Failed to read Savegame file 세이브 파일을 읽지 못했습니다. @@ -1703,7 +1703,7 @@ Press 1 for Default View 제목 변경 - + All profile files (*.g5e SGTA* PGTA*) 모든 프로필 파일 (*.g5e SGTA* PGTA*) @@ -1727,7 +1727,7 @@ Press 1 for Default View SavegameDialog - + Savegame Viewer 세이브 파일 보기 @@ -1747,7 +1747,7 @@ Press 1 for Default View 닫기(&C) - + Failed at %1 실패 %1 @@ -1930,13 +1930,13 @@ Press 1 for Default View - - - - - - - + + + + + + + Snapmatic Properties 스냅매틱 속성 @@ -2016,100 +2016,100 @@ Press 1 for Default View 취소(&C) - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? < h4>저장되지 않은 변경 내용이 감지되었습니다. </h4>그만두기 전에 JSON 콘텐츠를 저장하겠습니까? - + Patching of Snapmatic Properties failed because of %1 %1로 인해 스냅매틱 속성을 패치하지 못했습니다. - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error I/O 오류로 인해 스냅매틱 속성을 패치하지 못했습니다. - + Patching of Snapmatic Properties failed because of JSON Error JSON 오류로 인해 스냅매틱 속성을 패치하지 못했습니다. - + Snapmatic Crew 조직 스냅매틱 - + New Snapmatic crew: 새로운 조직 스냅매틱: - + Snapmatic Title 스냅매틱 제목 - + New Snapmatic title: 새로운 스냅매틱 제목: - - - + + + Edit 편집 - + Players: %1 (%2) Multiple Player are inserted here 여기에 여러 플레이어가 추가됩니다. 플레이어: %1 (%2) - + Player: %1 (%2) One Player is inserted here 여기에 플레이어 하나가 추가됩니다. 플레이어: %1 (%2) - + Title: %1 (%2) 제목: %1 (%2) - - + + Appropriate: %1 변경: %1 - + Yes Yes, should work fine 네, 잘 될 거예요. - + No No, could lead to issues 아니요, 문제가 발생할 수 있습니다. 아니요 - + Crew: %1 (%2) 조직: %1 (%2) @@ -2117,65 +2117,65 @@ Press 1 for Default View SnapmaticPicture - - + + JSON is incomplete and malformed JSON 파일이 불안정하거나 형식이 잘못되었습니다. - - + + JSON is incomplete JSON 파일이 불안정합니다. - - + + JSON is malformed 잘못된 JSON 형식 - + PHOTO - %1 사진 - %1 - + open file %1 파일 열기 %1 - + header not exists 헤더가 존재하지 않습니다. - + header is malformed 헤더의 형식이 잘못되었습니다. - + picture not exists (%1) 이미지가 존재하지 않습니다. (%1) - + JSON not exists (%1) JSON 파일이 존재하지 않습니다. (%1) - + title not exists (%1) 제목이 존재하지 않습니다. (%1) - + description not exists (%1) 설명이 존재하지 않습니다. (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error %2의 예: JSON이 잘못된 형식입니다 @@ -2226,8 +2226,8 @@ Press 1 for Default View - - + + Delete picture 이미지 삭제 @@ -2297,22 +2297,22 @@ Press 1 for Default View 모두 선택 해제(&D) - + Are you sure to delete %1 from your Snapmatic pictures? 스냅매틱 이미지에서 %1을 삭제하시겠습니까? - + Failed at deleting %1 from your Snapmatic pictures 스냅매틱 이미지에서 %1을 삭제하지 못했습니다. - + Failed to hide %1 In-game from your Snapmatic pictures 인게임 스냅매틱 이미지에서 %1 을 숨기지 못했습니다. - + Failed to show %1 In-game from your Snapmatic pictures 인게임 스냅매틱 이미지에서 %1 을 표시하지 못했습니다. @@ -2377,7 +2377,7 @@ Press 1 for Default View - + &Close 닫기(&C) @@ -2414,7 +2414,7 @@ Press 1 for Default View - + &About %1 %1 정보(&A) @@ -2470,15 +2470,15 @@ Press 1 for Default View - + Select &GTA V Folder... GTA V 폴더 선택(&G) - - - + + + Select GTA V Folder... GTA V 폴더 선택 @@ -2523,44 +2523,44 @@ Press 1 for Default View - + Show In-game 인게임 보이기 - + Hide In-game 인게임 숨기기 - - + + Select Profile 프로필 선택 - + Open File... 파일 열기... - - - - + + + + Open File 파일 열기 - + Can't open %1 because of not valid file format 올바른 파일 형식이 아니므로 %1을 열 수 없습니다. - + %1 - Messages %1 - 뉴스 diff --git a/res/gta5sync_ru.ts b/res/gta5sync_ru.ts index 2c3bd72..9145f42 100644 --- a/res/gta5sync_ru.ts +++ b/res/gta5sync_ru.ts @@ -37,31 +37,31 @@ Running with Qt %6<br/> &Закрыть - + Translated by %1 Translated by translator, example Translated by Syping Перевёл %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile VADemon,https://github.com/VADemon/ - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Проект для просмотра Grand Theft Auto V Snapmatic<br/> картинок и сохранений - + Copyright &copy; <a href="%1">%2</a> %3 Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 под лицензией <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> @@ -181,47 +181,47 @@ Pictures and Savegames ImageEditorDialog - - - - + + + + Snapmatic Image Editor Редактор картинок Snapmatic - + Overwrite Image... Перезаписать картинку... - + Apply changes Применить изменения - + &Overwrite &Перезаписать - + Discard changes Отменить изменения - + &Close &Закрыть - - + + Patching of Snapmatic Image failed because of I/O Error Не удалось изменить картинку Snapmatic из-за ошибки ввода-вывода - - + + Patching of Snapmatic Image failed because of Image Error Не удалось изменить картинку Snapmatic из-за ошибки Image Error @@ -266,9 +266,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> Цвет фона: <span style="color: %1">%1</span> @@ -297,8 +297,8 @@ Pictures and Savegames Импортировать как есть, не меняя картинку. Обязательно поломает Snapmatic, если не знаешь, что делаешь - - + + Background Image: %1 Фоновая картинка: %1 @@ -377,144 +377,144 @@ Pictures and Savegames - - - + + + Background Image: Фоновая картинка: - + &Import new Picture... &Импортировать картинку... - + &Crop Picture... Об&резать картинку... - + &Load Settings... &Загрузить настройки... - + &Save Settings... &Сохранить настройки... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Свой Аватар - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! Своя Картинка - + Storage Background Image: Storage Хранилище - + Crop Picture... Обрезать картинку... - + &Crop Об&резать - + Crop Picture Обрезать картинку - - + + Please import a new picture first Импортируй сначала новую картинку - - + + Default Default as Default Profile По умолчанию - - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + + Profile %1 Profile %1 as Profile 1 Профиль %1 - - + + Load Settings... Загрузить настройки... - - + + Please select your settings profile Пожалуйста, выбери профиль для настроек - - + + Save Settings... Сохранить настройки... - - + + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Ты точно хочешь использовать квадратное изображение вне зоны аватарки? Если это аватар, то изображение будет обрезано! - - + + Snapmatic Avatar Zone Зона Snapmatic Аватарки - + Select Colour... Выбрать цвет... - + File Background Image: File Файл @@ -548,7 +548,7 @@ When you want to use it as Avatar the image will be detached! &Закрыть - + JSON Error Ошибка JSON @@ -611,7 +611,7 @@ When you want to use it as Avatar the image will be detached! &Готово - + X: %1 Y: %2 X and Y position @@ -763,26 +763,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 Найдено: %1 - - + - + + Language: %1 Язык: %1 @@ -803,7 +803,7 @@ Y: %2 - + Participate in %1 User Statistics Участвовать в пользовательской статистике %1 @@ -836,8 +836,8 @@ Y: %2 - + Participation ID: %1 Номер участника: %1 @@ -890,8 +890,8 @@ Y: %2 - - + + Current: %1 Сейчас: %1 @@ -933,95 +933,95 @@ Y: %2 От&мена - + System System in context of System default Система - + %1 (Game language) Next closest language compared to the Game settings %1 (Язык игры) - - + + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Совпадает с интерфейсом) - - + + Auto Automatic language choice. Автоматически - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (Приоритетный язык) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Другая папка будет загружена после перезапуска %1. - + View %1 User Statistics Online Посмотреть пользовательскую статистику %1 онлайн - + Not registered Не зарегистрирован - - - - + + + + Yes Да - - + + No Нет - - + + OS defined Настройка от ОС - - + + Steam defined Настройка от Steam - + No Profile No Profile, as default Нет профиля - - + + Profile: %1 Профиль: %1 @@ -1071,37 +1071,37 @@ Y: %2 Экспортировать - + Export as &Picture... Экспортировать как &картинку... - + Export as &Snapmatic... Экспортировать как &Snapmatic... - + &Overwrite Image... &Перезаписать картинку... - + &Edit Properties... &Изменить свойства... - + Open &Map Viewer... Открыть &карту... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1110,37 +1110,37 @@ Arrow Keys - Navigate Стрелки - Навигация - + Snapmatic Picture Viewer Просмотрщик фотографий Snapmatic - + Failed at %1 Ошибка при %1 - - + + No Crew Вне банды - - - + + + No Players Игроков нет - + Avatar Preview Mode Press 1 for Default View Режим просмотра аватарок Нажмите 1 для стандартного просмотра - + Unknown Location Неизвестное место @@ -1242,7 +1242,7 @@ Press 1 for Default View Картинки Snapmatic (PGTA*) - + Open &JSON Editor... Открыть &редактор JSON... @@ -1276,28 +1276,28 @@ Press 1 for Default View &Отмена - + Add Players... Добавить игроков... - + Failed to add more Players because the limit of Players are %1! Невозможно добавить больше игроков из-за ограничения в %1! - - + + Add Player... Добавить игрока... - + Enter Social Club Player ID Введите идентификатор игрока из Social Club - + Failed to add Player %1 because Player %1 is already added! Нельзя повторно добавить игрока %1, %1 уже добавлен! @@ -1357,8 +1357,8 @@ Press 1 for Default View <h4>Нижеследующие картинки Snapmatic были восстановлены</h4>%1 - - + + @@ -1380,32 +1380,32 @@ Press 1 for Default View Импортировать... - - - - - - + + + + + + Import Импортировать - + Savegames files (SGTA*) Файлы сохранения (SGTA*) - + Snapmatic pictures (PGTA*) Картинка Snapmatic (PGTA*) - - + + - + All files (**) Все файлы (**) @@ -1426,20 +1426,20 @@ Press 1 for Default View - + Failed to read Snapmatic picture Не удалось загрузить картинку Snapmatic - + Failed to read Savegame file Не удалось загрузить файл сохранения - + No valid file is selected Выбранный файл неверен @@ -1454,22 +1454,22 @@ Press 1 for Default View Файлы для импорта (%1) - - + + All image files (%1) Все файлы изображений (%1) - - + + Can't import %1 because file can't be open Не удалось открыть %1, файл не может быть открыт - - + + Can't import %1 because file can't be parsed properly Не получилось импортировать %1, файл не может быть правильно обработан @@ -1692,13 +1692,13 @@ Press 1 for Default View Экспортируется файл %1 из %2 - + All profile files (*.g5e SGTA* PGTA*) Все файлы профиля (*.g5e SGTA* PGTA*) - + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1714,7 +1714,7 @@ Press 1 for Default View SavegameDialog - + Savegame Viewer Просмотрщик сохранений @@ -1734,7 +1734,7 @@ Press 1 for Default View &Закрыть - + Failed at %1 Ошибка при %1 @@ -1917,13 +1917,13 @@ Press 1 for Default View - - - - - - - + + + + + + + Snapmatic Properties Свойства Snapmatic @@ -1963,7 +1963,7 @@ Press 1 for Default View Значения в Snapmatic - + Crew: %1 (%2) Банда: %1 (%2) @@ -1974,30 +1974,30 @@ Press 1 for Default View - + Snapmatic Title Заголовок Snapmatic - + Title: %1 (%2) Заголовок: %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here Игроки: %1 (%2) - + Player: %1 (%2) One Player is inserted here Игрок: %1 (%2) - - + + Appropriate: %1 Подходит: %1 @@ -2037,62 +2037,62 @@ Press 1 for Default View &Отмена - - - + + + Edit Правка - + Yes Yes, should work fine Да - + No No, could lead to issues Нет - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? <h4>Несохранённые изменения</h4>Сохранить изменения в JSON перед выходом? - + Patching of Snapmatic Properties failed because of %1 Не удалось изменить свойства Snapmatic из-за %1 - + Patching of Snapmatic Properties failed because of JSON Error Не удалось измененить свойства Snapmatic из-за ошибки JSON - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error Не удалось измененить свойства Snapmatic из-за проблемы ввода/вывода - + New Snapmatic title: Новый заголовок Snapmatic: - + Snapmatic Crew Банда на Snapmatic - + New Snapmatic crew: Новая банда на Snapmatic: @@ -2100,66 +2100,66 @@ Press 1 for Default View SnapmaticPicture - + PHOTO - %1 ФОТО - %1 - + open file %1 Открыть файл %1 - + header not exists Отсутствует шапка (header) - + header is malformed Шапка (header) повреждена - + picture not exists (%1) Картинки не существует (%1) - + JSON not exists (%1) JSON не существует (%1) - + title not exists (%1) Заголовок отсутствует (%1) - + description not exists (%1) Описание отсутствует (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error Чтение из файла %1 из-за %2 - - + + JSON is incomplete and malformed JSON не полный и повреждён - - + + JSON is incomplete JSON частично отсутствует - - + + JSON is malformed JSON повреждён @@ -2203,28 +2203,28 @@ Press 1 for Default View - - + + Delete picture Удалить картинку - + Are you sure to delete %1 from your Snapmatic pictures? Уверены, что хотите удалить %1 из коллекции картинок Snapmatic? - + Failed at deleting %1 from your Snapmatic pictures Не удалось удалить %1 из колелкции картинок Snapmatic - + Failed to hide %1 In-game from your Snapmatic pictures Не удалось скрыть %1 из списка картинок Snapmatic в игре - + Failed to show %1 In-game from your Snapmatic pictures Не удалось показать %1 в списке картинок Snapmatic в игре @@ -2392,7 +2392,7 @@ Press 1 for Default View - + Select &GTA V Folder... Выбрать &папку GTA V... @@ -2436,7 +2436,7 @@ Press 1 for Default View - + &Close &Закрыть @@ -2477,16 +2477,16 @@ Press 1 for Default View - - + + Select Profile Выбор профиля - - - + + + Select GTA V Folder... Выбрать папку GTA V... @@ -2499,30 +2499,30 @@ Press 1 for Default View - + &About %1 &О программе %1 - + Open File... Открыть файл... - - - - + + + + Open File Открыть файл - + Can't open %1 because of not valid file format Не удалось открыть %1 из-за неверного формата файла - + %1 - Messages %1 - Новости @@ -2534,14 +2534,14 @@ Press 1 for Default View - + Show In-game Показывать в игре - + Hide In-game Скрыть в игре diff --git a/res/gta5sync_uk.ts b/res/gta5sync_uk.ts index 32bf9a2..9cfbca6 100644 --- a/res/gta5sync_uk.ts +++ b/res/gta5sync_uk.ts @@ -37,13 +37,13 @@ Running with Qt %6<br/> &Закрити - + Translated by %1 Translated by translator, example Translated by Syping Переклад %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile PROFessoR 'AppleSOft',https://steamcommunity.com/id/AppleSOft @@ -52,19 +52,19 @@ twitter,https://twitter.com/_VenJam1n VenJam1n,g5e://about?VmVuSmFtMW4:U3RlYW06IDxhIGhyZWY9Imh0dHBzOi8vc3RlYW1jb21tdW5pdHkuY29tL3Byb2ZpbGVzLzc2NTYxMTk3OTg0NjM1ODE2LyI+UFJPRmVzc29SICdBcHBsZVNPZnQnPC9hPjxici8+U29jaWFsIENsdWI6IDxhIGhyZWY9Imh0dHBzOi8vc29jaWFsY2x1Yi5yb2Nrc3RhcmdhbWVzLmNvbS9tZW1iZXIvLS1WZW5KYW0xbi0tLzU2Mzc1NjkiPlZlbkphbTFuPC9hPjxici8+VHdpdHRlcjogPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9fVmVuSmFtMW4iPlZlbkphbTFuPC9hPg - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Проект для перегляду Grand Theft Auto V Snapmatic<br/> зображень та сейвів - + Copyright &copy; <a href="%1">%2</a> %3 Авторське право &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 ліцензовано під <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> @@ -180,47 +180,47 @@ Pictures and Savegames ImageEditorDialog - + Overwrite Image... Перезаписати зображення... - + Apply changes Застосувати зміни - + &Overwrite &Перезаписати - + Discard changes Скасувати зміни - + &Close &Закрити - - - - + + + + Snapmatic Image Editor Редактор Snapmatic зображень - - + + Patching of Snapmatic Image failed because of I/O Error Виправлення Snapmatic зображення не вдалося через I/O Error - - + + Patching of Snapmatic Image failed because of Image Error Виправлення Snapmatic зображення не вдалося через помилку картинки @@ -265,9 +265,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> Фоновий колір: <span style="color: %1">%1</span> @@ -282,9 +282,9 @@ Pictures and Savegames - - - + + + Background Image: Фонове зображення: @@ -373,144 +373,144 @@ Pictures and Savegames &Скасувати - + &Import new Picture... &Імпортувати нове зображення... - + &Crop Picture... &Обрізати зображення... - + &Load Settings... &Завантажити параметри... - + &Save Settings... &Зберегти параметри... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Користувацький Аватар - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! Користувацьке Зображення - + Storage Background Image: Storage Зберігання - + Crop Picture... Обрізати зображення... - + &Crop &Обрізати - + Crop Picture Обрізати зображення - - + + Please import a new picture first Спершу імпортуйте нове зображення - - + + Default Default as Default Profile Стандартний - - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + + Profile %1 Profile %1 as Profile 1 Профіль %1 - - + + Load Settings... Завантажити параметри... - - + + Save Settings... Зберегти параметри... - - + + Snapmatic Avatar Zone Зона Snapmatic Аватару - - + + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Ви впевнені, що будете використовувати квадратне зображення поза зоною аватара? Якщо ви хочете використовувати його як Аватар, зображення буде відокремлено! - + Select Colour... Вибір кольору... - - + + Background Image: %1 Фонове зображення: %1 - - + + Please select your settings profile Будь ласка, виберіть свій профіль налаштувань - + File Background Image: File Файл @@ -544,7 +544,7 @@ When you want to use it as Avatar the image will be detached! &Закрити - + JSON Error JSON помилка @@ -607,7 +607,7 @@ When you want to use it as Avatar the image will be detached! &Готово - + X: %1 Y: %2 X and Y position @@ -759,26 +759,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 Знайдено:%1 - - + - + + Language: %1 Мова: %1 @@ -800,7 +800,7 @@ Y: %2 - + Participate in %1 User Statistics Опитування %1 про устаткування ПК @@ -836,8 +836,8 @@ Y: %2 - + Participation ID: %1 ID учасника : %1 @@ -859,8 +859,8 @@ Y: %2 - - + + Current: %1 Зараз: %1 @@ -926,95 +926,95 @@ Y: %2 &Скасувати - + System System in context of System default Як у системи - + %1 (Game language) Next closest language compared to the Game settings %1 (Мова гри) - - + + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Співпадає з інтерфейсом) - - + + Auto Automatic language choice. Автоматично - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (пріоритет мови) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Нова користувацька папка буде ініціалізована після перезапуску %1. - + No Profile No Profile, as default Жодного - - + + Profile: %1 Профіль: %1 - + View %1 User Statistics Online Переглянути користувацьку статистику %1 онлайн - + Not registered Не зареєстрований - - - - + + + + Yes Так - - + + No Ні - - + + OS defined Визначається ОС - - + + Steam defined Визначається Steam @@ -1058,43 +1058,43 @@ Y: %2 &Закрити - + Export as &Picture... Експортувати як &зображення... - + Export as &Snapmatic... Експортувати як &Snapmatic... - + &Edit Properties... &Змінити властивості... - + &Overwrite Image... &Перезаписати зображення... - + Open &Map Viewer... Відкрити &карту... - + Open &JSON Editor... Відкрити редактор &JSON... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1103,35 +1103,35 @@ Arrow Keys - Navigate Стрілки - Навігація - + Snapmatic Picture Viewer Переглядач фотографій Snapmatic - + Failed at %1 Помилка на%1 - - - + + + No Players Гравців немає - - + + No Crew Банди немає - + Unknown Location Невідома локація - + Avatar Preview Mode Press 1 for Default View Режим для аватарок @@ -1269,28 +1269,28 @@ Press 1 for Default View &Скасувати - + Add Players... Додати гравців... - + Failed to add more Players because the limit of Players are %1! Не вдалося додати більше гравців, бо ліміт %1! - - + + Add Player... Додати гравця... - + Enter Social Club Player ID Введіть ID гравця Social Club - + Failed to add Player %1 because Player %1 is already added! Не вдалося додати гравця %1, оскільки %1 вже доданий! @@ -1340,8 +1340,8 @@ Press 1 for Default View Експортується файл %1 з %2 файлів - - + + @@ -1363,40 +1363,40 @@ Press 1 for Default View Імпортування... - - - - - - + + + + + + Import Імпорт - - + + All image files (%1) Файли зображень (%1) - - + + - + All files (**) Усі файли (**) - - + + Can't import %1 because file can't be open Неможливо імпортувати %1, оскільки файл не може бути відкритий - - + + Can't import %1 because file can't be parsed properly Неможливо імпортувати %1, оскільки файл неможливо розібрати правильно @@ -1428,26 +1428,26 @@ Press 1 for Default View - + GTA V Export (*.g5e) GTA V Export (*.g5e) - + Savegames files (SGTA*) Файли збереження гри (SGTA*) - + Snapmatic pictures (PGTA*) Snapmatic зображення (PGTA*) - + No valid file is selected Вибрані недійсні файли @@ -1468,13 +1468,13 @@ Press 1 for Default View - + Failed to read Snapmatic picture Не вдалося прочитати Snapmatic картинку - + Failed to read Savegame file Не вдалося прочитати файл збереження гри @@ -1688,7 +1688,7 @@ Press 1 for Default View Змінити назву - + All profile files (*.g5e SGTA* PGTA*) Усі файли зображень (*.g5e SGTA* PGTA*) @@ -1712,7 +1712,7 @@ Press 1 for Default View SavegameDialog - + Savegame Viewer Перегляд файлів збереження гри @@ -1732,7 +1732,7 @@ Press 1 for Default View &Закрити - + Failed at %1 Помилка на %1 @@ -1915,13 +1915,13 @@ Press 1 for Default View - - - - - - - + + + + + + + Snapmatic Properties Властивості Snapmatic @@ -2001,96 +2001,96 @@ Press 1 for Default View &Скасувати - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? <h4> Виявлені незбережені зміни </h4> Ви хочете зберегти вміст JSON перед тим, як вийти? - + Patching of Snapmatic Properties failed because of %1 Змінити властивості Snapmatic не вдалося тому що%1 - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error Змінити властивості Snapmatic не вдалося через I/O Помилку - + Patching of Snapmatic Properties failed because of JSON Error Змінити властивості Snapmatic не вдалося через JSON Помилку - + Snapmatic Crew Snapmatic банда - + New Snapmatic crew: Нова Snapmatic банда: - + Snapmatic Title Snapmatic назва - + New Snapmatic title: Новий Snapmatic заголовок: - - - + + + Edit Правка - + Players: %1 (%2) Multiple Player are inserted here Гравці: %1 (%2) - + Player: %1 (%2) One Player is inserted here Гравець: %1 (%2) - + Title: %1 (%2) Назва: %1 (%2) - - + + Appropriate: %1 Підходить: %1 - + Yes Yes, should work fine Так - + No No, could lead to issues Ні - + Crew: %1 (%2) Банда: %1 (%2) @@ -2098,65 +2098,65 @@ Press 1 for Default View SnapmaticPicture - - + + JSON is incomplete and malformed JSON неповний та неправильний - - + + JSON is incomplete JSON неповний - - + + JSON is malformed JSON неправильний - + PHOTO - %1 ФОТО - %1 - + open file %1 відкрити файл%1 - + header not exists заголовок не існує - + header is malformed заголовок неправильний - + picture not exists (%1) зображення не існує (%1) - + JSON not exists (%1) JSON не існує (%1) - + title not exists (%1) заголовок не існує (%1) - + description not exists (%1) опис не існує (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error читання файлу %1 тому що %2 @@ -2206,8 +2206,8 @@ Press 1 for Default View - - + + Delete picture Видалити фото @@ -2277,22 +2277,22 @@ Press 1 for Default View &Зняти виділення усіх - + Are you sure to delete %1 from your Snapmatic pictures? Ви дійсно бажаєте видалити %1 з ваших Snapmatic фотографій? - + Failed at deleting %1 from your Snapmatic pictures Не вдалося видалити%1 з ваших Snapmatic фотографій - + Failed to hide %1 In-game from your Snapmatic pictures Не вдалося сховати %1 Snapmatic у грі - + Failed to show %1 In-game from your Snapmatic pictures Не вдалося показати %1 Snapmatic у грі @@ -2357,7 +2357,7 @@ Press 1 for Default View - + &Close &Закрити @@ -2394,7 +2394,7 @@ Press 1 for Default View - + &About %1 &Про %1 @@ -2450,15 +2450,15 @@ Press 1 for Default View - + Select &GTA V Folder... Вибрати &GTA V теку... - - - + + + Select GTA V Folder... Вибрати GTA V теку... @@ -2503,44 +2503,44 @@ Press 1 for Default View - + Show In-game Показати у грі - + Hide In-game Сховати у грі - - + + Select Profile Вибрати профіль - + Open File... Відкрити файл... - - - - + + + + Open File Відкрити файл - + Can't open %1 because of not valid file format Неможливо відкрити %1 через невідомий формат файлу - + %1 - Messages %1 - Новини diff --git a/res/gta5sync_zh_TW.ts b/res/gta5sync_zh_TW.ts index 1f139f6..ad65545 100644 --- a/res/gta5sync_zh_TW.ts +++ b/res/gta5sync_zh_TW.ts @@ -37,30 +37,30 @@ Running with Qt %6<br/> 關閉(&C) - + Translated by %1 Translated by translator, example Translated by Syping 繁體中文化: %1 - + TRANSLATOR Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile Ray,https://steamcommunity.com/profiles/76561198282701714/ - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames 一個 Grand Theft Auto V Snapmatic 圖片、遊戲存檔檢視專案 - + Copyright &copy; <a href="%1">%2</a> %3 版權 &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 使用 <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> 授權條款發布 @@ -176,47 +176,47 @@ Pictures and Savegames ImageEditorDialog - + Overwrite Image... 修改圖片... - + Apply changes 套用變更 - + &Overwrite 修改(&O) - + Discard changes 捨棄變更 - + &Close 關閉(&C) - - - - + + + + Snapmatic Image Editor Snapmatic 圖片編輯器 - - + + Patching of Snapmatic Image failed because of I/O Error I/O 錯誤,Snapmatic 圖片更新失敗 - - + + Patching of Snapmatic Image failed because of Image Error 圖片錯誤,Snapmatic 圖片更新失敗 @@ -261,9 +261,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> 背景顏色: <span style="color: %1">%1</span> @@ -278,9 +278,9 @@ Pictures and Savegames - - - + + + Background Image: 背景圖片: @@ -369,143 +369,143 @@ Pictures and Savegames 取消(&C) - + &Import new Picture... 匯入新圖片(&I)... - + &Crop Picture... 裁剪圖片(&C)... - + &Load Settings... 載入設定(&L)... - + &Save Settings... 儲存設定(&S)... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! 自訂大頭貼 - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! 自訂圖片 - + Storage Background Image: Storage 儲存 - + Crop Picture... 裁剪圖片... - + &Crop 裁剪(&C) - + Crop Picture 裁剪圖片 - - + + Please import a new picture first 請先匯入新圖片 - - + + Default Default as Default Profile 預設 - - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + + Profile %1 Profile %1 as Profile 1 設定檔 %1 - - + + Load Settings... 載入設定... - - + + Save Settings... 儲存設定... - - + + Snapmatic Avatar Zone Snapmatic 大頭貼區域 - - + + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! 你確定要在大頭貼區域以外的地方使用方形圖片嗎? 作為大頭貼的圖片將被分離! - + Select Colour... 選擇顏色... - - + + Background Image: %1 背景圖片: %1 - - + + Please select your settings profile 請選擇設定檔 - + File Background Image: File 文件 @@ -539,7 +539,7 @@ When you want to use it as Avatar the image will be detached! 關閉(&C) - + JSON Error JSON 錯誤 @@ -602,7 +602,7 @@ When you want to use it as Avatar the image will be detached! 完成(&D) - + X: %1 Y: %2 X and Y position @@ -754,26 +754,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 找到: %1 - - + - + + Language: %1 語言: %1 @@ -794,7 +794,7 @@ Y: %2 - + Participate in %1 User Statistics 參與 %1 使用者統計 @@ -830,8 +830,8 @@ Y: %2 - + Participation ID: %1 參與 ID: %1 @@ -853,8 +853,8 @@ Y: %2 - - + + Current: %1 目前: %1 @@ -920,95 +920,95 @@ Y: %2 取消(&C) - + System System in context of System default 系統 - - + + %1 (Closest to Interface) Next closest language compared to the Interface %1 (與介面接近的語言) - - + + Auto Automatic language choice. 自動 - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (語言優先) - + %1 (Game language) Next closest language compared to the Game settings %1 (遊戲語言) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. 自訂資料夾將在 %1 重新啟動後初始化. - + No Profile No Profile, as default - - + + Profile: %1 設定檔: %1 - + View %1 User Statistics Online 檢視 %1 使用者統計資訊 - + Not registered 未註冊參與 - - - - + + + + Yes - - + + No - - + + OS defined 系統定義 - - + + Steam defined Steam 定義 @@ -1052,43 +1052,43 @@ Y: %2 關閉(&C) - + Export as &Picture... 匯出成圖片(&P)... - + Export as &Snapmatic... 匯出成 Snapmatic(&S)... - + &Edit Properties... 編輯屬性(&E) ... - + &Overwrite Image... 修改圖片(&O)... - + Open &Map Viewer... 開啟地圖檢視器(&M)... - + Open &JSON Editor... 開啟 JSON 編輯器(&J)... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1097,35 +1097,35 @@ Arrow Keys - Navigate 方向鍵 - 導覽 - + Snapmatic Picture Viewer Snapmatic 圖片檢視器 - + Failed at %1 失敗: %1 - - - + + + No Players - - + + No Crew - + Unknown Location 未知地點 - + Avatar Preview Mode Press 1 for Default View 大頭貼預覽模式 @@ -1263,28 +1263,28 @@ Press 1 for Default View 取消(&C) - + Add Players... 新增玩家... - + Failed to add more Players because the limit of Players are %1! 因為數量限制 %1,無法新增更多玩家! - - + + Add Player... 新增玩家... - + Enter Social Club Player ID 輸入玩家的 Social Club ID - + Failed to add Player %1 because Player %1 is already added! 新增 %1 失敗,因為 %1 已被新增! @@ -1334,8 +1334,8 @@ Press 1 for Default View 匯出檔案中 %1 共 %2 個檔案 - - + + @@ -1357,40 +1357,40 @@ Press 1 for Default View 匯入... - - - - - - + + + + + + Import 匯入 - - + + All image files (%1) 所有圖片 (%1) - - + + - + All files (**) 所有檔案 (**) - - + + Can't import %1 because file can't be open 無法匯入 %1,因為檔案無法開啟 - - + + Can't import %1 because file can't be parsed properly 無法匯入 %1,因為檔案無法正確解析 @@ -1422,26 +1422,26 @@ Press 1 for Default View - + GTA V Export (*.g5e) GTA V Export (*.g5e) - + Savegames files (SGTA*) 遊戲存檔 (SGTA*) - + Snapmatic pictures (PGTA*) Snapmatic 圖片 (PGTA*) - + No valid file is selected 沒有選擇有效的檔案 @@ -1460,13 +1460,13 @@ Press 1 for Default View - + Failed to read Snapmatic picture 無法讀取 Snapmatic 圖片 - + Failed to read Savegame file 無法讀取遊戲存檔 @@ -1678,7 +1678,7 @@ Press 1 for Default View 更改標題 - + All profile files (*.g5e SGTA* PGTA*) 所有設定檔檔案 (*.g5e SGTA* PGTA*) @@ -1694,7 +1694,7 @@ Press 1 for Default View SavegameDialog - + Savegame Viewer 遊戲存檔檢視器 @@ -1714,7 +1714,7 @@ Press 1 for Default View 關閉(&C) - + Failed at %1 失敗 %1 @@ -1897,13 +1897,13 @@ Press 1 for Default View - - - - - - - + + + + + + + Snapmatic Properties Snapmatic 屬性 @@ -1983,96 +1983,96 @@ Press 1 for Default View 取消(&C) - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? <h4>目前的變更未儲存</h4> 你想要在退出之前儲存 JSON 嗎? - + Patching of Snapmatic Properties failed because of %1 更新 Snapmatic 屬性失敗,因為 %1 - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error 讀寫錯誤,未能更新 Snapmatic 屬性 - + Patching of Snapmatic Properties failed because of JSON Error JSON 錯誤,未能更新 Snapmatic 屬性 - + Snapmatic Crew 幫會 - + New Snapmatic crew: 輸入新的幫會: - + Snapmatic Title 標題 - + New Snapmatic title: 輸入新的標題: - - - + + + Edit 編輯 - + Players: %1 (%2) Multiple Player are inserted here 玩家: %1 (%2) - + Player: %1 (%2) One Player is inserted here 玩家: %1 (%2) - + Title: %1 (%2) 標題: %1 (%2) - - + + Appropriate: %1 可使用: %1 - + Yes Yes, should work fine - + No No, could lead to issues - + Crew: %1 (%2) 幫會: %1 (%2) @@ -2080,65 +2080,65 @@ Press 1 for Default View SnapmaticPicture - - + + JSON is incomplete and malformed JSON 不完整和異常 - - + + JSON is incomplete JSON 不完整 - - + + JSON is malformed JSON 異常 - + PHOTO - %1 照片 - %1 - + open file %1 開啟檔案 - %1 - + header not exists 標頭不存在 - + header is malformed 標頭異常 - + picture not exists (%1) 圖片不存在 (%1) - + JSON not exists (%1) JSON 不存在 (%1) - + title not exists (%1) 標題不存在 (%1) - + description not exists (%1) 描述不存在 (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error 讀取檔案 %1 失敗,因為 %2 @@ -2188,8 +2188,8 @@ Press 1 for Default View - - + + Delete picture 刪除圖片 @@ -2259,22 +2259,22 @@ Press 1 for Default View 取消選擇全部(&D) - + Are you sure to delete %1 from your Snapmatic pictures? 你確定要刪除Snapmatic 圖片 %1 嗎? - + Failed at deleting %1 from your Snapmatic pictures 刪除 Snapmatic 圖片 %1 失敗 - + Failed to hide %1 In-game from your Snapmatic pictures 在遊戲中隱藏圖片 %1 失敗 - + Failed to show %1 In-game from your Snapmatic pictures 在遊戲中顯示圖片 %1 失敗 @@ -2338,7 +2338,7 @@ Press 1 for Default View - + &Close 關閉(&C) @@ -2375,7 +2375,7 @@ Press 1 for Default View - + &About %1 關於 %1(&A) @@ -2431,15 +2431,15 @@ Press 1 for Default View - + Select &GTA V Folder... 選擇 GTA V 資料夾(&G)... - - - + + + Select GTA V Folder... 選擇 GTA V 資料夾... @@ -2484,44 +2484,44 @@ Press 1 for Default View - + Show In-game 在遊戲中顯示 - + Hide In-game 在遊戲中隱藏 - - + + Select Profile 選擇設定檔 - + Open File... 開啟檔案... - - - - + + + + Open File 開啟檔案 - + Can't open %1 because of not valid file format 格式無效,無法開啟 %1 - + %1 - Messages %1 - 新聞 diff --git a/res/mapcayoperico.jpg b/res/mapcayoperico.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a9cdab12b95bccf4a492ae8b5a48347a1ba800a9 GIT binary patch literal 207954 zcmbrFLz^Z{vxJ|vZQHhO+qN}r+wPvWZQI7QZQC}_dw#=LxvE9wvaX1{BY)R^_W+2} z;!@%OARu7C;(rDB-2{mIcl+PY|2O&HI{f$gcLIO}33B#d0U-f^k$^yufPSX{-~dD* z#NQ17EC>()7!d>!008<0Ty^#nFR!$r0sycvanEtEQOPsSj^L0e*c6GJd$13!#=Ff94#?FjmmCz_`T7`cb=k>J5afb z_|g2^m1q;J$bW<`m(gVTPY=6OHTU@r?tB}{g&jiL-s*W%B|j}pxX`{QL_cl$P>51a z-%t`=8^Yj~Go{aiTLP{DY;xC53d(M8YSIwMd-5Pho4MX%vLQZO zE{)J#L9o~lXBem5i$RKwColuepe$ybK+82(be4eRS0gi0ymtPyEcdefDJ=0t6wxW| zUklSC+fce&{6WF6<3b4@zn6M^s>lNu4tC7eRzn

f7z|30P0IcB(2_s1^6L$MYpb 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π=AF9v{$_D^fbiJ#9jH5+}&(Wyp3f9O^3ebb7 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

l(y?Cg;YJ)*(31}h*ae1ixC07ySGRXzk zn2zwm#gQQdUmr`Yva_|$mTo;p2~~iL*f6R-ac3R#3~WQf?P9WAeIH~AeR~s{!ZVXi z?6G@9qbTaqn4$N*&n?YEYODH+Feng57N4uTdzNj19Hm)*uIOiPxF7R9I0}`t;A7h7 z1C4htwEqCY=+!<%yz8!II1J3J>64CwUH1@2Sa2rTKG?G_B+glxi^<2*#!JQ4Vl)7 z-o^42$+{*fVLrkyJ_HX&c8|mo#h?KJym*&QA(=ltQWY7{LW0P$Oon*&87Jtp@-ToZ zN7>LivOtBon60r%B64wu)r0EXm8tO~_B1>lBEqm^5CRr<6r52(SP@62ve00J zD8$U37xj?GIH=&6i|fAQe~^HR2pug^yqFsQ02IPvub=W!9|JL*2z}XQ0EMq@(jG4a z^6du$&pgkC&UFh`oFx^&6=pj65^key2df}%bFETp->WLspHal_cfz2>w|JT$u(_XX z6CKqFptyUdS+J4z$DH%yy{=_17M0>$2*a%F_4yRMS@Zxo-h3=HDyNi}7UwS-w%)^2 zc(!)VZ+#-^_ipSBwJ-40JLIv?^x3?{)x5NMCoG9ll_e`<8@<7~;L zJ3>U{62tyO*a8XSpkssdOUMDgNmF)s+H(WeT-BX=@m$dyR?^-P!dN~e8g|E{BD$

BSqWUeyRW!PqfVfbm-9tO3sE@2MLP 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%0Dk#~-|a<$FIPNzeZ$MOaPjwRR6L$n+xqA8fd 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


c_AEYHRBIw$&PKy9L_6yUdUOcv~qyQSFIp~14 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