first development version of 1.4.x

This commit is contained in:
Syping 2017-03-01 15:19:40 +01:00
parent 1ff4f353e3
commit 24b1f32bbe
63 changed files with 4792 additions and 4350 deletions

View File

@ -25,9 +25,10 @@ AboutDialog::AboutDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AboutDialog)
{
ui->setupUi(this);
aboutStr = ui->labAbout->text();
titleStr = this->windowTitle();
// Set Window Flags
setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint);
// Build Strings
QString appVersion = qApp->applicationVersion();
QString buildType = GTA5SYNC_BUILDTYPE;
buildType.replace("_", " ");
@ -38,6 +39,11 @@ AboutDialog::AboutDialog(QWidget *parent) :
#else
QString projectDes = tr("A project for viewing Grand Theft Auto V Snapmatic<br/>\nPictures and Savegames");
#endif
// Setup User Interface
ui->setupUi(this);
aboutStr = ui->labAbout->text();
titleStr = this->windowTitle();
ui->labAbout->setText(aboutStr.arg(appVersion % " (" % buildType % ")", buildStr, qVersion(), projectBuild, GTA5SYNC_APPVENDORLINK, GTA5SYNC_APPVENDOR, GTA5SYNC_COPYRIGHT, GTA5SYNC_APPSTR, projectDes));
this->setWindowTitle(titleStr.arg(GTA5SYNC_APPSTR));

View File

@ -150,9 +150,7 @@ void DatabaseThread::scanCrewReference(QStringList crewList, int requestDelay)
waitingLoop->exec();
delete waitingLoop;
netReply->deleteLater();
delete netReply;
netManager->deleteLater();
delete netManager;
}
}
@ -224,9 +222,7 @@ void DatabaseThread::scanCrewMembersList(QStringList crewList, int maxPages, int
currentPage++;
}
netReply->deleteLater();
delete netReply;
netManager->deleteLater();
delete netManager;
}
}

View File

@ -23,6 +23,15 @@
#include <QImage>
#include <QDebug>
// IMAGES VALUES
#define snapmaticResolutionW 960
#define snapmaticResolutionH 536
#define snapmaticResolutionLW 430
#define snapmaticResolutionLH 240
#define snapmaticAvatarResolution 470
#define snapmaticAvatarPlacementW 145
#define snapmaticAvatarPlacementH 66
ImportDialog::ImportDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ImportDialog)
@ -51,7 +60,7 @@ ImportDialog::~ImportDialog()
void ImportDialog::processImage()
{
QImage snapmaticImage = workImage;
QPixmap snapmaticPixmap(960, 536);
QPixmap snapmaticPixmap(snapmaticResolutionW, snapmaticResolutionH);
snapmaticPixmap.fill(Qt::black);
QPainter snapmaticPainter(&snapmaticPixmap);
if (ui->cbAvatar->isChecked())
@ -61,24 +70,23 @@ void ImportDialog::processImage()
int diffHeight = 0;
if (ui->rbKeep->isChecked())
{
snapmaticImage = snapmaticImage.scaled(470, 470, Qt::KeepAspectRatio, Qt::SmoothTransformation);
snapmaticImage = snapmaticImage.scaled(snapmaticAvatarResolution, snapmaticAvatarResolution, Qt::KeepAspectRatio, Qt::SmoothTransformation);
if (snapmaticImage.width() > snapmaticImage.height())
{
diffHeight = 470 - snapmaticImage.height();
diffHeight = snapmaticAvatarResolution - snapmaticImage.height();
diffHeight = diffHeight / 2;
}
else if (snapmaticImage.width() < snapmaticImage.height())
{
diffWidth = 470 - snapmaticImage.width();
diffWidth = snapmaticAvatarResolution - snapmaticImage.width();
diffWidth = diffWidth / 2;
}
}
else
{
snapmaticImage = snapmaticImage.scaled(470, 470, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
snapmaticImage = snapmaticImage.scaled(snapmaticAvatarResolution, snapmaticAvatarResolution, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}
snapmaticPainter.drawImage(0, 0, avatarAreaImage);
snapmaticPainter.drawImage(145 + diffWidth, 66 + diffHeight, snapmaticImage);
snapmaticPainter.drawImage(snapmaticAvatarPlacementW + diffWidth, snapmaticAvatarPlacementH + diffHeight, snapmaticImage);
imageTitle = "Custom Avatar";
}
else
@ -88,28 +96,28 @@ void ImportDialog::processImage()
int diffHeight = 0;
if (ui->rbKeep->isChecked())
{
snapmaticImage = snapmaticImage.scaled(960, 536, Qt::KeepAspectRatio, Qt::SmoothTransformation);
if (snapmaticImage.width() != 960)
snapmaticImage = snapmaticImage.scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::KeepAspectRatio, Qt::SmoothTransformation);
if (snapmaticImage.width() != snapmaticResolutionW)
{
diffWidth = 960 - snapmaticImage.width();
diffWidth = snapmaticResolutionW - snapmaticImage.width();
diffWidth = diffWidth / 2;
}
else if (snapmaticImage.height() != 536)
else if (snapmaticImage.height() != snapmaticResolutionH)
{
diffHeight = 536 - snapmaticImage.height();
diffHeight = snapmaticResolutionH - snapmaticImage.height();
diffHeight = diffHeight / 2;
}
}
else
{
snapmaticImage = snapmaticImage.scaled(960, 536, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
snapmaticImage = snapmaticImage.scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}
snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, snapmaticImage);
imageTitle = "Custom Picture";
}
snapmaticPainter.end();
newImage = snapmaticPixmap.toImage();
ui->labPicture->setPixmap(snapmaticPixmap.scaled(430, 240, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
ui->labPicture->setPixmap(snapmaticPixmap.scaled(snapmaticResolutionLW, snapmaticResolutionLH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
}
QImage ImportDialog::image()
@ -162,3 +170,13 @@ void ImportDialog::on_cmdOK_clicked()
doImport = true;
close();
}
void ImportDialog::on_labPicture_labelPainted()
{
if (ui->cbAvatar->isChecked())
{
QPainter labelPainter(ui->labPicture);
labelPainter.drawImage(0, 0, avatarAreaImage.scaled(snapmaticResolutionLW, snapmaticResolutionLH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
labelPainter.end();
}
}

View File

@ -44,6 +44,7 @@ private slots:
void on_cbAvatar_clicked();
void on_cmdCancel_clicked();
void on_cmdOK_clicked();
void on_labPicture_labelPainted();
private:
Ui::ImportDialog *ui;

View File

@ -42,7 +42,7 @@
<number>0</number>
</property>
<item>
<widget class="QLabel" name="labPicture">
<widget class="UiModLabel" name="labPicture">
<property name="minimumSize">
<size>
<width>430</width>
@ -175,6 +175,13 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>UiModLabel</class>
<extends>QLabel</extends>
<header>UiModLabel.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -37,6 +37,10 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) :
QDialog(parent), profileDB(profileDB),
ui(new Ui::OptionsDialog)
{
// Set Window Flags
setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint);
// Setup User Interface
ui->setupUi(this);
ui->tabWidget->setCurrentIndex(0);
ui->labPicCustomRes->setVisible(false);

View File

@ -23,6 +23,7 @@
#include "SidebarGenerator.h"
#include "StandardPaths.h"
#include "PictureExport.h"
#include "StringParser.h"
#include "GlobalString.h"
#include "UiModLabel.h"
@ -89,6 +90,10 @@ PictureDialog::PictureDialog(bool primaryWindow, QWidget *parent) :
void PictureDialog::setupPictureDialog(bool withDatabase_)
{
// Set Window Flags
setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint);
// Setup User Interface
ui->setupUi(this);
windowTitleStr = this->windowTitle();
jsonDrawString = ui->labJSON->text();
@ -422,7 +427,7 @@ void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, bool readOk,
}
created = picture->getSnapmaticProperties().createdDateTime.toString(Qt::DefaultLocaleShortDate);
plyrsList = picture->getSnapmaticProperties().playersList;
picTitl = picture->getPictureTitl();
picTitl = StringParser::escapeString(picture->getPictureTitle());
picArea = picture->getSnapmaticProperties().location.area;
if (globalMap.contains(picArea))
{
@ -596,7 +601,7 @@ void PictureDialog::on_labPicture_mouseDoubleClicked(Qt::MouseButton button)
if (button == Qt::LeftButton)
{
QRect desktopRect = QApplication::desktop()->screenGeometry(this);
PictureWidget *pictureWidget = new PictureWidget(this);
PictureWidget *pictureWidget = new PictureWidget(this); // Work!
pictureWidget->setObjectName("PictureWidget");
#if QT_VERSION >= 0x050600
pictureWidget->setWindowFlags(pictureWidget->windowFlags()^Qt::FramelessWindowHint^Qt::WindowStaysOnTopHint^Qt::MaximizeUsingFullscreenGeometryHint);
@ -620,8 +625,8 @@ void PictureDialog::on_labPicture_mouseDoubleClicked(Qt::MouseButton button)
pictureWidget->raise();
pictureWidget->exec();
fullscreenWidget = 0;
delete pictureWidget;
fullscreenWidget = 0; // Work!
delete pictureWidget; // Work!
}
}

View File

@ -76,7 +76,7 @@ void PictureExport::exportAsPicture(QWidget *parent, SnapmaticPicture *picture)
settings.beginGroup("FileDialogs");
settings.beginGroup("ExportAsPicture");
fileDialogPreSave:
fileDialogPreSave: //Work?
QFileDialog fileDialog(parent);
fileDialog.setFileMode(QFileDialog::AnyFile);
fileDialog.setViewMode(QFileDialog::Detail);
@ -145,12 +145,12 @@ fileDialogPreSave:
if (!QFile::remove(selectedFile))
{
QMessageBox::warning(parent, PictureDialog::tr("Export as JPG picture"), PictureDialog::tr("Failed to overwrite %1 with current Snapmatic picture").arg("\""+selectedFile+"\""));
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}
else
{
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}
@ -179,13 +179,13 @@ fileDialogPreSave:
if (!isSaved)
{
QMessageBox::warning(parent, PictureDialog::tr("Export as JPG picture"), PictureDialog::tr("Failed to export current Snapmatic picture"));
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}
else
{
QMessageBox::warning(parent, PictureDialog::tr("Export as JPG picture"), PictureDialog::tr("No valid file is selected"));
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}
@ -207,7 +207,7 @@ void PictureExport::exportAsSnapmatic(QWidget *parent, SnapmaticPicture *picture
adjustedPicPath.remove(adjustedPicPath.length() - 7, 7);
}
fileDialogPreSave:
fileDialogPreSave: //Work?
QFileInfo sgdFileInfo(adjustedPicPath);
QFileDialog fileDialog(parent);
fileDialog.setFileMode(QFileDialog::AnyFile);
@ -218,7 +218,7 @@ fileDialogPreSave:
fileDialog.setDefaultSuffix(".rem");
fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint);
fileDialog.setWindowTitle(PictureDialog::tr("Export as GTA Snapmatic..."));
fileDialog.setLabelText(QFileDialog::Accept, PictureDialog::tr("&Export"));
fileDialog.setLabelText(QFileDialog::Accept, PictureDialog::tr("Export"));
QStringList filters;
filters << PictureDialog::tr("GTA V Export (*.g5e)");
@ -248,12 +248,12 @@ fileDialogPreSave:
if (!QFile::remove(selectedFile))
{
QMessageBox::warning(parent, PictureDialog::tr("Export as GTA Snapmatic"), PictureDialog::tr("Failed to overwrite %1 with current Snapmatic picture").arg("\""+selectedFile+"\""));
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}
else
{
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}
@ -263,7 +263,7 @@ fileDialogPreSave:
if (!isExported)
{
QMessageBox::warning(parent, PictureDialog::tr("Export as GTA Snapmatic"), PictureDialog::tr("Failed to export current Snapmatic picture"));
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}
else
@ -284,7 +284,7 @@ fileDialogPreSave:
if (!isCopied)
{
QMessageBox::warning(parent, PictureDialog::tr("Export as GTA Snapmatic"), PictureDialog::tr("Failed to export current Snapmatic picture"));
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
else
{
@ -295,7 +295,7 @@ fileDialogPreSave:
else
{
QMessageBox::warning(parent, PictureDialog::tr("Export as GTA Snapmatic"), PictureDialog::tr("No valid file is selected"));
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}

View File

@ -42,6 +42,7 @@
#include <QPalette>
#include <QPainter>
#include <QRegExp>
#include <QAction>
#include <QDebug>
#include <QColor>
#include <QTimer>
@ -79,22 +80,18 @@ ProfileInterface::~ProfileInterface()
foreach(ProfileWidget *widget, widgets.keys())
{
widgets.remove(widget);
widget->deleteLater();
delete widget;
}
foreach(SavegameData *savegame, savegames)
{
savegames.removeAll(savegame);
savegame->deleteLater();
delete savegame;
}
foreach(SnapmaticPicture *picture, pictures)
{
pictures.removeAll(picture);
picture->deleteLater();
delete picture;
}
profileLoader->deleteLater();
delete profileLoader;
delete ui;
@ -318,32 +315,50 @@ void ProfileInterface::profileLoaded_p()
void ProfileInterface::savegameDeleted_event()
{
savegameDeleted((SavegameWidget*)sender());
savegameDeleted((SavegameWidget*)sender(), true);
}
void ProfileInterface::savegameDeleted(SavegameWidget *sgdWidget)
void ProfileInterface::savegameDeleted(SavegameWidget *sgdWidget, bool isRemoteEmited)
{
SavegameData *savegame = sgdWidget->getSavegame();
if (sgdWidget->isSelected()) { sgdWidget->setSelected(false); }
widgets.remove(sgdWidget);
sgdWidget->close();
// Deleting when the widget did send a event cause a crash
if (isRemoteEmited)
{
sgdWidget->deleteLater();
}
else
{
delete sgdWidget;
}
savegames.removeAll(savegame);
delete savegame;
}
void ProfileInterface::pictureDeleted_event()
{
pictureDeleted((SnapmaticWidget*)sender());
pictureDeleted((SnapmaticWidget*)sender(), true);
}
void ProfileInterface::pictureDeleted(SnapmaticWidget *picWidget)
void ProfileInterface::pictureDeleted(SnapmaticWidget *picWidget, bool isRemoteEmited)
{
SnapmaticPicture *picture = picWidget->getPicture();
if (picWidget->isSelected()) { picWidget->setSelected(false); }
widgets.remove(picWidget);
picWidget->close();
// Deleting when the widget did send a event cause a crash
if (isRemoteEmited)
{
picWidget->deleteLater();
}
else
{
delete picWidget;
}
pictures.removeAll(picture);
delete picture;
}
@ -359,7 +374,7 @@ void ProfileInterface::on_cmdImport_clicked()
settings.beginGroup("FileDialogs");
settings.beginGroup("ImportCopy");
fileDialogPreOpen:
fileDialogPreOpen: //Work?
QFileDialog fileDialog(this);
fileDialog.setFileMode(QFileDialog::ExistingFiles);
fileDialog.setViewMode(QFileDialog::Detail);
@ -390,7 +405,7 @@ fileDialogPreOpen:
if (selectedFiles.length() == 1)
{
QString selectedFile = selectedFiles.at(0);
if (!importFile(selectedFile, true, 0)) goto fileDialogPreOpen;
if (!importFile(selectedFile, true, 0)) goto fileDialogPreOpen; //Work?
}
else if (selectedFiles.length() > 1)
{
@ -463,7 +478,7 @@ fileDialogPreOpen:
else
{
QMessageBox::warning(this, tr("Import"), tr("No valid file is selected"));
goto fileDialogPreOpen;
goto fileDialogPreOpen; //Work?
}
}
@ -920,7 +935,6 @@ void ProfileInterface::exportSelected()
if (exportThread->isFinished())
{
exportThread->deleteLater();
delete exportThread;
}
else
@ -928,7 +942,6 @@ void ProfileInterface::exportSelected()
QEventLoop threadFinishLoop;
QObject::connect(exportThread, SIGNAL(finished()), &threadFinishLoop, SLOT(quit()));
threadFinishLoop.exec();
exportThread->deleteLater();
delete exportThread;
}
}
@ -954,8 +967,7 @@ void ProfileInterface::deleteSelected()
if (widget->getWidgetType() == "SnapmaticWidget")
{
SnapmaticWidget *picWidget = (SnapmaticWidget*)widget;
QString fileName = picWidget->getPicturePath();
if (!QFile::exists(fileName) || QFile::remove(fileName))
if (picWidget->getPicture()->deletePicFile())
{
pictureDeleted(picWidget);
}

View File

@ -98,8 +98,8 @@ private:
bool importSavegameData(SavegameData *savegame, QString sgdPath, bool warn = true);
void pictureLoaded(SnapmaticPicture *picture, bool inserted);
void savegameLoaded(SavegameData *savegame, QString savegamePath, bool inserted);
void savegameDeleted(SavegameWidget *sgdWidget);
void pictureDeleted(SnapmaticWidget *picWidget);
void savegameDeleted(SavegameWidget *sgdWidget, bool isRemoteEmited = false);
void pictureDeleted(SnapmaticWidget *picWidget, bool isRemoteEmited = false);
void insertSnapmaticIPI(QWidget *widget);
void insertSavegameIPI(QWidget *widget);
void sortingProfileInterface();

View File

@ -34,7 +34,7 @@ void SavegameCopy::copySavegame(QWidget *parent, QString sgdPath)
QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
settings.beginGroup("FileDialogs");
fileDialogPreSave:
fileDialogPreSave: //Work?
QFileInfo sgdFileInfo(sgdPath);
QFileDialog fileDialog(parent);
fileDialog.setFileMode(QFileDialog::AnyFile);
@ -72,12 +72,12 @@ fileDialogPreSave:
if (!QFile::remove(selectedFile))
{
QMessageBox::warning(parent, SavegameWidget::tr("Export Savegame"), SavegameWidget::tr("Failed to overwrite %1 with current Savegame").arg("\""+selectedFile+"\""));
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}
else
{
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}
@ -85,13 +85,13 @@ fileDialogPreSave:
if (!isCopied)
{
QMessageBox::warning(parent, SavegameWidget::tr("Export Savegame"), SavegameWidget::tr("Failed to export current Savegame"));
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}
else
{
QMessageBox::warning(parent, SavegameWidget::tr("Export Savegame"), SavegameWidget::tr("No valid file is selected"));
goto fileDialogPreSave;
goto fileDialogPreSave; //Work?
}
}

View File

@ -19,15 +19,15 @@
#include "StringParser.h"
#include "SavegameData.h"
#include <QTextCodec>
#include <QByteArray>
#include <QDebug>
#include <QFile>
#define savegameHeaderLength 260
#define verificationValue QByteArray::fromHex("00000001")
SavegameData::SavegameData(const QString &fileName, QObject *parent) : QObject(parent), savegameFileName(fileName)
{
// PARSE INT INIT - DO NOT CHANGE THIS VALUES
savegameHeaderLength = 260;
verificationValue = QByteArray::fromHex("00000001");
// INIT SAVEGAME
savegameStr = "";
savegameOk = 0;

View File

@ -40,10 +40,6 @@ private:
QString savegameStr;
QString lastStep;
bool savegameOk;
// PARSE INT
QByteArray verificationValue;
int savegameHeaderLength;
};
#endif // SAVEGAMEDATA_H

View File

@ -7,6 +7,10 @@ SavegameDialog::SavegameDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SavegameDialog)
{
// Set Window Flags
setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint);
// Setup User Interface
ui->setupUi(this);
savegameLabStr = ui->labSavegameText->text();

