Browse Source

DPI awareness and latest changes from gta5sync

1.4.x
Syping 5 years ago
parent
commit
ed559f3ce9
  1. 6
      .travis.yml
  2. 5
      AboutDialog.cpp
  3. 18
      AppEnv.cpp
  4. 3
      AppEnv.h
  5. 12
      ImportDialog.cpp
  6. 2
      ImportDialog.h
  7. 4
      OptionsDialog.cpp
  8. 72
      PictureDialog.cpp
  9. 6
      ProfileInterface.cpp
  10. 9
      ProfileInterface.ui
  11. 5
      SavegameDialog.cpp
  12. 2
      SavegameDialog.ui
  13. 8
      SavegameWidget.cpp
  14. 7
      SavegameWidget.ui
  15. 5
      SnapmaticEditor.cpp
  16. 1
      SnapmaticPicture.cpp
  17. 4
      SnapmaticWidget.cpp
  18. 11
      UserInterface.cpp
  19. 4
      config.h
  20. 6
      gta5view.pro
  21. 336
      lang/gta5sync_ru.ts
  22. 8
      res/app.rc
  23. 22
      res/gta5view.desktop
  24. BIN
      res/gta5view.png

6
.travis.yml

@ -24,15 +24,15 @@ before_script:
- echo "Grand Theft Auto V Snapmatic and Savegame viewer" > ./description-pak
script:
- qmake -qt=5 "DEFINES+=GTA5SYNC_BUILDTYPE=\\\\\\\"Developer\\\\\\\"" "DEFINES+=GTA5SYNC_DAILYB=\\\\\\\"$PACKAGE_VERSION-dev2\\\\\\\"" ../gta5view.pro
- qmake -qt=5 "DEFINES+=GTA5SYNC_BUILDTYPE=\\\\\\\"Developer\\\\\\\"" "DEFINES+=GTA5SYNC_DAILYB=\\\\\\\"$PACKAGE_VERSION-dev4\\\\\\\"" ../gta5view.pro
- make -j 4
- sudo checkinstall -D --default --nodoc --pkgname=gta5view --pkgversion=$PACKAGE_VERSION --pkgrelease=dev2 --pkggroup=utility --maintainer="Syping on Travis \<[email protected]\>" --requires=libqt5core5a,libqt5gui5,libqt5network5,libqt5widgets5 --pakdir=../package
- sudo checkinstall -D --default --nodoc --pkgname=gta5view --pkgversion=$PACKAGE_VERSION --pkgrelease=dev4 --pkggroup=utility --maintainer="Syping on Travis \<[email protected]\>" --requires=libqt5core5a,libqt5gui5,libqt5network5,libqt5widgets5 --pakdir=../package
deploy:
provider: releases
api_key:
secure: "o7VneEz1aHfdVwZvOZLfopf6uJWNrFsZaBvunTmXFzpmNFhlNS1qwqgMUkIA2yBRbZ3wIzVs4vfwIHv7W9yE/PqK+AYL+R8+AwKGrwlgT4HqJNuk6VM/LNJ6GwT/qkQuaoOVw29bUjmzzgIRdHmw53SlJv6Hh1VE8HphlTT//aex6nCfcFhUZ0BETdZDWz5FSHwL3NalUoqfKfQrJeky5RXzCyCANQC2tKt0bV46GaWIgWrDo2KCTNqPtRWWf5GDmnkXE5IYRMQ3mXvO9iYh0v5Y2jo4PiXGUiFUU6Z3aAWFAiPdGclrBO697cf3lCTzDMhuCETR153qFYsLShUlFf61ITAmCeHAWETjZDri0lmPONo3GoNB6alGfYEA51qw14kXakrTpICtTJj7gw/gtUYOabW6hrzmieNzMBIy62RikDPjyakFnuwW2qNHRlD65e0jYv+6nCpb6E+OV16Ysh1zhV2vTfpfzVmSuyu2J+ELqXD3OZCXRSPpDIih9UQ8335p8FBji6jHORcgym/TRgdgRmENibh8tLzWp+UjpWHuWfcpvZgOskjfwU0iDMCayMJ7tDpOhXHcAhDRnd6XRIiOJ5YZCzflj2nEwmt3YUd7DwXS/AU+WHOmcNQBjXBxF/FJa35XXcy3HKJM5TTKqtph3medo30us5yXHeG6NNg="
file: "../package/gta5view_$PACKAGE_VERSION-dev2_amd64.deb"
file: "../package/gta5view_$PACKAGE_VERSION-dev4_amd64.deb"
skip_cleanup: true
on:
tags: true

5
AboutDialog.cpp

@ -19,6 +19,7 @@
#include <QStringBuilder>
#include "AboutDialog.h"
#include "ui_AboutDialog.h"
#include "AppEnv.h"
#include "config.h"
AboutDialog::AboutDialog(QWidget *parent) :
@ -51,6 +52,10 @@ AboutDialog::AboutDialog(QWidget *parent) :
{
ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close"));
}
// DPI calculation
qreal screenRatio = AppEnv::screenRatio();
resize(375 * screenRatio, 260 * screenRatio);
}
AboutDialog::~AboutDialog()

18
AppEnv.cpp

