diff --git a/CrewDatabase.cpp b/CrewDatabase.cpp index c4fb1f1..11e3a97 100755 --- a/CrewDatabase.cpp +++ b/CrewDatabase.cpp @@ -60,7 +60,9 @@ QStringList CrewDatabase::getCrews() QString CrewDatabase::getCrewName(int crewID) { - return crewDB->value(QString::number(crewID), crewID).toString(); + QString crewStr = crewDB->value(QString::number(crewID), crewID).toString(); + if (crewID == 0) crewStr = tr("No Crew", ""); + return crewStr; } void CrewDatabase::setCrewName(int crewID, QString crewName) diff --git a/ExportThread.cpp b/ExportThread.cpp index a2437bd..5c39bc0 100755 --- a/ExportThread.cpp +++ b/ExportThread.cpp @@ -137,7 +137,7 @@ void ExportThread::run() QString exportFilePath = exportDirectory + "/" + exportFileName; if (QFile::exists(exportFilePath)) {QFile::remove(exportFilePath);} - if (!picture->exportPicture(exportDirectory + "/" + exportFileName, true)) + if (!picture->exportPicture(exportDirectory + "/" + exportFileName, "G5E")) { failedCopyPictures.append(exportFileName); } diff --git a/PictureExport.cpp b/PictureExport.cpp index 3a25d26..ad20e9a 100755 --- a/PictureExport.cpp +++ b/PictureExport.cpp @@ -259,7 +259,7 @@ fileDialogPreSave: //Work? if (selectedFile.right(4) == ".g5e") { - bool isExported = picture->exportPicture(selectedFile, true); + bool isExported = picture->exportPicture(selectedFile, "G5E"); if (!isExported) { QMessageBox::warning(parent, PictureDialog::tr("Export as GTA Snapmatic"), PictureDialog::tr("Failed to export current Snapmatic picture")); @@ -280,7 +280,7 @@ fileDialogPreSave: //Work? { selectedFile.remove(".rem"); } - bool isCopied = picture->exportPicture(selectedFile, false); + bool isCopied = picture->exportPicture(selectedFile, "PGTA"); if (!isCopied) { QMessageBox::warning(parent, PictureDialog::tr("Export as GTA Snapmatic"), PictureDialog::tr("Failed to export current Snapmatic picture")); diff --git a/ProfileInterface.cpp b/ProfileInterface.cpp index 4cb0929..8a74524 100755 --- a/ProfileInterface.cpp +++ b/ProfileInterface.cpp @@ -701,7 +701,7 @@ bool ProfileInterface::importSnapmaticPicture(SnapmaticPicture *picture, bool wa if (warn) QMessageBox::warning(this, tr("Import"), tr("Failed to import the Snapmatic picture, the picture is already in the game")); return false; } - else if (picture->exportPicture(profileFolder + QDir::separator() + adjustedFileName, false)) + else if (picture->exportPicture(profileFolder + QDir::separator() + adjustedFileName, "PGTA")) { picture->setPicFilePath(profileFolder + QDir::separator() + adjustedFileName); pictureLoaded(picture, true); diff --git a/ProfileInterface.ui b/ProfileInterface.ui index 1186939..0e33355 100755 --- a/ProfileInterface.ui +++ b/ProfileInterface.ui @@ -27,7 +27,7 @@ 0 - 0 + 9 @@ -108,8 +108,8 @@ 0 0 - 98 - 28 + 398 + 256 @@ -160,9 +160,6 @@ 9 - - 9 - diff --git a/SavegameWidget.cpp b/SavegameWidget.cpp index e7940d3..200713d 100755 --- a/SavegameWidget.cpp +++ b/SavegameWidget.cpp @@ -151,9 +151,13 @@ void SavegameWidget::on_cmdView_clicked() SavegameDialog *savegameDialog = new SavegameDialog(this); savegameDialog->setSavegameData(sgdata, sgdPath, true); savegameDialog->setModal(true); +#ifdef Q_OS_ANDROID + // Android ... + savegameDialog->showMaximized(); +#else savegameDialog->show(); +#endif savegameDialog->exec(); - savegameDialog->deleteLater(); delete savegameDialog; } diff --git a/SnapmaticEditor.cpp b/SnapmaticEditor.cpp index 2daf948..b4cbb0a 100644 --- a/SnapmaticEditor.cpp +++ b/SnapmaticEditor.cpp @@ -26,14 +26,11 @@ #include #include -SnapmaticEditor::SnapmaticEditor(QWidget *parent) : - QDialog(parent), +SnapmaticEditor::SnapmaticEditor(CrewDatabase *crewDB, QWidget *parent) : + QDialog(parent), crewDB(crewDB), ui(new Ui::SnapmaticEditor) { ui->setupUi(this); - ui->cbSelfie->setVisible(false); - ui->cbMugshot->setVisible(false); - ui->cbEditor->setVisible(false); ui->cmdApply->setDefault(true); if (QIcon::hasThemeIcon("dialog-apply")) @@ -54,63 +51,45 @@ SnapmaticEditor::~SnapmaticEditor() delete ui; } -void SnapmaticEditor::on_cbSelfie_toggled(bool checked) +void SnapmaticEditor::selfie_toggled(bool checked) { if (checked) { - ui->cbMugshot->setEnabled(false); - ui->cbEditor->setEnabled(false); + isSelfie = true; } - else if (!ui->cbDirector->isChecked()) + else { - ui->cbMugshot->setEnabled(true); - ui->cbEditor->setEnabled(true); + isSelfie = false; } } -void SnapmaticEditor::on_cbMugshot_toggled(bool checked) +void SnapmaticEditor::mugshot_toggled(bool checked) { if (checked) { - ui->cbSelfie->setEnabled(false); - ui->cbEditor->setEnabled(false); + isMugshot = true; ui->cbDirector->setEnabled(false); + ui->cbDirector->setChecked(false); } else { - ui->cbSelfie->setEnabled(true); - ui->cbEditor->setEnabled(true); + isMugshot = false; ui->cbDirector->setEnabled(true); } } -void SnapmaticEditor::on_cbDirector_toggled(bool checked) +void SnapmaticEditor::editor_toggled(bool checked) { if (checked) { - ui->cbMugshot->setEnabled(false); - ui->cbEditor->setEnabled(false); - } - else if (!ui->cbSelfie->isChecked()) - { - ui->cbMugshot->setEnabled(true); - ui->cbEditor->setEnabled(true); - } -} - -void SnapmaticEditor::on_cbEditor_toggled(bool checked) -{ - if (checked) - { - ui->cbSelfie->setEnabled(false); - ui->cbMugshot->setEnabled(false); + isEditor = true; ui->cbDirector->setEnabled(false); + ui->cbDirector->setChecked(false); } else { - ui->cbSelfie->setEnabled(true); - ui->cbMugshot->setEnabled(true); + isEditor = false; ui->cbDirector->setEnabled(true); } } @@ -119,9 +98,9 @@ void SnapmaticEditor::on_rbSelfie_toggled(bool checked) { if (checked) { - ui->cbMugshot->setChecked(false); - ui->cbEditor->setChecked(false); - ui->cbSelfie->setChecked(true); + mugshot_toggled(false); + editor_toggled(false); + selfie_toggled(true); } } @@ -129,10 +108,9 @@ void SnapmaticEditor::on_rbMugshot_toggled(bool checked) { if (checked) { - ui->cbSelfie->setChecked(false); - ui->cbEditor->setChecked(false); - ui->cbDirector->setChecked(false); - ui->cbMugshot->setChecked(true); + selfie_toggled(false); + editor_toggled(false); + mugshot_toggled(true); } } @@ -140,10 +118,9 @@ void SnapmaticEditor::on_rbEditor_toggled(bool checked) { if (checked) { - ui->cbSelfie->setChecked(false); - ui->cbMugshot->setChecked(false); - ui->cbDirector->setChecked(false); - ui->cbEditor->setChecked(true); + selfie_toggled(false); + mugshot_toggled(false); + editor_toggled(true); } } @@ -151,9 +128,9 @@ void SnapmaticEditor::on_rbCustom_toggled(bool checked) { if (checked) { - ui->cbSelfie->setChecked(false); - ui->cbMugshot->setChecked(false); - ui->cbEditor->setChecked(false); + selfie_toggled(false); + mugshot_toggled(false); + editor_toggled(false); } } @@ -162,20 +139,21 @@ void SnapmaticEditor::setSnapmaticPicture(SnapmaticPicture *picture) smpic = picture; localSpJson = smpic->getSnapmaticProperties(); ui->rbCustom->setChecked(true); - ui->cbSelfie->setChecked(localSpJson.isSelfie); - ui->cbMugshot->setChecked(localSpJson.isMug); - ui->cbEditor->setChecked(localSpJson.isFromRSEditor); + crewID = localSpJson.crewID; + isSelfie = localSpJson.isSelfie; + isMugshot = localSpJson.isMug; + isEditor = localSpJson.isFromRSEditor; ui->cbDirector->setChecked(localSpJson.isFromDirector); ui->cbMeme->setChecked(localSpJson.isMeme); - if (ui->cbSelfie->isChecked()) + if (isSelfie) { ui->rbSelfie->setChecked(true); } - else if (ui->cbMugshot->isChecked()) + else if (isMugshot) { ui->rbMugshot->setChecked(true); } - else if (ui->cbEditor->isChecked()) + else if (isEditor) { ui->rbEditor->setChecked(true); } @@ -183,6 +161,7 @@ void SnapmaticEditor::setSnapmaticPicture(SnapmaticPicture *picture) { ui->rbCustom->setChecked(true); } + setSnapmaticCrew(returnCrewName(crewID)); setSnapmaticTitle(picture->getPictureTitle()); } @@ -209,6 +188,18 @@ void SnapmaticEditor::setSnapmaticTitle(const QString &title) } } +void SnapmaticEditor::setSnapmaticCrew(const QString &crew) +{ + QString editStr = QString("%1").arg(tr("Edit")); + QString crewStr = tr("Crew: %1 (%2)").arg(StringParser::escapeString(crew), editStr); + ui->labCrew->setText(crewStr); +} + +QString SnapmaticEditor::returnCrewName(int crewID_) +{ + return crewDB->getCrewName(crewID_); +} + void SnapmaticEditor::on_cmdCancel_clicked() { close(); @@ -220,9 +211,10 @@ void SnapmaticEditor::on_cmdApply_clicked() { qualifyAvatar(); } - localSpJson.isSelfie = ui->cbSelfie->isChecked(); - localSpJson.isMug = ui->cbMugshot->isChecked(); - localSpJson.isFromRSEditor = ui->cbEditor->isChecked(); + localSpJson.crewID = crewID; + localSpJson.isSelfie = isSelfie; + localSpJson.isMug = isMugshot; + localSpJson.isFromRSEditor = isEditor; localSpJson.isFromDirector = ui->cbDirector->isChecked(); localSpJson.isMeme = ui->cbMeme->isChecked(); if (smpic) @@ -301,3 +293,38 @@ void SnapmaticEditor::on_labTitle_linkActivated(const QString &link) } } } + +void SnapmaticEditor::on_labCrew_linkActivated(const QString &link) +{ + if (link == "g5e://editcrew") + { + bool ok; + int indexNum = 0; + QStringList itemList; + QStringList crewList = crewDB->getCrews(); + crewList.sort(); + foreach(const QString &crew, crewList) + { + itemList.append(QString("%1 (%2)").arg(crew, returnCrewName(crew.toInt()))); + } + if (crewList.contains(QString::number(crewID))) + { + indexNum = crewList.indexOf(QRegExp(QString::number(crewID))); + } + QString newCrew = QInputDialog::getItem(this, tr("Snapmatic Crew"), tr("New Snapmatic crew:"), itemList, indexNum, true, &ok, windowFlags()); + if (ok && !newCrew.isEmpty()) + { + if (newCrew.contains(" ")) newCrew = newCrew.split(" ").at(0); + if (newCrew.length() > 10) return; + foreach (const QChar &crewChar, newCrew) + { + if (!crewChar.isNumber()) + { + return; + } + } + crewID = newCrew.toInt(); + setSnapmaticCrew(returnCrewName(crewID)); + } + } +} diff --git a/SnapmaticEditor.h b/SnapmaticEditor.h index 4a2d6f4..d2f41ee 100644 --- a/SnapmaticEditor.h +++ b/SnapmaticEditor.h @@ -20,6 +20,7 @@ #define SNAPMATICEDITOR_H #include +#include "CrewDatabase.h" #include "SnapmaticPicture.h" namespace Ui { @@ -31,16 +32,14 @@ class SnapmaticEditor : public QDialog Q_OBJECT public: - explicit SnapmaticEditor(QWidget *parent = 0); + explicit SnapmaticEditor(CrewDatabase *crewDB, QWidget *parent = 0); void setSnapmaticPicture(SnapmaticPicture *picture); void setSnapmaticTitle(const QString &title); + void setSnapmaticCrew(const QString &crew = ""); + QString returnCrewName(int crewID); ~SnapmaticEditor(); private slots: - void on_cbSelfie_toggled(bool checked); - void on_cbMugshot_toggled(bool checked); - void on_cbDirector_toggled(bool checked); - void on_cbEditor_toggled(bool checked); void on_rbSelfie_toggled(bool checked); void on_rbMugshot_toggled(bool checked); void on_rbEditor_toggled(bool checked); @@ -49,12 +48,21 @@ private slots: void on_cmdApply_clicked(); void on_cbQualify_toggled(bool checked); void on_labTitle_linkActivated(const QString &link); + void on_labCrew_linkActivated(const QString &link); private: + CrewDatabase *crewDB; Ui::SnapmaticEditor *ui; SnapmaticProperties localSpJson; SnapmaticPicture *smpic; QString snapmaticTitle; + int crewID; + bool isSelfie; + bool isMugshot; + bool isEditor; + void selfie_toggled(bool checked); + void mugshot_toggled(bool checked); + void editor_toggled(bool checked); void qualifyAvatar(); }; diff --git a/SnapmaticEditor.ui b/SnapmaticEditor.ui index 0e361ff..46ffa60 100644 --- a/SnapmaticEditor.ui +++ b/SnapmaticEditor.ui @@ -7,7 +7,7 @@ 0 0 400 - 350 + 362 @@ -81,13 +81,6 @@ Snapmatic Properties - - - - Editor - - - @@ -102,37 +95,30 @@ - - - - Selfie - - - - - - - Mugshot - - - - + - Snapmatic Title + Snapmatic Values - - - - 0 - 0 - + + + Qt::NoContextMenu + + Crew: %1 (%2) + + + true + + + + + Qt::NoContextMenu @@ -146,12 +132,6 @@ - - - 0 - 0 - - Appropriate: %1 diff --git a/SnapmaticPicture.cpp b/SnapmaticPicture.cpp index ec7c737..b13aff0 100755 --- a/SnapmaticPicture.cpp +++ b/SnapmaticPicture.cpp @@ -69,6 +69,7 @@ void SnapmaticPicture::reset() // INIT PIC rawPicContent = ""; cachePicture = QImage(); + jpegRawContentSizeE = 0; jpegRawContentSize = 0; picExportFileName = ""; isCustomFormat = 0; @@ -105,7 +106,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo if (!picFile->open(QFile::ReadOnly)) { lastStep = "1;/1,OpenFile," + StringParser::convertDrawStringForLog(picFilePath); - picFile->deleteLater(); delete picFile; return false; } @@ -190,7 +190,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo { lastStep = "2;/3,ReadingFile," + StringParser::convertDrawStringForLog(picFilePath) + ",1,NOHEADER"; picStream->close(); - picStream->deleteLater(); delete picStream; return false; } @@ -202,7 +201,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo { lastStep = "2;/3,ReadingFile," + StringParser::convertDrawStringForLog(picFilePath) + ",2,NOHEADER"; picStream->close(); - picStream->deleteLater(); delete picStream; return false; } @@ -214,7 +212,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo { lastStep = "2;/3,ReadingFile," + StringParser::convertDrawStringForLog(picFilePath) + ",2,NOJPEG"; picStream->close(); - picStream->deleteLater(); delete picStream; return false; } @@ -224,7 +221,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo { lastStep = "2;/3,ReadingFile," + StringParser::convertDrawStringForLog(picFilePath) + ",2,NOPIC"; picStream->close(); - picStream->deleteLater(); delete picStream; return false; } @@ -232,6 +228,7 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo if (jpegRawContent.contains(QByteArray::fromHex("FFD9"))) { int jpegRawContentSizeT = jpegRawContent.indexOf(QByteArray::fromHex("FFD9")) + 2; + jpegRawContentSizeE = jpegRawContentSizeT; jpegRawContentSize = jpegRawContentSizeT; if (jpegRawContent.contains(QByteArray::fromHex("FF454F49"))) { @@ -267,7 +264,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo { lastStep = "2;/3,ReadingFile," + StringParser::convertDrawStringForLog(picFilePath) + ",3,NOJSON"; picStream->close(); - picStream->deleteLater(); delete picStream; return false; } @@ -275,7 +271,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo { lastStep = "2;/3,ReadingFile," + StringParser::convertDrawStringForLog(picFilePath) + ",3,CTJSON"; picStream->close(); - picStream->deleteLater(); delete picStream; return false; } @@ -287,7 +282,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo { lastStep = "2;/3,ReadingFile," + StringParser::convertDrawStringForLog(picFilePath) + ",4,NOTITL"; picStream->close(); - picStream->deleteLater(); delete picStream; return false; } @@ -295,7 +289,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo { lastStep = "2;/3,ReadingFile," + StringParser::convertDrawStringForLog(picFilePath) + ",4,CTTITL"; picStream->close(); - picStream->deleteLater(); delete picStream; return false; } @@ -306,7 +299,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo { lastStep = "2;/3,ReadingFile," + StringParser::convertDrawStringForLog(picFilePath) + ",5,NODESC"; picStream->close(); - picStream->deleteLater(); delete picStream; return picOk; } @@ -314,7 +306,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo { lastStep = "2;/3,ReadingFile," + StringParser::convertDrawStringForLog(picFilePath) + ",5,CTDESC"; picStream->close(); - picStream->deleteLater(); delete picStream; return false; } @@ -324,7 +315,6 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo updateStrings(); picStream->close(); - picStream->deleteLater(); delete picStream; if (!writeEnabled) { rawPicContent.clear(); } return picOk; @@ -577,7 +567,6 @@ QImage SnapmaticPicture::getImage() if (!picFile->open(QFile::ReadOnly)) { lastStep = "1;/1,OpenFile," + StringParser::convertDrawStringForLog(picFilePath); - picFile->deleteLater(); delete picFile; return QImage(0, 0, QImage::Format_RGB888); } @@ -766,19 +755,12 @@ bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties newSpJson) // FILE MANAGEMENT -bool SnapmaticPicture::exportPicture(const QString &fileName, bool customFormat) +bool SnapmaticPicture::exportPicture(const QString &fileName, const QString format) { QFile *picFile = new QFile(fileName); if (picFile->open(QIODevice::WriteOnly)) { - if (!customFormat) - { - // Classic straight export - picFile->write(rawPicContent); - picFile->close(); - picFile->deleteLater(); - } - else + if (format == "G5E") { // Modern compressed export QByteArray stockFileNameUTF8 = picFileName.toUtf8(); @@ -801,7 +783,31 @@ bool SnapmaticPicture::exportPicture(const QString &fileName, bool customFormat) picFile->write("COM"); // Before Compressed picFile->write(qCompress(rawPicContent, 9)); // Compressed Snapmatic picFile->close(); - picFile->deleteLater(); + delete picFile; + } + else if (format == "JPG") + { + // JPEG export + QBuffer snapmaticStream(&rawPicContent); + snapmaticStream.open(QIODevice::ReadOnly); + if (snapmaticStream.seek(jpegStreamEditorBegin)) + { + QByteArray jpegRawContent = snapmaticStream.read(jpegPicStreamLength); + if (jpegRawContentSizeE != 0) + { + jpegRawContent = jpegRawContent.left(jpegRawContentSizeE); + } + picFile->write(jpegRawContent); + } + picFile->close(); + delete picFile; + } + else + { + // Classic straight export + picFile->write(rawPicContent); + picFile->close(); + delete picFile; } return true; } diff --git a/SnapmaticPicture.h b/SnapmaticPicture.h index 37d8880..6567dad 100755 --- a/SnapmaticPicture.h +++ b/SnapmaticPicture.h @@ -75,7 +75,7 @@ public: void emitUpdate(); // FILE MANAGEMENT - bool exportPicture(const QString &fileName, bool customFormat = false); + bool exportPicture(const QString &fileName, const QString format = "PGTA"); void setPicFileName(const QString &picFileName); void setPicFilePath(const QString &picFilePath); bool deletePicFile(); @@ -122,6 +122,7 @@ private: bool cacheEnabled; bool isCustomFormat; int jpegRawContentSize; + int jpegRawContentSizeE; // PICTURE STREAM QByteArray rawPicContent; diff --git a/SnapmaticWidget.cpp b/SnapmaticWidget.cpp index c9fdc97..4f28c0c 100755 --- a/SnapmaticWidget.cpp +++ b/SnapmaticWidget.cpp @@ -125,11 +125,16 @@ void SnapmaticWidget::on_cmdView_clicked() if (navigationBar) picDialog->addPreviousNextButtons(); // show picture dialog +#ifdef Q_OS_ANDROID + // Android ... + picDialog->showMaximized(); +#else picDialog->show(); if (navigationBar) picDialog->stylizeDialog(); //picDialog->adaptNewDialogSize(); picDialog->setMinimumSize(picDialog->size()); picDialog->setMaximumSize(picDialog->size()); +#endif picDialog->exec(); delete picDialog; } @@ -283,7 +288,7 @@ void SnapmaticWidget::makePictureVisibleSlot() void SnapmaticWidget::editSnapmaticProperties() { - SnapmaticEditor *snapmaticEditor = new SnapmaticEditor(this); + SnapmaticEditor *snapmaticEditor = new SnapmaticEditor(crewDB, this); snapmaticEditor->setWindowFlags(snapmaticEditor->windowFlags()^Qt::WindowContextHelpButtonHint); snapmaticEditor->setSnapmaticPicture(smpic); snapmaticEditor->setModal(true); diff --git a/StringParser.cpp b/StringParser.cpp index 85ed417..ec55853 100755 --- a/StringParser.cpp +++ b/StringParser.cpp @@ -19,7 +19,9 @@ #include "StringParser.h" #include "config.h" #include +#ifndef GTA5VIEW_CMD #include +#endif #include #include #include @@ -52,6 +54,7 @@ QString StringParser::convertLogStringForDraw(const QString &inputStr) return outputStr.replace("&c;",",").replace("&u;","&"); } +#ifndef GTA5VIEW_CMD QString StringParser::convertBuildedString(const QString &buildedStr) { QString outputStr = buildedStr; @@ -61,6 +64,7 @@ QString StringParser::convertBuildedString(const QString &buildedStr) outputStr.replace("$SEPARATOR", QDir::separator()); return outputStr; } +#endif QString StringParser::escapeString(const QString &toEscape) { diff --git a/StringParser.h b/StringParser.h index 3815a34..a9505f6 100755 --- a/StringParser.h +++ b/StringParser.h @@ -29,7 +29,9 @@ public: static QString parseTitleString(const QByteArray &commitBytes, int maxLength); static QString convertDrawStringForLog(const QString &inputStr); static QString convertLogStringForDraw(const QString &inputStr); +#ifndef GTA5VIEW_CMD static QString convertBuildedString(const QString &buildedStr); +#endif static QString escapeString(const QString &toEscape); }; diff --git a/UserInterface.cpp b/UserInterface.cpp index 0c51f88..d546bfd 100755 --- a/UserInterface.cpp +++ b/UserInterface.cpp @@ -68,13 +68,13 @@ UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, D } if (QIcon::hasThemeIcon("preferences-system")) { -#ifndef Q_WS_MAC // Setting icon for preferences/settings/options lead to a crash in Mac OS X +#ifndef Q_OS_MACOS // Setting icon for preferences/settings/options lead to a crash in Mac OS X ui->actionOptions->setIcon(QIcon::fromTheme("preferences-system")); #endif } if (QIcon::hasThemeIcon("application-exit")) { -#ifndef Q_WS_MAC // Setting icon for exit/quit lead to a crash in Mac OS X +#ifndef Q_OS_MACOS // Setting icon for exit/quit lead to a crash in Mac OS X ui->actionExit->setIcon(QIcon::fromTheme("application-exit")); #endif } @@ -249,7 +249,12 @@ void UserInterface::on_actionAbout_gta5sync_triggered() AboutDialog *aboutDialog = new AboutDialog(this); aboutDialog->setWindowIcon(windowIcon()); aboutDialog->setModal(true); +#ifdef Q_OS_ANDROID + // Android ... + aboutDialog->showMaximized(); +#else aboutDialog->show(); +#endif aboutDialog->exec(); delete aboutDialog; } @@ -300,7 +305,12 @@ void UserInterface::on_actionOptions_triggered() QObject::connect(optionsDialog, SIGNAL(settingsApplied(int, QString)), this, SLOT(settingsApplied(int, QString))); optionsDialog->setModal(true); +#ifdef Q_OS_ANDROID + // Android ... + optionsDialog->showMaximized(); +#else optionsDialog->show(); +#endif optionsDialog->exec(); delete optionsDialog; @@ -437,9 +447,14 @@ void UserInterface::openSnapmaticFile(SnapmaticPicture *picture) QObject::connect(threadDB, SIGNAL(playerNameFound(int, QString)), profileDB, SLOT(setPlayerName(int, QString))); QObject::connect(threadDB, SIGNAL(playerNameUpdated()), &picDialog, SLOT(playerNameUpdated())); +#ifdef Q_OS_ANDROID + // Android optimization should be put here + picDialog.showMaximized(); +#else picDialog.show(); picDialog.setMinimumSize(picDialog.size()); picDialog.setMaximumSize(picDialog.size()); +#endif picDialog.exec(); } @@ -449,7 +464,12 @@ void UserInterface::openSavegameFile(SavegameData *savegame) SavegameDialog sgdDialog(this); sgdDialog.setSavegameData(savegame, savegame->getSavegameFileName(), true); sgdDialog.setModal(true); +#ifdef Q_OS_ANDROID + // Android optimization should be put here + sgdDialog.showMaximized(); +#else sgdDialog.show(); +#endif sgdDialog.exec(); } diff --git a/config.h b/config.h index 4eba476..71257a2 100755 --- a/config.h +++ b/config.h @@ -50,7 +50,7 @@ #ifndef GTA5SYNC_APPVER #ifndef GTA5SYNC_DAILYB -#define GTA5SYNC_APPVER "1.4.0-dev2" +#define GTA5SYNC_APPVER "1.4.0-dev3" #else #define GTA5SYNC_APPVER QString("%1").arg(GTA5SYNC_DAILYB) #endif diff --git a/main.cpp b/main.cpp index c90f498..0a6593b 100755 --- a/main.cpp +++ b/main.cpp @@ -480,7 +480,11 @@ int main(int argc, char *argv[]) UserInterface uiWindow(&profileDB, &crewDB, &threadDB); uiWindow.setWindowIcon(IconLoader::loadingAppIcon()); uiWindow.setupDirEnv(); +#ifdef Q_OS_ANDROID + uiWindow.showMaximized(); +#else uiWindow.show(); +#endif threadLoop.exec(); diff --git a/res/app.rc b/res/app.rc index 9d25b64..1f7cbcb 100755 --- a/res/app.rc +++ b/res/app.rc @@ -25,12 +25,12 @@ BEGIN BEGIN VALUE "CompanyName", "Syping" VALUE "FileDescription", "gta5view\0" - VALUE "FileVersion", "1.4.0-dev2\0" + VALUE "FileVersion", "1.4.0-dev3\0" VALUE "InternalName", "gta5view\0" VALUE "LegalCopyright", "Copyright © 2016-2017 Syping\0" VALUE "OriginalFilename", "gta5view.exe\0" VALUE "ProductName", "gta5view\0" - VALUE "ProductVersion", "1.4.0-dev2\0" + VALUE "ProductVersion", "1.4.0-dev3\0" END END END diff --git a/res/gta5sync_de.qm b/res/gta5sync_de.qm index 2a5912f..2dabad6 100755 Binary files a/res/gta5sync_de.qm and b/res/gta5sync_de.qm differ diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts index 5210bf9..c0fc62b 100755 --- a/res/gta5sync_de.ts +++ b/res/gta5sync_de.ts @@ -103,20 +103,34 @@ Copyright &copy; <a href="%5">%6</a> %7<br/>%8 i <span style=" font-weight:600;">gta5sync</span><br/><br/>Ein Projekt zum ansehen und synchronisieren von Grand Theft Auto 5 Snapmatic Bilder und Spielständen<br/><br/>Projektversion: %1<br/>Gebaut mit Qt %2<br/>Läuft auf Qt %3<br/><br/>Copyright &copy; <a href="https://github.com/Syping/">Syping</a> 2016<br/>gta5sync is lizenziert unter <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Ein Projekt zum ansehen von Grand Theft Auto V<br/> Snapmatic Bilder und Spielständen - + A project for viewing and sync Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Ein Projekt zum ansehen und synchronisieren von<br/> Grand Theft Auto V Snapmatic Bilder und Spielständen + + CrewDatabase + + + No Crew + Keine Crew + + + Free + Crew Free (means no crew) + Crew Keine (bedeutet keine Crew) + Keine + + ExportDialog @@ -421,26 +435,26 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen %1 (%2 wenn verfügbar) [sys] - + System System like PC System System - + %1 (%2 if available) System like PC System = %1, System Language like Deutsch = %2 %1 (%2 wenn verfügbar) - + %1 %1 %1 - + The new Custom Folder will initialize after you restart %1. Der eigene Ordner wird initialisiert sobald du %1 neugestartet hast. @@ -449,20 +463,20 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen Der eigene Ordner initialisiert sobald du %1 neugestartet hast. - + The language change will take effect after you restart %1. Die Änderung der Sprache nimmt Effekt sobald du %1 neugestartet hast. - + No Profile No Profile, as default Kein Profil - - + + Profile: %1 Profil: %1 @@ -511,7 +525,6 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen - &Export &Exportieren @@ -546,6 +559,7 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen + Export Exportieren @@ -559,17 +573,17 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen Schließen - + Export as &JPG picture... Exportiere als &JPG Bild... - + Export as &GTA Snapmatic... Exportiere als &GTA Snapmatic... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -578,19 +592,19 @@ Taste 2 - Overlay umschalten Pfeiltasten - Navigieren - - + + Snapmatic Picture Viewer Snapmatic Bildansicht - - + + Failed at %1 Fehlgeschlagen bei %1 - + Avatar Preview Mode Press 1 for Default View Avatar Vorschaumodus @@ -627,19 +641,19 @@ Drücke A für Standardansicht Avatar Vorschaumodus<br>Drücke A für Standardansicht - - + + No player Keine Spieler - - + + No crew Keine Crew - + Unknown Location Unbekannter Standort @@ -786,27 +800,27 @@ Drücke A für Standardansicht Lade Datei %1 von %2 Dateien - + %1 %2 %1 %2 - + Import exported file Importiere exportierte Datei - + &Import... &Importieren... - + Close profile Profil schließen - + &Close S&chließen @@ -827,29 +841,29 @@ Drücke A für Standardansicht Profil schließen - + Loading... Lade... - - + + Import... Importieren... - - - - - - - - - - - - + + + + + + + + + + + + Import Importieren @@ -858,41 +872,41 @@ Drücke A für Standardansicht Alle Profildateien (SGTA* PGTA*) - + Importable files (*.g5e *.jpg *.png SGTA* PGTA*) Importfähige Dateien (*.g5e *.jpg *.png SGTA* PGTA*) - - + + Savegames files (SGTA*) Spielstanddateien (SGTA*) - - + + Snapmatic pictures (PGTA*) Snapmatic Bilder (PGTA*) - + All image files (*.jpg *.png) Alle Bilddateien (*.jpg *.png) - - + + All files (**) Alle Dateien (**) - + Import file %1 of %2 files Importiere Datei %1 von %2 Dateien - + Import failed with... %1 @@ -901,46 +915,46 @@ Drücke A für Standardansicht %1 - - + + Failed to read Snapmatic picture Fehler beim Lesen vom Snapmatic Bild - - + + Failed to read Savegame file Fehler beim Lesen von Spielstanddatei - + Can't import %1 because of not valid file format Kann %1 nicht importieren weil das Dateiformat nicht gültig ist - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Fehlgeschlagen beim Importieren vom Snapmatic Bild, Datei beginnt nicht mit PGTA oder endet mit .g5e - + Failed to import the Snapmatic picture, the picture is already in the game Fehlgeschlagen beim Importieren vom Snapmatic Bild, dieses Bild ist bereits im Spiel - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1Exportiere Snapmatic Bilder%2<br><br>JPG Bilder machen es möglich sie mit ein Bildansicht Programm zu öffnen<br>Das GTA Snapmatic Format macht es möglich sie wieder ins Game zu importieren<br><br>Exportieren als: - - - + + + No valid file is selected Keine gültige Datei wurde ausgewählt - + Enabled pictures: %1 of %2 Aktivierte Bilder: %1 von %2 @@ -949,35 +963,35 @@ Drücke A für Standardansicht Fehlgeschlagen beim Importieren vom Snapmatic Bild, Datei beginnt nicht mit PGTA - + Failed to import the Snapmatic picture, can't copy the file into profile Fehlgeschlagen beim Importieren vom Snapmatic Bild, kann Snapmatic Bild nicht ins Profil kopieren - + Failed to import the Savegame, can't copy the file into profile Fehlgeschlagen beim Importieren vom Spielstand, kann Spielstanddatei nicht ins Profil kopieren - + Failed to import the Savegame, no Savegame slot is left Fehlgeschlagen beim Importieren vom Spielstand, kein Spielstandslot mehr frei - - + + JPG pictures and GTA Snapmatic JPG Bilder und GTA Snapmatic - - + + JPG pictures only Nur JPG Bilder - - + + GTA Snapmatic only Nur GTA Snapmatic @@ -996,25 +1010,25 @@ Das GTA Snapmatic Format macht es möglich sie wieder ins Game zu importieren Exportieren als: - - + + No Snapmatic pictures or Savegames files are selected Keine Snapmatic Bilder oder Spielstände ausgewählt - - - + + + Remove selected Auswahl löschen - + You really want remove the selected Snapmatic picutres and Savegame files? Möchtest du wirklich die ausgewählten Snapmatic Bilder und Spielstanddateien löschen? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files Fehlgeschlagen beim kompletten entfernen der ausgewählten Snapmatic Bilder und/oder der Spielstanddateien @@ -1035,10 +1049,10 @@ Exportieren als: Fehlgeschlagenen beim Import vom Spielstand weil kein Spielstandslot mehr übrig ist - - - - + + + + Export selected Auswahl exportieren @@ -1059,12 +1073,12 @@ Exportieren als: Wie sollen wir mit den Snapmatic Bilder umgehen? - + Export selected... Auswahl exportieren... - + Initializing export... Initialisiere Export... @@ -1073,7 +1087,7 @@ Exportieren als: Initialisierung... - + Export failed with... %1 @@ -1103,13 +1117,13 @@ Exportieren als: Exportiere Datei %1 von %2 Dateien - + All profile files (*.g5e SGTA* PGTA*) Alle Profildateien (*.g5e SGTA* PGTA*) - - + + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1131,7 +1145,7 @@ Exportieren als: SavegameDialog - + Savegame Viewer Spielstandanzeiger @@ -1163,7 +1177,7 @@ Exportieren als: Schließen - + Failed at %1 Fehlgeschlagen bei %1 @@ -1266,34 +1280,34 @@ Exportieren als: Fehlgeschlagen beim Löschen %1 von deinen Spielständen - + &View A&nsehen - + &Remove Entfe&rnen - - + + &Select Au&swählen - + &Deselect A&bwählen - - + + Select &All &Alles auswählen - + &Deselect All Alles a&bwählen @@ -1332,7 +1346,7 @@ Exportieren als: Spielstand kopieren - + &Export &Exportieren @@ -1408,7 +1422,7 @@ Exportieren als: - + Snapmatic Properties Snapmatic Eigenschaften @@ -1419,13 +1433,11 @@ Exportieren als: - Editor Editor - Selfie Selbstporträt @@ -1436,7 +1448,6 @@ Exportieren als: - Mugshot Fahndungsfoto @@ -1445,56 +1456,66 @@ Exportieren als: Eigenes - + Director Director - + Meme Meme - - + Snapmatic Title Snapmatic Titel - - + + Snapmatic Values + Snapmatic Werte + + + + + Crew: %1 (%2) + Crew: %1 (%2) + + + + Title: %1 (%2) Titel: %1 (%2) - - - + + + Appropriate: %1 Angemessen: %1 - + Extras Extras - + Qualify as Avatar automatically at apply Beim Ãœbernehmen als Avatar qualifizieren - + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture Das Qualifizieren als Avatar erlaubt dir dieses Snapmatic als Social Club Profilbild zu nutzen - + &Apply &Ãœbernehmen - + &Cancel Abbre&chen @@ -1507,37 +1528,48 @@ Exportieren als: Cancel - + + Edit Bearbeiten - + Yes Yes, should work fine Ja - + No No, could lead to issues Nein - + Patching of Snapmatic Properties failed because of I/O Error Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen I/O Fehler - + New Snapmatic title: Neuer Snapmatic Titel: + + + Snapmatic Crew + Snapmatic Crew + + + + New Snapmatic crew: + Neue Snapmatic Crew: + SnapmaticPicture - + PHOTO - %1 FOTO - %1 @@ -1576,18 +1608,18 @@ Exportieren als: - - + + Delete picture Bild löschen - + Are you sure to delete %1 from your Snapmatic pictures? Bist du sicher %1 von deinen Snapmatic Bilder zu löschen? - + Edi&t Bearbei&ten @@ -1600,7 +1632,7 @@ Exportieren als: &Im Spiel deaktivieren - + &Export &Exportieren @@ -1613,12 +1645,12 @@ Exportieren als: Exportiere als &GTA Snapmatic - + Show &In-game &Im Spiel anzeigen - + Hide &In-game &Im Spiel ausblenden @@ -1631,49 +1663,49 @@ Exportieren als: FOTO - %1 - + &Edit Properties... &Eigenschaften bearbeiten... - + Export as &JPG picture... Exportiere als &JPG Bild... - + Export as &GTA Snapmatic... Exportiere als &GTA Snapmatic... - + &View A&nsehen - + &Remove Entfe&rnen - - + + &Select Au&swählen - + &Deselect A&bwählen - - + + Select &All Alles &auswählen - + &Deselect All Alles a&bwählen @@ -1721,7 +1753,7 @@ Exportieren als: Bist du sicher %1 von deinen Snapmatic Bilder zu löschen? - + Failed at deleting %1 from your Snapmatic pictures Fehlgeschlagen beim Löschen %1 von deinen Snapmatic Bildern @@ -2001,15 +2033,15 @@ Exportieren als: - + Select Profile Profil auswählen - + - + Select GTA V Folder... Wähle GTA V Ordner... @@ -2018,7 +2050,7 @@ Exportieren als: Wähle GTA V &Ordner... - + Open File... Datei öffnen... @@ -2039,15 +2071,15 @@ Exportieren als: &Ãœber %1 - - - - + + + + Open File Datei öffnen - + Can't open %1 because of not valid file format Kann nicht %1 öffnen weil Dateiformat nicht gültig ist diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts index 89f9aab..2fcb28e 100644 --- a/res/gta5sync_fr.ts +++ b/res/gta5sync_fr.ts @@ -67,20 +67,28 @@ Copyright &copy; <a href="%5">%6</a> %7<br/> &Fermer - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Un outil pour gérer les photos Snapmatic<br/> et les fichiers de sauvegarde de Grand Theft Auto V - + A project for viewing and sync Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Un outil pour gérer et synchroniser les photos Snapmatic<br/> et les fichiers de sauvegarde de Grand Theft Auto V + + CrewDatabase + + + No Crew + + + ExportDialog @@ -344,44 +352,44 @@ et les fichiers de sauvegarde de Grand Theft Auto V &Annuler - + %1 (%2 if available) System like PC System = %1, System Language like Deutsch = %2 %1 (%2 si disponible) - + System System like PC System Système - + %1 %1 %1 - + The new Custom Folder will initialize after you restart %1. Le répertoire personnalisé sera actif au prochain lancement de %1. - + The language change will take effect after you restart %1. Le changement de langue sera actif au prochain lancement de %1. - + No Profile No Profile, as default Aucun profil - - + + Profile: %1 Profil : %1 @@ -411,7 +419,6 @@ et les fichiers de sauvegarde de Grand Theft Auto V - &Export &Exporter @@ -487,17 +494,17 @@ et les fichiers de sauvegarde de Grand Theft Auto V Fichier invalide - + Export as &JPG picture... Exporter comme image &JPG... - + Export as &GTA Snapmatic... Exporter comme &GTA Snapmatic... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -506,19 +513,19 @@ Touche 2 - Activer/désactiver l'overlay Touches fléchées - Naviguer - - + + Snapmatic Picture Viewer Visionneuse de photo Snapmatic - - + + Failed at %1 Echec de %1 - + Avatar Preview Mode Press 1 for Default View Mode Aperçu Avatar @@ -529,19 +536,19 @@ Appuyer sur 1 pour le mode par défaut Aperçu avatar<br>Appuyer sur A pour la vue par défaut - - + + No player Aucun joueur - - + + No crew Aucun crew - + Unknown Location Emplacement inconnu @@ -552,6 +559,7 @@ Appuyer sur 1 pour le mode par défaut + Export Exporter @@ -594,27 +602,27 @@ Appuyer sur 1 pour le mode par défaut Chargement du fichier %1 sur %2 - + %1 %2 %1 %2 - + Import exported file Importer un profil - + &Import... &Importer... - + Close profile Fermer - + &Close &Fermer @@ -626,34 +634,34 @@ Appuyer sur 1 pour le mode par défaut Copie du fichier %1 sur %2 - + Enabled pictures: %1 of %2 Photos activées : %1 sur %2 - + Loading... Chargement... - - + + Import... Importer... - - - - - - - - - - - - + + + + + + + + + + + + Import Importer @@ -662,31 +670,31 @@ Appuyer sur 1 pour le mode par défaut Fichiers de profil GTA (SGTA* PGTA*) - - + + Savegames files (SGTA*) Fichiers de sauvegarde GTA (SGTA*) - - + + Snapmatic pictures (PGTA*) Photos Snapmatic (PGTA*) - - + + All files (**) Tous les fichiers (**) - + Import file %1 of %2 files Importation du fichier %1 sur %2 - + Import failed with... %1 @@ -695,26 +703,26 @@ Appuyer sur 1 pour le mode par défaut %1 - - - + + + No valid file is selected Fichier invalide - - + + Failed to read Snapmatic picture Impossible d'ouvrir la photo Snapmatic - - + + Failed to read Savegame file Impossible de lire le fichier de sauvegarde - + Can't import %1 because of not valid file format Impossible d'importer %1, format invalide @@ -723,83 +731,83 @@ Appuyer sur 1 pour le mode par défaut Impossible d'importer la photo Snapmatic,nom de fichier incorrect (PGTA*) - + Importable files (*.g5e *.jpg *.png SGTA* PGTA*) Fichiers importables (*.g5e *.jpg *.png SGTA* PGTA*) - + All image files (*.jpg *.png) Tous les fichiers image (*.jpg *.png) - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Impossible d'importer la photo Snapmatic,nom de fichier incorrect (PGTA*, *.g5e) - + Failed to import the Snapmatic picture, the picture is already in the game Impossible d'importer la photo Snapmatic, un fichier du même nom existe déjà - + Failed to import the Snapmatic picture, can't copy the file into profile Impossible d'importer la photo Snapmatic, impossible de copier le fichier dans le profil - + Failed to import the Savegame, can't copy the file into profile Impossible d'importer la sauvegarde, impossible de copier le fichier dans le profil - + Failed to import the Savegame, no Savegame slot is left Impossible d'importer la sauvegarde, aucun emplacement libre - - - - + + + + Export selected Exporter la sélection - - + + JPG pictures and GTA Snapmatic Images JPG et GTA Snapmatic - - + + JPG pictures only Images JPG seulement - - + + GTA Snapmatic only GTA Snapmatic seulement - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1Exporter les photos Snapmatic%2<br><br>Les fichiers JPG permettent d'ouvrir les photos avec une visionneuse d'images<br>Les GTA Snapmatic permettent d'importer les photos dans le jeu<br><br>Exporter comme : - + Export selected... Exporter la sélection... - + Initializing export... Initialisation de l'export... - + Export failed with... %1 @@ -808,36 +816,36 @@ Appuyer sur 1 pour le mode par défaut %1 - - + + No Snapmatic pictures or Savegames files are selected Aucun fichier de sauvegarde ou photo Snapmatic sélectionné - - - + + + Remove selected Supprimer la sélection - + You really want remove the selected Snapmatic picutres and Savegame files? Supprimer la sélection ? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files Impossible de supprimer la sélection - + All profile files (*.g5e SGTA* PGTA*) Tous les fichiers de profil (*.g5e SGTA* PGTA*) - - + + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -859,7 +867,7 @@ Appuyer sur 1 pour le mode par défaut SavegameDialog - + Savegame Viewer Gestionnaire de sauvegardes @@ -879,7 +887,7 @@ Appuyer sur 1 pour le mode par défaut &Fermer - + Failed at %1 Échec de %1 @@ -930,7 +938,7 @@ Appuyer sur 1 pour le mode par défaut Supprimer - + &Export &Exporter @@ -1013,34 +1021,34 @@ Appuyer sur 1 pour le mode par défaut Impossible de supprimer %1 - + &View &Voir - + &Remove &Supprimer - - + + &Select &Sélectionner - + &Deselect &Déselectionner - - + + Select &All Sélectionner to&ut - + &Deselect All &Déselectionner tout @@ -1050,7 +1058,7 @@ Appuyer sur 1 pour le mode par défaut - + Snapmatic Properties Propriétés Snapmatic @@ -1061,13 +1069,11 @@ Appuyer sur 1 pour le mode par défaut - Editor Éditeur - Selfie Selfie @@ -1078,7 +1084,6 @@ Appuyer sur 1 pour le mode par défaut - Mugshot Photo d'identité @@ -1087,93 +1092,114 @@ Appuyer sur 1 pour le mode par défaut Personnalisé - + Director Director - + Meme Meme - - + Snapmatic Title Titre Snapmatic - - + + Snapmatic Values + + + + + + Crew: %1 (%2) + + + + + Title: %1 (%2) Titre : %1 (%2) - - - + + + Appropriate: %1 Valide : %1 - + Extras Extras - + Qualify as Avatar automatically at apply Qualifier comme Avatar - + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture Qualifier comme Avatar permet d'utiliser cette image en tant que photo de profil sur le Social Club - + &Apply A&ppliquer - + &Cancel A&nnuler - + + Edit Éditer - + Yes Yes, should work fine Oui, devrait fonctionner Oui - + No No, could lead to issues Non, pourrait causer des erreurs Non - + Patching of Snapmatic Properties failed because of I/O Error La modification des propriétés Snapmatic a échoué : erreur d'entrée/sortie - + New Snapmatic title: Nouveau titre Snapmatic : + + + Snapmatic Crew + + + + + New Snapmatic crew: + + SnapmaticPicture - + PHOTO - %1 PHOTO - %1 @@ -1222,8 +1248,8 @@ Appuyer sur 1 pour le mode par défaut - - + + Delete picture Supprimer la photo @@ -1233,79 +1259,79 @@ Appuyer sur 1 pour le mode par défaut Supprimer - + Are you sure to delete %1 from your Snapmatic pictures? Supprimer %1 ? - + Failed at deleting %1 from your Snapmatic pictures Impossible de supprimer %1 - + Edi&t Édi&ter - + Show &In-game &Visible en jeu - + Hide &In-game &Invisible en jeu - + &Edit Properties... Modifier les &propriétés... - + &Export &Exporter - + Export as &JPG picture... Exporter comme image &JPG... - + Export as &GTA Snapmatic... Exporter comme &GTA Snapmatic... - + &View &Voir - + &Remove S&upprimer - - + + &Select &Sélectionner - + &Deselect &Déselectionner - - + + Select &All Sélectionner &tout - + &Deselect All &Déselectionner tout @@ -1468,9 +1494,9 @@ Appuyer sur 1 pour le mode par défaut - + - + Select GTA V Folder... Modifier l'emplacement de GTA V... @@ -1518,25 +1544,25 @@ Appuyer sur 1 pour le mode par défaut - + Select Profile Sélectionner un profil - + Open File... Ouvrir... - - - - + + + + Open File Ouvrir - + Can't open %1 because of not valid file format Impossible d'ouvrir %1, format invalide