View File

@ -19,6 +19,9 @@
#include "SnapmaticEditor.h"
#include "ui_SnapmaticEditor.h"
#include "SnapmaticPicture.h"
#include "StringParser.h"
#include <QTextDocument>
#include <QInputDialog>
#include <QMessageBox>
#include <QDebug>
#include <QFile>
@ -42,6 +45,7 @@ SnapmaticEditor::SnapmaticEditor(QWidget *parent) :
ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel"));
}
snapmaticTitle = "";
smpic = 0;
}
@ -179,6 +183,30 @@ void SnapmaticEditor::setSnapmaticPicture(SnapmaticPicture *picture)
{
ui->rbCustom->setChecked(true);
}
setSnapmaticTitle(picture->getPictureTitle());
}
void SnapmaticEditor::setSnapmaticTitle(const QString &title)
{
if (title.length() > 39)
{
snapmaticTitle = title.left(39);
}
else
{
snapmaticTitle = title;
}
QString editStr = QString("<a href=\"g5e://edittitle\" style=\"text-decoration: none;\">%1</a>").arg(tr("Edit"));
QString titleStr = tr("Title: %1 (%2)").arg(StringParser::escapeString(snapmaticTitle), editStr);
ui->labTitle->setText(titleStr);
if (SnapmaticPicture::verifyTitle(snapmaticTitle))
{
ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("<span style=\"color: green\">%1</a>").arg(tr("Yes", "Yes, should work fine"))));
}
else
{
ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("<span style=\"color: red\">%1</a>").arg(tr("No", "No, could lead to issues"))));
}
}
void SnapmaticEditor::on_cmdCancel_clicked()
@ -210,10 +238,19 @@ void SnapmaticEditor::on_cmdApply_clicked()
{
QFile::copy(adjustedFileName, backupFileName);
}
SnapmaticProperties fallbackProperties = smpic->getSnapmaticProperties();
QString fallbackTitle = smpic->getPictureTitle();
smpic->setSnapmaticProperties(localSpJson);
smpic->setPictureTitle(snapmaticTitle);
if (!smpic->exportPicture(originalFileName))
{
QMessageBox::warning(this, tr("Snapmatic Properties"), tr("Patching of Snapmatic Properties failed because of I/O Error"));
smpic->setSnapmaticProperties(fallbackProperties);
smpic->setPictureTitle(fallbackTitle);
}
else
{
smpic->emitUpdate();
}
}
close();
@ -251,3 +288,16 @@ void SnapmaticEditor::on_cbQualify_toggled(bool checked)
}
}
}
void SnapmaticEditor::on_labTitle_linkActivated(const QString &link)
{
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())
{
setSnapmaticTitle(newTitle);
}
}
}

View File