@ -20,10 +20,14 @@
#include "AppEnv.h"
#include "StringParser.h"
#include "StandardPaths.h"
#include <QDir>
#include <QDebug>
#include <QtGlobal>
#include <QDesktopWidget>
#include <QApplication>
#include <QSettings>
#include <QScreen>
#include <QDebug>
#include <QRect>
#include <QDir>
#include <iostream>
using namespace std;
@ -130,3 +134,13 @@ QUrl AppEnv::getPlayerFetchingUrl(QString crewID, QString pageNumber)
{
return QUrl(QString("https://socialclub.rockstargames.com/crewsapi/GetMembersList?crewId=%1&pageNumber=%2").arg(crewID, pageNumber));
}
qreal AppEnv::screenRatio()
{
#if QT_VERSION >= 0x050000
qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInch();
#else
qreal dpi = qApp->desktop()->logicalDpiX();
#endif
return (dpi / 96);
}

3
AppEnv.h

@ -37,6 +37,9 @@ public:
static QByteArray getUserAgent();
static QUrl getCrewFetchingUrl(QString crewID);
static QUrl getPlayerFetchingUrl(QString crewID, QString pageNumber);
// Screen Stuff
static qreal screenRatio();
};
#endif // APPENV_H

12
ImportDialog.cpp

@ -18,6 +18,7 @@
#include "ImportDialog.h"
#include "ui_ImportDialog.h"
#include "AppEnv.h"
#include <QPainter>
#include <QPixmap>
#include <QImage>
@ -26,8 +27,6 @@
// IMAGES VALUES
#define snapmaticResolutionW 960
#define snapmaticResolutionH 536
#define snapmaticResolutionLW 430
#define snapmaticResolutionLH 240
#define snapmaticAvatarResolution 470
#define snapmaticAvatarPlacementW 145
#define snapmaticAvatarPlacementH 66
@ -50,6 +49,15 @@ ImportDialog::ImportDialog(QWidget *parent) :
}
ui->rbKeep->setChecked(true);
qreal screenRatio = AppEnv::screenRatio();
snapmaticResolutionLW = 430 * screenRatio;
snapmaticResolutionLH = 240 * screenRatio;
setMinimumSize(430 * screenRatio, 380 * screenRatio);
setMaximumSize(430 * screenRatio, 380 * screenRatio);
setFixedSize(430 * screenRatio, 380 * screenRatio);
ui->vlButtom->setSpacing(6 * screenRatio);
ui->vlButtom->setContentsMargins(9 * screenRatio, 6 * screenRatio, 9 * screenRatio, 9 * screenRatio);
}
ImportDialog::~ImportDialog()

2
ImportDialog.h

@ -53,6 +53,8 @@ private:
QImage workImage;
QImage newImage;
bool doImport;
int snapmaticResolutionLW;
int snapmaticResolutionLH;
};
#endif // IMPORTDIALOG_H

4
OptionsDialog.cpp

@ -70,6 +70,10 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) :
ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel"));
}
// DPI calculation
qreal screenRatio = AppEnv::screenRatio();
resize(435 * screenRatio, 405 * screenRatio);
setupTreeWidget();
setupLanguageBox();
setupRadioButtons();

72
PictureDialog.cpp

@ -26,6 +26,7 @@
#include "StringParser.h"
#include "GlobalString.h"
#include "UiModLabel.h"
#include "AppEnv.h"
#ifdef GTA5SYNC_WIN
#if QT_VERSION >= 0x050200
@ -118,7 +119,15 @@ void PictureDialog::setupPictureDialog(bool withDatabase_)
withDatabase = withDatabase_;
// Avatar area
avatarAreaPicture = QImage(":/img/avatararea.png");
qreal screenRatio = AppEnv::screenRatio();
if (screenRatio != 1)
{
avatarAreaPicture = QImage(":/img/avatararea.png").scaledToHeight(536 * screenRatio, Qt::FastTransformation);
}
else
{
avatarAreaPicture = QImage(":/img/avatararea.png");
}
avatarLocX = 145;
avatarLocY = 66;
avatarSize = 470;
@ -147,6 +156,7 @@ void PictureDialog::setupPictureDialog(bool withDatabase_)
installEventFilter(this);
installEventFilter(ui->labPicture);
ui->labPicture->setFixedSize(960 * screenRatio, 536 * screenRatio);
ui->labPicture->setFocusPolicy(Qt::StrongFocus);
}
@ -343,28 +353,29 @@ void PictureDialog::dialogPreviousPictureRequested()
void PictureDialog::renderOverlayPicture()
{
// Generating Overlay Preview
QRect preferedRect = QRect(0, 0, 200, 160);
qreal screenRatio = AppEnv::screenRatio();
QRect preferedRect = QRect(0, 0, 200 * screenRatio, 160 * screenRatio);
QString overlayText = tr("Key 1 - Avatar Preview Mode\nKey 2 - Toggle Overlay\nArrow Keys - Navigate");
QImage overlayImage(1, 1, QImage::Format_ARGB32_Premultiplied);
overlayImage.fill(Qt::transparent);
QPainter overlayPainter(&overlayImage);
QFont overlayPainterFont;
overlayPainterFont.setPixelSize(12);
overlayPainterFont.setPixelSize(12 * screenRatio);
overlayPainter.setFont(overlayPainterFont);
QRect overlaySpace = overlayPainter.boundingRect(preferedRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextDontClip | Qt::TextWordWrap, overlayText);
overlayPainter.end();
int hOverlay = Qt::AlignTop;
if (overlaySpace.height() < 74)
if (overlaySpace.height() < 74 * screenRatio)
{
hOverlay = Qt::AlignVCenter;
preferedRect.setHeight(71);
overlaySpace.setHeight(80);
preferedRect.setHeight(71 * screenRatio);
overlaySpace.setHeight(80 * screenRatio);
}
else
{
overlaySpace.setHeight(overlaySpace.height() + 6);
overlaySpace.setHeight(overlaySpace.height() + 6 * screenRatio);
}
overlayImage = overlayImage.scaled(overlaySpace.size());
@ -374,13 +385,13 @@ void PictureDialog::renderOverlayPicture()
overlayPainter.drawText(preferedRect, Qt::AlignLeft | hOverlay | Qt::TextDontClip | Qt::TextWordWrap, overlayText);
overlayPainter.end();
if (overlaySpace.width() < 194)
if (overlaySpace.width() < 194 * screenRatio)
{
overlaySpace.setWidth(200);
overlaySpace.setWidth(200 * screenRatio);
}
else
{
overlaySpace.setWidth(overlaySpace.width() + 6);
overlaySpace.setWidth(overlaySpace.width() + 6 * screenRatio);
}
QImage overlayBorderImage(overlaySpace.width(), overlaySpace.height(), QImage::Format_ARGB6666_Premultiplied);
@ -390,7 +401,7 @@ void PictureDialog::renderOverlayPicture()
overlayTempImage.fill(Qt::transparent);
QPainter overlayTempPainter(&overlayTempImage);
overlayTempPainter.drawImage(0, 0, overlayBorderImage);
overlayTempPainter.drawImage(3, 3, overlayImage);
overlayTempPainter.drawImage(3 * screenRatio, 3 * screenRatio, overlayImage);
overlayTempPainter.end();
}
@ -502,35 +513,58 @@ void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture)
void PictureDialog::renderPicture()
{
qreal screenRatio = AppEnv::screenRatio();
if (!previewMode)
{
if (overlayEnabled)
{
QPixmap overlayAreaPixmap(960, 536);
QPixmap overlayAreaPixmap(960 * screenRatio, 536 * screenRatio);
overlayAreaPixmap.fill(Qt::transparent);
QPainter overlayAreaPainter(&overlayAreaPixmap);
overlayAreaPainter.drawImage(0, 0, snapmaticPicture);
overlayAreaPainter.drawImage(3, 3, overlayTempImage);
if (screenRatio == 1)
{
overlayAreaPainter.drawImage(0, 0, snapmaticPicture);
overlayAreaPainter.drawImage(3 * screenRatio, 3 * screenRatio, overlayTempImage);
}
else
{
overlayAreaPainter.drawImage(0, 0, snapmaticPicture.scaledToHeight(536 * screenRatio, Qt::SmoothTransformation));
overlayAreaPainter.drawImage(3 * screenRatio, 3 * screenRatio, overlayTempImage);
}
overlayAreaPainter.end();
ui->labPicture->setPixmap(overlayAreaPixmap);
}
else
{
ui->labPicture->setPixmap(QPixmap::fromImage(snapmaticPicture));
if (screenRatio != 1)
{
ui->labPicture->setPixmap(QPixmap::fromImage(snapmaticPicture.scaledToHeight(536 * screenRatio, Qt::SmoothTransformation)));
}
else
{
ui->labPicture->setPixmap(QPixmap::fromImage(snapmaticPicture));
}
}
}
else
{
// Generating Avatar Preview
QPixmap avatarPixmap(960, 536);
QPixmap avatarPixmap(960 * screenRatio, 536 * screenRatio);
QPainter snapPainter(&avatarPixmap);
QFont snapPainterFont;
snapPainterFont.setPixelSize(12);
snapPainter.drawImage(0, 0, snapmaticPicture);
snapPainterFont.setPixelSize(12 * screenRatio);
if (screenRatio == 1)
{
snapPainter.drawImage(0, 0, snapmaticPicture);
}
else
{
snapPainter.drawImage(0, 0, snapmaticPicture.scaledToHeight(536 * screenRatio, Qt::SmoothTransformation));
}
snapPainter.drawImage(0, 0, avatarAreaPicture);
snapPainter.setPen(QColor::fromRgb(255, 255, 255, 255));
snapPainter.setFont(snapPainterFont);
snapPainter.drawText(QRect(3, 3, 140, 60), Qt::AlignLeft | Qt::TextWordWrap, tr("Avatar Preview Mode\nPress 1 for Default View"));
snapPainter.drawText(QRect(3 * screenRatio, 3 * screenRatio, 140 * screenRatio, 60 * screenRatio), Qt::AlignLeft | Qt::TextWordWrap, tr("Avatar Preview Mode\nPress 1 for Default View"));
snapPainter.end();
ui->labPicture->setPixmap(avatarPixmap);
}

6
ProfileInterface.cpp

@ -28,6 +28,7 @@
#include "ProfileLoader.h"
#include "ExportThread.h"
#include "ImportDialog.h"
#include "AppEnv.h"
#include "config.h"
#include <QProgressDialog>
#include <QProgressBar>
@ -73,6 +74,11 @@ ProfileInterface::ProfileInterface(ProfileDatabase *profileDB, CrewDatabase *cre
{
ui->cmdCloseProfile->setIcon(QIcon::fromTheme("dialog-close"));
}
// DPI calculation
qreal screenRatio = AppEnv::screenRatio();
ui->hlButtons->setSpacing(6 * screenRatio);
ui->hlButtons->setContentsMargins(9 * screenRatio, 9 * screenRatio, 9 * screenRatio, 9 * screenRatio);
}
ProfileInterface::~ProfileInterface()

9
ProfileInterface.ui

@ -27,7 +27,7 @@
<number>0</number>
</property>
<property name="bottomMargin">
<number>9</number>
<number>0</number>
</property>
<item>
<widget class="QStackedWidget" name="swProfile">
@ -108,8 +108,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>398</width>
<height>256</height>
<width>98</width>
<height>28</height>
</rect>
</property>
<layout class="QVBoxLayout" name="vlProfile">
@ -160,6 +160,9 @@
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<item>
<widget class="QLabel" name="labVersion">
<property name="text">

5
SavegameDialog.cpp

@ -1,6 +1,7 @@
#include "SavegameDialog.h"
#include "ui_SavegameDialog.h"
#include "SavegameCopy.h"
#include "AppEnv.h"
#include <QMessageBox>
SavegameDialog::SavegameDialog(QWidget *parent) :
@ -18,6 +19,10 @@ SavegameDialog::SavegameDialog(QWidget *parent) :
{
ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close"));
}
// DPI calculation
qreal screenRatio = AppEnv::screenRatio();
resize(400 * screenRatio, 105 * screenRatio);
}
SavegameDialog::~SavegameDialog()