@ -33,6 +33,7 @@ class SnapmaticEditor : public QDialog
public:
explicit SnapmaticEditor(QWidget *parent = 0);
void setSnapmaticPicture(SnapmaticPicture *picture);
void setSnapmaticTitle(const QString &title);
~SnapmaticEditor();
private slots:
@ -47,11 +48,13 @@ private slots:
void on_cmdCancel_clicked();
void on_cmdApply_clicked();
void on_cbQualify_toggled(bool checked);
void on_labTitle_linkActivated(const QString &link);
private:
Ui::SnapmaticEditor *ui;
SnapmaticProperties localSpJson;
SnapmaticPicture *smpic;
QString snapmaticTitle;
void qualifyAvatar();
};

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>375</width>
<height>319</height>
<width>400</width>
<height>350</height>
</rect>
</property>
<property name="windowTitle">
@ -119,6 +119,50 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gbTitle">
<property name="title">
<string>Snapmatic Title</string>
</property>
<layout class="QVBoxLayout" name="vlTitle">
<item>
<widget class="UiModLabel" name="labTitle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="contextMenuPolicy">
<enum>Qt::NoContextMenu</enum>
</property>
<property name="text">
<string>Title: %1 (%2)</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="UiModLabel" name="labAppropriate">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Appropriate: %1</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gbExtras">
<property name="title">
@ -133,7 +177,7 @@
</widget>
</item>
<item>
<widget class="QLabel" name="labQualify">
<widget class="UiModLabel" name="labQualify">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
@ -212,6 +256,13 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>UiModLabel</class>
<extends>QLabel</extends>
<header>UiModLabel.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -29,6 +29,7 @@
#include <QBuffer>
#include <QDebug>
#include <QImage>
#include <QSize>
#include <QFile>
// PARSER ALLOCATIONS
@ -49,11 +50,13 @@
#define titlStreamEditorLength 256
#define titlStreamCharacterMax 39
// IMAGES VALUES
#define snapmaticResolutionW 960
#define snapmaticResolutionH 536
#define snapmaticResolution QSize(snapmaticResolutionW, snapmaticResolutionH)
SnapmaticPicture::SnapmaticPicture(const QString &fileName, QObject *parent) : QObject(parent), picFilePath(fileName)
{
// PREDEFINED PROPERTIES
snapmaticResolution = QSize(960, 536);
reset();
}
@ -65,7 +68,7 @@ void SnapmaticPicture::reset()
{
// INIT PIC
rawPicContent = "";
cachePicture = QImage(0, 0, QImage::Format_RGB888);
cachePicture = QImage();
jpegRawContentSize = 0;
picExportFileName = "";
isCustomFormat = 0;
@ -483,51 +486,6 @@ bool SnapmaticPicture::setPictureTitl(const QString &newTitle_)
return false;
}
bool SnapmaticPicture::exportPicture(const QString &fileName, bool customFormat)
{
QFile *picFile = new QFile(fileName);
if (picFile->open(QIODevice::WriteOnly))
{
if (!customFormat)
{
// Classic straight export
picFile->write(rawPicContent);
picFile->close();
picFile->deleteLater();
}
else
{
// Modern compressed export
QByteArray stockFileNameUTF8 = picFileName.toUtf8();
QByteArray numberLength = QByteArray::number(stockFileNameUTF8.length());
if (numberLength.length() == 1)
{
numberLength.insert(0, "0");
}
else if (numberLength.length() != 2)
{
numberLength = "00";
}
picFile->write(QByteArray::fromHex("00")); // First Null Byte
picFile->write("G5E"); // GTA 5 Export
picFile->write(QByteArray::fromHex("1000")); // 2 byte GTA 5 Export Version
picFile->write("LEN"); // Before Length
picFile->write(QByteArray::fromHex(numberLength)); // Length in HEX before Compressed
picFile->write("FIL"); // Before File Name
picFile->write(stockFileNameUTF8); // File Name
picFile->write("COM"); // Before Compressed
picFile->write(qCompress(rawPicContent, 9)); // Compressed Snapmatic
picFile->close();
picFile->deleteLater();
}
return true;
}
else
{
return false;
}
}
QString SnapmaticPicture::getExportPictureFileName()
{
return picExportFileName;
@ -655,24 +613,34 @@ bool SnapmaticPicture::isPicOk()
return picOk;
}
void SnapmaticPicture::setPicFileName(QString picFileName_)
{
picFileName = picFileName_;
}
void SnapmaticPicture::setPicFilePath(QString picFilePath_)
{
picFilePath = picFilePath_;
}
void SnapmaticPicture::clearCache()
{
cacheEnabled = false;
cachePicture = QImage(0, 0, QImage::Format_RGB888);
cachePicture = QImage();
}
void SnapmaticPicture::emitUpdate()
{
emit updated();
}
// JSON part
bool SnapmaticPicture::isJsonOk()
{
return jsonOk;
}
QString SnapmaticPicture::getJsonStr()
{
return jsonStr;
}
SnapmaticProperties SnapmaticPicture::getSnapmaticProperties()
{
return localSpJson;
}
void SnapmaticPicture::parseJsonContent()
{
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonStr.toUtf8());
@ -733,21 +701,6 @@ void SnapmaticPicture::parseJsonContent()
jsonOk = true;
}
bool SnapmaticPicture::isJsonOk()
{
return jsonOk;
}
QString SnapmaticPicture::getJsonStr()
{
return jsonStr;
}
SnapmaticProperties SnapmaticPicture::getSnapmaticProperties()
{
return localSpJson;
}
bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties newSpJson)
{
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonStr.toUtf8());
@ -811,6 +764,70 @@ bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties newSpJson)
return true;
}
// FILE MANAGEMENT
bool SnapmaticPicture::exportPicture(const QString &fileName, bool customFormat)
{
QFile *picFile = new QFile(fileName);
if (picFile->open(QIODevice::WriteOnly))
{
if (!customFormat)
{
// Classic straight export
picFile->write(rawPicContent);
picFile->close();
picFile->deleteLater();
}
else
{
// Modern compressed export
QByteArray stockFileNameUTF8 = picFileName.toUtf8();
QByteArray numberLength = QByteArray::number(stockFileNameUTF8.length());
if (numberLength.length() == 1)
{
numberLength.insert(0, "0");
}
else if (numberLength.length() != 2)
{
numberLength = "00";
}
picFile->write(QByteArray::fromHex("00")); // First Null Byte
picFile->write("G5E"); // GTA 5 Export
picFile->write(QByteArray::fromHex("1000")); // 2 byte GTA 5 Export Version
picFile->write("LEN"); // Before Length
picFile->write(QByteArray::fromHex(numberLength)); // Length in HEX before Compressed
picFile->write("FIL"); // Before File Name
picFile->write(stockFileNameUTF8); // File Name
picFile->write("COM"); // Before Compressed
picFile->write(qCompress(rawPicContent, 9)); // Compressed Snapmatic
picFile->close();
picFile->deleteLater();
}
return true;
}
else
{
return false;
}
}
void SnapmaticPicture::setPicFileName(const QString &picFileName_)
{
picFileName = picFileName_;
}
void SnapmaticPicture::setPicFilePath(const QString &picFilePath_)
{
picFilePath = picFilePath_;
}
bool SnapmaticPicture::deletePicFile()
{
if (!QFile::exists(picFilePath)) return true;
if (QFile::remove(picFilePath)) return true;
return false;
}
// VISIBILITY
bool SnapmaticPicture::isHidden()

View File

@ -71,10 +71,14 @@ public:
bool setImage(const QImage &picture);
bool setPictureTitl(const QString &newTitle);
bool setPictureStream(const QByteArray &picByteArray);
bool exportPicture(const QString &fileName, bool customFormat = false);
void setPicFileName(QString picFileName);
void setPicFilePath(QString picFilePath);
void updateStrings();
void emitUpdate();
// FILE MANAGEMENT
bool exportPicture(const QString &fileName, bool customFormat = false);
void setPicFileName(const QString &picFileName);
void setPicFilePath(const QString &picFilePath);
bool deletePicFile();
// ALTERNATIVES
QString getPictureTitle() { return getPictureTitl(); }
@ -122,9 +126,6 @@ private:
// PICTURE STREAM
QByteArray rawPicContent;
// PREDEFINED PROPERTIES
QSize snapmaticResolution;
// JSON
void parseJsonContent();
bool jsonOk;
@ -135,6 +136,7 @@ private:
static bool verifyTitleChar(const QChar &titleChar);
signals:
void updated();
public slots:
};

View File

@ -23,6 +23,7 @@
#include "DatabaseThread.h"
#include "PictureDialog.h"
#include "PictureExport.h"
#include "StringParser.h"
#include "config.h"
#include <QMessageBox>
#include <QPixmap>
@ -84,6 +85,7 @@ void SnapmaticWidget::setSnapmaticPicture(SnapmaticPicture *picture)
picPath = picture->getPictureFilePath();
picTitl = picture->getPictureTitl();
picStr = picture->getPictureStr();
QObject::connect(picture, SIGNAL(updated()), this, SLOT(snapmaticUpdated()));
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 + "");
@ -94,6 +96,15 @@ void SnapmaticWidget::setSnapmaticPicture(SnapmaticPicture *picture)
adjustTextColor();
}
void SnapmaticWidget::snapmaticUpdated()
{
// Current only strings get updated
picPath = smpic->getPictureFilePath();
picTitl = smpic->getPictureTitl();
picStr = smpic->getPictureStr();
ui->labPicStr->setText(picStr + "\n" + picTitl + "");
}
void SnapmaticWidget::on_cmdView_clicked()
{
QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
@ -102,7 +113,6 @@ void SnapmaticWidget::on_cmdView_clicked()
settings.endGroup();
PictureDialog *picDialog = new PictureDialog(profileDB, crewDB, this);
picDialog->setWindowFlags(picDialog->windowFlags()^Qt::WindowContextHelpButtonHint);
picDialog->setSnapmaticPicture(smpic, true);
picDialog->setModal(true);
@ -135,23 +145,25 @@ void SnapmaticWidget::on_cmdExport_clicked()
}
void SnapmaticWidget::on_cmdDelete_clicked()
{
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("\""+picStr+"\""), QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
if (uchoice == QMessageBox::Yes)
{
if (!QFile::exists(picPath))
if (smpic->deletePicFile())
{
emit pictureDeleted();
}
else if(QFile::remove(picPath))
{
emit pictureDeleted();
return true;
}
else
{
QMessageBox::warning(this, tr("Delete picture"), tr("Failed at deleting %1 from your Snapmatic pictures").arg("\""+picStr+"\""));
}
}
return false;
}
void SnapmaticWidget::mousePressEvent(QMouseEvent *ev)

View File

@ -42,6 +42,7 @@ public:
void setSnapmaticPicture(SnapmaticPicture *picture);
void setSelectionMode(bool selectionMode);
void setSelected(bool isSelected);
bool deletePicture();
bool makePictureVisible();
bool makePictureHidden();
SnapmaticPicture *getPicture();
@ -66,6 +67,7 @@ private slots:
void makePictureVisibleSlot();
void makePictureHiddenSlot();
void editSnapmaticProperties();
void snapmaticUpdated();
protected:
bool eventFilter(QObject *obj, QEvent *ev);

View File

@ -18,6 +18,7 @@
#include "StringParser.h"
#include "config.h"
#include <QTextDocument>
#include <QApplication>
#include <QTextCodec>
#include <QByteArray>
@ -60,3 +61,12 @@ QString StringParser::convertBuildedString(const QString &buildedStr)
outputStr.replace("$SEPARATOR", QDir::separator());
return outputStr;
}
QString StringParser::escapeString(const QString &toEscape)
{
#if QT_VERSION >= 0x050000
return toEscape.toHtmlEscaped();
#else
return Qt::escape(toEscape);
#endif
}

View File