2
SavegameDialog.ui

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>400</width>
<height>104</height>
<height>105</height>
</rect>
</property>
<property name="windowTitle">

8
SavegameWidget.cpp

@ -23,6 +23,7 @@
#include "StandardPaths.h"
#include "SavegameData.h"
#include "SavegameCopy.h"
#include "AppEnv.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QSettings>
@ -46,6 +47,13 @@ SavegameWidget::SavegameWidget(QWidget *parent) :
ui->cmdDelete->setVisible(false);
ui->cbSelected->setVisible(false);
qreal screenRatio = AppEnv::screenRatio();
ui->labSavegamePic->setFixedSize(48 * screenRatio, 27 * screenRatio);
QPixmap savegamePixmap(":/img/savegame.png");
if (screenRatio != 1) savegamePixmap = savegamePixmap.scaledToHeight(ui->labSavegamePic->height(), Qt::SmoothTransformation);
ui->labSavegamePic->setPixmap(savegamePixmap);
QString exportSavegameStr = tr("Export Savegame...");
Q_UNUSED(exportSavegameStr)

7
SavegameWidget.ui

@ -50,9 +50,6 @@
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="res/app.qrc">:/img/savegame.png</pixmap>
</property>
</widget>
</item>
<item>
@ -130,8 +127,6 @@
</item>
</layout>
</widget>
<resources>
<include location="res/app.qrc"/>
</resources>
<resources/>
<connections/>
</ui>

5
SnapmaticEditor.cpp

@ -20,6 +20,7 @@
#include "ui_SnapmaticEditor.h"
#include "SnapmaticPicture.h"
#include "StringParser.h"
#include "AppEnv.h"
#include <QTextDocument>
#include <QInputDialog>
#include <QMessageBox>
@ -44,6 +45,10 @@ SnapmaticEditor::SnapmaticEditor(CrewDatabase *crewDB, QWidget *parent) :
snapmaticTitle = "";
smpic = 0;
// DPI calculation
qreal screenRatio = AppEnv::screenRatio();
resize(400 * screenRatio, 360 * screenRatio);
}
SnapmaticEditor::~SnapmaticEditor()

1
SnapmaticPicture.cpp

@ -813,6 +813,7 @@ bool SnapmaticPicture::exportPicture(const QString &fileName, const QString form
}
else
{
delete picFile;
return false;
}
}

4
SnapmaticWidget.cpp