@ -30,6 +30,7 @@ public:
static QString convertDrawStringForLog(const QString &inputStr);
static QString convertLogStringForDraw(const QString &inputStr);
static QString convertBuildedString(const QString &buildedStr);
static QString escapeString(const QString &toEscape);
};
#endif // STRINGPARSER_H

View File

@ -208,7 +208,6 @@ void UserInterface::closeProfile()
ui->menuProfile->setEnabled(false);
ui->actionSelect_profile->setEnabled(false);
ui->swProfile->removeWidget(profileUI);
profileUI->deleteLater();
delete profileUI;
}
this->setWindowTitle(defaultWindowTitle.arg(tr("Select Profile")));
@ -248,11 +247,10 @@ void UserInterface::openSelectProfile()
void UserInterface::on_actionAbout_gta5sync_triggered()
{
AboutDialog *aboutDialog = new AboutDialog(this);
aboutDialog->setWindowFlags(aboutDialog->windowFlags()^Qt::WindowContextHelpButtonHint);
aboutDialog->setWindowIcon(windowIcon());
aboutDialog->setModal(true);
aboutDialog->show();
aboutDialog->exec();
aboutDialog->deleteLater();
delete aboutDialog;
}
@ -297,13 +295,14 @@ void UserInterface::on_actionDelete_selected_triggered()
void UserInterface::on_actionOptions_triggered()
{
OptionsDialog *optionsDialog = new OptionsDialog(profileDB, this);
optionsDialog->setWindowFlags(optionsDialog->windowFlags()^Qt::WindowContextHelpButtonHint);
optionsDialog->setWindowIcon(windowIcon());
optionsDialog->commitProfiles(GTAV_Profiles);
QObject::connect(optionsDialog, SIGNAL(settingsApplied(int,QString)), this, SLOT(settingsApplied(int,QString)));
QObject::connect(optionsDialog, SIGNAL(settingsApplied(int, QString)), this, SLOT(settingsApplied(int, QString)));
optionsDialog->setModal(true);
optionsDialog->show();
optionsDialog->exec();
delete optionsDialog;
}
@ -428,35 +427,30 @@ bool UserInterface::openFile(QString selectedFile, bool warn)
void UserInterface::openSnapmaticFile(SnapmaticPicture *picture)
{
PictureDialog *picDialog = new PictureDialog(profileDB, crewDB, this);
picDialog->setWindowFlags(picDialog->windowFlags()^Qt::WindowContextHelpButtonHint);
picDialog->setSnapmaticPicture(picture, true);
picDialog->setModal(true);
PictureDialog picDialog(profileDB, crewDB, this);
picDialog.setSnapmaticPicture(picture, true);
picDialog.setModal(true);
int crewID = picture->getSnapmaticProperties().crewID;
if (crewID != 0) { crewDB->addCrew(crewID); }
QObject::connect(threadDB, SIGNAL(playerNameFound(int, QString)), profileDB, SLOT(setPlayerName(int, QString)));
QObject::connect(threadDB, SIGNAL(playerNameUpdated()), picDialog, SLOT(playerNameUpdated()));
QObject::connect(threadDB, SIGNAL(playerNameUpdated()), &picDialog, SLOT(playerNameUpdated()));
picDialog->show();
picDialog->setMinimumSize(picDialog->size());
picDialog->setMaximumSize(picDialog->size());
picDialog.show();
picDialog.setMinimumSize(picDialog.size());
picDialog.setMaximumSize(picDialog.size());
picDialog->exec();
delete picDialog;
picDialog.exec();
}
void UserInterface::openSavegameFile(SavegameData *savegame)
{
SavegameDialog *sgdDialog = new SavegameDialog(this);
sgdDialog->setWindowFlags(sgdDialog->windowFlags()^Qt::WindowContextHelpButtonHint);
sgdDialog->setSavegameData(savegame, savegame->getSavegameFileName(), true);
sgdDialog->setModal(true);
sgdDialog->show();
sgdDialog->exec();
delete sgdDialog;
SavegameDialog sgdDialog(this);
sgdDialog.setSavegameData(savegame, savegame->getSavegameFileName(), true);
sgdDialog.setModal(true);
sgdDialog.show();
sgdDialog.exec();
}
void UserInterface::settingsApplied(int _contentMode, QString _language)

View File

@ -50,14 +50,14 @@
#ifndef GTA5SYNC_APPVER
#ifndef GTA5SYNC_DAILYB
#define GTA5SYNC_APPVER "1.3.3"
#define GTA5SYNC_APPVER "1.4.0-dev1"
#else
#define GTA5SYNC_APPVER QString("%1").arg(GTA5SYNC_DAILYB)
#endif
#endif
#ifndef GTA5SYNC_BUILDTYPE
#define GTA5SYNC_BUILDTYPE "Custom"
#define GTA5SYNC_BUILDTYPE "Developer"
#endif
#ifndef GTA5SYNC_SHARE

File diff suppressed because it is too large Load Diff

View File

@ -432,7 +432,6 @@ int main(int argc, char *argv[])
SnapmaticPicture picture;
bool readOk = picture.readingPictureFromFile(arg1);
picDialog.setWindowFlags(picDialog.windowFlags()^Qt::WindowContextHelpButtonHint);
picDialog.setWindowIcon(IconLoader::loadingAppIcon());
picDialog.setSnapmaticPicture(&picture, readOk);

View File

@ -7,8 +7,8 @@ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "gta5view.exe.manifest"
#include <windows.h>
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 3, 3, 0
PRODUCTVERSION 1, 3, 3, 0
FILEVERSION 1, 4, 0, 0
PRODUCTVERSION 1, 4, 0, 0
FILEFLAGSMASK 0x3fL
FILEFLAGS 0
FILEOS VOS_NT_WINDOWS32
@ -25,12 +25,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Syping"
VALUE "FileDescription", "gta5view\0"
VALUE "FileVersion", "1.3.3\0"
VALUE "FileVersion", "1.4.0-dev1\0"
VALUE "InternalName", "gta5view\0"
VALUE "LegalCopyright", "Copyright © 2016-2017 Syping\0"
VALUE "OriginalFilename", "gta5view.exe\0"
VALUE "ProductName", "gta5view\0"
VALUE "ProductVersion", "1.3.3\0"
VALUE "ProductVersion", "1.4.0-dev1\0"
END
END
END

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

View File

@ -196,32 +196,32 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen</translation>
<translation>Importieren...</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="87"/>
<location filename="../ImportDialog.ui" line="90"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="93"/>
<location filename="../ImportDialog.ui" line="96"/>
<source>&amp;Keep Aspect Ratio</source>
<translation>Seitenverhältnis &amp;behalten</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="100"/>
<location filename="../ImportDialog.ui" line="103"/>
<source>&amp;Ignore Aspect Ratio</source>
<translation>Seitenverhältnis &amp;ignorieren</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="107"/>
<location filename="../ImportDialog.ui" line="110"/>
<source>&amp;Avatar</source>
<translation>&amp;Avatar</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="145"/>
<location filename="../ImportDialog.ui" line="154"/>
<source>&amp;OK</source>
<translation>&amp;OK</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="152"/>
<location filename="../ImportDialog.ui" line="167"/>
<source>&amp;Cancel</source>
<translation>Abbre&amp;chen</translation>
</message>
@ -559,17 +559,17 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen</translation>
<translation>Schließen</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="95"/>
<location filename="../PictureDialog.cpp" line="128"/>
<source>Export as &amp;JPG picture...</source>
<translation>Exportiere als &amp;JPG Bild...</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="96"/>
<location filename="../PictureDialog.cpp" line="129"/>
<source>Export as &amp;GTA Snapmatic...</source>
<translation>Exportiere als &amp;GTA Snapmatic...</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="297"/>
<location filename="../PictureDialog.cpp" line="343"/>
<source>Key 1 - Avatar Preview Mode
Key 2 - Toggle Overlay
Arrow Keys - Navigate</source>
@ -578,19 +578,19 @@ Taste 2 - Overlay umschalten
Pfeiltasten - Navigieren</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="357"/>
<location filename="../PictureDialog.cpp" line="414"/>
<location filename="../PictureDialog.cpp" line="402"/>
<location filename="../PictureDialog.cpp" line="474"/>
<source>Snapmatic Picture Viewer</source>
<translation>Snapmatic Bildansicht</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="357"/>
<location filename="../PictureDialog.cpp" line="414"/>
<location filename="../PictureDialog.cpp" line="402"/>
<location filename="../PictureDialog.cpp" line="474"/>
<source>Failed at %1</source>
<translation>Fehlgeschlagen bei %1</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="469"/>
<location filename="../PictureDialog.cpp" line="529"/>
<source>Avatar Preview Mode
Press 1 for Default View</source>
<translation>Avatar Vorschaumodus
@ -627,19 +627,19 @@ Drücke A für Standardansicht</translation>
<translation type="vanished">Avatar Vorschaumodus&lt;br&gt;Drücke A für Standardansicht</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="403"/>
<location filename="../PictureDialog.cpp" line="413"/>
<location filename="../PictureDialog.cpp" line="463"/>
<location filename="../PictureDialog.cpp" line="473"/>
<source>No player</source>
<translation>Keine Spieler</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="406"/>
<location filename="../PictureDialog.cpp" line="413"/>
<location filename="../PictureDialog.cpp" line="466"/>
<location filename="../PictureDialog.cpp" line="473"/>
<source>No crew</source>
<translation>Keine Crew</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="413"/>
<location filename="../PictureDialog.cpp" line="473"/>
<source>Unknown Location</source>
<translation>Unbekannter Standort</translation>
</message>
@ -864,13 +864,13 @@ Drücke A für Standardansicht</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="375"/>
<location filename="../UserInterface.cpp" line="316"/>
<location filename="../UserInterface.cpp" line="335"/>
<source>Savegames files (SGTA*)</source>
<translation>Spielstanddateien (SGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="376"/>
<location filename="../UserInterface.cpp" line="317"/>
<location filename="../UserInterface.cpp" line="336"/>
<source>Snapmatic pictures (PGTA*)</source>
<translation>Snapmatic Bilder (PGTA*)</translation>
</message>
@ -881,7 +881,7 @@ Drücke A für Standardansicht</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="378"/>
<location filename="../UserInterface.cpp" line="318"/>
<location filename="../UserInterface.cpp" line="337"/>
<source>All files (**)</source>
<translation>Alle Dateien (**)</translation>
</message>
@ -902,13 +902,13 @@ Drücke A für Standardansicht</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="492"/>
<location filename="../UserInterface.cpp" line="358"/>
<location filename="../UserInterface.cpp" line="377"/>
<source>Failed to read Snapmatic picture</source>
<translation>Fehler beim Lesen vom Snapmatic Bild</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="508"/>
<location filename="../UserInterface.cpp" line="374"/>
<location filename="../UserInterface.cpp" line="393"/>
<source>Failed to read Savegame file</source>
<translation>Fehler beim Lesen von Spielstanddatei</translation>
</message>
@ -935,7 +935,7 @@ Drücke A für Standardansicht</translation>
<message>
<location filename="../ProfileInterface.cpp" line="465"/>
<location filename="../ProfileInterface.cpp" line="663"/>
<location filename="../UserInterface.cpp" line="406"/>
<location filename="../UserInterface.cpp" line="425"/>
<source>No valid file is selected</source>
<translation>Keine gültige Datei wurde ausgewählt</translation>
</message>
@ -1096,20 +1096,20 @@ Exportieren als:</translation>
<translation type="obsolete">Aktueller Exportiervorgang: %1</translation>
</message>
<message>
<location filename="../ExportThread.cpp" line="95"/>
<location filename="../ExportThread.cpp" line="134"/>
<location filename="../ExportThread.cpp" line="155"/>
<location filename="../ExportThread.cpp" line="96"/>
<location filename="../ExportThread.cpp" line="135"/>
<location filename="../ExportThread.cpp" line="156"/>
<source>Export file %1 of %2 files</source>
<translation>Exportiere Datei %1 von %2 Dateien</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="314"/>
<location filename="../UserInterface.cpp" line="333"/>
<source>All profile files (*.g5e SGTA* PGTA*)</source>
<translation>Alle Profildateien (*.g5e SGTA* PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="374"/>
<location filename="../UserInterface.cpp" line="315"/>
<location filename="../UserInterface.cpp" line="334"/>
<source>GTA V Export (*.g5e)</source>
<translation>GTA V Export (*.g5e)</translation>
</message>
@ -1211,13 +1211,13 @@ Exportieren als:</translation>
</message>
<message>
<location filename="../SavegameWidget.ui" line="118"/>
<location filename="../SavegameWidget.cpp" line="132"/>
<location filename="../SavegameWidget.cpp" line="145"/>
<location filename="../SavegameWidget.cpp" line="131"/>
<location filename="../SavegameWidget.cpp" line="144"/>
<source>Delete savegame</source>
<translation>Savegame löschen</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="50"/>
<location filename="../SavegameWidget.cpp" line="49"/>
<source>Export Savegame...</source>
<translation>Spielstand exportieren...</translation>
</message>
@ -1227,8 +1227,8 @@ Exportieren als:</translation>
<translation>SPIELSTAND %3 - %1&lt;br&gt;%2</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="93"/>
<location filename="../SavegameWidget.cpp" line="94"/>
<location filename="../SavegameWidget.cpp" line="95"/>
<source>WRONG FORMAT</source>
<translation>FALSCHES FORMAT</translation>
</message>
@ -1237,63 +1237,63 @@ Exportieren als:</translation>
<translation type="vanished">AUTO</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="57"/>
<location filename="../SavegameWidget.cpp" line="56"/>
<source>AUTOSAVE - %1
%2</source>
<translation>AUTOSAVE - %1
%2</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="58"/>
<location filename="../SavegameWidget.cpp" line="57"/>
<source>SAVE %3 - %1
%2</source>
<translation>SPIELSTAND %3 - %1
%2</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="118"/>
<location filename="../SavegameWidget.cpp" line="117"/>
<source>UNKNOWN</source>
<translation>UNKNOWN</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="132"/>
<location filename="../SavegameWidget.cpp" line="131"/>
<source>Are you sure to delete %1 from your savegames?</source>
<translation>Bist du sicher %1 von deinen Spielständen zu löschen?</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="145"/>
<location filename="../SavegameWidget.cpp" line="144"/>
<source>Failed at deleting %1 from your savegames</source>
<translation>Fehlgeschlagen beim Löschen %1 von deinen Spielständen</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="209"/>
<location filename="../ProfileInterface.cpp" line="1106"/>
<source>&amp;View</source>
<translation>A&amp;nsehen</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="211"/>
<location filename="../ProfileInterface.cpp" line="1108"/>
<source>&amp;Remove</source>
<translation>Entfe&amp;rnen</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="215"/>
<location filename="../SavegameWidget.cpp" line="227"/>
<location filename="../ProfileInterface.cpp" line="1112"/>
<location filename="../ProfileInterface.cpp" line="1123"/>
<source>&amp;Select</source>
<translation>Au&amp;swählen</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="216"/>
<location filename="../ProfileInterface.cpp" line="1113"/>
<source>&amp;Deselect</source>
<translation>A&amp;bwählen</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="217"/>
<location filename="../SavegameWidget.cpp" line="228"/>
<location filename="../ProfileInterface.cpp" line="1114"/>
<location filename="../ProfileInterface.cpp" line="1124"/>
<source>Select &amp;All</source>
<translation>&amp;Alles auswählen</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="221"/>
<location filename="../ProfileInterface.cpp" line="1117"/>
<source>&amp;Deselect All</source>
<translation>Alles a&amp;bwählen</translation>
</message>
@ -1332,7 +1332,7 @@ Exportieren als:</translation>
<translation>Spielstand kopieren</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="210"/>
<location filename="../ProfileInterface.cpp" line="1107"/>
<source>&amp;Export</source>
<translation>&amp;Exportieren</translation>
</message>
@ -1408,7 +1408,7 @@ Exportieren als:</translation>
<message>
<location filename="../SnapmaticEditor.ui" line="14"/>
<location filename="../SnapmaticEditor.ui" line="81"/>
<location filename="../SnapmaticEditor.cpp" line="216"/>
<location filename="../SnapmaticEditor.cpp" line="247"/>
<source>Snapmatic Properties</source>
<translation>Snapmatic Eigenschaften</translation>
</message>
@ -1456,26 +1456,45 @@ Exportieren als:</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="125"/>
<location filename="../SnapmaticEditor.cpp" line="297"/>
<source>Snapmatic Title</source>
<translation>Snapmatic Titel</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="140"/>
<location filename="../SnapmaticEditor.cpp" line="200"/>
<source>Title: %1 (%2)</source>
<translation>Titel: %1 (%2)</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="156"/>
<location filename="../SnapmaticEditor.cpp" line="204"/>
<location filename="../SnapmaticEditor.cpp" line="208"/>
<source>Appropriate: %1</source>
<translation>Angemessen: %1</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="169"/>
<source>Extras</source>
<translation>Extras</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="131"/>
<location filename="../SnapmaticEditor.ui" line="175"/>
<source>Qualify as Avatar automatically at apply</source>
<translation>Beim Übernehmen als Avatar qualifizieren </translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="144"/>
<location filename="../SnapmaticEditor.ui" line="188"/>
<source>Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture</source>
<translation>Das Qualifizieren als Avatar erlaubt dir dieses Snapmatic als Social Club Profilbild zu nutzen</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="194"/>
<location filename="../SnapmaticEditor.ui" line="238"/>
<source>&amp;Apply</source>
<translation>&amp;Übernehmen</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="207"/>
<location filename="../SnapmaticEditor.ui" line="251"/>
<source>&amp;Cancel</source>
<translation>Abbre&amp;chen</translation>
</message>
@ -1488,15 +1507,37 @@ Exportieren als:</translation>
<translation type="vanished">Cancel</translation>
</message>
<message>
<location filename="../SnapmaticEditor.cpp" line="216"/>
<location filename="../SnapmaticEditor.cpp" line="199"/>
<source>Edit</source>
<translation>Bearbeiten</translation>
</message>
<message>
<location filename="../SnapmaticEditor.cpp" line="204"/>
<source>Yes</source>
<comment>Yes, should work fine</comment>
<translation>Ja</translation>
</message>
<message>
<location filename="../SnapmaticEditor.cpp" line="208"/>
<source>No</source>
<comment>No, could lead to issues</comment>
<translation>Nein</translation>
</message>
<message>
<location filename="../SnapmaticEditor.cpp" line="247"/>
<source>Patching of Snapmatic Properties failed because of I/O Error</source>
<translation>Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen I/O Fehler</translation>
</message>
<message>
<location filename="../SnapmaticEditor.cpp" line="297"/>
<source>New Snapmatic title:</source>
<translation>Neuer Snapmatic Titel:</translation>
</message>
</context>
<context>
<name>SnapmaticPicture</name>
<message>
<location filename="../SnapmaticPicture.cpp" line="349"/>
<location filename="../SnapmaticPicture.cpp" line="370"/>
<source>PHOTO - %1</source>
<translation>FOTO - %1</translation>
</message>
@ -1535,18 +1576,18 @@ Exportieren als:</translation>
</message>
<message>
<location filename="../SnapmaticWidget.ui" line="149"/>
<location filename="../SnapmaticWidget.cpp" line="140"/>
<location filename="../SnapmaticWidget.cpp" line="153"/>
<location filename="../SnapmaticWidget.cpp" line="150"/>
<location filename="../SnapmaticWidget.cpp" line="163"/>
<source>Delete picture</source>
<translation>Bild löschen</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="140"/>
<location filename="../SnapmaticWidget.cpp" line="150"/>
<source>Are you sure to delete %1 from your Snapmatic pictures?</source>
<translation>Bist du sicher %1 von deinen Snapmatic Bilder zu löschen?</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="205"/>
<location filename="../ProfileInterface.cpp" line="1065"/>
<source>Edi&amp;t</source>
<translation>Bearbei&amp;ten</translation>
</message>
@ -1559,7 +1600,7 @@ Exportieren als:</translation>
<translation type="vanished">&amp;Im Spiel deaktivieren</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="215"/>
<location filename="../ProfileInterface.cpp" line="1075"/>
<source>&amp;Export</source>
<translation>&amp;Exportieren</translation>
</message>
@ -1572,12 +1613,12 @@ Exportieren als:</translation>
<translation type="obsolete">Exportiere als &amp;GTA Snapmatic</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="208"/>
<location filename="../ProfileInterface.cpp" line="1068"/>
<source>Show &amp;In-game</source>
<translation>&amp;Im Spiel anzeigen</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="212"/>
<location filename="../ProfileInterface.cpp" line="1072"/>
<source>Hide &amp;In-game</source>
<translation>&amp;Im Spiel ausblenden</translation>
</message>
@ -1590,49 +1631,49 @@ Exportieren als:</translation>
<translation type="vanished">FOTO - %1</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="214"/>
<location filename="../ProfileInterface.cpp" line="1074"/>
<source>&amp;Edit Properties...</source>
<translation>&amp;Eigenschaften bearbeiten...</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="216"/>
<location filename="../ProfileInterface.cpp" line="1076"/>
<source>Export as &amp;JPG picture...</source>
<translation>Exportiere als &amp;JPG Bild...</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="217"/>
<location filename="../ProfileInterface.cpp" line="1077"/>
<source>Export as &amp;GTA Snapmatic...</source>
<translation>Exportiere als &amp;GTA Snapmatic...</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="218"/>
<location filename="../ProfileInterface.cpp" line="1078"/>
<source>&amp;View</source>
<translation>A&amp;nsehen</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="221"/>
<location filename="../ProfileInterface.cpp" line="1081"/>
<source>&amp;Remove</source>
<translation>Entfe&amp;rnen</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="225"/>
<location filename="../SnapmaticWidget.cpp" line="237"/>
<location filename="../ProfileInterface.cpp" line="1085"/>
<location filename="../ProfileInterface.cpp" line="1096"/>
<source>&amp;Select</source>
<translation>Au&amp;swählen</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="226"/>
<location filename="../ProfileInterface.cpp" line="1086"/>
<source>&amp;Deselect</source>
<translation>A&amp;bwählen</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="227"/>
<location filename="../SnapmaticWidget.cpp" line="238"/>
<location filename="../ProfileInterface.cpp" line="1087"/>
<location filename="../ProfileInterface.cpp" line="1097"/>
<source>Select &amp;All</source>
<translation>Alles &amp;auswählen</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="231"/>
<location filename="../ProfileInterface.cpp" line="1090"/>
<source>&amp;Deselect All</source>
<translation>Alles a&amp;bwählen</translation>
</message>
@ -1680,7 +1721,7 @@ Exportieren als:</translation>
<translation type="obsolete">Bist du sicher %1 von deinen Snapmatic Bilder zu löschen?</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="153"/>
<location filename="../SnapmaticWidget.cpp" line="163"/>
<source>Failed at deleting %1 from your Snapmatic pictures</source>
<translation>Fehlgeschlagen beim Löschen %1 von deinen Snapmatic Bildern</translation>
</message>
@ -1720,7 +1761,7 @@ Exportieren als:</translation>
<translation type="obsolete">Über gta5sync</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="266"/>
<location filename="../UserInterface.ui" line="258"/>
<source>Ctrl+A</source>
<translation>Strg+A</translation>
</message>
@ -1733,7 +1774,7 @@ Exportieren als:</translation>
<translation type="obsolete">Optionen</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="306"/>
<location filename="../UserInterface.ui" line="298"/>
<source>Ctrl+O</source>
<translation>Strg+O</translation>
</message>
@ -1742,7 +1783,7 @@ Exportieren als:</translation>
<translation type="obsolete">Alles auswählen</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="258"/>
<location filename="../UserInterface.ui" line="250"/>
<source>Ctrl+S</source>
<translation>Strg+S</translation>
</message>
@ -1759,7 +1800,7 @@ Exportieren als:</translation>
<translation type="obsolete">Auswahl exportieren</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="282"/>
<location filename="../UserInterface.ui" line="274"/>
<source>Ctrl+E</source>
<translation>Strg+E</translation>
</message>
@ -1768,12 +1809,12 @@ Exportieren als:</translation>
<translation type="obsolete">Auswahl löschen</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="274"/>
<location filename="../UserInterface.ui" line="266"/>
<source>Ctrl+D</source>
<translation>Strg+D</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="235"/>
<location filename="../UserInterface.ui" line="231"/>
<source>Exit</source>
<translation>Beenden</translation>
</message>
@ -1787,12 +1828,12 @@ Exportieren als:</translation>
<translation type="vanished">&amp;Über Produkt</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="232"/>
<location filename="../UserInterface.ui" line="228"/>
<source>&amp;Exit</source>
<translation>B&amp;eenden</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="238"/>
<location filename="../UserInterface.ui" line="234"/>
<source>Ctrl+Q</source>
<translation>Strg+Q</translation>
</message>
@ -1835,43 +1876,43 @@ Exportieren als:</translation>
<translation type="vanished">&amp;Über gta5sync</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="243"/>
<location filename="../UserInterface.ui" line="239"/>
<source>Close &amp;Profile</source>
<translation>&amp;Profil schließen</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="246"/>
<location filename="../UserInterface.ui" line="242"/>
<source>Ctrl+End</source>
<translation>Strg+Ende</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="290"/>
<location filename="../UserInterface.ui" line="282"/>
<source>Ctrl+Del</source>
<translation>Strg+Entf</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="303"/>
<location filename="../UserInterface.ui" line="295"/>
<source>&amp;Open File...</source>
<translation>Datei &amp;öffnen...</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="311"/>
<location filename="../UserInterface.cpp" line="131"/>
<location filename="../UserInterface.ui" line="303"/>
<location filename="../UserInterface.cpp" line="144"/>
<source>Select &amp;GTA V Folder...</source>
<translation>Wähle &amp;GTA V Ordner...</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="317"/>
<location filename="../UserInterface.ui" line="309"/>
<source>Ctrl+G</source>
<translation>Strg+G</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="322"/>
<location filename="../UserInterface.ui" line="314"/>
<source>Show In-gam&amp;e</source>
<translation>Im Spiel anzeig&amp;en</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="330"/>
<location filename="../UserInterface.ui" line="322"/>
<source>Hi&amp;de In-game</source>
<translation>Im Spiel ausblen&amp;den</translation>
</message>
@ -1884,7 +1925,7 @@ Exportieren als:</translation>
<translation type="vanished">Im Spiel aktivier&amp;en</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="325"/>
<location filename="../UserInterface.ui" line="317"/>
<source>Shift+E</source>
<translation>Umschalt+E</translation>
</message>
@ -1893,7 +1934,7 @@ Exportieren als:</translation>
<translation type="vanished">Im Spiel &amp;deaktivieren</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="333"/>
<location filename="../UserInterface.ui" line="325"/>
<source>Shift+D</source>
<translation>Umschalt+D</translation>
</message>
@ -1916,27 +1957,27 @@ Exportieren als:</translation>
<translation type="obsolete">&amp;Optionen</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="255"/>
<location filename="../UserInterface.ui" line="247"/>
<source>&amp;Settings</source>
<translation>Ein&amp;stellungen</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="263"/>
<location filename="../UserInterface.ui" line="255"/>
<source>Select &amp;All</source>
<translation>&amp;Alles auswählen</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="271"/>
<location filename="../UserInterface.ui" line="263"/>
<source>&amp;Deselect All</source>
<translation>Alles a&amp;bwählen</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="279"/>
<location filename="../UserInterface.ui" line="271"/>
<source>&amp;Export selected...</source>
<translation>Auswahl &amp;exportieren...</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="287"/>
<location filename="../UserInterface.ui" line="279"/>
<source>&amp;Remove selected</source>
<translation>Auswahl entfe&amp;rnen</translation>
</message>
@ -1945,12 +1986,12 @@ Exportieren als:</translation>
<translation type="obsolete">Strg+R</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="295"/>
<location filename="../UserInterface.ui" line="287"/>
<source>&amp;Import files...</source>
<translation>Dateien &amp;importieren...</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="298"/>
<location filename="../UserInterface.ui" line="290"/>
<source>Ctrl+I</source>
<translation>Strg+I</translation>
</message>
@ -1959,16 +2000,16 @@ Exportieren als:</translation>
<translation type="obsolete">GTA V Ordner nicht gefunden!</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="61"/>
<location filename="../UserInterface.cpp" line="201"/>
<location filename="../UserInterface.cpp" line="62"/>
<location filename="../UserInterface.cpp" line="214"/>
<source>Select Profile</source>
<translation>Profil auswählen</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="314"/>
<location filename="../UserInterface.ui" line="306"/>
<location filename="../OptionsDialog.cpp" line="444"/>
<location filename="../UserInterface.cpp" line="80"/>
<location filename="../UserInterface.cpp" line="455"/>
<location filename="../UserInterface.cpp" line="93"/>
<location filename="../UserInterface.cpp" line="474"/>
<source>Select GTA V Folder...</source>
<translation>Wähle GTA V Ordner...</translation>
</message>
@ -1977,7 +2018,7 @@ Exportieren als:</translation>
<translation type="vanished">Wähle GTA V &amp;Ordner...</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="311"/>
<location filename="../UserInterface.cpp" line="330"/>
<source>Open File...</source>
<translation>Datei öffnen...</translation>
</message>
@ -1987,26 +2028,26 @@ Exportieren als:</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="20"/>
<location filename="../UserInterface.cpp" line="59"/>
<location filename="../UserInterface.cpp" line="60"/>
<source>%2 - %1</source>
<translation>%2 - %1</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="220"/>
<location filename="../UserInterface.cpp" line="58"/>
<location filename="../UserInterface.cpp" line="59"/>
<source>&amp;About %1</source>
<translation>&amp;Über %1</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="358"/>
<location filename="../UserInterface.cpp" line="374"/>
<location filename="../UserInterface.cpp" line="401"/>
<location filename="../UserInterface.cpp" line="406"/>
<location filename="../UserInterface.cpp" line="377"/>
<location filename="../UserInterface.cpp" line="393"/>
<location filename="../UserInterface.cpp" line="420"/>
<location filename="../UserInterface.cpp" line="425"/>
<source>Open File</source>
<translation>Datei öffnen</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="401"/>
<location filename="../UserInterface.cpp" line="420"/>
<source>Can&apos;t open %1 because of not valid file format</source>
<translation>Kann nicht %1 öffnen weil Dateiformat nicht gültig ist</translation>
</message>

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="fr_FR">
<TS version="2.1" language="fr_FR">
<context>
<name>AboutDialog</name>
<message>
<source>About gta5sync</source>
<translation>À propos de gta5sync</translation>
<translation type="vanished">À propos de gta5sync</translation>
</message>
<message>
<source>&lt;span style=&quot; font-weight:600;&quot;&gt;gta5sync&lt;/span&gt;&lt;br/&gt;
@ -19,7 +19,7 @@ Compiled with Qt %2&lt;br/&gt;
Running with Qt %3&lt;br/&gt;
&lt;br/&gt;
Copyright &amp;copy; &lt;a href=&quot;https://github.com/Syping/&quot;&gt;Syping&lt;/a&gt; 2016&lt;br/&gt;gta5sync is licensed under &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html#content&quot;&gt;GNU GPLv3&lt;/a&gt;</source>
<translation>&lt;span style=&quot; font-weight:600;&quot;&gt;gta5sync&lt;/span&gt;&lt;br/&gt;
<translation type="vanished">&lt;span style=&quot; font-weight:600;&quot;&gt;gta5sync&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
Un outil pour gérer et synchroniser les photos Snapmatic&lt;br/&gt;
et les fichiers de sauvegarde de Grand Theft Auto V&lt;br/&gt;
@ -152,32 +152,32 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation>
<translation>Importer...</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="87"/>
<location filename="../ImportDialog.ui" line="90"/>
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="93"/>
<location filename="../ImportDialog.ui" line="96"/>
<source>&amp;Keep Aspect Ratio</source>
<translation>&amp;Conserver le rapport d&apos;aspect</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="100"/>
<location filename="../ImportDialog.ui" line="103"/>
<source>&amp;Ignore Aspect Ratio</source>
<translation>&amp;Ignorer le rapport d&apos;aspect</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="107"/>
<location filename="../ImportDialog.ui" line="110"/>
<source>&amp;Avatar</source>
<translation>&amp;Avatar</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="145"/>
<location filename="../ImportDialog.ui" line="154"/>
<source>&amp;OK</source>
<translation>&amp;OK</translation>
</message>
<message>
<location filename="../ImportDialog.ui" line="152"/>
<location filename="../ImportDialog.ui" line="167"/>
<source>&amp;Cancel</source>
<translation>A&amp;nnuler</translation>
</message>
@ -452,7 +452,7 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation>
</message>
<message>
<source>All files (**)</source>
<translation>Tous les fichiers (**)</translation>
<translation type="vanished">Tous les fichiers (**)</translation>
</message>
<message>
<location filename="../PictureExport.cpp" line="246"/>
@ -478,7 +478,7 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation>
</message>
<message>
<source>Failed to copy current Snapmatic picture</source>
<translation>Echec de la copie</translation>
<translation type="vanished">Echec de la copie</translation>
</message>
<message>
<location filename="../PictureExport.cpp" line="187"/>
@ -487,17 +487,17 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation>
<translation>Fichier invalide</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="95"/>
<location filename="../PictureDialog.cpp" line="128"/>
<source>Export as &amp;JPG picture...</source>
<translation>Exporter comme image &amp;JPG...</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="96"/>
<location filename="../PictureDialog.cpp" line="129"/>
<source>Export as &amp;GTA Snapmatic...</source>
<translation>Exporter comme &amp;GTA Snapmatic...</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="297"/>
<location filename="../PictureDialog.cpp" line="343"/>
<source>Key 1 - Avatar Preview Mode
Key 2 - Toggle Overlay
Arrow Keys - Navigate</source>
@ -506,19 +506,19 @@ Touche 2 - Activer/désactiver l&apos;overlay
Touches fléchées - Naviguer</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="357"/>
<location filename="../PictureDialog.cpp" line="414"/>
<location filename="../PictureDialog.cpp" line="402"/>
<location filename="../PictureDialog.cpp" line="474"/>
<source>Snapmatic Picture Viewer</source>
<translation>Visionneuse de photo Snapmatic</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="357"/>
<location filename="../PictureDialog.cpp" line="414"/>
<location filename="../PictureDialog.cpp" line="402"/>
<location filename="../PictureDialog.cpp" line="474"/>
<source>Failed at %1</source>
<translation>Echec de %1</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="469"/>
<location filename="../PictureDialog.cpp" line="529"/>
<source>Avatar Preview Mode
Press 1 for Default View</source>
<translation>Mode Aperçu Avatar
@ -526,22 +526,22 @@ Appuyer sur 1 pour le mode par défaut</translation>
</message>
<message>
<source>Avatar Preview Mode&lt;br&gt;Press A for Default View</source>
<translation>Aperçu avatar&lt;br&gt;Appuyer sur A pour la vue par défaut</translation>
<translation type="vanished">Aperçu avatar&lt;br&gt;Appuyer sur A pour la vue par défaut</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="403"/>
<location filename="../PictureDialog.cpp" line="413"/>
<location filename="../PictureDialog.cpp" line="463"/>
<location filename="../PictureDialog.cpp" line="473"/>
<source>No player</source>
<translation>Aucun joueur</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="406"/>
<location filename="../PictureDialog.cpp" line="413"/>
<location filename="../PictureDialog.cpp" line="466"/>
<location filename="../PictureDialog.cpp" line="473"/>
<source>No crew</source>
<translation>Aucun crew</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="413"/>
<location filename="../PictureDialog.cpp" line="473"/>
<source>Unknown Location</source>
<translation>Emplacement inconnu</translation>
</message>
@ -619,9 +619,9 @@ Appuyer sur 1 pour le mode par défaut</translation>
<translation>&amp;Fermer</translation>
</message>
<message>
<location filename="../ExportThread.cpp" line="95"/>
<location filename="../ExportThread.cpp" line="134"/>
<location filename="../ExportThread.cpp" line="155"/>
<location filename="../ExportThread.cpp" line="96"/>
<location filename="../ExportThread.cpp" line="135"/>
<location filename="../ExportThread.cpp" line="156"/>
<source>Export file %1 of %2 files</source>
<translation>Copie du fichier %1 sur %2</translation>
</message>
@ -659,23 +659,23 @@ Appuyer sur 1 pour le mode par défaut</translation>
</message>
<message>
<source>All profile files (SGTA* PGTA*)</source>
<translation>Fichiers de profil GTA (SGTA* PGTA*)</translation>
<translation type="vanished">Fichiers de profil GTA (SGTA* PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="375"/>
<location filename="../UserInterface.cpp" line="316"/>
<location filename="../UserInterface.cpp" line="335"/>
<source>Savegames files (SGTA*)</source>
<translation>Fichiers de sauvegarde GTA (SGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="376"/>
<location filename="../UserInterface.cpp" line="317"/>
<location filename="../UserInterface.cpp" line="336"/>
<source>Snapmatic pictures (PGTA*)</source>
<translation>Photos Snapmatic (PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="378"/>
<location filename="../UserInterface.cpp" line="318"/>
<location filename="../UserInterface.cpp" line="337"/>
<source>All files (**)</source>
<translation>Tous les fichiers (**)</translation>
</message>
@ -697,19 +697,19 @@ Appuyer sur 1 pour le mode par défaut</translation>
<message>
<location filename="../ProfileInterface.cpp" line="465"/>
<location filename="../ProfileInterface.cpp" line="663"/>
<location filename="../UserInterface.cpp" line="406"/>
<location filename="../UserInterface.cpp" line="425"/>
<source>No valid file is selected</source>
<translation>Fichier invalide</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="492"/>
<location filename="../UserInterface.cpp" line="358"/>
<location filename="../UserInterface.cpp" line="377"/>
<source>Failed to read Snapmatic picture</source>
<translation>Impossible d&apos;ouvrir la photo Snapmatic</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="508"/>
<location filename="../UserInterface.cpp" line="374"/>
<location filename="../UserInterface.cpp" line="393"/>
<source>Failed to read Savegame file</source>
<translation>Impossible de lire le fichier de sauvegarde</translation>
</message>
@ -720,7 +720,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
</message>
<message>
<source>Failed to import the Snapmatic picture, file not begin with PGTA</source>
<translation>Impossible d&apos;importer la photo Snapmatic,nom de fichier incorrect (PGTA*)</translation>
<translation type="vanished">Impossible d&apos;importer la photo Snapmatic,nom de fichier incorrect (PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="373"/>
@ -831,13 +831,13 @@ Appuyer sur 1 pour le mode par défaut</translation>
<translation>Impossible de supprimer la sélection</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="314"/>
<location filename="../UserInterface.cpp" line="333"/>
<source>All profile files (*.g5e SGTA* PGTA*)</source>
<translation>Tous les fichiers de profil (*.g5e SGTA* PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="374"/>
<location filename="../UserInterface.cpp" line="315"/>
<location filename="../UserInterface.cpp" line="334"/>
<source>GTA V Export (*.g5e)</source>
<translation>GTA V Export (*.g5e)</translation>
</message>
@ -919,8 +919,8 @@ Appuyer sur 1 pour le mode par défaut</translation>
</message>
<message>
<location filename="../SavegameWidget.ui" line="118"/>
<location filename="../SavegameWidget.cpp" line="132"/>
<location filename="../SavegameWidget.cpp" line="145"/>
<location filename="../SavegameWidget.cpp" line="131"/>
<location filename="../SavegameWidget.cpp" line="144"/>
<source>Delete savegame</source>
<translation>Supprimer la sauvegarde</translation>
</message>
@ -930,7 +930,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
<translation>Supprimer</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="210"/>
<location filename="../ProfileInterface.cpp" line="1107"/>
<source>&amp;Export</source>
<translation>&amp;Exporter</translation>
</message>
@ -973,74 +973,74 @@ Appuyer sur 1 pour le mode par défaut</translation>
<translation>Fichier invalide</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="50"/>
<location filename="../SavegameWidget.cpp" line="49"/>
<source>Export Savegame...</source>
<translation>Exporter la sauvegarde...</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="57"/>
<location filename="../SavegameWidget.cpp" line="56"/>
<source>AUTOSAVE - %1
%2</source>
<translation>SAUVEGARDE AUTO - %1
%2</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="58"/>
<location filename="../SavegameWidget.cpp" line="57"/>
<source>SAVE %3 - %1
%2</source>
<translation>SAUVEGARDE %3 - %1
%2</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="93"/>
<location filename="../SavegameWidget.cpp" line="94"/>
<location filename="../SavegameWidget.cpp" line="95"/>
<source>WRONG FORMAT</source>
<translation>Format invalide</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="118"/>
<location filename="../SavegameWidget.cpp" line="117"/>
<source>UNKNOWN</source>
<translation>Inconnu</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="132"/>
<location filename="../SavegameWidget.cpp" line="131"/>
<source>Are you sure to delete %1 from your savegames?</source>
<translation>Supprimer %1 ?</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="145"/>
<location filename="../SavegameWidget.cpp" line="144"/>
<source>Failed at deleting %1 from your savegames</source>
<translation>Impossible de supprimer %1</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="209"/>
<location filename="../ProfileInterface.cpp" line="1106"/>
<source>&amp;View</source>
<translation>&amp;Voir</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="211"/>
<location filename="../ProfileInterface.cpp" line="1108"/>
<source>&amp;Remove</source>
<translation>&amp;Supprimer</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="215"/>
<location filename="../SavegameWidget.cpp" line="227"/>
<location filename="../ProfileInterface.cpp" line="1112"/>
<location filename="../ProfileInterface.cpp" line="1123"/>
<source>&amp;Select</source>
<translation>&amp;Sélectionner</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="216"/>
<location filename="../ProfileInterface.cpp" line="1113"/>
<source>&amp;Deselect</source>
<translation>&amp;Déselectionner</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="217"/>
<location filename="../SavegameWidget.cpp" line="228"/>
<location filename="../ProfileInterface.cpp" line="1114"/>
<location filename="../ProfileInterface.cpp" line="1124"/>
<source>Select &amp;All</source>
<translation>Sélectionner to&amp;ut</translation>
</message>
<message>
<location filename="../SavegameWidget.cpp" line="221"/>
<location filename="../ProfileInterface.cpp" line="1117"/>
<source>&amp;Deselect All</source>
<translation>&amp;Déselectionner tout</translation>
</message>
@ -1050,7 +1050,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
<message>
<location filename="../SnapmaticEditor.ui" line="14"/>
<location filename="../SnapmaticEditor.ui" line="81"/>
<location filename="../SnapmaticEditor.cpp" line="216"/>
<location filename="../SnapmaticEditor.cpp" line="247"/>
<source>Snapmatic Properties</source>
<translation>Propriétés Snapmatic</translation>
</message>
@ -1084,7 +1084,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
</message>
<message>
<source>Custom</source>
<translation>Personnalisé</translation>
<translation type="vanished">Personnalisé</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="101"/>
@ -1098,39 +1098,80 @@ Appuyer sur 1 pour le mode par défaut</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="125"/>
<location filename="../SnapmaticEditor.cpp" line="297"/>
<source>Snapmatic Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="140"/>
<location filename="../SnapmaticEditor.cpp" line="200"/>
<source>Title: %1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="156"/>
<location filename="../SnapmaticEditor.cpp" line="204"/>
<location filename="../SnapmaticEditor.cpp" line="208"/>
<source>Appropriate: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="169"/>
<source>Extras</source>
<translation>Extras</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="131"/>
<location filename="../SnapmaticEditor.ui" line="175"/>
<source>Qualify as Avatar automatically at apply</source>
<translation>Qualifier comme Avatar</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="144"/>
<location filename="../SnapmaticEditor.ui" line="188"/>
<source>Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture</source>
<translation>Qualifier comme Avatar permet d&apos;utiliser cette image en tant que photo de profil sur le Social Club</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="194"/>
<location filename="../SnapmaticEditor.ui" line="238"/>
<source>&amp;Apply</source>
<translation>A&amp;ppliquer</translation>
</message>
<message>
<location filename="../SnapmaticEditor.ui" line="207"/>
<location filename="../SnapmaticEditor.ui" line="251"/>
<source>&amp;Cancel</source>
<translation>A&amp;nnuler</translation>
</message>
<message>
<location filename="../SnapmaticEditor.cpp" line="216"/>
<location filename="../SnapmaticEditor.cpp" line="199"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SnapmaticEditor.cpp" line="204"/>
<source>Yes</source>
<comment>Yes, should work fine</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SnapmaticEditor.cpp" line="208"/>
<source>No</source>
<comment>No, could lead to issues</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../SnapmaticEditor.cpp" line="247"/>
<source>Patching of Snapmatic Properties failed because of I/O Error</source>
<translation>La modification des propriétés Snapmatic a échoué : erreur d&apos;entrée/sortie</translation>
</message>
<message>
<location filename="../SnapmaticEditor.cpp" line="297"/>
<source>New Snapmatic title:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SnapmaticPicture</name>
<message>
<location filename="../SnapmaticPicture.cpp" line="349"/>
<location filename="../SnapmaticPicture.cpp" line="370"/>
<source>PHOTO - %1</source>
<translation>PHOTO - %1</translation>
</message>
@ -1179,8 +1220,8 @@ Appuyer sur 1 pour le mode par défaut</translation>
</message>
<message>
<location filename="../SnapmaticWidget.ui" line="149"/>
<location filename="../SnapmaticWidget.cpp" line="140"/>
<location filename="../SnapmaticWidget.cpp" line="153"/>
<location filename="../SnapmaticWidget.cpp" line="150"/>
<location filename="../SnapmaticWidget.cpp" line="163"/>
<source>Delete picture</source>
<translation>Supprimer la photo</translation>
</message>
@ -1190,79 +1231,79 @@ Appuyer sur 1 pour le mode par défaut</translation>
<translation>Supprimer</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="140"/>
<location filename="../SnapmaticWidget.cpp" line="150"/>
<source>Are you sure to delete %1 from your Snapmatic pictures?</source>
<translation>Supprimer %1 ?</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="153"/>
<location filename="../SnapmaticWidget.cpp" line="163"/>
<source>Failed at deleting %1 from your Snapmatic pictures</source>
<translation>Impossible de supprimer %1</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="205"/>
<location filename="../ProfileInterface.cpp" line="1065"/>
<source>Edi&amp;t</source>
<translation>Édi&amp;ter</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="208"/>
<location filename="../ProfileInterface.cpp" line="1068"/>
<source>Show &amp;In-game</source>
<translation>&amp;Visible en jeu</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="212"/>
<location filename="../ProfileInterface.cpp" line="1072"/>
<source>Hide &amp;In-game</source>
<translation>&amp;Invisible en jeu</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="214"/>
<location filename="../ProfileInterface.cpp" line="1074"/>
<source>&amp;Edit Properties...</source>
<translation>Modifier les &amp;propriétés...</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="215"/>
<location filename="../ProfileInterface.cpp" line="1075"/>
<source>&amp;Export</source>
<translation>&amp;Exporter</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="216"/>
<location filename="../ProfileInterface.cpp" line="1076"/>
<source>Export as &amp;JPG picture...</source>
<translation>Exporter comme image &amp;JPG...</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="217"/>
<location filename="../ProfileInterface.cpp" line="1077"/>
<source>Export as &amp;GTA Snapmatic...</source>
<translation>Exporter comme &amp;GTA Snapmatic...</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="218"/>
<location filename="../ProfileInterface.cpp" line="1078"/>
<source>&amp;View</source>
<translation>&amp;Voir</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="221"/>
<location filename="../ProfileInterface.cpp" line="1081"/>
<source>&amp;Remove</source>
<translation>S&amp;upprimer</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="225"/>
<location filename="../SnapmaticWidget.cpp" line="237"/>
<location filename="../ProfileInterface.cpp" line="1085"/>
<location filename="../ProfileInterface.cpp" line="1096"/>
<source>&amp;Select</source>
<translation>&amp;Sélectionner</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="226"/>
<location filename="../ProfileInterface.cpp" line="1086"/>
<source>&amp;Deselect</source>
<translation>&amp;Déselectionner</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="227"/>
<location filename="../SnapmaticWidget.cpp" line="238"/>
<location filename="../ProfileInterface.cpp" line="1087"/>
<location filename="../ProfileInterface.cpp" line="1097"/>
<source>Select &amp;All</source>
<translation>Sélectionner &amp;tout</translation>
</message>
<message>
<location filename="../SnapmaticWidget.cpp" line="231"/>
<location filename="../ProfileInterface.cpp" line="1090"/>
<source>&amp;Deselect All</source>
<translation>&amp;Déselectionner tout</translation>
</message>
@ -1271,7 +1312,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
<name>UserInterface</name>
<message>
<source>gta5sync - %1</source>
<translation>gta5sync - %1</translation>
<translation type="vanished">gta5sync - %1</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="74"/>
@ -1315,7 +1356,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
</message>
<message>
<source>&amp;About gta5sync</source>
<translation>&amp;À propos de gta5sync</translation>
<translation type="vanished">&amp;À propos de gta5sync</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="223"/>
@ -1323,126 +1364,126 @@ Appuyer sur 1 pour le mode par défaut</translation>
<translation>Ctrl+P</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="232"/>
<location filename="../UserInterface.ui" line="228"/>
<source>&amp;Exit</source>
<translation>&amp;Quitter</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="235"/>
<location filename="../UserInterface.ui" line="231"/>
<source>Exit</source>
<translation>Quitter</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="238"/>
<location filename="../UserInterface.ui" line="234"/>
<source>Ctrl+Q</source>
<translation>Ctrl+Q</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="243"/>
<location filename="../UserInterface.ui" line="239"/>
<source>Close &amp;Profile</source>
<translation>Fermer le &amp;profil</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="246"/>
<location filename="../UserInterface.ui" line="242"/>
<source>Ctrl+End</source>
<translation>Ctrl + Fin</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="255"/>
<location filename="../UserInterface.ui" line="247"/>
<source>&amp;Settings</source>
<translation>Paramètre&amp;s</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="258"/>
<location filename="../UserInterface.ui" line="250"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="263"/>
<location filename="../UserInterface.ui" line="255"/>
<source>Select &amp;All</source>
<translation>Sélectionner &amp;tout</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="266"/>
<location filename="../UserInterface.ui" line="258"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="271"/>
<location filename="../UserInterface.ui" line="263"/>
<source>&amp;Deselect All</source>
<translation>&amp;Désélectionner tout</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="274"/>
<location filename="../UserInterface.ui" line="266"/>
<source>Ctrl+D</source>
<translation>Ctrl+D</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="279"/>
<location filename="../UserInterface.ui" line="271"/>
<source>&amp;Export selected...</source>
<translation>&amp;Exporter la sélection...</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="282"/>
<location filename="../UserInterface.ui" line="274"/>
<source>Ctrl+E</source>
<translation>Ctrl+E</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="287"/>
<location filename="../UserInterface.ui" line="279"/>
<source>&amp;Remove selected</source>
<translation>&amp;Supprimer la sélection</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="290"/>
<location filename="../UserInterface.ui" line="282"/>
<source>Ctrl+Del</source>
<translation>Ctrl+Del</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="295"/>
<location filename="../UserInterface.ui" line="287"/>
<source>&amp;Import files...</source>
<translation>&amp;Importer...</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="298"/>
<location filename="../UserInterface.ui" line="290"/>
<source>Ctrl+I</source>
<translation>Ctrl+I</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="303"/>
<location filename="../UserInterface.ui" line="295"/>
<source>&amp;Open File...</source>
<translation>&amp;Ouvrir...</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="306"/>
<location filename="../UserInterface.ui" line="298"/>
<source>Ctrl+O</source>
<translation>Ctrl+O</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="311"/>
<location filename="../UserInterface.cpp" line="131"/>
<location filename="../UserInterface.ui" line="303"/>
<location filename="../UserInterface.cpp" line="144"/>
<source>Select &amp;GTA V Folder...</source>
<translation>Modifier l&apos;emplacement de &amp;GTA V...</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="314"/>
<location filename="../UserInterface.ui" line="306"/>
<location filename="../OptionsDialog.cpp" line="444"/>
<location filename="../UserInterface.cpp" line="80"/>
<location filename="../UserInterface.cpp" line="455"/>
<location filename="../UserInterface.cpp" line="93"/>
<location filename="../UserInterface.cpp" line="474"/>
<source>Select GTA V Folder...</source>
<translation>Modifier l&apos;emplacement de GTA V...</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="317"/>
<location filename="../UserInterface.ui" line="309"/>
<source>Ctrl+G</source>
<translation>Ctrl+G</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="322"/>
<location filename="../UserInterface.ui" line="314"/>
<source>Show In-gam&amp;e</source>
<translation>Rendre visible &amp;en jeu</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="325"/>
<location filename="../UserInterface.ui" line="317"/>
<source>Shift+E</source>
<translation>Shift+E</translation>
</message>
@ -1452,48 +1493,48 @@ Appuyer sur 1 pour le mode par défaut</translation>
<translation>&amp;Visibilité de la sélection</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="330"/>
<location filename="../UserInterface.ui" line="322"/>
<source>Hi&amp;de In-game</source>
<translation>Ren&amp;dre invisible en jeu</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="333"/>
<location filename="../UserInterface.ui" line="325"/>
<source>Shift+D</source>
<translation>Shift+D</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="20"/>
<location filename="../UserInterface.cpp" line="59"/>
<location filename="../UserInterface.cpp" line="60"/>
<source>%2 - %1</source>
<translation>%2 - %1</translation>
</message>
<message>
<location filename="../UserInterface.ui" line="220"/>
<location filename="../UserInterface.cpp" line="58"/>
<location filename="../UserInterface.cpp" line="59"/>
<source>&amp;About %1</source>
<translation>&amp;À propos de %1</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="61"/>
<location filename="../UserInterface.cpp" line="201"/>
<location filename="../UserInterface.cpp" line="62"/>
<location filename="../UserInterface.cpp" line="214"/>
<source>Select Profile</source>
<translation>Sélectionner un profil</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="311"/>
<location filename="../UserInterface.cpp" line="330"/>
<source>Open File...</source>
<translation>Ouvrir...</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="358"/>
<location filename="../UserInterface.cpp" line="374"/>
<location filename="../UserInterface.cpp" line="401"/>
<location filename="../UserInterface.cpp" line="406"/>
<location filename="../UserInterface.cpp" line="377"/>
<location filename="../UserInterface.cpp" line="393"/>
<location filename="../UserInterface.cpp" line="420"/>
<location filename="../UserInterface.cpp" line="425"/>
<source>Open File</source>
<translation>Ouvrir</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="401"/>
<location filename="../UserInterface.cpp" line="420"/>
<source>Can&apos;t open %1 because of not valid file format</source>
<translation>Impossible d&apos;ouvrir %1, format invalide</translation>
</message>

View File

@ -1,6 +1,6 @@
/*****************************************************************************
* gta5sync GRAND THEFT AUTO V SYNC
* Copyright (C) 2016 Syping
* Copyright (C) 2016-2017 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,6 +17,7 @@
*****************************************************************************/
#include "UiModLabel.h"
#include <QPaintEvent>
#include <QMouseEvent>
UiModLabel::UiModLabel(const QString &text, QWidget *parent) : QLabel(parent)
@ -37,6 +38,12 @@ UiModLabel::~UiModLabel()
{
}
void UiModLabel::paintEvent(QPaintEvent *ev)
{
QLabel::paintEvent(ev);
emit labelPainted();
}
void UiModLabel::mouseMoveEvent(QMouseEvent *ev)
{
QLabel::mouseMoveEvent(ev);

View File

@ -1,6 +1,6 @@
/*****************************************************************************
* gta5sync GRAND THEFT AUTO V SYNC
* Copyright (C) 2016 Syping
* Copyright (C) 2016-2017 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
@ -38,6 +38,7 @@ protected:
void mousePressEvent(QMouseEvent *ev);
void mouseReleaseEvent(QMouseEvent *ev);
void mouseDoubleClickEvent(QMouseEvent *ev);
void paintEvent(QPaintEvent *ev);
void resizeEvent(QResizeEvent *ev);
signals:
@ -45,6 +46,7 @@ signals:
void mousePressed(Qt::MouseButton button);
void mouseReleased(Qt::MouseButton button);
void mouseDoubleClicked(Qt::MouseButton button);
void labelPainted();
void resized(QSize newSize);
};