@ -24,6 +24,7 @@
#include "PictureDialog.h"
#include "PictureExport.h"
#include "StringParser.h"
#include "AppEnv.h"
#include "config.h"
#include <QMessageBox>
#include <QPixmap>
@ -87,6 +88,9 @@ void SnapmaticWidget::setSnapmaticPicture(SnapmaticPicture *picture)
picStr = picture->getPictureStr();
QObject::connect(picture, SIGNAL(updated()), this, SLOT(snapmaticUpdated()));
qreal screenRatio = AppEnv::screenRatio();
ui->labPicture->setFixedSize(48 * screenRatio, 27 * screenRatio);
QPixmap SnapmaticPixmap = QPixmap::fromImage(picture->getImage().scaled(ui->labPicture->width(), ui->labPicture->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::AutoColor);
ui->labPicStr->setText(picStr + "\n" + picTitl + "");
ui->labPicture->setPixmap(SnapmaticPixmap);

11
UserInterface.cpp

@ -78,6 +78,12 @@ UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, D
ui->actionExit->setIcon(QIcon::fromTheme("application-exit"));
#endif
}
// DPI calculation
qreal screenRatio = AppEnv::screenRatio();
resize(625 * screenRatio, 500 * screenRatio);
ui->vlUserInterface->setSpacing(6 * screenRatio);
ui->vlUserInterface->setContentsMargins(9 * screenRatio, 9 * screenRatio, 9 * screenRatio, 9 * screenRatio);
}
void UserInterface::setupDirEnv()
@ -139,11 +145,12 @@ void UserInterface::setupDirEnv()
void UserInterface::setupProfileUi()
{
qreal screenRatio = AppEnv::screenRatio();
if (GTAV_Profiles.length() == 0)
{
QPushButton *changeDirBtn = new QPushButton(tr("Select &GTA V Folder..."), ui->swSelection);
changeDirBtn->setObjectName("cmdChangeDir");
changeDirBtn->setMinimumSize(0, 40);
changeDirBtn->setMinimumSize(0, 40 * screenRatio);
changeDirBtn->setAutoDefault(true);
ui->vlButtons->addWidget(changeDirBtn);
profileBtns.append(changeDirBtn);
@ -154,7 +161,7 @@ void UserInterface::setupProfileUi()
{
QPushButton *profileBtn = new QPushButton(GTAV_Profile, ui->swSelection);
profileBtn->setObjectName(GTAV_Profile);
profileBtn->setMinimumSize(0, 40);
profileBtn->setMinimumSize(0, 40 * screenRatio);
profileBtn->setAutoDefault(true);
ui->vlButtons->addWidget(profileBtn);
profileBtns.append(profileBtn);

4
config.h

@ -1,5 +1,5 @@
/*****************************************************************************
* gta5sync GRAND THEFT AUTO V SYNC
* gta5view Grand Theft Auto V Profile Viewer
* Copyright (C) 2016-2017 Syping
*
* This program is free software: you can redistribute it and/or modify
@ -50,7 +50,7 @@
#ifndef GTA5SYNC_APPVER
#ifndef GTA5SYNC_DAILYB
#define GTA5SYNC_APPVER "1.4.0-dev3"
#define GTA5SYNC_APPVER "1.4.0-dev4"
#else
#define GTA5SYNC_APPVER QString("%1").arg(GTA5SYNC_DAILYB)
#endif

6
gta5view.pro

@ -21,11 +21,10 @@ QT += core gui network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
greaterThan(QT_MAJOR_VERSION, 4): greaterThan(QT_MINOR_VERSION, 1): win32: QT += winextras
DEFINES += GTA5SYNC_DISABLED # disabling sync (remove it for building gta5sync)
DEFINES += GTA5SYNC_DISABLED
DEPLOYMENT.display_name = gta5view
TARGET = gta5view
TEMPLATE = app
SOURCES += main.cpp \
@ -118,6 +117,7 @@ DISTFILES += res/app.rc \
res/gta5sync_de.ts \
res/gta5sync_fr.ts \
res/gta5view.exe.manifest \
res/gta5view.png \
lang/qtbase_ru.qm \
lang/gta5sync_ru.ts \
lang/qt_ru.qm \
@ -157,6 +157,6 @@ isEqual(QT_MAJOR_VERSION, 4): SOURCES += qjson4/QJsonArray.cpp \
unix: !macx: appfiles.path = $$(INSTALL_PATH)/share/applications
unix: !macx: appfiles.files = $$PWD/res/gta5view.desktop
unix: !macx: pixmaps.path = $$(INSTALL_PATH)/share/pixmaps
unix: !macx: pixmaps.files = $$PWD/res/gta5view.xpm
unix: !macx: pixmaps.files = $$PWD/res/gta5view.png
unix: !macx: target.path = $$(INSTALL_PATH)/bin
unix: !macx: INSTALLS += target pixmaps appfiles

336
lang/gta5sync_ru.ts

@ -40,18 +40,26 @@ Copyright &amp;copy; &lt;a href=&quot;%5&quot;&gt;%6&lt;/a&gt; %7&lt;br/&gt;%8 i
<translation type="obsolete">Закрыть</translation>
</message>
<message>
<location filename="../AboutDialog.cpp" line="39"/>
<location filename="../AboutDialog.cpp" line="40"/>
<source>A project for viewing Grand Theft Auto V Snapmatic&lt;br/&gt;
Pictures and Savegames</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../AboutDialog.cpp" line="37"/>
<location filename="../AboutDialog.cpp" line="38"/>
<source>A project for viewing and sync Grand Theft Auto V Snapmatic&lt;br/&gt;
Pictures and Savegames</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CrewDatabase</name>
<message>
<location filename="../CrewDatabase.cpp" line="64"/>
<source>No Crew</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ExportDialog</name>
<message>
@ -315,44 +323,44 @@ Pictures and Savegames</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="125"/>
<location filename="../OptionsDialog.cpp" line="129"/>
<source>System</source>
<comment>System like PC System</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="125"/>
<location filename="../OptionsDialog.cpp" line="129"/>
<source>%1 (%2 if available)</source>
<comment>System like PC System = %1, System Language like Deutsch = %2</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="284"/>
<location filename="../OptionsDialog.cpp" line="288"/>
<location filename="../OptionsDialog.cpp" line="292"/>
<source>%1</source>
<comment>%1</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="284"/>
<location filename="../OptionsDialog.cpp" line="288"/>
<source>The new Custom Folder will initialize after you restart %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="288"/>
<location filename="../OptionsDialog.cpp" line="292"/>
<source>The language change will take effect after you restart %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="298"/>
<location filename="../OptionsDialog.cpp" line="302"/>
<source>No Profile</source>
<comment>No Profile, as default</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="306"/>
<location filename="../OptionsDialog.cpp" line="310"/>
<location filename="../OptionsDialog.cpp" line="312"/>
<location filename="../OptionsDialog.cpp" line="314"/>
<location filename="../OptionsDialog.cpp" line="316"/>
<source>Profile: %1</source>
<translation type="unfinished"></translation>
</message>
@ -389,7 +397,6 @@ Pictures and Savegames</source>
</message>
<message>
<location filename="../PictureDialog.ui" line="167"/>
<location filename="../PictureExport.cpp" line="221"/>
<source>&amp;Export</source>
<translation type="unfinished"></translation>
</message>
@ -400,6 +407,7 @@ Pictures and Savegames</source>
</message>
<message>
<location filename="../PictureExport.cpp" line="89"/>
<location filename="../PictureExport.cpp" line="221"/>
<source>Export</source>
<translation type="unfinished">Экспорт</translation>
</message>
@ -413,54 +421,54 @@ Pictures and Savegames</source>
<translation>Закрыть</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="128"/>
<location filename="../PictureDialog.cpp" line="132"/>
<source>Export as &amp;JPG picture...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="129"/>
<location filename="../PictureDialog.cpp" line="133"/>
<source>Export as &amp;GTA Snapmatic...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="343"/>
<location filename="../PictureDialog.cpp" line="347"/>
<source>Key 1 - Avatar Preview Mode
Key 2 - Toggle Overlay
Arrow Keys - Navigate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="402"/>
<location filename="../PictureDialog.cpp" line="474"/>
<location filename="../PictureDialog.cpp" line="406"/>
<location filename="../PictureDialog.cpp" line="478"/>
<source>Snapmatic Picture Viewer</source>
<translation>Просмотрщик фотографий Snapmatic</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="402"/>
<location filename="../PictureDialog.cpp" line="474"/>
<location filename="../PictureDialog.cpp" line="406"/>
<location filename="../PictureDialog.cpp" line="478"/>
<source>Failed at %1</source>
<translation>Ошибка при %1</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="529"/>
<location filename="../PictureDialog.cpp" line="533"/>
<source>Avatar Preview Mode
Press 1 for Default View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="463"/>
<location filename="../PictureDialog.cpp" line="473"/>
<location filename="../PictureDialog.cpp" line="467"/>
<location filename="../PictureDialog.cpp" line="477"/>
<source>No player</source>
<translation>Игроков нет</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="466"/>
<location filename="../PictureDialog.cpp" line="473"/>
<location filename="../PictureDialog.cpp" line="470"/>
<location filename="../PictureDialog.cpp" line="477"/>
<source>No crew</source>
<translation>Без группы</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="473"/>
<location filename="../PictureDialog.cpp" line="477"/>
<source>Unknown Location</source>
<translation type="unfinished"></translation>
</message>
@ -573,27 +581,27 @@ Press 1 for Default View</source>
<translation>Загружается файл %1 из %2</translation>
</message>
<message>
<location filename="../ProfileInterface.ui" line="169"/>
<location filename="../ProfileInterface.ui" line="166"/>
<source>%1 %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.ui" line="195"/>
<location filename="../ProfileInterface.ui" line="192"/>
<source>Import exported file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.ui" line="198"/>
<location filename="../ProfileInterface.ui" line="195"/>
<source>&amp;Import...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.ui" line="214"/>
<location filename="../ProfileInterface.ui" line="211"/>
<source>Close profile</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.ui" line="217"/>
<location filename="../ProfileInterface.ui" line="214"/>
<source>&amp;Close</source>
<translation type="unfinished"></translation>
</message>
@ -606,29 +614,29 @@ Press 1 for Default View</source>
<translation type="obsolete">Закрыть профиль</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="111"/>
<location filename="../ProfileInterface.cpp" line="108"/>
<source>Loading...</source>
<translation>Загрузка...</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="369"/>
<location filename="../ProfileInterface.cpp" line="406"/>
<location filename="../ProfileInterface.cpp" line="384"/>
<location filename="../ProfileInterface.cpp" line="421"/>
<source>Import...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="370"/>
<location filename="../ProfileInterface.cpp" line="460"/>
<location filename="../ProfileInterface.cpp" line="465"/>
<location filename="../ProfileInterface.cpp" line="492"/>
<location filename="../ProfileInterface.cpp" line="508"/>
<location filename="../ProfileInterface.cpp" line="658"/>
<location filename="../ProfileInterface.cpp" line="663"/>
<location filename="../ProfileInterface.cpp" line="681"/>
<location filename="../ProfileInterface.cpp" line="686"/>
<location filename="../ProfileInterface.cpp" line="697"/>
<location filename="../ProfileInterface.cpp" line="734"/>
<location filename="../ProfileInterface.cpp" line="740"/>
<location filename="../ProfileInterface.cpp" line="385"/>
<location filename="../ProfileInterface.cpp" line="475"/>
<location filename="../ProfileInterface.cpp" line="480"/>
<location filename="../ProfileInterface.cpp" line="507"/>
<location filename="../ProfileInterface.cpp" line="523"/>
<location filename="../ProfileInterface.cpp" line="673"/>
<location filename="../ProfileInterface.cpp" line="678"/>
<location filename="../ProfileInterface.cpp" line="696"/>
<location filename="../ProfileInterface.cpp" line="701"/>
<location filename="../ProfileInterface.cpp" line="712"/>
<location filename="../ProfileInterface.cpp" line="749"/>
<location filename="../ProfileInterface.cpp" line="755"/>
<source>Import</source>
<translation type="unfinished"></translation>
</message>
@ -637,138 +645,138 @@ Press 1 for Default View</source>
<translation type="vanished">Все файлы профиля (SGTA* PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="375"/>
<location filename="../UserInterface.cpp" line="335"/>
<location filename="../ProfileInterface.cpp" line="390"/>
<location filename="../UserInterface.cpp" line="344"/>
<source>Savegames files (SGTA*)</source>
<translation>Файлы сохранения (SGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="376"/>
<location filename="../UserInterface.cpp" line="336"/>
<location filename="../ProfileInterface.cpp" line="391"/>
<location filename="../UserInterface.cpp" line="345"/>
<source>Snapmatic pictures (PGTA*)</source>
<translation>Картинка Snapmatic (PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="378"/>
<location filename="../UserInterface.cpp" line="337"/>
<location filename="../ProfileInterface.cpp" line="393"/>
<location filename="../UserInterface.cpp" line="346"/>
<source>All files (**)</source>
<translation>Все файлы (**)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="407"/>
<location filename="../ProfileInterface.cpp" line="422"/>
<location filename="../ProfileInterface.cpp" line="437"/>
<source>Import file %1 of %2 files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="460"/>
<location filename="../ProfileInterface.cpp" line="475"/>
<source>Import failed with...
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="492"/>
<location filename="../UserInterface.cpp" line="377"/>
<location filename="../ProfileInterface.cpp" line="507"/>
<location filename="../UserInterface.cpp" line="386"/>
<source>Failed to read Snapmatic picture</source>
<translation>Не удалось загрузить картинку Snapmatic</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="508"/>
<location filename="../UserInterface.cpp" line="393"/>
<location filename="../ProfileInterface.cpp" line="523"/>
<location filename="../UserInterface.cpp" line="402"/>
<source>Failed to read Savegame file</source>
<translation>Не удалось загрузить файл сохранения</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="658"/>
<location filename="../ProfileInterface.cpp" line="673"/>
<source>Can&apos;t import %1 because of not valid file format</source>
<translation>Не получилось импортировать %1 из-за неправильного формата файла</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="465"/>
<location filename="../ProfileInterface.cpp" line="663"/>
<location filename="../UserInterface.cpp" line="425"/>
<location filename="../ProfileInterface.cpp" line="480"/>
<location filename="../ProfileInterface.cpp" line="678"/>
<location filename="../UserInterface.cpp" line="434"/>
<source>No valid file is selected</source>
<translation>Выбранный файл неверен</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="60"/>
<location filename="../ProfileInterface.cpp" line="61"/>
<source>Enabled pictures: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="373"/>
<location filename="../ProfileInterface.cpp" line="388"/>
<source>Importable files (*.g5e *.jpg *.png SGTA* PGTA*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="377"/>
<location filename="../ProfileInterface.cpp" line="392"/>
<source>All image files (*.jpg *.png)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="681"/>
<location filename="../ProfileInterface.cpp" line="696"/>
<source>Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="686"/>
<location filename="../ProfileInterface.cpp" line="701"/>
<source>Failed to import the Snapmatic picture, the picture is already in the game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="697"/>
<location filename="../ProfileInterface.cpp" line="712"/>
<source>Failed to import the Snapmatic picture, can&apos;t copy the file into profile</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="734"/>
<location filename="../ProfileInterface.cpp" line="749"/>
<source>Failed to import the Savegame, can&apos;t copy the file into profile</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="740"/>
<location filename="../ProfileInterface.cpp" line="755"/>
<source>Failed to import the Savegame, no Savegame slot is left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="826"/>
<location filename="../ProfileInterface.cpp" line="844"/>
<location filename="../ProfileInterface.cpp" line="841"/>
<location filename="../ProfileInterface.cpp" line="859"/>
<source>JPG pictures and GTA Snapmatic</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="827"/>
<location filename="../ProfileInterface.cpp" line="849"/>
<location filename="../ProfileInterface.cpp" line="842"/>
<location filename="../ProfileInterface.cpp" line="864"/>
<source>JPG pictures only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="828"/>
<location filename="../ProfileInterface.cpp" line="853"/>
<location filename="../ProfileInterface.cpp" line="843"/>
<location filename="../ProfileInterface.cpp" line="868"/>
<source>GTA Snapmatic only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="940"/>
<location filename="../ProfileInterface.cpp" line="983"/>
<location filename="../ProfileInterface.cpp" line="953"/>
<location filename="../ProfileInterface.cpp" line="995"/>
<source>No Snapmatic pictures or Savegames files are selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="948"/>
<location filename="../ProfileInterface.cpp" line="977"/>
<location filename="../ProfileInterface.cpp" line="983"/>
<location filename="../ProfileInterface.cpp" line="961"/>
<location filename="../ProfileInterface.cpp" line="989"/>
<location filename="../ProfileInterface.cpp" line="995"/>
<source>Remove selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="948"/>
<location filename="../ProfileInterface.cpp" line="961"/>
<source>You really want remove the selected Snapmatic picutres and Savegame files?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="977"/>
<location filename="../ProfileInterface.cpp" line="989"/>
<source>Failed at remove the complete selected Snapmatic pictures and/or Savegame files</source>
<translation type="unfinished"></translation>
</message>
@ -789,30 +797,30 @@ Press 1 for Default View</source>
<translation type="obsolete">Не получилось имортировать копию сохранения, потому что не осталось свободных под них слотов</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="803"/>
<location filename="../ProfileInterface.cpp" line="841"/>
<location filename="../ProfileInterface.cpp" line="918"/>
<location filename="../ProfileInterface.cpp" line="940"/>
<location filename="../ProfileInterface.cpp" line="818"/>
<location filename="../ProfileInterface.cpp" line="856"/>
<location filename="../ProfileInterface.cpp" line="933"/>
<location filename="../ProfileInterface.cpp" line="953"/>
<source>Export selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="841"/>
<location filename="../ProfileInterface.cpp" line="856"/>
<source>%1Export Snapmatic pictures%2&lt;br&gt;&lt;br&gt;JPG pictures make it possible to open the picture with a Image Viewer&lt;br&gt;GTA Snapmatic make it possible to import the picture into the game&lt;br&gt;&lt;br&gt;Export as:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="884"/>
<location filename="../ProfileInterface.cpp" line="899"/>
<source>Export selected...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="885"/>
<location filename="../ProfileInterface.cpp" line="900"/>
<source>Initializing export...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="918"/>
<location filename="../ProfileInterface.cpp" line="933"/>
<source>Export failed with...
%1</source>
@ -826,13 +834,13 @@ Press 1 for Default View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="333"/>
<location filename="../UserInterface.cpp" line="342"/>
<source>All profile files (*.g5e SGTA* PGTA*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="374"/>
<location filename="../UserInterface.cpp" line="334"/>
<location filename="../ProfileInterface.cpp" line="389"/>
<location filename="../UserInterface.cpp" line="343"/>
<source>GTA V Export (*.g5e)</source>
<translation type="unfinished"></translation>
</message>
@ -854,7 +862,7 @@ Press 1 for Default View</source>
<name>SavegameDialog</name>
<message>
<location filename="../SavegameDialog.ui" line="14"/>
<location filename="../SavegameDialog.cpp" line="29"/>
<location filename="../SavegameDialog.cpp" line="33"/>
<source>Savegame Viewer</source>
<translation>Просмотрщик сохранений</translation>
</message>
@ -882,7 +890,7 @@ Press 1 for Default View</source>
<translation type="obsolete">Закрыть</translation>
</message>
<message>
<location filename="../SavegameDialog.cpp" line="29"/>
<location filename="../SavegameDialog.cpp" line="33"/>
<source>Failed at %1</source>
<translation>Ошибка при %1</translation>
</message>
@ -974,34 +982,34 @@ Press 1 for Default View</source>
<translation>Не удалось удалить сохранение %1</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="1106"/>
<location filename="../ProfileInterface.cpp" line="1118"/>
<source>&amp;View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="1108"/>
<location filename="../ProfileInterface.cpp" line="1120"/>
<source>&amp;Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="1112"/>
<location filename="../ProfileInterface.cpp" line="1123"/>
<location filename="../ProfileInterface.cpp" line="1124"/>
<location filename="../ProfileInterface.cpp" line="1135"/>
<source>&amp;Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="1113"/>
<location filename="../ProfileInterface.cpp" line="1125"/>
<source>&amp;Deselect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="1114"/>
<location filename="../ProfileInterface.cpp" line="1124"/>
<location filename="../ProfileInterface.cpp" line="1126"/>
<location filename="../ProfileInterface.cpp" line="1136"/>
<source>Select &amp;All</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="1117"/>
<location filename="../ProfileInterface.cpp" line="1129"/>
<source>&amp;Deselect All</source>
<translation type="unfinished"></translation>
</message>
@ -1011,7 +1019,7 @@ Press 1 for Default View</source>
<translation>Копировать сохранение</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="1107"/>
<location filename="../ProfileInterface.cpp" line="1119"/>
<source>&amp;Export</source>
<translation type="unfinished"></translation>
</message>
@ -1071,7 +1079,7 @@ Press 1 for Default View</source>