From b3a4c3ef5fffd84edd24321ff575ca89a2389a20 Mon Sep 17 00:00:00 2001 From: Syping Date: Sun, 10 Nov 2019 00:12:44 +0100 Subject: [PATCH] rdr2view initial --- .gitattributes | 28 + .gitignore | 35 + AboutDialog.cpp | 135 + AboutDialog.h | 45 + AboutDialog.ui | 102 + AppEnv.cpp | 520 + AppEnv.h | 62 + CrewDatabase.cpp | 176 + CrewDatabase.h | 54 + DatabaseThread.cpp | 244 + DatabaseThread.h | 56 + ExportDialog.cpp | 48 + ExportDialog.h | 46 + ExportDialog.ui | 226 + ExportThread.cpp | 185 + ExportThread.h | 56 + GlobalString.cpp | 78 + GlobalString.h | 35 + IconLoader.cpp | 50 + IconLoader.h | 32 + ImageEditorDialog.cpp | 205 + ImageEditorDialog.h | 52 + ImageEditorDialog.ui | 108 + ImportDialog.cpp | 838 ++ ImportDialog.h | 86 + ImportDialog.ui | 382 + JsonEditorDialog.cpp | 233 + JsonEditorDialog.h | 56 + JsonEditorDialog.ui | 145 + LICENSE | 674 + LICENSE.GPL | 674 + LICENSE.LGPL | 165 + MapLocationDialog.cpp | 204 + MapLocationDialog.h | 63 + MapLocationDialog.ui | 233 + OptionsDialog.cpp | 737 ++ OptionsDialog.h | 86 + OptionsDialog.ui | 789 ++ PictureDialog.cpp | 1069 ++ PictureDialog.h | 147 + PictureDialog.ui | 249 + PictureExport.cpp | 329 + PictureExport.h | 35 + PictureWidget.cpp | 109 + PictureWidget.h | 56 + PlayerListDialog.cpp | 221 + PlayerListDialog.h | 57 + PlayerListDialog.ui | 173 + ProfileDatabase.cpp | 85 + ProfileDatabase.h | 46 + ProfileInterface.cpp | 2371 ++++ ProfileInterface.h | 137 + ProfileInterface.ui | 244 + ProfileLoader.cpp | 116 + ProfileLoader.h | 53 + ProfileWidget.cpp | 66 + ProfileWidget.h | 46 + README.md | 2 + SavegameCopy.cpp | 108 + SavegameCopy.h | 32 + SavegameData.cpp | 121 + SavegameData.h | 45 + SavegameDialog.cpp | 100 + SavegameDialog.h | 48 + SavegameDialog.ui | 93 + SavegameWidget.cpp | 303 + SavegameWidget.h | 80 + SavegameWidget.ui | 135 + SidebarGenerator.cpp | 61 + SidebarGenerator.h | 32 + SnapmaticEditor.cpp | 469 + SnapmaticEditor.h | 77 + SnapmaticEditor.ui | 276 + SnapmaticPicture.cpp | 1435 +++ SnapmaticPicture.h | 189 + SnapmaticWidget.cpp | 499 + SnapmaticWidget.h | 103 + SnapmaticWidget.ui | 169 + StandardPaths.cpp | 128 + StandardPaths.h | 41 + StringParser.cpp | 61 + StringParser.h | 35 + TelemetryClass.cpp | 596 + TelemetryClass.h | 80 + TranslationClass.cpp | 653 + TranslationClass.h | 67 + UserInterface.cpp | 677 + UserInterface.h | 101 + UserInterface.ui | 396 + anpro/imagecropper.cpp | 519 + anpro/imagecropper.h | 103 + anpro/imagecropper_e.h | 36 + anpro/imagecropper_p.h | 76 + config.h | 155 + lang/README.txt | 5 + main.cpp | 320 + pcg/LICENSE.txt | 201 + pcg/pcg_basic.c | 116 + pcg/pcg_basic.h | 78 + qjson4/QJsonArray | 1 + qjson4/QJsonArray.cpp | 410 + qjson4/QJsonArray.h | 139 + qjson4/QJsonDocument | 1 + qjson4/QJsonDocument.cpp | 417 + qjson4/QJsonDocument.h | 103 + qjson4/QJsonObject | 1 + qjson4/QJsonObject.cpp | 322 + qjson4/QJsonObject.h | 121 + qjson4/QJsonParseError | 1 + qjson4/QJsonParseError.cpp | 64 + qjson4/QJsonParseError.h | 60 + qjson4/QJsonParser.cpp | 455 + qjson4/QJsonParser.h | 81 + qjson4/QJsonRoot | 1 + qjson4/QJsonRoot.h | 45 + qjson4/QJsonValue | 1 + qjson4/QJsonValue.cpp | 391 + qjson4/QJsonValue.h | 120 + qjson4/QJsonValueRef | 1 + qjson4/QJsonValueRef.cpp | 228 + qjson4/QJsonValueRef.h | 79 + rdr2view.pro | 240 + res/5sync-128.png | Bin 0 -> 3226 bytes res/5sync-16.png | Bin 0 -> 357 bytes res/5sync-24.png | Bin 0 -> 585 bytes res/5sync-256.png | Bin 0 -> 6302 bytes res/5sync-32.png | Bin 0 -> 776 bytes res/5sync-40.png | Bin 0 -> 1102 bytes res/5sync-48.png | Bin 0 -> 1233 bytes res/5sync-64.png | Bin 0 -> 1611 bytes res/5sync-96.png | Bin 0 -> 2737 bytes res/5sync.icns | Bin 0 -> 45948 bytes res/5sync.ico | Bin 0 -> 89817 bytes res/add.svgz | Bin 0 -> 772 bytes res/app.qrc | 31 + res/app.rc | 36 + res/avatararea.png | Bin 0 -> 2877 bytes res/avatarareaimport.png | Bin 0 -> 2353 bytes res/back.svgz | Bin 0 -> 455 bytes res/empty1x16.png | Bin 0 -> 87 bytes res/gta5sync.ts | 2469 ++++ res/gta5sync_de.qm | Bin 0 -> 48650 bytes res/gta5sync_de.ts | 2494 ++++ res/gta5sync_en_US.qm | Bin 0 -> 1550 bytes res/gta5sync_en_US.ts | 2469 ++++ res/gta5sync_fr.qm | Bin 0 -> 47020 bytes res/gta5sync_fr.ts | 2497 ++++ res/gta5sync_ko.qm | Bin 0 -> 38495 bytes res/gta5sync_ko.ts | 2520 ++++ res/gta5sync_ru.qm | Bin 0 -> 46877 bytes res/gta5sync_ru.ts | 2509 ++++ res/gta5sync_uk.qm | Bin 0 -> 48099 bytes res/gta5sync_uk.ts | 2500 ++++ res/gta5sync_zh_TW.qm | Bin 0 -> 35949 bytes res/gta5sync_zh_TW.ts | 2489 ++++ res/gta5view.png | Bin 0 -> 13479 bytes res/mappreview.jpg | Bin 0 -> 207939 bytes res/next.svgz | Bin 0 -> 453 bytes res/pointmaker-16.png | Bin 0 -> 278 bytes res/pointmaker-24.png | Bin 0 -> 353 bytes res/pointmaker-32.png | Bin 0 -> 475 bytes res/pointmaker-8.png | Bin 0 -> 175 bytes res/qt_de.qm | Bin 0 -> 325046 bytes res/qt_fr.qm | Bin 0 -> 254997 bytes res/qt_ko.qm | Bin 0 -> 241758 bytes res/qt_ru.qm | Bin 0 -> 288266 bytes res/qt_uk.qm | Bin 0 -> 215879 bytes res/qt_zh_TW.qm | Bin 0 -> 117253 bytes res/qtbase_de.qm | Bin 0 -> 200848 bytes res/qtbase_en_GB.qm | Bin 0 -> 941 bytes res/qtbase_en_GB.ts | 16450 ++++++++++++++++++++++++ res/qtbase_fr.qm | Bin 0 -> 166157 bytes res/qtbase_ko.qm | Bin 0 -> 143590 bytes res/qtbase_ru.qm | Bin 0 -> 186226 bytes res/qtbase_uk.qm | Bin 0 -> 158264 bytes res/qtbase_zh_TW.qm | Bin 0 -> 113849 bytes res/rdr2view.desktop | 11 + res/rdr2view.exe.manifest | 15 + res/savegame.svgz | Bin 0 -> 35568 bytes res/src/AvatarAreaProject.xcf | Bin 0 -> 43526 bytes res/src/mainui.png | Bin 0 -> 42909 bytes res/src/picture.png | Bin 0 -> 676980 bytes res/src/prop.png | Bin 0 -> 12740 bytes res/template.r5e | Bin 0 -> 1982 bytes res/tr_g5p.qrc | 11 + res/tr_qt4.qrc | 10 + res/tr_qt5.qrc | 11 + res/watermark_1b.png | Bin 0 -> 11496 bytes res/watermark_2b.png | Bin 0 -> 5765 bytes res/watermark_2r.png | Bin 0 -> 5713 bytes tmext/TelemetryClassAuthenticator.cpp | 99 + tmext/TelemetryClassAuthenticator.h | 41 + uimod/JSHighlighter.cpp | 72 + uimod/JSHighlighter.h | 56 + uimod/UiModLabel.cpp | 75 + uimod/UiModLabel.h | 53 + uimod/UiModWidget.cpp | 86 + uimod/UiModWidget.h | 49 + 198 files changed, 62708 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 AboutDialog.cpp create mode 100644 AboutDialog.h create mode 100644 AboutDialog.ui create mode 100644 AppEnv.cpp create mode 100644 AppEnv.h create mode 100644 CrewDatabase.cpp create mode 100644 CrewDatabase.h create mode 100644 DatabaseThread.cpp create mode 100644 DatabaseThread.h create mode 100644 ExportDialog.cpp create mode 100644 ExportDialog.h create mode 100644 ExportDialog.ui create mode 100644 ExportThread.cpp create mode 100644 ExportThread.h create mode 100644 GlobalString.cpp create mode 100644 GlobalString.h create mode 100644 IconLoader.cpp create mode 100644 IconLoader.h create mode 100644 ImageEditorDialog.cpp create mode 100644 ImageEditorDialog.h create mode 100644 ImageEditorDialog.ui create mode 100644 ImportDialog.cpp create mode 100644 ImportDialog.h create mode 100644 ImportDialog.ui create mode 100644 JsonEditorDialog.cpp create mode 100644 JsonEditorDialog.h create mode 100644 JsonEditorDialog.ui create mode 100644 LICENSE create mode 100644 LICENSE.GPL create mode 100644 LICENSE.LGPL create mode 100644 MapLocationDialog.cpp create mode 100644 MapLocationDialog.h create mode 100644 MapLocationDialog.ui create mode 100644 OptionsDialog.cpp create mode 100644 OptionsDialog.h create mode 100644 OptionsDialog.ui create mode 100644 PictureDialog.cpp create mode 100644 PictureDialog.h create mode 100644 PictureDialog.ui create mode 100644 PictureExport.cpp create mode 100644 PictureExport.h create mode 100644 PictureWidget.cpp create mode 100644 PictureWidget.h create mode 100644 PlayerListDialog.cpp create mode 100644 PlayerListDialog.h create mode 100644 PlayerListDialog.ui create mode 100644 ProfileDatabase.cpp create mode 100644 ProfileDatabase.h create mode 100644 ProfileInterface.cpp create mode 100644 ProfileInterface.h create mode 100644 ProfileInterface.ui create mode 100644 ProfileLoader.cpp create mode 100644 ProfileLoader.h create mode 100644 ProfileWidget.cpp create mode 100644 ProfileWidget.h create mode 100644 README.md create mode 100644 SavegameCopy.cpp create mode 100644 SavegameCopy.h create mode 100644 SavegameData.cpp create mode 100644 SavegameData.h create mode 100644 SavegameDialog.cpp create mode 100644 SavegameDialog.h create mode 100644 SavegameDialog.ui create mode 100644 SavegameWidget.cpp create mode 100644 SavegameWidget.h create mode 100644 SavegameWidget.ui create mode 100644 SidebarGenerator.cpp create mode 100644 SidebarGenerator.h create mode 100644 SnapmaticEditor.cpp create mode 100644 SnapmaticEditor.h create mode 100644 SnapmaticEditor.ui create mode 100644 SnapmaticPicture.cpp create mode 100644 SnapmaticPicture.h create mode 100644 SnapmaticWidget.cpp create mode 100644 SnapmaticWidget.h create mode 100644 SnapmaticWidget.ui create mode 100644 StandardPaths.cpp create mode 100644 StandardPaths.h create mode 100644 StringParser.cpp create mode 100644 StringParser.h create mode 100644 TelemetryClass.cpp create mode 100644 TelemetryClass.h create mode 100644 TranslationClass.cpp create mode 100644 TranslationClass.h create mode 100644 UserInterface.cpp create mode 100644 UserInterface.h create mode 100644 UserInterface.ui create mode 100644 anpro/imagecropper.cpp create mode 100644 anpro/imagecropper.h create mode 100644 anpro/imagecropper_e.h create mode 100644 anpro/imagecropper_p.h create mode 100644 config.h create mode 100644 lang/README.txt create mode 100644 main.cpp create mode 100644 pcg/LICENSE.txt create mode 100644 pcg/pcg_basic.c create mode 100644 pcg/pcg_basic.h create mode 100644 qjson4/QJsonArray create mode 100644 qjson4/QJsonArray.cpp create mode 100644 qjson4/QJsonArray.h create mode 100644 qjson4/QJsonDocument create mode 100644 qjson4/QJsonDocument.cpp create mode 100644 qjson4/QJsonDocument.h create mode 100644 qjson4/QJsonObject create mode 100644 qjson4/QJsonObject.cpp create mode 100644 qjson4/QJsonObject.h create mode 100644 qjson4/QJsonParseError create mode 100644 qjson4/QJsonParseError.cpp create mode 100644 qjson4/QJsonParseError.h create mode 100644 qjson4/QJsonParser.cpp create mode 100644 qjson4/QJsonParser.h create mode 100644 qjson4/QJsonRoot create mode 100644 qjson4/QJsonRoot.h create mode 100644 qjson4/QJsonValue create mode 100644 qjson4/QJsonValue.cpp create mode 100644 qjson4/QJsonValue.h create mode 100644 qjson4/QJsonValueRef create mode 100644 qjson4/QJsonValueRef.cpp create mode 100644 qjson4/QJsonValueRef.h create mode 100644 rdr2view.pro create mode 100644 res/5sync-128.png create mode 100644 res/5sync-16.png create mode 100644 res/5sync-24.png create mode 100644 res/5sync-256.png create mode 100644 res/5sync-32.png create mode 100644 res/5sync-40.png create mode 100644 res/5sync-48.png create mode 100644 res/5sync-64.png create mode 100644 res/5sync-96.png create mode 100644 res/5sync.icns create mode 100644 res/5sync.ico create mode 100644 res/add.svgz create mode 100644 res/app.qrc create mode 100644 res/app.rc create mode 100644 res/avatararea.png create mode 100644 res/avatarareaimport.png create mode 100644 res/back.svgz create mode 100644 res/empty1x16.png create mode 100644 res/gta5sync.ts create mode 100644 res/gta5sync_de.qm create mode 100644 res/gta5sync_de.ts create mode 100644 res/gta5sync_en_US.qm create mode 100644 res/gta5sync_en_US.ts create mode 100644 res/gta5sync_fr.qm create mode 100644 res/gta5sync_fr.ts create mode 100644 res/gta5sync_ko.qm create mode 100644 res/gta5sync_ko.ts create mode 100644 res/gta5sync_ru.qm create mode 100644 res/gta5sync_ru.ts create mode 100644 res/gta5sync_uk.qm create mode 100644 res/gta5sync_uk.ts create mode 100644 res/gta5sync_zh_TW.qm create mode 100644 res/gta5sync_zh_TW.ts create mode 100644 res/gta5view.png create mode 100644 res/mappreview.jpg create mode 100644 res/next.svgz create mode 100644 res/pointmaker-16.png create mode 100644 res/pointmaker-24.png create mode 100644 res/pointmaker-32.png create mode 100644 res/pointmaker-8.png create mode 100644 res/qt_de.qm create mode 100644 res/qt_fr.qm create mode 100644 res/qt_ko.qm create mode 100644 res/qt_ru.qm create mode 100644 res/qt_uk.qm create mode 100644 res/qt_zh_TW.qm create mode 100644 res/qtbase_de.qm create mode 100644 res/qtbase_en_GB.qm create mode 100644 res/qtbase_en_GB.ts create mode 100644 res/qtbase_fr.qm create mode 100644 res/qtbase_ko.qm create mode 100644 res/qtbase_ru.qm create mode 100644 res/qtbase_uk.qm create mode 100644 res/qtbase_zh_TW.qm create mode 100644 res/rdr2view.desktop create mode 100644 res/rdr2view.exe.manifest create mode 100644 res/savegame.svgz create mode 100644 res/src/AvatarAreaProject.xcf create mode 100644 res/src/mainui.png create mode 100644 res/src/picture.png create mode 100644 res/src/prop.png create mode 100644 res/template.r5e create mode 100644 res/tr_g5p.qrc create mode 100644 res/tr_qt4.qrc create mode 100644 res/tr_qt5.qrc create mode 100644 res/watermark_1b.png create mode 100644 res/watermark_2b.png create mode 100644 res/watermark_2r.png create mode 100644 tmext/TelemetryClassAuthenticator.cpp create mode 100644 tmext/TelemetryClassAuthenticator.h create mode 100644 uimod/JSHighlighter.cpp create mode 100644 uimod/JSHighlighter.h create mode 100644 uimod/UiModLabel.cpp create mode 100644 uimod/UiModLabel.h create mode 100644 uimod/UiModWidget.cpp create mode 100644 uimod/UiModWidget.h diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..17d0374 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,28 @@ +# Auto detect text files and perform LF normalization +* text=auto eol=lf + +# Development files +*.cpp text eol=lf +*.h text eol=lf +*.ui text eol=lf +*.qrc text eol=lf + +# Development resources +*.ini text eol=lf + +# Linux development files +*.desktop text eol=lf + +# Windows development files +*.rc text eol=crlf +*.nsi text eol=crlf +*.exe.manifest text eol=crlf + +# Binary files +*.png binary +*.jpg binary +*.qm binary +*.ico binary +*.icns binary +*.xcf binary +*.r5e binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fcd678b --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# Qt project user file +*.pro.user + +# Gettext translation files +*.po +*.pot diff --git a/AboutDialog.cpp b/AboutDialog.cpp new file mode 100644 index 0000000..1f12f91 --- /dev/null +++ b/AboutDialog.cpp @@ -0,0 +1,135 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2019 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include +#include +#include +#include "AboutDialog.h" +#include "ui_AboutDialog.h" +#include "AppEnv.h" +#include "config.h" + +AboutDialog::AboutDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::AboutDialog) +{ + // Set Window Flags + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); + + // Build Strings + QString appVersion = qApp->applicationVersion(); + QString buildType = tr(GTA5SYNC_BUILDTYPE); + buildType.replace("_", " "); + QString projectBuild = AppEnv::getBuildDateTime(); + QString buildStr = GTA5SYNC_BUILDSTRING; +#ifndef GTA5SYNC_BUILDTYPE_REL +#ifdef GTA5SYNC_COMMIT + if (!appVersion.contains("-")) { appVersion = appVersion % "-" % GTA5SYNC_COMMIT; } +#endif +#endif + + // Translator Comments + //: Translated by translator, example Translated by Syping + QString translatedByStr = tr("Translated by %1"); + //: Insert your name here and profile here in following scheme, First Translator,First Profile\\nSecond Translator\\nThird Translator,Second Profile + QString translatorVal = tr("TRANSLATOR"); + QStringList translatorContent; + if (translatorVal != "TRANSLATOR") + { + const QStringList translatorList = translatorVal.split('\n'); + for (const QString &translatorStr : translatorList) + { + QStringList translatorStrList = translatorStr.split(','); + QString translatorName = translatorStrList.at(0); + translatorStrList.removeFirst(); + QString translatorProfile = translatorStrList.join(QString()); + if (!translatorProfile.isEmpty()) + { + translatorContent += QString("%2").arg(translatorProfile, translatorName); + } + else + { + translatorContent += translatorName; + } + } + } + + // Project Description + QString projectDes = tr("A project for viewing Red Dead Redemption 2 Snapmatic
\nPictures and Savegames"); + + // Copyright Description + QString copyrightDes1 = tr("Copyright © %2 %3"); + copyrightDes1 = copyrightDes1.arg(GTA5SYNC_APPVENDORLINK, GTA5SYNC_APPVENDOR, GTA5SYNC_COPYRIGHT); + QString copyrightDes2 = tr("%1 is licensed under GNU GPLv3"); + copyrightDes2 = copyrightDes2.arg(GTA5SYNC_APPSTR); + QString copyrightDesA; + if (!translatorContent.isEmpty()) + { + copyrightDesA = copyrightDes1 % "
" % translatedByStr.arg(translatorContent.join(", ")) % "
" % copyrightDes2; + } + else + { + copyrightDesA = copyrightDes1 % "
" % copyrightDes2; + } + + // Setup User Interface + ui->setupUi(this); + aboutStr = ui->labAbout->text(); + titleStr = this->windowTitle(); + ui->labAbout->setText(aboutStr.arg(GTA5SYNC_APPSTR, projectDes, appVersion % " (" % buildType % ")", projectBuild, buildStr, qVersion(), copyrightDesA)); + this->setWindowTitle(titleStr.arg(GTA5SYNC_APPSTR)); + + // Set Icon for Close Button + if (QIcon::hasThemeIcon("dialog-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close")); + } + else if (QIcon::hasThemeIcon("gtk-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("gtk-close")); + } + + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + if (!translatorContent.isEmpty()) + { + resize(375 * screenRatio, 270 * screenRatio); + } + else + { + resize(375 * screenRatio, 260 * screenRatio); + } +} + +AboutDialog::~AboutDialog() +{ + delete ui; +} + +void AboutDialog::on_labAbout_linkActivated(const QString &link) +{ + if (link.left(12) == "g5e://about?") + { + QStringList aboutStrList = QString(link).remove(0, 12).split(":"); + QMessageBox::information(this, QString::fromUtf8(QByteArray::fromBase64(aboutStrList.at(0).toUtf8())), QString::fromUtf8(QByteArray::fromBase64(aboutStrList.at(1).toUtf8()))); + } + else + { + QDesktopServices::openUrl(QUrl(link)); + } +} diff --git a/AboutDialog.h b/AboutDialog.h new file mode 100644 index 0000000..9d2343e --- /dev/null +++ b/AboutDialog.h @@ -0,0 +1,45 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef ABOUTDIALOG_H +#define ABOUTDIALOG_H + +#include + +namespace Ui { +class AboutDialog; +} + +class AboutDialog : public QDialog +{ + Q_OBJECT + +public: + explicit AboutDialog(QWidget *parent = 0); + ~AboutDialog(); + +private slots: + void on_labAbout_linkActivated(const QString &link); + +private: + Ui::AboutDialog *ui; + QString aboutStr; + QString titleStr; +}; + +#endif // ABOUTDIALOG_H diff --git a/AboutDialog.ui b/AboutDialog.ui new file mode 100644 index 0000000..1fa6003 --- /dev/null +++ b/AboutDialog.ui @@ -0,0 +1,102 @@ + + + AboutDialog + + + + 0 + 0 + 375 + 260 + + + + About %1 + + + true + + + + + + + 0 + 0 + + + + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Created on %4<br/> +Built with Qt %5<br/> +Running with Qt %6<br/> +<br/> +%7 + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + false + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + &Close + + + + + + + + + + + cmdClose + clicked() + AboutDialog + close() + + + 327 + 228 + + + 187 + 124 + + + + + diff --git a/AppEnv.cpp b/AppEnv.cpp new file mode 100644 index 0000000..53c6a41 --- /dev/null +++ b/AppEnv.cpp @@ -0,0 +1,520 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "config.h" +#include "AppEnv.h" +#include "StringParser.h" +#include "StandardPaths.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +AppEnv::AppEnv() +{ + +} + +// Build Stuff + +QString AppEnv::getBuildDateTime() +{ + return GTA5SYNC_BUILDDATETIME; +} + +QString AppEnv::getBuildCode() +{ + return GTA5SYNC_BUILDCODE; +} + +// Folder Stuff + +QString AppEnv::getGameFolder(bool *ok) +{ + QDir dir; + QString GTAV_FOLDER = QString::fromUtf8(qgetenv("RDR2_FOLDER")); + if (GTAV_FOLDER != "") + { + dir.setPath(GTAV_FOLDER); + if (dir.exists()) + { + if (ok != NULL) *ok = true; + qputenv("RDR2_FOLDER", dir.absolutePath().toUtf8()); + return dir.absolutePath(); + } + } + + QString GTAV_defaultFolder = StandardPaths::documentsLocation() % QDir::separator() % "Rockstar Games" % QDir::separator() % "Red Dead Redemption 2"; + QString GTAV_returnFolder = GTAV_defaultFolder; + + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("dir"); + bool forceDir = settings.value("force", false).toBool(); + GTAV_returnFolder = settings.value("dir", GTAV_defaultFolder).toString(); + settings.endGroup(); + + if (forceDir) + { + dir.setPath(GTAV_returnFolder); + if (dir.exists()) + { + if (ok != 0) *ok = true; + qputenv("RDR2_FOLDER", dir.absolutePath().toUtf8()); + return dir.absolutePath(); + } + } + + dir.setPath(GTAV_defaultFolder); + if (dir.exists()) + { + if (ok != 0) *ok = true; + qputenv("RDR2_FOLDER", dir.absolutePath().toUtf8()); + return dir.absolutePath(); + } + + if (!forceDir) + { + dir.setPath(GTAV_returnFolder); + if (dir.exists()) + { + if (ok != 0) *ok = true; + qputenv("RDR2_FOLDER", dir.absolutePath().toUtf8()); + return dir.absolutePath(); + } + } + + if (ok != 0) *ok = false; + return ""; +} + +bool AppEnv::setGameFolder(QString gameFolder) +{ + QDir dir; + dir.setPath(gameFolder); + if (dir.exists()) + { + qputenv("RDR2_FOLDER", dir.absolutePath().toUtf8()); + return true; + } + return false; +} + +QString AppEnv::getExLangFolder() +{ + return StringParser::convertBuildedString(GTA5SYNC_LANG); +} + +QString AppEnv::getInLangFolder() +{ +#ifdef GTA5SYNC_QCONF +#ifdef GTA5SYNC_INLANG + return StringParser::convertBuildedString(GTA5SYNC_INLANG); +#else + return StringParser::convertBuildedString(GTA5SYNC_SHARE % QLatin1String("SEPARATOR:APPNAME:SEPARATOR:translations")); +#endif +#else +#ifdef GTA5SYNC_INLANG + return StringParser::convertBuildedString(GTA5SYNC_INLANG); +#else + return QString(":/tr"); +#endif +#endif +} + +QString AppEnv::getPluginsFolder() +{ + return StringParser::convertBuildedString(GTA5SYNC_PLUG); +} + +// Web Stuff + +QByteArray AppEnv::getUserAgent() +{ +#if QT_VERSION >= 0x050400 +#ifdef GTA5SYNC_WIN + QString kernelVersion = QSysInfo::kernelVersion(); + const QStringList &kernelVersionList = kernelVersion.split("."); + if (kernelVersionList.length() > 2) + { + kernelVersion = kernelVersionList.at(0) % "." % kernelVersionList.at(1); + } + QString runArch = QSysInfo::buildCpuArchitecture(); + if (runArch == "x86_64") + { + runArch = "Win64; x64"; + } + else if (runArch == "i686") + { + const QString &curArch = QSysInfo::currentCpuArchitecture(); + if (curArch == "x86_64") + { + runArch = "WOW64"; + } + else if (curArch == "i686") + { + runArch = "Win32; x86"; + } + } + return QString("Mozilla/5.0 (Windows NT %1; %2) %3/%4").arg(kernelVersion, runArch, GTA5SYNC_APPSTR, GTA5SYNC_APPVER).toUtf8(); +#else + return QString("Mozilla/5.0 (%1; %2) %3/%4").arg(QSysInfo::kernelType(), QSysInfo::kernelVersion(), GTA5SYNC_APPSTR, GTA5SYNC_APPVER).toUtf8(); +#endif +#else + return QString("Mozilla/5.0 %1/%2").arg(GTA5SYNC_APPSTR, GTA5SYNC_APPVER).toUtf8(); +#endif +} + +// QUrl AppEnv::getCrewFetchingUrl(QString crewID) +// { +// return QUrl(QString("https://socialclub.rockstargames.com/reference/crewfeed/%1").arg(crewID)); +// } + +QUrl AppEnv::getCrewFetchingUrl(QString crewID) +{ + return QUrl(QString("https://socialclub.rockstargames.com/crew/%1/%1").arg(crewID)); +} + +QUrl AppEnv::getPlayerFetchingUrl(QString crewID, QString pageNumber) +{ + return QUrl(QString("https://socialclub.rockstargames.com/crewsapi/GetMembersList?crewId=%1&pageNumber=%2&pageSize=5000").arg(crewID, pageNumber)); +} + +QUrl AppEnv::getPlayerFetchingUrl(QString crewID, int pageNumber) +{ + return getPlayerFetchingUrl(crewID, QString::number(pageNumber)); +} + +// Game Stuff + +GameVersion AppEnv::getGameVersion() +{ +#ifdef GTA5SYNC_WIN + QString argumentValue; +#ifdef _WIN64 + argumentValue = "\\WOW6432Node"; +#endif + QSettings registrySettingsSc(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Red Dead Redemption 2").arg(argumentValue), QSettings::NativeFormat); + QString installFolderSc = registrySettingsSc.value("InstallFolder", "").toString(); + QDir installFolderScDir(installFolderSc); + bool scVersionInstalled = false; + if (!installFolderSc.isEmpty() && installFolderScDir.exists()) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "gameVersionFoundSocialClubVersion"; +#endif + scVersionInstalled = true; + } + + QSettings registrySettingsSteam(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\RDR2").arg(argumentValue), QSettings::NativeFormat); + QString installFolderSteam = registrySettingsSteam.value("installfoldersteam", "").toString(); + if (installFolderSteam.right(5) == "\\GTAV") + { + installFolderSteam = installFolderSteam.remove(installFolderSteam.length() - 5, 5); + } + QDir installFolderSteamDir(installFolderSteam); + bool steamVersionInstalled = false; + if (!installFolderSteam.isEmpty() && installFolderSteamDir.exists()) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "gameVersionFoundSteamVersion"; +#endif + steamVersionInstalled = true; + } + + if (scVersionInstalled && steamVersionInstalled) + { + return GameVersion::BothVersions; + } + else if (scVersionInstalled) + { + return GameVersion::SocialClubVersion; + } + else if (steamVersionInstalled) + { + return GameVersion::SteamVersion; + } + else + { + return GameVersion::NoVersion; + } +#else + return GameVersion::NoVersion; +#endif +} + +GameLanguage AppEnv::getGameLanguage(GameVersion gameVersion) +{ + if (gameVersion == GameVersion::SocialClubVersion) + { +#ifdef GTA5SYNC_WIN + QString argumentValue; +#ifdef _WIN64 + argumentValue = "\\WOW6432Node"; +#endif + QSettings registrySettingsSc(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Red Dead Redemption 2").arg(argumentValue), QSettings::NativeFormat); + QString languageSc = registrySettingsSc.value("Language", "").toString(); + return gameLanguageFromString(languageSc); +#else + return GameLanguage::Undefined; +#endif + } + else if (gameVersion == GameVersion::SteamVersion) + { +#ifdef GTA5SYNC_WIN + QString argumentValue; +#ifdef _WIN64 + argumentValue = "\\WOW6432Node"; +#endif + QSettings registrySettingsSteam(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Red Dead Redemption 2 Steam").arg(argumentValue), QSettings::NativeFormat); + QString languageSteam = registrySettingsSteam.value("Language", "").toString(); + return gameLanguageFromString(languageSteam); +#else + return GameLanguage::Undefined; +#endif + } + else + { + return GameLanguage::Undefined; + } +} + +GameLanguage AppEnv::gameLanguageFromString(QString gameLanguage) +{ + if (gameLanguage == "en-US") + { + return GameLanguage::English; + } + else if (gameLanguage == "fr-FR") + { + return GameLanguage::French; + } + else if (gameLanguage == "it-IT") + { + return GameLanguage::Italian; + } + else if (gameLanguage == "de-DE") + { + return GameLanguage::German; + } + else if (gameLanguage == "es-ES") + { + return GameLanguage::Spanish; + } + else if (gameLanguage == "es-MX") + { + return GameLanguage::Mexican; + } + else if (gameLanguage == "pt-BR") + { + return GameLanguage::Brasilian; + } + else if (gameLanguage == "ru-RU") + { + return GameLanguage::Russian; + } + else if (gameLanguage == "pl-PL") + { + return GameLanguage::Polish; + } + else if (gameLanguage == "ja-JP") + { + return GameLanguage::Japanese; + } + else if (gameLanguage == "zh-CHS") + { + return GameLanguage::SChinese; + } + else if (gameLanguage == "zh-CHT") + { + return GameLanguage::TChinese; + } + else if (gameLanguage == "ko-KR") + { + return GameLanguage::Koreana; + } + else + { + return GameLanguage::Undefined; + } +} + +QString AppEnv::gameLanguageToString(GameLanguage gameLanguage) +{ + if (gameLanguage == GameLanguage::English) + { + return "en-US"; + } + else if (gameLanguage == GameLanguage::French) + { + return "fr-FR"; + } + else if (gameLanguage == GameLanguage::Italian) + { + return "it-IT"; + } + else if (gameLanguage == GameLanguage::German) + { + return "de-DE"; + } + else if (gameLanguage == GameLanguage::Spanish) + { + return "es-ES"; + } + else if (gameLanguage == GameLanguage::Mexican) + { + return "es-MX"; + } + else if (gameLanguage == GameLanguage::Brasilian) + { + return "pt-BR"; + } + else if (gameLanguage == GameLanguage::Russian) + { + return "ru-RU"; + } + else if (gameLanguage == GameLanguage::Polish) + { + return "pl-PL"; + } + else if (gameLanguage == GameLanguage::Japanese) + { + return "ja-JP"; + } + else if (gameLanguage == GameLanguage::SChinese) + { + return "zh-CHS"; + } + else if (gameLanguage == GameLanguage::TChinese) + { + return "zh-CHT"; + } + else if (gameLanguage == GameLanguage::Koreana) + { + return "ko-KR"; + } + else + { + return "Undefinied"; + } +} + +bool AppEnv::setGameLanguage(GameVersion gameVersion, GameLanguage gameLanguage) +{ + bool socialClubVersion = false; + bool steamVersion = false; + if (gameVersion == GameVersion::SocialClubVersion) + { + socialClubVersion = true; + } + else if (gameVersion == GameVersion::SteamVersion) + { + steamVersion = true; + } + else if (gameVersion == GameVersion::BothVersions) + { + socialClubVersion = true; + steamVersion = true; + } + else + { + return false; + } + if (socialClubVersion) + { +#ifdef GTA5SYNC_WIN + QString argumentValue; +#ifdef _WIN64 + argumentValue = "\\WOW6432Node"; +#endif + QSettings registrySettingsSc(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Red Dead Redemption 2").arg(argumentValue), QSettings::NativeFormat); + if (gameLanguage != GameLanguage::Undefined) + { + registrySettingsSc.setValue("Language", gameLanguageToString(gameLanguage)); + } + else + { + registrySettingsSc.remove("Language"); + } + registrySettingsSc.sync(); + if (registrySettingsSc.status() != QSettings::NoError) + { + return false; + } +#else + Q_UNUSED(gameLanguage) +#endif + } + if (steamVersion) + { +#ifdef GTA5SYNC_WIN + QString argumentValue; +#ifdef _WIN64 + argumentValue = "\\WOW6432Node"; +#endif + QSettings registrySettingsSteam(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Red Dead Redemption 2 Steam").arg(argumentValue), QSettings::NativeFormat); + if (gameLanguage != GameLanguage::Undefined) + { + registrySettingsSteam.setValue("Language", gameLanguageToString(gameLanguage)); + } + else + { + registrySettingsSteam.remove("Language"); + } + registrySettingsSteam.sync(); + if (registrySettingsSteam.status() != QSettings::NoError) + { + return false; + } +#else + Q_UNUSED(gameLanguage) +#endif + } + return true; +} + +// Screen Stuff + +qreal AppEnv::screenRatio() +{ +#if QT_VERSION >= 0x050000 + qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInch(); +#else + qreal dpi = qApp->desktop()->logicalDpiX(); +#endif +#ifdef Q_OS_MAC + return (dpi / 72); +#else + return (dpi / 96); +#endif +} + +qreal AppEnv::screenRatioPR() +{ +#if QT_VERSION >= 0x050600 + return QGuiApplication::primaryScreen()->devicePixelRatio(); +#else + return 1; +#endif +} diff --git a/AppEnv.h b/AppEnv.h new file mode 100644 index 0000000..bf9e6b0 --- /dev/null +++ b/AppEnv.h @@ -0,0 +1,62 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef APPENV_H +#define APPENV_H + +#include +#include + +enum class GameVersion : int { NoVersion = 0, SocialClubVersion = 1, SteamVersion = 2, BothVersions = 3 }; +enum class GameLanguage : int { Undefined = 0, English = 1, French = 2, Italian = 3, German = 4, Spanish = 5, Mexican = 6, Brasilian = 7, Russian = 8, Polish = 9, Japanese = 10, SChinese = 11, TChinese = 12, Koreana = 13 }; + +class AppEnv +{ +public: + AppEnv(); + + // Build Stuff + static QString getBuildDateTime(); + static QString getBuildCode(); + + // Folder Stuff + static QString getGameFolder(bool *ok = 0); + static bool setGameFolder(QString gameFolder); + static QString getExLangFolder(); + static QString getInLangFolder(); + static QString getPluginsFolder(); + + // Web Stuff + static QByteArray getUserAgent(); + static QUrl getCrewFetchingUrl(QString crewID); + static QUrl getPlayerFetchingUrl(QString crewID, QString pageNumber); + static QUrl getPlayerFetchingUrl(QString crewID, int pageNumber); + + // Game Stuff + static GameVersion getGameVersion(); + static GameLanguage getGameLanguage(GameVersion gameVersion); + static GameLanguage gameLanguageFromString(QString gameLanguage); + static QString gameLanguageToString(GameLanguage gameLanguage); + static bool setGameLanguage(GameVersion gameVersion, GameLanguage gameLanguage); + + // Screen Stuff + static qreal screenRatio(); + static qreal screenRatioPR(); +}; + +#endif // APPENV_H diff --git a/CrewDatabase.cpp b/CrewDatabase.cpp new file mode 100644 index 0000000..036c3a7 --- /dev/null +++ b/CrewDatabase.cpp @@ -0,0 +1,176 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "StandardPaths.h" +#include "CrewDatabase.h" +#include "config.h" +#include +#include +#include +#include +#include + +CrewDatabase::CrewDatabase(QObject *parent) : QObject(parent) +{ + QDir dir; + dir.mkpath(StandardPaths::dataLocation()); + dir.setPath(StandardPaths::dataLocation()); + QString dirPath = dir.absolutePath(); + QString defaultConfPath = dirPath % "/crews.ini"; + + QSettings confPathSettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + confPathSettings.beginGroup("Database"); + QString confPathFile = confPathSettings.value("Crews", defaultConfPath).toString(); + confPathSettings.endGroup(); + + crewDB = new QSettings(confPathFile, QSettings::IniFormat); + crewDB->beginGroup("Crews"); + + addProcess = false; +} + +CrewDatabase::~CrewDatabase() +{ + crewDB->endGroup(); + delete crewDB; +} + +QStringList CrewDatabase::getCrews() +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "getCrews"; +#endif + return getCrews_p(); +} + +QStringList CrewDatabase::getCrews_p() +{ +#ifdef GTA5SYNC_DEBUG + qDebug() << "getCrews_p"; +#endif + QStringList compatibleCrewList = getCompatibleCrews_p(); + crewDB->endGroup(); + crewDB->beginGroup("CrewList"); + QStringList crewIDs = crewDB->value("IDs", QStringList()).toStringList(); + crewIDs += compatibleCrewList; + crewIDs.removeDuplicates(); + crewDB->endGroup(); + crewDB->beginGroup("Crews"); + return crewIDs; +} + +QStringList CrewDatabase::getCompatibleCrews() +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "getCompatibleCrews"; +#endif + return getCompatibleCrews_p(); +} + +QStringList CrewDatabase::getCompatibleCrews_p() +{ +#ifdef GTA5SYNC_DEBUG + qDebug() << "getCompatibleCrews_p"; +#endif + return crewDB->childKeys(); +} + +QString CrewDatabase::getCrewName(QString crewID) +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "getCrewName" << crewID; +#endif + QString crewStr = crewDB->value(crewID, crewID).toString(); + if (crewID == "0") crewStr = tr("No Crew", ""); + return crewStr; +} + +QString CrewDatabase::getCrewName(int crewID) +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "getCrewName" << crewID; +#endif + 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) +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "setCrewName" << crewID << crewName; +#endif + crewDB->setValue(QString::number(crewID), crewName); +} + +void CrewDatabase::addCrew(int crewID) +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "addCrew" << crewID; +#endif + QStringList crews = getCrews_p(); + crews += QString::number(crewID); + crews.removeDuplicates(); + crewDB->endGroup(); + crewDB->beginGroup("CrewList"); + crewDB->setValue("IDs", crews); + crewDB->endGroup(); + crewDB->beginGroup("Crews"); +} + +bool CrewDatabase::isCompatibleCrew(QString crewNID) +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "isCompatibleCrew" << crewNID; +#endif + return crewDB->contains(crewNID); +} + +bool CrewDatabase::isCompatibleCrew(int crewID) +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "isCompatibleCrew" << crewID; +#endif + return crewDB->contains(QString::number(crewID)); +} + +void CrewDatabase::setAddingCrews(bool addingCrews) +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "setAddingCrews" << addingCrews; +#endif + addProcess = addingCrews; +} + +bool CrewDatabase::isAddingCrews() +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "isAddingCrews"; +#endif + return addProcess; +} diff --git a/CrewDatabase.h b/CrewDatabase.h new file mode 100644 index 0000000..9afc10d --- /dev/null +++ b/CrewDatabase.h @@ -0,0 +1,54 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef CREWDATABASE_H +#define CREWDATABASE_H + +#include +#include +#include +#include + +class CrewDatabase : public QObject +{ + Q_OBJECT +public: + explicit CrewDatabase(QObject *parent = 0); + QString getCrewName(QString crewID); + QString getCrewName(int crewID); + QStringList getCompatibleCrews(); + QStringList getCrews(); + void setAddingCrews(bool addingCrews); + bool isCompatibleCrew(QString crewNID); + bool isCompatibleCrew(int crewID); + bool isAddingCrews(); + ~CrewDatabase(); + +private: + mutable QMutex mutex; + bool addProcess; + QSettings *crewDB; + QStringList getCrews_p(); + QStringList getCompatibleCrews_p(); + +public slots: + void setCrewName(int crewID, QString crewName); + void addCrew(int crewID); +}; + +#endif // CREWDATABASE_H diff --git a/DatabaseThread.cpp b/DatabaseThread.cpp new file mode 100644 index 0000000..2f87710 --- /dev/null +++ b/DatabaseThread.cpp @@ -0,0 +1,244 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "DatabaseThread.h" +#include "CrewDatabase.h" +#include "AppEnv.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define crewMaxPages 83 +#define maxLoadFails 3 + +DatabaseThread::DatabaseThread(CrewDatabase *crewDB, QObject *parent) : QThread(parent), crewDB(crewDB) +{ + continueLastCrew = true; + threadRunning = true; +} + +void DatabaseThread::run() +{ + QEventLoop threadLoop; + + QObject::connect(this, SIGNAL(threadTerminated()), &threadLoop, SLOT(quit())); + + while (threadRunning) + { + if (threadRunning) + { + QTimer::singleShot(300000, &threadLoop, SLOT(quit())); + threadLoop.exec(); + } + } +} + +void DatabaseThread::scanCrewReference(const QStringList &crewList, const int &requestDelay) +{ + for (QString crewID : crewList) + { + if (threadRunning && crewID != QLatin1String("0")) + { + QNetworkAccessManager *netManager = new QNetworkAccessManager(); + QNetworkRequest netRequest(AppEnv::getCrewFetchingUrl(crewID)); +#if QT_VERSION >= 0x050600 + netRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); +#endif + netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent()); + netRequest.setRawHeader("Accept", "text/html"); + netRequest.setRawHeader("Accept-Charset", "utf-8"); + netRequest.setRawHeader("Accept-Language", "en-US,en;q=0.9"); + netRequest.setRawHeader("Connection", "keep-alive"); + + QNetworkReply *netReply = netManager->get(netRequest); + + QEventLoop *downloadLoop = new QEventLoop(); + QObject::connect(netReply, SIGNAL(finished()), downloadLoop, SLOT(quit())); + if (!continueLastCrew) { QObject::connect(this, SIGNAL(threadTerminated()), downloadLoop, SLOT(quit())); } + QTimer::singleShot(30000, downloadLoop, SLOT(quit())); + downloadLoop->exec(); + downloadLoop->disconnect(); + delete downloadLoop; + + if (netReply->isFinished()) + { + QString crewName; + QByteArray crewHtml = netReply->readAll(); + QStringList crewHtmlSplit1 = QString::fromUtf8(crewHtml).split("Rockstar Games Social Club - Crew : "); + if (crewHtmlSplit1.length() >= 2) + { + QStringList crewHtmlSplit2 = QString(crewHtmlSplit1.at(1)).split(""); + if (crewHtmlSplit2.length() >= 1) + { + crewName = crewHtmlSplit2.at(0); + } + } + if (!crewName.isEmpty()) + { + emit crewNameFound(crewID.toInt(), crewName); + } + } + else + { + netReply->abort(); + } + + if (threadRunning) + { + QEventLoop *waitingLoop = new QEventLoop(); + QTimer::singleShot(requestDelay, waitingLoop, SLOT(quit())); + if (!continueLastCrew) { QObject::connect(this, SIGNAL(threadTerminated()), waitingLoop, SLOT(quit())); } + waitingLoop->exec(); + waitingLoop->disconnect(); + delete waitingLoop; + } + + delete netReply; + delete netManager; + } + } +} + +void DatabaseThread::scanCrewMembersList(const QStringList &crewList, const int &maxPages, const int &requestDelay) +{ + for (QString crewID : crewList) + { + if (threadRunning && crewID != QLatin1String("0")) + { + int currentFail = 0; + int currentPage = 0; + int foundPlayers = 0; + int totalPlayers = 1000; + + while(foundPlayers < totalPlayers && currentPage < maxPages && (continueLastCrew ? true : threadRunning)) + { + QNetworkAccessManager *netManager = new QNetworkAccessManager(); + QNetworkRequest netRequest(AppEnv::getPlayerFetchingUrl(crewID, currentPage)); +#if QT_VERSION >= 0x050600 + netRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); +#endif + netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent()); + netRequest.setRawHeader("Accept", "application/json"); + netRequest.setRawHeader("Accept-Charset", "utf-8"); + netRequest.setRawHeader("Accept-Language", "en-US,en;q=0.9"); + netRequest.setRawHeader("Connection", "keep-alive"); + + QNetworkReply *netReply = netManager->get(netRequest); + + QEventLoop *downloadLoop = new QEventLoop(); + QObject::connect(netReply, SIGNAL(finished()), downloadLoop, SLOT(quit())); + if (!continueLastCrew) { QObject::connect(this, SIGNAL(threadTerminated()), downloadLoop, SLOT(quit())); } + QTimer::singleShot(30000, downloadLoop, SLOT(quit())); + downloadLoop->exec(); + downloadLoop->disconnect(); + delete downloadLoop; + + if (netReply->isFinished()) + { + QByteArray crewJson = netReply->readAll(); + QJsonDocument crewDocument = QJsonDocument::fromJson(crewJson); + QJsonObject crewObject = crewDocument.object(); + QVariantMap crewMap = crewObject.toVariantMap(); + + if (crewMap.contains("Total")) { totalPlayers = crewMap["Total"].toInt(); } + + if (crewMap.contains("Members")) + { + const QList memberList = crewMap["Members"].toList(); + for (QVariant memberVariant : memberList) + { + QMap memberMap = memberVariant.toMap(); + if (memberMap.contains("RockstarId") && memberMap.contains("Name")) + { + int RockstarId = memberMap["RockstarId"].toInt(); + QString memberName = memberMap["Name"].toString(); + if (!memberName.isEmpty() && RockstarId != 0) + { + foundPlayers++; + emit playerNameFound(RockstarId, memberName); + } + } + } + } + + currentPage++; + } + else + { + currentFail++; + if (currentFail == maxLoadFails) + { + currentFail = 0; + currentPage++; + } + } + + delete netReply; + delete netManager; + + if (foundPlayers < totalPlayers && currentPage < maxPages && (continueLastCrew ? true : threadRunning)) + { + QEventLoop *waitingLoop = new QEventLoop(); + QTimer::singleShot(requestDelay, waitingLoop, SLOT(quit())); + if (!continueLastCrew) { QObject::connect(this, SIGNAL(threadTerminated()), waitingLoop, SLOT(quit())); } + waitingLoop->exec(); + waitingLoop->disconnect(); + delete waitingLoop; + } + } + } + } +} + +void DatabaseThread::deleteCompatibleCrews(QStringList *crewList) +{ + for (QString crewNID : *crewList) + { + if (crewDB->isCompatibleCrew(crewNID)) + { + crewList->removeAll(crewNID); + } + } +} + +QStringList DatabaseThread::deleteCompatibleCrews(const QStringList &crewList) +{ + QStringList crewListR = crewList; + for (QString crewNID : crewListR) + { + if (crewDB->isCompatibleCrew(crewNID)) + { + crewListR.removeAll(crewNID); + } + } + return crewListR; +} + +void DatabaseThread::terminateThread() +{ + threadRunning = false; + emit threadTerminated(); +} diff --git a/DatabaseThread.h b/DatabaseThread.h new file mode 100644 index 0000000..02a6557 --- /dev/null +++ b/DatabaseThread.h @@ -0,0 +1,56 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef DATABASETHREAD_H +#define DATABASETHREAD_H + +#include "CrewDatabase.h" +#include +#include + +class DatabaseThread : public QThread +{ + Q_OBJECT +public: + explicit DatabaseThread(CrewDatabase *crewDB, QObject *parent = 0); + +public slots: + void terminateThread(); + +private: + CrewDatabase *crewDB; + void scanCrewMembersList(const QStringList &crewList, const int &maxPages, const int &requestDelay); + void scanCrewReference(const QStringList &crewList, const int &requestDelay); + void deleteCompatibleCrews(QStringList *crewList); + QStringList deleteCompatibleCrews(const QStringList &crewList); + bool continueLastCrew; + bool threadRunning; + int plyrPerReq; + +protected: + void run(); + +signals: + void crewNameFound(int crewID, QString crewName); + void crewNameUpdated(); + void playerNameFound(int playerID, QString playerName); + void playerNameUpdated(); + void threadTerminated(); +}; + +#endif // DATABASETHREAD_H diff --git a/ExportDialog.cpp b/ExportDialog.cpp new file mode 100644 index 0000000..7c73a72 --- /dev/null +++ b/ExportDialog.cpp @@ -0,0 +1,48 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "ExportDialog.h" +#include "ui_ExportDialog.h" + +ExportDialog::ExportDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::ExportDialog) +{ + ui->setupUi(this); + success = false; +} + +ExportDialog::~ExportDialog() +{ + delete ui; +} + +bool ExportDialog::isSucceeded() +{ + return success; +} + +void ExportDialog::on_cmdSnapmaticClose_clicked() +{ + this->close(); +} + +void ExportDialog::setupPictureExport() +{ + ui->swExport->setCurrentWidget(ui->pageSnapmatic); +} diff --git a/ExportDialog.h b/ExportDialog.h new file mode 100644 index 0000000..2db764f --- /dev/null +++ b/ExportDialog.h @@ -0,0 +1,46 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef EXPORTDIALOG_H +#define EXPORTDIALOG_H + +#include + +namespace Ui { +class ExportDialog; +} + +class ExportDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ExportDialog(QWidget *parent = 0); + void setupPictureExport(); + bool isSucceeded(); + ~ExportDialog(); + +private slots: + void on_cmdSnapmaticClose_clicked(); + +private: + Ui::ExportDialog *ui; + bool success; +}; + +#endif // EXPORTDIALOG_H diff --git a/ExportDialog.ui b/ExportDialog.ui new file mode 100644 index 0000000..d00b208 --- /dev/null +++ b/ExportDialog.ui @@ -0,0 +1,226 @@ + + + ExportDialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + true + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + + + + Export Format + + + + + + &JPEG/PNG format + + + + + + + GTA &Snapmatic format + + + + + + + + + + Export Size + + + + + + Default &Size + + + + + + + &Desktop Size + + + + + + + &Custom Size + + + + + + + + + false + + + Custom Size: + + + + + + + false + + + 1 + + + 3840 + + + 960 + + + + + + + x + + + + + + + false + + + 1 + + + 2160 + + + 536 + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + &Export + + + + + + + + 0 + 0 + + + + &Close + + + + + + + + + + + + + + + diff --git a/ExportThread.cpp b/ExportThread.cpp new file mode 100644 index 0000000..4da7002 --- /dev/null +++ b/ExportThread.cpp @@ -0,0 +1,185 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "SnapmaticPicture.h" +#include "ProfileInterface.h" +#include "PictureExport.h" +#include "ProfileWidget.h" +#include "ExportThread.h" +#include "SavegameData.h" +#include "config.h" +#include +#include +#include +#include +#include +#include + +ExportThread::ExportThread(QMap profileMap, QString exportDirectory, bool pictureCopyEnabled, bool pictureExportEnabled, int exportCount, QObject *parent) : QThread(parent), + profileMap(profileMap), exportDirectory(exportDirectory), pictureCopyEnabled(pictureCopyEnabled), pictureExportEnabled(pictureExportEnabled), exportCount(exportCount) +{ + +} + +void ExportThread::run() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + + // Picture Settings + // Quality Settings + settings.beginGroup("Pictures"); + int defaultQuality = 100; + QSize defExportSize = QSize(960, 536); + int customQuality = settings.value("CustomQuality", defaultQuality).toInt(); + if (customQuality < 1 || customQuality > 100) + { + customQuality = 100; + } + bool useCustomQuality = settings.value("CustomQualityEnabled", false).toBool(); + + // Size Settings + QSize cusExportSize = settings.value("CustomSize", defExportSize).toSize(); + if (cusExportSize.width() > 3840) + { + cusExportSize.setWidth(3840); + } + else if (cusExportSize.height() > 2160) + { + cusExportSize.setHeight(2160); + } + if (cusExportSize.width() < 1) + { + cusExportSize.setWidth(1); + } + else if (cusExportSize.height() < 1) + { + cusExportSize.setHeight(1); + } + QString sizeMode = settings.value("ExportSizeMode", "Default").toString(); + Qt::AspectRatioMode aspectRatio = (Qt::AspectRatioMode)settings.value("AspectRatio", Qt::KeepAspectRatio).toInt(); + settings.endGroup(); + // End Picture Settings + + int intExportProgress = 0; + for (ProfileWidget *widget : profileMap.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *picWidget = qobject_cast(widget); + SnapmaticPicture *picture = picWidget->getPicture(); + + if (pictureExportEnabled) + { + QString exportFileName = PictureExport::getPictureFileName(picture); + if (exportFileName.right(4) != ".jpg" && exportFileName.right(4) != ".png") + { + exportFileName += ".jpg"; + } + + intExportProgress++; + emit exportStringUpdate(ProfileInterface::tr("Export file %1 of %2 files").arg(QString::number(intExportProgress), QString::number(exportCount))); + emit exportProgressUpdate(intExportProgress); + + // Scale Picture + QImage exportPicture = picture->getImage(); + if (sizeMode == "Desktop") + { + QRect desktopResolution = qApp->desktop()->screenGeometry(); + exportPicture = exportPicture.scaled(desktopResolution.width(), desktopResolution.height(), aspectRatio, Qt::SmoothTransformation); + } + else if (sizeMode == "Custom") + { + exportPicture = exportPicture.scaled(cusExportSize, aspectRatio, Qt::SmoothTransformation); + } + + bool isSaved; + if (useCustomQuality) + { + isSaved = exportPicture.save(exportDirectory % "/" % exportFileName, "JPEG", customQuality); + } + else + { + isSaved = exportPicture.save(exportDirectory % "/" % exportFileName, "JPEG", 100); + } + + if (!isSaved) + { + failedExportPictures += exportFileName; + } + } + if (pictureCopyEnabled) + { + QString exportFileName = PictureExport::getPictureFileName(picture); + if (exportFileName.right(4) != ".r5e") + { + exportFileName += ".r5e"; + } + + intExportProgress++; + emit exportStringUpdate(ProfileInterface::tr("Export file %1 of %2 files").arg(QString::number(intExportProgress), QString::number(exportCount))); + emit exportProgressUpdate(intExportProgress); + + QString exportFilePath = exportDirectory % "/" % exportFileName; + if (QFile::exists(exportFilePath)) {QFile::remove(exportFilePath);} + if (!picture->exportPicture(exportDirectory % "/" % exportFileName, SnapmaticFormat::G5E_Format)) + { + failedCopyPictures += exportFileName; + } + } + } + else if (widget->getWidgetType() == "SavegameWidget") + { + SavegameWidget *sgdWidget = qobject_cast(widget); + SavegameData *savegame = sgdWidget->getSavegame(); + + QString originalFileName = savegame->getSavegameFileName(); + QFileInfo originalFileInfo(originalFileName); + QString exportFileName = originalFileInfo.fileName(); + + intExportProgress++; + emit exportStringUpdate(ProfileInterface::tr("Export file %1 of %2 files").arg(QString::number(intExportProgress), QString::number(exportCount))); + emit exportProgressUpdate(intExportProgress); + + QString exportFilePath = exportDirectory % "/" % exportFileName; + if (QFile::exists(exportFilePath)) {QFile::remove(exportFilePath);} + if (!QFile::copy(originalFileName, exportFilePath)) + { + failedSavegames += exportFileName; + } + } + } + } + emit exportFinished(); +} + +QStringList ExportThread::getFailedCopyPictures() +{ + return failedCopyPictures; +} + +QStringList ExportThread::getFailedExportPictures() +{ + return failedExportPictures; +} + +QStringList ExportThread::getFailedSavegames() +{ + return failedSavegames; +} diff --git a/ExportThread.h b/ExportThread.h new file mode 100644 index 0000000..678999c --- /dev/null +++ b/ExportThread.h @@ -0,0 +1,56 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef EXPORTTHREAD_H +#define EXPORTTHREAD_H + +#include "SnapmaticWidget.h" +#include "SavegameWidget.h" +#include "ProfileWidget.h" +#include +#include + +class ExportThread : public QThread +{ + Q_OBJECT +public: + explicit ExportThread(QMap profileMap, QString exportDirectory, bool pictureCopyEnabled, bool pictureExportEnabled, int exportCount, QObject *parent = 0); + QStringList getFailedSavegames(); + QStringList getFailedCopyPictures(); + QStringList getFailedExportPictures(); + +protected: + void run(); + +private: + QMap profileMap; + QString exportDirectory; + bool pictureCopyEnabled; + bool pictureExportEnabled; + int exportCount; + QStringList failedSavegames; + QStringList failedCopyPictures; + QStringList failedExportPictures; + +signals: + void exportStringUpdate(QString currentFileName); + void exportProgressUpdate(int currentProgressValue); + void exportFinished(); +}; + +#endif // EXPORTTHREAD_H diff --git a/GlobalString.cpp b/GlobalString.cpp new file mode 100644 index 0000000..ebae98a --- /dev/null +++ b/GlobalString.cpp @@ -0,0 +1,78 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "TranslationClass.h" +#include "GlobalString.h" +#include "config.h" +#include +#include +#include +#include +#include +#include + +GlobalString::GlobalString() +{ + +} + +QMap GlobalString::getGlobalMap() +{ + QMap globalMap; + QSettings globalFile(getLanguageFile(), QSettings::IniFormat); + globalFile.setIniCodec("UTF-8"); + globalFile.beginGroup("Global"); + for (QString globalStr : globalFile.childKeys()) + { + globalMap[globalStr] = globalFile.value(globalStr, globalStr).toString(); + } + globalFile.endGroup(); + return globalMap; +} + +QString GlobalString::getString(QString valueStr, bool *ok) +{ + QString globalString = valueStr; + QSettings globalFile(getLanguageFile(), QSettings::IniFormat); + globalFile.setIniCodec("UTF-8"); + globalFile.beginGroup("Global"); + QStringList globalStrList = globalFile.childKeys(); + if (globalStrList.contains(valueStr)) + { + if (ok != nullptr) *ok = true; + globalString = globalFile.value(valueStr, valueStr).toString(); + } + globalFile.endGroup(); + return globalString; +} + +QString GlobalString::getLanguageFile() +{ + QString language = getLanguage(); + QString languageFile = ":/global/global." % language % ".ini"; + if (!QFileInfo(languageFile).exists()) + { + languageFile = ":/global/global.en.ini"; + } + return languageFile; +} + +QString GlobalString::getLanguage() +{ + return Translator->getCurrentAreaLanguage(); +} diff --git a/GlobalString.h b/GlobalString.h new file mode 100644 index 0000000..5b9e156 --- /dev/null +++ b/GlobalString.h @@ -0,0 +1,35 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef GLOBALSTRING_H +#define GLOBALSTRING_H + +#include +#include + +class GlobalString +{ +public: + GlobalString(); + static QString getString(QString valueStr, bool *ok = nullptr); + static QString getLanguageFile(); + static QString getLanguage(); + static QMap getGlobalMap(); +}; + +#endif // GLOBALSTRING_H diff --git a/IconLoader.cpp b/IconLoader.cpp new file mode 100644 index 0000000..77814a4 --- /dev/null +++ b/IconLoader.cpp @@ -0,0 +1,50 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "IconLoader.h" +#include + +IconLoader::IconLoader() +{ + +} + +QIcon IconLoader::loadingAppIcon() +{ + QIcon appIcon; + appIcon.addFile(":/img/5sync-16.png", QSize(16, 16)); + appIcon.addFile(":/img/5sync-24.png", QSize(24, 24)); + appIcon.addFile(":/img/5sync-32.png", QSize(32, 32)); + appIcon.addFile(":/img/5sync-40.png", QSize(40, 40)); + appIcon.addFile(":/img/5sync-48.png", QSize(48, 48)); + appIcon.addFile(":/img/5sync-64.png", QSize(64, 64)); + appIcon.addFile(":/img/5sync-96.png", QSize(96, 96)); + appIcon.addFile(":/img/5sync-128.png", QSize(128, 128)); + appIcon.addFile(":/img/5sync-256.png", QSize(256, 256)); + return appIcon; +} + +QIcon IconLoader::loadingPointmakerIcon() +{ + QIcon pointmakerIcon; + pointmakerIcon.addFile(":/img/pointmaker-8.png", QSize(8, 8)); + pointmakerIcon.addFile(":/img/pointmaker-16.png", QSize(16, 16)); + pointmakerIcon.addFile(":/img/pointmaker-24.png", QSize(24, 24)); + pointmakerIcon.addFile(":/img/pointmaker-32.png", QSize(32, 32)); + return pointmakerIcon; +} diff --git a/IconLoader.h b/IconLoader.h new file mode 100644 index 0000000..f272193 --- /dev/null +++ b/IconLoader.h @@ -0,0 +1,32 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef ICONLOADER_H +#define ICONLOADER_H + +#include + +class IconLoader +{ +public: + IconLoader(); + static QIcon loadingAppIcon(); + static QIcon loadingPointmakerIcon(); +}; + +#endif // ICONLOADER_H diff --git a/ImageEditorDialog.cpp b/ImageEditorDialog.cpp new file mode 100644 index 0000000..33dd8ee --- /dev/null +++ b/ImageEditorDialog.cpp @@ -0,0 +1,205 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2017-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "ImageEditorDialog.h" +#include "ui_ImageEditorDialog.h" +#include "ProfileInterface.h" +#include "SidebarGenerator.h" +#include "StandardPaths.h" +#include "ImportDialog.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include + +ImageEditorDialog::ImageEditorDialog(SnapmaticPicture *picture, QString profileName, QWidget *parent) : + QDialog(parent), smpic(picture), profileName(profileName), + ui(new Ui::ImageEditorDialog) +{ + // Set Window Flags + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); + + ui->setupUi(this); + ui->cmdClose->setDefault(true); + ui->cmdClose->setFocus(); + + // Set Icon for Close Button + if (QIcon::hasThemeIcon("dialog-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close")); + } + else if (QIcon::hasThemeIcon("gtk-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("gtk-close")); + } + + // Set Icon for Import Button + if (QIcon::hasThemeIcon("document-import")) + { + ui->cmdReplace->setIcon(QIcon::fromTheme("document-import")); + } + + // Set Icon for Overwrite Button + if (QIcon::hasThemeIcon("document-save")) + { + ui->cmdSave->setIcon(QIcon::fromTheme("document-save")); + } + else if (QIcon::hasThemeIcon("gtk-save")) + { + ui->cmdSave->setIcon(QIcon::fromTheme("gtk-save")); + } + + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + + snapmaticResolutionLW = 516 * screenRatio; // 430 + snapmaticResolutionLH = 288 * screenRatio; // 240 + ui->labPicture->setMinimumSize(snapmaticResolutionLW, snapmaticResolutionLH); + + imageIsChanged = false; + pictureCache = picture->getImage(); + ui->labPicture->setPixmap(QPixmap::fromImage(pictureCache).scaled(snapmaticResolutionLW, snapmaticResolutionLH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + + setMaximumSize(sizeHint()); + setMinimumSize(sizeHint()); + setFixedSize(sizeHint()); +} + +ImageEditorDialog::~ImageEditorDialog() +{ + delete ui; +} + +void ImageEditorDialog::on_cmdClose_clicked() +{ + close(); +} + +void ImageEditorDialog::on_cmdReplace_clicked() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("FileDialogs"); + bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); + settings.beginGroup("ImportReplace"); + +fileDialogPreOpen: //Work? + QFileDialog fileDialog(this); + fileDialog.setFileMode(QFileDialog::ExistingFile); + fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setAcceptMode(QFileDialog::AcceptOpen); + fileDialog.setOption(QFileDialog::DontUseNativeDialog, dontUseNativeDialog); + fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + fileDialog.setWindowTitle(ProfileInterface::tr("Import...")); + fileDialog.setLabelText(QFileDialog::Accept, ProfileInterface::tr("Import")); + + // Getting readable Image formats + QString imageFormatsStr = " "; + for (QByteArray imageFormat : QImageReader::supportedImageFormats()) + { + imageFormatsStr += QString("*.") % QString::fromUtf8(imageFormat).toLower() % " "; + } + + QStringList filters; + filters << ProfileInterface::tr("All image files (%1)").arg(imageFormatsStr.trimmed()); + filters << ProfileInterface::tr("All files (**)"); + fileDialog.setNameFilters(filters); + + QList sidebarUrls = SidebarGenerator::generateSidebarUrls(fileDialog.sidebarUrls()); + + fileDialog.setSidebarUrls(sidebarUrls); + fileDialog.setDirectory(settings.value(profileName % "+Directory", StandardPaths::documentsLocation()).toString()); + fileDialog.restoreGeometry(settings.value(profileName % "+Geometry", "").toByteArray()); + + if (fileDialog.exec()) + { + QStringList selectedFiles = fileDialog.selectedFiles(); + if (selectedFiles.length() == 1) + { + QString selectedFile = selectedFiles.at(0); + QString selectedFileName = QFileInfo(selectedFile).fileName(); + + QFile snapmaticFile(selectedFile); + if (!snapmaticFile.open(QFile::ReadOnly)) + { + QMessageBox::warning(this, ProfileInterface::tr("Import"), ProfileInterface::tr("Can't import %1 because file can't be open").arg("\""+selectedFileName+"\"")); + goto fileDialogPreOpen; + } + QImage *importImage = new QImage(); + QImageReader snapmaticImageReader; + snapmaticImageReader.setDecideFormatFromContent(true); + snapmaticImageReader.setDevice(&snapmaticFile); + if (!snapmaticImageReader.read(importImage)) + { + QMessageBox::warning(this, ProfileInterface::tr("Import"), ProfileInterface::tr("Can't import %1 because file can't be parsed properly").arg("\""+selectedFileName+"\"")); + delete importImage; + goto fileDialogPreOpen; + } + ImportDialog *importDialog = new ImportDialog(profileName, this); + importDialog->setImage(importImage); + importDialog->setModal(true); + importDialog->show(); + importDialog->exec(); + if (importDialog->isImportAgreed()) + { + pictureCache = importDialog->image(); + ui->labPicture->setPixmap(QPixmap::fromImage(pictureCache).scaled(snapmaticResolutionLW, snapmaticResolutionLH, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + imageIsChanged = true; + } + delete importDialog; + } + } + + settings.setValue(profileName % "+Geometry", fileDialog.saveGeometry()); + settings.setValue(profileName % "+Directory", fileDialog.directory().absolutePath()); + settings.endGroup(); + settings.endGroup(); +} + +void ImageEditorDialog::on_cmdSave_clicked() +{ + if (imageIsChanged) + { + const QByteArray previousPicture = smpic->getPictureStream(); + bool success = smpic->setImage(pictureCache); + if (success) + { + QString currentFilePath = smpic->getPictureFilePath(); + QString originalFilePath = smpic->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + if (!smpic->exportPicture(currentFilePath)) + { + smpic->setPictureStream(previousPicture); + QMessageBox::warning(this, tr("Snapmatic Image Editor"), tr("Patching of Snapmatic Image failed because of I/O Error")); + return; + } + smpic->emitCustomSignal("PictureUpdated"); + } + else + { + QMessageBox::warning(this, tr("Snapmatic Image Editor"), tr("Patching of Snapmatic Image failed because of Image Error")); + return; + } + } + close(); +} diff --git a/ImageEditorDialog.h b/ImageEditorDialog.h new file mode 100644 index 0000000..7d130cb --- /dev/null +++ b/ImageEditorDialog.h @@ -0,0 +1,52 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef IMAGEEDITORDIALOG_H +#define IMAGEEDITORDIALOG_H + +#include "SnapmaticPicture.h" +#include + +namespace Ui { +class ImageEditorDialog; +} + +class ImageEditorDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ImageEditorDialog(SnapmaticPicture *picture, QString profileName, QWidget *parent = 0); + ~ImageEditorDialog(); + +private slots: + void on_cmdClose_clicked(); + void on_cmdReplace_clicked(); + void on_cmdSave_clicked(); + +private: + SnapmaticPicture *smpic; + QString profileName; + Ui::ImageEditorDialog *ui; + int snapmaticResolutionLW; + int snapmaticResolutionLH; + bool imageIsChanged; + QImage pictureCache; +}; + +#endif // IMAGEEDITORDIALOG_H diff --git a/ImageEditorDialog.ui b/ImageEditorDialog.ui new file mode 100644 index 0000000..8278072 --- /dev/null +++ b/ImageEditorDialog.ui @@ -0,0 +1,108 @@ + + + ImageEditorDialog + + + + 0 + 0 + 516 + 337 + + + + Overwrite Image... + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 516 + 288 + + + + + + + + + + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + + + + + + Import picture + + + &Import... + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + Apply changes + + + &Overwrite + + + + + + + Discard changes + + + &Close + + + + + + + + + + + + + diff --git a/ImportDialog.cpp b/ImportDialog.cpp new file mode 100644 index 0000000..4bce3cc --- /dev/null +++ b/ImportDialog.cpp @@ -0,0 +1,838 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2017-2019 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "ImportDialog.h" +#include "ui_ImportDialog.h" +#include "SidebarGenerator.h" +#include "StandardPaths.h" +#include "imagecropper.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// IMAGES VALUES +#define snapmaticResolutionW 960 +#define snapmaticResolutionH 536 +#define snapmaticAvatarResolution 470 +#define snapmaticAvatarPlacementW 145 +#define snapmaticAvatarPlacementH 66 + +ImportDialog::ImportDialog(QString profileName, QWidget *parent) : + QDialog(parent), profileName(profileName), + ui(new Ui::ImportDialog) +{ + // Set Window Flags + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); + + ui->setupUi(this); + ui->cmdOK->setDefault(true); + ui->cmdOK->setFocus(); + importAgreed = false; + settingsLocked = false; + watermarkAvatar = true; + watermarkPicture = false; + insideAvatarZone = false; + avatarAreaImage = QImage(":/img/avatarareaimport.png"); + selectedColour = QColor::fromRgb(0, 0, 0, 255); + + // Set Icon for OK Button + if (QIcon::hasThemeIcon("dialog-ok")) + { + ui->cmdOK->setIcon(QIcon::fromTheme("dialog-ok")); + } + else if (QIcon::hasThemeIcon("gtk-ok")) + { + ui->cmdOK->setIcon(QIcon::fromTheme("gtk-ok")); + } + + // Set Icon for Cancel Button + if (QIcon::hasThemeIcon("dialog-cancel")) + { + ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel")); + } + else if (QIcon::hasThemeIcon("gtk-cancel")) + { + ui->cmdCancel->setIcon(QIcon::fromTheme("gtk-cancel")); + } + + ui->cbIgnore->setChecked(false); + ui->labColour->setText(tr("Background Colour: %1").arg(selectedColour.name())); + ui->labBackgroundImage->setText(tr("Background Image:")); + ui->cmdBackgroundWipe->setVisible(false); + + // Set Import Settings + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("Import"); + QString currentProfile = settings.value("Profile", "Default").toString(); + settings.endGroup(); + processSettings(currentProfile); + + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + snapmaticResolutionLW = 516 * screenRatio; // 430 + snapmaticResolutionLH = 288 * screenRatio; // 240 + ui->labPicture->setMinimumSize(snapmaticResolutionLW, snapmaticResolutionLH); + + ui->vlButtom->setSpacing(6 * screenRatio); +#ifndef Q_OS_MAC + ui->vlButtom->setContentsMargins(9 * screenRatio, 6 * screenRatio, 9 * screenRatio, 9 * screenRatio); +#else + if (QApplication::style()->objectName() == "macintosh") + { + ui->vlButtom->setContentsMargins(9 * screenRatio, 9 * screenRatio, 9 * screenRatio, 9 * screenRatio); + } + else + { + ui->vlButtom->setContentsMargins(9 * screenRatio, 6 * screenRatio, 9 * screenRatio, 9 * screenRatio); + } +#endif + + // Options menu + optionsMenu = new QMenu(this); + optionsMenu->addAction(tr("&Import new Picture..."), this, SLOT(importNewPicture())); + optionsMenu->addAction(tr("&Crop Picture..."), this, SLOT(cropPicture())); + optionsMenu->addSeparator(); + optionsMenu->addAction(tr("&Load Settings..."), this, SLOT(loadImportSettings())); + optionsMenu->addAction(tr("&Save Settings..."), this, SLOT(saveImportSettings())); + ui->cmdOptions->setMenu(optionsMenu); + + setMaximumSize(sizeHint()); + setMinimumSize(sizeHint()); + setFixedSize(sizeHint()); +} + +ImportDialog::~ImportDialog() +{ + delete optionsMenu; + delete ui; +} + +void ImportDialog::processImage() +{ + if (workImage.isNull()) return; + QImage snapmaticImage = workImage; + QPixmap snapmaticPixmap(snapmaticResolutionW, snapmaticResolutionH); + snapmaticPixmap.fill(selectedColour); + QPainter snapmaticPainter(&snapmaticPixmap); + qreal screenRatioPR = AppEnv::screenRatioPR(); + if (!backImage.isNull()) + { + if (!ui->cbStretch->isChecked()) + { + int diffWidth = 0; + int diffHeight = 0; + if (backImage.width() != snapmaticResolutionW) + { + diffWidth = snapmaticResolutionW - backImage.width(); + diffWidth = diffWidth / 2; + } + else if (backImage.height() != snapmaticResolutionH) + { + diffHeight = snapmaticResolutionH - backImage.height(); + diffHeight = diffHeight / 2; + } + snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, backImage); + } + else + { + snapmaticPainter.drawImage(0, 0, QImage(backImage).scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + } + if (ui->cbAvatar->isChecked() && ui->cbForceAvatarColour->isChecked()) + { + snapmaticPainter.fillRect(snapmaticAvatarPlacementW, snapmaticAvatarPlacementH, snapmaticAvatarResolution, snapmaticAvatarResolution, selectedColour); + } + } + if (insideAvatarZone) + { + // Avatar mode + int diffWidth = 0; + int diffHeight = 0; + if (!ui->cbIgnore->isChecked()) + { + snapmaticImage = snapmaticImage.scaled(snapmaticAvatarResolution, snapmaticAvatarResolution, Qt::KeepAspectRatio, Qt::SmoothTransformation); + if (snapmaticImage.width() > snapmaticImage.height()) + { + diffHeight = snapmaticAvatarResolution - snapmaticImage.height(); + diffHeight = diffHeight / 2; + } + else if (snapmaticImage.width() < snapmaticImage.height()) + { + diffWidth = snapmaticAvatarResolution - snapmaticImage.width(); + diffWidth = diffWidth / 2; + } + } + else + { + snapmaticImage = snapmaticImage.scaled(snapmaticAvatarResolution, snapmaticAvatarResolution, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + snapmaticPainter.drawImage(snapmaticAvatarPlacementW + diffWidth, snapmaticAvatarPlacementH + diffHeight, snapmaticImage); + if (ui->cbWatermark->isChecked()) { processWatermark(&snapmaticPainter); } + imageTitle = tr("Custom Avatar", "Custom Avatar Description in SC, don't use Special Character!"); + } + else + { + // Picture mode + int diffWidth = 0; + int diffHeight = 0; + if (!ui->cbIgnore->isChecked()) + { + snapmaticImage = snapmaticImage.scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::KeepAspectRatio, Qt::SmoothTransformation); + if (snapmaticImage.width() != snapmaticResolutionW) + { + diffWidth = snapmaticResolutionW - snapmaticImage.width(); + diffWidth = diffWidth / 2; + } + else if (snapmaticImage.height() != snapmaticResolutionH) + { + diffHeight = snapmaticResolutionH - snapmaticImage.height(); + diffHeight = diffHeight / 2; + } + } + else + { + snapmaticImage = snapmaticImage.scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, snapmaticImage); + if (ui->cbWatermark->isChecked()) { processWatermark(&snapmaticPainter); } + imageTitle = tr("Custom Picture", "Custom Picture Description in SC, don't use Special Character!"); + } + snapmaticPainter.end(); + newImage = snapmaticPixmap.toImage(); +#if QT_VERSION >= 0x050600 + snapmaticPixmap.setDevicePixelRatio(screenRatioPR); +#endif + ui->labPicture->setPixmap(snapmaticPixmap.scaled(snapmaticResolutionLW * screenRatioPR, snapmaticResolutionLH * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); +} + +void ImportDialog::processWatermark(QPainter *snapmaticPainter) +{ + bool blackWatermark = false; + bool redWatermark = false; + if (selectedColour.red() > 127) + { + if (selectedColour.green() > 127 || selectedColour.blue() > 127) + { + redWatermark = true; + } + } + else + { + redWatermark = true; + } + if (selectedColour.lightness() > 127) + { + blackWatermark = true; + } + // draw watermark + if (redWatermark) + { + snapmaticPainter->drawImage(0, 0, QImage(":/img/watermark_2r.png")); + } + else + { + QImage viewWatermark = QImage(":/img/watermark_2b.png"); + if (!blackWatermark) + { + viewWatermark.invertPixels(QImage::InvertRgb); + } + snapmaticPainter->drawImage(0, 0, viewWatermark); + } + QImage textWatermark = QImage(":/img/watermark_1b.png"); + if (!blackWatermark) + { + textWatermark.invertPixels(QImage::InvertRgb); + } + snapmaticPainter->drawImage(0, 0, textWatermark); +} + +void ImportDialog::processSettings(QString settingsProfile, bool setDefault) +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("Import"); + if (setDefault) + { + settings.setValue("Profile", settingsProfile); + } + if (settingsProfile == "Default") + { + watermarkAvatar = true; + watermarkPicture = false; + selectedColour = QColor::fromRgb(0, 0, 0, 255); + backImage = QImage(); + ui->cbStretch->setChecked(false); + ui->cbForceAvatarColour->setChecked(false); + } + else + { + settings.beginGroup(settingsProfile); + watermarkAvatar = settings.value("WatermarkAvatar", true).toBool(); + watermarkPicture = settings.value("WatermarkPicture", false).toBool(); + backImage = qvariant_cast(settings.value("BackgroundImage", QImage())); + selectedColour = qvariant_cast(settings.value("SelectedColour", QColor::fromRgb(0, 0, 0, 255))); + ui->cbStretch->setChecked(settings.value("BackgroundStretch", false).toBool()); + ui->cbForceAvatarColour->setChecked(settings.value("ForceAvatarColour", false).toBool()); + settings.endGroup(); + } + if (!workImage.isNull()) + { + if (ui->cbAvatar->isChecked()) + { + ui->cbWatermark->setChecked(watermarkAvatar); + } + else + { + ui->cbWatermark->setChecked(watermarkPicture); + } + } + ui->labColour->setText(tr("Background Colour: %1").arg(selectedColour.name())); + if (!backImage.isNull()) + { + ui->labBackgroundImage->setText(tr("Background Image: %1").arg(tr("Storage", "Background Image: Storage"))); + ui->cmdBackgroundWipe->setVisible(true); + } + else + { + ui->labBackgroundImage->setText(tr("Background Image:")); + ui->cmdBackgroundWipe->setVisible(false); + } + settings.endGroup(); +} + +void ImportDialog::saveSettings(QString settingsProfile) +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("Import"); + settings.beginGroup(settingsProfile); + settings.setValue("WatermarkAvatar", watermarkAvatar); + settings.setValue("WatermarkPicture", watermarkPicture); + settings.setValue("BackgroundImage", backImage); + settings.setValue("SelectedColour", selectedColour); + settings.setValue("BackgroundStretch", ui->cbStretch->isChecked()); + settings.setValue("ForceAvatarColour", ui->cbForceAvatarColour->isChecked()); + settings.endGroup(); + settings.setValue("Profile", settingsProfile); + settings.endGroup(); +} + +void ImportDialog::cropPicture() +{ + qreal screenRatio = AppEnv::screenRatio(); + + QDialog cropDialog(this); +#if QT_VERSION >= 0x050000 + cropDialog.setObjectName(QStringLiteral("CropDialog")); +#else + cropDialog.setObjectName(QString::fromUtf8("CropDialog")); +#endif + cropDialog.setWindowTitle(tr("Crop Picture...")); + cropDialog.setWindowFlags(cropDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + cropDialog.setModal(true); + + QVBoxLayout cropLayout; +#if QT_VERSION >= 0x050000 + cropLayout.setObjectName(QStringLiteral("CropLayout")); +#else + cropLayout.setObjectName(QString::fromUtf8("CropLayout")); +#endif + cropLayout.setContentsMargins(0, 0, 0, 0); + cropLayout.setSpacing(0); + cropDialog.setLayout(&cropLayout); + + ImageCropper imageCropper(&cropDialog); +#if QT_VERSION >= 0x050000 + imageCropper.setObjectName(QStringLiteral("ImageCropper")); +#else + imageCropper.setObjectName(QString::fromUtf8("ImageCropper")); +#endif + imageCropper.setBackgroundColor(Qt::black); + imageCropper.setCroppingRectBorderColor(QColor(255, 255, 255, 127)); + imageCropper.setImage(QPixmap::fromImage(workImage, Qt::AutoColor)); + imageCropper.setProportion(QSize(1, 1)); + imageCropper.setFixedSize(workImage.size()); + cropLayout.addWidget(&imageCropper); + + QHBoxLayout buttonLayout; +#if QT_VERSION >= 0x050000 + cropLayout.setObjectName(QStringLiteral("ButtonLayout")); +#else + cropLayout.setObjectName(QString::fromUtf8("ButtonLayout")); +#endif + cropLayout.addLayout(&buttonLayout); + + QPushButton cropButton(&cropDialog); +#if QT_VERSION >= 0x050000 + cropButton.setObjectName(QStringLiteral("CropButton")); +#else + cropButton.setObjectName(QString::fromUtf8("CropButton")); +#endif + cropButton.setMinimumSize(0, 40 * screenRatio); + cropButton.setText(tr("&Crop")); + cropButton.setToolTip(tr("Crop Picture")); + QObject::connect(&cropButton, SIGNAL(clicked(bool)), &cropDialog, SLOT(accept())); + + buttonLayout.addWidget(&cropButton); + + cropDialog.show(); + cropDialog.setFixedSize(cropDialog.sizeHint()); + if (cropDialog.exec() == QDialog::Accepted) + { + QImage *croppedImage = new QImage(imageCropper.cropImage().toImage()); + setImage(croppedImage); + } +} + +void ImportDialog::importNewPicture() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("FileDialogs"); + bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); + settings.beginGroup("ImportCopy"); + +fileDialogPreOpen: //Work? + QFileDialog fileDialog(this); + fileDialog.setFileMode(QFileDialog::ExistingFile); + fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setAcceptMode(QFileDialog::AcceptOpen); + fileDialog.setOption(QFileDialog::DontUseNativeDialog, dontUseNativeDialog); + fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + fileDialog.setWindowTitle(QApplication::translate("ProfileInterface", "Import...")); + fileDialog.setLabelText(QFileDialog::Accept, QApplication::translate("ProfileInterface", "Import")); + + // Getting readable Image formats + QString imageFormatsStr = " "; + for (QByteArray imageFormat : QImageReader::supportedImageFormats()) + { + imageFormatsStr += QString("*.") % QString::fromUtf8(imageFormat).toLower() % " "; + } + + QStringList filters; + filters << QApplication::translate("ProfileInterface", "All image files (%1)").arg(imageFormatsStr.trimmed()); + filters << QApplication::translate("ProfileInterface", "All files (**)"); + fileDialog.setNameFilters(filters); + + QList sidebarUrls = SidebarGenerator::generateSidebarUrls(fileDialog.sidebarUrls()); + + fileDialog.setSidebarUrls(sidebarUrls); + fileDialog.setDirectory(settings.value(profileName % "+Directory", StandardPaths::documentsLocation()).toString()); + fileDialog.restoreGeometry(settings.value(profileName % "+Geometry", "").toByteArray()); + + if (fileDialog.exec()) + { + QStringList selectedFiles = fileDialog.selectedFiles(); + if (selectedFiles.length() == 1) + { + QString selectedFile = selectedFiles.at(0); + QString selectedFileName = QFileInfo(selectedFile).fileName(); + + QFile snapmaticFile(selectedFile); + if (!snapmaticFile.open(QFile::ReadOnly)) + { + QMessageBox::warning(this, QApplication::translate("ProfileInterface", "Import"), QApplication::translate("ProfileInterface", "Can't import %1 because file can't be open").arg("\""+selectedFileName+"\"")); + goto fileDialogPreOpen; + } + QImage *importImage = new QImage(); + QImageReader snapmaticImageReader; + snapmaticImageReader.setDecideFormatFromContent(true); + snapmaticImageReader.setDevice(&snapmaticFile); + if (!snapmaticImageReader.read(importImage)) + { + QMessageBox::warning(this, QApplication::translate("ProfileInterface", "Import"), QApplication::translate("ProfileInterface", "Can't import %1 because file can't be parsed properly").arg("\""+selectedFileName+"\"")); + delete importImage; + goto fileDialogPreOpen; + } + setImage(importImage); + } + } + + settings.setValue(profileName % "+Geometry", fileDialog.saveGeometry()); + settings.setValue(profileName % "+Directory", fileDialog.directory().absolutePath()); + settings.endGroup(); + settings.endGroup(); +} + +void ImportDialog::loadImportSettings() +{ + if (settingsLocked) + { + QMessageBox::information(this, tr("Load Settings..."), tr("Please import a new picture first")); + return; + } + bool ok; + QStringList profileList; + profileList << tr("Default", "Default as Default Profile") + << tr("Profile %1", "Profile %1 as Profile 1").arg("1") + << tr("Profile %1", "Profile %1 as Profile 1").arg("2") + << tr("Profile %1", "Profile %1 as Profile 1").arg("3") + << tr("Profile %1", "Profile %1 as Profile 1").arg("4") + << tr("Profile %1", "Profile %1 as Profile 1").arg("5"); + QString sProfile = QInputDialog::getItem(this, tr("Load Settings..."), tr("Please select your settings profile"), profileList, 0, false, &ok, windowFlags()); + if (ok) + { + QString pProfile; + if (sProfile == tr("Default", "Default as Default Profile")) + { + pProfile = "Default"; + } + else if (sProfile == tr("Profile %1", "Profile %1 as Profile 1").arg("1")) + { + pProfile = "Profile 1"; + } + else if (sProfile == tr("Profile %1", "Profile %1 as Profile 1").arg("2")) + { + pProfile = "Profile 2"; + } + else if (sProfile == tr("Profile %1", "Profile %1 as Profile 1").arg("3")) + { + pProfile = "Profile 3"; + } + else if (sProfile == tr("Profile %1", "Profile %1 as Profile 1").arg("4")) + { + pProfile = "Profile 4"; + } + else if (sProfile == tr("Profile %1", "Profile %1 as Profile 1").arg("5")) + { + pProfile = "Profile 5"; + } + processSettings(pProfile, true); + processImage(); + } +} + +void ImportDialog::saveImportSettings() +{ + if (settingsLocked) + { + QMessageBox::information(this, tr("Save Settings..."), tr("Please import a new picture first")); + return; + } + bool ok; + QStringList profileList; + profileList << tr("Profile %1", "Profile %1 as Profile 1").arg("1") + << tr("Profile %1", "Profile %1 as Profile 1").arg("2") + << tr("Profile %1", "Profile %1 as Profile 1").arg("3") + << tr("Profile %1", "Profile %1 as Profile 1").arg("4") + << tr("Profile %1", "Profile %1 as Profile 1").arg("5"); + QString sProfile = QInputDialog::getItem(this, tr("Save Settings..."), tr("Please select your settings profile"), profileList, 0, false, &ok, windowFlags()); + if (ok) + { + QString pProfile; + if (sProfile == tr("Profile %1", "Profile %1 as Profile 1").arg("1")) + { + pProfile = "Profile 1"; + } + else if (sProfile == tr("Profile %1", "Profile %1 as Profile 1").arg("2")) + { + pProfile = "Profile 2"; + } + else if (sProfile == tr("Profile %1", "Profile %1 as Profile 1").arg("3")) + { + pProfile = "Profile 3"; + } + else if (sProfile == tr("Profile %1", "Profile %1 as Profile 1").arg("4")) + { + pProfile = "Profile 4"; + } + else if (sProfile == tr("Profile %1", "Profile %1 as Profile 1").arg("5")) + { + pProfile = "Profile 5"; + } + saveSettings(pProfile); + } +} + +QImage ImportDialog::image() +{ + return newImage; +} + +void ImportDialog::setImage(QImage *image_) +{ + workImage = QImage(); + if (image_->width() == image_->height()) + { + insideAvatarZone = true; + ui->cbAvatar->setChecked(true); + if (image_->height() > snapmaticResolutionH) + { + workImage = image_->scaled(snapmaticResolutionH, snapmaticResolutionH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + delete image_; + } + else + { + workImage = *image_; + delete image_; + } + } + else if (image_->width() > snapmaticResolutionW && image_->width() > image_->height()) + { + insideAvatarZone = false; + ui->cbAvatar->setChecked(false); + workImage = image_->scaledToWidth(snapmaticResolutionW, Qt::SmoothTransformation); + delete image_; + } + else if (image_->height() > snapmaticResolutionH && image_->height() > image_->width()) + { + insideAvatarZone = false; + ui->cbAvatar->setChecked(false); + workImage = image_->scaledToHeight(snapmaticResolutionH, Qt::SmoothTransformation); + delete image_; + } + else + { + insideAvatarZone = false; + ui->cbAvatar->setChecked(false); + workImage = *image_; + delete image_; + } + processImage(); + lockSettings(false); +} + +void ImportDialog::lockSettings(bool lock) +{ + ui->cbAvatar->setDisabled(lock); + ui->cbForceAvatarColour->setDisabled(lock); + ui->cbIgnore->setDisabled(lock); + ui->cbStretch->setDisabled(lock); + ui->cbWatermark->setDisabled(lock); + ui->cmdBackgroundChange->setDisabled(lock); + ui->cmdBackgroundWipe->setDisabled(lock); + ui->cmdColourChange->setDisabled(lock); + ui->labBackgroundImage->setDisabled(lock); + ui->labColour->setDisabled(lock); + ui->gbSettings->setDisabled(lock); + ui->gbBackground->setDisabled(lock); + ui->cmdOK->setDisabled(lock); + settingsLocked = lock; +} + +void ImportDialog::enableOverwriteMode() +{ + setWindowTitle(QApplication::translate("ImageEditorDialog", "Overwrite Image...")); + ui->cmdOK->setText(QApplication::translate("ImageEditorDialog", "&Overwrite")); + ui->cmdOK->setToolTip(QApplication::translate("ImageEditorDialog", "Apply changes")); + ui->cmdCancel->setText(QApplication::translate("ImageEditorDialog", "&Close")); + ui->cmdCancel->setToolTip(QApplication::translate("ImageEditorDialog", "Discard changes")); + ui->cmdCancel->setDefault(true); + ui->cmdCancel->setFocus(); + lockSettings(true); +} + +bool ImportDialog::isImportAgreed() +{ + return importAgreed; +} + +bool ImportDialog::areSettingsLocked() +{ + return settingsLocked; +} + +QString ImportDialog::getImageTitle() +{ + return imageTitle; +} + +void ImportDialog::on_cbIgnore_toggled(bool checked) +{ + Q_UNUSED(checked) + processImage(); +} + +void ImportDialog::on_cbAvatar_toggled(bool checked) +{ + if (!workImage.isNull() && workImage.width() == workImage.height() && !checked) + { + if (QMessageBox::No == QMessageBox::warning(this, tr("Snapmatic Avatar Zone"), tr("Are you sure to use a square image outside of the Avatar Zone?\nWhen you want to use it as Avatar the image will be detached!"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No)) + { + ui->cbAvatar->setChecked(true); + insideAvatarZone = true; + return; + } + } + insideAvatarZone = ui->cbAvatar->isChecked(); + watermarkBlock = true; + if (insideAvatarZone) + { + ui->cbWatermark->setChecked(watermarkAvatar); + } + else + { + ui->cbWatermark->setChecked(watermarkPicture); + } + watermarkBlock = false; + processImage(); +} + +void ImportDialog::on_cmdCancel_clicked() +{ + close(); +} + +void ImportDialog::on_cmdOK_clicked() +{ + importAgreed = true; + close(); +} + +void ImportDialog::on_labPicture_labelPainted() +{ + if (insideAvatarZone) + { + QImage avatarAreaFinalImage(avatarAreaImage); + if (selectedColour.lightness() > 127) + { + avatarAreaFinalImage.setColor(1, qRgb(0, 0, 0)); + } + QPainter labelPainter(ui->labPicture); + labelPainter.drawImage(0, 0, avatarAreaFinalImage.scaled(snapmaticResolutionLW, snapmaticResolutionLH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + labelPainter.end(); + } +} + +void ImportDialog::on_cmdColourChange_clicked() +{ + QColor newSelectedColour = QColorDialog::getColor(selectedColour, this, tr("Select Colour...")); + if (newSelectedColour.isValid()) + { + selectedColour = newSelectedColour; + ui->labColour->setText(tr("Background Colour: %1").arg(selectedColour.name())); + processImage(); + } +} + +void ImportDialog::on_cmdBackgroundChange_clicked() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("FileDialogs"); + bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); + settings.beginGroup("ImportBackground"); + +fileDialogPreOpen: + QFileDialog fileDialog(this); + fileDialog.setFileMode(QFileDialog::ExistingFiles); + fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setAcceptMode(QFileDialog::AcceptOpen); + fileDialog.setOption(QFileDialog::DontUseNativeDialog, dontUseNativeDialog); + fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + fileDialog.setWindowTitle(QApplication::translate("ProfileInterface", "Import...")); + fileDialog.setLabelText(QFileDialog::Accept, QApplication::translate("ProfileInterface", "Import")); + + // Getting readable Image formats + QString imageFormatsStr = " "; + for (QByteArray imageFormat : QImageReader::supportedImageFormats()) + { + imageFormatsStr += QString("*.") % QString::fromUtf8(imageFormat).toLower() % " "; + } + + QStringList filters; + filters << QApplication::translate("ProfileInterface", "All image files (%1)").arg(imageFormatsStr.trimmed()); + filters << QApplication::translate("ProfileInterface", "All files (**)"); + fileDialog.setNameFilters(filters); + + QList sidebarUrls = SidebarGenerator::generateSidebarUrls(fileDialog.sidebarUrls()); + + fileDialog.setSidebarUrls(sidebarUrls); + fileDialog.setDirectory(settings.value("Directory", StandardPaths::documentsLocation()).toString()); + fileDialog.restoreGeometry(settings.value("Geometry", "").toByteArray()); + + if (fileDialog.exec()) + { + QStringList selectedFiles = fileDialog.selectedFiles(); + if (selectedFiles.length() == 1) + { + QString selectedFile = selectedFiles.at(0); + QString selectedFileName = QFileInfo(selectedFile).fileName(); + + QFile snapmaticFile(selectedFile); + if (!snapmaticFile.open(QFile::ReadOnly)) + { + QMessageBox::warning(this, QApplication::translate("ProfileInterface", "Import"), QApplication::translate("ProfileInterface", "Can't import %1 because file can't be open").arg("\""+selectedFileName+"\"")); + goto fileDialogPreOpen; + } + QImage importImage; + QImageReader snapmaticImageReader; + snapmaticImageReader.setDecideFormatFromContent(true); + snapmaticImageReader.setDevice(&snapmaticFile); + if (!snapmaticImageReader.read(&importImage)) + { + QMessageBox::warning(this, QApplication::translate("ProfileInterface", "Import"), QApplication::translate("ProfileInterface", "Can't import %1 because file can't be parsed properly").arg("\""+selectedFileName+"\"")); + goto fileDialogPreOpen; + } + backImage = importImage.scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::KeepAspectRatio, Qt::SmoothTransformation); + backgroundPath = selectedFile; + ui->labBackgroundImage->setText(tr("Background Image: %1").arg(tr("File", "Background Image: File"))); + ui->cmdBackgroundWipe->setVisible(true); + processImage(); + } + } + + settings.setValue("Geometry", fileDialog.saveGeometry()); + settings.setValue("Directory", fileDialog.directory().absolutePath()); + settings.endGroup(); + settings.endGroup(); +} + +void ImportDialog::on_cmdBackgroundWipe_clicked() +{ + backImage = QImage(); + ui->labBackgroundImage->setText(tr("Background Image:")); + ui->cmdBackgroundWipe->setVisible(false); + processImage(); +} + +void ImportDialog::on_cbStretch_toggled(bool checked) +{ + Q_UNUSED(checked) + processImage(); +} + +void ImportDialog::on_cbForceAvatarColour_toggled(bool checked) +{ + Q_UNUSED(checked) + processImage(); +} + +void ImportDialog::on_cbWatermark_toggled(bool checked) +{ + if (!watermarkBlock) + { + if (insideAvatarZone) + { + watermarkAvatar = checked; + } + else + { + watermarkPicture = checked; + } + processImage(); + } +} diff --git a/ImportDialog.h b/ImportDialog.h new file mode 100644 index 0000000..41b1ba7 --- /dev/null +++ b/ImportDialog.h @@ -0,0 +1,86 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef IMPORTDIALOG_H +#define IMPORTDIALOG_H + +#include +#include + +namespace Ui { +class ImportDialog; +} + +class ImportDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ImportDialog(QString profileName, QWidget *parent = 0); + ~ImportDialog(); + QImage image(); + QString getImageTitle(); + void setImage(QImage *image); + void lockSettings(bool lock); + void enableOverwriteMode(); + bool isImportAgreed(); + bool areSettingsLocked(); + +private slots: + void processImage(); + void cropPicture(); + void importNewPicture(); + void loadImportSettings(); + void saveImportSettings(); + void on_cbIgnore_toggled(bool checked); + void on_cbAvatar_toggled(bool checked); + void on_cmdCancel_clicked(); + void on_cmdOK_clicked(); + void on_labPicture_labelPainted(); + void on_cmdColourChange_clicked(); + void on_cmdBackgroundChange_clicked(); + void on_cmdBackgroundWipe_clicked(); + void on_cbStretch_toggled(bool checked); + void on_cbForceAvatarColour_toggled(bool checked); + void on_cbWatermark_toggled(bool checked); + +private: + QString profileName; + Ui::ImportDialog *ui; + QImage avatarAreaImage; + QString backgroundPath; + QString imageTitle; + QImage backImage; + QImage workImage; + QImage newImage; + QColor selectedColour; + QMenu *optionsMenu; + bool insideAvatarZone; + bool watermarkPicture; + bool watermarkAvatar; + bool watermarkBlock; + bool settingsLocked; + bool importAgreed; + int snapmaticResolutionLW; + int snapmaticResolutionLH; + void processWatermark(QPainter *snapmaticPainter); + void processSettings(QString settingsProfile, bool setDefault = false); + void saveSettings(QString settingsProfile); +}; + +#endif // IMPORTDIALOG_H diff --git a/ImportDialog.ui b/ImportDialog.ui new file mode 100644 index 0000000..c62dcd7 --- /dev/null +++ b/ImportDialog.ui @@ -0,0 +1,382 @@ + + + ImportDialog + + + + 0 + 0 + 516 + 512 + + + + + 516 + 512 + + + + Import... + + + true + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 516 + 288 + + + + + + + + + + + + 0 + 0 + + + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + + 9 + + + 6 + + + 9 + + + 9 + + + + + Picture + + + + + + + + + 0 + 0 + + + + Avatar + + + + + + + + 0 + 0 + + + + Ignore Aspect Ratio + + + + + + + + + + + + 0 + 0 + + + + Watermark + + + + + + + + + + + + Background + + + + + + + + + + Background Colour: <span style="color: %1">%1</span> + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Select background colour + + + ... + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Background Image: + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Select background image + + + ... + + + + + + + Remove background image + + + X + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + Force Colour in Avatar Zone + + + + + + + true + + + Ignore Aspect Ratio + + + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + Import options + + + &Options + + + false + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Import picture + + + &OK + + + + + + + + 0 + 0 + + + + Discard picture + + + &Cancel + + + + + + + + + + + + + UiModLabel + QLabel +
uimod/UiModLabel.h
+ + mouseMoved() + mouseReleased() + mousePressed() + mouseDoubleClicked() + +
+
+ + +
diff --git a/JsonEditorDialog.cpp b/JsonEditorDialog.cpp new file mode 100644 index 0000000..a6a564f --- /dev/null +++ b/JsonEditorDialog.cpp @@ -0,0 +1,233 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2017-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "JsonEditorDialog.h" +#include "ui_JsonEditorDialog.h" +#include "SnapmaticEditor.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include + +#if QT_VERSION >= 0x050200 +#include +#include +#endif + +#ifdef GTA5SYNC_TELEMETRY +#include "TelemetryClass.h" +#endif + +JsonEditorDialog::JsonEditorDialog(SnapmaticPicture *picture, QWidget *parent) : + QDialog(parent), smpic(picture), + ui(new Ui::JsonEditorDialog) +{ + // Set Window Flags + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowMinMaxButtonsHint); + + ui->setupUi(this); + ui->cmdClose->setDefault(true); + ui->cmdClose->setFocus(); + + // Set Icon for Close Button + if (QIcon::hasThemeIcon("dialog-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close")); + } + else if (QIcon::hasThemeIcon("gtk-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("gtk-close")); + } + + // Set Icon for Save Button + if (QIcon::hasThemeIcon("document-save")) + { + ui->cmdSave->setIcon(QIcon::fromTheme("document-save")); + } + else if (QIcon::hasThemeIcon("gtk-save")) + { + ui->cmdSave->setIcon(QIcon::fromTheme("gtk-save")); + } + + jsonCode = picture->getJsonStr(); + +#if QT_VERSION >= 0x050200 + ui->txtJSON->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); +#endif + QFontMetrics fontMetrics(ui->txtJSON->font()); + ui->txtJSON->setTabStopWidth(fontMetrics.width(" ")); + + QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonCode.toUtf8()); + ui->txtJSON->setStyleSheet("QPlainTextEdit{background-color: rgb(46, 47, 48); color: rgb(238, 231, 172);}"); + ui->txtJSON->setPlainText(QString::fromUtf8(jsonDocument.toJson(QJsonDocument::Indented)).trimmed()); + jsonHl = new JSHighlighter(ui->txtJSON->document()); + + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); +#ifndef Q_OS_MAC + ui->hlButtons->setSpacing(6 * screenRatio); + ui->hlButtons->setContentsMargins(9 * screenRatio, 0, 9 * screenRatio, 0); + ui->vlInterface->setContentsMargins(0, 0, 0, 9 * screenRatio); +#else + ui->hlButtons->setSpacing(6 * screenRatio); + ui->hlButtons->setContentsMargins(9 * screenRatio, 0, 9 * screenRatio, 0); + ui->vlInterface->setContentsMargins(0, 0, 0, 9 * screenRatio); +#endif + if (screenRatio > 1) + { + ui->lineJSON->setMinimumHeight(qRound(1 * screenRatio)); + ui->lineJSON->setMaximumHeight(qRound(1 * screenRatio)); + ui->lineJSON->setLineWidth(qRound(1 * screenRatio)); + } + resize(450 * screenRatio, 550 * screenRatio); +} + +JsonEditorDialog::~JsonEditorDialog() +{ + delete jsonHl; + delete ui; +} + +void JsonEditorDialog::closeEvent(QCloseEvent *ev) +{ + QString jsonPatched = QString(ui->txtJSON->toPlainText()).replace("\t", " "); + QJsonDocument jsonNew = QJsonDocument::fromJson(jsonPatched.toUtf8()); + QJsonDocument jsonOriginal = QJsonDocument::fromJson(jsonCode.toUtf8()); + QString originalCode = QString::fromUtf8(jsonOriginal.toJson(QJsonDocument::Compact)); + QString newCode = QString::fromUtf8(jsonNew.toJson(QJsonDocument::Compact)); + if (newCode != originalCode) + { + QMessageBox::StandardButton button = QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("

Unsaved changes detected

You want to save the JSON content before you quit?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::Cancel); + if (button == QMessageBox::Yes) + { + if (saveJsonContent()) + { + ev->accept(); + } + else + { + ev->ignore(); + } + return; + } + else if (button == QMessageBox::No) + { + ev->accept(); + return; + } + else + { + ev->ignore(); + return; + } + } +} + +bool JsonEditorDialog::saveJsonContent() +{ + QString jsonPatched = QString(ui->txtJSON->toPlainText()).replace("\t", " "); + QJsonDocument jsonNew = QJsonDocument::fromJson(jsonPatched.toUtf8()); + if (!jsonNew.isEmpty()) + { + QJsonDocument jsonOriginal = QJsonDocument::fromJson(jsonCode.toUtf8()); + QString originalCode = QString::fromUtf8(jsonOriginal.toJson(QJsonDocument::Compact)); + QString newCode = QString::fromUtf8(jsonNew.toJson(QJsonDocument::Compact)); + if (newCode != originalCode) + { + QString currentFilePath = smpic->getPictureFilePath(); + QString originalFilePath = smpic->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + smpic->setJsonStr(newCode, true); + if (!smpic->isJsonOk()) + { + QString lastStep = smpic->getLastStep(false); + QString readableError; + if (lastStep.contains("JSONINCOMPLETE") && lastStep.contains("JSONERROR")) + { + readableError = SnapmaticPicture::tr("JSON is incomplete and malformed"); + } + else if (lastStep.contains("JSONINCOMPLETE")) + { + readableError = SnapmaticPicture::tr("JSON is incomplete"); + } + else if (lastStep.contains("JSONERROR")) + { + readableError = SnapmaticPicture::tr("JSON is malformed"); + } + else + { + readableError = tr("JSON Error"); + } + QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of %1").arg(readableError)); + smpic->setJsonStr(originalCode, true); + return false; + } + if (!smpic->exportPicture(currentFilePath)) + { + QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of I/O Error")); + smpic->setJsonStr(originalCode, true); + return false; + } + jsonCode = newCode; + smpic->updateStrings(); + smpic->emitUpdate(); +#ifdef GTA5SYNC_TELEMETRY + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "JSONEdited"; + jsonObject["EditedSize"] = QString::number(smpic->getContentMaxLength()); + jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } +#endif + return true; + } + return true; + } + else + { + QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of JSON Error")); + return false; + } +} + +void JsonEditorDialog::on_cmdClose_clicked() +{ + close(); +} + +void JsonEditorDialog::on_cmdSave_clicked() +{ + if (saveJsonContent()) + { + close(); + } +} diff --git a/JsonEditorDialog.h b/JsonEditorDialog.h new file mode 100644 index 0000000..e93bc57 --- /dev/null +++ b/JsonEditorDialog.h @@ -0,0 +1,56 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef JSONEDITORDIALOG_H +#define JSONEDITORDIALOG_H + +#include "SnapmaticPicture.h" +#include "JSHighlighter.h" +#include + +namespace Ui { +class JsonEditorDialog; +} + +class JsonEditorDialog : public QDialog +{ + Q_OBJECT + +public: + explicit JsonEditorDialog(SnapmaticPicture *picture, QWidget *parent = 0); + bool saveJsonContent(); + ~JsonEditorDialog(); + +protected: + void closeEvent(QCloseEvent *ev); + +private slots: + void on_cmdClose_clicked(); + void on_cmdSave_clicked(); + +signals: + void codeUpdated(QString jsonCode); + +private: + QString jsonCode; + JSHighlighter *jsonHl; + SnapmaticPicture *smpic; + Ui::JsonEditorDialog *ui; +}; + +#endif // JSONEDITORDIALOG_H diff --git a/JsonEditorDialog.ui b/JsonEditorDialog.ui new file mode 100644 index 0000000..a52f087 --- /dev/null +++ b/JsonEditorDialog.ui @@ -0,0 +1,145 @@ + + + JsonEditorDialog + + + + 0 + 0 + 550 + 450 + + + + Snapmatic JSON Editor + + + + 0 + + + 0 + + + 0 + + + 9 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + + + + + + 0 + 1 + + + + + 16777215 + 1 + + + + QFrame[frameShape="4"] +{ + color: black; +} + + + QFrame::Plain + + + 1 + + + Qt::Horizontal + + + + + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Apply changes + + + &Save + + + + + + + + 0 + 0 + + + + Discard changes + + + &Close + + + + + + + + + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/LICENSE.GPL b/LICENSE.GPL new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE.GPL @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/LICENSE.LGPL b/LICENSE.LGPL new file mode 100644 index 0000000..0a04128 --- /dev/null +++ b/LICENSE.LGPL @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/MapLocationDialog.cpp b/MapLocationDialog.cpp new file mode 100644 index 0000000..7c1b7ba --- /dev/null +++ b/MapLocationDialog.cpp @@ -0,0 +1,204 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2017-2019 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "MapLocationDialog.h" +#include "ui_MapLocationDialog.h" +#include "IconLoader.h" +#include "AppEnv.h" +#include +#include +#include + +MapLocationDialog::MapLocationDialog(double x, double y, QWidget *parent) : + QDialog(parent), xpos_old(x), ypos_old(y), + ui(new Ui::MapLocationDialog) +{ + // Set Window Flags + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); + + ui->setupUi(this); + ui->cmdDone->setVisible(false); + ui->cmdApply->setVisible(false); + ui->cmdRevert->setVisible(false); + ui->cmdDone->setCursor(Qt::ArrowCursor); + ui->cmdClose->setCursor(Qt::ArrowCursor); + + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + int widgetMargin = qRound(3 * screenRatio); + ui->hlMapDialog->setContentsMargins(widgetMargin, widgetMargin, widgetMargin, widgetMargin); + ui->vlMapDialog->setSpacing(widgetMargin); + setMinimumSize(500 * screenRatio, 600 * screenRatio); + setMaximumSize(500 * screenRatio, 600 * screenRatio); + setFixedSize(500 * screenRatio, 600 * screenRatio); + setMouseTracking(true); + + changeMode = false; + propUpdate = false; + drawPointOnMap(xpos_old, ypos_old); +} + +MapLocationDialog::~MapLocationDialog() +{ + delete ui; +} + +void MapLocationDialog::drawPointOnMap(double xpos_d, double ypos_d) +{ + qreal screenRatio = AppEnv::screenRatio(); + qreal screenRatioPR = AppEnv::screenRatioPR(); + int pointMakerSize = 8 * screenRatio * screenRatioPR; + QPixmap pointMakerPixmap = IconLoader::loadingPointmakerIcon().pixmap(QSize(pointMakerSize, pointMakerSize)); + QSize mapPixelSize = QSize(width() * screenRatioPR, height() * screenRatioPR); + + int pointMakerHalfSize = pointMakerSize / 2; + long xpos_ms = qRound(xpos_d); + long ypos_ms = qRound(ypos_d); + double xpos_ma = xpos_ms + 4000; + double ypos_ma = ypos_ms + 4000; + double xrat = (double)mapPixelSize.width() / 10000; + double yrat = (double)mapPixelSize.height() / 12000; + long xpos_mp = qRound(xpos_ma * xrat); + long ypos_mp = qRound(ypos_ma * yrat); + long xpos_pr = xpos_mp - pointMakerHalfSize; + long ypos_pr = ypos_mp + pointMakerHalfSize; + + QPixmap mapPixmap(mapPixelSize); + QPainter mapPainter(&mapPixmap); + mapPainter.drawPixmap(0, 0, mapPixelSize.width(), mapPixelSize.height(), QPixmap(":/img/mappreview.jpg").scaled(mapPixelSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + mapPainter.drawPixmap(xpos_pr, mapPixelSize.height() - ypos_pr, pointMakerSize, pointMakerSize, pointMakerPixmap); + mapPainter.end(); +#if QT_VERSION >= 0x050600 + mapPixmap.setDevicePixelRatio(screenRatioPR); +#endif + + QPalette backgroundPalette; + backgroundPalette.setBrush(backgroundRole(), QBrush(mapPixmap)); + setPalette(backgroundPalette); + + xpos_new = xpos_d; + ypos_new = ypos_d; + ui->labPos->setText(tr("X: %1\nY: %2", "X and Y position").arg(QString::number(xpos_d), QString::number(ypos_d))); +} + +void MapLocationDialog::on_cmdChange_clicked() +{ + qreal screenRatio = AppEnv::screenRatio(); + int pointMakerSize = 8 * screenRatio; + QPixmap pointMakerPixmap = IconLoader::loadingPointmakerIcon().pixmap(QSize(pointMakerSize, pointMakerSize)); + QCursor pointMakerCursor(pointMakerPixmap); + ui->cmdDone->setVisible(true); + ui->cmdApply->setVisible(false); + ui->cmdChange->setVisible(false); + ui->cmdRevert->setVisible(false); + + setCursor(pointMakerCursor); + changeMode = true; +} + +void MapLocationDialog::on_cmdDone_clicked() +{ + ui->cmdDone->setVisible(false); + ui->cmdChange->setVisible(true); + if (xpos_new != xpos_old || ypos_new != ypos_old) + { + ui->cmdApply->setVisible(true); + ui->cmdRevert->setVisible(true); + } + + setCursor(Qt::ArrowCursor); + changeMode = false; +} + +void MapLocationDialog::updatePosFromEvent(int x, int y) +{ + QSize mapPixelSize = size(); + int xpos_ad = x; + int ypos_ad = mapPixelSize.height() - y; + double xrat = 10000 / (double)mapPixelSize.width(); + double yrat = 12000 / (double)mapPixelSize.height(); + double xpos_rv = xrat * xpos_ad; + double ypos_rv = yrat * ypos_ad; + double xpos_fp = xpos_rv - 4000; + double ypos_fp = ypos_rv - 4000; + drawPointOnMap(xpos_fp, ypos_fp); +} + +void MapLocationDialog::mouseMoveEvent(QMouseEvent *ev) +{ + if (!changeMode) { ev->ignore(); } + else if (ev->buttons() & Qt::LeftButton) + { + updatePosFromEvent(ev->x(), ev->y()); + ev->accept(); + } + else + { + ev->ignore(); + } +} + +void MapLocationDialog::mouseReleaseEvent(QMouseEvent *ev) +{ + if (!changeMode) { ev->ignore(); } + else if (ev->button() == Qt::LeftButton) + { + updatePosFromEvent(ev->x(), ev->y()); + ev->accept(); + } + else + { + ev->ignore(); + } +} + +void MapLocationDialog::on_cmdApply_clicked() +{ + propUpdate = true; + xpos_old = xpos_new; + ypos_old = ypos_new; + ui->cmdApply->setVisible(false); + ui->cmdRevert->setVisible(false); +} + +void MapLocationDialog::on_cmdRevert_clicked() +{ + drawPointOnMap(xpos_old, ypos_old); + ui->cmdApply->setVisible(false); + ui->cmdRevert->setVisible(false); +} + +bool MapLocationDialog::propUpdated() +{ + return propUpdate; +} + +double MapLocationDialog::getXpos() +{ + return xpos_old; +} + +double MapLocationDialog::getYpos() +{ + return ypos_old; +} + +void MapLocationDialog::on_cmdClose_clicked() +{ + close(); +} diff --git a/MapLocationDialog.h b/MapLocationDialog.h new file mode 100644 index 0000000..f499601 --- /dev/null +++ b/MapLocationDialog.h @@ -0,0 +1,63 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef MAPLOCATIONDIALOG_H +#define MAPLOCATIONDIALOG_H + +#include +#include + +namespace Ui { +class MapLocationDialog; +} + +class MapLocationDialog : public QDialog +{ + Q_OBJECT + +public: + explicit MapLocationDialog(double x, double y, QWidget *parent = 0); + void drawPointOnMap(double x, double y); + bool propUpdated(); + double getXpos(); + double getYpos(); + ~MapLocationDialog(); + +protected: + void mouseMoveEvent(QMouseEvent *ev); + void mouseReleaseEvent(QMouseEvent *ev); + +private slots: + void on_cmdDone_clicked(); + void on_cmdApply_clicked(); + void on_cmdChange_clicked(); + void on_cmdRevert_clicked(); + void updatePosFromEvent(int x, int y); + void on_cmdClose_clicked(); + +private: + double xpos_old; + double ypos_old; + double xpos_new; + double ypos_new; + bool propUpdate; + bool changeMode; + Ui::MapLocationDialog *ui; +}; + +#endif // MAPLOCATIONDIALOG_H diff --git a/MapLocationDialog.ui b/MapLocationDialog.ui new file mode 100644 index 0000000..cd46742 --- /dev/null +++ b/MapLocationDialog.ui @@ -0,0 +1,233 @@ + + + MapLocationDialog + + + + 0 + 0 + 500 + 600 + + + + + 500 + 600 + + + + + 500 + 600 + + + + Snapmatic Map Viewer + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QLabel{ +color: rgb(255, 255, 255); +} + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + 3 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::NoFocus + + + Close viewer + + + &Close + + + false + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + Qt::NoFocus + + + Apply new position + + + &Apply + + + false + + + + + + + Qt::NoFocus + + + Revert old position + + + &Revert + + + false + + + + + + + Qt::NoFocus + + + Select new position + + + &Select + + + false + + + + + + + Qt::NoFocus + + + Quit select position + + + &Done + + + false + + + + + + + + + + + + diff --git a/OptionsDialog.cpp b/OptionsDialog.cpp new file mode 100644 index 0000000..7de577f --- /dev/null +++ b/OptionsDialog.cpp @@ -0,0 +1,737 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "OptionsDialog.h" +#include "ui_OptionsDialog.h" +#include "TranslationClass.h" +#include "StandardPaths.h" +#include "UserInterface.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef GTA5SYNC_TELEMETRY +#include "TelemetryClass.h" +#endif + +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); + ui->cmdCancel->setDefault(true); + ui->cmdCancel->setFocus(); + + QRect desktopResolution = QApplication::desktop()->screenGeometry(this); + int desktopSizeWidth = desktopResolution.width(); + int desktopSizeHeight = desktopResolution.height(); + aspectRatio = Qt::KeepAspectRatio; + defExportSize = QSize(960, 536); + cusExportSize = defExportSize; + defaultQuality = 100; + customQuality = 100; + contentMode = 0; + settings = new QSettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + + percentString = ui->labPicQuality->text(); + ui->labPicQuality->setText(percentString.arg(QString::number(defaultQuality))); + ui->rbPicDesktopRes->setText(ui->rbPicDesktopRes->text().arg(QString::number(desktopSizeWidth), QString::number(desktopSizeHeight))); + ui->rbPicDefaultRes->setText(ui->rbPicDefaultRes->text().arg(QString::number(defExportSize.width()), QString::number(defExportSize.height()))); + + // Set Icon for OK Button + if (QIcon::hasThemeIcon("dialog-ok")) + { + ui->cmdOK->setIcon(QIcon::fromTheme("dialog-ok")); + } + else if (QIcon::hasThemeIcon("gtk-ok")) + { + ui->cmdOK->setIcon(QIcon::fromTheme("gtk-ok")); + } + + // Set Icon for Cancel Button + if (QIcon::hasThemeIcon("dialog-cancel")) + { + ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel")); + } + else if (QIcon::hasThemeIcon("gtk-cancel")) + { + ui->cmdCancel->setIcon(QIcon::fromTheme("gtk-cancel")); + } + + setupTreeWidget(); + setupLanguageBox(); + setupRadioButtons(); + setupDefaultProfile(); + setupPictureSettings(); + setupCustomGTAFolder(); + setupInterfaceSettings(); + setupStatisticsSettings(); + setupSnapmaticPictureViewer(); + setupWindowsGameSettings(); + +#ifndef Q_QS_ANDROID + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + resize(435 * screenRatio, 405 * screenRatio); +#endif + + setWindowTitle(windowTitle().arg(GTA5SYNC_APPSTR)); +} + +OptionsDialog::~OptionsDialog() +{ + delete settings; + qDeleteAll(playerItems.begin(), playerItems.end()); + playerItems.clear(); + delete ui; +} + +void OptionsDialog::setupTreeWidget() +{ + for (QString playerIDStr : profileDB->getPlayers()) + { + bool ok; + int playerID = playerIDStr.toInt(&ok); + if (ok) + { + QString playerName = profileDB->getPlayerName(playerID); + + QStringList playerTreeViewList; + playerTreeViewList += playerIDStr; + playerTreeViewList += playerName; + + QTreeWidgetItem *playerItem = new QTreeWidgetItem(playerTreeViewList); + ui->twPlayers->addTopLevelItem(playerItem); + playerItems += playerItem; + } + } + ui->twPlayers->sortItems(1, Qt::AscendingOrder); +} + +void OptionsDialog::setupLanguageBox() +{ + settings->beginGroup("Interface"); + currentLanguage = settings->value("Language", "System").toString(); + currentAreaLanguage = settings->value("AreaLanguage", "Auto").toString(); + settings->endGroup(); + + QString cbSysStr = tr("%1 (Language priority)", "First language a person can talk with a different person/application. \"Native\" or \"Not Native\".").arg(tr("System", + "System in context of System default")); +#ifdef GTA5SYNC_WIN + QString cbAutoStr; + if (AppEnv::getGameLanguage(AppEnv::getGameVersion()) != GameLanguage::Undefined) + { + cbAutoStr = tr("%1 (Game language)", "Next closest language compared to the Game settings").arg(tr("Auto", "Automatic language choice.")); + } + else + { + cbAutoStr = tr("%1 (Closest to Interface)", "Next closest language compared to the Interface").arg(tr("Auto", "Automatic language choice.")); + } +#else + QString cbAutoStr = tr("%1 (Closest to Interface)", "Next closest language compared to the Interface").arg(tr("Auto", "Automatic language choice.")); +#endif + ui->cbLanguage->addItem(cbSysStr, "System"); + ui->cbAreaLanguage->addItem(cbAutoStr, "Auto"); + + QStringList availableLanguages; + availableLanguages << QString("en_GB"); +#ifndef GTA5SYNC_QCONF + availableLanguages << TranslationClass::listTranslations(AppEnv::getExLangFolder()); +#endif + availableLanguages << TranslationClass::listTranslations(AppEnv::getInLangFolder()); + availableLanguages.removeDuplicates(); + availableLanguages.sort(); + + for (QString lang : availableLanguages) + { + QLocale langLocale(lang); + QString cbLangStr = langLocale.nativeLanguageName() % " (" % langLocale.nativeCountryName() % ") [" % lang % "]"; + QString langIconStr = "flag-" % TranslationClass::getCountryCode(langLocale); + + ui->cbLanguage->addItem(QIcon::fromTheme(langIconStr), cbLangStr, lang); + if (currentLanguage == lang) + { +#if QT_VERSION >= 0x050000 + ui->cbLanguage->setCurrentText(cbLangStr); +#else + int indexOfLang = ui->cbLanguage->findText(cbLangStr); + ui->cbLanguage->setCurrentIndex(indexOfLang); +#endif + } + } + + QString aCurrentLanguage = QString("en_GB"); + if (Translator->isLanguageLoaded()) { aCurrentLanguage = Translator->getCurrentLanguage(); } + QLocale currentLocale = QLocale(aCurrentLanguage); + ui->labCurrentLanguage->setText(tr("Current: %1").arg(currentLocale.nativeLanguageName() % " (" % currentLocale.nativeCountryName() % ") [" % aCurrentLanguage % "]")); + + availableLanguages.clear(); + availableLanguages << TranslationClass::listAreaTranslations(); + availableLanguages.removeDuplicates(); + availableLanguages.sort(); + + for (QString lang : availableLanguages) + { + // correcting Language Location if possible + QString aLang = lang; + if (QFile::exists(":/global/global." % lang % ".loc")) + { + QFile locFile(":/global/global." % lang % ".loc"); + if (locFile.open(QFile::ReadOnly)) + { + aLang = QString::fromUtf8(locFile.readLine()).trimmed(); + locFile.close(); + } + } + + QLocale langLocale(aLang); + QString cbLangStr = langLocale.nativeLanguageName() % " (" % langLocale.nativeCountryName() % ") [" % aLang % "]"; + QString langIconStr = "flag-" % TranslationClass::getCountryCode(langLocale); + + ui->cbAreaLanguage->addItem(QIcon::fromTheme(langIconStr), cbLangStr, lang); + if (currentAreaLanguage == lang) + { +#if QT_VERSION >= 0x050000 + ui->cbAreaLanguage->setCurrentText(cbLangStr); +#else + int indexOfLang = ui->cbAreaLanguage->findText(cbLangStr); + ui->cbAreaLanguage->setCurrentIndex(indexOfLang); +#endif + } + } + + QString aCurrentAreaLanguage = Translator->getCurrentAreaLanguage(); + if (QFile::exists(":/global/global." % aCurrentAreaLanguage % ".loc")) + { + qDebug() << "locFile found"; + QFile locFile(":/global/global." % aCurrentAreaLanguage % ".loc"); + if (locFile.open(QFile::ReadOnly)) + { + aCurrentAreaLanguage = QString::fromUtf8(locFile.readLine()).trimmed(); + locFile.close(); + } + } + currentLocale = QLocale(aCurrentAreaLanguage); + ui->labCurrentAreaLanguage->setText(tr("Current: %1").arg(currentLocale.nativeLanguageName() % " (" % currentLocale.nativeCountryName() % ") [" % aCurrentAreaLanguage % "]")); +} + +void OptionsDialog::setupRadioButtons() +{ + bool contentModeOk; + settings->beginGroup("Profile"); + contentMode = settings->value("ContentMode", 0).toInt(&contentModeOk); + settings->endGroup(); + + if (contentModeOk) + { + switch (contentMode) + { + case 0: + ui->rbOpenWithSC->setChecked(true); + break; + case 1: + ui->rbOpenWithDC->setChecked(true); + break; + case 2: + ui->rbSelectWithSC->setChecked(true); + break; + } + } +} + +void OptionsDialog::setupInterfaceSettings() +{ + settings->beginGroup("Startup"); + bool alwaysUseMessageFont = settings->value("AlwaysUseMessageFont", false).toBool(); + ui->cbAlwaysUseMessageFont->setChecked(alwaysUseMessageFont); +#ifdef GTA5SYNC_WIN + if (QSysInfo::windowsVersion() >= 0x0080) + { + ui->gbFont->setVisible(false); + ui->cbAlwaysUseMessageFont->setVisible(false); + } +#else + ui->gbFont->setVisible(false); + ui->cbAlwaysUseMessageFont->setVisible(false); +#endif + QString currentStyle = QApplication::style()->objectName(); + QString appStyle = settings->value("AppStyle", currentStyle).toString(); + bool customStyle = settings->value("CustomStyle", false).toBool(); + const QStringList availableStyles = QStyleFactory::keys(); + ui->cbStyleList->addItems(availableStyles); + if (availableStyles.contains(appStyle, Qt::CaseInsensitive)) + { + // use 'for' for select to be sure it's case insensitive + int currentIndex = 0; + for (QString currentStyleFF : availableStyles) + { + if (currentStyleFF.toLower() == appStyle.toLower()) + { + ui->cbStyleList->setCurrentIndex(currentIndex); + } + currentIndex++; + } + } + else + { + if (availableStyles.contains(currentStyle, Qt::CaseInsensitive)) + { + int currentIndex = 0; + for (QString currentStyleFF : availableStyles) + { + if (currentStyleFF.toLower() == currentStyle.toLower()) + { + ui->cbStyleList->setCurrentIndex(currentIndex); + } + currentIndex++; + } + } + } + if (customStyle) + { + ui->cbDefaultStyle->setChecked(false); + } + settings->endGroup(); +} + +void OptionsDialog::on_cmdOK_clicked() +{ + applySettings(); + close(); +} + +void OptionsDialog::applySettings() +{ + settings->beginGroup("Interface"); +#if QT_VERSION >= 0x050000 + settings->setValue("Language", ui->cbLanguage->currentData()); + settings->setValue("AreaLanguage", ui->cbAreaLanguage->currentData()); +#else + settings->setValue("Language", ui->cbLanguage->itemData(ui->cbLanguage->currentIndex())); + settings->setValue("AreaLanguage", ui->cbAreaLanguage->itemData(ui->cbAreaLanguage->currentIndex())); +#endif +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 + settings->setValue("NavigationBar", ui->cbSnapmaticNavigationBar->isChecked()); +#endif +#endif + settings->endGroup(); + + settings->beginGroup("Profile"); + int newContentMode = 0; + if (ui->rbOpenWithSC->isChecked()) + { + newContentMode = 0; + } + else if (ui->rbOpenWithDC->isChecked()) + { + newContentMode = 1; + } + else if (ui->rbSelectWithSC->isChecked()) + { + newContentMode = 2; + } + settings->setValue("ContentMode", newContentMode); +#if QT_VERSION >= 0x050000 + settings->setValue("Default", ui->cbProfiles->currentData()); +#else + settings->setValue("Default", ui->cbProfiles->itemData(ui->cbProfiles->currentIndex())); +#endif + settings->endGroup(); + + settings->beginGroup("Pictures"); + if (ui->cbPicCustomQuality->isChecked()) + { + settings->setValue("CustomQuality", ui->hsPicQuality->value()); + } + settings->setValue("CustomQualityEnabled", ui->cbPicCustomQuality->isChecked()); + QString sizeMode = "Default"; + if (ui->rbPicDesktopRes->isChecked()) + { + sizeMode = "Desktop"; + } + else if (ui->rbPicCustomRes->isChecked()) + { + sizeMode = "Custom"; + settings->setValue("CustomSize", QSize(ui->sbPicExportWidth->value(), ui->sbPicExportHeight->value())); + } + settings->setValue("ExportSizeMode", sizeMode); + settings->setValue("AspectRatio", aspectRatio); + settings->endGroup(); + + bool forceCustomFolder = ui->cbForceCustomFolder->isChecked(); + settings->beginGroup("dir"); + settings->setValue("dir", ui->txtFolder->text()); + settings->setValue("force", forceCustomFolder); + settings->endGroup(); + + bool defaultStyle = ui->cbDefaultStyle->isChecked(); + settings->beginGroup("Startup"); + if (!defaultStyle) + { + QString newStyle = ui->cbStyleList->currentText(); + settings->setValue("CustomStyle", true); + settings->setValue("AppStyle", newStyle); + QApplication::setStyle(QStyleFactory::create(newStyle)); + } + else + { + settings->setValue("CustomStyle", false); + } + settings->setValue("AlwaysUseMessageFont", ui->cbAlwaysUseMessageFont->isChecked()); + settings->endGroup(); + +#ifdef GTA5SYNC_TELEMETRY + settings->beginGroup("Telemetry"); + settings->setValue("PushAppConf", ui->cbAppConfigStats->isChecked()); + settings->setValue("PushUsageData", ui->cbUsageData->isChecked()); + if (!Telemetry->isStateForced()) { settings->setValue("IsEnabled", ui->cbParticipateStats->isChecked()); } + settings->endGroup(); + Telemetry->refresh(); + Telemetry->work(); + if (ui->cbUsageData->isChecked() && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "SettingsUpdated"; + jsonObject["UpdateTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } +#endif + +#if QT_VERSION >= 0x050000 + bool languageChanged = ui->cbLanguage->currentData().toString() != currentLanguage; + bool languageAreaChanged = ui->cbAreaLanguage->currentData().toString() != currentAreaLanguage; +#else + bool languageChanged = ui->cbLanguage->itemData(ui->cbLanguage->currentIndex()).toString() != currentLanguage; + bool languageAreaChanged = ui->cbAreaLanguage->itemData(ui->cbLanguage->currentIndex()).toString() != currentAreaLanguage; +#endif + if (languageChanged) + { + Translator->unloadTranslation(qApp); + Translator->initUserLanguage(); + Translator->loadTranslation(qApp); + } + else if (languageAreaChanged) + { + Translator->initUserLanguage(); + } + + settings->sync(); + emit settingsApplied(newContentMode, languageChanged); + + if ((forceCustomFolder && ui->txtFolder->text() != currentCFolder) || (forceCustomFolder != currentFFolder && forceCustomFolder)) + { + QMessageBox::information(this, tr("%1", "%1").arg(GTA5SYNC_APPSTR), tr("The new Custom Folder will initialise after you restart %1.").arg(GTA5SYNC_APPSTR)); + } +} + +void OptionsDialog::setupDefaultProfile() +{ + settings->beginGroup("Profile"); + defaultProfile = settings->value("Default", "").toString(); + settings->endGroup(); + + QString cbNoneStr = tr("No Profile", "No Profile, as default"); + ui->cbProfiles->addItem(cbNoneStr, ""); +} + +void OptionsDialog::commitProfiles(const QStringList &profiles) +{ + for (QString profile : profiles) + { + ui->cbProfiles->addItem(tr("Profile: %1").arg(profile), profile); + if (defaultProfile == profile) + { +#if QT_VERSION >= 0x050000 + ui->cbProfiles->setCurrentText(tr("Profile: %1").arg(profile)); +#else + int indexOfProfile = ui->cbProfiles->findText(tr("Profile: %1").arg(profile)); + ui->cbProfiles->setCurrentIndex(indexOfProfile); +#endif + } + } +} + +void OptionsDialog::on_rbPicCustomRes_toggled(bool checked) +{ + ui->labPicCustomRes->setEnabled(checked); + ui->sbPicExportWidth->setEnabled(checked); + ui->sbPicExportHeight->setEnabled(checked); + ui->labPicXDescription->setEnabled(checked); +} + +void OptionsDialog::on_cbPicCustomQuality_toggled(bool checked) +{ + ui->hsPicQuality->setEnabled(checked); + ui->labPicQuality->setEnabled(checked); + ui->labPicQualityDescription->setEnabled(checked); +} + +void OptionsDialog::on_hsPicQuality_valueChanged(int value) +{ + customQuality = value; + ui->labPicQuality->setText(percentString.arg(QString::number(value))); +} + +void OptionsDialog::setupPictureSettings() +{ + settings->beginGroup("Pictures"); + + // Quality Settings + customQuality = settings->value("CustomQuality", defaultQuality).toInt(); + if (customQuality < 1 || customQuality > 100) + { + customQuality = 100; + } + ui->hsPicQuality->setValue(customQuality); + ui->cbPicCustomQuality->setChecked(settings->value("CustomQualityEnabled", false).toBool()); + + // Size Settings + cusExportSize = settings->value("CustomSize", defExportSize).toSize(); + if (cusExportSize.width() > 3840) + { + cusExportSize.setWidth(3840); + } + else if (cusExportSize.height() > 2160) + { + cusExportSize.setHeight(2160); + } + if (cusExportSize.width() < 1) + { + cusExportSize.setWidth(1); + } + else if (cusExportSize.height() < 1) + { + cusExportSize.setHeight(1); + } + ui->sbPicExportWidth->setValue(cusExportSize.width()); + ui->sbPicExportHeight->setValue(cusExportSize.height()); + + QString sizeMode = settings->value("ExportSizeMode", "Default").toString(); + if (sizeMode == "Desktop") + { + ui->rbPicDesktopRes->setChecked(true); + } + else if (sizeMode == "Custom") + { + ui->rbPicCustomRes->setChecked(true); + } + else + { + ui->rbPicDefaultRes->setChecked(true); + } + + aspectRatio = (Qt::AspectRatioMode)settings->value("AspectRatio", Qt::KeepAspectRatio).toInt(); + if (aspectRatio == Qt::IgnoreAspectRatio) + { + ui->cbIgnoreAspectRatio->setChecked(true); + } + + settings->endGroup(); +} + +void OptionsDialog::setupStatisticsSettings() +{ +#ifdef GTA5SYNC_TELEMETRY + ui->cbParticipateStats->setText(tr("Participate in %1 User Statistics").arg(GTA5SYNC_APPSTR)); + ui->labUserStats->setText(QString("%1").arg(tr("View %1 User Statistics Online").arg(GTA5SYNC_APPSTR), TelemetryClass::getWebURL().toString())); + + settings->beginGroup("Telemetry"); + ui->cbParticipateStats->setChecked(Telemetry->isEnabled()); + ui->cbAppConfigStats->setChecked(settings->value("PushAppConf", false).toBool()); + ui->cbUsageData->setChecked(settings->value("PushUsageData", false).toBool()); + settings->endGroup(); + + if (Telemetry->isStateForced()) + { + ui->cbParticipateStats->setEnabled(false); + } + + if (Telemetry->isRegistered()) + { + ui->labParticipationID->setText(tr("Participation ID: %1").arg(Telemetry->getRegisteredID())); + } + else + { + ui->labParticipationID->setText(tr("Participation ID: %1").arg(tr("Not registered"))); + ui->cmdCopyStatsID->setVisible(false); + } +#else + ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabStats)); +#endif +} + +void OptionsDialog::setupWindowsGameSettings() +{ +#ifdef GTA5SYNC_GAME + GameVersion gameVersion = AppEnv::getGameVersion(); +#ifdef GTA5SYNC_WIN + if (gameVersion != GameVersion::NoVersion) + { + if (gameVersion == GameVersion::SocialClubVersion) + { + ui->gbSteam->setDisabled(true); + ui->labSocialClubFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("Yes")))); + ui->labSteamFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("No")))); + if (AppEnv::getGameLanguage(GameVersion::SocialClubVersion) != GameLanguage::Undefined) + { + ui->labSocialClubLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SocialClubVersion))).nativeLanguageName())); + } + else + { + ui->labSocialClubLanguage->setText(tr("Language: %1").arg(tr("OS defined"))); + } + ui->labSteamLanguage->setVisible(false); + } + else if (gameVersion == GameVersion::SteamVersion) + { + ui->gbSocialClub->setDisabled(true); + ui->labSocialClubFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("No")))); + ui->labSteamFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("Yes")))); + ui->labSocialClubLanguage->setVisible(false); + if (AppEnv::getGameLanguage(GameVersion::SteamVersion) != GameLanguage::Undefined) + { + ui->labSteamLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SteamVersion))).nativeLanguageName())); + } + else + { + ui->labSteamLanguage->setText(tr("Language: %1").arg(tr("Steam defined"))); + } + } + else + { + ui->labSocialClubFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("Yes")))); + ui->labSteamFound->setText(tr("Found: %1").arg(QString("%1").arg(tr("Yes")))); + if (AppEnv::getGameLanguage(GameVersion::SocialClubVersion) != GameLanguage::Undefined) + { + ui->labSocialClubLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SocialClubVersion))).nativeLanguageName())); + } + else + { + ui->labSocialClubLanguage->setText(tr("Language: %1").arg(tr("OS defined"))); + } + if (AppEnv::getGameLanguage(GameVersion::SteamVersion) != GameLanguage::Undefined) + { + ui->labSteamLanguage->setText(tr("Language: %1").arg(QLocale(AppEnv::gameLanguageToString(AppEnv::getGameLanguage(GameVersion::SteamVersion))).nativeLanguageName())); + } + else + { + ui->labSteamLanguage->setText(tr("Language: %1").arg(tr("Steam defined"))); + } + } + } + else + { + ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabGame)); + } +#else + ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabGame)); +#endif +#else + ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabGame)); +#endif +} + +void OptionsDialog::on_cbIgnoreAspectRatio_toggled(bool checked) +{ + if (checked) + { + aspectRatio = Qt::IgnoreAspectRatio; + } + else + { + aspectRatio = Qt::KeepAspectRatio; + } +} + +void OptionsDialog::setupCustomGTAFolder() +{ + bool ok; + QString defaultGameFolder = AppEnv::getGameFolder(&ok); + settings->beginGroup("dir"); + currentCFolder = settings->value("dir", "").toString(); + currentFFolder = settings->value("force", false).toBool(); + if (currentCFolder == "" && ok) + { + currentCFolder = defaultGameFolder; + } + ui->txtFolder->setText(currentCFolder); + ui->cbForceCustomFolder->setChecked(currentFFolder); + settings->endGroup(); +} + +void OptionsDialog::setupSnapmaticPictureViewer() +{ +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 + settings->beginGroup("Interface"); + ui->cbSnapmaticNavigationBar->setChecked(settings->value("NavigationBar", true).toBool()); + settings->endGroup(); +#else + ui->cbSnapmaticNavigationBar->setVisible(false); + ui->gbSnapmaticPictureViewer->setVisible(false); +#endif +#else + ui->cbSnapmaticNavigationBar->setVisible(false); + ui->gbSnapmaticPictureViewer->setVisible(false); +#endif +} + +void OptionsDialog::on_cmdExploreFolder_clicked() +{ + QString GTAV_Folder = QFileDialog::getExistingDirectory(this, UserInterface::tr("Select RDR 2 Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly); + if (QFileInfo(GTAV_Folder).exists()) + { + ui->txtFolder->setText(GTAV_Folder); + } +} + +void OptionsDialog::on_cbDefaultStyle_toggled(bool checked) +{ + ui->cbStyleList->setDisabled(checked); +} + +void OptionsDialog::on_cmdCopyStatsID_clicked() +{ +#ifdef GTA5SYNC_TELEMETRY + QApplication::clipboard()->setText(Telemetry->getRegisteredID()); +#endif +} diff --git a/OptionsDialog.h b/OptionsDialog.h new file mode 100644 index 0000000..e612015 --- /dev/null +++ b/OptionsDialog.h @@ -0,0 +1,86 @@ +/****************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef OPTIONSDIALOG_H +#define OPTIONSDIALOG_H + +#include +#include +#include +#include +#include +#include "ProfileDatabase.h" + +namespace Ui { +class OptionsDialog; +} + +class OptionsDialog : public QDialog +{ + Q_OBJECT + +public: + explicit OptionsDialog(ProfileDatabase *profileDB, QWidget *parent = 0); + void commitProfiles(const QStringList &profiles); + ~OptionsDialog(); + +private slots: + void on_cmdOK_clicked(); + void on_rbPicCustomRes_toggled(bool checked); + void on_cbPicCustomQuality_toggled(bool checked); + void on_hsPicQuality_valueChanged(int value); + void on_cbIgnoreAspectRatio_toggled(bool checked); + void on_cmdExploreFolder_clicked(); + void on_cbDefaultStyle_toggled(bool checked); + void on_cmdCopyStatsID_clicked(); + +signals: + void settingsApplied(int contentMode, bool languageChanged); + +private: + ProfileDatabase *profileDB; + Ui::OptionsDialog *ui; + QList playerItems; + Qt::AspectRatioMode aspectRatio; + QString currentAreaLanguage; + QString currentLanguage; + QString currentCFolder; + QString defaultProfile; + QString percentString; + QSettings *settings; + bool withoutPlayers; + bool currentFFolder; + int contentMode; + int customQuality; + int defaultQuality; + QSize defExportSize; + QSize cusExportSize; + void setupTreeWidget(); + void setupLanguageBox(); + void setupRadioButtons(); + void setupDefaultProfile(); + void setupPictureSettings(); + void setupCustomGTAFolder(); + void setupInterfaceSettings(); + void setupStatisticsSettings(); + void setupSnapmaticPictureViewer(); + void setupWindowsGameSettings(); + void applySettings(); +}; + +#endif // OPTIONSDIALOG_H diff --git a/OptionsDialog.ui b/OptionsDialog.ui new file mode 100644 index 0000000..435271a --- /dev/null +++ b/OptionsDialog.ui @@ -0,0 +1,789 @@ + + + OptionsDialog + + + + 0 + 0 + 435 + 474 + + + + %1 - Settings + + + true + + + + + + 0 + + + + Profiles + + + + + + Content Open/Select Mode + + + + + + Open with Singleclick + + + true + + + + + + + Open with Doubleclick + + + + + + + Select with Singleclick + + + + + + + + + + Default Profile + + + + + + + + + + + + Custom RDR 2 Folder + + + + + + Force using Custom Folder + + + + + + + + + + + + ... + + + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + Pictures + + + + + + Export Size + + + + + + Default: %1x%2 + + + true + + + + + + + Screen Resolution: %1x%2 + + + + + + + + + Custom Size: + + + + + + + false + + + Custom Size: + + + + + + + false + + + 1 + + + 3840 + + + 960 + + + + + + + false + + + x + + + + + + + false + + + 1 + + + 2160 + + + 536 + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + + + + Ignore Aspect Ratio + + + + + + + + + + + + Export Quality + + + + + + Enable Custom Quality + + + + + + + + + false + + + Quality: + + + + + + + false + + + 1 + + + 100 + + + 100 + + + Qt::Horizontal + + + + + + + false + + + %1% + + + true + + + + + + + + + + + + Picture Viewer + + + + + + Enable Navigation Bar + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + Players + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::ScrollPerPixel + + + true + + + true + + + + ID + + + + + Name + + + + + + + + + Game + + + + + + Social Club Version + + + + + + Found: %1 + + + + + + + Language: %1 + + + + + + + + + + Steam Version + + + + + + Found: %1 + + + + + + + Language: %1 + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + Feedback + + + + + + Participation + + + + + + Participate in %1 User Statistics + + + + + + + <a href="%2">%1</a> + + + true + + + true + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + + + + + + + + + + Categories + + + + + + false + + + Hardware, Application and OS Specification + + + true + + + + + + + false + + + System Language Configuration + + + true + + + + + + + Application Configuration + + + + + + + Personal Usage Data + + + + + + + + + + Other + + + + + + + + + 0 + 0 + + + + Participation ID: %1 + + + true + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + &Copy + + + false + + + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + Interface + + + + + + Language for Interface + + + + + + + + + Current: %1 + + + true + + + + + + + + + + Language for Areas + + + + + + + + + Current: %1 + + + true + + + + + + + + + + Style + + + + + + Use Default Style (Restart) + + + true + + + + + + + + + Style: + + + + + + + false + + + + 0 + 0 + + + + + + + + + + + + + Font + + + + + + Always use Message Font (Windows 2003 and earlier) + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Apply changes + + + &OK + + + + + + + + 0 + 0 + + + + Discard changes + + + &Cancel + + + + + + + + + + + cmdCancel + clicked() + OptionsDialog + close() + + + 352 + 328 + + + 199 + 174 + + + + + diff --git a/PictureDialog.cpp b/PictureDialog.cpp new file mode 100644 index 0000000..19364ed --- /dev/null +++ b/PictureDialog.cpp @@ -0,0 +1,1069 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "PictureDialog.h" +#include "PictureWidget.h" +#include "ProfileDatabase.h" +#include "ui_PictureDialog.h" +#include "SidebarGenerator.h" +#include "MapLocationDialog.h" +#include "ImageEditorDialog.h" +#include "JsonEditorDialog.h" +#include "SnapmaticEditor.h" +#include "StandardPaths.h" +#include "PictureExport.h" +#include "ImportDialog.h" +#include "StringParser.h" +#include "GlobalString.h" +#include "UiModLabel.h" +#include "AppEnv.h" +#include "config.h" + +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 +#include +#include +#endif +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef GTA5SYNC_TELEMETRY +#include "TelemetryClass.h" +#endif + +// Macros for better Overview + RAM +#define locX QString::number(picture->getSnapmaticProperties().location.x) +#define locY QString::number(picture->getSnapmaticProperties().location.y) +#define locZ QString::number(picture->getSnapmaticProperties().location.z) +#define crewID QString::number(picture->getSnapmaticProperties().crewID) +#define picPath picture->getPictureFilePath() +#define picTitl StringParser::escapeString(picture->getPictureTitle()) +#define plyrsList picture->getSnapmaticProperties().playersList +#define created picture->getSnapmaticProperties().createdDateTime.toString(Qt::DefaultLocaleShortDate) + +PictureDialog::PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent) : + QDialog(parent), profileDB(profileDB), crewDB(crewDB), + ui(new Ui::PictureDialog) +{ + primaryWindow = false; + setupPictureDialog(); +} + +PictureDialog::PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QString profileName, QWidget *parent) : + QDialog(parent), profileDB(profileDB), crewDB(crewDB), profileName(profileName), + ui(new Ui::PictureDialog) +{ + primaryWindow = false; + setupPictureDialog(); +} + +PictureDialog::PictureDialog(bool primaryWindow, ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent) : + QDialog(parent), primaryWindow(primaryWindow), profileDB(profileDB), crewDB(crewDB), + ui(new Ui::PictureDialog) +{ + setupPictureDialog(); +} + +PictureDialog::PictureDialog(bool primaryWindow, ProfileDatabase *profileDB, CrewDatabase *crewDB, QString profileName, QWidget *parent) : + QDialog(parent), primaryWindow(primaryWindow), profileDB(profileDB), crewDB(crewDB), profileName(profileName), + ui(new Ui::PictureDialog) +{ + setupPictureDialog(); +} + +void PictureDialog::setupPictureDialog() +{ + // Set Window Flags + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint^Qt::CustomizeWindowHint); +#ifdef Q_OS_LINUX + // for stupid Window Manager (GNOME 3 should feel triggered) + setWindowFlags(windowFlags()^Qt::Dialog^Qt::Window); +#endif + + // Setup User Interface + ui->setupUi(this); + windowTitleStr = this->windowTitle(); + jsonDrawString = ui->labJSON->text(); + jsonDrawString.replace("%7 (%1, %2, %3)", "%1, %2, %3%7"); // Patch JSON draw string for RDR 2 + ui->cmdManage->setEnabled(false); + fullscreenWidget = nullptr; + rqFullscreen = false; + previewMode = false; + naviEnabled = false; + indexed = false; + smpic = nullptr; + crewStr = ""; + + // Avatar area + qreal screenRatio = AppEnv::screenRatio(); + qreal screenRatioPR = AppEnv::screenRatioPR(); + if (screenRatio != 1 || screenRatioPR != 1) + { + avatarAreaPicture = QImage(":/img/avatararea.png").scaledToHeight(536 * screenRatio * screenRatioPR, Qt::FastTransformation); + } + else + { + avatarAreaPicture = QImage(":/img/avatararea.png"); + } + avatarLocX = 145; + avatarLocY = 66; + avatarSize = 470; + + // DPI calculation (picture) + ui->labPicture->setFixedSize(960 * screenRatio, 536 * screenRatio); + ui->labPicture->setFocusPolicy(Qt::StrongFocus); + ui->labPicture->setScaledContents(true); + + // Overlay area + renderOverlayPicture(); + overlayEnabled = true; + + // Manage menu + manageMenu = new QMenu(this); + manageMenu->addAction(tr("Export as &Picture..."), this, SLOT(exportSnapmaticPicture())); + manageMenu->addAction(tr("Export as &Snapmatic..."), this, SLOT(copySnapmaticPicture())); + manageMenu->addSeparator(); + manageMenu->addAction(tr("&Edit Properties..."), this, SLOT(editSnapmaticProperties())); + manageMenu->addAction(tr("&Overwrite Image..."), this, SLOT(editSnapmaticImage())); + manageMenu->addSeparator(); + QAction *openViewerAction = manageMenu->addAction(tr("Open &Map Viewer..."), this, SLOT(openPreviewMap())); + openViewerAction->setShortcut(Qt::Key_M); + openViewerAction->setEnabled(false); + manageMenu->addAction(tr("Open &JSON Editor..."), this, SLOT(editSnapmaticRawJson())); + ui->cmdManage->setMenu(manageMenu); + + // Global map + globalMap = GlobalString::getGlobalMap(); + + // Event connects + connect(ui->labJSON, SIGNAL(resized(QSize)), this, SLOT(adaptNewDialogSize(QSize))); + + // Set Icon for Close Button + if (QIcon::hasThemeIcon("dialog-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close")); + } + else if (QIcon::hasThemeIcon("gtk-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("gtk-close")); + } + + installEventFilter(this); + installEventFilter(ui->labPicture); + + // DPI calculation + ui->hlButtons->setSpacing(6 * screenRatio); + ui->vlButtons->setSpacing(6 * screenRatio); + ui->vlButtons->setContentsMargins(0, 0, 5 * screenRatio, 5 * screenRatio); + ui->jsonLayout->setContentsMargins(4 * screenRatio, 10 * screenRatio, 4 * screenRatio, 4 * screenRatio); + + // Pre-adapt window for DPI + setFixedWidth(960 * screenRatio); + setFixedHeight(536 * screenRatio); +} + +PictureDialog::~PictureDialog() +{ +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 + if (naviEnabled) + { + for (QObject *obj : layout()->menuBar()->children()) + { + delete obj; + } + delete layout()->menuBar(); + } +#endif +#endif + for (QObject *obj : manageMenu->children()) + { + delete obj; + } + delete manageMenu; + delete ui; +} + +void PictureDialog::closeEvent(QCloseEvent *ev) +{ + Q_UNUSED(ev) + if (primaryWindow) + { + emit endDatabaseThread(); + } +} + +void PictureDialog::addPreviousNextButtons() +{ + // Windows Vista additions +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 + QToolBar *uiToolbar = new QToolBar("Picture Toolbar", this); + uiToolbar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + uiToolbar->setObjectName("uiToolbar"); + uiToolbar->addAction(QIcon(":/img/back.svgz"), "", this, SLOT(previousPictureRequestedSlot())); + uiToolbar->addAction(QIcon(":/img/next.svgz"), "", this, SLOT(nextPictureRequestedSlot())); + layout()->setMenuBar(uiToolbar); + + naviEnabled = true; +#endif +#endif +} + +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 +#ifdef GTA5SYNC_APV +bool PictureDialog::nativeEvent(const QByteArray &eventType, void *message, long *result) +{ + *result = 0; + MSG *msg = static_cast(message); + LRESULT lRet = 0; + + if (naviEnabled && QtWin::isCompositionEnabled()) + { + if (msg->message == WM_NCCALCSIZE && msg->wParam == TRUE) + { + NCCALCSIZE_PARAMS *pncsp = reinterpret_cast(msg->lParam); + + int sideBorderSize = ((frameSize().width() - size().width()) / 2); +#ifdef GTA5SYNC_APV_SIDE + int buttomBorderSize = sideBorderSize; +#else + int buttomBorderSize = (frameSize().height() - size().height()); +#endif + pncsp->rgrc[0].left += sideBorderSize; + pncsp->rgrc[0].right -= sideBorderSize; + pncsp->rgrc[0].bottom -= buttomBorderSize; + } + else if (msg->message == WM_NCHITTEST) + { + int CLOSE_BUTTON_ID = 20; + lRet = HitTestNCA(msg->hwnd, msg->lParam); + DwmDefWindowProc(msg->hwnd, msg->message, msg->wParam, msg->lParam, &lRet); + *result = lRet; + if (lRet != CLOSE_BUTTON_ID) { return QWidget::nativeEvent(eventType, message, result); } + } + else + { + return QWidget::nativeEvent(eventType, message, result); + } + } + else + { + return QWidget::nativeEvent(eventType, message, result); + } + return true; +} + +LRESULT PictureDialog::HitTestNCA(HWND hWnd, LPARAM lParam) +{ + int LEFTEXTENDWIDTH = 0; + int RIGHTEXTENDWIDTH = 0; + int BOTTOMEXTENDWIDTH = 0; + int TOPEXTENDWIDTH = layout()->menuBar()->height(); + + POINT ptMouse = {(int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)}; + + RECT rcWindow; + GetWindowRect(hWnd, &rcWindow); + + RECT rcFrame = {}; + AdjustWindowRectEx(&rcFrame, WS_OVERLAPPEDWINDOW & ~WS_CAPTION, FALSE, NULL); + + USHORT uRow = 1; + USHORT uCol = 1; + bool fOnResizeBorder = false; + + if (ptMouse.y >= rcWindow.top && ptMouse.y < rcWindow.top + TOPEXTENDWIDTH) + { + fOnResizeBorder = (ptMouse.y < (rcWindow.top - rcFrame.top)); + uRow = 0; + } + else if (ptMouse.y < rcWindow.bottom && ptMouse.y >= rcWindow.bottom - BOTTOMEXTENDWIDTH) + { + uRow = 2; + } + + if (ptMouse.x >= rcWindow.left && ptMouse.x < rcWindow.left + LEFTEXTENDWIDTH) + { + uCol = 0; + } + else if (ptMouse.x < rcWindow.right && ptMouse.x >= rcWindow.right - RIGHTEXTENDWIDTH) + { + uCol = 2; + } + + LRESULT hitTests[3][3] = + { + { HTTOPLEFT, fOnResizeBorder ? HTTOP : HTCAPTION, HTTOPRIGHT }, + { HTLEFT, HTNOWHERE, HTRIGHT }, + { HTBOTTOMLEFT, HTBOTTOM, HTBOTTOMRIGHT }, + }; + + return hitTests[uRow][uCol]; +} + +void PictureDialog::resizeEvent(QResizeEvent *event) +{ + Q_UNUSED(event) + // int newDialogHeight = (ui->labPicture->pixmap()->height() / AppEnv::screenRatioPR()); + // newDialogHeight = newDialogHeight + ui->jsonFrame->height(); + // if (naviEnabled) newDialogHeight = newDialogHeight + layout()->menuBar()->height(); + // int buttomBorderSize = (frameSize().height() - size().height()); + // int sideBorderSize = ((frameSize().width() - size().width()) / 2); + // int brokenDialogHeight = newDialogHeight + (buttomBorderSize - sideBorderSize); + // if (event->size().height() == brokenDialogHeight) + // { + // qDebug() << "BROKEN 1"; + // setGeometry(geometry().x(), geometry().y(), width(), newDialogHeight); + // qDebug() << "BROKEN 2"; + // event->ignore(); + // } +} +#endif +#endif +#endif + +void PictureDialog::adaptNewDialogSize(QSize newLabelSize) +{ + Q_UNUSED(newLabelSize) + int newDialogHeight = (ui->labPicture->pixmap()->height() / AppEnv::screenRatioPR()); + newDialogHeight = newDialogHeight + ui->jsonFrame->height(); + if (naviEnabled) newDialogHeight = newDialogHeight + layout()->menuBar()->height(); + setMaximumSize(width(), newDialogHeight); + setMinimumSize(width(), newDialogHeight); + setFixedHeight(newDialogHeight); + ui->labPicture->updateGeometry(); + ui->jsonFrame->updateGeometry(); + updateGeometry(); +} + +void PictureDialog::styliseDialog() +{ +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 + if (QtWin::isCompositionEnabled()) + { + QPalette palette; + QtWin::extendFrameIntoClientArea(this, 0, qRound(layout()->menuBar()->height() * AppEnv::screenRatioPR()), 0, 0); + ui->jsonFrame->setStyleSheet(QString("QFrame { background: %1; }").arg(palette.window().color().name())); + setStyleSheet("PictureDialog { background: transparent; }"); + } + else + { + QPalette palette; + QtWin::resetExtendedFrame(this); + ui->jsonFrame->setStyleSheet(QString("QFrame { background: %1; }").arg(palette.window().color().name())); + setStyleSheet(QString("PictureDialog { background: %1; }").arg(QtWin::realColorizationColor().name())); + } +#endif +#endif +} + +bool PictureDialog::event(QEvent *event) +{ +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 + if (naviEnabled) + { + if (event->type() == QWinEvent::CompositionChange || event->type() == QWinEvent::ColorizationChange) + { + styliseDialog(); + } + } +#endif +#endif + return QDialog::event(event); +} + +void PictureDialog::nextPictureRequestedSlot() +{ + emit nextPictureRequested(); +} + +void PictureDialog::previousPictureRequestedSlot() +{ + emit previousPictureRequested(); +} + +bool PictureDialog::eventFilter(QObject *obj, QEvent *ev) +{ + bool returnValue = false; + if (obj == this || obj == ui->labPicture) + { + if (ev->type() == QEvent::KeyPress) + { + QKeyEvent *keyEvent = dynamic_cast(ev); + switch (keyEvent->key()){ + case Qt::Key_Left: + emit previousPictureRequested(); + returnValue = true; + break; + case Qt::Key_Right: + emit nextPictureRequested(); + returnValue = true; + break; + case Qt::Key_1: + if (previewMode) + { + previewMode = false; + renderPicture(); + } + else + { + previewMode = true; + renderPicture(); + } + break; + case Qt::Key_2: + if (overlayEnabled) + { + overlayEnabled = false; + if (!previewMode) renderPicture(); + } + else + { + overlayEnabled = true; + if (!previewMode) renderPicture(); + } + break; + case Qt::Key_M: + //openPreviewMap(); GTA V only + returnValue = true; + break; +#if QT_VERSION >= 0x050300 + case Qt::Key_Exit: + ui->cmdClose->click(); + returnValue = true; + break; +#endif + case Qt::Key_Enter: case Qt::Key_Return: + on_labPicture_mouseDoubleClicked(Qt::LeftButton); + returnValue = true; + break; + case Qt::Key_Escape: + ui->cmdClose->click(); + returnValue = true; + break; + } + } +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 + if (obj != ui->labPicture && naviEnabled) + { + if (ev->type() == QEvent::MouseButtonPress) + { + QMouseEvent *mouseEvent = dynamic_cast(ev); + if (mouseEvent->pos().y() <= layout()->menuBar()->height()) + { + if (mouseEvent->button() == Qt::LeftButton) + { + dragPosition = mouseEvent->pos(); + dragStart = true; + } + } + } + if (ev->type() == QEvent::MouseButtonRelease) + { + QMouseEvent *mouseEvent = dynamic_cast(ev); + if (mouseEvent->pos().y() <= layout()->menuBar()->height()) + { + if (mouseEvent->button() == Qt::LeftButton) + { + dragStart = false; + } + } + } + if (ev->type() == QEvent::MouseMove && dragStart) + { + QMouseEvent *mouseEvent = dynamic_cast(ev); + if (mouseEvent->pos().y() <= layout()->menuBar()->height()) + { + if (mouseEvent->buttons() & Qt::LeftButton) + { + QPoint diff = mouseEvent->pos() - dragPosition; + move(QPoint(pos() + diff)); + updateGeometry(); + } + } + } + } +#endif +#endif + } + return returnValue; +} + +void PictureDialog::triggerFullscreenDoubeClick() +{ + on_labPicture_mouseDoubleClicked(Qt::LeftButton); +} + +void PictureDialog::exportCustomContextMenuRequestedPrivate(const QPoint &pos, bool fullscreen) +{ + rqFullscreen = fullscreen; + manageMenu->popup(pos); +} + +void PictureDialog::exportCustomContextMenuRequested(const QPoint &pos) +{ + exportCustomContextMenuRequestedPrivate(pos, true); +} + +void PictureDialog::mousePressEvent(QMouseEvent *ev) +{ + QDialog::mousePressEvent(ev); +} + +void PictureDialog::dialogNextPictureRequested() +{ + emit nextPictureRequested(); +} + +void PictureDialog::dialogPreviousPictureRequested() +{ + emit previousPictureRequested(); +} + +void PictureDialog::renderOverlayPicture() +{ + // Generating Overlay Preview + qreal screenRatio = AppEnv::screenRatio(); + qreal screenRatioPR = AppEnv::screenRatioPR(); + QRect preferedRect = QRect(0, 0, 200 * screenRatio * screenRatioPR, 160 * screenRatio * screenRatioPR); + QString overlayText = tr("Key 1 - Avatar Preview Mode\nKey 2 - Toggle Overlay\nArrow Keys - Navigate"); + + QFont overlayPainterFont; + overlayPainterFont.setPixelSize(12 * screenRatio * screenRatioPR); + QFontMetrics fontMetrics(overlayPainterFont); + QRect overlaySpace = fontMetrics.boundingRect(preferedRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextDontClip | Qt::TextWordWrap, overlayText); + + int hOverlay = Qt::AlignTop; + if (overlaySpace.height() < 74 * screenRatio * screenRatioPR) + { + hOverlay = Qt::AlignVCenter; + preferedRect.setHeight(71 * screenRatio * screenRatioPR); + overlaySpace.setHeight(80 * screenRatio * screenRatioPR); + } + else + { + overlaySpace.setHeight(overlaySpace.height() + 6 * screenRatio * screenRatioPR); + } + + QImage overlayImage(overlaySpace.size(), QImage::Format_ARGB32_Premultiplied); + overlayImage.fill(Qt::transparent); + + QPainter overlayPainter(&overlayImage); + overlayPainter.setPen(QColor::fromRgb(255, 255, 255, 255)); + overlayPainter.setFont(overlayPainterFont); + overlayPainter.drawText(preferedRect, Qt::AlignLeft | hOverlay | Qt::TextDontClip | Qt::TextWordWrap, overlayText); + overlayPainter.end(); + + if (overlaySpace.width() < 194 * screenRatio * screenRatioPR) + { + overlaySpace.setWidth(200 * screenRatio * screenRatioPR); + } + else + { + overlaySpace.setWidth(overlaySpace.width() + 6 * screenRatio * screenRatioPR); + } + + QImage overlayBorderImage(overlaySpace.width(), overlaySpace.height(), QImage::Format_ARGB6666_Premultiplied); + overlayBorderImage.fill(QColor(15, 15, 15, 162)); + + overlayTempImage = QImage(overlaySpace.width(), overlaySpace.height(), QImage::Format_ARGB6666_Premultiplied); + overlayTempImage.fill(Qt::transparent); + QPainter overlayTempPainter(&overlayTempImage); + overlayTempPainter.drawImage(0, 0, overlayBorderImage); + overlayTempPainter.drawImage(3 * screenRatio * screenRatioPR, 3 * screenRatio * screenRatioPR, overlayImage); + overlayTempPainter.end(); +} + +void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, bool readOk, bool _indexed, int _index) +{ + if (smpic != nullptr) + { + QObject::disconnect(smpic, SIGNAL(updated()), this, SLOT(updated())); + QObject::disconnect(smpic, SIGNAL(customSignal(QString)), this, SLOT(customSignal(QString))); + } + snapmaticPicture = QImage(); + indexed = _indexed; + index = _index; + smpic = picture; + if (!readOk) + { + QMessageBox::warning(this, tr("Snapmatic Picture Viewer"), tr("Failed at %1").arg(picture->getLastStep())); + return; + } + if (picture->isPicOk()) + { + snapmaticPicture = picture->getImage(); + renderPicture(); + ui->cmdManage->setEnabled(true); + } + if (picture->isJsonOk()) + { + crewStr = crewDB->getCrewName(crewID); + setWindowTitle(windowTitleStr.arg(picTitl)); + ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, generatePlayersString(), generateCrewString(), picTitl, picAreaStr, created)); + } + else + { + ui->labJSON->setText(jsonDrawString.arg("0", "0", "0", tr("No Players"), tr("No Crew"), tr("Unknown Location"))); + QMessageBox::warning(this,tr("Snapmatic Picture Viewer"),tr("Failed at %1").arg(picture->getLastStep())); + } + QObject::connect(smpic, SIGNAL(updated()), this, SLOT(updated())); + QObject::connect(smpic, SIGNAL(customSignal(QString)), this, SLOT(customSignal(QString))); + emit newPictureCommited(snapmaticPicture); +} + +void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, bool readOk, int index) +{ + setSnapmaticPicture(picture, readOk, true, index); +} + +void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, bool readOk) +{ + setSnapmaticPicture(picture, readOk, false, 0); +} + +void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, int index) +{ + setSnapmaticPicture(picture, true, index); +} + +void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture) +{ + setSnapmaticPicture(picture, true); +} + +void PictureDialog::renderPicture() +{ + qreal screenRatio = AppEnv::screenRatio(); + qreal screenRatioPR = AppEnv::screenRatioPR(); + if (!previewMode) + { + if (overlayEnabled) + { + QPixmap shownImagePixmap(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR); + shownImagePixmap.fill(Qt::transparent); + QPainter shownImagePainter(&shownImagePixmap); + shownImagePainter.drawImage(0, 0, snapmaticPicture.scaled(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + shownImagePainter.drawImage(3 * screenRatio * screenRatioPR, 3 * screenRatio * screenRatioPR, overlayTempImage); + shownImagePainter.end(); +#if QT_VERSION >= 0x050600 + shownImagePixmap.setDevicePixelRatio(screenRatioPR); +#endif + ui->labPicture->setPixmap(shownImagePixmap); + } + else + { + QPixmap shownImagePixmap(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR); + shownImagePixmap.fill(Qt::transparent); + QPainter shownImagePainter(&shownImagePixmap); + shownImagePainter.drawImage(0, 0, snapmaticPicture.scaled(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + shownImagePainter.end(); +#if QT_VERSION >= 0x050600 + shownImagePixmap.setDevicePixelRatio(screenRatioPR); +#endif + ui->labPicture->setPixmap(shownImagePixmap); + } + } + else + { + // Generating Avatar Preview + QPixmap avatarPixmap(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR); + QPainter snapPainter(&avatarPixmap); + QFont snapPainterFont; + snapPainterFont.setPixelSize(12 * screenRatio * screenRatioPR); + snapPainter.drawImage(0, 0, snapmaticPicture.scaled(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + snapPainter.drawImage(0, 0, avatarAreaPicture); + snapPainter.setPen(QColor::fromRgb(255, 255, 255, 255)); + snapPainter.setFont(snapPainterFont); + snapPainter.drawText(QRect(3 * screenRatio * screenRatioPR, 3 * screenRatio * screenRatioPR, 140 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR), Qt::AlignLeft | Qt::TextWordWrap, tr("Avatar Preview Mode\nPress 1 for Default View")); + snapPainter.end(); +#if QT_VERSION >= 0x050600 + avatarPixmap.setDevicePixelRatio(screenRatioPR); +#endif + ui->labPicture->setPixmap(avatarPixmap); + } +} + +void PictureDialog::crewNameUpdated() +{ + SnapmaticPicture *picture = smpic; // used by macro + QString crewIDStr = crewID; + if (crewIDStr == crewStr) + { + crewStr = crewDB->getCrewName(crewIDStr); + ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, generatePlayersString(), generateCrewString(), picTitl, picAreaStr, created)); + } +} + +void PictureDialog::playerNameUpdated() +{ + SnapmaticPicture *picture = smpic; // used by macro + if (plyrsList.count() >= 1) + { + ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, generatePlayersString(), generateCrewString(), picTitl, picAreaStr, created)); + } +} + +QString PictureDialog::generateCrewString() +{ + SnapmaticPicture *picture = smpic; // used by macro + const QString crewIDStr = crewID; // save operation time + if (crewIDStr != "0" && !crewIDStr.isEmpty()) + { + if (crewIDStr != crewStr) { + return QString("" % crewStr % ""); + } + else { + return QString(crewIDStr); + } + } + return tr("No Crew"); +} + +QString PictureDialog::generatePlayersString() +{ + SnapmaticPicture *picture = smpic; // used by macro + const QStringList playersList = plyrsList; // save operation time + QString plyrsStr; + if (playersList.length() >= 1) + { + for (const QString player : playersList) + { + const QString playerName = profileDB->getPlayerName(player); + if (player != playerName) { + plyrsStr += ", " % playerName % ""; + } + else { + plyrsStr += ", " % player; + } + } + plyrsStr.remove(0, 2); + } + else + { + plyrsStr = tr("No Players"); + } + return plyrsStr; +} + +void PictureDialog::exportSnapmaticPicture() +{ + if (rqFullscreen && fullscreenWidget != nullptr) + { + PictureExport::exportAsPicture(fullscreenWidget, smpic); + } + else + { + PictureExport::exportAsPicture(this, smpic); + } +} + +void PictureDialog::copySnapmaticPicture() +{ + if (rqFullscreen && fullscreenWidget != nullptr) + { + PictureExport::exportAsSnapmatic(fullscreenWidget, smpic); + } + else + { + PictureExport::exportAsSnapmatic(this, smpic); + } +} + +void PictureDialog::on_labPicture_mouseDoubleClicked(Qt::MouseButton button) +{ + if (button == Qt::LeftButton) + { + QRect desktopRect = QApplication::desktop()->screenGeometry(this); + PictureWidget *pictureWidget = new PictureWidget(this); // Work! + pictureWidget->setObjectName("PictureWidget"); +#if QT_VERSION >= 0x050600 + pictureWidget->setWindowFlags(pictureWidget->windowFlags()^Qt::FramelessWindowHint^Qt::WindowStaysOnTopHint^Qt::MaximizeUsingFullscreenGeometryHint); +#else + pictureWidget->setWindowFlags(pictureWidget->windowFlags()^Qt::FramelessWindowHint^Qt::WindowStaysOnTopHint); +#endif + pictureWidget->setWindowTitle(windowTitle()); + pictureWidget->setStyleSheet("QLabel#pictureLabel{background-color: black;}"); + pictureWidget->setImage(snapmaticPicture, desktopRect); + pictureWidget->setModal(true); + + fullscreenWidget = pictureWidget; + QObject::connect(this, SIGNAL(newPictureCommited(QImage)), pictureWidget, SLOT(setImage(QImage))); + QObject::connect(pictureWidget, SIGNAL(nextPictureRequested()), this, SLOT(dialogNextPictureRequested())); + QObject::connect(pictureWidget, SIGNAL(previousPictureRequested()), this, SLOT(dialogPreviousPictureRequested())); + + pictureWidget->move(desktopRect.x(), desktopRect.y()); + pictureWidget->resize(desktopRect.width(), desktopRect.height()); +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 + QtWin::markFullscreenWindow(pictureWidget, true); +#endif +#endif + pictureWidget->showFullScreen(); + pictureWidget->setFocus(); + pictureWidget->raise(); + pictureWidget->exec(); + + fullscreenWidget = nullptr; // Work! + delete pictureWidget; // Work! + } +} + +void PictureDialog::on_labPicture_customContextMenuRequested(const QPoint &pos) +{ + exportCustomContextMenuRequestedPrivate(ui->labPicture->mapToGlobal(pos), false); +} + +bool PictureDialog::isIndexed() +{ + return indexed; +} + +int PictureDialog::getIndex() +{ + return index; +} + +void PictureDialog::openPreviewMap() +{ + SnapmaticPicture *picture = smpic; + MapLocationDialog *mapLocDialog; + if (rqFullscreen && fullscreenWidget != nullptr) + { + mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, fullscreenWidget); + } + else + { + mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, this); + } + mapLocDialog->setWindowIcon(windowIcon()); + mapLocDialog->setModal(true); +#ifndef Q_OS_ANDROID + mapLocDialog->show(); +#else + mapLocDialog->showMaximized(); +#endif + mapLocDialog->exec(); + if (mapLocDialog->propUpdated()) + { + // Update Snapmatic Properties + SnapmaticProperties localSpJson = picture->getSnapmaticProperties(); + localSpJson.location.x = mapLocDialog->getXpos(); + localSpJson.location.y = mapLocDialog->getYpos(); + localSpJson.location.z = 0; + + // Update Snapmatic Picture + QString currentFilePath = picture->getPictureFilePath(); + QString originalFilePath = picture->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + SnapmaticProperties fallbackProperties = picture->getSnapmaticProperties(); + picture->setSnapmaticProperties(localSpJson); + if (!picture->exportPicture(currentFilePath)) + { + QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of I/O Error")); + picture->setSnapmaticProperties(fallbackProperties); + } + else + { + updated(); +#ifdef GTA5SYNC_TELEMETRY + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "LocationEdited"; + jsonObject["ExtraFlags"] = "Viewer"; + jsonObject["EditedSize"] = QString::number(picture->getContentMaxLength()); + jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } +#endif + } + } + delete mapLocDialog; +} + +void PictureDialog::editSnapmaticProperties() +{ + SnapmaticPicture *picture = smpic; + SnapmaticEditor *snapmaticEditor; + if (rqFullscreen && fullscreenWidget != nullptr) + { + snapmaticEditor = new SnapmaticEditor(crewDB, profileDB, fullscreenWidget); + } + else + { + snapmaticEditor = new SnapmaticEditor(crewDB, profileDB, this); + } + snapmaticEditor->setWindowIcon(windowIcon()); + snapmaticEditor->setSnapmaticPicture(picture); + snapmaticEditor->setModal(true); +#ifndef Q_OS_ANDROID + snapmaticEditor->show(); +#else + snapmaticEditor->showMaximized(); +#endif + snapmaticEditor->exec(); + delete snapmaticEditor; +} + +void PictureDialog::editSnapmaticImage() +{ + QImage *currentImage = new QImage(smpic->getImage()); + ImportDialog *importDialog; + if (rqFullscreen && fullscreenWidget != nullptr) + { + importDialog = new ImportDialog(profileName, fullscreenWidget); + } + else + { + importDialog = new ImportDialog(profileName, this); + } + importDialog->setWindowIcon(windowIcon()); + importDialog->setImage(currentImage); + importDialog->enableOverwriteMode(); + importDialog->setModal(true); + importDialog->exec(); + if (importDialog->isImportAgreed()) + { + const QByteArray previousPicture = smpic->getPictureStream(); + bool success = smpic->setImage(importDialog->image()); + if (success) + { + QString currentFilePath = smpic->getPictureFilePath(); + QString originalFilePath = smpic->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + if (!smpic->exportPicture(currentFilePath)) + { + smpic->setPictureStream(previousPicture); + QMessageBox::warning(this, QApplication::translate("ImageEditorDialog", "Snapmatic Image Editor"), QApplication::translate("ImageEditorDialog", "Patching of Snapmatic Image failed because of I/O Error")); + return; + } + smpic->emitCustomSignal("PictureUpdated"); +#ifdef GTA5SYNC_TELEMETRY + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "ImageEdited"; + jsonObject["ExtraFlags"] = "Viewer"; + jsonObject["EditedSize"] = QString::number(smpic->getContentMaxLength()); + jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } +#endif + } + else + { + QMessageBox::warning(this, QApplication::translate("ImageEditorDialog", "Snapmatic Image Editor"), QApplication::translate("ImageEditorDialog", "Patching of Snapmatic Image failed because of Image Error")); + return; + } + } + delete importDialog; +} + +void PictureDialog::editSnapmaticRawJson() +{ + SnapmaticPicture *picture = smpic; + JsonEditorDialog *jsonEditor; + if (rqFullscreen && fullscreenWidget != nullptr) + { + jsonEditor = new JsonEditorDialog(picture, fullscreenWidget); + } + else + { + jsonEditor = new JsonEditorDialog(picture, this); + } + jsonEditor->setWindowIcon(windowIcon()); + jsonEditor->setModal(true); +#ifndef Q_OS_ANDROID + jsonEditor->show(); +#else + jsonEditor->showMaximized(); +#endif + jsonEditor->exec(); + delete jsonEditor; +} + +void PictureDialog::updated() +{ + SnapmaticPicture *picture = smpic; // used by macro + crewStr = crewDB->getCrewName(crewID); + setWindowTitle(windowTitleStr.arg(picTitl)); + ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, generatePlayersString(), generateCrewString(), picTitl, picAreaStr, created)); +} + +void PictureDialog::customSignal(QString signal) +{ + SnapmaticPicture *picture = smpic; // used by macro + if (signal == "PictureUpdated") + { + snapmaticPicture = picture->getImage(); + renderPicture(); + } +} diff --git a/PictureDialog.h b/PictureDialog.h new file mode 100644 index 0000000..10c7593 --- /dev/null +++ b/PictureDialog.h @@ -0,0 +1,147 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef PICTUREDIALOG_H +#define PICTUREDIALOG_H + +#include "SnapmaticPicture.h" +#include "ProfileDatabase.h" +#include "CrewDatabase.h" +#include +#include +#include +#include +#include +#include + +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 +#ifdef GTA5SYNC_APV +#include +#endif +#endif +#endif + +namespace Ui { +class PictureDialog; +} + +class PictureDialog : public QDialog +{ + Q_OBJECT +public: + explicit PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent = 0); + explicit PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QString profileName, QWidget *parent = 0); + explicit PictureDialog(bool primaryWindow, ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent = 0); + explicit PictureDialog(bool primaryWindow, ProfileDatabase *profileDB, CrewDatabase *crewDB, QString profileName, QWidget *parent = 0); + void setupPictureDialog(); + void setSnapmaticPicture(SnapmaticPicture *picture, bool readOk, bool indexed, int index); + void setSnapmaticPicture(SnapmaticPicture *picture, bool readOk, int index); + void setSnapmaticPicture(SnapmaticPicture *picture, bool readOk); + void setSnapmaticPicture(SnapmaticPicture *picture, int index); + void setSnapmaticPicture(SnapmaticPicture *picture); + void addPreviousNextButtons(); + void styliseDialog(); + bool isIndexed(); + int getIndex(); + ~PictureDialog(); + +public slots: + void crewNameUpdated(); + void playerNameUpdated(); + void dialogNextPictureRequested(); + void dialogPreviousPictureRequested(); + void adaptNewDialogSize(QSize newLabelSize); + void exportCustomContextMenuRequested(const QPoint &pos); + +private slots: + void copySnapmaticPicture(); + void exportSnapmaticPicture(); + void triggerFullscreenDoubeClick(); + void on_labPicture_mouseDoubleClicked(Qt::MouseButton button); + void on_labPicture_customContextMenuRequested(const QPoint &pos); + void exportCustomContextMenuRequestedPrivate(const QPoint &pos, bool fullscreen); + void nextPictureRequestedSlot(); + void previousPictureRequestedSlot(); + void editSnapmaticProperties(); + void editSnapmaticRawJson(); + void editSnapmaticImage(); + void renderOverlayPicture(); + void renderPicture(); + void openPreviewMap(); + void updated(); + void customSignal(QString signal); + +signals: + void nextPictureRequested(); + void previousPictureRequested(); + void newPictureCommited(QImage picture); + void endDatabaseThread(); + +protected: + void closeEvent(QCloseEvent *ev); + bool eventFilter(QObject *obj, QEvent *ev); + void mousePressEvent(QMouseEvent *ev); + bool event(QEvent *event); +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 +#ifdef GTA5SYNC_APV + bool nativeEvent(const QByteArray &eventType, void *message, long *result); + LRESULT HitTestNCA(HWND hWnd, LPARAM lParam); + void resizeEvent(QResizeEvent *event); +#endif +#endif +#endif + +private: + QString generateCrewString(); + QString generatePlayersString(); + bool primaryWindow; + ProfileDatabase *profileDB; + CrewDatabase *crewDB; + QString profileName; + Ui::PictureDialog *ui; + QMap globalMap; + SnapmaticPicture *smpic; + QWidget *fullscreenWidget; + QImage avatarAreaPicture; + QImage snapmaticPicture; + QImage overlayTempImage; + QString jsonDrawString; + QString windowTitleStr; + QString picAreaStr; + QString crewStr; + bool overlayEnabled; + bool rqFullscreen; + bool naviEnabled; + bool previewMode; + bool indexed; + int index; + int avatarLocX; + int avatarLocY; + int avatarSize; + QMenu *manageMenu; +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 + QPoint dragPosition; + bool dragStart; +#endif +#endif +}; + +#endif // PICTUREDIALOG_H diff --git a/PictureDialog.ui b/PictureDialog.ui new file mode 100644 index 0000000..888aa92 --- /dev/null +++ b/PictureDialog.ui @@ -0,0 +1,249 @@ + + + PictureDialog + + + + 0 + 0 + 960 + 618 + + + + Snapmatic Picture Viewer - %1 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 1 + + + + Qt::CustomContextMenu + + + + + + Qt::AlignCenter + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 4 + + + 10 + + + 4 + + + 4 + + + + + + 0 + 0 + + + + <span style=" font-weight:600;">Title: </span>%6<br/> +<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Created: </span>%8 + + + true + + + true + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + 6 + + + 5 + + + 5 + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 0 + 0 + + + + + + + + 6 + + + + + + 0 + 0 + + + + Qt::NoFocus + + + Manage picture + + + &Manage + + + false + + + + + + + + 0 + 0 + + + + Qt::NoFocus + + + Close viewer + + + &Close + + + false + + + + + + + + + + + + + + + + + UiModLabel + QLabel +
uimod/UiModLabel.h
+ + mouseMoved() + mouseReleased() + mousePressed() + mouseDoubleClicked() + +
+
+ + + + cmdClose + clicked() + PictureDialog + close() + + + 912 + 514 + + + 479 + 267 + + + + +
diff --git a/PictureExport.cpp b/PictureExport.cpp new file mode 100644 index 0000000..44191b1 --- /dev/null +++ b/PictureExport.cpp @@ -0,0 +1,329 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "config.h" +#include "PictureExport.h" +#include "PictureDialog.h" +#include "StandardPaths.h" +#include "SidebarGenerator.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#if QT_VERSION >= 0x050000 +#include +#endif + +PictureExport::PictureExport() +{ + +} + +void PictureExport::exportAsPicture(QWidget *parent, SnapmaticPicture *picture) +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + + // Picture Settings + // Quality Settings + settings.beginGroup("Pictures"); + int defaultQuality = 100; + QSize defExportSize = QSize(960, 536); + int customQuality = settings.value("CustomQuality", defaultQuality).toInt(); + if (customQuality < 1 || customQuality > 100) + { + customQuality = 100; + } + bool useCustomQuality = settings.value("CustomQualityEnabled", false).toBool(); + + // Size Settings + QSize cusExportSize = settings.value("CustomSize", defExportSize).toSize(); + if (cusExportSize.width() > 3840) + { + cusExportSize.setWidth(3840); + } + else if (cusExportSize.height() > 2160) + { + cusExportSize.setHeight(2160); + } + if (cusExportSize.width() < 1) + { + cusExportSize.setWidth(1); + } + else if (cusExportSize.height() < 1) + { + cusExportSize.setHeight(1); + } + QString sizeMode = settings.value("ExportSizeMode", "Default").toString(); + Qt::AspectRatioMode aspectRatio = (Qt::AspectRatioMode)settings.value("AspectRatio", Qt::KeepAspectRatio).toInt(); + QString defaultExportFormat = settings.value("DefaultExportFormat", ".jpg").toString(); + settings.endGroup(); + // End Picture Settings + + settings.beginGroup("FileDialogs"); + bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); + settings.beginGroup("ExportAsPicture"); + +fileDialogPreSave: //Work? + QFileDialog fileDialog(parent); + fileDialog.setFileMode(QFileDialog::AnyFile); + fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setAcceptMode(QFileDialog::AcceptSave); + fileDialog.setOption(QFileDialog::DontUseNativeDialog, dontUseNativeDialog); + fileDialog.setOption(QFileDialog::DontConfirmOverwrite, true); + fileDialog.setDefaultSuffix("suffix"); + fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + fileDialog.setWindowTitle(PictureDialog::tr("Export as Picture...")); + fileDialog.setLabelText(QFileDialog::Accept, PictureDialog::tr("Export")); + + QStringList filters; + filters << PictureDialog::tr("JPEG Graphics (*.jpg *.jpeg)"); + filters << PictureDialog::tr("Portable Network Graphics (*.png)"); + fileDialog.setNameFilters(filters); + + QList sidebarUrls = SidebarGenerator::generateSidebarUrls(fileDialog.sidebarUrls()); + + fileDialog.setSidebarUrls(sidebarUrls); + fileDialog.setDirectory(settings.value("Directory", StandardPaths::picturesLocation()).toString()); + fileDialog.restoreGeometry(settings.value(parent->objectName() % "+Geometry", "").toByteArray()); + + QString newPictureFileName = getPictureFileName(picture) % defaultExportFormat; + fileDialog.selectFile(newPictureFileName); + + if (fileDialog.exec()) + { + QStringList selectedFiles = fileDialog.selectedFiles(); + if (selectedFiles.length() == 1) + { + QString saveFileFormat; + QString selectedFile = selectedFiles.at(0); + + if (selectedFile.right(4) == ".jpg") + { + saveFileFormat = "JPEG"; + } + else if (selectedFile.right(4) == ".jpeg") + { + saveFileFormat = "JPEG"; + } + else if (selectedFile.right(4) == ".png") + { + saveFileFormat = "PNG"; + } + else if (selectedFile.right(7) == ".suffix") + { + if (fileDialog.selectedNameFilter() == "JPEG picture (*.jpg)") + { + selectedFile.replace(".suffix", ".jpg"); + } + else if (fileDialog.selectedNameFilter() == "Portable Network Graphics (*.png)") + { + selectedFile.replace(".suffix", ".png"); + } + else + { + selectedFile.replace(".suffix", ".jpg"); + } + } + + if (QFile::exists(selectedFile)) + { + if (QMessageBox::No == QMessageBox::warning(parent, PictureDialog::tr("Export as Picture"), PictureDialog::tr("Overwrite %1 with current Snapmatic picture?").arg("\""+selectedFile+"\""), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)) + { + goto fileDialogPreSave; //Work? + } + } + + // Scale Picture + QImage exportPicture = picture->getImage(); + if (sizeMode == "Desktop") + { + QRect desktopResolution = QApplication::desktop()->screenGeometry(); + exportPicture = exportPicture.scaled(desktopResolution.width(), desktopResolution.height(), aspectRatio, Qt::SmoothTransformation); + } + else if (sizeMode == "Custom") + { + exportPicture = exportPicture.scaled(cusExportSize, aspectRatio, Qt::SmoothTransformation); + } + + int errorId = 0; + bool isSaved = false; +#if QT_VERSION >= 0x050000 + QSaveFile *picFile = new QSaveFile(selectedFile); +#else + QFile *picFile = new QFile(selectedFile); +#endif + if (picFile->open(QIODevice::WriteOnly)) + { + isSaved = exportPicture.save(picFile, saveFileFormat.toStdString().c_str(), useCustomQuality ? customQuality : defaultQuality); +#if QT_VERSION >= 0x050000 + if (isSaved) + { + isSaved = picFile->commit(); + } + else + { + errorId = 1; + } +#else + picFile->close(); +#endif + } + else + { + errorId = 2; + } + delete picFile; + + if (!isSaved) + { + switch (errorId) + { + case 0: + QMessageBox::warning(parent, PictureDialog::tr("Export as Picture"), PictureDialog::tr("Failed to export the picture because the system occurred a write failure")); + break; + case 1: + QMessageBox::warning(parent, PictureDialog::tr("Export as Picture"), PictureDialog::tr("Failed to export the picture because the format detection failures")); + break; + case 2: + QMessageBox::warning(parent, PictureDialog::tr("Export as Picture"), PictureDialog::tr("Failed to export the picture because the file can't be written")); + break; + default: + QMessageBox::warning(parent, PictureDialog::tr("Export as Picture"), PictureDialog::tr("Failed to export the picture because of an unknown reason")); + } + goto fileDialogPreSave; //Work? + } + } + else + { + QMessageBox::warning(parent, PictureDialog::tr("Export as Picture"), PictureDialog::tr("No valid file is selected")); + goto fileDialogPreSave; //Work? + } + } + + settings.setValue(parent->objectName() % "+Geometry", fileDialog.saveGeometry()); + settings.setValue("Directory", fileDialog.directory().absolutePath()); + settings.endGroup(); + settings.endGroup(); +} + +void PictureExport::exportAsSnapmatic(QWidget *parent, SnapmaticPicture *picture) +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("FileDialogs"); + bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); + settings.beginGroup("ExportAsSnapmatic"); + + QString adjustedPicPath = picture->getOriginalPictureFileName(); + +fileDialogPreSave: //Work? + QFileInfo sgdFileInfo(adjustedPicPath); + QFileDialog fileDialog(parent); + fileDialog.setFileMode(QFileDialog::AnyFile); + fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setAcceptMode(QFileDialog::AcceptSave); + fileDialog.setOption(QFileDialog::DontUseNativeDialog, dontUseNativeDialog); + fileDialog.setOption(QFileDialog::DontConfirmOverwrite, true); + fileDialog.setDefaultSuffix(".rem"); + fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + fileDialog.setWindowTitle(PictureDialog::tr("Export as Snapmatic...")); + fileDialog.setLabelText(QFileDialog::Accept, PictureDialog::tr("Export")); + + QStringList filters; + filters << PictureDialog::tr("RDR 2 Export (*.r5e)"); + filters << PictureDialog::tr("RDR 2 Raw Export (*.auto)"); + filters << PictureDialog::tr("Snapmatic pictures (PRDR*)"); + fileDialog.setNameFilters(filters); + + QList sidebarUrls = SidebarGenerator::generateSidebarUrls(fileDialog.sidebarUrls()); + + fileDialog.setSidebarUrls(sidebarUrls); + fileDialog.setDirectory(settings.value("Directory", StandardPaths::documentsLocation()).toString()); + fileDialog.restoreGeometry(settings.value(parent->objectName() % "+Geometry", "").toByteArray()); + fileDialog.selectFile(QString(picture->getExportPictureFileName() % ".r5e")); + + if (fileDialog.exec()) + { + QStringList selectedFiles = fileDialog.selectedFiles(); + if (selectedFiles.length() == 1) + { + QString selectedFile = selectedFiles.at(0); + bool isAutoExt = false; + if (selectedFile.right(5) == ".auto") + { + isAutoExt = true; + QString dirPath = QFileInfo(selectedFile).dir().path(); + QString stockFileName = sgdFileInfo.fileName(); + selectedFile = dirPath % "/" % stockFileName; + } + else if (selectedFile.right(4) == ".rem") + { + selectedFile.remove(selectedFile.length() - 4, 4); + } + + if (QFile::exists(selectedFile)) + { + if (QMessageBox::No == QMessageBox::warning(parent, PictureDialog::tr("Export as Snapmatic"), PictureDialog::tr("Overwrite %1 with current Snapmatic picture?").arg("\""+selectedFile+"\""), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)) + { + goto fileDialogPreSave; //Work? + } + } + + if (selectedFile.right(4) == ".r5e") + { + bool isExported = picture->exportPicture(selectedFile, SnapmaticFormat::G5E_Format); + if (!isExported) + { + QMessageBox::warning(parent, PictureDialog::tr("Export as Snapmatic"), PictureDialog::tr("Failed to export current Snapmatic picture")); + goto fileDialogPreSave; //Work? + } + } + else + { + bool isCopied = picture->exportPicture(selectedFile, SnapmaticFormat::PGTA_Format); + if (!isCopied) + { + QMessageBox::warning(parent, PictureDialog::tr("Export as Snapmatic"), PictureDialog::tr("Failed to export current Snapmatic picture")); + goto fileDialogPreSave; //Work? + } + else + { + if (isAutoExt) QMessageBox::information(parent, PictureDialog::tr("Export as Snapmatic"), PictureDialog::tr("Exported Snapmatic to \"%1\" because of using the .auto extension.").arg(selectedFile)); + } + } + } + else + { + QMessageBox::warning(parent, PictureDialog::tr("Export as Snapmatic"), PictureDialog::tr("No valid file is selected")); + goto fileDialogPreSave; //Work? + } + } + + settings.setValue(parent->objectName() % "+Geometry", fileDialog.saveGeometry()); + settings.setValue("Directory", fileDialog.directory().absolutePath()); + settings.endGroup(); +} + +QString PictureExport::getPictureFileName(SnapmaticPicture *picture) +{ + return picture->getExportPictureFileName(); +} diff --git a/PictureExport.h b/PictureExport.h new file mode 100644 index 0000000..d38fdcd --- /dev/null +++ b/PictureExport.h @@ -0,0 +1,35 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef PICTUREEXPORT_H +#define PICTUREEXPORT_H + +#include "SnapmaticPicture.h" +#include +#include + +class PictureExport +{ +public: + PictureExport(); + static void exportAsPicture(QWidget *parent, SnapmaticPicture *picture); + static void exportAsSnapmatic(QWidget *parent, SnapmaticPicture *picture); + static QString getPictureFileName(SnapmaticPicture *picture); +}; + +#endif // PICTUREEXPORT_H diff --git a/PictureWidget.cpp b/PictureWidget.cpp new file mode 100644 index 0000000..cbfc374 --- /dev/null +++ b/PictureWidget.cpp @@ -0,0 +1,109 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "PictureDialog.h" +#include "PictureWidget.h" +#include "UiModLabel.h" +#include +#include +#include +#include +#include +#include +#include + +PictureWidget::PictureWidget(QWidget *parent) : QDialog(parent) +{ + installEventFilter(this); + + widgetLayout = new QHBoxLayout(this); + widgetLayout->setSpacing(0); + widgetLayout->setContentsMargins(0, 0, 0, 0); + + pictureLabel = new UiModLabel(this); + pictureLabel->setObjectName("pictureLabel"); + pictureLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + pictureLabel->setContextMenuPolicy(Qt::CustomContextMenu); + pictureLabel->setAlignment(Qt::AlignCenter); + widgetLayout->addWidget(pictureLabel); + + QObject::connect(pictureLabel, SIGNAL(mouseDoubleClicked(Qt::MouseButton)), this, SLOT(pictureDoubleClicked(Qt::MouseButton))); + QObject::connect(pictureLabel, SIGNAL(customContextMenuRequested(QPoint)), parent, SLOT(exportCustomContextMenuRequested(QPoint))); + QObject::connect(QApplication::desktop(), SIGNAL(resized(int)), this, SLOT(updateWindowSize(int))); + + setLayout(widgetLayout); +} + +PictureWidget::~PictureWidget() +{ + widgetLayout->removeWidget(pictureLabel); + delete pictureLabel; + delete widgetLayout; +} + +bool PictureWidget::eventFilter(QObject *obj, QEvent *ev) +{ + if (obj == this) + { + if (ev->type() == QEvent::KeyPress) + { + QKeyEvent *keyEvent = (QKeyEvent*)ev; + switch (keyEvent->key()){ + case Qt::Key_Left: + emit previousPictureRequested(); + break; + case Qt::Key_Right: + emit nextPictureRequested(); + break; + } + } + } + return false; +} + +void PictureWidget::pictureDoubleClicked(Qt::MouseButton button) +{ + if (button == Qt::LeftButton) + { + close(); + } +} + +void PictureWidget::setImage(QImage image_, QRect rec) +{ + image = image_; + pictureLabel->setPixmap(QPixmap::fromImage(image.scaled(rec.width(), rec.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation))); +} + +void PictureWidget::setImage(QImage image_) +{ + image = image_; + pictureLabel->setPixmap(QPixmap::fromImage(image.scaled(geometry().width(), geometry().height(), Qt::KeepAspectRatio, Qt::SmoothTransformation))); +} + +void PictureWidget::updateWindowSize(int screenID) +{ + if (screenID == QApplication::desktop()->screenNumber(this)) + { + QRect desktopRect = QApplication::desktop()->screenGeometry(this); + this->move(desktopRect.x(), desktopRect.y()); + this->resize(desktopRect.width(), desktopRect.height()); + this->showFullScreen(); + pictureLabel->setPixmap(QPixmap::fromImage(image.scaled(desktopRect.width(), desktopRect.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation))); + } +} diff --git a/PictureWidget.h b/PictureWidget.h new file mode 100644 index 0000000..761d7c7 --- /dev/null +++ b/PictureWidget.h @@ -0,0 +1,56 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef PICTUREWIDGET_H +#define PICTUREWIDGET_H + +#include "UiModLabel.h" +#include +#include +#include +#include + +class PictureWidget : public QDialog +{ + Q_OBJECT +public: + explicit PictureWidget(QWidget *parent = 0); + void setImage(QImage image, QRect rec); + ~PictureWidget(); + +public slots: + void setImage(QImage image); + +protected: + bool eventFilter(QObject *obj, QEvent *ev); + +private: + QHBoxLayout *widgetLayout; + UiModLabel *pictureLabel; + QImage image; + +private slots: + void pictureDoubleClicked(Qt::MouseButton button); + void updateWindowSize(int screenID); + +signals: + void nextPictureRequested(); + void previousPictureRequested(); +}; + +#endif // PICTUREWIDGET_H diff --git a/PlayerListDialog.cpp b/PlayerListDialog.cpp new file mode 100644 index 0000000..2f7c758 --- /dev/null +++ b/PlayerListDialog.cpp @@ -0,0 +1,221 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "PlayerListDialog.h" +#include "ui_PlayerListDialog.h" +#include "AppEnv.h" +#include +#include +#include +#include +#include +#include + +PlayerListDialog::PlayerListDialog(QStringList players, ProfileDatabase *profileDB, QWidget *parent) : + QDialog(parent), players(players), profileDB(profileDB), + ui(new Ui::PlayerListDialog) +{ + // Set Window Flags + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); + + listUpdated = false; + ui->setupUi(this); + ui->cmdCancel->setDefault(true); + ui->cmdCancel->setFocus(); + + // Set Icon for Apply Button + if (QIcon::hasThemeIcon("dialog-ok-apply")) + { + ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok-apply")); + } + else if (QIcon::hasThemeIcon("dialog-apply")) + { + ui->cmdApply->setIcon(QIcon::fromTheme("dialog-apply")); + } + else if (QIcon::hasThemeIcon("gtk-apply")) + { + ui->cmdApply->setIcon(QIcon::fromTheme("gtk-apply")); + } + else if (QIcon::hasThemeIcon("dialog-ok")) + { + ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok")); + } + else if (QIcon::hasThemeIcon("gtk-ok")) + { + ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok")); + } + + // Set Icon for Cancel Button + if (QIcon::hasThemeIcon("dialog-cancel")) + { + ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel")); + } + else if (QIcon::hasThemeIcon("gtk-cancel")) + { + ui->cmdCancel->setIcon(QIcon::fromTheme("gtk-cancel")); + } + + // Set Icon for Manage Buttons + if (QIcon::hasThemeIcon("go-previous") && QIcon::hasThemeIcon("go-next") && QIcon::hasThemeIcon("list-add")) + { + ui->cmdMakeAv->setIcon(QIcon::fromTheme("go-previous")); + ui->cmdMakeSe->setIcon(QIcon::fromTheme("go-next")); + ui->cmdMakeAd->setIcon(QIcon::fromTheme("list-add")); + } + else + { + ui->cmdMakeAv->setIcon(QIcon(":/img/back.svgz")); + ui->cmdMakeSe->setIcon(QIcon(":/img/next.svgz")); + ui->cmdMakeAd->setIcon(QIcon(":/img/add.svgz")); + } + buildInterface(); + + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + resize(500 * screenRatio, 350 * screenRatio); +} + +PlayerListDialog::~PlayerListDialog() +{ + for (QObject *object : ui->listAvPlayers->children()) + { + delete object; + } + for (QObject *object : ui->listSePlayers->children()) + { + delete object; + } + delete ui; +} + +void PlayerListDialog::on_cmdCancel_clicked() +{ + close(); +} + +void PlayerListDialog::buildInterface() +{ + const QStringList dbPlayers = profileDB->getPlayers(); + for (QString sePlayer : players) + { + QListWidgetItem *playerItem = new QListWidgetItem(profileDB->getPlayerName(sePlayer)); + playerItem->setData(Qt::UserRole, sePlayer); + ui->listSePlayers->addItem(playerItem); + } + for (QString dbPlayer : dbPlayers) + { + if (!players.contains(dbPlayer)) + { + QListWidgetItem *playerItem = new QListWidgetItem(profileDB->getPlayerName(dbPlayer)); + playerItem->setData(Qt::UserRole, dbPlayer); + ui->listAvPlayers->addItem(playerItem); + } + } + ui->listAvPlayers->sortItems(Qt::AscendingOrder); +} + +void PlayerListDialog::on_cmdMakeAv_clicked() +{ + for (QListWidgetItem *item : ui->listSePlayers->selectedItems()) + { + QString playerName = item->text(); + int playerID = item->data(Qt::UserRole).toInt(); + delete item; + QListWidgetItem *playerItem = new QListWidgetItem(playerName); + playerItem->setData(Qt::UserRole, playerID); + ui->listAvPlayers->addItem(playerItem); + ui->listAvPlayers->sortItems(Qt::AscendingOrder); + } +} + +void PlayerListDialog::on_cmdMakeSe_clicked() +{ + int maxPlayers = 30; + if (maxPlayers < ui->listSePlayers->count() + ui->listAvPlayers->selectedItems().count()) + { + QMessageBox::warning(this, tr("Add Players..."), tr("Failed to add more Players because the limit of Players are %1!").arg(QString::number(maxPlayers))); + return; + } + for (QListWidgetItem *item : ui->listAvPlayers->selectedItems()) + { + QString playerName = item->text(); + int playerID = item->data(Qt::UserRole).toInt(); + delete item; + QListWidgetItem *playerItem = new QListWidgetItem(playerName); + playerItem->setData(Qt::UserRole, playerID); + ui->listSePlayers->addItem(playerItem); + } +} + +void PlayerListDialog::on_cmdMakeAd_clicked() +{ + bool playerOk; + int playerID = QInputDialog::getInt(this, tr("Add Player..."), tr("Enter Social Club Player ID"), 1, 1, 214783647, 1, &playerOk, windowFlags()); + if (playerOk) + { + for (int i = 0; i < ui->listAvPlayers->count(); ++i) + { + QListWidgetItem *item = ui->listAvPlayers->item(i); + QString itemPlayerName = item->text(); + int itemPlayerID = item->data(Qt::UserRole).toInt(); + if (itemPlayerID == playerID) + { + delete item; + QListWidgetItem *playerItem = new QListWidgetItem(itemPlayerName); + playerItem->setData(Qt::UserRole, playerID); + ui->listSePlayers->addItem(playerItem); + return; + } + } + for (int i = 0; i < ui->listSePlayers->count(); ++i) + { + QListWidgetItem *item = ui->listSePlayers->item(i); + int itemPlayerID = item->data(Qt::UserRole).toInt(); + if (itemPlayerID == playerID) + { + QMessageBox::warning(this, tr("Add Player..."), tr("Failed to add Player %1 because Player %1 is already added!").arg(QString::number(playerID))); + return; + } + } + QListWidgetItem *playerItem = new QListWidgetItem(QString::number(playerID)); + playerItem->setData(Qt::UserRole, playerID); + ui->listSePlayers->addItem(playerItem); + } +} + +void PlayerListDialog::on_cmdApply_clicked() +{ + players.clear(); + for (int i = 0; i < ui->listSePlayers->count(); ++i) + { + players += ui->listSePlayers->item(i)->data(Qt::UserRole).toString(); + } + emit playerListUpdated(players); + listUpdated = true; + close(); +} + +QStringList PlayerListDialog::getPlayerList() const +{ + return players; +} + +bool PlayerListDialog::isListUpdated() +{ + return listUpdated; +} diff --git a/PlayerListDialog.h b/PlayerListDialog.h new file mode 100644 index 0000000..1cd35d6 --- /dev/null +++ b/PlayerListDialog.h @@ -0,0 +1,57 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef PLAYERLISTDIALOG_H +#define PLAYERLISTDIALOG_H + +#include "ProfileDatabase.h" +#include + +namespace Ui { +class PlayerListDialog; +} + +class PlayerListDialog : public QDialog +{ + Q_OBJECT + +public: + explicit PlayerListDialog(QStringList players, ProfileDatabase *profileDB, QWidget *parent = 0); + QStringList getPlayerList() const; + bool isListUpdated(); + ~PlayerListDialog(); + +private slots: + void on_cmdCancel_clicked(); + void on_cmdMakeAv_clicked(); + void on_cmdMakeSe_clicked(); + void on_cmdMakeAd_clicked(); + void on_cmdApply_clicked(); + +private: + QStringList players; + ProfileDatabase *profileDB; + Ui::PlayerListDialog *ui; + bool listUpdated; + void buildInterface(); + +signals: + void playerListUpdated(QStringList playerList); +}; + +#endif // PLAYERLISTDIALOG_H diff --git a/PlayerListDialog.ui b/PlayerListDialog.ui new file mode 100644 index 0000000..3bdda4c --- /dev/null +++ b/PlayerListDialog.ui @@ -0,0 +1,173 @@ + + + PlayerListDialog + + + + 0 + 0 + 500 + 350 + + + + Edit Players... + + + + + + + + + + Available Players: + + + + + + + QAbstractItemView::ExtendedSelection + + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + Qt::NoFocus + + + false + + + + + + + Qt::NoFocus + + + + + + false + + + + + + + Qt::NoFocus + + + + + + false + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + + + Selected Players: + + + + + + + QAbstractItemView::InternalMove + + + QAbstractItemView::ExtendedSelection + + + + + + + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + &Apply + + + + + + + + 0 + 0 + + + + &Cancel + + + + + + + + + + diff --git a/ProfileDatabase.cpp b/ProfileDatabase.cpp new file mode 100644 index 0000000..f15e1c6 --- /dev/null +++ b/ProfileDatabase.cpp @@ -0,0 +1,85 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "ProfileDatabase.h" +#include "StandardPaths.h" +#include "config.h" +#include +#include +#include +#include +#include + +ProfileDatabase::ProfileDatabase(QObject *parent) : QObject(parent) +{ + QDir dir; + dir.mkpath(StandardPaths::dataLocation()); + dir.setPath(StandardPaths::dataLocation()); + QString dirPath = dir.absolutePath(); + QString defaultConfPath = dirPath % "/players.ini"; + + QSettings confPathSettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + confPathSettings.beginGroup("Database"); + QString confPathFile = confPathSettings.value("Players", defaultConfPath).toString(); + confPathSettings.endGroup(); + + profileDB = new QSettings(confPathFile, QSettings::IniFormat); + profileDB->beginGroup("Players"); +} + +ProfileDatabase::~ProfileDatabase() +{ + profileDB->endGroup(); + delete profileDB; +} + +QStringList ProfileDatabase::getPlayers() +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "getPlayers"; +#endif + return profileDB->childKeys(); +} + +QString ProfileDatabase::getPlayerName(QString playerID) +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "getPlayerName" << playerID; +#endif + return profileDB->value(playerID, playerID).toString(); +} + +QString ProfileDatabase::getPlayerName(int playerID) +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "getPlayerName" << playerID; +#endif + return profileDB->value(QString::number(playerID), playerID).toString(); +} + +void ProfileDatabase::setPlayerName(int playerID, QString playerName) +{ + QMutexLocker locker(&mutex); +#ifdef GTA5SYNC_DEBUG + qDebug() << "setPlayerName" << playerID << playerName; +#endif + profileDB->setValue(QString::number(playerID), playerName); +} diff --git a/ProfileDatabase.h b/ProfileDatabase.h new file mode 100644 index 0000000..93fa4cf --- /dev/null +++ b/ProfileDatabase.h @@ -0,0 +1,46 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef PROFILEDATABASE_H +#define PROFILEDATABASE_H + +#include +#include +#include +#include + +class ProfileDatabase : public QObject +{ + Q_OBJECT +public: + explicit ProfileDatabase(QObject *parent = 0); + QString getPlayerName(QString playerID); + QString getPlayerName(int playerID); + QStringList getPlayers(); + ~ProfileDatabase(); + +private: + mutable QMutex mutex; + QSettings *profileDB; + +public slots: + void setPlayerName(int playerID, QString playerName); + +}; + +#endif // PROFILEDATABASE_H diff --git a/ProfileInterface.cpp b/ProfileInterface.cpp new file mode 100644 index 0000000..6af7fbd --- /dev/null +++ b/ProfileInterface.cpp @@ -0,0 +1,2371 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2019 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "ProfileInterface.h" +#include "ui_ProfileInterface.h" +#include "PlayerListDialog.h" +#include "SidebarGenerator.h" +#include "SnapmaticWidget.h" +#include "DatabaseThread.h" +#include "SavegameWidget.h" +#include "PictureDialog.h" +#include "PictureExport.h" +#include "StandardPaths.h" +#include "ProfileLoader.h" +#include "ExportThread.h" +#include "ImportDialog.h" +#include "UiModLabel.h" +#include "pcg_basic.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#ifdef GTA5SYNC_TELEMETRY +#include "TelemetryClass.h" +#include +#include +#endif + +#define importTimeFormat "HHmmss" +#define findRetryLimit 500 + +ProfileInterface::ProfileInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent) : + QWidget(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB), + ui(new Ui::ProfileInterface) +{ + ui->setupUi(this); + ui->cmdImport->setEnabled(false); + ui->cmdCloseProfile->setEnabled(false); + loadingStr = ui->labProfileLoading->text(); + enabledPicStr = tr("Enabled pictures: %1 of %2"); + selectedWidgts = 0; + profileFolder = ""; + contextMenuOpened = false; + isProfileLoaded = false; + previousWidget = nullptr; + profileLoader = nullptr; + saSpacerItem = nullptr; + + updatePalette(); + QString appVersion = GTA5SYNC_APPVER; +#ifndef GTA5SYNC_BUILDTYPE_REL +#ifdef GTA5SYNC_COMMIT + if (!appVersion.contains("-")) { appVersion = appVersion % "-" % GTA5SYNC_COMMIT; } +#endif +#endif + ui->labVersion->setText(QString("%1 %2").arg(GTA5SYNC_APPSTR, appVersion)); + ui->saProfileContent->setFilesDropEnabled(true); + ui->saProfileContent->setImageDropEnabled(true); + + // Set Icon for Close Button + if (QIcon::hasThemeIcon("dialog-close")) + { + ui->cmdCloseProfile->setIcon(QIcon::fromTheme("dialog-close")); + } + else if (QIcon::hasThemeIcon("gtk-close")) + { + ui->cmdCloseProfile->setIcon(QIcon::fromTheme("gtk-close")); + } + + // Set Icon for Import Button + if (QIcon::hasThemeIcon("document-import")) + { + ui->cmdImport->setIcon(QIcon::fromTheme("document-import")); + } + else if (QIcon::hasThemeIcon("document-open")) + { + ui->cmdImport->setIcon(QIcon::fromTheme("document-open")); + } + + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); +#ifndef Q_OS_MAC + ui->hlButtons->setSpacing(6 * screenRatio); + ui->hlButtons->setContentsMargins(9 * screenRatio, 9 * screenRatio, 9 * screenRatio, 9 * screenRatio); +#else + if (QApplication::style()->objectName() == "macintosh") + { + ui->hlButtons->setSpacing(6 * screenRatio); + ui->hlButtons->setContentsMargins(9 * screenRatio, 15 * screenRatio, 15 * screenRatio, 17 * screenRatio); + } + else + { + ui->hlButtons->setSpacing(6 * screenRatio); + ui->hlButtons->setContentsMargins(9 * screenRatio, 9 * screenRatio, 9 * screenRatio, 9 * screenRatio); + } +#endif + + // Seed RNG + pcg32_srandom_r(&rng, time(NULL), (intptr_t)&rng); + + setMouseTracking(true); + installEventFilter(this); +} + +ProfileInterface::~ProfileInterface() +{ + for (ProfileWidget *widget : widgets.keys()) + { + widget->removeEventFilter(this); + widget->disconnect(); + delete widget; + } + widgets.clear(); + + for (SavegameData *savegame : savegames) + { + delete savegame; + } + savegames.clear(); + + for (SnapmaticPicture *picture : pictures) + { + delete picture; + } + pictures.clear(); + + delete profileLoader; + delete ui; +} + +void ProfileInterface::setProfileFolder(QString folder, QString profile) +{ + profileFolder = folder; + profileName = profile; +} + +void ProfileInterface::setupProfileInterface() +{ + fixedPictures.clear(); + ui->labProfileLoading->setText(tr("Loading...")); + profileLoader = new ProfileLoader(profileFolder, crewDB); + QObject::connect(profileLoader, SIGNAL(savegameLoaded(SavegameData*, QString)), this, SLOT(savegameLoaded_event(SavegameData*, QString))); + QObject::connect(profileLoader, SIGNAL(pictureLoaded(SnapmaticPicture*)), this, SLOT(pictureLoaded_event(SnapmaticPicture*))); + QObject::connect(profileLoader, SIGNAL(pictureFixed(SnapmaticPicture*)), this, SLOT(pictureFixed_event(SnapmaticPicture*))); + QObject::connect(profileLoader, SIGNAL(loadingProgress(int,int)), this, SLOT(loadingProgress(int,int))); + QObject::connect(profileLoader, SIGNAL(finished()), this, SLOT(profileLoaded_p())); + profileLoader->start(); +} + +void ProfileInterface::savegameLoaded_event(SavegameData *savegame, QString savegamePath) +{ + savegameLoaded(savegame, savegamePath, false); +} + +void ProfileInterface::savegameLoaded(SavegameData *savegame, QString savegamePath, bool inserted) +{ + SavegameWidget *sgdWidget = new SavegameWidget(this); + sgdWidget->setSavegameData(savegame, savegamePath); + sgdWidget->setContentMode(contentMode); + sgdWidget->setMouseTracking(true); + sgdWidget->installEventFilter(this); + widgets[sgdWidget] = "SGD" % QFileInfo(savegamePath).fileName(); + savegames += savegame; + if (selectedWidgts != 0 || contentMode == 2) { sgdWidget->setSelectionMode(true); } + QObject::connect(sgdWidget, SIGNAL(savegameDeleted()), this, SLOT(savegameDeleted_event())); + QObject::connect(sgdWidget, SIGNAL(widgetSelected()), this, SLOT(profileWidgetSelected())); + QObject::connect(sgdWidget, SIGNAL(widgetDeselected()), this, SLOT(profileWidgetDeselected())); + QObject::connect(sgdWidget, SIGNAL(allWidgetsSelected()), this, SLOT(selectAllWidgets())); + QObject::connect(sgdWidget, SIGNAL(allWidgetsDeselected()), this, SLOT(deselectAllWidgets())); + QObject::connect(sgdWidget, SIGNAL(contextMenuTriggered(QContextMenuEvent*)), this, SLOT(contextMenuTriggeredSGD(QContextMenuEvent*))); + if (inserted) { insertSavegameIPI(sgdWidget); } +} + +void ProfileInterface::pictureLoaded_event(SnapmaticPicture *picture) +{ + pictureLoaded(picture, false); +} + +void ProfileInterface::pictureFixed_event(SnapmaticPicture *picture) +{ + QString fixedPicture = picture->getPictureStr() % " (" % picture->getPictureTitl() % ")"; + fixedPictures << fixedPicture; +} + +void ProfileInterface::pictureLoaded(SnapmaticPicture *picture, bool inserted) +{ + SnapmaticWidget *picWidget = new SnapmaticWidget(profileDB, crewDB, threadDB, profileName, this); + picWidget->setSnapmaticPicture(picture); + picWidget->setContentMode(contentMode); + picWidget->setMouseTracking(true); + picWidget->installEventFilter(this); + widgets[picWidget] = "PIC" % picture->getPictureSortStr(); + pictures += picture; + if (selectedWidgts != 0 || contentMode == 2) { picWidget->setSelectionMode(true); } + QObject::connect(picWidget, SIGNAL(pictureDeleted()), this, SLOT(pictureDeleted_event())); + QObject::connect(picWidget, SIGNAL(widgetSelected()), this, SLOT(profileWidgetSelected())); + QObject::connect(picWidget, SIGNAL(widgetDeselected()), this, SLOT(profileWidgetDeselected())); + QObject::connect(picWidget, SIGNAL(allWidgetsSelected()), this, SLOT(selectAllWidgets())); + QObject::connect(picWidget, SIGNAL(allWidgetsDeselected()), this, SLOT(deselectAllWidgets())); + QObject::connect(picWidget, SIGNAL(nextPictureRequested(QWidget*)), this, SLOT(dialogNextPictureRequested(QWidget*))); + QObject::connect(picWidget, SIGNAL(previousPictureRequested(QWidget*)), this, SLOT(dialogPreviousPictureRequested(QWidget*))); + QObject::connect(picWidget, SIGNAL(contextMenuTriggered(QContextMenuEvent*)), this, SLOT(contextMenuTriggeredPIC(QContextMenuEvent*))); + if (inserted) { insertSnapmaticIPI(picWidget); } +} + +void ProfileInterface::loadingProgress(int value, int maximum) +{ + ui->pbPictureLoading->setMaximum(maximum); + ui->pbPictureLoading->setValue(value); + ui->labProfileLoading->setText(loadingStr.arg(QString::number(value), QString::number(maximum))); +} + +void ProfileInterface::insertSnapmaticIPI(QWidget *widget) +{ + ProfileWidget *proWidget = qobject_cast(widget); + if (widgets.contains(proWidget)) + { + QString widgetKey = widgets[proWidget]; + QStringList widgetsKeyList = widgets.values(); + QStringList pictureKeyList = widgetsKeyList.filter("PIC", Qt::CaseSensitive); +#if QT_VERSION >= 0x050600 + qSort(pictureKeyList.rbegin(), pictureKeyList.rend()); +#else + qSort(pictureKeyList.begin(), pictureKeyList.end(), qGreater()); +#endif + int picIndex = pictureKeyList.indexOf(QRegExp(widgetKey)); + ui->vlSnapmatic->insertWidget(picIndex, proWidget); + + qApp->processEvents(); + ui->saProfile->ensureWidgetVisible(proWidget, 0, 0); + } +} + +void ProfileInterface::insertSavegameIPI(QWidget *widget) +{ + ProfileWidget *proWidget = qobject_cast(widget); + if (widgets.contains(proWidget)) + { + QString widgetKey = widgets[proWidget]; + QStringList widgetsKeyList = widgets.values(); + QStringList savegameKeyList = widgetsKeyList.filter("SGD", Qt::CaseSensitive); + qSort(savegameKeyList.begin(), savegameKeyList.end()); + int sgdIndex = savegameKeyList.indexOf(QRegExp(widgetKey)); + ui->vlSavegame->insertWidget(sgdIndex, proWidget); + + qApp->processEvents(); + ui->saProfile->ensureWidgetVisible(proWidget, 0, 0); + } +} + +void ProfileInterface::dialogNextPictureRequested(QWidget *dialog) +{ + PictureDialog *picDialog = qobject_cast(dialog); + ProfileWidget *proWidget = qobject_cast(sender()); + if (widgets.contains(proWidget)) + { + QString widgetKey = widgets[proWidget]; + QStringList widgetsKeyList = widgets.values(); + QStringList pictureKeyList = widgetsKeyList.filter("PIC", Qt::CaseSensitive); +#if QT_VERSION >= 0x050600 + qSort(pictureKeyList.rbegin(), pictureKeyList.rend()); +#else + qSort(pictureKeyList.begin(), pictureKeyList.end(), qGreater()); +#endif + int picIndex; + if (picDialog->isIndexed()) + { + picIndex = picDialog->getIndex(); + } + else + { + picIndex = pictureKeyList.indexOf(QRegExp(widgetKey)); + } + picIndex++; + if (pictureKeyList.length() > picIndex) + { + QString newWidgetKey = pictureKeyList.at(picIndex); + SnapmaticWidget *picWidget = (SnapmaticWidget*)widgets.key(newWidgetKey); + //picDialog->setMaximumHeight(QWIDGETSIZE_MAX); + picDialog->setSnapmaticPicture(picWidget->getPicture(), picIndex); + //picDialog->setMaximumHeight(picDialog->height()); + } + } +} + +void ProfileInterface::dialogPreviousPictureRequested(QWidget *dialog) +{ + PictureDialog *picDialog = qobject_cast(dialog); + ProfileWidget *proWidget = qobject_cast(sender()); + if (widgets.contains(proWidget)) + { + QString widgetKey = widgets[proWidget]; + QStringList widgetsKeyList = widgets.values(); + QStringList pictureKeyList = widgetsKeyList.filter("PIC", Qt::CaseSensitive); +#if QT_VERSION >= 0x050600 + qSort(pictureKeyList.rbegin(), pictureKeyList.rend()); +#else + qSort(pictureKeyList.begin(), pictureKeyList.end(), qGreater()); +#endif + int picIndex; + if (picDialog->isIndexed()) + { + picIndex = picDialog->getIndex(); + } + else + { + picIndex = pictureKeyList.indexOf(QRegExp(widgetKey)); + } + if (picIndex > 0) + { + picIndex--; + QString newWidgetKey = pictureKeyList.at(picIndex ); + SnapmaticWidget *picWidget = (SnapmaticWidget*)widgets.key(newWidgetKey); + //picDialog->setMaximumHeight(QWIDGETSIZE_MAX); + picDialog->setSnapmaticPicture(picWidget->getPicture(), picIndex); + //picDialog->setMaximumHeight(picDialog->height()); + } + } +} + +void ProfileInterface::sortingProfileInterface() +{ + ui->vlSavegame->setEnabled(false); + ui->vlSnapmatic->setEnabled(false); + + QStringList widgetsKeyList = widgets.values(); + qSort(widgetsKeyList.begin(), widgetsKeyList.end()); + + for (QString widgetKey : widgetsKeyList) + { + ProfileWidget *widget = widgets.key(widgetKey); + if (widget->getWidgetType() == "SnapmaticWidget") + { + ui->vlSnapmatic->insertWidget(0, widget); + } + else if (widget->getWidgetType() == "SavegameWidget") + { + ui->vlSavegame->addWidget(widget); + } + } + + ui->vlSavegame->setEnabled(true); + ui->vlSnapmatic->setEnabled(true); + + qApp->processEvents(); +} + +void ProfileInterface::profileLoaded_p() +{ + sortingProfileInterface(); + saSpacerItem = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + ui->saProfileContent->layout()->addItem(saSpacerItem); + ui->swProfile->setCurrentWidget(ui->pageProfile); + ui->cmdCloseProfile->setEnabled(true); + ui->cmdImport->setEnabled(true); + isProfileLoaded = true; + emit profileLoaded(); + + if (!fixedPictures.isEmpty()) + { + int fixedInt = 0; + QString fixedStr; + for (QString fixedPicture : fixedPictures) + { + if (fixedInt != 0) { fixedStr += "
"; } + fixedStr += fixedPicture; + fixedInt++; + } + QMessageBox::information(this, tr("Snapmatic Loader"), tr("

Following Snapmatic Pictures got repaired

%1").arg(fixedStr)); + } +} + +void ProfileInterface::savegameDeleted_event() +{ + savegameDeleted(qobject_cast(sender()), true); +} + +void ProfileInterface::savegameDeleted(SavegameWidget *sgdWidget, bool isRemoteEmited) +{ + SavegameData *savegame = sgdWidget->getSavegame(); + if (sgdWidget->isSelected()) { sgdWidget->setSelected(false); } + widgets.remove(sgdWidget); + + sgdWidget->disconnect(); + sgdWidget->removeEventFilter(this); + if (sgdWidget == previousWidget) + { + previousWidget = nullptr; + } + + // Deleting when the widget did send a event cause a crash + isRemoteEmited ? sgdWidget->deleteLater() : delete sgdWidget; + + savegames.removeAll(savegame); + delete savegame; +} + +void ProfileInterface::pictureDeleted_event() +{ + pictureDeleted(qobject_cast(sender()), true); +} + +void ProfileInterface::pictureDeleted(SnapmaticWidget *picWidget, bool isRemoteEmited) +{ + SnapmaticPicture *picture = picWidget->getPicture(); + if (picWidget->isSelected()) { picWidget->setSelected(false); } + widgets.remove(picWidget); + + picWidget->disconnect(); + picWidget->removeEventFilter(this); + if (picWidget == previousWidget) + { + previousWidget = nullptr; + } + + // Deleting when the widget did send a event cause a crash + isRemoteEmited ? picWidget->deleteLater() : delete picWidget; + + pictures.removeAll(picture); + delete picture; +} + +void ProfileInterface::on_cmdCloseProfile_clicked() +{ + emit profileClosed(); +} + +void ProfileInterface::on_cmdImport_clicked() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("FileDialogs"); + bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); + settings.beginGroup("ImportCopy"); + +fileDialogPreOpen: //Work? + QFileDialog fileDialog(this); + fileDialog.setFileMode(QFileDialog::ExistingFiles); + fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setAcceptMode(QFileDialog::AcceptOpen); + fileDialog.setOption(QFileDialog::DontUseNativeDialog, dontUseNativeDialog); + fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + fileDialog.setWindowTitle(tr("Import...")); + fileDialog.setLabelText(QFileDialog::Accept, tr("Import...")); + + // Getting readable Image formats + QString imageFormatsStr = " "; + for (QByteArray imageFormat : QImageReader::supportedImageFormats()) + { + imageFormatsStr += QString("*.") % QString::fromUtf8(imageFormat).toLower() % " "; + } + QString importableFormatsStr = QString("*.r5e SRDR* PRDR*"); + if (!imageFormatsStr.trimmed().isEmpty()) + { + importableFormatsStr = QString("*.r5e%1SRDR* PRDR*").arg(imageFormatsStr); + } + + QStringList filters; + filters << tr("Importable files (%1)").arg(importableFormatsStr); + filters << tr("RDR 2 Export (*.r5e)"); + filters << tr("Savegames files (SRDR*)"); + filters << tr("Snapmatic pictures (PRDR*)"); + filters << tr("All image files (%1)").arg(imageFormatsStr.trimmed()); + filters << tr("All files (**)"); + fileDialog.setNameFilters(filters); + + QList sidebarUrls = SidebarGenerator::generateSidebarUrls(fileDialog.sidebarUrls()); + + fileDialog.setSidebarUrls(sidebarUrls); + fileDialog.setDirectory(settings.value(profileName % "+Directory", StandardPaths::documentsLocation()).toString()); + fileDialog.restoreGeometry(settings.value(profileName % "+Geometry", "").toByteArray()); + + if (fileDialog.exec()) + { + QStringList selectedFiles = fileDialog.selectedFiles(); + if (selectedFiles.length() == 1) + { + QString selectedFile = selectedFiles.at(0); + QDateTime importDateTime = QDateTime::currentDateTime(); + if (!importFile(selectedFile, importDateTime, true)) goto fileDialogPreOpen; //Work? + } + else if (selectedFiles.length() > 1) + { + importFilesProgress(selectedFiles); + } + else + { + QMessageBox::warning(this, tr("Import..."), tr("No valid file is selected")); + goto fileDialogPreOpen; //Work? + } + } + + settings.setValue(profileName % "+Geometry", fileDialog.saveGeometry()); + settings.setValue(profileName % "+Directory", fileDialog.directory().absolutePath()); + settings.endGroup(); + settings.endGroup(); +} + +bool ProfileInterface::importFilesProgress(QStringList selectedFiles) +{ + int maximumId = selectedFiles.length(); + int overallId = 0; + QString errorStr; + QStringList failed; + + // Progress dialog + QProgressDialog pbDialog(this); + pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + pbDialog.setWindowTitle(tr("Import...")); + pbDialog.setLabelText(tr("Import file %1 of %2 files").arg(QString::number(1), QString::number(maximumId))); + pbDialog.setRange(1, maximumId); + pbDialog.setValue(1); + pbDialog.setModal(true); + QList pbBtn = pbDialog.findChildren(); + pbBtn.at(0)->setDisabled(true); + QList pbBar = pbDialog.findChildren(); + pbBar.at(0)->setTextVisible(false); + pbDialog.setAutoClose(false); + pbDialog.show(); + + // THREADING HERE PLEASE + QDateTime importDateTime = QDateTime::currentDateTime(); + for (QString selectedFile : selectedFiles) + { + overallId++; + pbDialog.setValue(overallId); + pbDialog.setLabelText(tr("Import file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + importDateTime = QDateTime::currentDateTime(); + if (!importFile(selectedFile, importDateTime, false)) + { + failed << QFileInfo(selectedFile).fileName(); + } + } + + pbDialog.close(); + for (QString curErrorStr : failed) + { + errorStr += ", " % curErrorStr; + } + if (errorStr != "") + { + errorStr.remove(0, 2); + QMessageBox::warning(this, tr("Import..."), tr("Import failed with...\n\n%1").arg(errorStr)); + return false; + } + return true; +} + +bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime, bool notMultiple) +{ + QString selectedFileName = QFileInfo(selectedFile).fileName(); + if (QFile::exists(selectedFile)) + { + if ((selectedFileName.left(4) == "PRDR" && !selectedFileName.contains('.')) || selectedFileName.right(4) == ".r5e") + { + SnapmaticPicture *picture = new SnapmaticPicture(selectedFile); + if (picture->readingPicture(true, true, true)) + { + bool success = importSnapmaticPicture(picture, notMultiple); + if (!success) delete picture; +#ifdef GTA5SYNC_TELEMETRY + if (success && notMultiple) + { + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "ImportSuccess"; + jsonObject["ImportSize"] = QString::number(picture->getContentMaxLength()); + jsonObject["ImportTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonObject["ImportType"] = "Snapmatic"; + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } + } +#endif + return success; + } + else + { + if (notMultiple) QMessageBox::warning(this, tr("Import..."), tr("Failed to read Snapmatic picture")); + delete picture; + return false; + } + } + else if (selectedFileName.left(4) == "SRDR") + { + SavegameData *savegame = new SavegameData(selectedFile); + if (savegame->readingSavegame()) + { + bool success = importSavegameData(savegame, selectedFile, notMultiple); + if (!success) delete savegame; +#ifdef GTA5SYNC_TELEMETRY + if (success && notMultiple) + { + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "ImportSuccess"; + jsonObject["ImportTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonObject["ImportType"] = "Savegame"; + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } + } +#endif + return success; + } + else + { + if (notMultiple) QMessageBox::warning(this, tr("Import..."), tr("Failed to read Savegame file")); + delete savegame; + return false; + } + } + else if (isSupportedImageFile(selectedFileName)) + { + SnapmaticPicture *picture = new SnapmaticPicture(":/template/template.r5e"); + if (picture->readingPicture(true, false, true, false)) + { + if (!notMultiple) + { + QFile snapmaticFile(selectedFile); + if (!snapmaticFile.open(QFile::ReadOnly)) + { + delete picture; + return false; + } + QImage snapmaticImage; + QImageReader snapmaticImageReader; + snapmaticImageReader.setDecideFormatFromContent(true); + snapmaticImageReader.setDevice(&snapmaticFile); + if (!snapmaticImageReader.read(&snapmaticImage)) + { + delete picture; + return false; + } + QString customImageTitle; + QPixmap snapmaticPixmap(960, 536); + snapmaticPixmap.fill(Qt::black); + QPainter snapmaticPainter(&snapmaticPixmap); + if (snapmaticImage.height() == snapmaticImage.width()) + { + // Avatar mode + int diffWidth = 0; + int diffHeight = 0; + snapmaticImage = snapmaticImage.scaled(470, 470, Qt::KeepAspectRatio, Qt::SmoothTransformation); + if (snapmaticImage.width() > snapmaticImage.height()) + { + diffHeight = 470 - snapmaticImage.height(); + diffHeight = diffHeight / 2; + } + else if (snapmaticImage.width() < snapmaticImage.height()) + { + diffWidth = 470 - snapmaticImage.width(); + diffWidth = diffWidth / 2; + } + snapmaticPainter.drawImage(145 + diffWidth, 66 + diffHeight, snapmaticImage); + customImageTitle = ImportDialog::tr("Custom Avatar", "Custom Avatar Description in SC, don't use Special Character!"); + } + else + { + // Picture mode + int diffWidth = 0; + int diffHeight = 0; + snapmaticImage = snapmaticImage.scaled(960, 536, Qt::KeepAspectRatio, Qt::SmoothTransformation); + if (snapmaticImage.width() != 960) + { + diffWidth = 960 - snapmaticImage.width(); + diffWidth = diffWidth / 2; + } + else if (snapmaticImage.height() != 536) + { + diffHeight = 536 - snapmaticImage.height(); + diffHeight = diffHeight / 2; + } + snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, snapmaticImage); + customImageTitle = ImportDialog::tr("Custom Picture", "Custom Picture Description in SC, don't use Special Character!"); + } + snapmaticPainter.end(); + if (!picture->setImage(snapmaticPixmap.toImage())) + { + delete picture; + return false; + } + SnapmaticProperties spJson = picture->getSnapmaticProperties(); + spJson.uid = getRandomUid(); + bool fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid)); + bool fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".bak"); + bool fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".hidden"); + int cEnough = 0; + while ((fExists || fExistsBackup || fExistsHidden) && cEnough < findRetryLimit) + { + spJson.uid = getRandomUid(); + fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid)); + fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".bak"); + fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".hidden"); + cEnough++; + } + spJson.createdDateTime = importDateTime; + spJson.createdTimestamp = spJson.createdDateTime.toTime_t(); + picture->setSnapmaticProperties(spJson); + picture->setPicFileName(QString("PRDR3%1").arg(QString::number(spJson.uid))); + picture->setPictureTitle(customImageTitle); + picture->updateStrings(); + bool success = importSnapmaticPicture(picture, notMultiple); + if (!success) delete picture; + return success; + } + else + { + bool success = false; + QFile snapmaticFile(selectedFile); + if (!snapmaticFile.open(QFile::ReadOnly)) + { + QMessageBox::warning(this, tr("Import..."), tr("Can't import %1 because file can't be open").arg("\""+selectedFileName+"\"")); + delete picture; + return false; + } + QImage *snapmaticImage = new QImage(); + QImageReader snapmaticImageReader; + snapmaticImageReader.setDecideFormatFromContent(true); + snapmaticImageReader.setDevice(&snapmaticFile); + if (!snapmaticImageReader.read(snapmaticImage)) + { + QMessageBox::warning(this, tr("Import..."), tr("Can't import %1 because file can't be parsed properly").arg("\""+selectedFileName+"\"")); + delete snapmaticImage; + delete picture; + return false; + } + ImportDialog *importDialog = new ImportDialog(profileName, this); + importDialog->setImage(snapmaticImage); + importDialog->setModal(true); + importDialog->show(); + importDialog->exec(); + if (importDialog->isImportAgreed()) + { + if (picture->setImage(importDialog->image())) + { + SnapmaticProperties spJson = picture->getSnapmaticProperties(); + spJson.uid = getRandomUid(); + bool fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid)); + bool fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".bak"); + bool fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".hidden"); + int cEnough = 0; + while ((fExists || fExistsBackup || fExistsHidden) && cEnough < findRetryLimit) + { + spJson.uid = getRandomUid(); + fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid)); + fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".bak"); + fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".hidden"); + cEnough++; + } + spJson.createdDateTime = importDateTime; + spJson.createdTimestamp = spJson.createdDateTime.toTime_t(); + picture->setSnapmaticProperties(spJson); + picture->setPicFileName(QString("PRDR3%1").arg(QString::number(spJson.uid))); + picture->setPictureTitle(importDialog->getImageTitle()); + picture->updateStrings(); + success = importSnapmaticPicture(picture, notMultiple); +#ifdef GTA5SYNC_TELEMETRY + if (success) + { + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "ImportSuccess"; + jsonObject["ExtraFlag"] = "Dialog"; + jsonObject["ImportSize"] = QString::number(picture->getContentMaxLength()); + jsonObject["ImportTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonObject["ImportType"] = "Image"; + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } + } +#endif + } + } + else + { + delete picture; + success = true; + } + delete importDialog; + if (!success) delete picture; + return success; + } + } + else + { + delete picture; + return false; + } + } + else + { + SnapmaticPicture *picture = new SnapmaticPicture(selectedFile); + SavegameData *savegame = new SavegameData(selectedFile); + if (picture->readingPicture()) + { + bool success = importSnapmaticPicture(picture, notMultiple); + delete savegame; + if (!success) delete picture; +#ifdef GTA5SYNC_TELEMETRY + if (success && notMultiple) + { + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "ImportSuccess"; + jsonObject["ImportSize"] = QString::number(picture->getContentMaxLength()); + jsonObject["ImportTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonObject["ImportType"] = "Snapmatic"; + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } + } +#endif + return success; + } + else if (savegame->readingSavegame()) + { + bool success = importSavegameData(savegame, selectedFile, notMultiple); + delete picture; + if (!success) delete savegame; +#ifdef GTA5SYNC_TELEMETRY + if (success && notMultiple) + { + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "ImportSuccess"; + jsonObject["ImportTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonObject["ImportType"] = "Savegame"; + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } + } +#endif + return success; + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "ImportError SnapmaticPicture" << picture->getLastStep(); + qDebug() << "ImportError SavegameData" << savegame->getLastStep(); +#endif + delete picture; + delete savegame; + if (notMultiple) QMessageBox::warning(this, tr("Import..."), tr("Can't import %1 because file format can't be detected").arg("\""+selectedFileName+"\"")); + return false; + } + } + } + if (notMultiple) QMessageBox::warning(this, tr("Import..."), tr("No valid file is selected")); + return false; +} + +bool ProfileInterface::importUrls(const QMimeData *mimeData) +{ + QStringList pathList; + + for (QUrl currentUrl : mimeData->urls()) + { + if (currentUrl.isLocalFile()) + { + pathList += currentUrl.toLocalFile(); + } + } + + if (pathList.length() == 1) + { + QString selectedFile = pathList.at(0); + return importFile(selectedFile, QDateTime::currentDateTime(), true); + } + else if (pathList.length() > 1) + { + return importFilesProgress(pathList); + } + return false; +} + +bool ProfileInterface::importRemote(QUrl remoteUrl) +{ + bool retValue = false; + QDialog urlPasteDialog(this); +#if QT_VERSION >= 0x050000 + urlPasteDialog.setObjectName(QStringLiteral("UrlPasteDialog")); +#else + urlPasteDialog.setObjectName(QString::fromUtf8("UrlPasteDialog")); +#endif + urlPasteDialog.setWindowFlags(urlPasteDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + urlPasteDialog.setWindowTitle(tr("Import...")); + urlPasteDialog.setModal(true); + QVBoxLayout urlPasteLayout(&urlPasteDialog); +#if QT_VERSION >= 0x050000 + urlPasteLayout.setObjectName(QStringLiteral("UrlPasteLayout")); +#else + urlPasteLayout.setObjectName(QString::fromUtf8("UrlPasteLayout")); +#endif + urlPasteDialog.setLayout(&urlPasteLayout); + UiModLabel urlPasteLabel(&urlPasteDialog); +#if QT_VERSION >= 0x050000 + urlPasteLabel.setObjectName(QStringLiteral("UrlPasteLabel")); +#else + urlPasteLabel.setObjectName(QString::fromUtf8("UrlPasteLabel")); +#endif + + urlPasteLabel.setText(tr("Prepare Content for Import...")); + urlPasteLayout.addWidget(&urlPasteLabel); + urlPasteDialog.setFixedSize(urlPasteDialog.sizeHint()); + urlPasteDialog.show(); + + QNetworkAccessManager *netManager = new QNetworkAccessManager(); + QNetworkRequest netRequest(remoteUrl); + netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent()); + netRequest.setRawHeader("Accept", "text/html"); + netRequest.setRawHeader("Accept-Charset", "utf-8"); + netRequest.setRawHeader("Accept-Language", "en-US,en;q=0.9"); + netRequest.setRawHeader("Connection", "keep-alive"); + QNetworkReply *netReply = netManager->get(netRequest); + QEventLoop *downloadLoop = new QEventLoop(); + QObject::connect(netReply, SIGNAL(finished()), downloadLoop, SLOT(quit())); + QTimer::singleShot(30000, downloadLoop, SLOT(quit())); + downloadLoop->exec(); + downloadLoop->disconnect(); + delete downloadLoop; + + urlPasteDialog.close(); + + if (netReply->isFinished()) + { + QImage *snapmaticImage = new QImage(); + QImageReader snapmaticImageReader; + snapmaticImageReader.setDecideFormatFromContent(true); + snapmaticImageReader.setDevice(netReply); + if (snapmaticImageReader.read(snapmaticImage)) + { + retValue = importImage(snapmaticImage, QDateTime::currentDateTime()); + } + else + { + delete snapmaticImage; + } + } + else + { + netReply->abort(); + } + delete netReply; + delete netManager; + return retValue; +} + +bool ProfileInterface::importImage(QImage *snapmaticImage, QDateTime importDateTime) +{ + SnapmaticPicture *picture = new SnapmaticPicture(":/template/template.r5e"); + if (picture->readingPicture(true, false, true, false)) + { + bool success = false; + ImportDialog *importDialog = new ImportDialog(profileName, this); + importDialog->setImage(snapmaticImage); + importDialog->setModal(true); + importDialog->show(); + importDialog->exec(); + if (importDialog->isImportAgreed()) + { + if (picture->setImage(importDialog->image())) + { + SnapmaticProperties spJson = picture->getSnapmaticProperties(); + spJson.uid = getRandomUid(); + bool fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid)); + bool fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".bak"); + bool fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".hidden"); + int cEnough = 0; + while ((fExists || fExistsBackup || fExistsHidden) && cEnough < findRetryLimit) + { + spJson.uid = getRandomUid(); + fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid)); + fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".bak"); + fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(spJson.uid) % ".hidden"); + cEnough++; + } + spJson.createdDateTime = importDateTime; + spJson.createdTimestamp = spJson.createdDateTime.toTime_t(); + picture->setSnapmaticProperties(spJson); + picture->setPicFileName(QString("PRDR3%1").arg(QString::number(spJson.uid))); + picture->setPictureTitle(importDialog->getImageTitle()); + picture->updateStrings(); + success = importSnapmaticPicture(picture, true); + } + } + else + { + delete picture; + success = true; + } + delete importDialog; + if (!success) delete picture; + return success; + } + else + { + delete picture; + return false; + } +} + +bool ProfileInterface::importSnapmaticPicture(SnapmaticPicture *picture, bool warn) +{ + QString picFileName = picture->getPictureFileName(); + QString adjustedFileName = picture->getOriginalPictureFileName(); + if (picFileName.left(4) != "PRDR") + { + if (warn) QMessageBox::warning(this, tr("Import..."), tr("Failed to import the Snapmatic picture, file not begin with PRDR or end with .r5e")); + return false; + } + else if (QFile::exists(profileFolder % "/" % adjustedFileName) || QFile::exists(profileFolder % "/" % adjustedFileName % ".hidden")) + { + SnapmaticProperties snapmaticProperties = picture->getSnapmaticProperties(); + if (warn) + { + int uchoice = QMessageBox::question(this, tr("Import..."), tr("A Snapmatic picture already exists with the uid %1, you want assign your import a new uid and timestamp?").arg(QString::number(snapmaticProperties.uid)), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + if (uchoice == QMessageBox::Yes) + { + // Update Snapmatic uid + snapmaticProperties.uid = getRandomUid(); + snapmaticProperties.createdDateTime = QDateTime::currentDateTime(); + snapmaticProperties.createdTimestamp = snapmaticProperties.createdDateTime.toTime_t(); + bool fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid)); + bool fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".bak"); + bool fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".hidden"); + int cEnough = 0; + while ((fExists || fExistsBackup || fExistsHidden) && cEnough < findRetryLimit) + { + snapmaticProperties.uid = getRandomUid(); + fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid)); + fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".bak"); + fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".hidden"); + cEnough++; + } + if (fExists || fExistsBackup || fExistsHidden) + { + // That should never happen + return false; + } + if (!picture->setSnapmaticProperties(snapmaticProperties)) + { + // That should never happen + return false; + } + picture->updateStrings(); + picFileName = picture->getPictureFileName(); + adjustedFileName = picture->getOriginalPictureFileName(); + } + else + { + return false; + } + } + else + { + // Update Snapmatic uid + snapmaticProperties.uid = getRandomUid(); + snapmaticProperties.createdDateTime = QDateTime::currentDateTime(); + snapmaticProperties.createdTimestamp = snapmaticProperties.createdDateTime.toTime_t(); + bool fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid)); + bool fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".bak"); + bool fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".hidden"); + int cEnough = 0; + while ((fExists || fExistsBackup || fExistsHidden) && cEnough < findRetryLimit) + { + snapmaticProperties.uid = getRandomUid(); + fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid)); + fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".bak"); + fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".hidden"); + cEnough++; + } + if (fExists || fExistsBackup || fExistsHidden) + { + // That should never happen + return false; + } + if (!picture->setSnapmaticProperties(snapmaticProperties)) + { + // That should never happen + return false; + } + picture->updateStrings(); + picFileName = picture->getPictureFileName(); + adjustedFileName = picture->getOriginalPictureFileName(); + } + } + if (picture->exportPicture(profileFolder % "/" % adjustedFileName, SnapmaticFormat::PGTA_Format)) + { + picture->setSnapmaticFormat(SnapmaticFormat::PGTA_Format); + picture->setPicFilePath(profileFolder % "/" % adjustedFileName); + pictureLoaded(picture, true); + return true; + } + else + { + if (warn) QMessageBox::warning(this, tr("Import..."), tr("Failed to import the Snapmatic picture, can't copy the file into profile")); + return false; + } +} + +bool ProfileInterface::importSavegameData(SavegameData *savegame, QString sgdPath, bool warn) +{ + QString sgdFileName; + bool foundFree = 0; + int currentSgd = 0; + + while (currentSgd < 15 && !foundFree) + { + QString sgdNumber = QString::number(currentSgd); + if (sgdNumber.length() == 1) + { + sgdNumber.insert(0, "0"); + } + sgdFileName = "SRDR300" % sgdNumber; + + if (!QFile::exists(profileFolder % "/" % sgdFileName)) + { + foundFree = true; + } + currentSgd++; + } + + if (foundFree) + { + if (QFile::copy(sgdPath, profileFolder % "/" % sgdFileName)) + { + savegame->setSavegameFileName(profileFolder % "/" % sgdFileName); + savegameLoaded(savegame, profileFolder % "/" % sgdFileName, true); + return true; + } + else + { + if (warn) QMessageBox::warning(this, tr("Import..."), tr("Failed to import the Savegame, can't copy the file into profile")); + return false; + } + } + else + { + if (warn) QMessageBox::warning(this, tr("Import..."), tr("Failed to import the Savegame, no Savegame slot is left")); + return false; + } +} + +void ProfileInterface::profileWidgetSelected() +{ + if (selectedWidgts == 0) + { + for (ProfileWidget *widget : widgets.keys()) + { + widget->setSelectionMode(true); + } + } + selectedWidgts++; +} + +void ProfileInterface::profileWidgetDeselected() +{ + if (selectedWidgts == 1) + { + int scrollBarValue = ui->saProfile->verticalScrollBar()->value(); + for (ProfileWidget *widget : widgets.keys()) + { + if (contentMode != 2) + { + widget->setSelectionMode(false); + } + } + ui->saProfile->verticalScrollBar()->setValue(scrollBarValue); + } + selectedWidgts--; +} + +void ProfileInterface::selectAllWidgets() +{ + for (ProfileWidget *widget : widgets.keys()) + { + widget->setSelected(true); + } +} + +void ProfileInterface::deselectAllWidgets() +{ + for (ProfileWidget *widget : widgets.keys()) + { + widget->setSelected(false); + } +} + +void ProfileInterface::exportSelected() +{ + if (selectedWidgts != 0) + { + int exportCount = 0; + int exportPictures = 0; + int exportSavegames = 0; + bool pictureCopyEnabled = false; + bool pictureExportEnabled = false; + + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("FileDialogs"); + //bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); + settings.beginGroup("ExportDirectory"); + QString exportDirectory = QFileDialog::getExistingDirectory(this, tr("Export selected..."), settings.value(profileName, profileFolder).toString()); + if (exportDirectory != "") + { + settings.setValue(profileName, exportDirectory); + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + exportPictures++; + } + else if (widget->getWidgetType() == "SavegameWidget") + { + exportSavegames++; + } + } + } + + if (exportPictures != 0) + { + QInputDialog inputDialog; + QStringList inputDialogItems; + inputDialogItems << tr("JPG pictures and GTA Snapmatic"); + inputDialogItems << tr("JPG pictures only"); + inputDialogItems << tr("GTA Snapmatic only"); + + QString ExportPreSpan; + QString ExportPostSpan; +#ifdef GTA5SYNC_WIN + ExportPreSpan = ""; + ExportPostSpan = ""; +#else + ExportPreSpan = ""; + ExportPostSpan = ""; +#endif + + bool itemSelected = false; + QString selectedItem = inputDialog.getItem(this, tr("Export selected..."), tr("%1Export Snapmatic pictures%2

JPG pictures make it possible to open the picture with a Image Viewer
GTA Snapmatic make it possible to import the picture into the game

Export as:").arg(ExportPreSpan, ExportPostSpan), inputDialogItems, 0, false, &itemSelected, inputDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + if (itemSelected) + { + if (selectedItem == tr("JPG pictures and GTA Snapmatic")) + { + pictureExportEnabled = true; + pictureCopyEnabled = true; + } + else if (selectedItem == tr("JPG pictures only")) + { + pictureExportEnabled = true; + } + else if (selectedItem == tr("GTA Snapmatic only")) + { + pictureCopyEnabled = true; + } + else + { + pictureExportEnabled = true; + pictureCopyEnabled = true; + } + } + else + { + // Don't export anymore when any Cancel button got clicked + settings.endGroup(); + settings.endGroup(); + return; + } + } + + // Counting the exports together + exportCount = exportCount + exportSavegames; + if (pictureExportEnabled && pictureCopyEnabled) + { + int exportPictures2 = exportPictures * 2; + exportCount = exportCount + exportPictures2; + } + else + { + exportCount = exportCount + exportPictures; + } + + QProgressDialog pbDialog(this); + pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + pbDialog.setWindowTitle(tr("Export selected...")); + pbDialog.setLabelText(tr("Initialising export...")); + pbDialog.setRange(0, exportCount); + + QList pbBtn = pbDialog.findChildren(); + pbBtn.at(0)->setDisabled(true); + + QList pbBar = pbDialog.findChildren(); + pbBar.at(0)->setTextVisible(false); + + ExportThread *exportThread = new ExportThread(widgets, exportDirectory, pictureCopyEnabled, pictureExportEnabled, exportCount); + QObject::connect(exportThread, SIGNAL(exportStringUpdate(QString)), &pbDialog, SLOT(setLabelText(QString))); + QObject::connect(exportThread, SIGNAL(exportProgressUpdate(int)), &pbDialog, SLOT(setValue(int))); + QObject::connect(exportThread, SIGNAL(exportFinished()), &pbDialog, SLOT(close())); + exportThread->start(); + + pbDialog.setAutoClose(false); + pbDialog.exec(); + QStringList getFailedSavegames = exportThread->getFailedSavegames(); + QStringList getFailedCopyPictures = exportThread->getFailedCopyPictures(); + QStringList getFailedExportPictures = exportThread->getFailedExportPictures(); + + QString errorStr; + QStringList errorList; + errorList << getFailedExportPictures; + errorList << getFailedCopyPictures; + errorList << getFailedSavegames; + + for (QString curErrorStr : errorList) + { + errorStr += ", " % curErrorStr; + } + if (errorStr != "") + { + errorStr.remove(0, 2); + QMessageBox::warning(this, tr("Export selected..."), tr("Export failed with...\n\n%1").arg(errorStr)); + } + + if (exportThread->isFinished()) + { + delete exportThread; + } + else + { + QEventLoop threadFinishLoop; + QObject::connect(exportThread, SIGNAL(finished()), &threadFinishLoop, SLOT(quit())); + threadFinishLoop.exec(); + delete exportThread; + } + } + settings.endGroup(); + settings.endGroup(); + } + else + { + QMessageBox::information(this, tr("Export selected..."), tr("No Snapmatic pictures or Savegames files are selected")); + } +} + +void ProfileInterface::deleteSelected() +{ + if (selectedWidgts != 0) + { + if (QMessageBox::Yes == QMessageBox::warning(this, tr("Remove selected"), tr("You really want remove the selected Snapmatic picutres and Savegame files?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No)) + { + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *picWidget = qobject_cast(widget); + if (picWidget->getPicture()->deletePictureFile()) + { + pictureDeleted(picWidget); + } + } + else if (widget->getWidgetType() == "SavegameWidget") + { + SavegameWidget *sgdWidget = qobject_cast(widget); + SavegameData *savegame = sgdWidget->getSavegame(); + QString fileName = savegame->getSavegameFileName(); + if (!QFile::exists(fileName) || QFile::remove(fileName)) + { + savegameDeleted(sgdWidget); + } + } + } + } + if (selectedWidgts != 0) + { + QMessageBox::warning(this, tr("Remove selected"), tr("Failed to remove all selected Snapmatic pictures and/or Savegame files")); + } + } + } + else + { + QMessageBox::information(this, tr("Remove selected"), tr("No Snapmatic pictures or Savegames files are selected")); + } +} + +void ProfileInterface::importFiles() +{ + on_cmdImport_clicked(); +} + +void ProfileInterface::settingsApplied(int _contentMode, bool languageChanged) +{ + if (languageChanged) retranslateUi(); + contentMode = _contentMode; + if (contentMode == 2) + { + for (ProfileWidget *widget : widgets.keys()) + { + widget->setSelectionMode(true); + widget->setContentMode(contentMode); + if (languageChanged) widget->retranslate(); + } + } + else + { + for (ProfileWidget *widget : widgets.keys()) + { + if (selectedWidgts == 0) + { + widget->setSelectionMode(false); + } + widget->setContentMode(contentMode); + if (languageChanged) widget->retranslate(); + } + } +#ifdef Q_OS_MAC + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + if (QApplication::style()->objectName() == "macintosh") + { + ui->hlButtons->setSpacing(6 * screenRatio); + ui->hlButtons->setContentsMargins(9 * screenRatio, 15 * screenRatio, 15 * screenRatio, 17 * screenRatio); + } + else + { + ui->hlButtons->setSpacing(6 * screenRatio); + ui->hlButtons->setContentsMargins(9 * screenRatio, 9 * screenRatio, 9 * screenRatio, 9 * screenRatio); + } +#endif +} + +void ProfileInterface::enableSelected() +{ + QList snapmaticWidgets; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *snapmaticWidget = qobject_cast(widget); + snapmaticWidgets += snapmaticWidget; + } + } + } + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::information(this, QApplication::translate("UserInterface", "Show In-game"), QApplication::translate("ProfileInterface", "No Snapmatic pictures are selected")); + return; + } + QStringList fails; + for (SnapmaticWidget *widget : snapmaticWidgets) + { + SnapmaticPicture *picture = widget->getPicture(); + if (!widget->makePictureVisible()) + { + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + } + if (!fails.isEmpty()) + { + QMessageBox::warning(this, QApplication::translate("UserInterface", "Show In-game"), QApplication::translate("ProfileInterface", "%1 failed with...\n\n%2", "Action failed with...").arg(QApplication::translate("UserInterface", "Show In-game"), fails.join(", "))); + } +} + +void ProfileInterface::disableSelected() +{ + QList snapmaticWidgets; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *snapmaticWidget = qobject_cast(widget); + snapmaticWidgets += snapmaticWidget; + } + } + } + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::information(this, QApplication::translate("UserInterface", "Hide In-game"), QApplication::translate("ProfileInterface", "No Snapmatic pictures are selected")); + return; + } + QStringList fails; + for (SnapmaticWidget *widget : snapmaticWidgets) + { + SnapmaticPicture *picture = widget->getPicture(); + if (!widget->makePictureHidden()) + { + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + } + if (!fails.isEmpty()) + { + QMessageBox::warning(this, QApplication::translate("UserInterface", "Hide In-game"), QApplication::translate("ProfileInterface", "%1 failed with...\n\n%2", "Action failed with...").arg(QApplication::translate("UserInterface", "Hide In-game"), fails.join(", "))); + } +} + +int ProfileInterface::selectedWidgets() +{ + return selectedWidgts; +} + +void ProfileInterface::contextMenuTriggeredPIC(QContextMenuEvent *ev) +{ + SnapmaticWidget *picWidget = qobject_cast(sender()); + if (picWidget != previousWidget) + { + if (previousWidget != nullptr) + { + previousWidget->setStyleSheet(QLatin1String("")); + } + picWidget->setStyleSheet(QString("QFrame#SnapmaticFrame{background-color:palette(highlight)}QLabel#labPicStr{color:palette(highlighted-text)}")); + previousWidget = picWidget; + } + QMenu contextMenu(picWidget); + QMenu editMenu(SnapmaticWidget::tr("Edi&t"), picWidget); + if (picWidget->isHidden()) + { + editMenu.addAction(SnapmaticWidget::tr("Show &In-game"), picWidget, SLOT(makePictureVisibleSlot())); + } + else + { + editMenu.addAction(SnapmaticWidget::tr("Hide &In-game"), picWidget, SLOT(makePictureHiddenSlot())); + } + editMenu.addAction(PictureDialog::tr("&Edit Properties..."), picWidget, SLOT(editSnapmaticProperties())); + editMenu.addAction(PictureDialog::tr("&Overwrite Image..."), picWidget, SLOT(editSnapmaticImage())); + editMenu.addSeparator(); + QAction *mapViewer = editMenu.addAction(PictureDialog::tr("Open &Map Viewer..."), picWidget, SLOT(openMapViewer())); + mapViewer->setEnabled(false); + editMenu.addAction(PictureDialog::tr("Open &JSON Editor..."), picWidget, SLOT(editSnapmaticRawJson())); + QMenu exportMenu(SnapmaticWidget::tr("&Export"), this); + exportMenu.addAction(PictureDialog::tr("Export as &Picture..."), picWidget, SLOT(on_cmdExport_clicked())); + exportMenu.addAction(PictureDialog::tr("Export as &Snapmatic..."), picWidget, SLOT(on_cmdCopy_clicked())); + contextMenu.addAction(SnapmaticWidget::tr("&View"), picWidget, SLOT(on_cmdView_clicked())); + contextMenu.addMenu(&editMenu); + contextMenu.addMenu(&exportMenu); + contextMenu.addAction(SnapmaticWidget::tr("&Remove"), picWidget, SLOT(on_cmdDelete_clicked())); + contextMenu.addSeparator(); + if (!picWidget->isSelected()) { contextMenu.addAction(SnapmaticWidget::tr("&Select"), picWidget, SLOT(pictureSelected())); } + if (picWidget->isSelected()) { contextMenu.addAction(SnapmaticWidget::tr("&Deselect"), picWidget, SLOT(pictureSelected())); } + if (selectedWidgets() != widgets.count()) + { + contextMenu.addAction(SnapmaticWidget::tr("Select &All"), picWidget, SLOT(selectAllWidgets()), QKeySequence::fromString("Ctrl+A")); + } + if (selectedWidgets() != 0) + { + contextMenu.addAction(SnapmaticWidget::tr("&Deselect All"), picWidget, SLOT(deselectAllWidgets()), QKeySequence::fromString("Ctrl+D")); + } + contextMenuOpened = true; + contextMenu.exec(ev->globalPos()); + contextMenuOpened = false; + hoverProfileWidgetCheck(); +} + +void ProfileInterface::contextMenuTriggeredSGD(QContextMenuEvent *ev) +{ + SavegameWidget *sgdWidget = qobject_cast(sender()); + if (sgdWidget != previousWidget) + { + if (previousWidget != nullptr) + { + previousWidget->setStyleSheet(QLatin1String("")); + } + sgdWidget->setStyleSheet(QString("QFrame#SavegameFrame{background-color:palette(highlight)}QLabel#labSavegameStr{color:palette(highlighted-text)}")); + previousWidget = sgdWidget; + } + QMenu contextMenu(sgdWidget); + contextMenu.addAction(SavegameWidget::tr("&View"), sgdWidget, SLOT(on_cmdView_clicked())); + contextMenu.addAction(SavegameWidget::tr("&Export"), sgdWidget, SLOT(on_cmdCopy_clicked())); + contextMenu.addAction(SavegameWidget::tr("&Remove"), sgdWidget, SLOT(on_cmdDelete_clicked())); + contextMenu.addSeparator(); + if (!sgdWidget->isSelected()) { contextMenu.addAction(SavegameWidget::tr("&Select"), sgdWidget, SLOT(savegameSelected())); } + if (sgdWidget->isSelected()) { contextMenu.addAction(SavegameWidget::tr("&Deselect"), sgdWidget, SLOT(savegameSelected())); } + if (selectedWidgets() != widgets.count()) + { + contextMenu.addAction(SavegameWidget::tr("Select &All"), sgdWidget, SLOT(selectAllWidgets()), QKeySequence::fromString("Ctrl+A")); + } + if (selectedWidgets() != 0) + { + contextMenu.addAction(SavegameWidget::tr("&Deselect All"), sgdWidget, SLOT(deselectAllWidgets()), QKeySequence::fromString("Ctrl+D")); + } + contextMenuOpened = true; + contextMenu.exec(ev->globalPos()); + contextMenuOpened = false; + hoverProfileWidgetCheck(); +} + +void ProfileInterface::on_saProfileContent_dropped(const QMimeData *mimeData) +{ + if (!mimeData) return; + if (mimeData->hasImage()) + { + QImage *snapmaticImage = new QImage(qvariant_cast(mimeData->imageData())); + importImage(snapmaticImage, QDateTime::currentDateTime()); + } + else if (mimeData->hasUrls()) + { + importUrls(mimeData); + } +} + +void ProfileInterface::retranslateUi() +{ + ui->retranslateUi(this); + QString appVersion = GTA5SYNC_APPVER; +#ifndef GTA5SYNC_BUILDTYPE_REL +#ifdef GTA5SYNC_COMMIT + if (!appVersion.contains("-")) { appVersion = appVersion % "-" % GTA5SYNC_COMMIT; } +#endif +#endif + ui->labVersion->setText(QString("%1 %2").arg(GTA5SYNC_APPSTR, appVersion)); +} + +bool ProfileInterface::eventFilter(QObject *watched, QEvent *event) +{ + if (event->type() == QEvent::KeyPress) + { + if (isProfileLoaded) + { + QKeyEvent *keyEvent = dynamic_cast(event); + switch (keyEvent->key()) + { + case Qt::Key_V: + if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) && !QApplication::keyboardModifiers().testFlag(Qt::ShiftModifier)) + { + const QMimeData *clipboardData = QApplication::clipboard()->mimeData(); + if (clipboardData->hasImage()) + { + QImage *snapmaticImage = new QImage(qvariant_cast(clipboardData->imageData())); + importImage(snapmaticImage, QDateTime::currentDateTime()); + } + else if (clipboardData->hasUrls()) + { + if (clipboardData->urls().length() >= 2) + { + importUrls(clipboardData); + } + else if (clipboardData->urls().length() == 1) + { + QUrl clipboardUrl = clipboardData->urls().at(0); + if (clipboardUrl.isLocalFile()) + { + importFile(clipboardUrl.toLocalFile(), QDateTime::currentDateTime(), true); + } + else + { + importRemote(clipboardUrl); + } + } + } + else if (clipboardData->hasText()) + { + QUrl clipboardUrl = QUrl::fromUserInput(clipboardData->text()); + if (clipboardUrl.isValid()) + { + if (clipboardUrl.isLocalFile()) + { + importFile(clipboardUrl.toLocalFile(), QDateTime::currentDateTime(), true); + } + else + { + importRemote(clipboardUrl); + } + } + } + } + } + } + } + else if (event->type() == QEvent::MouseMove) + { + if ((watched->objectName() == "SavegameWidget" || watched->objectName() == "SnapmaticWidget") && isProfileLoaded) + { + ProfileWidget *pWidget = qobject_cast(watched); + if (pWidget->underMouse()) + { + bool styleSheetChanged = false; + if (pWidget->getWidgetType() == "SnapmaticWidget") + { + if (pWidget != previousWidget) + { + pWidget->setStyleSheet(QString("QFrame#SnapmaticFrame{background-color:palette(highlight)}QLabel#labPicStr{color:palette(highlighted-text)}")); + styleSheetChanged = true; + } + } + else if (pWidget->getWidgetType() == "SavegameWidget") + { + if (pWidget != previousWidget) + { + pWidget->setStyleSheet(QString("QFrame#SavegameFrame{background-color:palette(highlight)}QLabel#labSavegameStr{color:palette(highlighted-text)}")); + styleSheetChanged = true; + } + } + if (styleSheetChanged) + { + if (previousWidget != nullptr) + { + previousWidget->setStyleSheet(QLatin1String("")); + } + previousWidget = pWidget; + } + } + return true; + } + } + else if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease || event->type() == QEvent::WindowActivate) + { + if ((watched->objectName() == "SavegameWidget" || watched->objectName() == "SnapmaticWidget") && isProfileLoaded) + { + ProfileWidget *pWidget = nullptr; + for (ProfileWidget *widget : widgets.keys()) + { + QPoint mousePos = widget->mapFromGlobal(QCursor::pos()); + if (widget->rect().contains(mousePos)) + { + pWidget = widget; + break; + } + } + if (pWidget != nullptr) + { + bool styleSheetChanged = false; + if (pWidget->getWidgetType() == "SnapmaticWidget") + { + if (pWidget != previousWidget) + { + pWidget->setStyleSheet(QString("QFrame#SnapmaticFrame{background-color:palette(highlight)}QLabel#labPicStr{color:palette(highlighted-text)}")); + styleSheetChanged = true; + } + } + else if (pWidget->getWidgetType() == "SavegameWidget") + { + if (pWidget != previousWidget) + { + pWidget->setStyleSheet(QString("QFrame#SavegameFrame{background-color:palette(highlight)}QLabel#labSavegameStr{color:palette(highlighted-text)}")); + styleSheetChanged = true; + } + } + if (styleSheetChanged) + { + if (previousWidget != nullptr) + { + previousWidget->setStyleSheet(QLatin1String("")); + } + previousWidget = pWidget; + } + } + } + } + else if (event->type() == QEvent::WindowDeactivate && isProfileLoaded) + { + if (previousWidget != nullptr) + { + previousWidget->setStyleSheet(QLatin1String("")); + previousWidget = nullptr; + } + } + else if (event->type() == QEvent::Leave && isProfileLoaded && !contextMenuOpened) + { + if (watched->objectName() == "SavegameWidget" || watched->objectName() == "SnapmaticWidget") + { + ProfileWidget *pWidget = qobject_cast(watched); + QPoint mousePos = pWidget->mapFromGlobal(QCursor::pos()); + if (!pWidget->geometry().contains(mousePos)) + { + if (previousWidget != nullptr) + { + previousWidget->setStyleSheet(QLatin1String("")); + previousWidget = nullptr; + } + } + } + else if (watched->objectName() == "ProfileInterface") + { + if (previousWidget != nullptr) + { + previousWidget->setStyleSheet(QLatin1String("")); + previousWidget = nullptr; + } + } + } + return false; +} + +void ProfileInterface::hoverProfileWidgetCheck() +{ + ProfileWidget *pWidget = nullptr; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->underMouse()) + { + pWidget = widget; + break; + } + } + if (pWidget != nullptr) + { + bool styleSheetChanged = false; + if (pWidget->getWidgetType() == "SnapmaticWidget") + { + if (pWidget != previousWidget) + { + pWidget->setStyleSheet(QString("QFrame#SnapmaticFrame{background-color:palette(highlight)}QLabel#labPicStr{color:palette(highlighted-text)}")); + styleSheetChanged = true; + } + } + else if (pWidget->getWidgetType() == "SavegameWidget") + { + if (pWidget != previousWidget) + { + pWidget->setStyleSheet(QString("QFrame#SavegameFrame{background-color:palette(highlight)}QLabel#labSavegameStr{color:palette(highlighted-text)}")); + styleSheetChanged = true; + } + } + if (styleSheetChanged) + { + if (previousWidget != nullptr) + { + previousWidget->setStyleSheet(QLatin1String("")); + } + previousWidget = pWidget; + } + } + else + { + if (previousWidget != nullptr) + { + previousWidget->setStyleSheet(QLatin1String("")); + previousWidget = nullptr; + } + } +} + +void ProfileInterface::updatePalette() +{ + ui->saProfile->setStyleSheet(QString("QWidget#saProfileContent{background-color:palette(base)}")); + if (previousWidget != nullptr) + { + if (previousWidget->getWidgetType() == "SnapmaticWidget") + { + previousWidget->setStyleSheet(QString("QFrame#SnapmaticFrame{background-color:palette(highlight)}QLabel#labPicStr{color:palette(highlighted-text)}")); + } + else if (previousWidget->getWidgetType() == "SavegameWidget") + { + previousWidget->setStyleSheet(QString("QFrame#SnapmaticFrame{background-color:palette(highlight)}QLabel#labPicStr{color:palette(highlighted-text)}")); + } + } +} + +bool ProfileInterface::isSupportedImageFile(QString selectedFileName) +{ + for (QByteArray imageFormat : QImageReader::supportedImageFormats()) + { + QString imageFormatStr = QString(".") % QString::fromUtf8(imageFormat).toLower(); + if (selectedFileName.length() >= imageFormatStr.length() && selectedFileName.toLower().right(imageFormatStr.length()) == imageFormatStr) + { + return true; + } + } + return false; +} + +void ProfileInterface::massTool(MassTool tool) +{ + switch(tool) + { + case MassTool::Qualify: + { + QList snapmaticWidgets; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *snapmaticWidget = qobject_cast(widget); + snapmaticWidgets += snapmaticWidget; + } + } + } + + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::information(this, tr("Qualify as Avatar"), tr("No Snapmatic pictures are selected")); + return; + } + + // Prepare Progress + + int maximumId = snapmaticWidgets.length(); + int overallId = 0; + + QProgressDialog pbDialog(this); + pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + pbDialog.setWindowTitle(tr("Patch selected...")); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(1), QString::number(maximumId))); + pbDialog.setRange(1, maximumId); + pbDialog.setValue(1); + pbDialog.setModal(true); + QList pbBtn = pbDialog.findChildren(); + pbBtn.at(0)->setDisabled(true); + QList pbBar = pbDialog.findChildren(); + pbBar.at(0)->setTextVisible(false); + pbDialog.setAutoClose(false); + pbDialog.show(); + + // Begin Progress + + QStringList fails; + for (SnapmaticWidget *snapmaticWidget : snapmaticWidgets) + { + // Update Progress + overallId++; + pbDialog.setValue(overallId); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + + SnapmaticPicture *picture = snapmaticWidget->getPicture(); + + SnapmaticProperties snapmaticProperties = picture->getSnapmaticProperties(); + snapmaticProperties.isSelfie = true; + snapmaticProperties.isMug = false; + snapmaticProperties.isFromRSEditor = false; + snapmaticProperties.isFromDirector = false; + snapmaticProperties.isMeme = false; + + QString currentFilePath = picture->getPictureFilePath(); + QString originalFilePath = picture->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + SnapmaticProperties fallbackProperties = picture->getSnapmaticProperties(); + picture->setSnapmaticProperties(snapmaticProperties); + if (!picture->exportPicture(currentFilePath)) + { + picture->setSnapmaticProperties(fallbackProperties); + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + else + { + picture->emitUpdate(); + qApp->processEvents(); + } + } + pbDialog.close(); + if (!fails.isEmpty()) + { + QMessageBox::warning(this, tr("Qualify as Avatar"), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Qualify", "%1 failed with..."), fails.join(", "))); + } + } + break; + case MassTool::Players: + { + QList snapmaticWidgets; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *snapmaticWidget = qobject_cast(widget); + snapmaticWidgets += snapmaticWidget; + } + } + } + + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::information(this, tr("Change Players..."), tr("No Snapmatic pictures are selected")); + return; + } + + QStringList players; + if (snapmaticWidgets.length() == 1) + { + players = snapmaticWidgets.at(0)->getPicture()->getSnapmaticProperties().playersList; + } + + PlayerListDialog *playerListDialog = new PlayerListDialog(players, profileDB, this); + playerListDialog->setModal(true); + playerListDialog->show(); + playerListDialog->exec(); + if (!playerListDialog->isListUpdated()) + { + return; + } + players = playerListDialog->getPlayerList(); + delete playerListDialog; + + // Prepare Progress + + int maximumId = snapmaticWidgets.length(); + int overallId = 0; + + QProgressDialog pbDialog(this); + pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + pbDialog.setWindowTitle(tr("Patch selected...")); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(1), QString::number(maximumId))); + pbDialog.setRange(1, maximumId); + pbDialog.setValue(1); + pbDialog.setModal(true); + QList pbBtn = pbDialog.findChildren(); + pbBtn.at(0)->setDisabled(true); + QList pbBar = pbDialog.findChildren(); + pbBar.at(0)->setTextVisible(false); + pbDialog.setAutoClose(false); + pbDialog.show(); + + // Begin Progress + + QStringList fails; + for (SnapmaticWidget *snapmaticWidget : snapmaticWidgets) + { + // Update Progress + overallId++; + pbDialog.setValue(overallId); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + + SnapmaticPicture *picture = snapmaticWidget->getPicture(); + + SnapmaticProperties snapmaticProperties = picture->getSnapmaticProperties(); + snapmaticProperties.playersList = players; + + QString currentFilePath = picture->getPictureFilePath(); + QString originalFilePath = picture->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + SnapmaticProperties fallbackProperties = picture->getSnapmaticProperties(); + picture->setSnapmaticProperties(snapmaticProperties); + if (!picture->exportPicture(currentFilePath)) + { + picture->setSnapmaticProperties(fallbackProperties); + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + else + { + picture->emitUpdate(); + qApp->processEvents(); + } + } + pbDialog.close(); + if (!fails.isEmpty()) + { + QMessageBox::warning(this, tr("Change Players..."), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Players", "%1 failed with..."), fails.join(", "))); + } + } + break; + case MassTool::Crew: + { + QList snapmaticWidgets; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *snapmaticWidget = qobject_cast(widget); + snapmaticWidgets += snapmaticWidget; + } + } + } + + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::information(this, tr("Change Crew..."), tr("No Snapmatic pictures are selected")); + return; + } + + int crewID = 0; + if (snapmaticWidgets.length() == 1) + { + crewID = snapmaticWidgets.at(0)->getPicture()->getSnapmaticProperties().crewID; + } + { +preSelectionCrewID: + bool ok; + int indexNum = 0; + QStringList itemList; + QStringList crewList = crewDB->getCrews(); + if (!crewList.contains(QLatin1String("0"))) + { + crewList += QLatin1String("0"); + } + crewList.sort(); + for (QString crew : crewList) + { + itemList += QString("%1 (%2)").arg(crew, crewDB->getCrewName(crew.toInt())); + } + if (crewList.contains(QString::number(crewID))) + { + indexNum = crewList.indexOf(QRegExp(QString::number(crewID))); + } + QString newCrew = QInputDialog::getItem(this, QApplication::translate("SnapmaticEditor", "Snapmatic Crew"), QApplication::translate("SnapmaticEditor", "New Snapmatic crew:"), itemList, indexNum, true, &ok, windowFlags()^Qt::Dialog^Qt::WindowMinMaxButtonsHint); + if (ok && !newCrew.isEmpty()) + { + if (newCrew.contains(" ")) newCrew = newCrew.split(" ").at(0); + if (newCrew.length() > 10) return; + for (QChar crewChar : newCrew) + { + if (!crewChar.isNumber()) + { + QMessageBox::warning(this, tr("Change Crew..."), tr("Failed to enter a valid Snapmatic Crew ID")); + goto preSelectionCrewID; + } + } + if (!crewList.contains(newCrew)) + { + crewDB->addCrew(crewID); + } + crewID = newCrew.toInt(); + } + else + { + return; + } + } + + // Prepare Progress + + int maximumId = snapmaticWidgets.length(); + int overallId = 0; + + QProgressDialog pbDialog(this); + pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + pbDialog.setWindowTitle(tr("Patch selected...")); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(1), QString::number(maximumId))); + pbDialog.setRange(1, maximumId); + pbDialog.setValue(1); + pbDialog.setModal(true); + QList pbBtn = pbDialog.findChildren(); + pbBtn.at(0)->setDisabled(true); + QList pbBar = pbDialog.findChildren(); + pbBar.at(0)->setTextVisible(false); + pbDialog.setAutoClose(false); + pbDialog.show(); + + // Begin Progress + + QStringList fails; + for (SnapmaticWidget *snapmaticWidget : snapmaticWidgets) + { + // Update Progress + overallId++; + pbDialog.setValue(overallId); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + + SnapmaticPicture *picture = snapmaticWidget->getPicture(); + + SnapmaticProperties snapmaticProperties = picture->getSnapmaticProperties(); + snapmaticProperties.crewID = crewID; + + QString currentFilePath = picture->getPictureFilePath(); + QString originalFilePath = picture->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + SnapmaticProperties fallbackProperties = picture->getSnapmaticProperties(); + picture->setSnapmaticProperties(snapmaticProperties); + if (!picture->exportPicture(currentFilePath)) + { + picture->setSnapmaticProperties(fallbackProperties); + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + else + { + picture->emitUpdate(); + qApp->processEvents(); + } + } + pbDialog.close(); + if (!fails.isEmpty()) + { + QMessageBox::warning(this, tr("Change Crew..."), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Crew", "%1 failed with..."), fails.join(", "))); + } + } + break; + case MassTool::Title: + { + QList snapmaticWidgets; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *snapmaticWidget = qobject_cast(widget); + snapmaticWidgets += snapmaticWidget; + } + } + } + + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::information(this, tr("Change Title..."), tr("No Snapmatic pictures are selected")); + return; + } + + QString snapmaticTitle; + if (snapmaticWidgets.length() == 1) + { + snapmaticTitle = snapmaticWidgets.at(0)->getPicture()->getPictureTitle(); + } + { +preSelectionTitle: + bool ok; + QString newTitle = QInputDialog::getText(this, QApplication::translate("SnapmaticEditor", "Snapmatic Title"), QApplication::translate("SnapmaticEditor", "New Snapmatic title:"), QLineEdit::Normal, snapmaticTitle, &ok, windowFlags()^Qt::Dialog^Qt::WindowMinMaxButtonsHint); + if (ok && !newTitle.isEmpty()) + { + if (!SnapmaticPicture::verifyTitle(newTitle)) + { + QMessageBox::warning(this, tr("Change Title..."), tr("Failed to enter a valid Snapmatic title")); + goto preSelectionTitle; + } + snapmaticTitle = newTitle; + } + else + { + return; + } + } + + // Prepare Progress + + int maximumId = snapmaticWidgets.length(); + int overallId = 0; + + QProgressDialog pbDialog(this); + pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + pbDialog.setWindowTitle(tr("Patch selected...")); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + pbDialog.setRange(1, maximumId); + pbDialog.setValue(1); + pbDialog.setModal(true); + QList pbBtn = pbDialog.findChildren(); + pbBtn.at(0)->setDisabled(true); + QList pbBar = pbDialog.findChildren(); + pbBar.at(0)->setTextVisible(false); + pbDialog.setAutoClose(false); + pbDialog.show(); + + // Begin Progress + + QStringList fails; + for (SnapmaticWidget *snapmaticWidget : snapmaticWidgets) + { + // Update Progress + overallId++; + pbDialog.setValue(overallId); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + + SnapmaticPicture *picture = snapmaticWidget->getPicture(); + + QString currentFilePath = picture->getPictureFilePath(); + QString originalFilePath = picture->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + QString fallbackTitle = picture->getPictureTitle(); + picture->setPictureTitle(snapmaticTitle); + if (!picture->exportPicture(currentFilePath)) + { + picture->setPictureTitle(fallbackTitle); + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + else + { + picture->emitUpdate(); + qApp->processEvents(); + } + } + pbDialog.close(); + if (!fails.isEmpty()) + { + QMessageBox::warning(this, tr("Change Title..."), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Title", "%1 failed with..."), fails.join(", "))); + } + } + break; + } +} + +int ProfileInterface::getRandomUid() +{ + int random_int = pcg32_boundedrand_r(&rng, 2147483647); + return random_int; +} diff --git a/ProfileInterface.h b/ProfileInterface.h new file mode 100644 index 0000000..c9f31a4 --- /dev/null +++ b/ProfileInterface.h @@ -0,0 +1,137 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef PROFILEINTERFACE_H +#define PROFILEINTERFACE_H + +#include "SnapmaticPicture.h" +#include "SnapmaticWidget.h" +#include "ProfileDatabase.h" +#include "DatabaseThread.h" +#include "SavegameWidget.h" +#include "ProfileLoader.h" +#include "ProfileWidget.h" +#include "ExportThread.h" +#include "SavegameData.h" +#include "CrewDatabase.h" +#include "pcg_basic.h" +#include +#include +#include +#include +#include +#include + +namespace Ui { +class ProfileInterface; +} + +enum class MassTool : int { Qualify = 0, Players = 1, Crew = 2, Title = 3 }; + +class ProfileInterface : public QWidget +{ + Q_OBJECT +public: + explicit ProfileInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent = 0); + void setProfileFolder(QString folder, QString profile); + void settingsApplied(int contentMode, bool languageChanged); + void setupProfileInterface(); + void massTool(MassTool tool); + void disableSelected(); + void enableSelected(); + int selectedWidgets(); + void retranslateUi(); + ~ProfileInterface(); + +public slots: + void contextMenuTriggeredPIC(QContextMenuEvent* ev); + void contextMenuTriggeredSGD(QContextMenuEvent* ev); + void hoverProfileWidgetCheck(); + void selectAllWidgets(); + void deselectAllWidgets(); + void exportSelected(); + void deleteSelected(); + void updatePalette(); + void importFiles(); + +private slots: + void on_cmdCloseProfile_clicked(); + void on_cmdImport_clicked(); + void pictureLoaded_event(SnapmaticPicture *picture); + void pictureFixed_event(SnapmaticPicture *picture); + void savegameLoaded_event(SavegameData *savegame, QString savegamePath); + void loadingProgress(int value, int maximum); + void pictureDeleted_event(); + void savegameDeleted_event(); + void profileLoaded_p(); + void profileWidgetSelected(); + void profileWidgetDeselected(); + void dialogNextPictureRequested(QWidget *dialog); + void dialogPreviousPictureRequested(QWidget *dialog); + void on_saProfileContent_dropped(const QMimeData *mimeData); + +protected: + bool eventFilter(QObject *watched, QEvent *event); + +private: + ProfileDatabase *profileDB; + CrewDatabase *crewDB; + DatabaseThread *threadDB; + Ui::ProfileInterface *ui; + + ProfileLoader *profileLoader; + ProfileWidget *previousWidget; + QList savegames; + QList pictures; + QMap widgets; + QSpacerItem *saSpacerItem; + QStringList fixedPictures; + QString enabledPicStr; + QString profileFolder; + QString profileName; + QString loadingStr; + QString language; + pcg32_random_t rng; + bool contextMenuOpened; + bool isProfileLoaded; + int selectedWidgts; + int contentMode; + + bool isSupportedImageFile(QString selectedFileName); + bool importFile(QString selectedFile, QDateTime importDateTime, bool notMultiple); + bool importUrls(const QMimeData *mimeData); + bool importRemote(QUrl remoteUrl); + bool importImage(QImage *snapmaticImage, QDateTime importDateTime); + bool importFilesProgress(QStringList selectedFiles); + bool importSnapmaticPicture(SnapmaticPicture *picture, bool warn = true); + 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, bool isRemoteEmited = false); + void pictureDeleted(SnapmaticWidget *picWidget, bool isRemoteEmited = false); + void insertSnapmaticIPI(QWidget *widget); + void insertSavegameIPI(QWidget *widget); + void sortingProfileInterface(); + int getRandomUid(); + +signals: + void profileLoaded(); + void profileClosed(); +}; + +#endif // PROFILEINTERFACE_H diff --git a/ProfileInterface.ui b/ProfileInterface.ui new file mode 100644 index 0000000..066e636 --- /dev/null +++ b/ProfileInterface.ui @@ -0,0 +1,244 @@ + + + ProfileInterface + + + + 0 + 0 + 400 + 300 + + + + Profile Interface + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + Loading file %1 of %2 files + + + Qt::AlignCenter + + + + + + + 0 + + + false + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + true + + + + + 0 + 0 + 398 + 257 + + + + true + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + + + + + + + + + + + + + + + + + + + 6 + + + 9 + + + 9 + + + 9 + + + 9 + + + + + %1 %2 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + Import file + + + &Import... + + + true + + + + + + + + 0 + 0 + + + + Close profile + + + &Close + + + true + + + + + + + + + + UiModWidget + QWidget +
UiModWidget.h
+ 1 + + dropped(QMimeData*) + +
+
+ + +
diff --git a/ProfileLoader.cpp b/ProfileLoader.cpp new file mode 100644 index 0000000..f7eac2a --- /dev/null +++ b/ProfileLoader.cpp @@ -0,0 +1,116 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "ProfileLoader.h" +#include "SnapmaticPicture.h" +#include "SavegameData.h" +#include "CrewDatabase.h" +#include +#include +#include +#include +#include +#include +#include + +ProfileLoader::ProfileLoader(QString profileFolder, CrewDatabase *crewDB, QObject *parent) : QThread(parent), profileFolder(profileFolder), crewDB(crewDB) +{ + +} + +void ProfileLoader::run() +{ + int curFile = 1; + QDir profileDir; + QList crewList; + profileDir.setPath(profileFolder); + + // Seek pictures and savegames + profileDir.setNameFilters(QStringList("SRDR*")); + QStringList SavegameFiles = profileDir.entryList(QDir::Files | QDir::NoDot, QDir::NoSort); + QStringList BackupFiles = SavegameFiles.filter(".bak", Qt::CaseInsensitive); + profileDir.setNameFilters(QStringList("PRDR*")); + QStringList SnapmaticPics = profileDir.entryList(QDir::Files | QDir::NoDot, QDir::NoSort); + BackupFiles += SnapmaticPics.filter(".bak", Qt::CaseInsensitive); + + SavegameFiles.removeDuplicates(); + SnapmaticPics.removeDuplicates(); + for (QString BackupFile : BackupFiles) + { + SavegameFiles.removeAll(BackupFile); + SnapmaticPics.removeAll(BackupFile); + } + + int maximumV = SavegameFiles.length() + SnapmaticPics.length(); + + // Loading pictures and savegames + emit loadingProgress(curFile, maximumV); + for (QString SavegameFile : SavegameFiles) + { + emit loadingProgress(curFile, maximumV); + QString sgdPath = profileFolder % "/" % SavegameFile; + SavegameData *savegame = new SavegameData(sgdPath); + if (savegame->readingSavegame()) + { + emit savegameLoaded(savegame, sgdPath); + } + curFile++; + } + for (QString SnapmaticPic : SnapmaticPics) + { + emit loadingProgress(curFile, maximumV); + QString picturePath = profileFolder % "/" % SnapmaticPic; + SnapmaticPicture *picture = new SnapmaticPicture(picturePath); + if (picture->readingPicture(true, true, true)) + { + if (picture->isFormatSwitched()) + { + picture->setSnapmaticFormat(SnapmaticFormat::PGTA_Format); + if (picture->exportPicture(picturePath, SnapmaticFormat::PGTA_Format)) + { + emit pictureFixed(picture); + } + } + emit pictureLoaded(picture); + int crewNumber = picture->getSnapmaticProperties().crewID; + if (!crewList.contains(crewNumber)) + { + crewList += crewNumber; + } + } + curFile++; + } + + // adding found crews + crewDB->setAddingCrews(true); + for (int crewID : crewList) + { + crewDB->addCrew(crewID); + } + crewDB->setAddingCrews(false); +} + +void ProfileLoader::preloaded() +{ + +} + +void ProfileLoader::loaded() +{ + +} diff --git a/ProfileLoader.h b/ProfileLoader.h new file mode 100644 index 0000000..9393f0b --- /dev/null +++ b/ProfileLoader.h @@ -0,0 +1,53 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef PROFILELOADER_H +#define PROFILELOADER_H + +#include "SnapmaticPicture.h" +#include "SavegameData.h" +#include "CrewDatabase.h" +#include +#include + +class ProfileLoader : public QThread +{ + Q_OBJECT +public: + explicit ProfileLoader(QString profileFolder, CrewDatabase *crewDB, QObject *parent = 0); + +protected: + void run(); + +private: + QString profileFolder; + CrewDatabase *crewDB; + ProfileLoader *profileLoader; + +private slots: + void preloaded(); + void loaded(); + +signals: + void pictureLoaded(SnapmaticPicture *picture); + void pictureFixed(SnapmaticPicture *picture); + void savegameLoaded(SavegameData *savegame, QString savegamePath); + void loadingProgress(int value, int maximum); +}; + +#endif // PROFILELOADER_H diff --git a/ProfileWidget.cpp b/ProfileWidget.cpp new file mode 100644 index 0000000..bf6904a --- /dev/null +++ b/ProfileWidget.cpp @@ -0,0 +1,66 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "ProfileWidget.h" +#include + +ProfileWidget::ProfileWidget(QWidget *parent) : QWidget(parent) +{ + contentMode = 0; +} + +ProfileWidget::~ProfileWidget() +{ +} + +void ProfileWidget::retranslate() +{ + qDebug() << "ProfileWidget::retranslate got used without overwrite"; +} + +bool ProfileWidget::isSelected() +{ + qDebug() << "ProfileWidget::isSelected got used without overwrite"; + return false; +} + +void ProfileWidget::setSelected(bool isSelected) +{ + qDebug() << "ProfileWidget::setSelected got used without overwrite, result" << isSelected; +} + +void ProfileWidget::setSelectionMode(bool selectionMode) +{ + qDebug() << "ProfileWidget::setSelectionMode got used without overwrite, result:" << selectionMode; +} + +QString ProfileWidget::getWidgetType() +{ + qDebug() << "ProfileWidget::getWidgetType got used without overwrite"; + return "ProfileWidget"; +} + +int ProfileWidget::getContentMode() +{ + return contentMode; +} + +void ProfileWidget::setContentMode(int _contentMode) +{ + contentMode = _contentMode; +} diff --git a/ProfileWidget.h b/ProfileWidget.h new file mode 100644 index 0000000..25020e5 --- /dev/null +++ b/ProfileWidget.h @@ -0,0 +1,46 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef PROFILEWIDGET_H +#define PROFILEWIDGET_H + +#include + +class ProfileWidget : public QWidget +{ + Q_OBJECT +public: + explicit ProfileWidget(QWidget *parent = 0); + virtual void setSelectionMode(bool selectionMode); + virtual void setContentMode(int contentMode); + virtual void setSelected(bool isSelected); + virtual bool isSelected(); + virtual QString getWidgetType(); + virtual int getContentMode(); + virtual void retranslate(); + ~ProfileWidget(); + +private: + int contentMode; + +signals: + +public slots: +}; + +#endif // PROFILEWIDGET_H diff --git a/README.md b/README.md new file mode 100644 index 0000000..d4f76d0 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +## rdr2view +Red Dead Redemption 2 Savegame and Snapmatic viewer/editor diff --git a/SavegameCopy.cpp b/SavegameCopy.cpp new file mode 100644 index 0000000..77295c9 --- /dev/null +++ b/SavegameCopy.cpp @@ -0,0 +1,108 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "SidebarGenerator.h" +#include "SavegameWidget.h" +#include "StandardPaths.h" +#include "SavegameCopy.h" +#include "config.h" +#include +#include +#include +#include + +SavegameCopy::SavegameCopy() +{ + +} + +void SavegameCopy::copySavegame(QWidget *parent, QString sgdPath) +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + + settings.beginGroup("FileDialogs"); + bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); + settings.beginGroup("SavegameCopy"); + +fileDialogPreSave: //Work? + QFileInfo sgdFileInfo(sgdPath); + QFileDialog fileDialog(parent); + fileDialog.setFileMode(QFileDialog::AnyFile); + fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setAcceptMode(QFileDialog::AcceptSave); + fileDialog.setOption(QFileDialog::DontUseNativeDialog, dontUseNativeDialog); + fileDialog.setOption(QFileDialog::DontConfirmOverwrite, true); + fileDialog.setDefaultSuffix(""); + fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + fileDialog.setWindowTitle(SavegameWidget::tr(("Export Savegame..."))); + fileDialog.setLabelText(QFileDialog::Accept, SavegameWidget::tr("Export")); + + QStringList filters; + filters << SavegameWidget::tr("Savegame files (SRDR*)"); + filters << SavegameWidget::tr("All files (**)"); + fileDialog.setNameFilters(filters); + + QList sidebarUrls = SidebarGenerator::generateSidebarUrls(fileDialog.sidebarUrls()); + + fileDialog.setSidebarUrls(sidebarUrls); + fileDialog.setDirectory(settings.value("Directory", StandardPaths::picturesLocation()).toString()); + fileDialog.restoreGeometry(settings.value(parent->objectName() % "+Geometry", "").toByteArray()); + fileDialog.selectFile(sgdFileInfo.fileName()); + + if (fileDialog.exec()) + { + QStringList selectedFiles = fileDialog.selectedFiles(); + if (selectedFiles.length() == 1) + { + QString selectedFile = selectedFiles.at(0); + + if (QFile::exists(selectedFile)) + { + if (QMessageBox::Yes == QMessageBox::warning(parent, SavegameWidget::tr("Export Savegame"), SavegameWidget::tr("Overwrite %1 with current Savegame?").arg("\""+selectedFile+"\""), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)) + { + if (!QFile::remove(selectedFile)) + { + QMessageBox::warning(parent, SavegameWidget::tr("Export Savegame"), SavegameWidget::tr("Failed to overwrite %1 with current Savegame").arg("\""+selectedFile+"\"")); + goto fileDialogPreSave; //Work? + } + } + else + { + goto fileDialogPreSave; //Work? + } + } + + bool isCopied = QFile::copy(sgdPath, selectedFile); + if (!isCopied) + { + QMessageBox::warning(parent, SavegameWidget::tr("Export Savegame"), SavegameWidget::tr("Failed to export current Savegame")); + goto fileDialogPreSave; //Work? + } + } + else + { + QMessageBox::warning(parent, SavegameWidget::tr("Export Savegame"), SavegameWidget::tr("No valid file is selected")); + goto fileDialogPreSave; //Work? + } + } + + settings.setValue(parent->objectName() % "+Geometry", fileDialog.saveGeometry()); + settings.setValue("Directory", fileDialog.directory().absolutePath()); + settings.endGroup(); + settings.endGroup(); +} diff --git a/SavegameCopy.h b/SavegameCopy.h new file mode 100644 index 0000000..0bdb600 --- /dev/null +++ b/SavegameCopy.h @@ -0,0 +1,32 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef SAVEGAMECOPY_H +#define SAVEGAMECOPY_H + +#include +#include + +class SavegameCopy +{ +public: + SavegameCopy(); + static void copySavegame(QWidget *parent, QString sgdPath); +}; + +#endif // SAVEGAMECOPY_H diff --git a/SavegameData.cpp b/SavegameData.cpp new file mode 100644 index 0000000..0e922b4 --- /dev/null +++ b/SavegameData.cpp @@ -0,0 +1,121 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "SnapmaticPicture.h" +#include "StringParser.h" +#include "SavegameData.h" +#include +#include +#include +#include +#include + +#define savegameHeaderLength 260 +#define verificationValue QByteArray::fromHex("00000004") + +SavegameData::SavegameData(const QString &fileName, QObject *parent) : QObject(parent), savegameFileName(fileName) +{ + // INIT SAVEGAME + savegameStr = ""; + savegameOk = 0; +} + +bool SavegameData::readingSavegame() +{ + // Start opening file + // lastStep is like currentStep + + QFile *saveFile = new QFile(savegameFileName); + if (!saveFile->open(QFile::ReadOnly)) + { + lastStep = "1;/1,OpenFile," % SnapmaticPicture::convertDrawStringForLog(savegameFileName); + saveFile->deleteLater(); + delete saveFile; + return false; + } + + // Reading Savegame Header + if (!saveFile->isReadable()) + { + lastStep = "2;/3,ReadingFile," % SnapmaticPicture::convertDrawStringForLog(savegameFileName) % ",1,NOHEADER"; + saveFile->close(); + saveFile->deleteLater(); + delete saveFile; + return false; + } + QByteArray savegameHeaderLine = saveFile->read(savegameHeaderLength); + if (savegameHeaderLine.left(4) == verificationValue) + { + savegameStr = getSavegameDataString(savegameHeaderLine); + if (savegameStr.length() >= 1) + { + savegameOk = true; + } + } + saveFile->close(); + saveFile->deleteLater(); + delete saveFile; + return savegameOk; +} + +QString SavegameData::getSavegameDataString(const QByteArray &savegameHeader) +{ + QByteArray savegameBytes = savegameHeader.left(savegameHeaderLength); + QList savegameBytesList = savegameBytes.split(char(0x04)); + savegameBytes = savegameBytesList.at(1); + savegameBytesList.clear(); + return SnapmaticPicture::parseTitleString(savegameBytes, savegameBytes.length()); +} + +bool SavegameData::readingSavegameFromFile(const QString &fileName) +{ + if (fileName != "") + { + savegameFileName = fileName; + return readingSavegame(); + } + else + { + return false; + } +} + +bool SavegameData::isSavegameOk() +{ + return savegameOk; +} + +QString SavegameData::getSavegameFileName() +{ + return savegameFileName; +} + +QString SavegameData::getSavegameStr() +{ + return savegameStr; +} + +QString SavegameData::getLastStep() +{ + return lastStep; +} + +void SavegameData::setSavegameFileName(QString savegameFileName_) +{ + savegameFileName = savegameFileName_; +} diff --git a/SavegameData.h b/SavegameData.h new file mode 100644 index 0000000..674aab9 --- /dev/null +++ b/SavegameData.h @@ -0,0 +1,45 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef SAVEGAMEDATA_H +#define SAVEGAMEDATA_H + +#include + +class SavegameData : public QObject +{ + Q_OBJECT +public: + explicit SavegameData(const QString &fileName = "", QObject *parent = 0); + bool readingSavegameFromFile(const QString &fileName); + bool readingSavegame(); + bool isSavegameOk(); + QString getLastStep(); + QString getSavegameStr(); + QString getSavegameFileName(); + void setSavegameFileName(QString savegameFileName); + +private: + QString getSavegameDataString(const QByteArray &savegameHeader); + QString savegameFileName; + QString savegameStr; + QString lastStep; + bool savegameOk; +}; + +#endif // SAVEGAMEDATA_H diff --git a/SavegameDialog.cpp b/SavegameDialog.cpp new file mode 100644 index 0000000..2c58d97 --- /dev/null +++ b/SavegameDialog.cpp @@ -0,0 +1,100 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "SavegameDialog.h" +#include "ui_SavegameDialog.h" +#include "SavegameCopy.h" +#include "AppEnv.h" +#include +#include + +SavegameDialog::SavegameDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::SavegameDialog) +{ + // Set Window Flags + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); + + // Setup User Interface + ui->setupUi(this); + ui->cmdClose->setFocus(); + savegameLabStr = ui->labSavegameText->text(); + + // Set Icon for Close Button + if (QIcon::hasThemeIcon("dialog-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close")); + } + else if (QIcon::hasThemeIcon("gtk-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("gtk-close")); + } + + // Set Icon for Export Button + if (QIcon::hasThemeIcon("document-export")) + { + ui->cmdCopy->setIcon(QIcon::fromTheme("document-export")); + } + else if (QIcon::hasThemeIcon("document-save")) + { + ui->cmdCopy->setIcon(QIcon::fromTheme("document-save")); + } + + refreshWindowSize(); +} + +SavegameDialog::~SavegameDialog() +{ + delete ui; +} + +void SavegameDialog::refreshWindowSize() +{ + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + int dpiWindowWidth = 400 * screenRatio; + int dpiWindowHeight = 105 * screenRatio; + if (dpiWindowHeight < heightForWidth(dpiWindowWidth)) + { + dpiWindowHeight = heightForWidth(dpiWindowWidth); + } + resize(dpiWindowWidth, dpiWindowHeight); +} + +void SavegameDialog::setSavegameData(SavegameData *savegame, QString savegamePath, bool readOk) +{ + // Showing error if reading error + if (!readOk) + { + QMessageBox::warning(this,tr("Savegame Viewer"),tr("Failed at %1").arg(savegame->getLastStep())); + return; + } + sgdPath = savegamePath; + ui->labSavegameText->setText(savegameLabStr.arg(savegame->getSavegameStr())); + refreshWindowSize(); +} + +void SavegameDialog::on_cmdClose_clicked() +{ + this->close(); +} + +void SavegameDialog::on_cmdCopy_clicked() +{ + SavegameCopy::copySavegame(this, sgdPath); +} diff --git a/SavegameDialog.h b/SavegameDialog.h new file mode 100644 index 0000000..de0ff60 --- /dev/null +++ b/SavegameDialog.h @@ -0,0 +1,48 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef SAVEGAMEDIALOG_H +#define SAVEGAMEDIALOG_H + +#include "SavegameData.h" +#include + +namespace Ui { +class SavegameDialog; +} + +class SavegameDialog : public QDialog +{ + Q_OBJECT +public: + explicit SavegameDialog(QWidget *parent = 0); + void setSavegameData(SavegameData *savegame, QString sgdPath, bool readOk); + ~SavegameDialog(); + +private slots: + void on_cmdClose_clicked(); + void on_cmdCopy_clicked(); + void refreshWindowSize(); + +private: + Ui::SavegameDialog *ui; + QString savegameLabStr; + QString sgdPath; +}; + +#endif // SAVEGAMEDIALOG_H diff --git a/SavegameDialog.ui b/SavegameDialog.ui new file mode 100644 index 0000000..36b3b9b --- /dev/null +++ b/SavegameDialog.ui @@ -0,0 +1,93 @@ + + + SavegameDialog + + + + 0 + 0 + 400 + 105 + + + + Savegame Viewer + + + true + + + + + + <span style=" font-weight:600;">Savegame</span><br><br>%1 + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + &Export + + + + + + + + 0 + 0 + + + + &Close + + + + + + + + + + diff --git a/SavegameWidget.cpp b/SavegameWidget.cpp new file mode 100644 index 0000000..9f278d7 --- /dev/null +++ b/SavegameWidget.cpp @@ -0,0 +1,303 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "SavegameWidget.h" +#include "ui_SavegameWidget.h" +#include "SidebarGenerator.h" +#include "SavegameDialog.h" +#include "StandardPaths.h" +#include "SavegameData.h" +#include "SavegameCopy.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef GTA5SYNC_TELEMETRY +#include "TelemetryClass.h" +#include +#include +#include +#endif + +SavegameWidget::SavegameWidget(QWidget *parent) : + ProfileWidget(parent), + ui(new Ui::SavegameWidget) +{ + ui->setupUi(this); + ui->cmdCopy->setVisible(false); + ui->cmdView->setVisible(false); + ui->cmdDelete->setVisible(false); + ui->cbSelected->setVisible(false); + + qreal screenRatio = AppEnv::screenRatio(); + ui->labSavegamePic->setFixedSize(48 * screenRatio, 27 * screenRatio); + + ui->labSavegamePic->setScaledContents(true); + ui->labSavegamePic->setPixmap(QPixmap(":/img/savegame.svgz")); + + QString exportSavegameStr = tr("Export Savegame..."); + Q_UNUSED(exportSavegameStr) + + labelAutosaveStr = tr("AUTOSAVE - %1\n%2"); + labelSaveStr = tr("SAVE %3 - %1\n%2"); + + ui->SavegameFrame->setMouseTracking(true); + ui->labSavegamePic->setMouseTracking(true); + ui->labSavegameStr->setMouseTracking(true); + ui->cbSelected->setMouseTracking(true); + sgdata = nullptr; +} + +SavegameWidget::~SavegameWidget() +{ + delete ui; +} + +void SavegameWidget::setSavegameData(SavegameData *savegame, QString savegamePath) +{ + // BETA CODE + QString savegameString = savegame->getSavegameStr(); + QString fileName = QFileInfo(savegame->getSavegameFileName()).fileName(); + renderString(savegameString, fileName); + sgdStr = savegameString; + sgdPath = savegamePath; + sgdata = savegame; +} + +void SavegameWidget::renderString(const QString &savegameString, const QString &fileName) +{ + bool validNumber; + QString savegameName = tr("WRONG FORMAT"); + QString savegameDate = tr("WRONG FORMAT"); + QStringList savegameNDL = QString(savegameString).split(" - "); + if (savegameNDL.length() >= 2) + { + savegameDate = savegameNDL.at(savegameNDL.length() - 1); + savegameName = QString(savegameString).remove(savegameString.length() - savegameDate.length() - 3, savegameDate.length() + 3); + } + int savegameNumber = QString(fileName).remove(0,5).toInt(&validNumber) + 1; + if (validNumber) + { + if (savegameNumber == 16) + { + ui->labSavegameStr->setText(labelAutosaveStr.arg(savegameDate, savegameName)); + } + else + { + ui->labSavegameStr->setText(labelSaveStr.arg(savegameDate, savegameName, QString::number(savegameNumber))); + } + } + else + { + ui->labSavegameStr->setText(labelSaveStr.arg(savegameDate, savegameName, tr("UNKNOWN"))); + } +} + +void SavegameWidget::retranslate() +{ + labelAutosaveStr = tr("AUTOSAVE - %1\n%2"); + labelSaveStr = tr("SAVE %3 - %1\n%2"); + + QString fileName = QFileInfo(sgdata->getSavegameFileName()).fileName(); + renderString(sgdStr, fileName); +} + +void SavegameWidget::on_cmdCopy_clicked() +{ + SavegameCopy::copySavegame(this, sgdPath); +} + +void SavegameWidget::on_cmdDelete_clicked() +{ + int uchoice = QMessageBox::question(this, tr("Delete Savegame"), tr("Are you sure to delete %1 from your savegames?").arg("\""+sgdStr+"\""), QMessageBox::No | QMessageBox::Yes, QMessageBox::No); + if (uchoice == QMessageBox::Yes) + { + if (!QFile::exists(sgdPath)) + { + emit savegameDeleted(); +#ifdef GTA5SYNC_TELEMETRY + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "DeleteSuccess"; + jsonObject["ExtraFlags"] = "Savegame"; + jsonObject["DeletedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } +#endif + } + else if (QFile::remove(sgdPath)) + { +#ifdef GTA5SYNC_TELEMETRY + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "DeleteSuccess"; + jsonObject["ExtraFlags"] = "Savegame"; + jsonObject["DeletedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } +#endif + emit savegameDeleted(); + } + else + { + QMessageBox::warning(this, tr("Delete Savegame"), tr("Failed at deleting %1 from your savegames").arg("\""+sgdStr+"\"")); + } + } +} + +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(); + delete savegameDialog; +} + +void SavegameWidget::mousePressEvent(QMouseEvent *ev) +{ + ProfileWidget::mousePressEvent(ev); +} + +void SavegameWidget::mouseReleaseEvent(QMouseEvent *ev) +{ + ProfileWidget::mouseReleaseEvent(ev); + if (ui->cbSelected->isVisible()) + { + if (rect().contains(ev->pos()) && ev->button() == Qt::LeftButton) + { + ui->cbSelected->setChecked(!ui->cbSelected->isChecked()); + } + } + else + { + if (getContentMode() == 0 && rect().contains(ev->pos()) && ev->button() == Qt::LeftButton) + { + if (ev->modifiers().testFlag(Qt::ShiftModifier)) + { + ui->cbSelected->setChecked(!ui->cbSelected->isChecked()); + } + else + { + on_cmdView_clicked(); + } + } + else if (!ui->cbSelected->isVisible() && getContentMode() == 1 && ev->button() == Qt::LeftButton && ev->modifiers().testFlag(Qt::ShiftModifier)) + { + ui->cbSelected->setChecked(!ui->cbSelected->isChecked()); + } + } +} + +void SavegameWidget::mouseDoubleClickEvent(QMouseEvent *ev) +{ + ProfileWidget::mouseDoubleClickEvent(ev); + + if (!ui->cbSelected->isVisible() && getContentMode() == 1 && ev->button() == Qt::LeftButton) + { + on_cmdView_clicked(); + } +} + +void SavegameWidget::setSelected(bool isSelected) +{ + ui->cbSelected->setChecked(isSelected); +} + +void SavegameWidget::savegameSelected() +{ + setSelected(!ui->cbSelected->isChecked()); +} + +void SavegameWidget::contextMenuEvent(QContextMenuEvent *ev) +{ + emit contextMenuTriggered(ev); +} + +void SavegameWidget::on_cbSelected_stateChanged(int arg1) +{ + if (arg1 == Qt::Checked) + { + emit widgetSelected(); + } + else if (arg1 == Qt::Unchecked) + { + emit widgetDeselected(); + } +} + +bool SavegameWidget::isSelected() +{ + return ui->cbSelected->isChecked(); +} + +void SavegameWidget::setSelectionMode(bool selectionMode) +{ + ui->cbSelected->setVisible(selectionMode); +} + +void SavegameWidget::selectAllWidgets() +{ + emit allWidgetsSelected(); +} + +void SavegameWidget::deselectAllWidgets() +{ + emit allWidgetsDeselected(); +} + +SavegameData* SavegameWidget::getSavegame() +{ + return sgdata; +} + +QString SavegameWidget::getWidgetType() +{ + return "SavegameWidget"; +} diff --git a/SavegameWidget.h b/SavegameWidget.h new file mode 100644 index 0000000..0a61ff5 --- /dev/null +++ b/SavegameWidget.h @@ -0,0 +1,80 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef SAVEGAMEWIDGET_H +#define SAVEGAMEWIDGET_H +#include "ProfileWidget.h" +#include "SavegameData.h" +#include +#include +#include +#include + +namespace Ui { +class SavegameWidget; +} + +class SavegameWidget : public ProfileWidget +{ + Q_OBJECT + +public: + SavegameWidget(QWidget *parent = 0); + void setSavegameData(SavegameData *savegame, QString savegamePath); + void setSelectionMode(bool selectionMode); + void setSelected(bool isSelected); + SavegameData* getSavegame(); + QString getWidgetType(); + bool isSelected(); + void retranslate(); + ~SavegameWidget(); + +private slots: + void on_cmdView_clicked(); + void on_cmdCopy_clicked(); + void on_cmdDelete_clicked(); + void on_cbSelected_stateChanged(int arg1); + void savegameSelected(); + void selectAllWidgets(); + void deselectAllWidgets(); + +protected: + void mouseDoubleClickEvent(QMouseEvent *ev); + void mouseReleaseEvent(QMouseEvent *ev); + void mousePressEvent(QMouseEvent *ev); + void contextMenuEvent(QContextMenuEvent *ev); + +private: + Ui::SavegameWidget *ui; + SavegameData *sgdata; + QString labelAutosaveStr; + QString labelSaveStr; + QString sgdPath; + QString sgdStr; + void renderString(const QString &savegameString, const QString &fileName); + +signals: + void savegameDeleted(); + void widgetSelected(); + void widgetDeselected(); + void allWidgetsSelected(); + void allWidgetsDeselected(); + void contextMenuTriggered(QContextMenuEvent *ev); +}; + +#endif // SAVEGAMEWIDGET_H diff --git a/SavegameWidget.ui b/SavegameWidget.ui new file mode 100644 index 0000000..ea5e3c6 --- /dev/null +++ b/SavegameWidget.ui @@ -0,0 +1,135 @@ + + + SavegameWidget + + + + 0 + 0 + 405 + 46 + + + + Savegame Widget + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + + + + Qt::NoFocus + + + + + + + + + + + + + + + + + + 0 + 0 + + + + SAVE %3 - %1<br>%2 + + + true + + + + + + + + 0 + 0 + + + + View savegame + + + View + + + + + + + + 0 + 0 + + + + Copy savegame + + + Export + + + true + + + + + + + + 0 + 0 + + + + Delete savegame + + + Delete + + + true + + + + + + + + + + + diff --git a/SidebarGenerator.cpp b/SidebarGenerator.cpp new file mode 100644 index 0000000..74517f6 --- /dev/null +++ b/SidebarGenerator.cpp @@ -0,0 +1,61 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "SidebarGenerator.h" +#include "StandardPaths.h" +#include "AppEnv.h" +#include +#include +#include + +SidebarGenerator::SidebarGenerator() +{ + +} + +QList SidebarGenerator::generateSidebarUrls(QList sidebarUrls) +{ + QDir dir; + + dir.setPath(StandardPaths::picturesLocation()); + if (dir.exists()) + { + sidebarUrls += QUrl::fromLocalFile(dir.absolutePath()); + } + + dir.setPath(StandardPaths::documentsLocation()); + if (dir.exists()) + { + sidebarUrls += QUrl::fromLocalFile(dir.absolutePath()); + } + + bool gameFolderExists; + QString gameFolder = AppEnv::getGameFolder(&gameFolderExists); + if (gameFolderExists) + { + sidebarUrls += QUrl::fromLocalFile(gameFolder); + } + + dir.setPath(StandardPaths::desktopLocation()); + if (dir.exists()) + { + sidebarUrls += QUrl::fromLocalFile(dir.absolutePath()); + } + + return sidebarUrls; +} diff --git a/SidebarGenerator.h b/SidebarGenerator.h new file mode 100644 index 0000000..a680ff8 --- /dev/null +++ b/SidebarGenerator.h @@ -0,0 +1,32 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef SIDEBARGENERATOR_H +#define SIDEBARGENERATOR_H + +#include +#include + +class SidebarGenerator +{ +public: + SidebarGenerator(); + static QList generateSidebarUrls(QList sidebarUrls); +}; + +#endif // SIDEBARGENERATOR_H diff --git a/SnapmaticEditor.cpp b/SnapmaticEditor.cpp new file mode 100644 index 0000000..b4ef036 --- /dev/null +++ b/SnapmaticEditor.cpp @@ -0,0 +1,469 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "SnapmaticEditor.h" +#include "ui_SnapmaticEditor.h" +#include "SnapmaticPicture.h" +#include "PlayerListDialog.h" +#include "StringParser.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include + +#ifdef GTA5SYNC_TELEMETRY +#include "TelemetryClass.h" +#include +#include +#endif + +SnapmaticEditor::SnapmaticEditor(CrewDatabase *crewDB, ProfileDatabase *profileDB, QWidget *parent) : + QDialog(parent), crewDB(crewDB), profileDB(profileDB), + ui(new Ui::SnapmaticEditor) +{ + // Set Window Flags + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); + + ui->setupUi(this); + ui->cmdCancel->setDefault(true); + ui->cmdCancel->setFocus(); + + // Set Icon for Apply Button + if (QIcon::hasThemeIcon("dialog-ok-apply")) + { + ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok-apply")); + } + else if (QIcon::hasThemeIcon("dialog-apply")) + { + ui->cmdApply->setIcon(QIcon::fromTheme("dialog-apply")); + } + else if (QIcon::hasThemeIcon("gtk-apply")) + { + ui->cmdApply->setIcon(QIcon::fromTheme("gtk-apply")); + } + else if (QIcon::hasThemeIcon("dialog-ok")) + { + ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok")); + } + else if (QIcon::hasThemeIcon("gtk-ok")) + { + ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok")); + } + + // Set Icon for Cancel Button + if (QIcon::hasThemeIcon("dialog-cancel")) + { + ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel")); + } + else if (QIcon::hasThemeIcon("gtk-cancel")) + { + ui->cmdCancel->setIcon(QIcon::fromTheme("gtk-cancel")); + } + + snapmaticTitle = QString(); + smpic = 0; + +#ifndef Q_OS_ANDROID + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + resize(400 * screenRatio, 360 * screenRatio); +#endif +} + +SnapmaticEditor::~SnapmaticEditor() +{ + delete ui; +} + +void SnapmaticEditor::selfie_toggled(bool checked) +{ + if (checked) + { + isSelfie = true; + } + else + { + isSelfie = false; + } +} + + +void SnapmaticEditor::mugshot_toggled(bool checked) +{ + if (checked) + { + isMugshot = true; + ui->cbDirector->setEnabled(false); + ui->cbDirector->setChecked(false); + } + else + { + isMugshot = false; + ui->cbDirector->setEnabled(true); + } +} + +void SnapmaticEditor::editor_toggled(bool checked) +{ + if (checked) + { + isEditor = true; + ui->cbDirector->setEnabled(false); + ui->cbDirector->setChecked(false); + } + else + { + isEditor = false; + ui->cbDirector->setEnabled(true); + } +} + +void SnapmaticEditor::on_rbSelfie_toggled(bool checked) +{ + if (checked) + { + mugshot_toggled(false); + editor_toggled(false); + selfie_toggled(true); + } +} + +void SnapmaticEditor::on_rbMugshot_toggled(bool checked) +{ + if (checked) + { + selfie_toggled(false); + editor_toggled(false); + mugshot_toggled(true); + } +} + +void SnapmaticEditor::on_rbEditor_toggled(bool checked) +{ + if (checked) + { + selfie_toggled(false); + mugshot_toggled(false); + editor_toggled(true); + } +} + +void SnapmaticEditor::on_rbCustom_toggled(bool checked) +{ + if (checked) + { + selfie_toggled(false); + mugshot_toggled(false); + editor_toggled(false); + } +} + +void SnapmaticEditor::setSnapmaticPicture(SnapmaticPicture *picture) +{ + smpic = picture; + snapmaticProperties = smpic->getSnapmaticProperties(); + ui->rbCustom->setChecked(true); + crewID = snapmaticProperties.crewID; + isSelfie = snapmaticProperties.isSelfie; + isMugshot = snapmaticProperties.isMug; + isEditor = snapmaticProperties.isFromRSEditor; + playersList = snapmaticProperties.playersList; + ui->cbDirector->setChecked(snapmaticProperties.isFromDirector); + ui->cbMeme->setChecked(snapmaticProperties.isMeme); + if (isSelfie) + { + ui->rbSelfie->setChecked(true); + } + else if (isMugshot) + { + ui->rbMugshot->setChecked(true); + } + else if (isEditor) + { + ui->rbEditor->setChecked(true); + } + else + { + ui->rbCustom->setChecked(true); + } + setSnapmaticCrew(returnCrewName(crewID)); + setSnapmaticTitle(picture->getPictureTitle()); + setSnapmaticPlayers(insertPlayerNames(playersList)); +} + +void SnapmaticEditor::insertPlayerNames(QStringList *players) +{ + for (int i = 0; i < players->size(); ++i) + { + players->replace(i, profileDB->getPlayerName(players->at(i))); + } +} + +QStringList SnapmaticEditor::insertPlayerNames(const QStringList &players) +{ + QStringList playersWI = players; + insertPlayerNames(&playersWI); + return playersWI; +} + +void SnapmaticEditor::setSnapmaticPlayers(const QStringList &players) +{ + QString editStr = QString("%1").arg(tr("Edit")); + QString playersStr; + if (players.length() != 1) + { + playersStr = tr("Players: %1 (%2)", "Multiple Player are inserted here"); + } + else + { + playersStr = tr("Player: %1 (%2)", "One Player is inserted here"); + } + if (players.length() != 0) + { + ui->labPlayers->setText(playersStr.arg(players.join(", "), editStr)); + } + else + { + ui->labPlayers->setText(playersStr.arg(QApplication::translate("PictureDialog", "No Players"), editStr)); + } +#ifndef Q_OS_ANDROID + ui->gbValues->resize(ui->gbValues->width(), ui->gbValues->heightForWidth(ui->gbValues->width())); + ui->frameWidget->resize(ui->gbValues->width(), ui->frameWidget->heightForWidth(ui->frameWidget->width())); + if (heightForWidth(width()) > height()) { resize(width(), heightForWidth(width())); } +#endif +} + +void SnapmaticEditor::setSnapmaticTitle(const QString &title) +{ + if (title.length() > 39) + { + snapmaticTitle = title.left(39); + } + else + { + snapmaticTitle = title; + } + QString editStr = QString("%1").arg(tr("Edit")); + QString titleStr = tr("Title: %1 (%2)").arg(StringParser::escapeString(snapmaticTitle), editStr); + ui->labTitle->setText(titleStr); + if (SnapmaticPicture::verifyTitle(snapmaticTitle)) + { + ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("%1").arg(tr("Yes", "Yes, should work fine")))); + } + else + { + ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("%1").arg(tr("No", "No, could lead to issues")))); + } +#ifndef Q_OS_ANDROID + ui->gbValues->resize(ui->gbValues->width(), ui->gbValues->heightForWidth(ui->gbValues->width())); + ui->frameWidget->resize(ui->gbValues->width(), ui->frameWidget->heightForWidth(ui->frameWidget->width())); + if (heightForWidth(width()) > height()) { resize(width(), heightForWidth(width())); } +#endif +} + +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); +#ifndef Q_OS_ANDROID + ui->gbValues->resize(ui->gbValues->width(), ui->gbValues->heightForWidth(ui->gbValues->width())); + ui->frameWidget->resize(ui->gbValues->width(), ui->frameWidget->heightForWidth(ui->frameWidget->width())); + if (heightForWidth(width()) > height()) { resize(width(), heightForWidth(width())); } +#endif +} + +QString SnapmaticEditor::returnCrewName(int crewID_) +{ + return crewDB->getCrewName(crewID_); +} + +void SnapmaticEditor::on_cmdCancel_clicked() +{ + close(); +} + +void SnapmaticEditor::on_cmdApply_clicked() +{ + if (ui->cbQualify->isChecked()) + { + qualifyAvatar(); + } + snapmaticProperties.crewID = crewID; + snapmaticProperties.isSelfie = isSelfie; + snapmaticProperties.isMug = isMugshot; + snapmaticProperties.isFromRSEditor = isEditor; + snapmaticProperties.isFromDirector = ui->cbDirector->isChecked(); + snapmaticProperties.isMeme = ui->cbMeme->isChecked(); + snapmaticProperties.playersList = playersList; + if (smpic) + { + QString currentFilePath = smpic->getPictureFilePath(); + QString originalFilePath = smpic->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + SnapmaticProperties fallbackProperties = smpic->getSnapmaticProperties(); + QString fallbackTitle = smpic->getPictureTitle(); + smpic->setSnapmaticProperties(snapmaticProperties); + smpic->setPictureTitle(snapmaticTitle); + if (!smpic->exportPicture(currentFilePath)) + { + 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->updateStrings(); + smpic->emitUpdate(); +#ifdef GTA5SYNC_TELEMETRY + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "PropertyEdited"; + jsonObject["EditedSize"] = QString::number(smpic->getContentMaxLength()); + jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } +#endif + } + } + close(); +} + +void SnapmaticEditor::qualifyAvatar() +{ + ui->rbSelfie->setChecked(true); + ui->cbDirector->setChecked(false); + ui->cbMeme->setChecked(false); + ui->cmdApply->setDefault(true); +} + +void SnapmaticEditor::on_cbQualify_toggled(bool checked) +{ + if (checked) + { + ui->cbMeme->setEnabled(false); + ui->cbDirector->setEnabled(false); + ui->rbCustom->setEnabled(false); + ui->rbSelfie->setEnabled(false); + ui->rbEditor->setEnabled(false); + ui->rbMugshot->setEnabled(false); + } + else + { + ui->cbMeme->setEnabled(true); + ui->rbCustom->setEnabled(true); + ui->rbSelfie->setEnabled(true); + ui->rbEditor->setEnabled(true); + ui->rbMugshot->setEnabled(true); + if (ui->rbSelfie->isChecked() || ui->rbCustom->isChecked()) + { + ui->cbDirector->setEnabled(true); + } + } +} + +void SnapmaticEditor::on_labPlayers_linkActivated(const QString &link) +{ + if (link == "g5e://editplayers") + { + PlayerListDialog *playerListDialog = new PlayerListDialog(playersList, profileDB, this); + connect(playerListDialog, SIGNAL(playerListUpdated(QStringList)), this, SLOT(playerListUpdated(QStringList))); + playerListDialog->setModal(true); + playerListDialog->show(); + playerListDialog->exec(); + delete playerListDialog; + } +} + +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); + } + } +} + +void SnapmaticEditor::on_labCrew_linkActivated(const QString &link) +{ + if (link == "g5e://editcrew") + { + bool ok; + int indexNum = 0; + QStringList itemList; + QStringList crewList = crewDB->getCrews(); + if (!crewList.contains(QLatin1String("0"))) + { + crewList += QLatin1String("0"); + } + crewList.sort(); + for (QString crew : crewList) + { + itemList += 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; + for (QChar crewChar : newCrew) + { + if (!crewChar.isNumber()) + { + return; + } + } + if (!crewList.contains(newCrew)) + { + crewDB->addCrew(crewID); + } + crewID = newCrew.toInt(); + setSnapmaticCrew(returnCrewName(crewID)); + } + } +} + +void SnapmaticEditor::playerListUpdated(QStringList playerList) +{ + playersList = playerList; + setSnapmaticPlayers(insertPlayerNames(playerList)); +} diff --git a/SnapmaticEditor.h b/SnapmaticEditor.h new file mode 100644 index 0000000..715580a --- /dev/null +++ b/SnapmaticEditor.h @@ -0,0 +1,77 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef SNAPMATICEDITOR_H +#define SNAPMATICEDITOR_H + +#include +#include "CrewDatabase.h" +#include "ProfileDatabase.h" +#include "SnapmaticPicture.h" + +namespace Ui { +class SnapmaticEditor; +} + +class SnapmaticEditor : public QDialog +{ + Q_OBJECT + +public: + explicit SnapmaticEditor(CrewDatabase *crewDB, ProfileDatabase *profileDB, QWidget *parent = 0); + void setSnapmaticPicture(SnapmaticPicture *picture); + void setSnapmaticPlayers(const QStringList &players); + void setSnapmaticTitle(const QString &title); + void setSnapmaticCrew(const QString &crew = ""); + QString returnCrewName(int crewID); + ~SnapmaticEditor(); + +private slots: + void on_rbSelfie_toggled(bool checked); + void on_rbMugshot_toggled(bool checked); + void on_rbEditor_toggled(bool checked); + void on_rbCustom_toggled(bool checked); + void on_cmdCancel_clicked(); + void on_cmdApply_clicked(); + void on_cbQualify_toggled(bool checked); + void on_labPlayers_linkActivated(const QString &link); + void on_labTitle_linkActivated(const QString &link); + void on_labCrew_linkActivated(const QString &link); + void playerListUpdated(QStringList playerList); + +private: + CrewDatabase *crewDB; + ProfileDatabase *profileDB; + Ui::SnapmaticEditor *ui; + SnapmaticProperties snapmaticProperties; + SnapmaticPicture *smpic; + QStringList playersList; + 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(); + void insertPlayerNames(QStringList *players); + QStringList insertPlayerNames(const QStringList &players); +}; + +#endif // SNAPMATICEDITOR_H diff --git a/SnapmaticEditor.ui b/SnapmaticEditor.ui new file mode 100644 index 0000000..fc9ede9 --- /dev/null +++ b/SnapmaticEditor.ui @@ -0,0 +1,276 @@ + + + SnapmaticEditor + + + + 0 + 0 + 400 + 381 + + + + Snapmatic Properties + + + true + + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Snapmatic Type + + + + + + Editor + + + + + + + Selfie + + + + + + + Regular + + + + + + + Mugshot + + + + + + + + + + Snapmatic Properties + + + + + + Meme + + + + + + + Director + + + + + + + + + + Snapmatic Values + + + + + + Qt::NoContextMenu + + + + + + true + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + + + + + + + Qt::NoContextMenu + + + + + + true + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + + + + + + + Qt::NoContextMenu + + + + + + true + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + + + + + + + + + + true + + + + + + + + + + Extras + + + + + + Qualify as Avatar automatically at apply + + + + + + + + 0 + 0 + + + + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture + + + true + + + + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Apply changes + + + &Apply + + + + + + + + 0 + 0 + + + + Discard changes + + + &Cancel + + + + + + + + + + UiModLabel + QLabel +
UiModLabel.h
+
+
+ + +
diff --git a/SnapmaticPicture.cpp b/SnapmaticPicture.cpp new file mode 100644 index 0000000..a45ce2a --- /dev/null +++ b/SnapmaticPicture.cpp @@ -0,0 +1,1435 @@ +/***************************************************************************** +* gta5spv Grand Theft Auto Snapmatic Picture Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "SnapmaticPicture.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if QT_VERSION >= 0x050000 +#include +#else +#include "StandardPaths.h" +#endif + +// PARSER ALLOCATIONS +#define snapmaticHeaderLength 286 +#define snapmaticUsefulLength 260 +#define snapmaticFileMaxSize 1052488 +#define jpegHeaderLineDifStr 2 +#define jpegHeaderLineDifLim 8 +#define jpegPreHeaderLength 14 +#define jpegPicStreamLength 1048576 +#define jsonStreamLength 3076 +#define tideStreamLength 260 + +// EDITOR ALLOCATIONS +#define jpegStreamEditorBegin 300 +#define jsonStreamEditorBegin 1048884 +#define jsonStreamEditorLength 3072 +#define titlStreamEditorBegin 1051964 +#define titlStreamEditorLength 256 +#define titlStreamCharacterMax 39 + +// LIMIT ALLOCATIONS +#define jpegStreamLimitBegin 296 + +// IMAGES VALUES +#define snapmaticResolutionW 1920 +#define snapmaticResolutionH 1080 +#define snapmaticResolution QSize(snapmaticResolutionW, snapmaticResolutionH) + +SnapmaticPicture::SnapmaticPicture(const QString &fileName, QObject *parent) : QObject(parent), picFilePath(fileName) +{ + reset(); +} + +SnapmaticPicture::~SnapmaticPicture() +{ +} + +void SnapmaticPicture::reset() +{ + // INIT PIC + rawPicContent.clear(); + rawPicContent.squeeze(); + cachePicture = QImage(); + picExportFileName = QString(); + pictureHead = QString(); + pictureStr = QString(); + lastStep = QString(); + sortStr = QString(); + titlStr = QString(); + descStr = QString(); + + // INIT PIC INTS + jpegRawContentSizeE = 0; + jpegRawContentSize = 0; + + // INIT PIC BOOLS + isCustomFormat = false; + isModernFormat = false; + isFormatSwitch = false; + isLoadedInRAM = false; + lowRamMode = false; + picOk = false; + + // INIT JSON + jsonOk = false; + jsonStr = QString(); + + // SNAPMATIC DEFAULTS +#ifdef GTA5SYNC_NOASSIST + careSnapDefault = false; +#else + careSnapDefault = true; +#endif + + // SNAPMATIC PROPERTIES + localProperties = {}; +} + +bool SnapmaticPicture::preloadFile() +{ + QFile *picFile = new QFile(picFilePath); + picFileName = QFileInfo(picFilePath).fileName(); + + bool g5eMode = false; + isFormatSwitch = false; + + if (!picFile->open(QFile::ReadOnly)) + { + lastStep = "1;/1,OpenFile," % convertDrawStringForLog(picFilePath); + delete picFile; + return false; + } + if (picFilePath.right(4) != QLatin1String(".r5e")) + { + rawPicContent = picFile->read(snapmaticFileMaxSize + 1024); + picFile->close(); + delete picFile; + + if (rawPicContent.mid(1, 3) == QByteArray("R5E")) + { + isFormatSwitch = true; + } + else + { + isCustomFormat = false; + isModernFormat = false; + isLoadedInRAM = true; + } + } + else + { + g5eMode = true; + } + if (g5eMode || isFormatSwitch) + { + QByteArray g5eContent; + if (!isFormatSwitch) + { + g5eContent = picFile->read(snapmaticFileMaxSize + 1024); + picFile->close(); + delete picFile; + } + else + { + g5eContent = rawPicContent; + rawPicContent.clear(); + } + + // Set Custom Format + isCustomFormat = true; + + // Reading g5e Content + g5eContent.remove(0, 1); + if (g5eContent.left(3) == QByteArray("R5E")) + { + g5eContent.remove(0, 3); + if (g5eContent.left(2).toHex() == QByteArray("1000")) + { + g5eContent.remove(0, 2); + if (g5eContent.left(3) == QByteArray("LEN")) + { + g5eContent.remove(0, 3); + int fileNameLength = g5eContent.left(1).toHex().toInt(); + g5eContent.remove(0, 1); + if (g5eContent.left(3) == QByteArray("FIL")) + { + g5eContent.remove(0, 3); + picFileName = g5eContent.left(fileNameLength); + g5eContent.remove(0, fileNameLength); + if (g5eContent.left(3) == QByteArray("COM")) + { + g5eContent.remove(0, 3); + rawPicContent = qUncompress(g5eContent); + + // Setting is values + isModernFormat = false; + isLoadedInRAM = true; + } + else + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",4,G5E_FORMATERROR"; + return false; + } + } + else + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,G5E_FORMATERROR"; + return false; + } + } + else + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",2,G5E_FORMATERROR"; + return false; + } + } + else if (g5eContent.left(2).toHex() == QByteArray("3200")) + { + g5eContent.remove(0, 2); + if (g5eContent.left(2).toHex() == QByteArray("0001")) + { + g5eContent.remove(0, 2); + rawPicContent = qUncompress(g5eContent); + + // Setting is values + isModernFormat = true; + isLoadedInRAM = true; + } + else if (g5eContent.left(2).toHex() == QByteArray("0002")) + { + lastStep = "2;/4,ReadingFile," % convertDrawStringForLog(picFilePath) % ",2,G5E2_FORMATWRONG,G5E2_SGD"; + return false; + } + else + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",2,G5E2_MISSINGEXTENSION"; + return false; + } + } + else + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",1,G5E_NOTCOMPATIBLE"; + return false; + } + } + else + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",1,G5E_FORMATERROR"; + return false; + } + } + emit preloaded(); + return true; +} + +bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bool fastLoad, bool lowRamMode_) +{ + // Start opening file + // lastStep is like currentStep + + // Set boolean values + writeEnabled = writeEnabled_; + cacheEnabled = cacheEnabled_; + lowRamMode = lowRamMode_; + if (!writeEnabled) { lowRamMode = false; } // Low RAM Mode only works when writeEnabled is true + + QIODevice *picStream; + + if (!isLoadedInRAM) { preloadFile(); } + + picStream = new QBuffer(&rawPicContent); + picStream->open(QIODevice::ReadWrite); + + // Reading Snapmatic Header + if (!picStream->isReadable()) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",1,NOHEADER"; + picStream->close(); + delete picStream; + return false; + } + QByteArray snapmaticHeaderLine = picStream->read(snapmaticHeaderLength); + pictureHead = getSnapmaticHeaderString(snapmaticHeaderLine); + if (pictureHead == QLatin1String("MALFORMED")) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",1,MALFORMEDHEADER"; + picStream->close(); + delete picStream; + return false; + } + + // Reading JPEG Header Line + if (!picStream->isReadable()) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",2,NOHEADER"; + picStream->close(); + delete picStream; + return false; + } + QByteArray jpegHeaderLine = picStream->read(jpegPreHeaderLength); + + // Checking for JPEG + jpegHeaderLine.remove(0, jpegHeaderLineDifStr); + if (jpegHeaderLine.left(4) != QByteArray("JPEG")) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",2,NOJPEG"; + picStream->close(); + delete picStream; + return false; + } + + // Get JPEG Size Limit + jpegHeaderLine.remove(0, jpegHeaderLineDifLim); + QString jpegHeaderLineStr = QString::fromUtf8(jpegHeaderLine.toHex().remove(8 - 2, 2)); + QString hexadecimalStr = jpegHeaderLineStr.mid(4, 2) % jpegHeaderLineStr.mid(2, 2) % jpegHeaderLineStr.mid(0, 2); + jpegRawContentSize = hexadecimalStr.toInt(0, 16); + + // Read JPEG Stream + if (!picStream->isReadable()) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",2,NOPIC"; + picStream->close(); + delete picStream; + return false; + } + QByteArray jpegRawContent = picStream->read(jpegPicStreamLength); + if (cacheEnabled) picOk = cachePicture.loadFromData(jpegRawContent, "JPEG"); + if (!cacheEnabled) + { + QImage tempPicture; + picOk = tempPicture.loadFromData(jpegRawContent, "JPEG"); + } + else if (!fastLoad) + { + if (careSnapDefault) + { + QImage tempPicture = QImage(snapmaticResolution, QImage::Format_RGB888); + QPainter tempPainter(&tempPicture); + if (cachePicture.size() != snapmaticResolution) + { + tempPainter.drawImage(0, 0, cachePicture.scaled(snapmaticResolution, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + } + else + { + tempPainter.drawImage(0, 0, cachePicture); + } + tempPainter.end(); + cachePicture = tempPicture; + } + else + { + QImage tempPicture = QImage(cachePicture.size(), QImage::Format_RGB888); + QPainter tempPainter(&tempPicture); + tempPainter.drawImage(0, 0, cachePicture); + tempPainter.end(); + cachePicture = tempPicture; + } + } + + // Read JSON Stream + if (!picStream->isReadable()) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,NOJSON"; + picStream->close(); + delete picStream; + return false; + } + else if (picStream->read(4) != QByteArray("JSON")) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,CTJSON"; + picStream->close(); + delete picStream; + return false; + } + QByteArray jsonRawContent = picStream->read(jsonStreamLength); + jsonStr = getSnapmaticJSONString(jsonRawContent); + parseJsonContent(); // JSON parsing is own function + + if (!picStream->isReadable()) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",4,NOTITL"; + picStream->close(); + delete picStream; + return false; + } + else if (picStream->read(4) != QByteArray("TITL")) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",4,CTTITL"; + picStream->close(); + delete picStream; + return false; + } + QByteArray titlRawContent = picStream->read(tideStreamLength); + titlStr = getSnapmaticTIDEString(titlRawContent); + + if (!picStream->isReadable()) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",5,NODESC"; + picStream->close(); + delete picStream; + return picOk; + } + else if (picStream->read(4) != QByteArray("DESC")) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",5,CTDESC"; + picStream->close(); + delete picStream; + return false; + } + QByteArray descRawContent = picStream->read(tideStreamLength); + descStr = getSnapmaticTIDEString(descRawContent); + + updateStrings(); + + picStream->close(); + delete picStream; + + if (!writeEnabled) { rawPicContent.clear(); } + else if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); } + + emit loaded(); + return picOk; +} + +QString SnapmaticPicture::getSnapmaticHeaderString(const QByteArray &snapmaticHeader) +{ + QList snapmaticBytesList = snapmaticHeader.left(snapmaticUsefulLength).split('\x04'); + if (snapmaticBytesList.length() < 2) { return QLatin1String("MALFORMED"); } + QByteArray snapmaticBytes = snapmaticBytesList.at(1); + return parseTitleString(snapmaticBytes, snapmaticBytes.length()); +} + +QString SnapmaticPicture::getSnapmaticJSONString(const QByteArray &jsonBytes) +{ + QByteArray jsonUsefulBytes = jsonBytes; + jsonUsefulBytes.replace('\x00', QString()); + jsonUsefulBytes.replace('\x0c', QString()); + return QString::fromUtf8(jsonUsefulBytes.trimmed()); +} + +QString SnapmaticPicture::getSnapmaticTIDEString(const QByteArray &tideBytes) +{ + QByteArray tideUsefulBytes = tideBytes; + tideUsefulBytes.remove(0,4); + QList tideUsefulBytesList = tideUsefulBytes.split('\x00'); + return QString::fromUtf8(tideUsefulBytesList.at(0).trimmed()); +} + +void SnapmaticPicture::updateStrings() +{ + QString cmpPicTitl = titlStr; + cmpPicTitl.replace('\"', "''"); + cmpPicTitl.replace(' ', '_'); + cmpPicTitl.replace(':', '-'); + cmpPicTitl.remove('\\'); + cmpPicTitl.remove('{'); + cmpPicTitl.remove('}'); + cmpPicTitl.remove('/'); + cmpPicTitl.remove('<'); + cmpPicTitl.remove('>'); + cmpPicTitl.remove('*'); + cmpPicTitl.remove('?'); + cmpPicTitl.remove('.'); + pictureStr = tr("PHOTO - %1").arg(localProperties.createdDateTime.toString("MM/dd/yy HH:mm:ss")); + sortStr = localProperties.createdDateTime.toString("yyMMddHHmmss") % QString::number(localProperties.uid); + QString exportStr = localProperties.createdDateTime.toString("yyyyMMdd") % "-" % QString::number(localProperties.uid); + if (isModernFormat) { picFileName = "PRDR5" % QString::number(localProperties.uid); } + picExportFileName = exportStr % "_" % cmpPicTitl; +} + +bool SnapmaticPicture::readingPictureFromFile(const QString &fileName, bool writeEnabled_, bool cacheEnabled_, bool fastLoad, bool lowRamMode_) +{ + if (!fileName.isEmpty()) + { + picFilePath = fileName; + return readingPicture(writeEnabled_, cacheEnabled_, fastLoad, lowRamMode_); + } + else + { + return false; + } +} + +bool SnapmaticPicture::setImage(const QImage &picture) +{ + if (writeEnabled) + { + QImage altPicture; + bool useAltPicture = false; + if (picture.size() != snapmaticResolution && careSnapDefault) + { + altPicture = picture.scaled(snapmaticResolution, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + useAltPicture = true; + } + QByteArray picByteArray; + int comLvl = 100; + bool saveSuccess = false; + while (comLvl != 0 && !saveSuccess) + { + QByteArray picByteArrayT; + QBuffer picStreamT(&picByteArrayT); + picStreamT.open(QIODevice::WriteOnly); + if (useAltPicture) { saveSuccess = altPicture.save(&picStreamT, "JPEG", comLvl); } + else { saveSuccess = picture.save(&picStreamT, "JPEG", comLvl); } + picStreamT.close(); + if (saveSuccess) + { + if (picByteArrayT.length() > jpegPicStreamLength) + { + comLvl--; + saveSuccess = false; + } + else + { + picByteArray = picByteArrayT; + } + } + } + if (saveSuccess) { return setPictureStream(picByteArray); } + } + return false; +} + +bool SnapmaticPicture::setPictureStream(const QByteArray &streamArray) // clean method +{ + if (writeEnabled) + { + QByteArray picByteArray = streamArray; + if (lowRamMode) { rawPicContent = qUncompress(rawPicContent); } + QBuffer snapmaticStream(&rawPicContent); + snapmaticStream.open(QIODevice::ReadWrite); + if (!snapmaticStream.seek(jpegStreamEditorBegin)) return false; + if (picByteArray.length() > jpegPicStreamLength) return false; + while (picByteArray.length() != jpegPicStreamLength) + { + picByteArray += '\x00'; + } + int result = snapmaticStream.write(picByteArray); + QString hexadecimalStr; + hexadecimalStr.setNum(streamArray.length(), 16); + while (hexadecimalStr.length() != 6) + { + hexadecimalStr.prepend('0'); + } + hexadecimalStr = hexadecimalStr.mid(4, 2) % hexadecimalStr.mid(2, 2) % hexadecimalStr.mid(0, 2); + bool updatedRawContentSize = false; + if (snapmaticStream.seek(jpegStreamLimitBegin)) + { + snapmaticStream.write(QByteArray::fromHex(hexadecimalStr.toUtf8())); + updatedRawContentSize = true; + } + snapmaticStream.close(); + SnapmaticProperties properties = getSnapmaticProperties(); + properties.size = streamArray.length(); + if (!setSnapmaticProperties(properties)) { + qDebug() << "Failed to refresh Snapmatic properties!"; + } + if (result != 0) + { + if (updatedRawContentSize) { jpegRawContentSize = streamArray.length(); } + if (cacheEnabled) + { + QImage replacedPicture; + replacedPicture.loadFromData(picByteArray); + cachePicture = replacedPicture; + } + if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); } + return true; + } + if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); } + return false; + } + return false; +} + +bool SnapmaticPicture::setPictureTitl(const QString &newTitle_) +{ + if (writeEnabled) + { + QString newTitle = newTitle_; + if (lowRamMode) { rawPicContent = qUncompress(rawPicContent); } + QBuffer snapmaticStream(&rawPicContent); + snapmaticStream.open(QIODevice::ReadWrite); + if (!snapmaticStream.seek(titlStreamEditorBegin)) return false; + if (newTitle.length() > titlStreamCharacterMax) + { + newTitle = newTitle.left(titlStreamCharacterMax); + } + QByteArray newTitleArray = newTitle.toUtf8(); + while (newTitleArray.length() != titlStreamEditorLength) + { + newTitleArray += '\x00'; + } + int result = snapmaticStream.write(newTitleArray); + snapmaticStream.close(); + if (result != 0) + { + titlStr = newTitle; + if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); } + return true; + } + if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); } + return false; + } + return false; +} + +QString SnapmaticPicture::getExportPictureFileName() +{ + return picExportFileName; +} + +QString SnapmaticPicture::getOriginalPictureFileName() +{ + QString newPicFileName = picFileName; + if (picFileName.right(4) == ".bak") + { + newPicFileName = QString(picFileName).remove(picFileName.length() - 4, 4); + } + if (picFileName.right(7) == ".hidden") + { + newPicFileName = QString(picFileName).remove(picFileName.length() - 7, 7); + } + return newPicFileName; +} + +QString SnapmaticPicture::getOriginalPictureFilePath() +{ + QString newPicFilePath = picFilePath; + if (picFilePath.right(4) == ".bak") + { + newPicFilePath = QString(picFilePath).remove(picFilePath.length() - 4, 4); + } + if (picFilePath.right(7) == ".hidden") + { + newPicFilePath = QString(picFilePath).remove(picFilePath.length() - 7, 7); + } + return newPicFilePath; +} + +QString SnapmaticPicture::getPictureFileName() +{ + return picFileName; +} + +QString SnapmaticPicture::getPictureFilePath() +{ + return picFilePath; +} + +QString SnapmaticPicture::getPictureSortStr() +{ + return sortStr; +} + +QString SnapmaticPicture::getPictureDesc() +{ + return descStr; +} + +QString SnapmaticPicture::getPictureTitl() +{ + return titlStr; +} + +QString SnapmaticPicture::getPictureHead() +{ + return pictureHead; +} + +QString SnapmaticPicture::getPictureStr() +{ + return pictureStr; +} + +QString SnapmaticPicture::getLastStep(bool readable) +{ + if (readable) + { + QStringList lastStepList = lastStep.split(";/"); + if (lastStepList.length() < 2) { return lastStep; } + bool intOk; + //int stepNumber = lastStepList.at(0).toInt(&intOk); + //if (!intOk) { return lastStep; } + QStringList descStepList = lastStepList.at(1).split(","); + if (descStepList.length() < 1) { return lastStep; } + int argsCount = descStepList.at(0).toInt(&intOk); + if (!intOk) { return lastStep; } + if (argsCount == 1) + { + QString currentAction = descStepList.at(1); + QString actionFile = descStepList.at(2); + if (currentAction == "OpenFile") + { + return tr("open file %1").arg(actionFile); + } + } + else if (argsCount == 3 || argsCount == 4) + { + QString currentAction = descStepList.at(1); + QString actionFile = descStepList.at(2); + //QString actionStep = descStepList.at(3); + QString actionError = descStepList.at(4); + QString actionError2; + if (argsCount == 4) { actionError2 = descStepList.at(5); } + if (currentAction == "ReadingFile") + { + QString readableError = actionError; + if (actionError == "NOHEADER") + { + readableError = tr("header not exists"); + } + else if (actionError == "MALFORMEDHEADER") + { + readableError = tr("header is malformed"); + } + else if (actionError == "NOJPEG" || actionError == "NOPIC") + { + readableError = tr("picture not exists (%1)").arg(actionError); + } + else if (actionError == "NOJSON" || actionError == "CTJSON") + { + readableError = tr("JSON not exists (%1)").arg(actionError); + } + else if (actionError == "NOTITL" || actionError == "CTTITL") + { + readableError = tr("title not exists (%1)").arg(actionError); + } + else if (actionError == "NODESC" || actionError == "CTDESC") + { + readableError = tr("description not exists (%1)").arg(actionError); + } + else if (actionError == "JSONINCOMPLETE" && actionError2 == "JSONERROR") + { + readableError = tr("JSON is incomplete and malformed"); + } + else if (actionError == "JSONINCOMPLETE") + { + readableError = tr("JSON is incomplete"); + } + else if (actionError == "JSONERROR") + { + readableError = tr("JSON is malformed"); + } + return tr("reading file %1 because of %2", "Example for %2: JSON is malformed error").arg(actionFile, readableError); + } + else + { + return lastStep; + } + } + else + { + return lastStep; + } + } + return lastStep; + +} + +QImage SnapmaticPicture::getImage(bool fastLoad) +{ + if (cacheEnabled) + { + return cachePicture; + } + else if (writeEnabled) + { + bool fastLoadU = fastLoad; + if (!careSnapDefault) { fastLoadU = true; } + + bool returnOk = false; + QImage tempPicture; + QImage returnPicture; + if (!fastLoadU) + { + returnPicture = QImage(snapmaticResolution, QImage::Format_RGB888); + } + + if (lowRamMode) { rawPicContent = qUncompress(rawPicContent); } + QBuffer snapmaticStream(&rawPicContent); + snapmaticStream.open(QIODevice::ReadOnly); + if (snapmaticStream.seek(jpegStreamEditorBegin)) + { + QByteArray jpegRawContent = snapmaticStream.read(jpegPicStreamLength); + returnOk = tempPicture.loadFromData(jpegRawContent, "JPEG"); + } + snapmaticStream.close(); + if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); } + + if (returnOk) + { + if (!fastLoadU) + { + QPainter returnPainter(&returnPicture); + if (tempPicture.size() != snapmaticResolution) + { + returnPainter.drawImage(0, 0, tempPicture.scaled(snapmaticResolution, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + } + else + { + returnPainter.drawImage(0, 0, tempPicture); + } + returnPainter.end(); + return returnPicture; + } + else + { + return tempPicture; + } + } + } + else + { + bool fastLoadU = fastLoad; + if (!careSnapDefault) { fastLoadU = true; } + + bool returnOk = false; + QImage tempPicture; + QImage returnPicture; + if (!fastLoadU) + { + returnPicture = QImage(snapmaticResolution, QImage::Format_RGB888); + } + QIODevice *picStream; + + QFile *picFile = new QFile(picFilePath); + if (!picFile->open(QFile::ReadOnly)) + { + lastStep = "1;/1,OpenFile," % convertDrawStringForLog(picFilePath); + delete picFile; + return QImage(); + } + rawPicContent = picFile->read(snapmaticFileMaxSize); + picFile->close(); + delete picFile; + + picStream = new QBuffer(&rawPicContent); + picStream->open(QIODevice::ReadWrite); + if (picStream->seek(jpegStreamEditorBegin)) + { + QByteArray jpegRawContent = picStream->read(jpegPicStreamLength); + returnOk = tempPicture.loadFromData(jpegRawContent, "JPEG"); + } + picStream->close(); + delete picStream; + + rawPicContent.clear(); + rawPicContent.squeeze(); + + if (returnOk) + { + if (!fastLoadU) + { + QPainter returnPainter(&returnPicture); + if (tempPicture.size() != snapmaticResolution) + { + returnPainter.drawImage(0, 0, tempPicture.scaled(snapmaticResolution, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + } + else + { + returnPainter.drawImage(0, 0, tempPicture); + } + returnPainter.end(); + return returnPicture; + } + else + { + return tempPicture; + } + } + } + return QImage(); +} + +QByteArray SnapmaticPicture::getPictureStream() // Incomplete because it just work in writeEnabled mode +{ + QByteArray jpegRawContent; + if (writeEnabled) + { + QBuffer *picStream = new QBuffer(&rawPicContent); + picStream->open(QIODevice::ReadWrite); + if (picStream->seek(jpegStreamEditorBegin)) + { + jpegRawContent = picStream->read(jpegPicStreamLength); + } + delete picStream; + } + return jpegRawContent; +} + +int SnapmaticPicture::getContentMaxLength() +{ + return jpegRawContentSize; +} + +bool SnapmaticPicture::isPicOk() +{ + return picOk; +} + +void SnapmaticPicture::clearCache() +{ + cacheEnabled = false; + cachePicture = QImage(); +} + +void SnapmaticPicture::emitUpdate() +{ + emit updated(); +} + +void SnapmaticPicture::emitCustomSignal(const QString &signal) +{ + emit customSignal(signal); +} + +// JSON part + +bool SnapmaticPicture::isJsonOk() +{ + return jsonOk; +} + +QString SnapmaticPicture::getJsonStr() +{ + return jsonStr; +} + +SnapmaticProperties SnapmaticPicture::getSnapmaticProperties() +{ + return localProperties; +} + +void SnapmaticPicture::parseJsonContent() +{ + QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonStr.toUtf8()); + QJsonObject jsonObject = jsonDocument.object(); + QVariantMap jsonMap = jsonObject.toVariantMap(); + + bool jsonIncomplete = false; + bool jsonError = false; + if (jsonObject.contains("loc")) + { + if (jsonObject["loc"].isObject()) + { + QJsonObject locObject = jsonObject["loc"].toObject(); + if (locObject.contains("x")) + { + if (locObject["x"].isDouble()) { localProperties.location.x = locObject["x"].toDouble(); } + else { jsonError = true; } + } + else { jsonIncomplete = true; } + if (locObject.contains("y")) + { + if (locObject["y"].isDouble()) { localProperties.location.y = locObject["y"].toDouble(); } + else { jsonError = true; } + } + else { jsonIncomplete = true; } + if (locObject.contains("z")) + { + if (locObject["z"].isDouble()) { localProperties.location.z = locObject["z"].toDouble(); } + else { jsonError = true; } + } + else { jsonIncomplete = true; } + } + else { jsonError = true; } + } + else { jsonIncomplete = true; } + if (jsonObject.contains("uid")) + { + bool uidOk; + localProperties.uid = jsonMap["uid"].toInt(&uidOk); + if (!uidOk) { jsonError = true; } + } + else { jsonIncomplete = true; } + if (jsonObject.contains("size")) + { + bool sizeOk; + localProperties.size = jsonMap["size"].toInt(&sizeOk); + if (!sizeOk) { jsonError = true; } + } + else { jsonIncomplete = true; } + if (jsonObject.contains("crewid")) + { + bool crewIDOk; + localProperties.crewID = jsonMap["crewid"].toInt(&crewIDOk); + if (!crewIDOk) { jsonError = true; } + } + else { jsonIncomplete = true; } + if (jsonObject.contains("creat")) + { + bool timestampOk; + QDateTime createdTimestamp; + localProperties.createdTimestamp = jsonMap["creat"].toUInt(×tampOk); + createdTimestamp.setTime_t(localProperties.createdTimestamp); + localProperties.createdDateTime = createdTimestamp; + if (!timestampOk) { jsonError = true; } + } + else { jsonIncomplete = true; } + if (jsonObject.contains("plyrs")) + { + if (jsonObject["plyrs"].isArray()) { localProperties.playersList = jsonMap["plyrs"].toStringList(); } + else { jsonError = true; } + } + // else { jsonIncomplete = true; } // 2016 Snapmatic pictures left out plyrs when none are captured, so don't force exists on that one + if (jsonObject.contains("meme")) + { + if (jsonObject["meme"].isBool()) { localProperties.isMeme = jsonObject["meme"].toBool(); } + else { jsonError = true; } + } + else { jsonIncomplete = true; } + if (jsonObject.contains("mug")) + { + if (jsonObject["mug"].isBool()) { localProperties.isMug = jsonObject["mug"].toBool(); } + else { jsonError = true; } + } + else { jsonIncomplete = true; } + if (jsonObject.contains("slf")) + { + if (jsonObject["slf"].isBool()) { localProperties.isSelfie = jsonObject["slf"].toBool(); } + else { jsonError = true; } + } + else { jsonIncomplete = true; } + if (jsonObject.contains("drctr")) + { + if (jsonObject["drctr"].isBool()) { localProperties.isFromDirector = jsonObject["drctr"].toBool(); } + else { jsonError = true; } + } + else { jsonIncomplete = true; } + if (jsonObject.contains("rsedtr")) + { + if (jsonObject["rsedtr"].isBool()) { localProperties.isFromRSEditor = jsonObject["rsedtr"].toBool(); } + else { jsonError = true; } + } + // else { jsonIncomplete = true; } // Game release Snapmatic pictures prior May 2015 left out rsedtr, so don't force exists on that one + + if (!jsonIncomplete && !jsonError) + { + jsonOk = true; + } + else + { + if (jsonIncomplete && jsonError) + { + lastStep = "2;/4,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,JSONINCOMPLETE,JSONERROR"; + } + else if (jsonIncomplete) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,JSONINCOMPLETE"; + } + else if (jsonError) + { + lastStep = "2;/3,ReadingFile," % convertDrawStringForLog(picFilePath) % ",3,JSONERROR"; + } + jsonOk = false; + } +} + +bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties properties) +{ + QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonStr.toUtf8()); + QJsonObject jsonObject = jsonDocument.object(); + + QJsonObject locObject; + locObject["x"] = properties.location.x; + locObject["y"] = properties.location.y; + locObject["z"] = properties.location.z; + + jsonObject["loc"] = locObject; + jsonObject["uid"] = properties.uid; + jsonObject["size"] = properties.size; + jsonObject["crewid"] = properties.crewID; + jsonObject["street"] = properties.streetID; + jsonObject["creat"] = QJsonValue::fromVariant(properties.createdTimestamp); + jsonObject["plyrs"] = QJsonValue::fromVariant(properties.playersList); + jsonObject["meme"] = properties.isMeme; + jsonObject["mug"] = properties.isMug; + jsonObject["slf"] = properties.isSelfie; + jsonObject["drctr"] = properties.isFromDirector; + jsonObject["rsedtr"] = properties.isFromRSEditor; + + jsonDocument.setObject(jsonObject); + + if (setJsonStr(QString::fromUtf8(jsonDocument.toJson(QJsonDocument::Compact)))) + { + localProperties = properties; + return true; + } + return false; +} + +bool SnapmaticPicture::setJsonStr(const QString &newJsonStr, bool updateProperties) +{ + if (newJsonStr.length() < jsonStreamEditorLength) + { + if (writeEnabled) + { + QByteArray jsonByteArray = newJsonStr.toUtf8(); + while (jsonByteArray.length() != jsonStreamEditorLength) + { + jsonByteArray += '\x00'; + } + if (lowRamMode) { rawPicContent = qUncompress(rawPicContent); } + QBuffer snapmaticStream(&rawPicContent); + snapmaticStream.open(QIODevice::ReadWrite); + if (!snapmaticStream.seek(jsonStreamEditorBegin)) + { + snapmaticStream.close(); + return false; + } + int result = snapmaticStream.write(jsonByteArray); + snapmaticStream.close(); + if (result != 0) + { + jsonStr = newJsonStr; + if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); } + if (updateProperties) { parseJsonContent(); } + return true; + } + else + { + if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); } + return false; + } + } + else + { + return false; + } + } + return false; +} + +// FILE MANAGEMENT + +bool SnapmaticPicture::exportPicture(const QString &fileName, SnapmaticFormat format_) +{ + // Keep current format when Auto_Format is used + SnapmaticFormat format = format_; + if (format_ == SnapmaticFormat::Auto_Format) + { + if (isCustomFormat) + { + format = SnapmaticFormat::G5E_Format; + } + else + { + format = SnapmaticFormat::PGTA_Format; + } + } + + bool saveSuccess = false; + bool writeFailure = false; +#if QT_VERSION >= 0x050000 + QSaveFile *picFile = new QSaveFile(fileName); +#else + QFile *picFile = new QFile(StandardPaths::tempLocation() % "/" % QFileInfo(fileName).fileName() % ".tmp"); +#endif + if (picFile->open(QIODevice::WriteOnly)) + { + if (format == SnapmaticFormat::G5E_Format) + { + // Modern compressed export (v2) + QByteArray g5eHeader; + g5eHeader.reserve(10); + g5eHeader += '\x00'; // First Null Byte + g5eHeader += QByteArray("R5E"); // GTA 5 Export + g5eHeader += '\x32'; g5eHeader += '\x00'; // 2 byte GTA 5 Export Version + g5eHeader += '\x00'; g5eHeader += '\x01'; // 2 byte GTA 5 Export Type + if (picFile->write(g5eHeader) == -1) { writeFailure = true; } + if (!lowRamMode) + { + if (picFile->write(qCompress(rawPicContent, 9)) == -1) { writeFailure = true; } // Compressed Snapmatic + } + else + { + if (picFile->write(rawPicContent) == -1) { writeFailure = true; } + } +#if QT_VERSION >= 0x050000 + if (writeFailure) { picFile->cancelWriting(); } + else { saveSuccess = picFile->commit(); } +#else + if (!writeFailure) { saveSuccess = true; } + picFile->close(); +#endif + delete picFile; + } + else if (format == SnapmaticFormat::JPEG_Format) + { + // 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); + } + if (picFile->write(jpegRawContent) == -1) { writeFailure = true; } +#if QT_VERSION >= 0x050000 + if (writeFailure) { picFile->cancelWriting(); } + else { saveSuccess = picFile->commit(); } +#else + if (!writeFailure) { saveSuccess = true; } + picFile->close(); +#endif + } + delete picFile; + } + else + { + // Classic straight export + if (!lowRamMode) + { + if (picFile->write(rawPicContent) == -1) { writeFailure = true; } + } + else + { + if (picFile->write(qUncompress(rawPicContent)) == -1) { writeFailure = true; } + } +#if QT_VERSION >= 0x050000 + if (writeFailure) { picFile->cancelWriting(); } + else { saveSuccess = picFile->commit(); } +#else + if (!writeFailure) { saveSuccess = true; } + picFile->close(); +#endif + delete picFile; + } +#if QT_VERSION <= 0x050000 + if (saveSuccess) + { + bool tempBakCreated = false; + if (QFile::exists(fileName)) + { + if (!QFile::rename(fileName, fileName % ".tmp")) + { + QFile::remove(StandardPaths::tempLocation() % "/" % QFileInfo(fileName).fileName() % ".tmp"); + return false; + } + tempBakCreated = true; + } + if (!QFile::rename(StandardPaths::tempLocation() % "/" % QFileInfo(fileName).fileName() % ".tmp", fileName)) + { + QFile::remove(StandardPaths::tempLocation() % "/" % QFileInfo(fileName).fileName() % ".tmp"); + if (tempBakCreated) { QFile::rename(fileName % ".tmp", fileName); } + return false; + } + if (tempBakCreated) { QFile::remove(fileName % ".tmp"); } + } +#endif + return saveSuccess; + } + else + { + delete picFile; + return saveSuccess; + } +} + +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() +{ + if (picFilePath.right(7) == QLatin1String(".hidden")) + { + return true; + } + return false; +} + +bool SnapmaticPicture::isVisible() +{ + if (picFilePath.right(7) == QLatin1String(".hidden")) + { + return false; + } + return true; +} + +bool SnapmaticPicture::setPictureHidden() +{ + if (isCustomFormat) + { + return false; + } + if (!isHidden()) + { + QString newPicFilePath = QString(picFilePath % ".hidden"); + if (QFile::rename(picFilePath, newPicFilePath)) + { + picFilePath = newPicFilePath; + return true; + } + return false; + } + return true; +} + +bool SnapmaticPicture::setPictureVisible() +{ + if (isCustomFormat) + { + return false; + } + if (isHidden()) + { + QString newPicFilePath = QString(picFilePath).remove(picFilePath.length() - 7, 7); + if (QFile::rename(picFilePath, newPicFilePath)) + { + picFilePath = newPicFilePath; + return true; + } + return false; + } + return true; +} + +// PREDEFINED PROPERTIES + +QSize SnapmaticPicture::getSnapmaticResolution() +{ + return snapmaticResolution; +} + +// SNAPMATIC DEFAULTS + +bool SnapmaticPicture::isSnapmaticDefaultsEnforced() +{ + return careSnapDefault; +} + +void SnapmaticPicture::setSnapmaticDefaultsEnforced(bool enforced) +{ + careSnapDefault = enforced; +} + +// SNAPMATIC FORMAT + +SnapmaticFormat SnapmaticPicture::getSnapmaticFormat() +{ + if (isCustomFormat) + { + return SnapmaticFormat::G5E_Format; + } + return SnapmaticFormat::PGTA_Format; +} + +void SnapmaticPicture::setSnapmaticFormat(SnapmaticFormat format) +{ + if (format == SnapmaticFormat::G5E_Format) + { + isCustomFormat = true; + return; + } + else if (format == SnapmaticFormat::PGTA_Format) + { + isCustomFormat = false; + return; + } + qDebug() << "setSnapmaticFormat: Invalid SnapmaticFormat defined, valid SnapmaticFormats are G5E_Format and PGTA_Format"; +} + +bool SnapmaticPicture::isFormatSwitched() +{ + return isFormatSwitch; +} + +// VERIFY CONTENT + +bool SnapmaticPicture::verifyTitle(const QString &title) +{ + // VERIFY TITLE FOR BE A VALID SNAPMATIC TITLE + if (title.length() <= titlStreamCharacterMax && title.length() > 0) + { + for (const QChar &titleChar : title) + { + if (!verifyTitleChar(titleChar)) return false; + } + return true; + } + return false; +} + +bool SnapmaticPicture::verifyTitleChar(const QChar &titleChar) +{ + // VERIFY CHAR FOR BE A VALID SNAPMATIC CHARACTER + if (titleChar.isLetterOrNumber() || titleChar.isPrint()) + { + if (titleChar == '<' || titleChar == '>' || titleChar == '\\') return false; + return true; + } + return false; +} + +// STRING OPERATIONS + +QString SnapmaticPicture::parseTitleString(const QByteArray &commitBytes, int maxLength) +{ + Q_UNUSED(maxLength) + QString retStr = QTextCodec::codecForName("UTF-16LE")->toUnicode(commitBytes).trimmed(); + retStr.remove(QChar('\x00')); + return retStr; +} + +QString SnapmaticPicture::convertDrawStringForLog(const QString &inputStr) +{ + QString outputStr = inputStr; + return outputStr.replace("&","&u;").replace(",", "&c;"); +} + +QString SnapmaticPicture::convertLogStringForDraw(const QString &inputStr) +{ + QString outputStr = inputStr; + return outputStr.replace("&c;",",").replace("&u;", "&"); +} diff --git a/SnapmaticPicture.h b/SnapmaticPicture.h new file mode 100644 index 0000000..decf070 --- /dev/null +++ b/SnapmaticPicture.h @@ -0,0 +1,189 @@ +/***************************************************************************** +* gta5spv Grand Theft Auto Snapmatic Picture Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef SNAPMATICPICTURE_H +#define SNAPMATICPICTURE_H + +#include +#include +#include +#include +#include +#include + +enum class SnapmaticFormat : int { Auto_Format = 0, PGTA_Format = 1, JPEG_Format = 2, G5E_Format = 3 }; + +struct SnapmaticProperties { + struct SnapmaticLocation { + double x; + double y; + double z; + }; + int uid; + int size; + int crewID; + int streetID; + QStringList playersList; + uint createdTimestamp; + QDateTime createdDateTime; + bool isMeme; + bool isMug; + bool isSelfie; + bool isFromDirector; + bool isFromRSEditor; + SnapmaticLocation location; +}; + +class SnapmaticPicture : public QObject +{ + Q_OBJECT +public: + explicit SnapmaticPicture(const QString &fileName = "", QObject *parent = 0); + ~SnapmaticPicture(); + void reset(); + bool preloadFile(); + bool readingPictureFromFile(const QString &fileName, bool writeEnabled = true, bool cacheEnabled = false, bool fastLoad = true, bool lowRamMode = false); + bool readingPicture(bool writeEnabled = true, bool cacheEnabled = false, bool fastLoad = true, bool lowRamMode = false); + bool isPicOk(); // Please use isPictureOk instead + void clearCache(); + QImage getImage(bool fastLoad = false); + QByteArray getPictureStream(); + QString getLastStep(bool readable = true); + QString getPictureStr(); + QString getPictureHead(); + QString getPictureTitl(); + QString getPictureDesc(); + QString getPictureSortStr(); + QString getPictureFileName(); + QString getPictureFilePath(); + QString getExportPictureFileName(); + QString getOriginalPictureFileName(); + QString getOriginalPictureFilePath(); + int getContentMaxLength(); + bool setImage(const QImage &picture); + bool setPictureTitl(const QString &newTitle); // Please use setPictureTitle instead + bool setPictureStream(const QByteArray &streamArray); + void updateStrings(); + void emitUpdate(); + void emitCustomSignal(const QString &signal); + + // FILE MANAGEMENT + bool exportPicture(const QString &fileName, SnapmaticFormat format = SnapmaticFormat::Auto_Format); + void setPicFileName(const QString &picFileName); // Please use setPictureFileName instead + void setPicFilePath(const QString &picFilePath); // Please use setPictureFilePath instead + bool deletePicFile(); // Please use deletePictureFile instead + + // JSON + bool isJsonOk(); + QString getJsonStr(); // Please use getPictureJson instead + SnapmaticProperties getSnapmaticProperties(); + bool setSnapmaticProperties(SnapmaticProperties properties); + bool setJsonStr(const QString &jsonStr, bool updateProperties = false); // Please use setPictureJson instead + + // VISIBILITY + bool isHidden(); // Please use isPictureHidden instead + bool isVisible(); // Please use isPictureVisible instead + bool setPictureHidden(); + bool setPictureVisible(); + + // ALTERNATIVES (MORE DEVELOPER FRIENDLY FUNCTION CALLS) + QString getJsonString() { return getJsonStr(); } // Please use getPictureJson instead + QString getPictureJson() { return getJsonStr(); } + QString getPictureTitle() { return getPictureTitl(); } + QString getPictureString() { return getPictureStr(); } + QString getPictureDescription() { return getPictureDesc(); } + bool setJsonString(const QString &jsonString, bool updateProperties = false) { return setJsonStr(jsonString, updateProperties); } // Please use setPictureJson instead + bool setPictureJson(const QString &json, bool updateProperties = false) { return setJsonStr(json, updateProperties); } + bool setPictureTitle(const QString &title) { return setPictureTitl(title); } + void setPictureFileName(const QString &fileName) { return setPicFileName(fileName); } + void setPictureFilePath(const QString &filePath) { return setPicFilePath(filePath); } + bool deletePictureFile() { return deletePicFile(); } + bool isPictureOk() { return isPicOk(); } + bool isPictureHidden() { return isHidden(); } + bool isPictureVisible() { return isVisible(); } + bool setHidden() { return setPictureHidden(); } // Please use setPictureHidden instead + bool setVisible() { return setPictureVisible(); } // Please use setPictureVisible instead + + // PREDEFINED PROPERTIES + QSize getSnapmaticResolution(); + + // SNAPMATIC DEFAULTS + bool isSnapmaticDefaultsEnforced(); + void setSnapmaticDefaultsEnforced(bool enforced); + + // SNAPMATIC FORMAT + SnapmaticFormat getSnapmaticFormat(); + void setSnapmaticFormat(SnapmaticFormat format); + bool isFormatSwitched(); + + // VERIFY CONTENT + static bool verifyTitle(const QString &title); + + // STRING OPERATIONS + static QString parseTitleString(const QByteArray &commitBytes, int maxLength); + static QString convertDrawStringForLog(const QString &inputStr); + static QString convertLogStringForDraw(const QString &inputStr); + +private: + QString getSnapmaticHeaderString(const QByteArray &snapmaticHeader); + QString getSnapmaticJSONString(const QByteArray &jsonBytes); + QString getSnapmaticTIDEString(const QByteArray &tideBytes); + QImage cachePicture; + QString picExportFileName; + QString picFileName; + QString picFilePath; + QString pictureHead; + QString pictureStr; + QString lastStep; + QString sortStr; + QString titlStr; + QString descStr; + bool picOk; + bool lowRamMode; + bool writeEnabled; + bool cacheEnabled; + bool isLoadedInRAM; + bool isCustomFormat; + bool isFormatSwitch; + bool isModernFormat; + bool careSnapDefault; + int jpegRawContentSize; + int jpegRawContentSizeE; + + // PICTURE STREAM + QByteArray rawPicContent; + + // JSON + void parseJsonContent(); + bool jsonOk; + QString jsonStr; + SnapmaticProperties localProperties; + + // VERIFY CONTENT + static bool verifyTitleChar(const QChar &titleChar); + +signals: + void customSignal(QString signal); + void preloaded(); + void updated(); + void loaded(); + +public slots: +}; + +#endif // SNAPMATICPICTURE_H diff --git a/SnapmaticWidget.cpp b/SnapmaticWidget.cpp new file mode 100644 index 0000000..a8fdc80 --- /dev/null +++ b/SnapmaticWidget.cpp @@ -0,0 +1,499 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2019 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "SnapmaticWidget.h" +#include "ui_SnapmaticWidget.h" +#include "ImageEditorDialog.h" +#include "MapLocationDialog.h" +#include "JsonEditorDialog.h" +#include "SnapmaticPicture.h" +#include "SnapmaticEditor.h" +#include "DatabaseThread.h" +#include "PictureDialog.h" +#include "PictureExport.h" +#include "StringParser.h" +#include "ImportDialog.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include + +#ifdef GTA5SYNC_TELEMETRY +#include "TelemetryClass.h" +#include +#include +#endif + +SnapmaticWidget::SnapmaticWidget(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QString profileName, QWidget *parent) : + ProfileWidget(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB), profileName(profileName), + ui(new Ui::SnapmaticWidget) +{ + ui->setupUi(this); + ui->cmdView->setVisible(false); + ui->cmdCopy->setVisible(false); + ui->cmdExport->setVisible(false); + ui->cmdDelete->setVisible(false); + ui->cbSelected->setVisible(false); + + QPalette palette; + palette.setCurrentColorGroup(QPalette::Disabled); + highlightHiddenColor = palette.text().color(); + + ui->SnapmaticFrame->setMouseTracking(true); + ui->labPicture->setMouseTracking(true); + ui->labPicStr->setMouseTracking(true); + ui->cbSelected->setMouseTracking(true); + smpic = nullptr; +} + +SnapmaticWidget::~SnapmaticWidget() +{ + delete ui; +} + +void SnapmaticWidget::setSnapmaticPicture(SnapmaticPicture *picture) +{ + smpic = picture; + QObject::connect(picture, SIGNAL(updated()), this, SLOT(snapmaticUpdated())); + QObject::connect(picture, SIGNAL(customSignal(QString)), this, SLOT(customSignal(QString))); + + qreal screenRatio = AppEnv::screenRatio(); + qreal screenRatioPR = AppEnv::screenRatioPR(); + ui->labPicture->setFixedSize(48 * screenRatio, 27 * screenRatio); + + ui->labPicture->setScaledContents(true); + + QPixmap SnapmaticPixmap = QPixmap::fromImage(picture->getImage().scaled(ui->labPicture->width() * screenRatioPR, ui->labPicture->height() * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::AutoColor); +#if QT_VERSION >= 0x050600 + SnapmaticPixmap.setDevicePixelRatio(screenRatioPR); +#endif + + ui->labPicStr->setText(smpic->getPictureStr() % "\n" % smpic->getPictureTitl()); + ui->labPicture->setPixmap(SnapmaticPixmap); + + picture->clearCache(); + + adjustTextColor(); +} + +void SnapmaticWidget::snapmaticUpdated() +{ + ui->labPicStr->setText(smpic->getPictureStr() % "\n" % smpic->getPictureTitl()); +} + +void SnapmaticWidget::customSignal(QString signal) +{ + if (signal == "PictureUpdated") + { + QPixmap SnapmaticPixmap = QPixmap::fromImage(smpic->getImage().scaled(ui->labPicture->width(), ui->labPicture->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::AutoColor); + ui->labPicture->setPixmap(SnapmaticPixmap); + } +} + +void SnapmaticWidget::retranslate() +{ + smpic->updateStrings(); + ui->labPicStr->setText(smpic->getPictureStr() % "\n" % smpic->getPictureTitl()); +} + +void SnapmaticWidget::on_cmdView_clicked() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("Interface"); + bool navigationBar = settings.value("NavigationBar", true).toBool(); + settings.endGroup(); + + PictureDialog *picDialog = new PictureDialog(profileDB, crewDB, profileName, this); + picDialog->setSnapmaticPicture(smpic, true); + picDialog->setModal(true); + + // be ready for crewName and playerName updated + QObject::connect(threadDB, SIGNAL(crewNameUpdated()), picDialog, SLOT(crewNameUpdated())); + QObject::connect(threadDB, SIGNAL(playerNameUpdated()), picDialog, SLOT(playerNameUpdated())); + QObject::connect(picDialog, SIGNAL(nextPictureRequested()), this, SLOT(dialogNextPictureRequested())); + QObject::connect(picDialog, SIGNAL(previousPictureRequested()), this, SLOT(dialogPreviousPictureRequested())); + + // add previous next buttons + if (navigationBar) picDialog->addPreviousNextButtons(); + + // show picture dialog +#ifdef Q_OS_ANDROID + // Android ... + picDialog->showMaximized(); +#else + picDialog->show(); + if (navigationBar) picDialog->styliseDialog(); + //picDialog->adaptNewDialogSize(); + picDialog->setMinimumSize(picDialog->size()); + picDialog->setMaximumSize(picDialog->size()); +#endif + picDialog->exec(); + delete picDialog; +} + +void SnapmaticWidget::on_cmdCopy_clicked() +{ + PictureExport::exportAsSnapmatic(this, smpic); +} + +void SnapmaticWidget::on_cmdExport_clicked() +{ + PictureExport::exportAsPicture(this, smpic); +} + +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("\""+smpic->getPictureTitle()+"\""), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); + if (uchoice == QMessageBox::Yes) + { + if (smpic->deletePictureFile()) + { +#ifdef GTA5SYNC_TELEMETRY + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "DeleteSuccess"; + jsonObject["ExtraFlags"] = "Snapmatic"; + jsonObject["DeletedSize"] = QString::number(smpic->getContentMaxLength()); + jsonObject["DeletedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } +#endif + return true; + } + else + { + QMessageBox::warning(this, tr("Delete picture"), tr("Failed at deleting %1 from your Snapmatic pictures").arg("\""+smpic->getPictureTitle()+"\"")); + } + } + return false; +} + +void SnapmaticWidget::mousePressEvent(QMouseEvent *ev) +{ + ProfileWidget::mousePressEvent(ev); +} + +void SnapmaticWidget::mouseReleaseEvent(QMouseEvent *ev) +{ + ProfileWidget::mouseReleaseEvent(ev); + if (ui->cbSelected->isVisible()) + { + if (rect().contains(ev->pos()) && ev->button() == Qt::LeftButton) + { + ui->cbSelected->setChecked(!ui->cbSelected->isChecked()); + } + } + else + { + if (getContentMode() == 0 && rect().contains(ev->pos()) && ev->button() == Qt::LeftButton) + { + if (ev->modifiers().testFlag(Qt::ShiftModifier)) + { + ui->cbSelected->setChecked(!ui->cbSelected->isChecked()); + } + else + { + on_cmdView_clicked(); + } + } + else if (!ui->cbSelected->isVisible() && getContentMode() == 1 && ev->button() == Qt::LeftButton && ev->modifiers().testFlag(Qt::ShiftModifier)) + { + ui->cbSelected->setChecked(!ui->cbSelected->isChecked()); + } + } +} + +void SnapmaticWidget::mouseDoubleClickEvent(QMouseEvent *ev) +{ + ProfileWidget::mouseDoubleClickEvent(ev); + + if (!ui->cbSelected->isVisible() && getContentMode() == 1 && ev->button() == Qt::LeftButton) + { + on_cmdView_clicked(); + } +} + +void SnapmaticWidget::setSelected(bool isSelected) +{ + ui->cbSelected->setChecked(isSelected); +} + +void SnapmaticWidget::pictureSelected() +{ + setSelected(!ui->cbSelected->isChecked()); +} + +void SnapmaticWidget::contextMenuEvent(QContextMenuEvent *ev) +{ + emit contextMenuTriggered(ev); +} + +void SnapmaticWidget::dialogNextPictureRequested() +{ + emit nextPictureRequested((QWidget*)sender()); +} + +void SnapmaticWidget::dialogPreviousPictureRequested() +{ + emit previousPictureRequested((QWidget*)sender()); +} + +void SnapmaticWidget::on_cbSelected_stateChanged(int arg1) +{ + if (arg1 == Qt::Checked) + { + emit widgetSelected(); + } + else if (arg1 == Qt::Unchecked) + { + emit widgetDeselected(); + } +} + +void SnapmaticWidget::adjustTextColor() +{ + if (isHidden()) + { + ui->labPicStr->setStyleSheet(QString("QLabel{color: rgb(%1, %2, %3);}").arg(QString::number(highlightHiddenColor.red()), QString::number(highlightHiddenColor.green()), QString::number(highlightHiddenColor.blue()))); + } + else + { + ui->labPicStr->setStyleSheet(""); + } +} + +bool SnapmaticWidget::makePictureHidden() +{ + if (smpic->setPictureHidden()) + { + adjustTextColor(); + return true; + } + return false; +} + +bool SnapmaticWidget::makePictureVisible() +{ + if (smpic->setPictureVisible()) + { + adjustTextColor(); + return true; + } + return false; +} + +void SnapmaticWidget::makePictureHiddenSlot() +{ + if (!makePictureHidden()) + { + QMessageBox::warning(this, QApplication::translate("UserInterface", "Hide In-game"), QApplication::translate("SnapmaticWidget", "Failed to hide %1 In-game from your Snapmatic pictures").arg("\""+smpic->getPictureTitle()+"\"")); + } +} + +void SnapmaticWidget::makePictureVisibleSlot() +{ + if (!makePictureVisible()) + { + QMessageBox::warning(this, QApplication::translate("UserInterface", "Show In-game"), QApplication::translate("SnapmaticWidget", "Failed to show %1 In-game from your Snapmatic pictures").arg("\""+smpic->getPictureTitle()+"\"")); + } +} + +void SnapmaticWidget::editSnapmaticProperties() +{ + SnapmaticEditor *snapmaticEditor = new SnapmaticEditor(crewDB, profileDB, this); + snapmaticEditor->setSnapmaticPicture(smpic); + snapmaticEditor->setModal(true); + snapmaticEditor->show(); + snapmaticEditor->exec(); + delete snapmaticEditor; +} + +void SnapmaticWidget::editSnapmaticRawJson() +{ + JsonEditorDialog *jsonEditor = new JsonEditorDialog(smpic, this); + jsonEditor->setModal(true); + jsonEditor->show(); + jsonEditor->exec(); + delete jsonEditor; +} + +void SnapmaticWidget::editSnapmaticImage() +{ + QImage *currentImage = new QImage(smpic->getImage()); + ImportDialog *importDialog = new ImportDialog(profileName, this); + importDialog->setImage(currentImage); + importDialog->enableOverwriteMode(); + importDialog->setModal(true); + importDialog->exec(); + if (importDialog->isImportAgreed()) + { + const QByteArray previousPicture = smpic->getPictureStream(); + bool success = smpic->setImage(importDialog->image()); + if (success) + { + QString currentFilePath = smpic->getPictureFilePath(); + QString originalFilePath = smpic->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + if (!smpic->exportPicture(currentFilePath)) + { + smpic->setPictureStream(previousPicture); + QMessageBox::warning(this, QApplication::translate("ImageEditorDialog", "Snapmatic Image Editor"), QApplication::translate("ImageEditorDialog", "Patching of Snapmatic Image failed because of I/O Error")); + return; + } + smpic->emitCustomSignal("PictureUpdated"); +#ifdef GTA5SYNC_TELEMETRY + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "ImageEdited"; + jsonObject["ExtraFlags"] = "Interface"; + jsonObject["EditedSize"] = QString::number(smpic->getContentMaxLength()); + jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } +#endif + } + else + { + QMessageBox::warning(this, QApplication::translate("ImageEditorDialog", "Snapmatic Image Editor"), QApplication::translate("ImageEditorDialog", "Patching of Snapmatic Image failed because of Image Error")); + return; + } + } + delete importDialog; +} + +void SnapmaticWidget::openMapViewer() +{ + SnapmaticPicture *picture = smpic; + MapLocationDialog *mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, this); + mapLocDialog->setModal(true); + mapLocDialog->show(); + mapLocDialog->exec(); + if (mapLocDialog->propUpdated()) + { + // Update Snapmatic Properties + SnapmaticProperties localSpJson = picture->getSnapmaticProperties(); + localSpJson.location.x = mapLocDialog->getXpos(); + localSpJson.location.y = mapLocDialog->getYpos(); + localSpJson.location.z = 0; + + // Update Snapmatic Picture + QString currentFilePath = picture->getPictureFilePath(); + QString originalFilePath = picture->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + SnapmaticProperties fallbackProperties = picture->getSnapmaticProperties(); + picture->setSnapmaticProperties(localSpJson); + if (!picture->exportPicture(currentFilePath)) + { + QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of I/O Error")); + picture->setSnapmaticProperties(fallbackProperties); + } +#ifdef GTA5SYNC_TELEMETRY + else + { + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + bool pushUsageData = telemetrySettings.value("PushUsageData", false).toBool(); + telemetrySettings.endGroup(); + if (pushUsageData && Telemetry->canPush()) + { + QJsonDocument jsonDocument; + QJsonObject jsonObject; + jsonObject["Type"] = "LocationEdited"; + jsonObject["ExtraFlags"] = "Interface"; + jsonObject["EditedSize"] = QString::number(picture->getContentMaxLength()); + jsonObject["EditedTime"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t()); + jsonDocument.setObject(jsonObject); + Telemetry->push(TelemetryCategory::PersonalData, jsonDocument); + } + } +#endif + } + delete mapLocDialog; +} + +bool SnapmaticWidget::isSelected() +{ + return ui->cbSelected->isChecked(); +} + +bool SnapmaticWidget::isHidden() +{ + return smpic->isHidden(); +} + +void SnapmaticWidget::setSelectionMode(bool selectionMode) +{ + ui->cbSelected->setVisible(selectionMode); +} + +void SnapmaticWidget::selectAllWidgets() +{ + emit allWidgetsSelected(); +} + +void SnapmaticWidget::deselectAllWidgets() +{ + emit allWidgetsDeselected(); +} + +SnapmaticPicture* SnapmaticWidget::getPicture() +{ + return smpic; +} + +QString SnapmaticWidget::getPicturePath() +{ + return smpic->getPictureFilePath(); +} + +QString SnapmaticWidget::getWidgetType() +{ + return "SnapmaticWidget"; +} diff --git a/SnapmaticWidget.h b/SnapmaticWidget.h new file mode 100644 index 0000000..7df76d4 --- /dev/null +++ b/SnapmaticWidget.h @@ -0,0 +1,103 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef SNAPMATICWIDGET_H +#define SNAPMATICWIDGET_H + +#include "SnapmaticPicture.h" +#include "ProfileDatabase.h" +#include "DatabaseThread.h" +#include "ProfileWidget.h" +#include "CrewDatabase.h" +#include +#include +#include +#include + +namespace Ui { +class SnapmaticWidget; +} + +class SnapmaticWidget : public ProfileWidget +{ + Q_OBJECT + +public: + SnapmaticWidget(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QString profileName, QWidget *parent = 0); + void setSnapmaticPicture(SnapmaticPicture *picture); + void setSelectionMode(bool selectionMode); + void setSelected(bool isSelected); + bool deletePicture(); + bool makePictureVisible(); + bool makePictureHidden(); + SnapmaticPicture *getPicture(); + QString getPicturePath(); + QString getWidgetType(); + bool isSelected(); + bool isHidden(); + void retranslate(); + ~SnapmaticWidget(); + +private slots: + void on_cmdView_clicked(); + void on_cmdCopy_clicked(); + void on_cmdExport_clicked(); + void on_cmdDelete_clicked(); + void on_cbSelected_stateChanged(int arg1); + void adjustTextColor(); + void pictureSelected(); + void selectAllWidgets(); + void deselectAllWidgets(); + void dialogNextPictureRequested(); + void dialogPreviousPictureRequested(); + void makePictureVisibleSlot(); + void makePictureHiddenSlot(); + void editSnapmaticProperties(); + void editSnapmaticRawJson(); + void editSnapmaticImage(); + void openMapViewer(); + void snapmaticUpdated(); + void customSignal(QString signal); + +protected: + void mouseDoubleClickEvent(QMouseEvent *ev); + void mouseReleaseEvent(QMouseEvent *ev); + void mousePressEvent(QMouseEvent *ev); + void contextMenuEvent(QContextMenuEvent *ev); + +private: + ProfileDatabase *profileDB; + CrewDatabase *crewDB; + DatabaseThread *threadDB; + QString profileName; + Ui::SnapmaticWidget *ui; + SnapmaticPicture *smpic; + QColor highlightHiddenColor; + +signals: + void pictureDeleted(); + void widgetSelected(); + void widgetDeselected(); + void allWidgetsSelected(); + void allWidgetsDeselected(); + void nextPictureRequested(QWidget *dialog); + void previousPictureRequested(QWidget *dialog); + void contextMenuTriggered(QContextMenuEvent *ev); +}; + +#endif // SNAPMATICWIDGET_H diff --git a/SnapmaticWidget.ui b/SnapmaticWidget.ui new file mode 100644 index 0000000..a3e7e89 --- /dev/null +++ b/SnapmaticWidget.ui @@ -0,0 +1,169 @@ + + + SnapmaticWidget + + + + 0 + 0 + 490 + 45 + + + + Snapmatic Widget + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + + + + Qt::NoFocus + + + + + + + + + + + 48 + 27 + + + + + 48 + 27 + + + + 0 + + + + + + true + + + + + + + + 0 + 0 + + + + PHOTO - 00/00/00 00:00:00 + + + true + + + + + + + + 0 + 0 + + + + View picture + + + View + + + true + + + + + + + + 0 + 0 + + + + Copy picture + + + Copy + + + + + + + + 0 + 0 + + + + Export picture + + + Export + + + + + + + + 0 + 0 + + + + Delete picture + + + Delete + + + true + + + + + + + + + + + diff --git a/StandardPaths.cpp b/StandardPaths.cpp new file mode 100644 index 0000000..8e945ec --- /dev/null +++ b/StandardPaths.cpp @@ -0,0 +1,128 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "StandardPaths.h" +#if QT_VERSION >= 0x050000 +#include +#else +#include +#endif + +StandardPaths::StandardPaths() +{ + +} + +QString StandardPaths::applicationsLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::ApplicationsLocation); +#endif +} + +QString StandardPaths::cacheLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::CacheLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::CacheLocation); +#endif +} + +QString StandardPaths::dataLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::DataLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::DataLocation); +#endif +} + +QString StandardPaths::desktopLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::DesktopLocation); +#endif +} + +QString StandardPaths::documentsLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation); +#endif +} + +QString StandardPaths::moviesLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::MoviesLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::MoviesLocation); +#endif +} + +QString StandardPaths::picturesLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::PicturesLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::PicturesLocation); +#endif +} + +QString StandardPaths::fontsLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::FontsLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::FontsLocation); +#endif +} + +QString StandardPaths::homeLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::HomeLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::HomeLocation); +#endif +} + +QString StandardPaths::musicLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::MusicLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::MusicLocation); +#endif +} + +QString StandardPaths::tempLocation() +{ +#if QT_VERSION >= 0x050000 + return QStandardPaths::writableLocation(QStandardPaths::TempLocation); +#else + return QDesktopServices::storageLocation(QDesktopServices::TempLocation); +#endif +} diff --git a/StandardPaths.h b/StandardPaths.h new file mode 100644 index 0000000..3469e41 --- /dev/null +++ b/StandardPaths.h @@ -0,0 +1,41 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef STANDARDPATHS_H +#define STANDARDPATHS_H + +#include + +class StandardPaths +{ +public: + StandardPaths(); + static QString applicationsLocation(); + static QString cacheLocation(); + static QString dataLocation(); + static QString desktopLocation(); + static QString documentsLocation(); + static QString fontsLocation(); + static QString homeLocation(); + static QString moviesLocation(); + static QString picturesLocation(); + static QString musicLocation(); + static QString tempLocation(); +}; + +#endif // STANDARDPATHS_H diff --git a/StringParser.cpp b/StringParser.cpp new file mode 100644 index 0000000..93d5825 --- /dev/null +++ b/StringParser.cpp @@ -0,0 +1,61 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "StringParser.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef GTA5SYNC_PROJECT +#include +#include "config.h" +#endif + +StringParser::StringParser() +{ + +} + +QString StringParser::escapeString(const QString &toEscape) +{ +#if QT_VERSION >= 0x050000 + return toEscape.toHtmlEscaped(); +#else + return Qt::escape(toEscape); +#endif +} + +#ifdef GTA5SYNC_PROJECT +QString StringParser::convertBuildedString(const QString &buildedStr) +{ + QString outputStr = buildedStr; + QByteArray sharePath = GTA5SYNC_SHARE; + outputStr.replace("APPNAME:", GTA5SYNC_APPSTR); + outputStr.replace("SHAREDDIR:", QString::fromUtf8(sharePath)); + outputStr.replace("RUNDIR:", QFileInfo(qApp->applicationFilePath()).absoluteDir().absolutePath()); + outputStr.replace("QCONFLANG:", QLibraryInfo::location(QLibraryInfo::TranslationsPath)); + outputStr.replace("QCONFPLUG:", QLibraryInfo::location(QLibraryInfo::PluginsPath)); + outputStr.replace("SEPARATOR:", QDir::separator()); + return outputStr; +} +#endif diff --git a/StringParser.h b/StringParser.h new file mode 100644 index 0000000..ed324a5 --- /dev/null +++ b/StringParser.h @@ -0,0 +1,35 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef STRINGPARSER_H +#define STRINGPARSER_H + +#include +#include + +class StringParser +{ +public: + StringParser(); + static QString escapeString(const QString &toEscape); +#ifdef GTA5SYNC_PROJECT + static QString convertBuildedString(const QString &buildedStr); +#endif +}; + +#endif // STRINGPARSER_H diff --git a/TelemetryClass.cpp b/TelemetryClass.cpp new file mode 100644 index 0000000..5286d0e --- /dev/null +++ b/TelemetryClass.cpp @@ -0,0 +1,596 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "TelemetryClassAuthenticator.h" +#include "TelemetryClass.h" +#include "StandardPaths.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef GTA5SYNC_TELEMETRY_WEBURL +#define GTA5SYNC_TELEMETRY_WEBURL "" +#endif + +#ifdef GTA5SYNC_WIN +#include "windows.h" +#include "intrin.h" +#include "d3d9.h" +#endif + +TelemetryClass TelemetryClass::telemetryClassInstance; + +void TelemetryClass::init() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("Telemetry"); + telemetryEnabled = true; + telemetryStateForced = true; + QString telemetryLegacyClientID = settings.value("ClientID", QString()).toString(); + if (telemetryLegacyClientID.isEmpty() || telemetryLegacyClientID == "v2+") + { + telemetryClientID = QString::fromUtf8(QByteArray::fromBase64(settings.value("Identification", QByteArray()).toByteArray())); + } + else + { + QDir dir; + dir.mkpath(StandardPaths::dataLocation()); + dir.setPath(StandardPaths::dataLocation()); + QString dirPath = dir.absolutePath(); + QString portLoc = dirPath % "/.ported"; + bool telemetryPortedKey = settings.value("IsPorted", false).toBool(); + bool telemetryPortedFile = QFile::exists(portLoc); + if (!telemetryPortedKey && !telemetryPortedFile) + { + QFile portFile(portLoc); + if (portFile.open(QFile::WriteOnly)) + { + portFile.write("\n"); + portFile.flush(); + } + portFile.close(); + telemetryClientID = telemetryLegacyClientID; + settings.setValue("Identification", telemetryLegacyClientID.toUtf8().toBase64()); + settings.setValue("IsPorted", true); + settings.setValue("ClientID", "v2+"); + } + else + { + telemetryClientID = QString(); + } + } + telemetryPushAppConf = settings.value("PushAppConf", false).toBool(); + settings.endGroup(); +} + +void TelemetryClass::refresh() +{ + init(); +} + +bool TelemetryClass::canPush() +{ + if (!isEnabled() || !isRegistered() || !TelemetryClassAuthenticator::havePushURL()) return false; + return true; +} + +bool TelemetryClass::canRegister() +{ + QDir dir; + dir.mkpath(StandardPaths::dataLocation()); + dir.setPath(StandardPaths::dataLocation()); + QString dirPath = dir.absolutePath(); + QString regLoc = dirPath % "/.reg"; + if (QFile::exists(regLoc)) return false; + if (!isEnabled() || isRegistered() || !TelemetryClassAuthenticator::haveRegURL()) return false; + return true; +} + +bool TelemetryClass::isEnabled() +{ + return telemetryEnabled; +} + +bool TelemetryClass::isStateForced() +{ + return telemetryStateForced; +} + +bool TelemetryClass::isRegistered() +{ + return !telemetryClientID.isEmpty(); +} + +QString TelemetryClass::getRegisteredID() +{ + return telemetryClientID; +} + +void TelemetryClass::setEnabled(bool enabled) +{ + telemetryEnabled = enabled; + telemetryStateForced = true; +} + +void TelemetryClass::setDisabled(bool disabled) +{ + telemetryEnabled = !disabled; + telemetryStateForced = true; +} + +void TelemetryClass::push(TelemetryCategory category) +{ + if (!canPush()) return; + switch (category) + { + case TelemetryCategory::OperatingSystemSpec: + push(category, getOperatingSystem()); + break; + case TelemetryCategory::HardwareSpec: + push(category, getSystemHardware()); + break; + case TelemetryCategory::UserLocaleData: + push(category, getSystemLocaleList()); + break; + case TelemetryCategory::ApplicationConf: + push(category, getApplicationConf()); + break; + case TelemetryCategory::ApplicationSpec: + push(category, getApplicationSpec()); + break; + case TelemetryCategory::UserFeedback: + break; + case TelemetryCategory::PersonalData: + break; + case TelemetryCategory::CustomEmitted: + break; + } +} + +void TelemetryClass::push(TelemetryCategory category, QJsonDocument json) +{ + if (!canPush()) return; + + QJsonDocument jsonDocument(json); + QJsonObject jsonObject = jsonDocument.object(); + jsonObject["ClientID"] = telemetryClientID; + jsonDocument.setObject(jsonObject); + + QHttpMultiPart *httpMultiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); + + QHttpPart categoryPart; + categoryPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"json-category\"")); + categoryPart.setBody(categoryToString(category).toUtf8()); + + QHttpPart jsonPart; + jsonPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/octet-stream")); + jsonPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"json-deflated\"")); + jsonPart.setBody(qCompress(jsonDocument.toJson(QJsonDocument::Compact))); + + httpMultiPart->append(categoryPart); + httpMultiPart->append(jsonPart); + + QNetworkAccessManager *netManager = new QNetworkAccessManager(); + QNetworkRequest netRequest(TelemetryClassAuthenticator::getTrackingPushURL()); + netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent()); + QNetworkReply *netReply = netManager->post(netRequest, httpMultiPart); + httpMultiPart->setParent(netReply); + + connect(netManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(pushFinished(QNetworkReply*))); +} + +QJsonDocument TelemetryClass::getOperatingSystem() +{ + QJsonDocument jsonDocument; + QJsonObject jsonObject; +#if QT_VERSION >= 0x050400 + jsonObject["KernelType"] = QSysInfo::kernelType(); + jsonObject["KernelVersion"] = QSysInfo::kernelVersion(); + jsonObject["ProductType"] = QSysInfo::productType(); + jsonObject["ProductVersion"] = QSysInfo::productVersion(); + jsonObject["OSName"] = QSysInfo::prettyProductName(); + jsonObject["OSArch"] = QSysInfo::currentCpuArchitecture(); +#endif + jsonDocument.setObject(jsonObject); + return jsonDocument; +} + +QJsonDocument TelemetryClass::getSystemHardware() +{ + QJsonDocument jsonDocument; + QJsonObject jsonObject; +#ifdef GTA5SYNC_WIN + { + int CPUInfo[4] = {-1}; + unsigned nExIds, ic = 0; + char CPUBrandString[0x40]; + __cpuid(CPUInfo, 0x80000000); + nExIds = CPUInfo[0]; + for (ic = 0x80000000; ic <= nExIds; ic++) + { + __cpuid(CPUInfo, ic); + if (ic == 0x80000002) { memcpy(CPUBrandString, CPUInfo, sizeof(CPUInfo)); } + else if (ic == 0x80000003) { memcpy(CPUBrandString + 16, CPUInfo, sizeof(CPUInfo)); } + else if (ic == 0x80000004) { memcpy(CPUBrandString + 32, CPUInfo, sizeof(CPUInfo)); } + } + jsonObject["CPUName"] = QString::fromLatin1(CPUBrandString).simplified(); + SYSTEM_INFO sysInfo; + GetSystemInfo(&sysInfo); + jsonObject["CPUThreads"] = QString::number(sysInfo.dwNumberOfProcessors); + MEMORYSTATUSEX statex; + statex.dwLength = sizeof(statex); + GlobalMemoryStatusEx(&statex); + jsonObject["SystemRAM"] = QString(QString::number((statex.ullTotalPhys / 1024) / 1024) % "MB"); + QStringList gpusList; + IDirect3D9 *pD3D = Direct3DCreate9(D3D_SDK_VERSION); + int adapters = pD3D->GetAdapterCount(); + for (int ia = 0; ia < adapters; ia++) + { + D3DADAPTER_IDENTIFIER9 d3dIdent; + HRESULT result = pD3D->GetAdapterIdentifier(ia, 0, &d3dIdent); + if (result == D3D_OK) + { + QString gpuAdapter = QString::fromLatin1(d3dIdent.Description); + if (!gpusList.contains(gpuAdapter)) { gpusList << gpuAdapter; } + } + } + pD3D->Release(); + jsonObject["GPUs"] = QJsonValue::fromVariant(gpusList); + } +#else + QDir procDir("/proc"); + if (procDir.exists()) + { + QFile cpuInfo("/proc/cpuinfo"); + if (cpuInfo.open(QFile::ReadOnly)) + { + QByteArray cpuInfoArray = cpuInfo.readAll(); + QBuffer cpuInfoBuffer(&cpuInfoArray); + if (cpuInfoBuffer.open(QBuffer::ReadOnly)) + { + QByteArray toFind = "model name"; + while (cpuInfoBuffer.canReadLine()) + { + QByteArray cpuData = cpuInfoBuffer.readLine(); + if (cpuData.left(toFind.length()) == toFind) + { + jsonObject["CPUName"] = QString::fromUtf8(cpuData).split(':').at(1).simplified(); + break; + } + } + int cpuThreads = 0; + toFind = "processor"; + cpuInfoBuffer.seek(0); + while (cpuInfoBuffer.canReadLine()) + { + QByteArray cpuData = cpuInfoBuffer.readLine(); + if (cpuData.left(toFind.length()) == toFind) + { + cpuThreads++; + } + } + jsonObject["CPUThreads"] = QString::number(cpuThreads); + } + } + + QFile memInfo("/proc/meminfo"); + if (memInfo.open(QFile::ReadOnly)) + { + QByteArray memInfoArray = memInfo.readAll(); + QBuffer memInfoBuffer(&memInfoArray); + if (memInfoBuffer.open(QBuffer::ReadOnly)) + { + QByteArray toFind = "MemTotal:"; + while (memInfoBuffer.canReadLine()) + { + QByteArray memData = memInfoBuffer.readLine(); + if (memData.left(toFind.length()) == toFind) + { + QByteArray memDataVal = memData.mid(toFind.length()).trimmed(); + int totalMemoryInKB = memDataVal.left(memDataVal.length() - 3).toInt(); + jsonObject["SystemRAM"] = QString(QString::number(totalMemoryInKB / 1024) % "MB"); + break; + } + } + } + } + } +#endif + + jsonDocument.setObject(jsonObject); + return jsonDocument; +} + +QJsonDocument TelemetryClass::getApplicationSpec() +{ + QJsonDocument jsonDocument; + QJsonObject jsonObject; +#if QT_VERSION >= 0x050400 + jsonObject["Arch"] = QSysInfo::buildCpuArchitecture(); +#endif + jsonObject["Name"] = GTA5SYNC_APPSTR; +#ifdef GTA5SYNC_COMMIT + jsonObject["Commit"] = GTA5SYNC_COMMIT; +#endif + jsonObject["Version"] = GTA5SYNC_APPVER; + jsonObject["BuildDateTime"] = AppEnv::getBuildDateTime(); + jsonObject["BuildType"] = GTA5SYNC_BUILDTYPE; + jsonObject["BuildCode"] = AppEnv::getBuildCode(); + jsonObject["QtVersion"] = qVersion(); + jsonDocument.setObject(jsonObject); + return jsonDocument; +} + +QJsonDocument TelemetryClass::getApplicationConf() +{ + QJsonDocument jsonDocument; + QJsonObject jsonObject; + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + + settings.beginGroup("Interface"); + QJsonObject interfaceObject; + interfaceObject["AreaLanguage"] = settings.value("AreaLanguage", "Auto").toString(); + interfaceObject["Language"] = settings.value("Language", "System").toString(); + interfaceObject["NavigationBar"] = settings.value("NavigationBar", false).toBool(); + jsonObject["Interface"] = interfaceObject; + settings.endGroup(); + + settings.beginGroup("Pictures"); + QJsonObject picturesObject; + picturesObject["AspectRatio"] = ((Qt::AspectRatioMode)settings.value("AspectRatio").toInt() == Qt::IgnoreAspectRatio) ? "IgnoreAspectRatio" : "KeepAspectRatio"; + picturesObject["CustomQuality"] = settings.value("CustomQuality", 100).toInt(); + picturesObject["CustomQualityEnabled"] = settings.value("CustomQualityEnabled", false).toBool(); + picturesObject["ExportSizeMode"] = settings.value("ExportSizeMode", "Default").toString(); + jsonObject["Pictures"] = picturesObject; + settings.endGroup(); + + settings.beginGroup("Profile"); + QJsonObject profileObject; + int contentMode = settings.value("ContentMode", 0).toInt(); + switch (contentMode) + { + case 0: + profileObject["ContentMode"] = "OpenWithSingleClick"; + break; + case 1: + profileObject["ContentMode"] = "OpenWithDoubleClick"; + break; + case 2: + profileObject["ContentMode"] = "SelectWithSingleClick"; + break; + } + jsonObject["Profile"] = profileObject; + settings.endGroup(); + + settings.beginGroup("Startup"); + QJsonObject startupObject; + startupObject["AppStyle"] = settings.value("AppStyle", "System").toString(); + startupObject["CustomStyle"] = settings.value("CustomStyle", false).toBool(); + startupObject["StartCount"] = QString::number(settings.value("StartCount", 0).toUInt()); + jsonObject["Startup"] = startupObject; + settings.endGroup(); + + jsonDocument.setObject(jsonObject); + return jsonDocument; +} + +QJsonDocument TelemetryClass::getSystemLocaleList() +{ + QJsonDocument jsonDocument; + QJsonObject jsonObject; + QStringList languagesList = QLocale::system().uiLanguages(); + if (languagesList.length() >= 1) + { + jsonObject["PrimaryLanguage"] = languagesList.at(0); + } + if (languagesList.length() >= 2) + { + languagesList.removeAt(0); + jsonObject["SecondaryLanguages"] = QJsonValue::fromVariant(languagesList); + } + jsonDocument.setObject(jsonObject); + return jsonDocument; +} + +QString TelemetryClass::categoryToString(TelemetryCategory category) +{ + switch (category) + { + case TelemetryCategory::OperatingSystemSpec: + return QString("OperatingSystemSpec"); + break; + case TelemetryCategory::HardwareSpec: + return QString("HardwareSpec"); + break; + case TelemetryCategory::UserLocaleData: + return QString("UserLocaleData"); + break; + case TelemetryCategory::ApplicationConf: + return QString("ApplicationConf"); + break; + case TelemetryCategory::ApplicationSpec: + return QString("ApplicationSpec"); + break; + case TelemetryCategory::UserFeedback: + return QString("UserFeedback"); + break; + case TelemetryCategory::PersonalData: + return QString("PersonalData"); + break; + case TelemetryCategory::CustomEmitted: + return QString("CustomEmitted"); + break; + default: + return QString("UnknownCategory"); + break; + } +} + +QUrl TelemetryClass::getWebURL() +{ + return QUrl(GTA5SYNC_TELEMETRY_WEBURL); +} + +void TelemetryClass::registerClient() +{ + QNetworkAccessManager *netManager = new QNetworkAccessManager(); + QNetworkRequest netRequest(TelemetryClassAuthenticator::getTrackingRegURL()); + netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent()); + netManager->get(netRequest); + + connect(netManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(registerFinished(QNetworkReply*))); +} + +void TelemetryClass::work() +{ + if (!canPush() && canRegister()) + { + connect(this, SIGNAL(registered(bool)), this, SLOT(work_pd(bool))); + registerClient(); + } + else if (canPush()) + { + work_p(true); + } +} + +void TelemetryClass::work_p(bool doWork) +{ + if (doWork) + { + push(TelemetryCategory::ApplicationSpec); + push(TelemetryCategory::UserLocaleData); + push(TelemetryCategory::OperatingSystemSpec); + push(TelemetryCategory::HardwareSpec); + if (telemetryPushAppConf) + { + push(TelemetryCategory::ApplicationConf); + } + else + { + push(TelemetryCategory::ApplicationConf, QJsonDocument()); + } + } +} + +void TelemetryClass::work_pd(bool doWork) +{ + disconnect(this, SIGNAL(registered(bool)), this, SLOT(work_pd(bool))); + work_p(doWork); +} + +void TelemetryClass::pushFinished(QNetworkReply *reply) +{ + bool isSuccessful = false; + if (reply->canReadLine()) + { + QByteArray readedData = reply->readLine(); + if (QString::fromUtf8(readedData).trimmed() == QString("Submit success!")) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "Telemetry" << QString("Submit success!"); +#endif + isSuccessful = true; +#ifdef GTA5SYNC_DEBUG + if (reply->isReadable()) + { + readedData = reply->readAll().trimmed(); + if (!readedData.isEmpty()) { qDebug() << "Telemetry Push" << readedData; } + } +#endif + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "Telemetry" << QString("Submit failed!"); +#endif + } + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "Telemetry" << QString("Submit failed!"); +#endif + } + reply->deleteLater(); + sender()->deleteLater(); + emit pushed(isSuccessful); +} + +void TelemetryClass::registerFinished(QNetworkReply *reply) +{ + bool isSuccessful = false; + if (reply->canReadLine()) + { + QByteArray readedData = reply->readLine(); + if (QString::fromUtf8(readedData).trimmed() == QString("Registration success!") && reply->canReadLine()) + { + QDir dir; + dir.mkpath(StandardPaths::dataLocation()); + dir.setPath(StandardPaths::dataLocation()); + QString dirPath = dir.absolutePath(); + QString regLoc = dirPath % "/.reg"; + readedData = reply->readLine(); + telemetryClientID = QString::fromUtf8(readedData).trimmed(); + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("Telemetry"); + settings.setValue("Identification", telemetryClientID.toUtf8().toBase64()); + settings.endGroup(); + QFile regFile(regLoc); + if (regFile.open(QFile::WriteOnly)) + { + regFile.write("\n"); + regFile.flush(); + } + regFile.close(); +#ifdef GTA5SYNC_DEBUG + qDebug() << "Telemetry" << QString("Registration success!"); +#endif + isSuccessful = true; + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "Telemetry" << QString("Registration failed!"); +#endif + } + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "Telemetry" << QString("Registration failed!"); +#endif + } + reply->deleteLater(); + sender()->deleteLater(); + emit registered(isSuccessful); +} diff --git a/TelemetryClass.h b/TelemetryClass.h new file mode 100644 index 0000000..dc80efa --- /dev/null +++ b/TelemetryClass.h @@ -0,0 +1,80 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef TELEMETRYCLASS_H +#define TELEMETRYCLASS_H + +#include +#include +#include +#include +#include + +enum class TelemetryCategory : int { OperatingSystemSpec = 0, HardwareSpec = 1, UserLocaleData = 2, ApplicationConf = 3, UserFeedback = 4, ApplicationSpec = 5, PersonalData = 6, CustomEmitted = 99 }; + +class TelemetryClass : public QObject +{ + Q_OBJECT +public: + static TelemetryClass* getInstance() { return &telemetryClassInstance; } + static QString categoryToString(TelemetryCategory category); + static QUrl getWebURL(); + bool canPush(); + bool canRegister(); + bool isEnabled(); + bool isStateForced(); + bool isRegistered(); + void init(); + void work(); + void refresh(); + void setEnabled(bool enabled); + void setDisabled(bool disabled); + void push(TelemetryCategory category); + void push(TelemetryCategory category, const QJsonDocument json); + void registerClient(); + QString getRegisteredID(); + +private: + static TelemetryClass telemetryClassInstance; + QString telemetryClientID; + bool telemetryEnabled; + bool telemetryStateForced; + bool telemetryPushAppConf; + + void work_p(bool doWork); + QJsonDocument getOperatingSystem(); + QJsonDocument getSystemHardware(); + QJsonDocument getApplicationSpec(); + QJsonDocument getApplicationConf(); + QJsonDocument getSystemLocaleList(); + +private slots: + void pushFinished(QNetworkReply *reply); + void registerFinished(QNetworkReply *reply); + void work_pd(bool doWork); + +signals: + void pushed(bool isSucessful); + void registered(bool isSucessful); +}; + +extern TelemetryClass telemetryClass; + +#define Telemetry TelemetryClass::getInstance() + +#endif // TELEMETRYCLASS_H diff --git a/TranslationClass.cpp b/TranslationClass.cpp new file mode 100644 index 0000000..f1332f2 --- /dev/null +++ b/TranslationClass.cpp @@ -0,0 +1,653 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "TranslationClass.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if QT_VERSION >= 0x050000 +#define QtBaseTranslationFormat "qtbase_" +#else +#define QtBaseTranslationFormat "qt_" +#endif + +TranslationClass TranslationClass::translationClassInstance; + +void TranslationClass::initUserLanguage() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("Interface"); + userLanguage = settings.value("Language", "System").toString(); + userAreaLanguage = settings.value("AreaLanguage", "Auto").toString(); + settings.endGroup(); +} + +void TranslationClass::loadTranslation(QApplication *app) +{ + if (isLangLoaded) { unloadTranslation(app); } + else { currentLangIndex = 0; } + QString exLangPath = AppEnv::getExLangFolder(); + QString inLangPath = AppEnv::getInLangFolder(); + if (userLanguage == "en" || userLanguage == "en_GB") + { + currentLanguage = "en_GB"; + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) + { + app->installTranslator(&exQtTranslator); + } + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) + { + app->installTranslator(&inQtTranslator); + } + QLocale::setDefault(currentLanguage); + isLangLoaded = true; + return; + } +#ifndef GTA5SYNC_QCONF // Classic modable loading method + QString externalLanguageStr; + bool externalLanguageReady = false; + bool externalEnglishMode = false; + bool loadInternalLang = false; + bool trLoadSuccess = false; + if (isUserLanguageSystem_p()) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadExSystemLanguage"; +#endif + trLoadSuccess = loadSystemTranslation_p(exLangPath, &exAppTranslator); + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadExUserLanguage"; +#endif + trLoadSuccess = loadUserTranslation_p(exLangPath, &exAppTranslator); + if (!trLoadSuccess) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadInUserLanguage"; +#endif + trLoadSuccess = loadUserTranslation_p(inLangPath, &inAppTranslator); + if (!trLoadSuccess) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadUserLanguageFailed"; +#endif + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadUserLanguageSuccess"; +#endif + loadInternalLang = true; + isLangLoaded = true; + } + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadUserLanguageSuccess"; +#endif + isLangLoaded = true; + } + } + if (trLoadSuccess) + { + if (currentLangIndex != 0 || isEnglishMode) // Don't install the language until we know we not have a better language for the user + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "externalLanguageReady" << currentLanguage; +#endif + externalEnglishMode = isEnglishMode; + externalLanguageStr = currentLanguage; + externalLanguageReady = true; + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "installTranslation"; +#endif + if (loadInternalLang) + { + app->installTranslator(&inAppTranslator); + } + else + { + app->installTranslator(&exAppTranslator); + } + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) + { + app->installTranslator(&exQtTranslator); + } + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) + { + app->installTranslator(&inQtTranslator); + } + QLocale::setDefault(currentLanguage); + isLangLoaded = true; + } + } + if (externalLanguageReady) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadInSystemLanguage"; +#endif + int externalLangIndex = currentLangIndex; + trLoadSuccess = loadSystemTranslation_p(inLangPath, &inAppTranslator); +#ifdef GTA5SYNC_DEBUG + qDebug() << "externalLangIndex" << externalLangIndex << "internalLangIndex" << currentLangIndex; + qDebug() << "externalEnglishMode" << externalEnglishMode << "internalEnglishMode" << isEnglishMode; +#endif + if ((trLoadSuccess && externalLangIndex > currentLangIndex) || (trLoadSuccess && externalEnglishMode && !isEnglishMode)) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "installInternalTranslation"; +#endif + app->installTranslator(&inAppTranslator); + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) + { + app->installTranslator(&exQtTranslator); + } + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) + { + app->installTranslator(&inQtTranslator); + } + QLocale::setDefault(currentLanguage); + isLangLoaded = true; + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "installExternalTranslation"; +#endif + isEnglishMode = externalEnglishMode; + currentLanguage = externalLanguageStr; + app->installTranslator(&exAppTranslator); + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) + { + app->installTranslator(&exQtTranslator); + } + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) + { + app->installTranslator(&inQtTranslator); + } + QLocale::setDefault(currentLanguage); + isLangLoaded = true; + } + } + else if (!isLangLoaded) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadInSystemLanguage"; +#endif + trLoadSuccess = loadSystemTranslation_p(inLangPath, &inAppTranslator); + if (trLoadSuccess) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "installInternalTranslation"; +#endif + app->installTranslator(&inAppTranslator); + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) + { + app->installTranslator(&exQtTranslator); + } + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) + { + app->installTranslator(&inQtTranslator); + } + QLocale::setDefault(currentLanguage); + isLangLoaded = true; + } + else if (!trLoadSuccess) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "fallbackToDefaultApplicationLanguage"; +#endif + currentLanguage = "en_GB"; + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) + { + app->installTranslator(&exQtTranslator); + } + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) + { + app->installTranslator(&inQtTranslator); + } + QLocale::setDefault(currentLanguage); + isLangLoaded = true; + } + } +#else // New qconf loading method + bool trLoadSuccess; + if (isUserLanguageSystem_p()) + { + trLoadSuccess = loadSystemTranslation_p(inLangPath, &inAppTranslator); + } + else + { + trLoadSuccess = loadUserTranslation_p(inLangPath, &inAppTranslator); + } + if (!trLoadSuccess && !isUserLanguageSystem_p()) + { + trLoadSuccess = loadSystemTranslation_p(inLangPath, &inAppTranslator); + } + if (trLoadSuccess) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "installTranslation" << currentLanguage; +#endif + app->installTranslator(&inAppTranslator); + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) + { + app->installTranslator(&exQtTranslator); + } + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) + { + app->installTranslator(&inQtTranslator); + } + QLocale::setDefault(currentLanguage); + isLangLoaded = true; + } +#endif +} + +QStringList TranslationClass::listTranslations(const QString &langPath) +{ + QDir langDir; + langDir.setNameFilters(QStringList("gta5sync_*.qm")); + langDir.setPath(langPath); + QStringList availableLanguages; + for (QString lang : langDir.entryList(QDir::Files | QDir::NoDotAndDotDot, QDir::NoSort)) + { + availableLanguages << QString(lang).remove("gta5sync_").remove(".qm"); + } + return availableLanguages; +} + +QStringList TranslationClass::listAreaTranslations() +{ + QDir langDir; + langDir.setNameFilters(QStringList("global.*.ini")); + langDir.setPath(":/global"); + QStringList availableLanguages; + for (QString lang : langDir.entryList(QDir::Files | QDir::NoDotAndDotDot, QDir::NoSort)) + { + availableLanguages << QString(lang).remove("global.").remove(".ini"); + } + return availableLanguages; +} + +bool TranslationClass::loadSystemTranslation_p(const QString &langPath, QTranslator *appTranslator) +{ +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadSystemTranslation_p"; +#endif + int currentLangCounter = 0; + for (QString languageName : QLocale::system().uiLanguages()) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguage" << languageName; +#endif + QStringList langList = QString(languageName).replace("-","_").split("_"); + if (langList.length() == 2) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm"); +#endif + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) + { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm"); +#endif + isEnglishMode = false; + currentLanguage = languageName; + currentLangIndex = currentLangCounter; + return true; + } + } +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); +#endif + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) + { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); +#endif + isEnglishMode = false; + currentLanguage = languageName; + currentLangIndex = currentLangCounter; + return true; + } + else if (langList.at(0) == "en") + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "languageEnglishMode index" << currentLangCounter; +#endif + isEnglishMode = true; + currentLanguage = languageName; + currentLangIndex = currentLangCounter; + return true; + } + } + else if (langList.at(0) == "en") + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "languageEnglishMode index" << currentLangCounter; +#endif + isEnglishMode = true; + currentLanguage = languageName; + currentLangIndex = currentLangCounter; + return true; + } + } + else if (langList.length() == 1) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); +#endif + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) + { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); +#endif + isEnglishMode = false; + currentLanguage = languageName; + currentLangIndex = currentLangCounter; + return true; + } + } + } +#ifdef GTA5SYNC_DEBUG + qDebug() << "currentLangCounter bump"; +#endif + currentLangCounter++; + } + return false; +} + +bool TranslationClass::loadUserTranslation_p(const QString &langPath, QTranslator *appTranslator) +{ +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadUserTranslation_p"; +#endif + QString languageName = userLanguage; + QStringList langList = QString(languageName).replace("-","_").split("_"); + if (langList.length() == 2) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm"); +#endif + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) + { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm"); +#endif + currentLanguage = languageName; + return true; + } + } +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); +#endif + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) + { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); +#endif + currentLanguage = languageName; + return true; + } + } + } + else if (langList.length() == 1) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); +#endif + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) + { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); +#endif + currentLanguage = languageName; + return true; + } + } + } + return false; +} + +bool TranslationClass::loadQtTranslation_p(const QString &langPath, QTranslator *qtTranslator) +{ +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadQtTranslation_p" << currentLanguage; +#endif + QString languageName = currentLanguage; + QStringList langList = QString(languageName).replace("-","_").split("_"); + if (langList.length() == 2) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFile" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % "_" % langList.at(1) % ".qm"); +#endif + if (QFile::exists(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % "_" % langList.at(1) % ".qm")) + { + if (qtTranslator->load(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % "_" % langList.at(1) % ".qm")) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFileSuccess" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % "_" % langList.at(1) % ".qm"); +#endif + return true; + } + } +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFile" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm"); +#endif + if (QFile::exists(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) + { + if (qtTranslator->load(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFileSuccess" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm"); +#endif + return true; + } + } + } + else if (langList.length() == 1) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFile" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm"); +#endif + if (QFile::exists(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) + { + if (qtTranslator->load(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "loadLanguageFileSuccess" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm"); +#endif + return true; + } + } + } + return false; +} + +bool TranslationClass::isUserLanguageSystem_p() +{ + return (userLanguage == "System" || userLanguage.trimmed().isEmpty()); +} + +QString TranslationClass::getCurrentAreaLanguage() +{ + const QStringList areaTranslations = listAreaTranslations(); + if (userAreaLanguage == "Auto" || userAreaLanguage.trimmed().isEmpty()) + { + GameLanguage gameLanguage = AppEnv::getGameLanguage(AppEnv::getGameVersion()); + if (gameLanguage == GameLanguage::Undefined) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "autoAreaLanguageModeInterface"; +#endif + QString langCode = QString(currentLanguage).replace("-", "_"); + if (areaTranslations.contains(langCode)) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "autoAreaLanguageSelected" << langCode; +#endif + return langCode; + } + else if (langCode.contains("_")) + { + langCode = langCode.split("_").at(0); + if (!areaTranslations.contains(langCode)) goto outputDefaultLanguage; +#ifdef GTA5SYNC_DEBUG + qDebug() << "autoAreaLanguageSelected" << langCode; +#endif + return langCode; + } + } + else + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "autoAreaLanguageModeGame"; +#endif + QString langCode = AppEnv::gameLanguageToString(gameLanguage).replace("-", "_"); + if (areaTranslations.contains(langCode)) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "autoAreaLanguageSelected" << langCode; +#endif + return langCode; + } + else if (langCode.contains("_")) + { + langCode = langCode.split("_").at(0); + if (!areaTranslations.contains(langCode)) goto outputDefaultLanguage; +#ifdef GTA5SYNC_DEBUG + qDebug() << "autoAreaLanguageSelected" << langCode; +#endif + return langCode; + } + } + } + else if (areaTranslations.contains(userAreaLanguage)) + { +#ifdef GTA5SYNC_DEBUG + qDebug() << "userAreaLanguageSelected" << userAreaLanguage; +#endif + return userAreaLanguage; + } + else if (userAreaLanguage.contains("_")) + { + QString langCode = QString(userAreaLanguage).replace("-", "_").split("_").at(0); + if (!areaTranslations.contains(langCode)) goto outputDefaultLanguage; +#ifdef GTA5SYNC_DEBUG + qDebug() << "userAreaLanguageSelected" << langCode; +#endif + return langCode; + } +outputDefaultLanguage: +#ifdef GTA5SYNC_DEBUG + qDebug() << "defaultAreaLanguageSelected"; +#endif + return "en"; +} + +QString TranslationClass::getCurrentLanguage() +{ + return currentLanguage; +} + +bool TranslationClass::isLanguageLoaded() +{ + return isLangLoaded; +} + +void TranslationClass::unloadTranslation(QApplication *app) +{ + if (isLangLoaded) + { +#ifndef GTA5SYNC_QCONF + app->removeTranslator(&exAppTranslator); + app->removeTranslator(&exQtTranslator); + app->removeTranslator(&inAppTranslator); + app->removeTranslator(&inQtTranslator); +#else + app->removeTranslator(&inAppTranslator); + app->removeTranslator(&exQtTranslator); +#endif + currentLangIndex = 0; + currentLanguage = QString(); + QLocale::setDefault(QLocale::c()); + isEnglishMode = false; + isLangLoaded = false; + } +#ifdef _MSC_VER // Fix dumb Microsoft compiler warning + Q_UNUSED(app) +#endif +} + +QString TranslationClass::getCountryCode(QLocale::Country country) +{ + QList locales = QLocale::matchingLocales(QLocale::AnyLanguage, + QLocale::AnyScript, + country); + if (locales.isEmpty()) return QString(); + QStringList localeStrList = locales.at(0).name().split("_"); + if (localeStrList.length() >= 2) + { + return localeStrList.at(1).toLower(); + } + else + { + return QString(); + } +} + +QString TranslationClass::getCountryCode(QLocale locale) +{ + QStringList localeStrList = locale.name().split("_"); + if (localeStrList.length() >= 2) + { + return localeStrList.at(1).toLower(); + } + else + { + return QString(); + } +} diff --git a/TranslationClass.h b/TranslationClass.h new file mode 100644 index 0000000..1fdefad --- /dev/null +++ b/TranslationClass.h @@ -0,0 +1,67 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef TRANSLATIONCLASS_H +#define TRANSLATIONCLASS_H + +#include +#include +#include +#include +#include +#include + +class TranslationClass : public QObject +{ + Q_OBJECT +public: + static TranslationClass* getInstance() { return &translationClassInstance; } + static QString getCountryCode(QLocale::Country country); + static QString getCountryCode(QLocale locale); + void initUserLanguage(); + void loadTranslation(QApplication *app); + void unloadTranslation(QApplication *app); + static QStringList listTranslations(const QString &langPath); + static QStringList listAreaTranslations(); + QString getCurrentAreaLanguage(); + QString getCurrentLanguage(); + bool isLanguageLoaded(); + +private: + static TranslationClass translationClassInstance; + bool loadSystemTranslation_p(const QString &langPath, QTranslator *appTranslator); + bool loadUserTranslation_p(const QString &langPath, QTranslator *appTranslator); + bool loadQtTranslation_p(const QString &langPath, QTranslator *qtTranslator); + bool isUserLanguageSystem_p(); + QTranslator exAppTranslator; + QTranslator exQtTranslator; + QTranslator inAppTranslator; + QTranslator inQtTranslator; + QString userAreaLanguage; + QString currentLanguage; + QString userLanguage; + int currentLangIndex; + bool isEnglishMode; + bool isLangLoaded; +}; + +extern TranslationClass translationClass; + +#define Translator TranslationClass::getInstance() + +#endif // TRANSLATIONCLASS_H diff --git a/UserInterface.cpp b/UserInterface.cpp new file mode 100644 index 0000000..82a9df3 --- /dev/null +++ b/UserInterface.cpp @@ -0,0 +1,677 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2019 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "UserInterface.h" +#include "ui_UserInterface.h" +#include "ProfileInterface.h" +#include "SnapmaticPicture.h" +#include "SidebarGenerator.h" +#include "SavegameDialog.h" +#include "StandardPaths.h" +#include "OptionsDialog.h" +#include "PictureDialog.h" +#include "SavegameData.h" +#include "AboutDialog.h" +#include "IconLoader.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent) : + QMainWindow(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB), + ui(new Ui::UserInterface) +{ + ui->setupUi(this); + contentMode = 0; + profileOpen = 0; + profileUI = 0; + ui->menuProfile->setEnabled(false); + ui->actionSelect_profile->setEnabled(false); + ui->actionAbout_gta5sync->setIcon(IconLoader::loadingAppIcon()); + ui->actionAbout_gta5sync->setText(tr("&About %1").arg(GTA5SYNC_APPSTR)); + ui->cmdClose->setToolTip(ui->cmdClose->toolTip().arg(GTA5SYNC_APPSTR)); + defaultWindowTitle = tr("%2 - %1").arg("%1", GTA5SYNC_APPSTR); + + this->setWindowTitle(defaultWindowTitle.arg(tr("Select Profile"))); + QString appVersion = GTA5SYNC_APPVER; +#ifndef GTA5SYNC_BUILDTYPE_REL +#ifdef GTA5SYNC_COMMIT + if (!appVersion.contains("-")) { appVersion = appVersion % "-" % GTA5SYNC_COMMIT; } +#endif +#endif + ui->labVersion->setText(QString("%1 %2").arg(GTA5SYNC_APPSTR, appVersion)); + + // Set Icon for Close Button + if (QIcon::hasThemeIcon("dialog-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close")); + } + else if (QIcon::hasThemeIcon("gtk-close")) + { + ui->cmdClose->setIcon(QIcon::fromTheme("gtk-close")); + } + + // Set Icon for Reload Button + if (QIcon::hasThemeIcon("view-refresh")) + { + ui->cmdReload->setIcon(QIcon::fromTheme("view-refresh")); + } + else if (QIcon::hasThemeIcon("reload")) + { + ui->cmdReload->setIcon(QIcon::fromTheme("reload")); + } + + // Set Icon for Choose RDR 2 Folder Menu Item + if (QIcon::hasThemeIcon("document-open-folder")) + { + ui->actionSelect_GTA_Folder->setIcon(QIcon::fromTheme("document-open-folder")); + } + else if (QIcon::hasThemeIcon("gtk-directory")) + { + ui->actionSelect_GTA_Folder->setIcon(QIcon::fromTheme("gtk-directory")); + } + + // Set Icon for Open File Menu Item + if (QIcon::hasThemeIcon("document-open")) + { + ui->actionOpen_File->setIcon(QIcon::fromTheme("document-open")); + } + + // Set Icon for Close Profile Menu Item + if (QIcon::hasThemeIcon("dialog-close")) + { + ui->actionSelect_profile->setIcon(QIcon::fromTheme("dialog-close")); + } + else if (QIcon::hasThemeIcon("gtk-close")) + { + ui->actionSelect_profile->setIcon(QIcon::fromTheme("gtk-close")); + } + + // Set Icon for Exit Menu Item + if (QIcon::hasThemeIcon("application-exit")) + { +#ifndef Q_OS_MACOS // Setting icon for exit/quit lead to a crash in Mac OS X + ui->actionExit->setIcon(QIcon::fromTheme("application-exit")); +#endif + } + + // Set Icon for Preferences Menu Item + if (QIcon::hasThemeIcon("preferences-system")) + { +#ifndef Q_OS_MACOS // Setting icon for preferences/settings/options lead to a crash in Mac OS X + ui->actionOptions->setIcon(QIcon::fromTheme("preferences-system")); +#endif + } + else if (QIcon::hasThemeIcon("configure")) + { +#ifndef Q_OS_MACOS // Setting icon for preferences/settings/options lead to a crash in Mac OS X + ui->actionOptions->setIcon(QIcon::fromTheme("configure")); +#endif + } + + // Set Icon for Profile Import Menu Item + if (QIcon::hasThemeIcon("document-import")) + { + ui->action_Import->setIcon(QIcon::fromTheme("document-import")); + } + else if (QIcon::hasThemeIcon("document-open")) + { + ui->action_Import->setIcon(QIcon::fromTheme("document-open")); + } + + // Set Icon for Profile Export Menu Item + if (QIcon::hasThemeIcon("document-export")) + { + ui->actionExport_selected->setIcon(QIcon::fromTheme("document-export")); + } + else if (QIcon::hasThemeIcon("document-save")) + { + ui->actionExport_selected->setIcon(QIcon::fromTheme("document-save")); + } + + // Set Icon for Profile Remove Menu Item + if (QIcon::hasThemeIcon("remove")) + { + ui->actionDelete_selected->setIcon(QIcon::fromTheme("remove")); + } + + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); +#ifndef Q_QS_ANDROID + resize(625 * screenRatio, 500 * screenRatio); +#endif + ui->vlUserInterface->setSpacing(6 * screenRatio); + ui->vlUserInterface->setContentsMargins(9 * screenRatio, 9 * screenRatio, 9 * screenRatio, 9 * screenRatio); +} + +void UserInterface::setupDirEnv() +{ + // settings init + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + + bool folderExists; + GTAV_Folder = AppEnv::getGameFolder(&folderExists); + if (folderExists) + { + QDir::setCurrent(GTAV_Folder); + } + else + { + GTAV_Folder = QFileDialog::getExistingDirectory(this, tr("Select RDR 2 Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly); + if (QFileInfo(GTAV_Folder).exists()) + { + folderExists = true; + QDir::setCurrent(GTAV_Folder); + AppEnv::setGameFolder(GTAV_Folder); + + // First time folder selection save + settings.beginGroup("dir"); + if (settings.value("dir", "").toString().isEmpty()) + { + settings.setValue("dir", GTAV_Folder); + } + settings.endGroup(); + } + } + + // profiles init + settings.beginGroup("Profile"); + QString defaultProfile = settings.value("Default", "").toString(); + + bool contentModeOk; + contentMode = settings.value("ContentMode", 0).toInt(&contentModeOk); + if (contentMode != 0 && contentMode != 1 && contentMode != 2) + { + contentMode = 0; + } + + if (folderExists) + { + QDir GTAV_ProfilesDir; + GTAV_ProfilesFolder = GTAV_Folder % "/Profiles"; + GTAV_ProfilesDir.setPath(GTAV_ProfilesFolder); + + GTAV_Profiles = GTAV_ProfilesDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::NoSort); + setupProfileUi(); + + if (GTAV_Profiles.length() == 1) + { + openProfile(GTAV_Profiles.at(0)); + } + else if(GTAV_Profiles.contains(defaultProfile)) + { + openProfile(defaultProfile); + } + } + else + { + GTAV_Profiles = QStringList(); + setupProfileUi(); + } + settings.endGroup(); +} + +void UserInterface::setupProfileUi() +{ + qreal screenRatio = AppEnv::screenRatio(); + if (GTAV_Profiles.isEmpty()) + { + QPushButton *changeDirBtn = new QPushButton(tr("Select &RDR 2 Folder..."), ui->swSelection); + changeDirBtn->setObjectName("cmdChangeDir"); + changeDirBtn->setMinimumSize(0, 40 * screenRatio); + changeDirBtn->setAutoDefault(true); + ui->vlButtons->addWidget(changeDirBtn); + profileBtns += changeDirBtn; + + QObject::connect(changeDirBtn, SIGNAL(clicked(bool)), this, SLOT(changeFolder_clicked())); + } + else for (QString GTAV_Profile : GTAV_Profiles) + { + QPushButton *profileBtn = new QPushButton(GTAV_Profile, ui->swSelection); + profileBtn->setObjectName(GTAV_Profile); + profileBtn->setMinimumSize(0, 40 * screenRatio); + profileBtn->setAutoDefault(true); + ui->vlButtons->addWidget(profileBtn); + profileBtns += profileBtn; + + QObject::connect(profileBtn, SIGNAL(clicked(bool)), this, SLOT(profileButton_clicked())); + } + profileBtns.at(0)->setFocus(); +} + +void UserInterface::changeFolder_clicked() +{ + on_actionSelect_GTA_Folder_triggered(); +} + +void UserInterface::on_cmdReload_clicked() +{ + for (QPushButton *profileBtn : profileBtns) + { + ui->vlButtons->removeWidget(profileBtn); + delete profileBtn; + } + profileBtns.clear(); + setupDirEnv(); +} + +void UserInterface::profileButton_clicked() +{ + QPushButton *profileBtn = (QPushButton*)sender(); + openProfile(profileBtn->objectName()); +} + +void UserInterface::openProfile(const QString &profileName_) +{ + profileOpen = true; + profileName = profileName_; + profileUI = new ProfileInterface(profileDB, crewDB, threadDB); + ui->swProfile->addWidget(profileUI); + ui->swProfile->setCurrentWidget(profileUI); + profileUI->setProfileFolder(GTAV_ProfilesFolder % QDir::separator() % profileName, profileName); + profileUI->settingsApplied(contentMode, false); + profileUI->setupProfileInterface(); + QObject::connect(profileUI, SIGNAL(profileClosed()), this, SLOT(closeProfile())); + QObject::connect(profileUI, SIGNAL(profileLoaded()), this, SLOT(profileLoaded())); + this->setWindowTitle(defaultWindowTitle.arg(profileName)); +} + +void UserInterface::closeProfile() +{ + if (profileOpen) + { + closeProfile_p(); + } + this->setWindowTitle(defaultWindowTitle.arg(tr("Select Profile"))); +} + +void UserInterface::closeProfile_p() +{ + profileOpen = false; + profileName.clear(); + profileName.squeeze(); + ui->menuProfile->setEnabled(false); + ui->actionSelect_profile->setEnabled(false); + ui->swProfile->removeWidget(profileUI); + profileUI->disconnect(); + delete profileUI; +} + +void UserInterface::closeEvent(QCloseEvent *ev) +{ + Q_UNUSED(ev) + threadDB->terminateThread(); +} + +UserInterface::~UserInterface() +{ + if (profileOpen) + { + closeProfile_p(); + } + for (QPushButton *profileBtn : profileBtns) + { + delete profileBtn; + } + profileBtns.clear(); + delete ui; +} + +void UserInterface::on_actionExit_triggered() +{ + this->close(); +} + +void UserInterface::on_actionSelect_profile_triggered() +{ + closeProfile(); + openSelectProfile(); +} + +void UserInterface::openSelectProfile() +{ + // not needed right now +} + +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; +} + +void UserInterface::profileLoaded() +{ + ui->menuProfile->setEnabled(true); + ui->actionSelect_profile->setEnabled(true); +} + +void UserInterface::on_actionSelect_all_triggered() +{ + if (profileOpen) + { + profileUI->selectAllWidgets(); + } +} + +void UserInterface::on_actionDeselect_all_triggered() +{ + if (profileOpen) + { + profileUI->deselectAllWidgets(); + } +} + +void UserInterface::on_actionExport_selected_triggered() +{ + if (profileOpen) + { + profileUI->exportSelected(); + } +} + +void UserInterface::on_actionDelete_selected_triggered() +{ + if (profileOpen) + { + profileUI->deleteSelected(); + } +} + +void UserInterface::on_actionOptions_triggered() +{ + OptionsDialog *optionsDialog = new OptionsDialog(profileDB, this); + optionsDialog->setWindowIcon(windowIcon()); + optionsDialog->commitProfiles(GTAV_Profiles); + QObject::connect(optionsDialog, SIGNAL(settingsApplied(int, bool)), this, SLOT(settingsApplied(int, bool))); + + optionsDialog->setModal(true); +#ifdef Q_OS_ANDROID + // Android ... + optionsDialog->showMaximized(); +#else + optionsDialog->show(); +#endif + optionsDialog->exec(); + + delete optionsDialog; +} + +void UserInterface::on_action_Import_triggered() +{ + if (profileOpen) + { + profileUI->importFiles(); + } +} + +void UserInterface::on_actionOpen_File_triggered() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("FileDialogs"); + +fileDialogPreOpen: + QFileDialog fileDialog(this); + fileDialog.setFileMode(QFileDialog::ExistingFiles); + fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setAcceptMode(QFileDialog::AcceptOpen); + fileDialog.setOption(QFileDialog::DontUseNativeDialog, false); + fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + fileDialog.setWindowTitle(tr("Open File...")); + + QStringList filters; + filters << ProfileInterface::tr("All profile files (*.r5e SRDR* PRDR*)"); + filters << ProfileInterface::tr("RDR 2 Export (*.r5e)"); + filters << ProfileInterface::tr("Savegames files (SRDR*)"); + filters << ProfileInterface::tr("Snapmatic pictures (PRDR*)"); + filters << ProfileInterface::tr("All files (**)"); + fileDialog.setNameFilters(filters); + + QList sidebarUrls = SidebarGenerator::generateSidebarUrls(fileDialog.sidebarUrls()); + + fileDialog.setSidebarUrls(sidebarUrls); + fileDialog.setDirectory(settings.value("OpenDialogDirectory", StandardPaths::documentsLocation()).toString()); + fileDialog.restoreGeometry(settings.value("OpenDialogGeometry","").toByteArray()); + + if (fileDialog.exec()) + { + QStringList selectedFiles = fileDialog.selectedFiles(); + if (selectedFiles.length() == 1) + { + QString selectedFile = selectedFiles.at(0); + if (!openFile(selectedFile, true)) goto fileDialogPreOpen; + } + } + + settings.setValue("OpenDialogGeometry", fileDialog.saveGeometry()); + settings.setValue("OpenDialogDirectory", fileDialog.directory().absolutePath()); + settings.endGroup(); +} + +bool UserInterface::openFile(QString selectedFile, bool warn) +{ + QString selectedFileName = QFileInfo(selectedFile).fileName(); + if (QFile::exists(selectedFile)) + { + if (selectedFileName.left(4) == "PRDR" || selectedFileName.right(4) == ".r5e") + { + SnapmaticPicture *picture = new SnapmaticPicture(selectedFile); + if (picture->readingPicture()) + { + openSnapmaticFile(picture); + delete picture; + return true; + } + else + { + if (warn) QMessageBox::warning(this, tr("Open File"), ProfileInterface::tr("Failed to read Snapmatic picture")); + delete picture; + return false; + } + } + else if (selectedFileName.left(4) == "SRDR") + { + SavegameData *savegame = new SavegameData(selectedFile); + if (savegame->readingSavegame()) + { + openSavegameFile(savegame); + delete savegame; + return true; + } + else + { + if (warn) QMessageBox::warning(this, tr("Open File"), ProfileInterface::tr("Failed to read Savegame file")); + delete savegame; + return false; + } + } + else + { + SnapmaticPicture *picture = new SnapmaticPicture(selectedFile); + SavegameData *savegame = new SavegameData(selectedFile); + if (picture->readingPicture()) + { + delete savegame; + openSnapmaticFile(picture); + delete picture; + return true; + } + else if (savegame->readingSavegame()) + { + delete picture; + openSavegameFile(savegame); + delete savegame; + return true; + } + else + { + delete savegame; + delete picture; + if (warn) QMessageBox::warning(this, tr("Open File"), tr("Can't open %1 because of not valid file format").arg("\""+selectedFileName+"\"")); + return false; + } + } + } + if (warn) QMessageBox::warning(this, tr("Open File"), ProfileInterface::tr("No valid file is selected")); + return false; +} + +void UserInterface::openSnapmaticFile(SnapmaticPicture *picture) +{ + 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(crewNameUpdated()), &picDialog, SLOT(crewNameUpdated())); + 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(); +} + +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(); +} + +void UserInterface::settingsApplied(int _contentMode, bool languageChanged) +{ + if (languageChanged) + { + retranslateUi(); + } + contentMode = _contentMode; + if (profileOpen) + { + profileUI->settingsApplied(contentMode, languageChanged); + } +} + +void UserInterface::on_actionSelect_GTA_Folder_triggered() +{ + QString GTAV_Folder_Temp = QFileDialog::getExistingDirectory(this, tr("Select RDR 2 Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly); + if (QFileInfo(GTAV_Folder_Temp).exists()) + { + if (profileOpen) + { + closeProfile_p(); + } + GTAV_Folder = GTAV_Folder_Temp; + QDir::setCurrent(GTAV_Folder); + AppEnv::setGameFolder(GTAV_Folder); + on_cmdReload_clicked(); + } +} + +void UserInterface::on_action_Enable_In_game_triggered() +{ + if (profileOpen) + { + profileUI->enableSelected(); + } +} + +void UserInterface::on_action_Disable_In_game_triggered() +{ + if (profileOpen) + { + profileUI->disableSelected(); + } +} + +void UserInterface::retranslateUi() +{ + ui->retranslateUi(this); + ui->actionAbout_gta5sync->setText(tr("&About %1").arg(GTA5SYNC_APPSTR)); + QString appVersion = GTA5SYNC_APPVER; +#ifndef GTA5SYNC_BUILDTYPE_REL +#ifdef GTA5SYNC_COMMIT + if (!appVersion.contains("-")) { appVersion = appVersion % "-" % GTA5SYNC_COMMIT; } +#endif +#endif + ui->labVersion->setText(QString("%1 %2").arg(GTA5SYNC_APPSTR, appVersion)); + if (profileOpen) + { + this->setWindowTitle(defaultWindowTitle.arg(profileName)); + } + else + { + this->setWindowTitle(defaultWindowTitle.arg(tr("Select Profile"))); + } +} + +void UserInterface::on_actionQualify_as_Avatar_triggered() +{ + profileUI->massTool(MassTool::Qualify); +} + +void UserInterface::on_actionChange_Players_triggered() +{ + profileUI->massTool(MassTool::Players); +} + +void UserInterface::on_actionSet_Crew_triggered() +{ + profileUI->massTool(MassTool::Crew); +} + +void UserInterface::on_actionSet_Title_triggered() +{ + profileUI->massTool(MassTool::Title); +} diff --git a/UserInterface.h b/UserInterface.h new file mode 100644 index 0000000..d88b281 --- /dev/null +++ b/UserInterface.h @@ -0,0 +1,101 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef USERINTERFACE_H +#define USERINTERFACE_H + +#include "SnapmaticPicture.h" +#include "ProfileInterface.h" +#include "ProfileDatabase.h" +#include "DatabaseThread.h" +#include "CrewDatabase.h" +#include "SavegameData.h" +#include +#include +#include +#include +#include + +namespace Ui { +class UserInterface; +} + +class UserInterface : public QMainWindow +{ + Q_OBJECT +public: + explicit UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent = 0); + void setupDirEnv(); + ~UserInterface(); + +private slots: + void closeProfile(); + void profileLoaded(); + void changeFolder_clicked(); + void profileButton_clicked(); + void on_cmdReload_clicked(); + void on_actionExit_triggered(); + void on_actionSelect_profile_triggered(); + void on_actionAbout_gta5sync_triggered(); + void on_actionSelect_all_triggered(); + void on_actionDeselect_all_triggered(); + void on_actionExport_selected_triggered(); + void on_actionDelete_selected_triggered(); + void on_actionOptions_triggered(); + void on_action_Import_triggered(); + void on_actionOpen_File_triggered(); + void on_actionSelect_GTA_Folder_triggered(); + void on_action_Enable_In_game_triggered(); + void on_action_Disable_In_game_triggered(); + void on_actionQualify_as_Avatar_triggered(); + void on_actionChange_Players_triggered(); + void on_actionSet_Crew_triggered(); + void on_actionSet_Title_triggered(); + void settingsApplied(int contentMode, bool languageChanged); + +protected: + void closeEvent(QCloseEvent *ev); + +private: + ProfileDatabase *profileDB; + CrewDatabase *crewDB; + DatabaseThread *threadDB; + Ui::UserInterface *ui; + ProfileInterface *profileUI; + QList profileBtns; + QString profileName; + bool profileOpen; + int contentMode; + QString language; + QString defaultWindowTitle; + QString GTAV_Folder; + QString GTAV_ProfilesFolder; + QStringList GTAV_Profiles; + void setupProfileUi(); + void openProfile(const QString &profileName); + void closeProfile_p(); + void openSelectProfile(); + void retranslateUi(); + + // Open File + bool openFile(QString selectedFile, bool warn = true); + void openSavegameFile(SavegameData *savegame); + void openSnapmaticFile(SnapmaticPicture *picture); +}; + +#endif // USERINTERFACE_H diff --git a/UserInterface.ui b/UserInterface.ui new file mode 100644 index 0000000..c49a5d3 --- /dev/null +++ b/UserInterface.ui @@ -0,0 +1,396 @@ + + + UserInterface + + + + 0 + 0 + 625 + 500 + + + + + 625 + 500 + + + + %2 - %1 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + + + 6 + + + 9 + + + 9 + + + 9 + + + 9 + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + Select profile + + + Qt::AlignCenter + + + true + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + %1 %2 + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Reload profile overview + + + &Reload + + + true + + + + + + + + 0 + 0 + + + + Close %1 + + + &Close + + + true + + + + + + + + + + + + + + + 0 + 0 + 625 + 23 + + + + + &File + + + + + + + + + + &Help + + + + + + &Edit + + + + + + &Profile + + + + &Selection visibility + + + + + + + Selection &mass tools + + + + + + + + + + + + + + + + + + + + + + + + &About %1 + + + Ctrl+P + + + + + &Exit + + + Exit + + + Ctrl+Q + + + + + Close &Profile + + + Ctrl+End + + + + + &Settings + + + Ctrl+S + + + + + Select &All + + + Ctrl+A + + + + + &Deselect All + + + Ctrl+D + + + + + &Export selected... + + + Ctrl+E + + + + + &Remove selected + + + Ctrl+Del + + + + + &Import files... + + + Ctrl+I + + + + + &Open File... + + + Ctrl+O + + + + + Select &RDR 2 Folder... + + + Select RDR 2 Folder... + + + Ctrl+G + + + + + Show In-gam&e + + + Shift+E + + + + + Hi&de In-game + + + Shift+D + + + + + Change &Title... + + + Shift+T + + + + + Change &Crew... + + + Shift+C + + + + + &Qualify as Avatar + + + Shift+Q + + + + + Change &Players... + + + Shift+P + + + + + + + cmdClose + clicked() + UserInterface + close() + + + 572 + 476 + + + 312 + 249 + + + + + diff --git a/anpro/imagecropper.cpp b/anpro/imagecropper.cpp new file mode 100644 index 0000000..f311116 --- /dev/null +++ b/anpro/imagecropper.cpp @@ -0,0 +1,519 @@ +/***************************************************************************** +* ImageCropper Qt Widget for cropping images +* Copyright (C) 2013 Dimka Novikov, to@dimkanovikov.pro +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "imagecropper.h" + +#include +#include + +namespace { + static const QSize WIDGET_MINIMUM_SIZE(470, 470); +} + +ImageCropper::ImageCropper(QWidget* parent) : + QWidget(parent), + pimpl(new ImageCropperPrivate) +{ + setMinimumSize(WIDGET_MINIMUM_SIZE); + setMouseTracking(true); +} + +ImageCropper::~ImageCropper() +{ + delete pimpl; +} + +void ImageCropper::setImage(const QPixmap& _image) +{ + pimpl->imageForCropping = _image; + update(); +} + +void ImageCropper::setBackgroundColor(const QColor& _backgroundColor) +{ + pimpl->backgroundColor = _backgroundColor; + update(); +} + +void ImageCropper::setCroppingRectBorderColor(const QColor& _borderColor) +{ + pimpl->croppingRectBorderColor = _borderColor; + update(); +} + +void ImageCropper::setProportion(const QSizeF& _proportion) +{ + // Пропорции хранÑÑ‚ÑÑ Ð² коÑффициентах Ð¿Ñ€Ð¸Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñторон + // Таким образом, при изменении размера облаÑти выделениÑ, + // размеры Ñторон изменÑÑŽÑ‚ÑÑ Ð½Ð° размер завиÑÑщий от + // коÑффициентов приращениÑ. + + // Сохраним пропорциональную завиÑимоÑÑ‚ÑŒ облаÑти Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð² коÑффициентах Ð¿Ñ€Ð¸Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñторон + if (pimpl->proportion != _proportion) { + pimpl->proportion = _proportion; + // ... раÑчитаем коÑффициенты + float heightDelta = (float)_proportion.height() / _proportion.width(); + float widthDelta = (float)_proportion.width() / _proportion.height(); + // ... Ñохраним коÑффициенты + pimpl->deltas.setHeight(heightDelta); + pimpl->deltas.setWidth(widthDelta); + } + + // Обновим пропорции облаÑти Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ + if ( pimpl->isProportionFixed ) { + float croppintRectSideRelation = + (float)pimpl->croppingRect.width() / pimpl->croppingRect.height(); + float proportionSideRelation = + (float)pimpl->proportion.width() / pimpl->proportion.height(); + // ЕÑли облаÑÑ‚ÑŒ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½Ðµ ÑоответÑтвует необходимым пропорциÑм обновим её + if (croppintRectSideRelation != proportionSideRelation) { + bool widthShotrerThenHeight = + pimpl->croppingRect.width() < pimpl->croppingRect.height(); + // ... уÑтановим размер той Ñтороны, что длиннее + if (widthShotrerThenHeight) { + pimpl->croppingRect.setHeight( + pimpl->croppingRect.width() * pimpl->deltas.height()); + } else { + pimpl->croppingRect.setWidth( + pimpl->croppingRect.height() * pimpl->deltas.width()); + } + // ... перериÑуем виджет + update(); + } + } + +} + +void ImageCropper::setProportionFixed(const bool _isFixed) +{ + if (pimpl->isProportionFixed != _isFixed) { + pimpl->isProportionFixed = _isFixed; + setProportion(pimpl->proportion); + } +} + +const QPixmap ImageCropper::cropImage() +{ + // Получим размер отображаемого Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ + QSize scaledImageSize = + pimpl->imageForCropping.scaled( + this->size(), Qt::KeepAspectRatio, Qt::FastTransformation + ).size(); + // Определим раÑÑтоÑние от левого и верхнего краёв + float leftDelta = 0; + float topDelta = 0; + const float HALF_COUNT = 2; + if (this->size().height() == scaledImageSize.height()) { + leftDelta = (this->width() - scaledImageSize.width()) / HALF_COUNT; + } else { + topDelta = (this->height() - scaledImageSize.height()) / HALF_COUNT; + } + // Определим пропорцию облаÑти обрезки по отношению к иÑходному изображению + float xScale = (float)pimpl->imageForCropping.width() / scaledImageSize.width(); + float yScale = (float)pimpl->imageForCropping.height() / scaledImageSize.height(); + // РаÑчитаем облаÑÑ‚ÑŒ обрезки Ñ ÑƒÑ‡Ñ‘Ñ‚Ð¾Ð¼ коррекции размеров иÑходного Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ + QRectF realSizeRect( + QPointF(pimpl->croppingRect.left() - leftDelta, pimpl->croppingRect.top() - topDelta), + pimpl->croppingRect.size()); + // ... корректируем левый и верхний ÐºÑ€Ð°Ñ + realSizeRect.setLeft((pimpl->croppingRect.left() - leftDelta) * xScale); + realSizeRect.setTop ((pimpl->croppingRect.top() - topDelta) * yScale); + // ... корректируем размер + realSizeRect.setWidth(pimpl->croppingRect.width() * xScale); + realSizeRect.setHeight(pimpl->croppingRect.height() * yScale); + // Получаем обрезанное изображение + return pimpl->imageForCropping.copy(realSizeRect.toRect()); +} + +// ******** +// Protected section + +void ImageCropper::paintEvent(QPaintEvent* _event) +{ + QWidget::paintEvent( _event ); + // + QPainter widgetPainter(this); + // РиÑуем изображение по центру виджета + { + // ... подгоним изображение Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ размеру виджета + QPixmap scaledImage = + pimpl->imageForCropping.scaled(this->size(), Qt::KeepAspectRatio, Qt::FastTransformation); + // ... заливаем фон + widgetPainter.fillRect( this->rect(), pimpl->backgroundColor ); + // ... риÑуем изображение по центру виджета + if ( this->size().height() == scaledImage.height() ) { + widgetPainter.drawPixmap( ( this->width() - scaledImage.width() ) / 2, 0, scaledImage ); + } else { + widgetPainter.drawPixmap( 0, ( this->height() - scaledImage.height() ) / 2, scaledImage ); + } + } + // РиÑуем облаÑÑ‚ÑŒ обрезки + { + // ... еÑли Ñто первое отображение поÑле инициилизации, то центруем облаÑто обрезки + if (pimpl->croppingRect.isNull()) { + const int width = WIDGET_MINIMUM_SIZE.width()/2; + const int height = WIDGET_MINIMUM_SIZE.height()/2; + pimpl->croppingRect.setSize(QSize(width, height)); + float x = (this->width() - pimpl->croppingRect.width())/2; + float y = (this->height() - pimpl->croppingRect.height())/2; + pimpl->croppingRect.moveTo(x, y); + } + + // ... риÑуем затемненную облаÑÑ‚ÑŒ + QPainterPath p; + p.addRect(pimpl->croppingRect); + p.addRect(this->rect()); + widgetPainter.setBrush(QBrush(QColor(0,0,0,120))); + widgetPainter.setPen(Qt::transparent); + widgetPainter.drawPath(p); + // Рамка и контрольные точки + widgetPainter.setPen(pimpl->croppingRectBorderColor); + // ... риÑуем прÑмоугольник облаÑти обрезки + { + widgetPainter.setBrush(QBrush(Qt::transparent)); + widgetPainter.drawRect(pimpl->croppingRect); + } + // ... риÑуем контрольные точки + { + widgetPainter.setBrush(QBrush(pimpl->croppingRectBorderColor)); + // Ð’Ñпомогательные X координаты + int leftXCoord = pimpl->croppingRect.left() - 2; + int centerXCoord = pimpl->croppingRect.center().x() - 3; + int rightXCoord = pimpl->croppingRect.right() - 2; + // Ð’Ñпомогательные Y координаты + int topYCoord = pimpl->croppingRect.top() - 2; + int middleYCoord = pimpl->croppingRect.center().y() - 3; + int bottomYCoord = pimpl->croppingRect.bottom() - 2; + // + const QSize pointSize(6, 6); + // + QVector points; + points + // Ð»ÐµÐ²Ð°Ñ Ñторона + << QRect( QPoint(leftXCoord, topYCoord), pointSize ) + << QRect( QPoint(leftXCoord, middleYCoord), pointSize ) + << QRect( QPoint(leftXCoord, bottomYCoord), pointSize ) + // центр + << QRect( QPoint(centerXCoord, topYCoord), pointSize ) + << QRect( QPoint(centerXCoord, middleYCoord), pointSize ) + << QRect( QPoint(centerXCoord, bottomYCoord), pointSize ) + // Ð¿Ñ€Ð°Ð²Ð°Ñ Ñторона + << QRect( QPoint(rightXCoord, topYCoord), pointSize ) + << QRect( QPoint(rightXCoord, middleYCoord), pointSize ) + << QRect( QPoint(rightXCoord, bottomYCoord), pointSize ); + // + widgetPainter.drawRects( points ); + } + // ... риÑуем пунктирные линии + { + QPen dashPen(pimpl->croppingRectBorderColor); + dashPen.setStyle(Qt::DashLine); + widgetPainter.setPen(dashPen); + // ... Ð²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ + widgetPainter.drawLine( + QPoint(pimpl->croppingRect.center().x(), pimpl->croppingRect.top()), + QPoint(pimpl->croppingRect.center().x(), pimpl->croppingRect.bottom()) ); + // ... Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ + widgetPainter.drawLine( + QPoint(pimpl->croppingRect.left(), pimpl->croppingRect.center().y()), + QPoint(pimpl->croppingRect.right(), pimpl->croppingRect.center().y()) ); + } + } + // + widgetPainter.end(); +} + +void ImageCropper::mousePressEvent(QMouseEvent* _event) +{ + if (_event->button() == Qt::LeftButton) { + pimpl->isMousePressed = true; + pimpl->startMousePos = _event->pos(); + pimpl->lastStaticCroppingRect = pimpl->croppingRect; + } + // + updateCursorIcon(_event->pos()); +} + +void ImageCropper::mouseMoveEvent(QMouseEvent* _event) +{ + QPointF mousePos = _event->pos(); // отноÑительно ÑÐµÐ±Ñ (виджета) + // + if (!pimpl->isMousePressed) { + // Обработка обычного ÑоÑтоÑниÑ, Ñ‚.е. не изменÑетÑÑ Ñ€Ð°Ð·Ð¼ÐµÑ€ + // облаÑти обрезки, и она не перемещаетÑÑ Ð¿Ð¾ виджету + pimpl->cursorPosition = cursorPosition(pimpl->croppingRect, mousePos); + updateCursorIcon(mousePos); + } else if (pimpl->cursorPosition != CursorPositionUndefined) { + // Обработка дейÑтвий над облаÑтью обрезки + // ... определим Ñмещение курÑора мышки + QPointF mouseDelta; + mouseDelta.setX( mousePos.x() - pimpl->startMousePos.x() ); + mouseDelta.setY( mousePos.y() - pimpl->startMousePos.y() ); + // + if (pimpl->cursorPosition != CursorPositionMiddle) { + // ... изменÑем размер облаÑти обрезки + QRectF newGeometry = + calculateGeometry( + pimpl->lastStaticCroppingRect, + pimpl->cursorPosition, + mouseDelta); + // ... пользователь пытаетÑÑ Ð²Ñ‹Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒ облаÑÑ‚ÑŒ обрезки наизнанку + if (!newGeometry.isNull()) { + pimpl->croppingRect = newGeometry; + } + } else { + // ... перемещаем облаÑÑ‚ÑŒ обрезки + pimpl->croppingRect.moveTo( pimpl->lastStaticCroppingRect.topLeft() + mouseDelta ); + } + // ПерериÑуем виджет + update(); + } +} + +void ImageCropper::mouseReleaseEvent(QMouseEvent* _event) +{ + pimpl->isMousePressed = false; + updateCursorIcon(_event->pos()); +} + +// ******** +// Private section + +namespace { + // ÐаходитÑÑ Ð»Ð¸ точка Ñ€Ñдом Ñ ÐºÐ¾Ð¾Ñ€Ð´Ð¸Ð½Ð°Ñ‚Ð¾Ð¹ Ñтороны + static bool isPointNearSide (const int _sideCoordinate, const int _pointCoordinate) + { + static const int indent = 10; + return (_sideCoordinate - indent) < _pointCoordinate && _pointCoordinate < (_sideCoordinate + indent); + } +} + +CursorPosition ImageCropper::cursorPosition(const QRectF& _cropRect, const QPointF& _mousePosition) +{ + CursorPosition cursorPosition = CursorPositionUndefined; + // + if ( _cropRect.contains( _mousePosition ) ) { + // ДвухÑтороннее направление + if (isPointNearSide(_cropRect.top(), _mousePosition.y()) && + isPointNearSide(_cropRect.left(), _mousePosition.x())) { + cursorPosition = CursorPositionTopLeft; + } else if (isPointNearSide(_cropRect.bottom(), _mousePosition.y()) && + isPointNearSide(_cropRect.left(), _mousePosition.x())) { + cursorPosition = CursorPositionBottomLeft; + } else if (isPointNearSide(_cropRect.top(), _mousePosition.y()) && + isPointNearSide(_cropRect.right(), _mousePosition.x())) { + cursorPosition = CursorPositionTopRight; + } else if (isPointNearSide(_cropRect.bottom(), _mousePosition.y()) && + isPointNearSide(_cropRect.right(), _mousePosition.x())) { + cursorPosition = CursorPositionBottomRight; + // ОдноÑтороннее направление + } else if (isPointNearSide(_cropRect.left(), _mousePosition.x())) { + cursorPosition = CursorPositionLeft; + } else if (isPointNearSide(_cropRect.right(), _mousePosition.x())) { + cursorPosition = CursorPositionRight; + } else if (isPointNearSide(_cropRect.top(), _mousePosition.y())) { + cursorPosition = CursorPositionTop; + } else if (isPointNearSide(_cropRect.bottom(), _mousePosition.y())) { + cursorPosition = CursorPositionBottom; + // Без Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ + } else { + cursorPosition = CursorPositionMiddle; + } + } + // + return cursorPosition; +} + +void ImageCropper::updateCursorIcon(const QPointF& _mousePosition) +{ + QCursor cursorIcon; + // + switch (cursorPosition(pimpl->croppingRect, _mousePosition)) + { + case CursorPositionTopRight: + case CursorPositionBottomLeft: + cursorIcon = QCursor(Qt::SizeBDiagCursor); + break; + case CursorPositionTopLeft: + case CursorPositionBottomRight: + cursorIcon = QCursor(Qt::SizeFDiagCursor); + break; + case CursorPositionTop: + case CursorPositionBottom: + cursorIcon = QCursor(Qt::SizeVerCursor); + break; + case CursorPositionLeft: + case CursorPositionRight: + cursorIcon = QCursor(Qt::SizeHorCursor); + break; + case CursorPositionMiddle: + cursorIcon = pimpl->isMousePressed ? + QCursor(Qt::ClosedHandCursor) : + QCursor(Qt::OpenHandCursor); + break; + case CursorPositionUndefined: + default: + cursorIcon = QCursor(Qt::ArrowCursor); + break; + } + // + this->setCursor(cursorIcon); +} + +const QRectF ImageCropper::calculateGeometry( + const QRectF& _sourceGeometry, + const CursorPosition _cursorPosition, + const QPointF& _mouseDelta + ) +{ + QRectF resultGeometry; + // + if ( pimpl->isProportionFixed ) { + resultGeometry = + calculateGeometryWithFixedProportions( + _sourceGeometry, _cursorPosition, _mouseDelta, pimpl->deltas); + } else { + resultGeometry = + calculateGeometryWithCustomProportions( + _sourceGeometry, _cursorPosition, _mouseDelta); + } + // ЕÑли пользователь пытаетÑÑ Ð²Ñ‹Ð²ÐµÑ€Ð½ÑƒÑ‚ÑŒ облаÑÑ‚ÑŒ обрезки наизнанку, + // возвращаем null-прÑмоугольник + if ((resultGeometry.left() >= resultGeometry.right()) || + (resultGeometry.top() >= resultGeometry.bottom())) { + resultGeometry = QRect(); + } + // + return resultGeometry; +} + +const QRectF ImageCropper::calculateGeometryWithCustomProportions( + const QRectF& _sourceGeometry, + const CursorPosition _cursorPosition, + const QPointF& _mouseDelta + ) +{ + QRectF resultGeometry = _sourceGeometry; + // + switch ( _cursorPosition ) + { + case CursorPositionTopLeft: + resultGeometry.setLeft( _sourceGeometry.left() + _mouseDelta.x() ); + resultGeometry.setTop ( _sourceGeometry.top() + _mouseDelta.y() ); + break; + case CursorPositionTopRight: + resultGeometry.setTop ( _sourceGeometry.top() + _mouseDelta.y() ); + resultGeometry.setRight( _sourceGeometry.right() + _mouseDelta.x() ); + break; + case CursorPositionBottomLeft: + resultGeometry.setBottom( _sourceGeometry.bottom() + _mouseDelta.y() ); + resultGeometry.setLeft ( _sourceGeometry.left() + _mouseDelta.x() ); + break; + case CursorPositionBottomRight: + resultGeometry.setBottom( _sourceGeometry.bottom() + _mouseDelta.y() ); + resultGeometry.setRight ( _sourceGeometry.right() + _mouseDelta.x() ); + break; + case CursorPositionTop: + resultGeometry.setTop( _sourceGeometry.top() + _mouseDelta.y() ); + break; + case CursorPositionBottom: + resultGeometry.setBottom( _sourceGeometry.bottom() + _mouseDelta.y() ); + break; + case CursorPositionLeft: + resultGeometry.setLeft( _sourceGeometry.left() + _mouseDelta.x() ); + break; + case CursorPositionRight: + resultGeometry.setRight( _sourceGeometry.right() + _mouseDelta.x() ); + break; + default: + break; + } + // + return resultGeometry; +} + +const QRectF ImageCropper::calculateGeometryWithFixedProportions( + const QRectF& _sourceGeometry, + const CursorPosition _cursorPosition, + const QPointF& _mouseDelta, + const QSizeF& _deltas + ) +{ + QRectF resultGeometry = _sourceGeometry; + // + switch (_cursorPosition) + { + case CursorPositionLeft: + resultGeometry.setTop(_sourceGeometry.top() + _mouseDelta.x() * _deltas.height()); + resultGeometry.setLeft(_sourceGeometry.left() + _mouseDelta.x()); + break; + case CursorPositionRight: + resultGeometry.setTop(_sourceGeometry.top() - _mouseDelta.x() * _deltas.height()); + resultGeometry.setRight(_sourceGeometry.right() + _mouseDelta.x()); + break; + case CursorPositionTop: + resultGeometry.setTop(_sourceGeometry.top() + _mouseDelta.y()); + resultGeometry.setRight(_sourceGeometry.right() - _mouseDelta.y() * _deltas.width()); + break; + case CursorPositionBottom: + resultGeometry.setBottom(_sourceGeometry.bottom() + _mouseDelta.y()); + resultGeometry.setRight(_sourceGeometry.right() + _mouseDelta.y() * _deltas.width()); + break; + case CursorPositionTopLeft: + if ((_mouseDelta.x() * _deltas.height()) < (_mouseDelta.y())) { + resultGeometry.setTop(_sourceGeometry.top() + _mouseDelta.x() * _deltas.height()); + resultGeometry.setLeft(_sourceGeometry.left() + _mouseDelta.x()); + } else { + resultGeometry.setTop(_sourceGeometry.top() + _mouseDelta.y()); + resultGeometry.setLeft(_sourceGeometry.left() + _mouseDelta.y() * _deltas.width()); + } + break; + case CursorPositionTopRight: + if ((_mouseDelta.x() * _deltas.height() * -1) < (_mouseDelta.y())) { + resultGeometry.setTop(_sourceGeometry.top() - _mouseDelta.x() * _deltas.height()); + resultGeometry.setRight(_sourceGeometry.right() + _mouseDelta.x() ); + } else { + resultGeometry.setTop(_sourceGeometry.top() + _mouseDelta.y()); + resultGeometry.setRight(_sourceGeometry.right() - _mouseDelta.y() * _deltas.width()); + } + break; + case CursorPositionBottomLeft: + if ((_mouseDelta.x() * _deltas.height()) < (_mouseDelta.y() * -1)) { + resultGeometry.setBottom(_sourceGeometry.bottom() - _mouseDelta.x() * _deltas.height()); + resultGeometry.setLeft(_sourceGeometry.left() + _mouseDelta.x()); + } else { + resultGeometry.setBottom(_sourceGeometry.bottom() + _mouseDelta.y()); + resultGeometry.setLeft(_sourceGeometry.left() - _mouseDelta.y() * _deltas.width()); + } + break; + case CursorPositionBottomRight: + if ((_mouseDelta.x() * _deltas.height()) > (_mouseDelta.y())) { + resultGeometry.setBottom(_sourceGeometry.bottom() + _mouseDelta.x() * _deltas.height()); + resultGeometry.setRight(_sourceGeometry.right() + _mouseDelta.x()); + } else { + resultGeometry.setBottom(_sourceGeometry.bottom() + _mouseDelta.y()); + resultGeometry.setRight(_sourceGeometry.right() + _mouseDelta.y() * _deltas.width()); + } + break; + default: + break; + } + // + return resultGeometry; +} + diff --git a/anpro/imagecropper.h b/anpro/imagecropper.h new file mode 100644 index 0000000..a5a19a0 --- /dev/null +++ b/anpro/imagecropper.h @@ -0,0 +1,103 @@ +/***************************************************************************** +* ImageCropper Qt Widget for cropping images +* Copyright (C) 2013 Dimka Novikov, to@dimkanovikov.pro +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef IMAGECROPPER_H +#define IMAGECROPPER_H + +#include "imagecropper_p.h" +#include "imagecropper_e.h" + +#include + +class ImageCropper : public QWidget +{ + Q_OBJECT + +public: + ImageCropper(QWidget *parent = 0); + ~ImageCropper(); + +public slots: + // УÑтановить изображение Ð´Ð»Ñ Ð¾Ð±Ñ€ÐµÐ·ÐºÐ¸ + void setImage(const QPixmap& _image); + // УÑтановить цвет фона виджета обрезки + void setBackgroundColor(const QColor& _backgroundColor); + // УÑтановить цвет рамки облаÑти обрезки + void setCroppingRectBorderColor(const QColor& _borderColor); + // УÑтановить пропорции облаÑти Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ + void setProportion(const QSizeF& _proportion); + // ИÑпользовать фикÑированные пропорции облаÑти Ð²Ð¸Ð´ÐµÐ»ÐµÐ½Ð¸Ñ + void setProportionFixed(const bool _isFixed); + +public: + // Обрезать изображение + const QPixmap cropImage(); + +protected: + virtual void paintEvent(QPaintEvent* _event); + virtual void mousePressEvent(QMouseEvent* _event); + virtual void mouseMoveEvent(QMouseEvent* _event); + virtual void mouseReleaseEvent(QMouseEvent* _event); + +private: + // Определение меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐºÑƒÑ€Ñора над виджетом + CursorPosition cursorPosition(const QRectF& _cropRect, const QPointF& _mousePosition); + // Обновить иконку курÑора ÑоответÑтвующую меÑтоположению мыши + void updateCursorIcon(const QPointF& _mousePosition); + + // Получить размер виджета поÑле его Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ñ‹ÑˆÑŒÑŽ + // -------- + // Контракты: + // 1. Метод должен вызыватьÑÑ, только при зажатой кнопке мыши + // (Ñ‚.е. при перемещении или изменении размера виджета) + // -------- + // Ð’ Ñлучае неудачи возвращает null-прÑмоугольник + const QRectF calculateGeometry( + const QRectF& _sourceGeometry, + const CursorPosition _cursorPosition, + const QPointF& _mouseDelta + ); + // Получить размер виджета поÑле его Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ñ‹ÑˆÑŒÑŽ + // Метод изменÑет виджет не ÑохранÑÑ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ñ… пропорций Ñторон + // ------ + // Контракты: + // 1. Метод должен вызыватьÑÑ, только при зажатой кнопке мыши + // (Ñ‚.е. при перемещении или изменении размера виджета) + const QRectF calculateGeometryWithCustomProportions( + const QRectF& _sourceGeometry, + const CursorPosition _cursorPosition, + const QPointF& _mouseDelta + ); + // Получить размер виджета поÑле его Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ñ‹ÑˆÑŒÑŽ + // Метод изменÑет виджет ÑохранÑÑ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ðµ пропорции Ñторон + // ------ + // Контракты: + // 1. Метод должен вызыватьÑÑ, только при зажатой кнопке мыши + // (Ñ‚.е. при перемещении или изменении размера виджета) + const QRectF calculateGeometryWithFixedProportions(const QRectF &_sourceGeometry, + const CursorPosition _cursorPosition, + const QPointF &_mouseDelta, + const QSizeF &_deltas + ); + +private: + // Private data implementation + ImageCropperPrivate* pimpl; +}; + +#endif // IMAGECROPPER_H diff --git a/anpro/imagecropper_e.h b/anpro/imagecropper_e.h new file mode 100644 index 0000000..a9ced6a --- /dev/null +++ b/anpro/imagecropper_e.h @@ -0,0 +1,36 @@ +/***************************************************************************** +* ImageCropper Qt Widget for cropping images +* Copyright (C) 2013 Dimka Novikov, to@dimkanovikov.pro +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef IMAGECROPPER_E_H +#define IMAGECROPPER_E_H + +enum CursorPosition +{ + CursorPositionUndefined, + CursorPositionMiddle, + CursorPositionTop, + CursorPositionBottom, + CursorPositionLeft, + CursorPositionRight, + CursorPositionTopLeft, + CursorPositionTopRight, + CursorPositionBottomLeft, + CursorPositionBottomRight +}; + +#endif // IMAGECROPPER_E_H diff --git a/anpro/imagecropper_p.h b/anpro/imagecropper_p.h new file mode 100644 index 0000000..bd09dbb --- /dev/null +++ b/anpro/imagecropper_p.h @@ -0,0 +1,76 @@ +/***************************************************************************** +* ImageCropper Qt Widget for cropping images +* Copyright (C) 2013 Dimka Novikov, to@dimkanovikov.pro +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef IMAGECROPPER_P_H +#define IMAGECROPPER_P_H + +#include "imagecropper_e.h" + +#include +#include +#include + +namespace { + const QRect INIT_CROPPING_RECT = QRect(); + const QSizeF INIT_PROPORTION = QSizeF(1.0, 1.0); +} + +class ImageCropperPrivate { +public: + ImageCropperPrivate() : + imageForCropping(QPixmap()), + croppingRect(INIT_CROPPING_RECT), + lastStaticCroppingRect(QRect()), + cursorPosition(CursorPositionUndefined), + isMousePressed(false), + isProportionFixed(false), + startMousePos(QPoint()), + proportion(INIT_PROPORTION), + deltas(INIT_PROPORTION), + backgroundColor(Qt::black), + croppingRectBorderColor(Qt::white) + {} + +public: + // Изображение Ð´Ð»Ñ Ð¾Ð±Ñ€ÐµÐ·ÐºÐ¸ + QPixmap imageForCropping; + // ОблаÑÑ‚ÑŒ обрезки + QRectF croppingRect; + // ПоÑледнÑÑ Ñ„Ð¸ÐºÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¾Ð±Ð»Ð°ÑÑ‚ÑŒ обрезки + QRectF lastStaticCroppingRect; + // ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ ÐºÑƒÑ€Ñора отноÑительно облаÑти обрезки + CursorPosition cursorPosition; + // Зажата ли Ð»ÐµÐ²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° мыши + bool isMousePressed; + // ФикÑировать пропорции облаÑти обрезки + bool isProportionFixed; + // ÐÐ°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ ÐºÑƒÑ€Ñора при изменении размера облаÑти обрезки + QPointF startMousePos; + // Пропорции + QSizeF proportion; + // ÐŸÑ€Ð¸Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ + // width - приращение по x + // height - приращение по y + QSizeF deltas; + // Цвет заливки фона под изображением + QColor backgroundColor; + // Цвет рамки облаÑти обрезки + QColor croppingRectBorderColor; +}; + +#endif // IMAGECROPPER_P_H diff --git a/config.h b/config.h new file mode 100644 index 0000000..dd1530f --- /dev/null +++ b/config.h @@ -0,0 +1,155 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef CONFIG_H +#define CONFIG_H + +#if __cplusplus +#include +#endif + +#ifndef GTA5SYNC_APPVENDOR +#define GTA5SYNC_APPVENDOR "Syping" +#endif + +#ifndef GTA5SYNC_APPVENDORLINK +#define GTA5SYNC_APPVENDORLINK "g5e://about?U3lwaW5n:R2l0TGFiOiA8YSBocmVmPSJodHRwczovL2dpdGxhYi5jb20vU3lwaW5nIj5TeXBpbmc8L2E+PGJyLz5HaXRIdWI6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TeXBpbmciPlN5cGluZzwvYT48YnIvPlNvY2lhbCBDbHViOiA8YSBocmVmPSJodHRwczovL3NvY2lhbGNsdWIucm9ja3N0YXJnYW1lcy5jb20vbWVtYmVyL1N5cGluZy80NjMwMzA1NiI+U3lwaW5nPC9hPg==" +#endif + +#ifndef GTA5SYNC_APPSTR +#define GTA5SYNC_APPSTR "rdr2view" +#endif + +#ifndef GTA5SYNC_APPDES +#define GTA5SYNC_APPDES "INSERT YOUR APPLICATION DESCRIPTION HERE" +#endif + +#ifndef GTA5SYNC_COPYRIGHT +#define GTA5SYNC_COPYRIGHT "2016-2019" +#endif + +#ifndef GTA5SYNC_APPVER +#define GTA5SYNC_APPVER "0.1.0" +#endif + +#if __cplusplus +#ifdef GTA5SYNC_BUILDTYPE_REL +#ifndef GTA5SYNC_BUILDTYPE +#define GTA5SYNC_BUILDTYPE QT_TRANSLATE_NOOP("AboutDialog", "Release") +#endif +#endif + +#ifdef GTA5SYNC_BUILDTYPE_RC +#ifndef GTA5SYNC_BUILDTYPE +#define GTA5SYNC_BUILDTYPE QT_TRANSLATE_NOOP("AboutDialog", "Release Candidate") +#endif +#endif + +#ifdef GTA5SYNC_BUILDTYPE_DAILY +#ifndef GTA5SYNC_BUILDTYPE +#define GTA5SYNC_BUILDTYPE QT_TRANSLATE_NOOP("AboutDialog", "Daily Build") +#endif +#endif + +#ifdef GTA5SYNC_BUILDTYPE_DEV +#ifndef GTA5SYNC_BUILDTYPE +#define GTA5SYNC_BUILDTYPE QT_TRANSLATE_NOOP("AboutDialog", "Developer") +#endif +#endif + +#ifdef GTA5SYNC_BUILDTYPE_BETA +#ifndef GTA5SYNC_BUILDTYPE +#define GTA5SYNC_BUILDTYPE QT_TRANSLATE_NOOP("AboutDialog", "Beta") +#endif +#endif + +#ifdef GTA5SYNC_BUILDTYPE_ALPHA +#ifndef GTA5SYNC_BUILDTYPE +#define GTA5SYNC_BUILDTYPE QT_TRANSLATE_NOOP("AboutDialog", "Alpha") +#endif +#endif + +#ifndef GTA5SYNC_BUILDTYPE +#define GTA5SYNC_BUILDTYPE QT_TRANSLATE_NOOP("AboutDialog", "Custom") +#endif + +#ifndef GTA5SYNC_BUILDCODE +#define GTA5SYNC_BUILDCODE "Source" +#endif + +#ifdef GTA5SYNC_QCONF +#ifndef GTA5SYNC_SHARE +#define GTA5SYNC_SHARE "RUNDIR:SEPARATOR:..SEPARATOR:share" +#endif +#ifndef GTA5SYNC_LANG +#define GTA5SYNC_LANG "QCONFLANG:" +#endif +#ifndef GTA5SYNC_PLUG +#define GTA5SYNC_PLUG "QCONFPLUG:" +#endif +#ifdef GTA5SYNC_QCONF_IN +#ifndef GTA5SYNC_INLANG +#define GTA5SYNC_INLANG ":/tr" +#endif +#endif +#endif + +#ifndef GTA5SYNC_SHARE +#define GTA5SYNC_SHARE "RUNDIR:" +#endif + +#ifndef GTA5SYNC_LANG +#define GTA5SYNC_LANG "SHAREDDIR:SEPARATOR:lang" +#endif + +#ifndef GTA5SYNC_PLUG +#define GTA5SYNC_PLUG "RUNDIR:SEPARATOR:plugins" +#endif + +#ifdef GTA5SYNC_WINRT +#undef GTA5SYNC_WIN +#endif + +#ifndef GTA5SYNC_COMPILER +#ifdef __clang__ +#ifndef Q_OS_MAC +#define GTA5SYNC_COMPILER QString("Clang %1.%2.%3").arg(QString::number(__clang_major__), QString::number(__clang_minor__), QString::number(__clang_patchlevel__)) +#else +#define GTA5SYNC_COMPILER QString("Apple LLVM %1.%2.%3").arg(QString::number(__clang_major__), QString::number(__clang_minor__), QString::number(__clang_patchlevel__)) +#endif +#elif defined(__GNUC__) +#define GTA5SYNC_COMPILER QString("GCC %1.%2.%3").arg(QString::number(__GNUC__), QString::number(__GNUC_MINOR__), QString::number(__GNUC_PATCHLEVEL__)) +#elif defined(__GNUG__) +#define GTA5SYNC_COMPILER QString("GCC %1.%2.%3").arg(QString::number(__GNUG__), QString::number(__GNUC_MINOR__), QString::number(__GNUC_PATCHLEVEL__)) +#elif defined(_MSC_VER) +#define GTA5SYNC_COMPILER QString("MSVC %1").arg(QString::number(_MSC_VER).insert(2, ".")) +#else +#define GTA5SYNC_COMPILER QString("Unknown Compiler") +#endif +#endif + +#ifndef GTA5SYNC_BUILDDATETIME +#define GTA5SYNC_BUILDDATETIME QString("%1, %2").arg(__DATE__, __TIME__) +#endif + +#ifndef GTA5SYNC_BUILDSTRING +#define GTA5SYNC_BUILDSTRING QString("%1, %2").arg(QT_VERSION_STR, GTA5SYNC_COMPILER) +#endif +#endif + +#endif // CONFIG_H diff --git a/lang/README.txt b/lang/README.txt new file mode 100644 index 0000000..fd72055 --- /dev/null +++ b/lang/README.txt @@ -0,0 +1,5 @@ +Community translation files + +They get loaded in ApplicationPathExecFileFolder/lang + +You can help translate with using Qt Linguist, after you've translated you'll need to send me a pull request on https://github.com/SyDevTeam/gta5view diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..a806646 --- /dev/null +++ b/main.cpp @@ -0,0 +1,320 @@ +/***************************************************************************** +* rdr2view Red Dead Redemption 2 Profile Viewer +* Copyright (C) 2016-2019 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "TranslationClass.h" +#include "SnapmaticPicture.h" +#include "ProfileDatabase.h" +#include "DatabaseThread.h" +#include "SavegameDialog.h" +#include "OptionsDialog.h" +#include "PictureDialog.h" +#include "UserInterface.h" +#include "CrewDatabase.h" +#include "SavegameData.h" +#include "UiModWidget.h" +#include "UiModLabel.h" +#include "IconLoader.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef GTA5SYNC_WIN +#include "windows.h" +#include +#endif + +#ifdef GTA5SYNC_TELEMETRY +#include "TelemetryClass.h" +#endif + +int main(int argc, char *argv[]) +{ +#if QT_VERSION >= 0x050600 + QApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true); + QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true); +#endif + QApplication a(argc, argv); + a.setApplicationName(GTA5SYNC_APPSTR); + a.setApplicationVersion(GTA5SYNC_APPVER); + a.setQuitOnLastWindowClosed(false); + + QResource::registerResource(":/global/global.rcc"); + + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("Startup"); + +#ifdef GTA5SYNC_TELEMETRY + // Increase Start count at every startup + uint startCount = settings.value("StartCount", 0).toUInt(); + startCount++; + settings.setValue("StartCount", startCount); + settings.sync(); +#endif + + bool isFirstStart = settings.value("IsFirstStart", true).toBool(); + bool customStyle = settings.value("CustomStyle", false).toBool(); + QString appStyle = settings.value("AppStyle", "Default").toString(); + + if (customStyle) + { + if (QStyleFactory::keys().contains(appStyle, Qt::CaseInsensitive)) + { + a.setStyle(QStyleFactory::create(appStyle)); + } + } + +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050400 + bool alwaysUseMessageFont = settings.value("AlwaysUseMessageFont", false).toBool(); + if (QSysInfo::windowsVersion() >= 0x0080 || alwaysUseMessageFont) + { + // Get Windows Font + NONCLIENTMETRICS ncm; + ncm.cbSize = sizeof(ncm); + SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, 0); + LOGFONTW uiFont = ncm.lfMessageFont; + QString uiFontStr(QString::fromStdWString(std::wstring(uiFont.lfFaceName))); + +#ifdef GTA5SYNC_DEBUG + qDebug() << QApplication::tr("Font") << QApplication::tr("Selected Font: %1").arg(uiFontStr); +#endif + + // Set Application Font + QFont appFont(uiFontStr, 9); + a.setFont(appFont); + } +#endif +#endif + + QStringList applicationArgs = a.arguments(); + QString selectedAction; + QString arg1; + applicationArgs.removeAt(0); + + Translator->initUserLanguage(); + Translator->loadTranslation(&a); + +#ifdef GTA5SYNC_TELEMETRY + Telemetry->init(); + Telemetry->work(); +#endif + + if (!applicationArgs.contains("--skip-firststart")) + { + if (isFirstStart) + { + QMessageBox::StandardButton button = QMessageBox::information(a.desktop(), QString("%1 %2").arg(GTA5SYNC_APPSTR, GTA5SYNC_APPVER), QApplication::tr("

Welcome to %1!

You want to configure %1 before you start using it?").arg(GTA5SYNC_APPSTR), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); + if (button == QMessageBox::Yes) + { + ProfileDatabase profileDB; + OptionsDialog optionsDialog(&profileDB); + optionsDialog.setWindowIcon(IconLoader::loadingAppIcon()); + optionsDialog.show(); + optionsDialog.exec(); + } + settings.setValue("IsFirstStart", false); + } + } + +#ifdef GTA5SYNC_TELEMETRY + bool telemetryWindowLaunched = settings.value("PersonalUsageDataWindowLaunched", false).toBool(); + bool pushUsageData = settings.value("PushUsageData", false).toBool(); + if (!telemetryWindowLaunched && !pushUsageData) + { + QDialog *telemetryDialog = new QDialog(); + telemetryDialog->setObjectName(QStringLiteral("TelemetryDialog")); + telemetryDialog->setWindowTitle(QString("%1 %2").arg(GTA5SYNC_APPSTR, GTA5SYNC_APPVER)); + telemetryDialog->setWindowFlags(telemetryDialog->windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + telemetryDialog->setWindowIcon(IconLoader::loadingAppIcon()); + QVBoxLayout *telemetryLayout = new QVBoxLayout(telemetryDialog); + telemetryLayout->setObjectName(QStringLiteral("TelemetryLayout")); + telemetryDialog->setLayout(telemetryLayout); + UiModLabel *telemetryLabel = new UiModLabel(telemetryDialog); + telemetryLabel->setObjectName(QStringLiteral("TelemetryLabel")); + telemetryLabel->setText(QString("

%2

%1").arg( + QApplication::translate("TelemetryDialog", "You want help %1 to improve in the future by including personal usage data in your submission?").arg(GTA5SYNC_APPSTR), + QApplication::translate("TelemetryDialog", "%1 User Statistics").arg(GTA5SYNC_APPSTR))); + telemetryLayout->addWidget(telemetryLabel); + QCheckBox *telemetryCheckBox = new QCheckBox(telemetryDialog); + telemetryCheckBox->setObjectName(QStringLiteral("TelemetryCheckBox")); + telemetryCheckBox->setText(QApplication::translate("TelemetryDialog", "Yes, I want include personal usage data.")); + telemetryLayout->addWidget(telemetryCheckBox); + QHBoxLayout *telemetryButtonLayout = new QHBoxLayout(); + telemetryButtonLayout->setObjectName(QStringLiteral("TelemetryButtonLayout")); + telemetryLayout->addLayout(telemetryButtonLayout); + QSpacerItem *telemetryButtonSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); + telemetryButtonLayout->addSpacerItem(telemetryButtonSpacer); + QPushButton *telemetryButton = new QPushButton(telemetryDialog); + telemetryButton->setObjectName(QStringLiteral("TelemetryButton")); + telemetryButton->setText(QApplication::translate("TelemetryDialog", "&OK")); + telemetryButtonLayout->addWidget(telemetryButton); + QObject::connect(telemetryButton, SIGNAL(clicked(bool)), telemetryDialog, SLOT(close())); + telemetryDialog->setFixedSize(telemetryDialog->sizeHint()); + telemetryDialog->exec(); + QObject::disconnect(telemetryButton, SIGNAL(clicked(bool)), telemetryDialog, SLOT(close())); + if (telemetryCheckBox->isChecked()) + { + QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + telemetrySettings.beginGroup("Telemetry"); + telemetrySettings.setValue("PushUsageData", true); + telemetrySettings.setValue("PushAppConf", true); + telemetrySettings.endGroup(); + telemetrySettings.sync(); + Telemetry->init(); + Telemetry->work(); + } + settings.setValue("PersonalUsageDataWindowLaunched", true); + delete telemetryDialog; + } +#endif + settings.endGroup(); + + for (QString currentArg : applicationArgs) + { + QString reworkedArg; + if (currentArg.left(9) == "-showpic=" && selectedAction == "") + { + reworkedArg = currentArg.remove(0,9); + arg1 = reworkedArg; + selectedAction = "showpic"; + } + else if (currentArg.left(9) == "-showsgd=" && selectedAction == "") + { + reworkedArg = currentArg.remove(0,9); + arg1 = reworkedArg; + selectedAction = "showsgd"; + } + else if (selectedAction == "") + { + QFile argumentFile(currentArg); + QFileInfo argumentFileInfo(argumentFile); + if (argumentFile.exists()) + { + QString argumentFileName = argumentFileInfo.fileName(); + QString argumentFileType = argumentFileName.left(4); + QString argumentFileExt = argumentFileName.right(4); + + if (argumentFileType == "PRDR" || argumentFileExt == ".r5e") + { + arg1 = currentArg; + selectedAction = "showpic"; + } + else if (argumentFileType == "SRDR") + { + arg1 = currentArg; + selectedAction = "showsgd"; + } + else if (argumentFileType == "MISR") + { + arg1 = currentArg; + selectedAction = "showsgd"; + } + } + } + } + + if (selectedAction == "showpic") + { + CrewDatabase crewDB; + ProfileDatabase profileDB; + DatabaseThread threadDB(&crewDB); + PictureDialog picDialog(true, &profileDB, &crewDB); + SnapmaticPicture picture; + + bool readOk = picture.readingPictureFromFile(arg1); + picDialog.setWindowIcon(IconLoader::loadingAppIcon()); + picDialog.setSnapmaticPicture(&picture, readOk); +#ifndef Q_OS_LINUX + picDialog.setWindowFlags(picDialog.windowFlags()^Qt::Dialog^Qt::Window); +#endif + + int crewID = picture.getSnapmaticProperties().crewID; + if (crewID != 0) { crewDB.addCrew(crewID); } + if (!readOk) { return 1; } + + QObject::connect(&threadDB, SIGNAL(crewNameFound(int, QString)), &crewDB, SLOT(setCrewName(int, QString))); + QObject::connect(&threadDB, SIGNAL(crewNameUpdated()), &picDialog, SLOT(crewNameUpdated())); + QObject::connect(&threadDB, SIGNAL(playerNameFound(int, QString)), &profileDB, SLOT(setPlayerName(int, QString))); + QObject::connect(&threadDB, SIGNAL(playerNameUpdated()), &picDialog, SLOT(playerNameUpdated())); + QObject::connect(&threadDB, SIGNAL(finished()), &a, SLOT(quit())); + QObject::connect(&picDialog, SIGNAL(endDatabaseThread()), &threadDB, SLOT(terminateThread())); + threadDB.start(); + + picDialog.show(); + + return a.exec(); + } + else if (selectedAction == "showsgd") + { + SavegameDialog savegameDialog; + SavegameData savegame; + + bool readOk = savegame.readingSavegameFromFile(arg1); + savegameDialog.setWindowIcon(IconLoader::loadingAppIcon()); + savegameDialog.setSavegameData(&savegame, arg1, readOk); + savegameDialog.setWindowFlags(savegameDialog.windowFlags()^Qt::Dialog^Qt::Window); + + if (!readOk) { return 1; } + + a.setQuitOnLastWindowClosed(true); + savegameDialog.show(); + + return a.exec(); + } + + CrewDatabase crewDB; + ProfileDatabase profileDB; + DatabaseThread threadDB(&crewDB); + + QObject::connect(&threadDB, SIGNAL(crewNameFound(int,QString)), &crewDB, SLOT(setCrewName(int, QString))); + QObject::connect(&threadDB, SIGNAL(playerNameFound(int, QString)), &profileDB, SLOT(setPlayerName(int, QString))); + QObject::connect(&threadDB, SIGNAL(finished()), &a, SLOT(quit())); + threadDB.start(); + + UserInterface uiWindow(&profileDB, &crewDB, &threadDB); + uiWindow.setWindowIcon(IconLoader::loadingAppIcon()); + uiWindow.setupDirEnv(); +#ifdef Q_OS_ANDROID + uiWindow.showMaximized(); +#else + uiWindow.show(); +#endif + + return a.exec(); +} diff --git a/pcg/LICENSE.txt b/pcg/LICENSE.txt new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/pcg/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/pcg/pcg_basic.c b/pcg/pcg_basic.c new file mode 100644 index 0000000..8c2fd0d --- /dev/null +++ b/pcg/pcg_basic.c @@ -0,0 +1,116 @@ +/* + * PCG Random Number Generation for C. + * + * Copyright 2014 Melissa O'Neill + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * For additional information about the PCG random number generation scheme, + * including its license and other licensing options, visit + * + * http://www.pcg-random.org + */ + +/* + * This code is derived from the full C implementation, which is in turn + * derived from the canonical C++ PCG implementation. The C++ version + * has many additional features and is preferable if you can use C++ in + * your project. + */ + +#include "pcg_basic.h" + +// state for global RNGs + +static pcg32_random_t pcg32_global = PCG32_INITIALIZER; + +// pcg32_srandom(initstate, initseq) +// pcg32_srandom_r(rng, initstate, initseq): +// Seed the rng. Specified in two parts, state initializer and a +// sequence selection constant (a.k.a. stream id) + +void pcg32_srandom_r(pcg32_random_t* rng, uint64_t initstate, uint64_t initseq) +{ + rng->state = 0U; + rng->inc = (initseq << 1u) | 1u; + pcg32_random_r(rng); + rng->state += initstate; + pcg32_random_r(rng); +} + +void pcg32_srandom(uint64_t seed, uint64_t seq) +{ + pcg32_srandom_r(&pcg32_global, seed, seq); +} + +// pcg32_random() +// pcg32_random_r(rng) +// Generate a uniformly distributed 32-bit random number + +uint32_t pcg32_random_r(pcg32_random_t* rng) +{ + uint64_t oldstate = rng->state; + rng->state = oldstate * 6364136223846793005ULL + rng->inc; + uint32_t xorshifted = ((oldstate >> 18u) ^ oldstate) >> 27u; + uint32_t rot = oldstate >> 59u; + return (xorshifted >> rot) | (xorshifted << ((-rot) & 31)); +} + +uint32_t pcg32_random() +{ + return pcg32_random_r(&pcg32_global); +} + + +// pcg32_boundedrand(bound): +// pcg32_boundedrand_r(rng, bound): +// Generate a uniformly distributed number, r, where 0 <= r < bound + +uint32_t pcg32_boundedrand_r(pcg32_random_t* rng, uint32_t bound) +{ + // To avoid bias, we need to make the range of the RNG a multiple of + // bound, which we do by dropping output less than a threshold. + // A naive scheme to calculate the threshold would be to do + // + // uint32_t threshold = 0x100000000ull % bound; + // + // but 64-bit div/mod is slower than 32-bit div/mod (especially on + // 32-bit platforms). In essence, we do + // + // uint32_t threshold = (0x100000000ull-bound) % bound; + // + // because this version will calculate the same modulus, but the LHS + // value is less than 2^32. + + uint32_t threshold = -bound % bound; + + // Uniformity guarantees that this loop will terminate. In practice, it + // should usually terminate quickly; on average (assuming all bounds are + // equally likely), 82.25% of the time, we can expect it to require just + // one iteration. In the worst case, someone passes a bound of 2^31 + 1 + // (i.e., 2147483649), which invalidates almost 50% of the range. In + // practice, bounds are typically small and only a tiny amount of the range + // is eliminated. + for (;;) { + uint32_t r = pcg32_random_r(rng); + if (r >= threshold) + return r % bound; + } +} + + +uint32_t pcg32_boundedrand(uint32_t bound) +{ + return pcg32_boundedrand_r(&pcg32_global, bound); +} + diff --git a/pcg/pcg_basic.h b/pcg/pcg_basic.h new file mode 100644 index 0000000..e2b526a --- /dev/null +++ b/pcg/pcg_basic.h @@ -0,0 +1,78 @@ +/* + * PCG Random Number Generation for C. + * + * Copyright 2014 Melissa O'Neill + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * For additional information about the PCG random number generation scheme, + * including its license and other licensing options, visit + * + * http://www.pcg-random.org + */ + +/* + * This code is derived from the full C implementation, which is in turn + * derived from the canonical C++ PCG implementation. The C++ version + * has many additional features and is preferable if you can use C++ in + * your project. + */ + +#ifndef PCG_BASIC_H_INCLUDED +#define PCG_BASIC_H_INCLUDED 1 + +#include + +#if __cplusplus +extern "C" { +#endif + +struct pcg_state_setseq_64 { // Internals are *Private*. + uint64_t state; // RNG state. All values are possible. + uint64_t inc; // Controls which RNG sequence (stream) is + // selected. Must *always* be odd. +}; +typedef struct pcg_state_setseq_64 pcg32_random_t; + +// If you *must* statically initialize it, here's one. + +#define PCG32_INITIALIZER { 0x853c49e6748fea9bULL, 0xda3e39cb94b95bdbULL } + +// pcg32_srandom(initstate, initseq) +// pcg32_srandom_r(rng, initstate, initseq): +// Seed the rng. Specified in two parts, state initializer and a +// sequence selection constant (a.k.a. stream id) + +void pcg32_srandom(uint64_t initstate, uint64_t initseq); +void pcg32_srandom_r(pcg32_random_t* rng, uint64_t initstate, + uint64_t initseq); + +// pcg32_random() +// pcg32_random_r(rng) +// Generate a uniformly distributed 32-bit random number + +uint32_t pcg32_random(void); +uint32_t pcg32_random_r(pcg32_random_t* rng); + +// pcg32_boundedrand(bound): +// pcg32_boundedrand_r(rng, bound): +// Generate a uniformly distributed number, r, where 0 <= r < bound + +uint32_t pcg32_boundedrand(uint32_t bound); +uint32_t pcg32_boundedrand_r(pcg32_random_t* rng, uint32_t bound); + +#if __cplusplus +} +#endif + +#endif // PCG_BASIC_H_INCLUDED diff --git a/qjson4/QJsonArray b/qjson4/QJsonArray new file mode 100644 index 0000000..89dbf4e --- /dev/null +++ b/qjson4/QJsonArray @@ -0,0 +1 @@ +#include "QJsonArray.h" diff --git a/qjson4/QJsonArray.cpp b/qjson4/QJsonArray.cpp new file mode 100644 index 0000000..ad8a82b --- /dev/null +++ b/qjson4/QJsonArray.cpp @@ -0,0 +1,410 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "QJsonArray.h" +#include "QJsonValueRef.h" +#include "QJsonValue.h" +#include + +#if QT_VERSION < 0x050000 + +//------------------------------------------------------------------------------ +// Name: QJsonArray +// Desc: default constructor +//------------------------------------------------------------------------------ +QJsonArray::QJsonArray() { + +} + +//------------------------------------------------------------------------------ +// Name: QJsonArray +// Desc: copy constructor +//------------------------------------------------------------------------------ +QJsonArray::QJsonArray(const QJsonArray &other) : values_(other.values_) { + +} + +#if __cplusplus >= 201103L +//------------------------------------------------------------------------------ +// Name: QJsonArray +// Desc: Creates an array initialized from args initialization list. +//------------------------------------------------------------------------------ +QJsonArray::QJsonArray(std::initializer_list args) { + for(const QJsonValue &arg : args) { + values_.append(arg); + } +} +#endif + +//------------------------------------------------------------------------------ +// Name: ~QJsonArray +// Desc: destructor +//------------------------------------------------------------------------------ +QJsonArray::~QJsonArray() { + +} + +//------------------------------------------------------------------------------ +// Name: operator= +// Desc: assignment operator +//------------------------------------------------------------------------------ +QJsonArray &QJsonArray::operator=(const QJsonArray &other) { + QJsonArray(other).swap(*this); + return *this; +} + +//------------------------------------------------------------------------------ +// Name: operator+= +// Desc: +//------------------------------------------------------------------------------ +QJsonArray &QJsonArray::operator+=(const QJsonValue &value) { + values_.append(value); + return *this; +} + +//------------------------------------------------------------------------------ +// Name: operator<< +// Desc: +//------------------------------------------------------------------------------ +QJsonArray &QJsonArray::operator<<(const QJsonValue &value) { + values_.append(value); + return *this; +} + +//------------------------------------------------------------------------------ +// Name: operator+ +// Desc: +//------------------------------------------------------------------------------ +QJsonArray QJsonArray::operator+(const QJsonValue &value) const { + QJsonArray arr(*this); + arr.append(value); + return arr; +} + +//------------------------------------------------------------------------------ +// Name: operator!= +// Desc: returns true if the compared array IS NOT equal to this +//------------------------------------------------------------------------------ +bool QJsonArray::operator!=(const QJsonArray &other) const { + return values_ != other.values_; +} + +//------------------------------------------------------------------------------ +// Name: operator== +// Desc: returns true if the compared array IS equal to this +//------------------------------------------------------------------------------ +bool QJsonArray::operator==(const QJsonArray &other) const { + return values_ == other.values_; +} + +//------------------------------------------------------------------------------ +// Name: begin +// Desc: returns an iterator to the first contained element +//------------------------------------------------------------------------------ +QJsonArray::const_iterator QJsonArray::begin() const { + return values_.begin(); +} + +//------------------------------------------------------------------------------ +// Name: end +// Desc: returns an iterator to one past the last contained element +//------------------------------------------------------------------------------ +QJsonArray::const_iterator QJsonArray::end() const { + return values_.end(); +} + +//------------------------------------------------------------------------------ +// Name: begin +// Desc: returns an iterator to the first contained element +//------------------------------------------------------------------------------ +QJsonArray::iterator QJsonArray::begin() { + return values_.begin(); +} + +//------------------------------------------------------------------------------ +// Name: end +// Desc: returns an iterator to one past the last contained element +//------------------------------------------------------------------------------ +QJsonArray::iterator QJsonArray::end() { + return values_.end(); +} + +//------------------------------------------------------------------------------ +// Name: constBegin +// Desc: returns an iterator to the first contained element +//------------------------------------------------------------------------------ +QJsonArray::const_iterator QJsonArray::constBegin() const { + return begin(); +} + +//------------------------------------------------------------------------------ +// Name: constEnd +// Desc: returns an iterator to one past the last contained element +//------------------------------------------------------------------------------ +QJsonArray::const_iterator QJsonArray::constEnd() const { + return end(); +} + +//------------------------------------------------------------------------------ +// Name: first +// Desc: returns the first element by value +//------------------------------------------------------------------------------ +QJsonValue QJsonArray::first() const { + Q_ASSERT(!empty()); + return values_.first(); +} + +//------------------------------------------------------------------------------ +// Name: last +// Desc: returns the last element by value +//------------------------------------------------------------------------------ +QJsonValue QJsonArray::last() const { + Q_ASSERT(!empty()); + return values_.last(); +} + +//------------------------------------------------------------------------------ +// Name: operator[] +//------------------------------------------------------------------------------ +QJsonValueRef QJsonArray::operator[](int i) { + return QJsonValueRef(this, i); +} + +//------------------------------------------------------------------------------ +// Name: operator[] +//------------------------------------------------------------------------------ +QJsonValue QJsonArray::operator[](int i) const { + return values_[i]; +} + +//------------------------------------------------------------------------------ +// Name: at +//------------------------------------------------------------------------------ +QJsonValue QJsonArray::at(int i) const { + return values_.at(i); +} + +//------------------------------------------------------------------------------ +// Name: size +//------------------------------------------------------------------------------ +int QJsonArray::size() const { + return values_.size(); +} + +//------------------------------------------------------------------------------ +// Name: count +//------------------------------------------------------------------------------ +int QJsonArray::count() const { + return size(); +} + +//------------------------------------------------------------------------------ +// Name: empty +//------------------------------------------------------------------------------ +bool QJsonArray::empty() const { + return values_.empty(); +} + +//------------------------------------------------------------------------------ +// Name: isEmpty +//------------------------------------------------------------------------------ +bool QJsonArray::isEmpty() const { + return empty(); +} + +//------------------------------------------------------------------------------ +// Name: pop_back +//------------------------------------------------------------------------------ +void QJsonArray::pop_back() { + values_.pop_back(); +} + +//------------------------------------------------------------------------------ +// Name: pop_front +//------------------------------------------------------------------------------ +void QJsonArray::pop_front() { + values_.pop_front(); +} + +//------------------------------------------------------------------------------ +// Name: push_back +//------------------------------------------------------------------------------ +void QJsonArray::push_back(const QJsonValue &value) { + values_.push_back(value); +} + +//------------------------------------------------------------------------------ +// Name: push_front +//------------------------------------------------------------------------------ +void QJsonArray::push_front(const QJsonValue &value) { + values_.push_front(value); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +void QJsonArray::append(const QJsonValue &value) { + values_.append(value); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +bool QJsonArray::contains(const QJsonValue &value) const { + return values_.contains(value); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonArray::iterator QJsonArray::erase(iterator it) { + return values_.erase(it); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +void QJsonArray::insert(int i, const QJsonValue &value) { + values_.insert(i, value); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonArray::iterator QJsonArray::insert(iterator before, const QJsonValue &value) { + return values_.insert(before, value); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +void QJsonArray::prepend(const QJsonValue &value) { + values_.prepend(value); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +void QJsonArray::removeAt(int i) { + values_.removeAt(i); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +void QJsonArray::removeFirst() { + values_.removeFirst(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +void QJsonArray::removeLast() { + values_.removeLast(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +void QJsonArray::replace(int i, const QJsonValue &value) { + values_.replace(i, value); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonValue QJsonArray::takeAt(int i) { + return values_.takeAt(i); +} + +//------------------------------------------------------------------------------ +// Name: toVariantList +//------------------------------------------------------------------------------ +QVariantList QJsonArray::toVariantList() const { + QVariantList a; + Q_FOREACH(const QJsonValue &v, *this) { + a.push_back(v.toVariant()); + } + return a; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonArray QJsonArray::fromStringList(const QStringList &list) { + QJsonArray a; + Q_FOREACH(const QString &s, list) { + a.push_back(QJsonValue(s)); + } + return a; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonArray QJsonArray::fromVariantList(const QVariantList &list) { + QJsonArray a; + Q_FOREACH(const QVariant &v, list) { + a.push_back(QJsonValue::fromVariant(v)); + } + return a; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonRoot *QJsonArray::clone() const { + return new QJsonArray(*this); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +const QJsonObject *QJsonArray::toObject() const { + return 0; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject *QJsonArray::toObject() { + return 0; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonArray *QJsonArray::toArray() { + return this; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +const QJsonArray *QJsonArray::toArray() const { + return this; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +void QJsonArray::swap(QJsonArray &other) { + qSwap(values_, other.values_); +} + +#endif diff --git a/qjson4/QJsonArray.h b/qjson4/QJsonArray.h new file mode 100644 index 0000000..dc4fc69 --- /dev/null +++ b/qjson4/QJsonArray.h @@ -0,0 +1,139 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef QJSON_ARRAY_H_ +#define QJSON_ARRAY_H_ + +#include + +#if QT_VERSION >= 0x050000 +#include +#else + +#include "QJsonRoot.h" +#include +#include + +class QJsonValue; +class QJsonValueRef; + +class QJsonArray : public QJsonRoot { + friend class QJsonDocument; + friend class QJsonValue; + friend class QJsonValueRef; + friend class QJsonParser; +public: + // TODO(eteran): manually implement the array, for now we use QList + // but the real thing has a custom implementation + // I guess for the purposes of less interdependancies? + // maybe so it's easier to forward declare the iterators? + + typedef QList::const_iterator const_iterator; + typedef QList::iterator iterator; + typedef const_iterator ConstIterator; + typedef iterator Iterator; + typedef QList::const_pointer const_pointer; + typedef QList::const_reference const_reference; + typedef QList::difference_type difference_type; + typedef QList::pointer pointer; + typedef QList::reference reference; + typedef QList::size_type size_type; + typedef QList::value_type value_type; + +public: + QJsonArray(); + QJsonArray(const QJsonArray &other); +#if __cplusplus >= 201103L + QJsonArray(std::initializer_list args); +#endif + ~QJsonArray(); + +public: + QJsonArray &operator=(const QJsonArray &other); + +public: + bool operator!=(const QJsonArray &other) const; + bool operator==(const QJsonArray &other) const; + QJsonArray operator+(const QJsonValue &value) const; + QJsonArray &operator+=(const QJsonValue &value); + QJsonArray &operator<<(const QJsonValue &value); + +public: + const_iterator begin() const; + const_iterator end() const; + iterator begin(); + iterator end(); + const_iterator constBegin() const; + const_iterator constEnd() const; + +public: + QJsonValueRef operator[](int i); + QJsonValue operator[](int i) const; + QJsonValue at(int i) const; + QJsonValue first() const; + QJsonValue last() const; + +public: + int size() const; + int count() const; + bool empty() const; + bool isEmpty() const; + +public: + void pop_back(); + void pop_front(); + void push_back(const QJsonValue &value); + void push_front(const QJsonValue &value); + +public: + void append(const QJsonValue &value); + bool contains(const QJsonValue &value) const; + iterator erase(iterator it); + void insert(int i, const QJsonValue &value); + iterator insert(iterator before, const QJsonValue &value); + void prepend(const QJsonValue &value); + void removeAt(int i); + void removeFirst(); + void removeLast(); + void replace(int i, const QJsonValue &value); + QJsonValue takeAt(int i); + +public: + QVariantList toVariantList() const; + +public: + static QJsonArray fromStringList(const QStringList &list); + static QJsonArray fromVariantList(const QVariantList &list); + +private: + virtual QJsonRoot *clone() const; + virtual QJsonArray *toArray(); + virtual QJsonObject *toObject(); + virtual const QJsonArray *toArray() const; + virtual const QJsonObject *toObject() const; + +private: + void swap(QJsonArray &other); + +private: + QList values_; +}; + +#endif + +#endif diff --git a/qjson4/QJsonDocument b/qjson4/QJsonDocument new file mode 100644 index 0000000..f652bf4 --- /dev/null +++ b/qjson4/QJsonDocument @@ -0,0 +1 @@ +#include "QJsonDocument.h" diff --git a/qjson4/QJsonDocument.cpp b/qjson4/QJsonDocument.cpp new file mode 100644 index 0000000..9d503c3 --- /dev/null +++ b/qjson4/QJsonDocument.cpp @@ -0,0 +1,417 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "QJsonDocument.h" +#include "QJsonObject.h" +#include "QJsonArray.h" +#include "QJsonParser.h" + +#include +#include +#include +#include +#include + +#if QT_VERSION < 0x050000 + +//------------------------------------------------------------------------------ +// Name: QJsonDocument +//------------------------------------------------------------------------------ +QJsonDocument::QJsonDocument() : root_(0) { +} + +//------------------------------------------------------------------------------ +// Name: QJsonDocument +//------------------------------------------------------------------------------ +QJsonDocument::QJsonDocument(const QJsonObject &object) : root_(0) { + setObject(object); +} + +//------------------------------------------------------------------------------ +// Name: QJsonDocument +//------------------------------------------------------------------------------ +QJsonDocument::QJsonDocument(const QJsonArray &array) : root_(0) { + setArray(array); +} + +//------------------------------------------------------------------------------ +// Name: QJsonDocument +//------------------------------------------------------------------------------ +QJsonDocument::QJsonDocument(const QJsonDocument &other) : root_(0) { + if(other.root_) { + root_ = other.root_->clone(); + } +} + +//------------------------------------------------------------------------------ +// Name: ~QJsonDocument +//------------------------------------------------------------------------------ +QJsonDocument::~QJsonDocument() { + delete root_; +} + +//------------------------------------------------------------------------------ +// Name: operator= +//------------------------------------------------------------------------------ +QJsonDocument &QJsonDocument::operator=(const QJsonDocument &other) { + QJsonDocument(other).swap(*this); + return *this; +} + +//------------------------------------------------------------------------------ +// Name: operator!= +//------------------------------------------------------------------------------ +bool QJsonDocument::operator!=(const QJsonDocument &other) const { + return !(*this == other); +} + +//------------------------------------------------------------------------------ +// Name: operator== +//------------------------------------------------------------------------------ +bool QJsonDocument::operator==(const QJsonDocument &other) const { + + if(isArray() && other.isArray()) { + return array() == other.array(); + } + + if(isObject() && other.isObject()) { + return object() == other.object(); + } + + if(isEmpty() && other.isEmpty()) { + return true; + } + + if(isNull() && other.isNull()) { + return true; + } + + return false; +} + +//------------------------------------------------------------------------------ +// Name: isArray +//------------------------------------------------------------------------------ +bool QJsonDocument::isArray() const { + return root_ && root_->toArray(); +} + +//------------------------------------------------------------------------------ +// Name: isEmpty +//------------------------------------------------------------------------------ +bool QJsonDocument::isEmpty() const { + + // TODO(eteran): figure out the rules here that Qt5 uses + // it *looks* like they define empty as being NULL + // which is obviously different than this + + return !root_; +} + +//------------------------------------------------------------------------------ +// Name: isNull +//------------------------------------------------------------------------------ +bool QJsonDocument::isNull() const { + return !root_; +} + +//------------------------------------------------------------------------------ +// Name: isObject +//------------------------------------------------------------------------------ +bool QJsonDocument::isObject() const { + return root_ && root_->toObject(); +} + +//------------------------------------------------------------------------------ +// Name: setArray +//------------------------------------------------------------------------------ +void QJsonDocument::setArray(const QJsonArray &array) { + setRoot(array); +} + +//------------------------------------------------------------------------------ +// Name: setObject +//------------------------------------------------------------------------------ +void QJsonDocument::setObject(const QJsonObject &object) { + setRoot(object); +} + +//------------------------------------------------------------------------------ +// Name: setRoot +//------------------------------------------------------------------------------ +void QJsonDocument::setRoot(const QJsonRoot &root) { + delete root_; + root_ = root.clone(); +} + +//------------------------------------------------------------------------------ +// Name: toBinaryData +//------------------------------------------------------------------------------ +QByteArray QJsonDocument::toBinaryData() const { + QByteArray r; + // TODO(eteran): implement this + return r; +} + +//------------------------------------------------------------------------------ +// Name: escapeString +//------------------------------------------------------------------------------ +QString QJsonDocument::escapeString(const QString &s) const { + + QString r; + + Q_FOREACH(QChar ch, s) { + switch(ch.toLatin1()) { + case '\"': r.append("\\\""); break; + case '\\': r.append("\\\\"); break; + #if 0 + case '/': r.append("\\/"); break; + #endif + case '\b': r.append("\\b"); break; + case '\f': r.append("\\f"); break; + case '\n': r.append("\\n"); break; + case '\r': r.append("\\r"); break; + case '\t': r.append("\\t"); break; + default: + r += ch; + break; + } + } + + return r; +} + +//------------------------------------------------------------------------------ +// Name: toJson +//------------------------------------------------------------------------------ +QString QJsonDocument::toJson(const QJsonValue &v, JsonFormat format) const { + + QString b; + QTextStream ss(&b, QIODevice::WriteOnly | QIODevice::Text); + + switch(v.type()) { + case QJsonValue::Null: + ss << "null"; + break; + case QJsonValue::Bool: + ss << (v.toBool() ? "true" : "false"); + break; + case QJsonValue::Double: + { + double d = v.toDouble (); + if (qIsFinite(d)) { + // +2 to format to ensure the expected precision + ss << QByteArray::number(d, 'g', 15 + 2); // ::digits10 is 15 + } else { + ss << "null"; // +INF || -INF || NaN (see RFC4627#section2.4) + } + } + break; + case QJsonValue::String: + ss << '"' << escapeString(v.toString()) << '"'; + break; + case QJsonValue::Array: + { + const QJsonArray a = v.toArray(); + ss << "["; + if(!a.empty()) { + QJsonArray::const_iterator it = a.begin(); + QJsonArray::const_iterator e = a.end(); + + ss << toJson(*it++, format); + + for(;it != e; ++it) { + ss << ','; + ss << toJson(*it, format); + } + } + ss << "]"; + } + break; + case QJsonValue::Object: + { + const QJsonObject o = v.toObject(); + ss << "{"; + if(!o.empty()) { + QJsonObject::const_iterator it = o.begin(); + QJsonObject::const_iterator e = o.end(); + + ss << '"' << escapeString(it.key()) << "\": " << toJson(it.value(), format); + ++it; + for(;it != e; ++it) { + ss << ','; + ss << '"' << escapeString(it.key()) << "\": " << toJson(it.value(), format); + } + } + ss << "}"; + } + break; + case QJsonValue::Undefined: + Q_ASSERT(0); + break; + } + + return b; +} + +//------------------------------------------------------------------------------ +// Name: toJson +//------------------------------------------------------------------------------ +QByteArray QJsonDocument::toJson(JsonFormat format) const { + + Q_UNUSED(format); + + if(isArray()) { + QString s = toJson(array(), format); + return s.toUtf8(); + } + + if(isObject()) { + QString s = toJson(object(), format); + return s.toUtf8(); + } + + return QByteArray(); +} + +//------------------------------------------------------------------------------ +// Name: toVariant +//------------------------------------------------------------------------------ +QVariant QJsonDocument::toVariant() const { + + if(!isEmpty()) { + if(QJsonObject *const object = root_->toObject()) { + return object->toVariantMap(); + } + + if(QJsonArray *const array = root_->toArray()) { + return array->toVariantList(); + } + } + + return QVariant(); +} + +//------------------------------------------------------------------------------ +// Name: array +//------------------------------------------------------------------------------ +QJsonArray QJsonDocument::array() const { + + if(!isEmpty()) { + if(QJsonArray *const array = root_->toArray()) { + return *array; + } + } + + return QJsonArray(); +} + +//------------------------------------------------------------------------------ +// Name: object +//------------------------------------------------------------------------------ +QJsonObject QJsonDocument::object() const { + + if(!isEmpty()) { + if(QJsonObject *const object = root_->toObject()) { + return *object; + } + } + + return QJsonObject(); +} + +//------------------------------------------------------------------------------ +// Name: rawData +//------------------------------------------------------------------------------ +const char *QJsonDocument::rawData(int *size) const { + Q_UNUSED(size); + // TODO(eteran): implement this + return 0; +} + +//------------------------------------------------------------------------------ +// Name: fromBinaryData +//------------------------------------------------------------------------------ +QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidation validation) { + Q_UNUSED(data); + Q_UNUSED(validation); + + QJsonDocument doc; + // TODO(eteran): implement this + return doc; +} + +//------------------------------------------------------------------------------ +// Name: fromJson +//------------------------------------------------------------------------------ +QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseError *error) { + QJsonDocument doc; + + const char *const begin = json.constData(); + const char *const end = begin + json.size(); + + QJsonParser parser(begin, end); + + doc.root_ = parser.parse(); + + if(error) { + *error = parser.state(); + } + + return doc; +} + +//------------------------------------------------------------------------------ +// Name: fromRawData +//------------------------------------------------------------------------------ +QJsonDocument QJsonDocument::fromRawData(const char *data, int size, DataValidation validation) { + + // data has to be aligned to a 4 byte boundary. + Q_ASSERT(!(reinterpret_cast(data) % 3)); + + return fromBinaryData(QByteArray::fromRawData(data, size), validation); +} + +//------------------------------------------------------------------------------ +// Name: fromVariant +//------------------------------------------------------------------------------ +QJsonDocument QJsonDocument::fromVariant(const QVariant &variant) { + + QJsonDocument doc; + + if (variant.type() == QVariant::Map) { + doc.setObject(QJsonObject::fromVariantMap(variant.toMap())); + } else if (variant.type() == QVariant::Hash) { + doc.setObject(QJsonObject::fromVariantHash(variant.toHash())); + } else if (variant.type() == QVariant::List) { + doc.setArray(QJsonArray::fromVariantList(variant.toList())); + } else if (variant.type() == QVariant::StringList) { + doc.setArray(QJsonArray::fromStringList(variant.toStringList())); + } + + return doc; +} + +//------------------------------------------------------------------------------ +// Name: swap +//------------------------------------------------------------------------------ +void QJsonDocument::swap(QJsonDocument &other) { + qSwap(root_, other.root_); +} + +#endif diff --git a/qjson4/QJsonDocument.h b/qjson4/QJsonDocument.h new file mode 100644 index 0000000..5b1e17a --- /dev/null +++ b/qjson4/QJsonDocument.h @@ -0,0 +1,103 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef QJSON_DOCUMENT_H_ +#define QJSON_DOCUMENT_H_ + +#include + +#if QT_VERSION >= 0x050000 +#include +#else + +class QVariant; +class QByteArray; +class QTextStream; +class QJsonObject; +class QJsonValue; +class QJsonArray; +class QJsonParseError; +class QJsonRoot; + +class QJsonDocument { +public: + enum DataValidation { + Validate = 0, + BypassValidation = 1 + }; + + enum JsonFormat { + Indented, + Compact + }; + +public: + QJsonDocument(); + QJsonDocument(const QJsonObject &object); + QJsonDocument(const QJsonArray &array); + QJsonDocument(const QJsonDocument &other); + ~QJsonDocument(); + +public: + QJsonDocument &operator=(const QJsonDocument &other); + +public: + bool operator!=(const QJsonDocument &other) const; + bool operator==(const QJsonDocument &other) const; + +public: + bool isArray() const; + bool isEmpty() const; + bool isNull() const; + bool isObject() const; + +public: + QByteArray toBinaryData() const; + QByteArray toJson(JsonFormat format = Indented) const; + QVariant toVariant() const; + +public: + QJsonArray array() const; + QJsonObject object() const; + const char *rawData(int *size) const; + +public: + void setArray(const QJsonArray &array); + void setObject(const QJsonObject &object); + +public: + static QJsonDocument fromBinaryData(const QByteArray &data, DataValidation validation = Validate); + static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = 0); + static QJsonDocument fromRawData(const char *data, int size, DataValidation validation = Validate); + static QJsonDocument fromVariant(const QVariant &variant); + +private: + void setRoot(const QJsonRoot &root); + QString toJson(const QJsonValue &v, JsonFormat format) const; + QString escapeString(const QString &s) const; + +private: + void swap(QJsonDocument &other); + +private: + QJsonRoot *root_; +}; + +#endif + +#endif diff --git a/qjson4/QJsonObject b/qjson4/QJsonObject new file mode 100644 index 0000000..fb2126e --- /dev/null +++ b/qjson4/QJsonObject @@ -0,0 +1 @@ +#include "QJsonObject.h" diff --git a/qjson4/QJsonObject.cpp b/qjson4/QJsonObject.cpp new file mode 100644 index 0000000..ac36bb0 --- /dev/null +++ b/qjson4/QJsonObject.cpp @@ -0,0 +1,322 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "QJsonObject.h" + +#if QT_VERSION < 0x050000 + +//------------------------------------------------------------------------------ +// Name: QJsonObject +//------------------------------------------------------------------------------ +QJsonObject::QJsonObject() { +} + +//------------------------------------------------------------------------------ +// Name: QJsonObject +//------------------------------------------------------------------------------ +QJsonObject::QJsonObject(const QJsonObject &other) : values_(other.values_) { +} + +#if __cplusplus >= 201103L +//------------------------------------------------------------------------------ +// Name: QJsonObject +//------------------------------------------------------------------------------ +QJsonObject::QJsonObject(std::initializer_list > args) { + for(const QPair &arg : args) { + values_.insert(arg.first, arg.second); + + } +} +#endif + +//------------------------------------------------------------------------------ +// Name: ~QJsonObject +//------------------------------------------------------------------------------ +QJsonObject::~QJsonObject() { +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject &QJsonObject::operator=(const QJsonObject &other) { + QJsonObject(other).swap(*this); + return *this; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::iterator QJsonObject::begin() { + return values_.begin(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::const_iterator QJsonObject::begin() const { + return values_.begin(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::iterator QJsonObject::end() { + return values_.end(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::const_iterator QJsonObject::end() const { + return values_.end(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::const_iterator QJsonObject::constBegin() const { + return begin(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::const_iterator QJsonObject::constEnd() const { + return end(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +int QJsonObject::count() const { + return size(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +int QJsonObject::length() const { + return size(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +int QJsonObject::size() const { + return values_.size(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +bool QJsonObject::empty() const { + return values_.empty(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +bool QJsonObject::isEmpty() const { + return empty(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const { + return values_.find(key); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +bool QJsonObject::contains(const QString &key) const { + return values_.contains(key); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::iterator QJsonObject::find(const QString &key) { + return values_.find(key); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::const_iterator QJsonObject::find(const QString &key) const { + return values_.find(key); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::iterator QJsonObject::erase(iterator it) { + return values_.erase(it); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject::iterator QJsonObject::insert(const QString &key, const QJsonValue &value) { + return values_.insert(key, value); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QStringList QJsonObject::keys() const { + return values_.keys(); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +void QJsonObject::remove(const QString &key) { + values_.remove(key); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonValue QJsonObject::take(const QString &key) { + return values_.take(key); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonValue QJsonObject::value(const QString &key) const { + return values_.value(key); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +bool QJsonObject::operator!=(const QJsonObject &other) const { + return values_ != other.values_; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +bool QJsonObject::operator==(const QJsonObject &other) const { + return values_ != other.values_; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonValue QJsonObject::operator[](const QString &key) const { + return values_[key]; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonValueRef QJsonObject::operator[](const QString &key) { + return QJsonValueRef(this, key); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QVariantMap QJsonObject::toVariantMap() const { + QVariantMap a; + for(const_iterator it = begin(); it != end(); ++it) { + a.insert(it.key(), it.value().toVariant()); + } + return a; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QVariantHash QJsonObject::toVariantHash() const { + QVariantHash a; + for(const_iterator it = begin(); it != end(); ++it) { + a.insert(it.key(), it.value().toVariant()); + } + return a; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject QJsonObject::fromVariantMap(const QVariantMap &map) { + QJsonObject o; + for(QVariantMap::const_iterator it = map.begin(); it != map.end(); ++it) { + o.insert(it.key(), QJsonValue::fromVariant(it.value())); + } + return o; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject QJsonObject::fromVariantHash(const QVariantHash &hash) { + QJsonObject o; + for(QVariantHash::const_iterator it = hash.begin(); it != hash.end(); ++it) { + o.insert(it.key(), QJsonValue::fromVariant(it.value())); + } + return o; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonRoot *QJsonObject::clone() const { + return new QJsonObject(*this); +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +const QJsonObject *QJsonObject::toObject() const { + return this; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonObject *QJsonObject::toObject() { + return this; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +QJsonArray *QJsonObject::toArray() { + return 0; +} + +//------------------------------------------------------------------------------ +// Name: +//------------------------------------------------------------------------------ +const QJsonArray *QJsonObject::toArray() const { + return 0; +} + +//------------------------------------------------------------------------------ +// Name: swap +//------------------------------------------------------------------------------ +void QJsonObject::swap(QJsonObject &other) { + qSwap(values_, other.values_); +} + +#endif diff --git a/qjson4/QJsonObject.h b/qjson4/QJsonObject.h new file mode 100644 index 0000000..6ee3a97 --- /dev/null +++ b/qjson4/QJsonObject.h @@ -0,0 +1,121 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef QJSON_OBJECT_H_ +#define QJSON_OBJECT_H_ + +#include + +#if QT_VERSION >= 0x050000 +#include +#else + +#include "QJsonRoot.h" +#include "QJsonValueRef.h" +#include "QJsonValue.h" +#include +#include +#include +#include + +class QJsonObject : public QJsonRoot { + friend class QJsonDocument; + friend class QJsonValue; + friend class QJsonValueRef; + friend class QJsonParser; +public: + // TODO(eteran): manually implement the map, for now we use QMap + // but the real thing has a custom implementation + // I guess for the purposes of less interdependancies? + // maybe so it's easier to forward declare the iterators? + + typedef QMap::const_iterator const_iterator; + typedef QMap::iterator iterator; + typedef const_iterator ConstIterator; + typedef iterator Iterator; + typedef QMap::key_type key_type; + typedef QMap::mapped_type mapped_type; + typedef QMap::size_type size_type; + +public: + QJsonObject(); +#if __cplusplus >= 201103L + QJsonObject(std::initializer_list > args); +#endif + QJsonObject(const QJsonObject &other); + ~QJsonObject(); + QJsonObject &operator=(const QJsonObject &other); + +public: + iterator begin(); + const_iterator begin() const; + iterator end(); + const_iterator end() const; + const_iterator constBegin() const; + const_iterator constEnd() const; + +public: + int count() const; + int length() const; + int size() const; + bool empty() const; + bool isEmpty() const; + +public: + const_iterator constFind(const QString &key) const; + bool contains(const QString &key) const; + iterator find(const QString &key); + const_iterator find(const QString &key) const; + +public: + iterator erase(iterator it); + iterator insert(const QString &key, const QJsonValue &value); + QStringList keys() const; + void remove(const QString &key); + QJsonValue take(const QString &key); + QJsonValue value(const QString &key) const; + bool operator!=(const QJsonObject &other) const; + bool operator==(const QJsonObject &other) const; + QJsonValue operator[](const QString &key) const; + QJsonValueRef operator[](const QString &key); + +public: + QVariantMap toVariantMap() const; + QVariantHash toVariantHash() const; + +public: + static QJsonObject fromVariantMap(const QVariantMap &map); + static QJsonObject fromVariantHash(const QVariantHash &hash); + +private: + virtual QJsonRoot *clone() const; + virtual QJsonArray *toArray(); + virtual QJsonObject *toObject(); + virtual const QJsonArray *toArray() const; + virtual const QJsonObject *toObject() const; + +private: + void swap(QJsonObject &other); + +private: + QMap values_; +}; + +#endif + +#endif diff --git a/qjson4/QJsonParseError b/qjson4/QJsonParseError new file mode 100644 index 0000000..7d30db8 --- /dev/null +++ b/qjson4/QJsonParseError @@ -0,0 +1 @@ +#include "QJsonParseError.h" diff --git a/qjson4/QJsonParseError.cpp b/qjson4/QJsonParseError.cpp new file mode 100644 index 0000000..598c67c --- /dev/null +++ b/qjson4/QJsonParseError.cpp @@ -0,0 +1,64 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "QJsonParseError.h" + +#if QT_VERSION < 0x050000 + +//------------------------------------------------------------------------------ +// Name: errorString +// Desc: The QJsonParseError class is used to report errors during JSON parsing. +//------------------------------------------------------------------------------ +QString QJsonParseError::errorString() const { + switch(error) { + case NoError: + return "No error occurred"; + case UnterminatedObject: + return "unterminated object"; + case MissingNameSeparator: + return "missing name separator"; + case UnterminatedArray: + return "unterminated array"; + case MissingValueSeparator: + return "missing value separator"; + case IllegalValue: + return "illegal value"; + case TerminationByNumber: + return "invalid termination by number"; + case IllegalNumber: + return "illegal number"; + case IllegalEscapeSequence: + return "illegal escape sequence"; + case IllegalUTF8String: + return "invalid UTF8 string"; + case UnterminatedString: + return "unterminated string"; + case MissingObject: + return "object is missing after a comma"; + case DeepNesting: + return "too deeply nested document"; + case DocumentTooLarge: + return "too large document"; + case GarbageAtEnd: + return "garbage at the end of the document"; + } + + return QString(); +} + +#endif diff --git a/qjson4/QJsonParseError.h b/qjson4/QJsonParseError.h new file mode 100644 index 0000000..eddf04d --- /dev/null +++ b/qjson4/QJsonParseError.h @@ -0,0 +1,60 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef QJSON_PARSE_ERROR_H_ +#define QJSON_PARSE_ERROR_H_ + +#include + +#if QT_VERSION >= 0x050000 +#include +#else + +#include + +class QJsonParseError { +public: + enum ParseError { + NoError = 0, + UnterminatedObject = 1, + MissingNameSeparator = 2, + UnterminatedArray = 3, + MissingValueSeparator = 4, + IllegalValue = 5, + TerminationByNumber = 6, + IllegalNumber = 7, + IllegalEscapeSequence = 8, + IllegalUTF8String = 9, + UnterminatedString = 10, + MissingObject = 11, + DeepNesting = 12, + DocumentTooLarge = 13, + GarbageAtEnd = 14 + }; + +public: + QString errorString() const; + +public: + ParseError error; + int offset; +}; + +#endif + +#endif diff --git a/qjson4/QJsonParser.cpp b/qjson4/QJsonParser.cpp new file mode 100644 index 0000000..052c9a8 --- /dev/null +++ b/qjson4/QJsonParser.cpp @@ -0,0 +1,455 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "QJsonParser.h" +#include "QJsonArray.h" +#include "QJsonObject.h" +#include "QJsonValue.h" + + +#if QT_VERSION < 0x050000 + +#include +#include +#include + +namespace { + +unsigned int to_hex(int ch) { + + static const int hexval[256] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 + }; + + if(static_cast(ch) < 256) { + return hexval[static_cast(ch)]; + } else { + return 0; + } +} + +} + +//------------------------------------------------------------------------------ +// Name: QJsonParser +//------------------------------------------------------------------------------ +QJsonParser::QJsonParser(const char *begin, const char *end) : begin_(begin), end_(end), p_(begin) { + state_.error = QJsonParseError::NoError; + state_.offset = 0; +} + +//------------------------------------------------------------------------------ +// Name: parse +//------------------------------------------------------------------------------ +QJsonRoot *QJsonParser::parse() { + if(begin_ == end_) { + return 0; + } + + QJsonRoot *ret = 0; + + try { + const char ch = peek(); + switch(ch) { + case ArrayBegin: + ret = getArray(); + break; + case ObjectBegin: + ret = getObject(); + break; + default: + state_.error = QJsonParseError::IllegalValue; + state_.offset = p_ - begin_; + break; + } + } catch(const QJsonParseError &e) { + state_ = e; + } + + if(ret) { + // eat up trailing white space... + while(p_ != end_ && std::isspace(*p_)) { + ++p_; + } + + //detect trailing garbage + if(p_ != end_) { + state_.error = QJsonParseError::GarbageAtEnd; + state_.offset = p_ - begin_; + } + } + + return ret; +} + +//------------------------------------------------------------------------------ +// Name: peek +//------------------------------------------------------------------------------ +char QJsonParser::peek() { + // first eat up some whitespace + while(p_ != end_ && std::isspace(*p_)) { + ++p_; + } + + return *p_; +} + +//------------------------------------------------------------------------------ +// Name: getValue +//------------------------------------------------------------------------------ +QJsonValue QJsonParser::getValue() { + + switch(peek()) { + case ObjectBegin: + { + QScopedPointer obj(getObject()); + return QJsonValue(*obj); + } + case ArrayBegin: + { + QScopedPointer arr(getArray()); + return QJsonValue(*arr); + } + case Quote: + return QJsonValue(getString()); + case 't': + return getTrue(); + case 'f': + return getFalse(); + case 'n': + return getNull(); + default: + return getNumber(); + } + + throwError(QJsonParseError::MissingObject); + return QJsonValue(); +} + +//------------------------------------------------------------------------------ +// Name: getObject +//------------------------------------------------------------------------------ +QJsonObject *QJsonParser::getObject() { + + QScopedPointer obj(new QJsonObject); + + char tok = peek(); + if(tok != ObjectBegin) { + throwError(QJsonParseError::IllegalValue); + } + + ++p_; + + // handle empty object + tok = peek(); + if(peek() == ObjectEnd) { + ++p_; + } else { + + do { + QPair p = getPair(); + obj->values_.insert(p.first, p.second); + + tok = peek(); + ++p_; + + } while(tok == ValueSeparator); + } + + if(tok != ObjectEnd) { + throwError(QJsonParseError::UnterminatedObject); + } + + return obj.take(); +} + +//------------------------------------------------------------------------------ +// Name: getArray +//------------------------------------------------------------------------------ +QJsonArray *QJsonParser::getArray() { + + QScopedPointer arr(new QJsonArray); + + char tok = peek(); + + if(tok != ArrayBegin) { + throwError(QJsonParseError::IllegalValue); + } + + ++p_; + + // handle empty object + tok = peek(); + if(tok == ArrayEnd) { + ++p_; + } else { + do { + arr->values_.push_back(getValue()); + + tok = peek(); + ++p_; + + } while(tok == ValueSeparator); + } + + if(tok != ArrayEnd) { + throwError(QJsonParseError::MissingValueSeparator); + } + + return arr.take(); +} + +//------------------------------------------------------------------------------ +// Name: getPair +//------------------------------------------------------------------------------ +QPair QJsonParser::getPair() { + + QString key = getString(); + + if(peek() != NameSeparator) { + throwError(QJsonParseError::MissingNameSeparator); + } + ++p_; + + return qMakePair(key, getValue()); +} + +//------------------------------------------------------------------------------ +// Name: getString +//------------------------------------------------------------------------------ +QString QJsonParser::getString() { + + if(peek() != Quote) { + throwError(QJsonParseError::IllegalUTF8String); + } + ++p_; + + QByteArray s; + + while(p_ != end_ && *p_ != Quote && *p_ != '\n') { + if(*p_ == '\\') { + ++p_; + if(p_ != end_) { + switch(*p_) { + case '"': s.append('"'); break; + case '\\': s.append('\\'); break; + case '/': s.append('/'); break; + case 'b': s.append('\b'); break; + case 'f': s.append('\f'); break; + case 'n': s.append('\n'); break; + case 'r': s.append('\r'); break; + case 't': s.append('\t'); break; + case 'u': + { + + QString hexChar; + + // convert \uXXXX escape sequences to UTF-8 + char hex[4]; + if(p_ == end_) { throwError(QJsonParseError::IllegalEscapeSequence); } hex[0] = *++p_; + if(p_ == end_) { throwError(QJsonParseError::IllegalEscapeSequence); } hex[1] = *++p_; + if(p_ == end_) { throwError(QJsonParseError::IllegalEscapeSequence); } hex[2] = *++p_; + if(p_ == end_) { throwError(QJsonParseError::IllegalEscapeSequence); } hex[3] = *++p_; + + if(!std::isxdigit(hex[0])) throwError(QJsonParseError::IllegalUTF8String); + if(!std::isxdigit(hex[1])) throwError(QJsonParseError::IllegalUTF8String); + if(!std::isxdigit(hex[2])) throwError(QJsonParseError::IllegalUTF8String); + if(!std::isxdigit(hex[3])) throwError(QJsonParseError::IllegalUTF8String); + + quint16 w1 = 0; + quint16 w2 = 0; + + w1 |= (to_hex(hex[0]) << 12); + w1 |= (to_hex(hex[1]) << 8); + w1 |= (to_hex(hex[2]) << 4); + w1 |= (to_hex(hex[3])); + + hexChar.append(QChar(w1)); + + if((w1 & 0xfc00) == 0xdc00) { + throwError(QJsonParseError::IllegalUTF8String); + } + + if((w1 & 0xfc00) == 0xd800) { + // part of a surrogate pair + if(p_ == end_ || *++p_ != '\\') { throwError(QJsonParseError::IllegalEscapeSequence); } + if(p_ == end_ || *++p_ != 'u') { throwError(QJsonParseError::IllegalEscapeSequence); } + + // convert \uXXXX escape sequences to UTF-8 + if(p_ == end_) { throwError(QJsonParseError::IllegalEscapeSequence); } hex[0] = *++p_; + if(p_ == end_) { throwError(QJsonParseError::IllegalEscapeSequence); } hex[1] = *++p_; + if(p_ == end_) { throwError(QJsonParseError::IllegalEscapeSequence); } hex[2] = *++p_; + if(p_ == end_) { throwError(QJsonParseError::IllegalEscapeSequence); } hex[3] = *++p_; + + if(!std::isxdigit(hex[0])) throwError(QJsonParseError::IllegalUTF8String); + if(!std::isxdigit(hex[1])) throwError(QJsonParseError::IllegalUTF8String); + if(!std::isxdigit(hex[2])) throwError(QJsonParseError::IllegalUTF8String); + if(!std::isxdigit(hex[3])) throwError(QJsonParseError::IllegalUTF8String); + + w2 |= (to_hex(hex[0]) << 12); + w2 |= (to_hex(hex[1]) << 8); + w2 |= (to_hex(hex[2]) << 4); + w2 |= (to_hex(hex[3])); + + hexChar.append(QChar(w2)); + } + + s.append(hexChar.toUtf8()); + } + break; + + default: + s.append('\\'); + break; + } + } + } else { + s.append(*p_); + } + ++p_; + } + + if(*p_ != Quote || p_ == end_) { + throwError(QJsonParseError::UnterminatedString); + } + + ++p_; + + return QString::fromUtf8(s, s.size()); +} + +//------------------------------------------------------------------------------ +// Name: getNull +//------------------------------------------------------------------------------ +QJsonValue QJsonParser::getNull() { + if(p_ == end_ || *p_++ != 'n') { throwError(QJsonParseError::IllegalValue); } + if(p_ == end_ || *p_++ != 'u') { throwError(QJsonParseError::IllegalValue); } + if(p_ == end_ || *p_++ != 'l') { throwError(QJsonParseError::IllegalValue); } + if(p_ == end_ || *p_++ != 'l') { throwError(QJsonParseError::IllegalValue); } + + return QJsonValue(); +} + +//------------------------------------------------------------------------------ +// Name: getTrue +//------------------------------------------------------------------------------ +QJsonValue QJsonParser::getTrue() { + if(p_ == end_ || *p_++ != 't') { throwError(QJsonParseError::IllegalValue); } + if(p_ == end_ || *p_++ != 'r') { throwError(QJsonParseError::IllegalValue); } + if(p_ == end_ || *p_++ != 'u') { throwError(QJsonParseError::IllegalValue); } + if(p_ == end_ || *p_++ != 'e') { throwError(QJsonParseError::IllegalValue); } + + return QJsonValue(true); +} + +//------------------------------------------------------------------------------ +// Name: getFalse +//------------------------------------------------------------------------------ +QJsonValue QJsonParser::getFalse() { + if(p_ == end_ || *p_++ != 'f') { throwError(QJsonParseError::IllegalValue); } + if(p_ == end_ || *p_++ != 'a') { throwError(QJsonParseError::IllegalValue); } + if(p_ == end_ || *p_++ != 'l') { throwError(QJsonParseError::IllegalValue); } + if(p_ == end_ || *p_++ != 's') { throwError(QJsonParseError::IllegalValue); } + if(p_ == end_ || *p_++ != 'e') { throwError(QJsonParseError::IllegalValue); } + + return QJsonValue(false); +} + +//------------------------------------------------------------------------------ +// Name: getNumber +//------------------------------------------------------------------------------ +QJsonValue QJsonParser::getNumber() { + // JSON numbers fit the regex: -?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)? + + const char *const first = p_; + + // -? + if(p_ != end_ && *p_ == '-') { + ++p_; + } + + // (0|[1-9][0-9]*) + if(p_ != end_) { + if(*p_ >= '1' && *p_ <= '9') { + while(p_ != end_ && std::isdigit(*p_)) { + ++p_; + } + } else if(*p_ == '0') { + ++p_; + } else { + throwError(QJsonParseError::IllegalNumber); + } + } + + // (\.[0-9]+)? + if(p_ != end_ && *p_ == '.') { + ++p_; + if(!std::isdigit(*p_)) { + throwError(QJsonParseError::IllegalNumber); + } + + while(p_ != end_ && std::isdigit(*p_)) { + ++p_; + } + } + + // ([eE][+-]?[0-9]+)? + if(p_ != end_ && (*p_ == 'e' || *p_ == 'E')) { + ++p_; + if(p_ != end_ && (*p_ == '+' || *p_ == '-')) { + ++p_; + } + if(!std::isdigit(*p_)) { + throwError(QJsonParseError::IllegalNumber); + } + while(p_ != end_ && std::isdigit(*p_)) { + ++p_; + } + } + + if(p_ == end_) { + throwError(QJsonParseError::TerminationByNumber); + } + + return QJsonValue(QByteArray::fromRawData(first, p_ - first).toDouble()); +} + +//------------------------------------------------------------------------------ +// Name: state +//------------------------------------------------------------------------------ +QJsonParseError QJsonParser::state() const { + return state_; +} + +//------------------------------------------------------------------------------ +// Name: throwError +//------------------------------------------------------------------------------ +void QJsonParser::throwError(QJsonParseError::ParseError e) { + QJsonParseError err; + err.error = e; + err.offset = p_ - begin_; + throw err; +} + +#endif diff --git a/qjson4/QJsonParser.h b/qjson4/QJsonParser.h new file mode 100644 index 0000000..f11f5a0 --- /dev/null +++ b/qjson4/QJsonParser.h @@ -0,0 +1,81 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +// NOTE: this is not part of the "public" Qt API, so using this class directly +// is not recomended + +#ifndef QJSON_PARSER_H_ +#define QJSON_PARSER_H_ + +#include + +#if QT_VERSION < 0x050000 + +#include "QJsonParseError.h" +#include +class QJsonRoot; +class QJsonObject; +class QJsonArray; +class QJsonValue; + +class QJsonParser { + friend class QJsonDocument; + +public: + QJsonParser(const char *begin, const char *end); + +public: + QJsonRoot *parse(); + +public: + QJsonParseError state() const; + +private: + static const char ArrayBegin = '['; + static const char ArrayEnd = ']'; + static const char NameSeparator = ':'; + static const char ValueSeparator = ','; + static const char ObjectBegin = '{'; + static const char ObjectEnd = '}'; + static const char Quote = '"'; + +private: + char peek(); + QJsonObject *getObject(); + QJsonArray *getArray(); + QJsonValue getValue(); + QString getString(); + QJsonValue getTrue(); + QJsonValue getFalse(); + QJsonValue getNull(); + QJsonValue getNumber(); + QPair getPair(); + +private: + void throwError(QJsonParseError::ParseError e); + +private: + QJsonParseError state_; + const char *const begin_; + const char *const end_; + const char * p_; +}; + +#endif + +#endif diff --git a/qjson4/QJsonRoot b/qjson4/QJsonRoot new file mode 100644 index 0000000..fbcaca1 --- /dev/null +++ b/qjson4/QJsonRoot @@ -0,0 +1 @@ +#include "QJsonRoot.h" diff --git a/qjson4/QJsonRoot.h b/qjson4/QJsonRoot.h new file mode 100644 index 0000000..d249465 --- /dev/null +++ b/qjson4/QJsonRoot.h @@ -0,0 +1,45 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef QJSON_ROOT_H_ +#define QJSON_ROOT_H_ + +#include + +#if QT_VERSION < 0x050000 + +class QJsonObject; +class QJsonArray; + +class QJsonRoot { +public: + virtual ~QJsonRoot() {}; + +public: + virtual QJsonRoot *clone() const = 0; + +public: + virtual QJsonArray *toArray() = 0; + virtual QJsonObject *toObject() = 0; + virtual const QJsonArray *toArray() const = 0; + virtual const QJsonObject *toObject() const = 0; +}; + +#endif + +#endif diff --git a/qjson4/QJsonValue b/qjson4/QJsonValue new file mode 100644 index 0000000..eb1b6fe --- /dev/null +++ b/qjson4/QJsonValue @@ -0,0 +1 @@ +#include "QJsonValue.h" diff --git a/qjson4/QJsonValue.cpp b/qjson4/QJsonValue.cpp new file mode 100644 index 0000000..8ac4770 --- /dev/null +++ b/qjson4/QJsonValue.cpp @@ -0,0 +1,391 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "QJsonValue.h" +#include "QJsonArray.h" +#include "QJsonObject.h" + +#if QT_VERSION < 0x050000 +#include +#include + +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(Type type) : type_(type) { +} + +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(bool b) : type_(Bool) { + value_.b = b; +} + +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(double n) : type_(Double) { + value_.n = n; +} + +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(const QString &s) : type_(String) { + value_.s = new QString(s); +} + +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(QLatin1String s) : type_(String) { + value_.s = new QString(s); +} + +#ifndef QT_NO_CAST_FROM_ASCII +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(const char *s) : type_(String) { + value_.s = new QString(QString::fromUtf8(s)); +} +#endif + +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(const QJsonArray &a) : type_(Array) { + value_.r = a.clone(); +} + +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(const QJsonObject &o) : type_(Object) { + value_.r = o.clone(); +} + +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(int n) : type_(Double) { + value_.n = n; +} + +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(qint64 n) : type_(Double) { + value_.n = n; +} + +//------------------------------------------------------------------------------ +// Name: QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::QJsonValue(const QJsonValue &other) : type_(other.type_) { + + switch(other.type_) { + case Bool: + value_.b = other.value_.b; + break; + case Double: + value_.n = other.value_.n; + break; + case String: + value_.s = new QString(*other.value_.s); + break; + case Array: + case Object: + value_.r = other.value_.r->clone(); + break; + case Undefined: + case Null: + value_ = other.value_; + break; + } +} + +//------------------------------------------------------------------------------ +// Name: ~QJsonValue +//------------------------------------------------------------------------------ +QJsonValue::~QJsonValue() { + switch(type_) { + case Null: + case Bool: + case Double: + case Undefined: + break; + case String: + delete value_.s; + break; + case Object: + case Array: + delete value_.r; + break; + } +} + +//------------------------------------------------------------------------------ +// Name: operator= +//------------------------------------------------------------------------------ +QJsonValue &QJsonValue::operator=(const QJsonValue &other) { + QJsonValue(other).swap(*this); + return *this; +} + +//------------------------------------------------------------------------------ +// Name: operator!= +//------------------------------------------------------------------------------ +bool QJsonValue::operator!=(const QJsonValue &other) const { + return !(*this == other); +} + +//------------------------------------------------------------------------------ +// Name: operator== +//------------------------------------------------------------------------------ +bool QJsonValue::operator==(const QJsonValue &other) const { + if(type_ == other.type_) { + switch(type_) { + case Null: + return true; + case Bool: + return value_.b == other.value_.b; + case Double: + return value_.n == other.value_.n; + case Undefined: + return true; + case String: + return *value_.s == *other.value_.s; + case Array: + return *(value_.r->toArray()) == *(other.value_.r->toArray()); + case Object: + return *(value_.r->toObject()) == *(other.value_.r->toObject()); + } + } + return false; +} + +//------------------------------------------------------------------------------ +// Name: isArray +//------------------------------------------------------------------------------ +bool QJsonValue::isArray() const { + return type_ == Array; +} + +//------------------------------------------------------------------------------ +// Name: isBool +//------------------------------------------------------------------------------ +bool QJsonValue::isBool() const { + return type_ == Bool; +} + +//------------------------------------------------------------------------------ +// Name: isDouble +//------------------------------------------------------------------------------ +bool QJsonValue::isDouble() const { + return type_ == Double; +} + +//------------------------------------------------------------------------------ +// Name: isNull +//------------------------------------------------------------------------------ +bool QJsonValue::isNull() const { + return type_ == Null; +} + +//------------------------------------------------------------------------------ +// Name: isObject +//------------------------------------------------------------------------------ +bool QJsonValue::isObject() const { + return type_ == Object; +} + +//------------------------------------------------------------------------------ +// Name: isString +//------------------------------------------------------------------------------ +bool QJsonValue::isString() const { + return type_ == String; +} + +//------------------------------------------------------------------------------ +// Name: isUndefined +//------------------------------------------------------------------------------ +bool QJsonValue::isUndefined() const { + return type_ == Undefined; +} + +//------------------------------------------------------------------------------ +// Name: type +//------------------------------------------------------------------------------ +QJsonValue::Type QJsonValue::type() const { + return type_; +} + +//------------------------------------------------------------------------------ +// Name: toArray +//------------------------------------------------------------------------------ +QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const { + if(isArray()) { + return *(value_.r->toArray()); + } + + return defaultValue; +} + +//------------------------------------------------------------------------------ +// Name: toArray +//------------------------------------------------------------------------------ +QJsonArray QJsonValue::toArray() const { + return toArray(QJsonArray()); +} + +//------------------------------------------------------------------------------ +// Name: toBool +//------------------------------------------------------------------------------ +bool QJsonValue::toBool(bool defaultValue) const { + if(isBool()) { + return value_.b; + } + + return defaultValue; +} + +//------------------------------------------------------------------------------ +// Name: toDouble +//------------------------------------------------------------------------------ +double QJsonValue::toDouble(double defaultValue) const { + if(isDouble()) { + return value_.n; + } + + return defaultValue; +} + +//------------------------------------------------------------------------------ +// Name: toInt +//------------------------------------------------------------------------------ +int QJsonValue::toInt(int defaultValue) const { + if(isDouble() && qFloor(value_.n) == value_.n) { + return value_.n; + } + + return defaultValue; +} + +//------------------------------------------------------------------------------ +// Name: toObject +//------------------------------------------------------------------------------ +QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const { + if(isObject()) { + return *(value_.r->toObject()); + } + + return defaultValue; +} + +//------------------------------------------------------------------------------ +// Name: toObject +//------------------------------------------------------------------------------ +QJsonObject QJsonValue::toObject() const { + return toObject(QJsonObject()); +} + +//------------------------------------------------------------------------------ +// Name: toString +//------------------------------------------------------------------------------ +QString QJsonValue::toString(const QString &defaultValue) const { + + if(isString()) { + return *value_.s; + } + + return defaultValue; +} + +//------------------------------------------------------------------------------ +// Name: toVariant +//------------------------------------------------------------------------------ +QVariant QJsonValue::toVariant() const { + switch(type_) { + case Null: + return QVariant(); + case Bool: + return QVariant::fromValue(value_.b); + case Double: + return QVariant::fromValue(value_.n); + case String: + return QVariant::fromValue(*value_.s); + case Array: + return value_.r->toArray()->toVariantList(); + case Object: + return value_.r->toObject()->toVariantMap(); + case Undefined: + return QVariant(); + } + + return QVariant(); +} + +//------------------------------------------------------------------------------ +// Name: fromVariant +//------------------------------------------------------------------------------ +QJsonValue QJsonValue::fromVariant(const QVariant &variant) { + if(variant.isNull()) { + return QJsonValue(Null); + } + + switch(variant.type()) { + case QVariant::Bool: + return QJsonValue(variant.toBool()); + case QVariant::Int: + return QJsonValue(variant.toInt()); + case QVariant::Double: + case QVariant::LongLong: + case QVariant::ULongLong: + case QVariant::UInt: + return QJsonValue(variant.toDouble()); + case QVariant::String: + return QJsonValue(variant.toString()); + case QVariant::List: + return QJsonArray::fromVariantList(variant.toList()); + case QVariant::StringList: + return QJsonArray::fromStringList(variant.toStringList()); + case QVariant::Map: + return QJsonObject::fromVariantMap(variant.toMap()); + default: + const QString s = variant.toString(); + if(!s.isEmpty()) { + return QJsonValue(s); + } + break; + } + + return QJsonValue(Null); + +} + +//------------------------------------------------------------------------------ +// Name: swap +//------------------------------------------------------------------------------ +void QJsonValue::swap(QJsonValue &other) { + qSwap(type_, other.type_); + qSwap(value_, other.value_); +} + +#endif diff --git a/qjson4/QJsonValue.h b/qjson4/QJsonValue.h new file mode 100644 index 0000000..d902352 --- /dev/null +++ b/qjson4/QJsonValue.h @@ -0,0 +1,120 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef QJSON_VALUE_H_ +#define QJSON_VALUE_H_ + +#include + +#if QT_VERSION >= 0x050000 +#include +#else + +class QString; + +#include + +class QJsonRoot; +class QJsonArray; +class QJsonObject; + +class QJsonValue { +public: + enum Type { + Null = 0x0, + Bool = 0x1, + Double = 0x2, + String = 0x3, + Array = 0x4, + Object = 0x5, + Undefined = 0x80 + }; + +public: + QJsonValue(Type type = Null); + QJsonValue(bool b); + QJsonValue(double n); + QJsonValue(int n); + QJsonValue(qint64 n); + QJsonValue(const QString &s); + QJsonValue(QLatin1String s); +#ifndef QT_NO_CAST_FROM_ASCII + QJsonValue(const char *s); +#endif + QJsonValue(const QJsonArray &a); + QJsonValue(const QJsonObject &o); + QJsonValue(const QJsonValue &other); + + ~QJsonValue(); + +private: + // to protect against incorrect usage due to passing a const char * + QJsonValue(const void *); + +public: + QJsonValue &operator=(const QJsonValue &other); + +public: + bool operator!=(const QJsonValue &other) const; + bool operator==(const QJsonValue &other) const; + +public: + bool isArray() const; + bool isBool() const; + bool isDouble() const; + bool isNull() const; + bool isObject() const; + bool isString() const; + bool isUndefined() const; + +public: + QJsonArray toArray(const QJsonArray &defaultValue) const; + QJsonArray toArray() const; + bool toBool(bool defaultValue = false) const; + double toDouble(double defaultValue = 0) const; + int toInt(int defaultValue = 0) const; + QJsonObject toObject(const QJsonObject &defaultValue) const; + QJsonObject toObject() const; + QString toString(const QString &defaultValue = QString()) const; + QVariant toVariant() const; + +public: + Type type() const; + +public: + static QJsonValue fromVariant(const QVariant &variant); + +private: + void swap(QJsonValue &other); + +private: + Type type_; + + union ValueType { + bool b; + double n; + QString *s; + QJsonRoot *r; // OJsonObject or QJsonArray + }; + + ValueType value_; +}; + +#endif + +#endif diff --git a/qjson4/QJsonValueRef b/qjson4/QJsonValueRef new file mode 100644 index 0000000..f3b6811 --- /dev/null +++ b/qjson4/QJsonValueRef @@ -0,0 +1 @@ +#include "QJsonValueRef.h" diff --git a/qjson4/QJsonValueRef.cpp b/qjson4/QJsonValueRef.cpp new file mode 100644 index 0000000..dade257 --- /dev/null +++ b/qjson4/QJsonValueRef.cpp @@ -0,0 +1,228 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "QJsonValueRef.h" + +#if QT_VERSION < 0x050000 + +#include "QJsonArray.h" +#include "QJsonObject.h" + +//------------------------------------------------------------------------------ +// Name: +// Desc: +//------------------------------------------------------------------------------ +QJsonValueRef::QJsonValueRef(QJsonArray *array, int idx) : p_(array), index_(idx) { +} + +//------------------------------------------------------------------------------ +// Name: +// Desc: +//------------------------------------------------------------------------------ +QJsonValueRef::QJsonValueRef(QJsonObject *object, const QString &key) : p_(object), index_(0), key_(key) { +} + +//------------------------------------------------------------------------------ +// Name: +// Desc: +//------------------------------------------------------------------------------ +QJsonValueRef::operator QJsonValue() const { + return toValue(); +} + +//------------------------------------------------------------------------------ +// Name: +// Desc: +//------------------------------------------------------------------------------ +QJsonValueRef &QJsonValueRef::operator=(const QJsonValue &val) { + + if(QJsonObject *const o = p_->toObject()) { + o->values_[key_] = val; + } else if(QJsonArray *const a = p_->toArray()) { + a->values_[index_] = val; + } + return *this; +} + +//------------------------------------------------------------------------------ +// Name: +// Desc: +//------------------------------------------------------------------------------ +QJsonValueRef &QJsonValueRef::operator=(const QJsonValueRef &ref) { + + if(QJsonObject *const o = p_->toObject()) { + o->values_[key_] = ref; + } else if(QJsonArray *const a = p_->toArray()) { + a->values_[index_] = ref; + } + return *this; +} + +//------------------------------------------------------------------------------ +// Name: type +// Desc: +//------------------------------------------------------------------------------ +QJsonValue::Type QJsonValueRef::type() const { + return toValue().type(); +} + +//------------------------------------------------------------------------------ +// Name: isNull +// Desc: +//------------------------------------------------------------------------------ +bool QJsonValueRef::isNull() const { + return toValue().isNull(); +} + +//------------------------------------------------------------------------------ +// Name: isBool +// Desc: +//------------------------------------------------------------------------------ +bool QJsonValueRef::isBool() const { + return toValue().isBool(); +} + +//------------------------------------------------------------------------------ +// Name: isDouble +// Desc: +//------------------------------------------------------------------------------ +bool QJsonValueRef::isDouble() const { + return toValue().isDouble(); +} + +//------------------------------------------------------------------------------ +// Name: isString +// Desc: +//------------------------------------------------------------------------------ +bool QJsonValueRef::isString() const { + return toValue().isString(); +} + +//------------------------------------------------------------------------------ +// Name: isArray +// Desc: +//------------------------------------------------------------------------------ +bool QJsonValueRef::isArray() const { + return toValue().isArray(); +} + +//------------------------------------------------------------------------------ +// Name: isObject +// Desc: +//------------------------------------------------------------------------------ +bool QJsonValueRef::isObject() const { + return toValue().isObject(); +} + +//------------------------------------------------------------------------------ +// Name: isUndefined +// Desc: +//------------------------------------------------------------------------------ +bool QJsonValueRef::isUndefined() const { + return toValue().isUndefined(); +} + +//------------------------------------------------------------------------------ +// Name: toBool +// Desc: +//------------------------------------------------------------------------------ +bool QJsonValueRef::toBool() const { + return toValue().toBool(); +} + +//------------------------------------------------------------------------------ +// Name: toDouble +// Desc: +//------------------------------------------------------------------------------ +double QJsonValueRef::toDouble() const { + return toValue().toDouble(); +} + +//------------------------------------------------------------------------------ +// Name: toInt +// Desc: +//------------------------------------------------------------------------------ +int QJsonValueRef::toInt(int defaultValue) const { + return toValue().toInt(defaultValue); +} + +//------------------------------------------------------------------------------ +// Name: toString +// Desc: +//------------------------------------------------------------------------------ +QString QJsonValueRef::toString() const { + return toValue().toString(); +} + +//------------------------------------------------------------------------------ +// Name: toArray +// Desc: +//------------------------------------------------------------------------------ +QJsonArray QJsonValueRef::toArray() const { + return toValue().toArray(); +} + +//------------------------------------------------------------------------------ +// Name: toObject +// Desc: +//------------------------------------------------------------------------------ +QJsonObject QJsonValueRef::toObject() const { + return toValue().toObject(); +} + +//------------------------------------------------------------------------------ +// Name: operator== +// Desc: +//------------------------------------------------------------------------------ +bool QJsonValueRef::operator==(const QJsonValue &other) const { + return toValue() == other; +} + +//------------------------------------------------------------------------------ +// Name: operator!= +// Desc: +//------------------------------------------------------------------------------ +bool QJsonValueRef::operator!=(const QJsonValue &other) const { + return toValue() != other; +} + +//------------------------------------------------------------------------------ +// Name: toValue +// Desc: +//------------------------------------------------------------------------------ +QJsonValue QJsonValueRef::toValue() const { + if(QJsonObject *const o = p_->toObject()) { + return o->values_[key_]; + } else if(QJsonArray *const a = p_->toArray()) { + return a->values_[index_]; + } + + return QJsonValue(); +} + +//------------------------------------------------------------------------------ +// Name: swap +// Desc: +//------------------------------------------------------------------------------ +void QJsonValueRef::swap(QJsonValueRef &other) { + qSwap(p_, other.p_); + qSwap(key_, other.key_); + qSwap(index_, other.index_); +} + +#endif diff --git a/qjson4/QJsonValueRef.h b/qjson4/QJsonValueRef.h new file mode 100644 index 0000000..478b657 --- /dev/null +++ b/qjson4/QJsonValueRef.h @@ -0,0 +1,79 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2016 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef QJSON_VALUEREF_H_ +#define QJSON_VALUEREF_H_ + +#include + +#if QT_VERSION >= 0x050000 +#include +#else + +#include "QJsonValue.h" +class QJsonRoot; + +class QJsonValueRef { +public: + QJsonValueRef(QJsonArray *array, int idx); + + // slight variant from official APIs implementation + QJsonValueRef(QJsonObject *object, const QString &key); + +public: + operator QJsonValue() const; + +public: + QJsonValueRef &operator=(const QJsonValue &val); + QJsonValueRef &operator=(const QJsonValueRef &val); + +public: + QJsonValue::Type type() const; + bool isNull() const; + bool isBool() const; + bool isDouble() const; + bool isString() const; + bool isArray() const; + bool isObject() const; + bool isUndefined() const; + +public: + bool toBool() const; + double toDouble() const; + QString toString() const; + QJsonArray toArray() const; + QJsonObject toObject() const; + int toInt(int defaultValue = 0) const; + +public: + bool operator==(const QJsonValue &other) const; + bool operator!=(const QJsonValue &other) const; + +private: + QJsonValue toValue() const; + void swap(QJsonValueRef &other); + +private: + QJsonRoot *p_; + int index_; + QString key_; +}; + +#endif + +#endif diff --git a/rdr2view.pro b/rdr2view.pro new file mode 100644 index 0000000..f671b8d --- /dev/null +++ b/rdr2view.pro @@ -0,0 +1,240 @@ +#/***************************************************************************** +#* rdr2view Red Dead Redemption 2 Profile Viewer +#* Copyright (C) 2015-2019 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 +#* the Free Software Foundation, either version 3 of the License, or +#* (at your option) any later version. +#* +#* This program is distributed in the hope that it will be useful, +#* but WITHOUT ANY WARRANTY; without even the implied warranty of +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#* GNU General Public License for more details. +#* +#* You should have received a copy of the GNU General Public License +#* along with this program. If not, see . +#*****************************************************************************/ + +QT += core gui network svg + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets +greaterThan(QT_MAJOR_VERSION, 4): greaterThan(QT_MINOR_VERSION, 1): win32: QT += winextras + +DEPLOYMENT.display_name = rdr2view +TARGET = rdr2view +TEMPLATE = app + +HEADERS += config.h +PRECOMPILED_HEADER += config.h + +SOURCES += main.cpp \ + AboutDialog.cpp \ + AppEnv.cpp \ + CrewDatabase.cpp \ + DatabaseThread.cpp \ + ExportDialog.cpp \ + ExportThread.cpp \ + GlobalString.cpp \ + IconLoader.cpp \ + ImageEditorDialog.cpp \ + ImportDialog.cpp \ + JsonEditorDialog.cpp \ + MapLocationDialog.cpp \ + OptionsDialog.cpp \ + PictureDialog.cpp \ + PictureExport.cpp \ + PictureWidget.cpp \ + PlayerListDialog.cpp \ + ProfileDatabase.cpp \ + ProfileInterface.cpp \ + ProfileLoader.cpp \ + ProfileWidget.cpp \ + SavegameCopy.cpp \ + SavegameData.cpp \ + SavegameDialog.cpp \ + SavegameWidget.cpp \ + SidebarGenerator.cpp \ + SnapmaticEditor.cpp \ + SnapmaticPicture.cpp \ + SnapmaticWidget.cpp \ + StandardPaths.cpp \ + StringParser.cpp \ + TelemetryClass.cpp \ + TranslationClass.cpp \ + UserInterface.cpp \ + anpro/imagecropper.cpp \ + pcg/pcg_basic.c \ + tmext/TelemetryClassAuthenticator.cpp \ + uimod/JSHighlighter.cpp \ + uimod/UiModLabel.cpp \ + uimod/UiModWidget.cpp + +HEADERS += \ + AboutDialog.h \ + AppEnv.h \ + CrewDatabase.h \ + DatabaseThread.h \ + ExportDialog.h \ + ExportThread.h \ + GlobalString.h \ + IconLoader.h \ + ImageEditorDialog.h \ + ImportDialog.h \ + JsonEditorDialog.h \ + MapLocationDialog.h \ + OptionsDialog.h \ + PictureDialog.h \ + PictureExport.h \ + PictureWidget.h \ + PlayerListDialog.h \ + ProfileDatabase.h \ + ProfileInterface.h \ + ProfileLoader.h \ + ProfileWidget.h \ + SavegameCopy.h \ + SavegameData.h \ + SavegameDialog.h \ + SavegameWidget.h \ + SidebarGenerator.h \ + SnapmaticEditor.h \ + SnapmaticPicture.h \ + SnapmaticWidget.h \ + StandardPaths.h \ + StringParser.h \ + TelemetryClass.h \ + TranslationClass.h \ + UserInterface.h \ + anpro/imagecropper.h \ + anpro/imagecropper_e.h \ + anpro/imagecropper_p.h \ + pcg/pcg_basic.h \ + tmext/TelemetryClassAuthenticator.h \ + uimod/JSHighlighter.h \ + uimod/UiModLabel.h \ + uimod/UiModWidget.h + +FORMS += \ + AboutDialog.ui \ + ExportDialog.ui \ + ImageEditorDialog.ui \ + ImportDialog.ui \ + JsonEditorDialog.ui \ + MapLocationDialog.ui \ + OptionsDialog.ui \ + PictureDialog.ui \ + PlayerListDialog.ui \ + ProfileInterface.ui \ + SavegameDialog.ui \ + SavegameWidget.ui \ + SnapmaticEditor.ui \ + SnapmaticWidget.ui \ + UserInterface.ui + +TRANSLATIONS += \ + res/gta5sync.ts \ + res/gta5sync_de.ts \ + res/gta5sync_en_US.ts \ + res/gta5sync_fr.ts \ + res/gta5sync_ko.ts \ + res/gta5sync_ru.ts \ + res/gta5sync_uk.ts \ + res/gta5sync_zh_TW.ts + +RESOURCES += \ + res/tr_g5p.qrc \ + res/app.qrc + +DISTFILES += res/app.rc \ + res/rdr2view.desktop \ + res/gta5sync_de.ts \ + res/gta5sync_en_US.ts \ + res/gta5sync_es.ts \ + res/gta5sync_fr.ts \ + res/gta5sync_ko.ts \ + res/gta5sync_ru.ts \ + res/gta5sync_uk.ts \ + res/gta5sync_zh_TW.ts \ + res/rdr2view.exe.manifest \ + res/gta5view.png \ + lang/README.txt + +INCLUDEPATH += ./anpro ./pcg ./tmext ./uimod + +# GTA5SYNC/GTA5VIEW/RDR2VIEW ONLY + +DEFINES += GTA5SYNC_PROJECT # Enable exclusive gta5sync/gta5view/rdr2view functions +DEFINES += GTA5SYNC_NOASSIST # Not assisting at proper usage of SnapmaticPicture class + +# WINDOWS ONLY + +win32: DEFINES += GTA5SYNC_WIN +win32: RC_FILE += res/app.rc +win32: LIBS += -luser32 +win32: CONFIG -= embed_manifest_exe +contains(DEFINES, GTA5SYNC_APV): greaterThan(QT_MAJOR_VERSION, 4): greaterThan(QT_MINOR_VERSION, 1): win32: LIBS += -ldwmapi +contains(DEFINES, GTA5SYNC_TELEMETRY): win32: LIBS += -ld3d9 # Required for getting information about GPU + +# MAC OS X ONLY +macx: ICON = res/5sync.icns + +# QT4 ONLY STUFF + +isEqual(QT_MAJOR_VERSION, 4): INCLUDEPATH += ./qjson4 +isEqual(QT_MAJOR_VERSION, 4): HEADERS += qjson4/QJsonArray.h \ + qjson4/QJsonDocument.h \ + qjson4/QJsonObject.h \ + qjson4/QJsonParseError.h \ + qjson4/QJsonValue.h \ + qjson4/QJsonValueRef.h \ + qjson4/QJsonParser.h \ + qjson4/QJsonRoot.h + +isEqual(QT_MAJOR_VERSION, 4): SOURCES += qjson4/QJsonArray.cpp \ + qjson4/QJsonDocument.cpp \ + qjson4/QJsonObject.cpp \ + qjson4/QJsonParseError.cpp \ + qjson4/QJsonValue.cpp \ + qjson4/QJsonValueRef.cpp \ + qjson4/QJsonParser.cpp + +isEqual(QT_MAJOR_VERSION, 4): RESOURCES += res/tr_qt4.qrc +isEqual(QT_MAJOR_VERSION, 4): GTA5SYNC_RCC = $$[QT_INSTALL_BINS]/rcc + +# QT5 ONLY STUFF + +isEqual(QT_MAJOR_VERSION, 5): RESOURCES += res/tr_qt5.qrc +isEqual(QT_MAJOR_VERSION, 5): GTA5SYNC_RCC = $$[QT_HOST_BINS]/rcc + +# PROJECT INSTALLATION + +isEmpty(GTA5SYNC_PREFIX): GTA5SYNC_PREFIX = /usr/local + +appfiles.path = $$GTA5SYNC_PREFIX/share/applications +appfiles.files = $$PWD/res/rdr2view.desktop +pixmaps.path = $$GTA5SYNC_PREFIX/share/pixmaps +pixmaps.files = $$PWD/res/gta5view.png +target.path = $$GTA5SYNC_PREFIX/bin +INSTALLS += target pixmaps appfiles + +# QCONF BASED BUILD STUFF + +contains(DEFINES, GTA5SYNC_QCONF){ + isEqual(QT_MAJOR_VERSION, 4): RESOURCES -= res/tr_qt4.qrc + isEqual(QT_MAJOR_VERSION, 5): RESOURCES -= res/tr_qt5.qrc + !contains(DEFINES, GTA5SYNC_QCONF_IN){ + RESOURCES -= res/tr_g5p.qrc + langfiles.path = $$GTA5SYNC_PREFIX/share/rdr2view/translations + langfiles.files = $$PWD/res/gta5sync_en_US.qm $$PWD/res/gta5sync_de.qm $$PWD/res/gta5sync_fr.qm $$PWD/res/gta5sync_ko.qm $$PWD/res/gta5sync_ru.qm $$PWD/res/gta5sync_uk.qm $$PWD/res/gta5sync_zh_TW.qm $$PWD/res/qtbase_en_GB.qm $$PWD/res/qtbase_zh_TW.qm + INSTALLS += langfiles + } +} + +# TELEMETRY BASED STUFF + +!contains(DEFINES, GTA5SYNC_TELEMETRY){ + SOURCES -= TelemetryClass.cpp \ + tmext/TelemetryClassAuthenticator.cpp + HEADERS -= TelemetryClass.h \ + tmext/TelemetryClassAuthenticator.h +} diff --git a/res/5sync-128.png b/res/5sync-128.png new file mode 100644 index 0000000000000000000000000000000000000000..fc3d97addf7debf9952de2a1c6c33ac282816d29 GIT binary patch literal 3226 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 literal 0 HcmV?d00001 diff --git a/res/5sync-16.png b/res/5sync-16.png new file mode 100644 index 0000000000000000000000000000000000000000..662b09d7c38527a595848c258ceb7d38f5534858 GIT binary patch literal 357 zcmV-r0h<1aP)X{$VnuNi@<9tiE$Z=tIOjqX}FhdV^mLAeRW00000NkvXXu0mjf DE&7+X literal 0 HcmV?d00001 diff --git a/res/5sync-24.png b/res/5sync-24.png new file mode 100644 index 0000000000000000000000000000000000000000..3b2797b02463bb1049315bc8796a0da571d45127 GIT binary patch literal 585 zcmV-P0=E5$P)y0%$ihYzE)5$gvNIQwVxh@p;XD?e^3w48{f2Ss={?VL&gneo`JVHA z8DlBx@NL7S8vKUxs!J+(k5t3jUk)5sV}iw)k@Z1*`h)L-(LCk8(hV2ZTY4?BCV$`J zGv$!gxguaTkWRn6N^gwUBS#mSIS@p&57>dU}D@bTOYFk6N1iQb@p2tbpD#4 zH*qNI?ZLxDC3qDy2Cc!ODY0lD8WK^^S@5+K^D$G&4ZO<<+6s=31oG72ZE(4Cb}wkj z6r literal 0 HcmV?d00001 diff --git a/res/5sync-256.png b/res/5sync-256.png new file mode 100644 index 0000000000000000000000000000000000000000..e728fb45501a6a73d8f4f95c02e280c1a99faeb6 GIT binary patch literal 6302 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 JPDHLkV1mrl`Pl#f literal 0 HcmV?d00001 diff --git a/res/5sync-96.png b/res/5sync-96.png new file mode 100644 index 0000000000000000000000000000000000000000..975157d2900db12bc65e04fd7a45292f2f96d39a GIT binary patch literal 2737 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 literal 0 HcmV?d00001 diff --git a/res/5sync.icns b/res/5sync.icns new file mode 100644 index 0000000000000000000000000000000000000000..12f8c6f26f292315fb61ca6384a82d2d8a46f472 GIT binary patch literal 45948 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 ZE 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 C-hW2` literal 0 HcmV?d00001 diff --git a/res/app.qrc b/res/app.qrc new file mode 100644 index 0000000..bf47519 --- /dev/null +++ b/res/app.qrc @@ -0,0 +1,31 @@ + + + 5sync-48.png + 5sync-16.png + 5sync-24.png + 5sync-32.png + 5sync-40.png + 5sync-64.png + 5sync-96.png + 5sync-128.png + 5sync-256.png + add.svgz + avatararea.png + avatarareaimport.png + back.svgz + empty1x16.png + mappreview.jpg + next.svgz + pointmaker-8.png + pointmaker-16.png + pointmaker-24.png + pointmaker-32.png + savegame.svgz + watermark_1b.png + watermark_2b.png + watermark_2r.png + + + template.r5e + + diff --git a/res/app.rc b/res/app.rc new file mode 100644 index 0000000..57d2d4a --- /dev/null +++ b/res/app.rc @@ -0,0 +1,36 @@ +IDI_ICON1 ICON DISCARDABLE "5sync.ico" + +#define RT_MANIFEST 24 +#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "rdr2view.exe.manifest" + +#include + +VS_VERSION_INFO VERSIONINFO +FILEVERSION 0, 1, 0, 0 +PRODUCTVERSION 0, 1, 0, 0 +FILEFLAGSMASK 0x3fL +FILEFLAGS 0 +FILEOS VOS_NT_WINDOWS32 +FILETYPE VFT_APP +FILESUBTYPE VFT2_UNKNOWN +BEGIN + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0809, 1200 + END + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Syping" + VALUE "FileDescription", "rdr2view" + VALUE "FileVersion", "0.1.0" + VALUE "InternalName", "rdr2view" + VALUE "LegalCopyright", "Copyright © 2016-2019 Syping" + VALUE "OriginalFilename", "rdr2view.exe" + VALUE "ProductName", "rdr2view" + VALUE "ProductVersion", "0.1.0" + END + END +END diff --git a/res/avatararea.png b/res/avatararea.png new file mode 100644 index 0000000000000000000000000000000000000000..463d8469b51ae783901647f982585b395846c485 GIT binary patch literal 2877 zcmeAS@N?(olHy`uVBq!ia0y~yU_QXWz$C%J1{7IzrZpExu_bxCyDekWo0g??2 zAOjhBfCQ5SkYF(Y5*!IYLf`<9P-tLeU~phyMrIMC1x+&nE!gbCtp%qOv1-BZD|9VH z1O!-1!}UC-eH|T#xfl$tOFZ7h1_Vq?@6o-CoV?qUdv$6&J7Ax zVqJpnCj9;dM-I_i5b;Tjmf;?Y;OHVIAfP$G7Z{5qD2HVoVzi6~HAWFbqm(`L3LDar zDLA#!DD1$+$Dl~6#1_<}VTYs0BDOYyR9nObw*$j$cr{3b4Z}W}g6nP~0s_)-04pRm lsA-w92SpYqBJ3PyvD*jnGM_K{v=5Z*JYD@<);T3K0RTiJ0dD{R literal 0 HcmV?d00001 diff --git a/res/avatarareaimport.png b/res/avatarareaimport.png new file mode 100644 index 0000000000000000000000000000000000000000..cddc1d81025c45aa7c849d4c2129243e29ff5049 GIT binary patch literal 2353 zcmeAS@N?(olHy`uVBq!ia0y~yU_QXWz$C%J3>29vR2mNyUkD1M4ME7srr_TW>Er@-i@RFmHT# z--PSOgb#{qS^8AT53d7$AE&)HOW=`UKGv{PYJ)OI_c;hU#I@S^&>{%hyx~O;6j>?j zKoK`gB~U#~q4A+tFoiF4UvCM!b` w^es8Ll%Sz&1|-8Fl~Mx}Z}5akVq)-->f0zVbA8#xFQDSv)78&qol`;+05OrxAOHXW literal 0 HcmV?d00001 diff --git a/res/back.svgz b/res/back.svgz new file mode 100644 index 0000000000000000000000000000000000000000..84a61babf1056752c65bf37a3c38acb8c0a374e4 GIT binary patch literal 455 zcmV;&0XY62iwFP!000000F9DSi<~eNh2QsAg!HkaF}luHt1gtXQ0P;)rH>_(+;PHc zB1uNaf8RuB)-CKq1tGcTJ14o9RF9XwLn9a~wW=|V6O2G{Eu?B|{Ojja^a&&Dm=dhh z3Tmu0er)b4JGOTSA#YZ;6uibK=Z2Dy;cU8Co0bSppo1QivxLT!;0@;+&J8dpN8q~e zwX%y-*$;1EBaW~1G)?i8Ef6h=f+Q(P)5sH%ot0yk=wGY9<9pULNfP3~v;*V5 z|G|I-Gs04zq;RJi=QJHIOJS5SebJX1Cn!O_9R5|L*nG`1;gToR`0~d0DCO z1%(~-*++R!@bail&s-yW)m~i__1@&xjrYLOZe51m!;&@VZf>>Oq-$XvKSG0+{wdZt%hMgD xd3=wujK|gW!U_%O?XxcsyMk fLpZJ{CoIqd@&Xtbm4siE0$B{6u6{1-oD!M<84MJJ literal 0 HcmV?d00001 diff --git a/res/gta5sync.ts b/res/gta5sync.ts new file mode 100644 index 0000000..e097c0c --- /dev/null +++ b/res/gta5sync.ts @@ -0,0 +1,2469 @@ + + + + + AboutDialog + + + About %1 + + + + + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Created on %4<br/> +Built with Qt %5<br/> +Running with Qt %6<br/> +<br/> +%7 + + + + + &Close + + + + + Translated by %1 + Translated by translator, example Translated by Syping + + + + + TRANSLATOR + Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile + + + + + A project for viewing Red Dead Redemption 2 Snapmatic<br/> +Pictures and Savegames + + + + + Copyright &copy; <a href="%1">%2</a> %3 + + + + + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + + + + + Release + + + + + Release Candidate + + + + + Daily Build + + + + + Developer + + + + + Beta + + + + + Alpha + + + + + Custom + + + + + CrewDatabase + + + + No Crew + + + + + ExportDialog + + + Dialog + + + + + Export Format + + + + + &JPEG/PNG format + + + + + GTA &Snapmatic format + + + + + Export Size + + + + + Default &Size + + + + + &Desktop Size + + + + + &Custom Size + + + + + Custom Size: + + + + + x + + + + + &Export + + + + + &Close + + + + + ImageEditorDialog + + + + Overwrite Image... + + + + + Import picture + + + + + &Import... + + + + + + Apply changes + + + + + + &Overwrite + + + + + + Discard changes + + + + + + &Close + + + + + + + + + + Snapmatic Image Editor + + + + + + + Patching of Snapmatic Image failed because of I/O Error + + + + + + + Patching of Snapmatic Image failed because of Image Error + + + + + ImportDialog + + + Import... + + + + + Picture + + + + + Avatar + + + + + + Ignore Aspect Ratio + + + + + Watermark + + + + + Background + + + + + + + + Background Colour: <span style="color: %1">%1</span> + + + + + Select background colour + + + + + + ... + + + + + + + + Background Image: + + + + + Select background image + + + + + Remove background image + + + + + X + + + + + Force Colour in Avatar Zone + + + + + Import options + + + + + &Options + + + + + Import picture + + + + + &OK + + + + + Discard picture + + + + + &Cancel + + + + + &Import new Picture... + + + + + &Crop Picture... + + + + + &Load Settings... + + + + + &Save Settings... + + + + + + Custom Avatar + Custom Avatar Description in SC, don't use Special Character! + + + + + + Custom Picture + Custom Picture Description in SC, don't use Special Character! + + + + + Storage + Background Image: Storage + + + + + Crop Picture... + + + + + &Crop + + + + + Crop Picture + + + + + + Please import a new picture first + + + + + + Default + Default as Default Profile + + + + + + + + + + + + + + + + + + + + + + + + Profile %1 + Profile %1 as Profile 1 + + + + + + Load Settings... + + + + + + Save Settings... + + + + + Snapmatic Avatar Zone + + + + + Are you sure to use a square image outside of the Avatar Zone? +When you want to use it as Avatar the image will be detached! + + + + + Select Colour... + + + + + + Background Image: %1 + + + + + + Please select your settings profile + + + + + File + Background Image: File + + + + + JsonEditorDialog + + + Snapmatic JSON Editor + + + + + Apply changes + + + + + &Save + + + + + Discard changes + + + + + &Close + + + + + JSON Error + + + + + MapLocationDialog + + + Snapmatic Map Viewer + + + + + Close viewer + + + + + &Close + + + + + Apply new position + + + + + &Apply + + + + + Revert old position + + + + + &Revert + + + + + Select new position + + + + + &Select + + + + + Quit select position + + + + + &Done + + + + + X: %1 +Y: %2 + X and Y position + + + + + OptionsDialog + + + %1 - Settings + + + + + Profiles + + + + + Content Open/Select Mode + + + + + Open with Singleclick + + + + + Open with Doubleclick + + + + + Select with Singleclick + + + + + Default Profile + + + + + Custom RDR 2 Folder + + + + + Force using Custom Folder + + + + + ... + + + + + Pictures + + + + + Export Size + + + + + Default: %1x%2 + + + + + Screen Resolution: %1x%2 + + + + + + Custom Size: + + + + + x + + + + + Ignore Aspect Ratio + + + + + Export Quality + + + + + Enable Custom Quality + + + + + Quality: + + + + + %1% + + + + + Picture Viewer + + + + + Enable Navigation Bar + + + + + Players + + + + + ID + + + + + Name + + + + + Game + + + + + Social Club Version + + + + + + + + + + + + Found: %1 + + + + + + + + + + + + + + Language: %1 + + + + + Steam Version + + + + + Feedback + + + + + Participation + + + + + + Participate in %1 User Statistics + + + + + Categories + + + + + Hardware, Application and OS Specification + + + + + System Language Configuration + + + + + Application Configuration + + + + + Personal Usage Data + + + + + Other + + + + + + + Participation ID: %1 + + + + + &Copy + + + + + Interface + + + + + Language for Interface + + + + + + + + Current: %1 + + + + + Language for Areas + + + + + Style + + + + + Use Default Style (Restart) + + + + + Style: + + + + + Font + + + + + Always use Message Font (Windows 2003 and earlier) + + + + + Apply changes + + + + + &OK + OK, Cancel, Apply + + + + + Discard changes + + + + + &Cancel + OK, Cancel, Apply + + + + + System + System in context of System default + + + + + %1 (Game language) + Next closest language compared to the Game settings + + + + + + %1 (Closest to Interface) + Next closest language compared to the Interface + + + + + + + Auto + Automatic language choice. + + + + + %1 (Language priority) + First language a person can talk with a different person/application. "Native" or "Not Native". + + + + + %1 + %1 + + + + + The new Custom Folder will initialise after you restart %1. + + + + + No Profile + No Profile, as default + + + + + + + Profile: %1 + + + + + View %1 User Statistics Online + + + + + Not registered + + + + + + + + Yes + + + + + + No + + + + + + OS defined + + + + + + Steam defined + + + + + PictureDialog + + + Snapmatic Picture Viewer - %1 + + + + + <span style=" font-weight:600;">Title: </span>%6<br/> +<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Created: </span>%8 + + + + + Manage picture + + + + + &Manage + + + + + Close viewer + + + + + &Close + + + + + + Export as &Picture... + + + + + + Export as &Snapmatic... + + + + + + &Edit Properties... + + + + + + &Overwrite Image... + + + + + + Open &Map Viewer... + + + + + + Open &JSON Editor... + + + + + Key 1 - Avatar Preview Mode +Key 2 - Toggle Overlay +Arrow Keys - Navigate + + + + + + Snapmatic Picture Viewer + + + + + + Failed at %1 + + + + + + + No Players + + + + + + No Crew + + + + + Unknown Location + + + + + Avatar Preview Mode +Press 1 for Default View + + + + + Export as Picture... + + + + + + Export + + + + + JPEG Graphics (*.jpg *.jpeg) + + + + + Portable Network Graphics (*.png) + + + + + + + + + + Export as Picture + + + + + + Overwrite %1 with current Snapmatic picture? + + + + + Failed to export the picture because the system occurred a write failure + + + + + Failed to export the picture because the format detection failures + + + + + Failed to export the picture because the file can't be written + + + + + Failed to export the picture because of an unknown reason + + + + + + No valid file is selected + + + + + Export as Snapmatic... + + + + + RDR 2 Export (*.g5e) + + + + + RDR 2 Raw Export (*.auto) + + + + + Snapmatic pictures (PGTA*) + + + + + + + + + Export as Snapmatic + + + + + + Failed to export current Snapmatic picture + + + + + Exported Snapmatic to "%1" because of using the .auto extension. + + + + + PlayerListDialog + + + Edit Players... + + + + + Available Players: + + + + + Selected Players: + + + + + &Apply + + + + + &Cancel + + + + + Add Players... + + + + + Failed to add more Players because the limit of Players are %1! + + + + + + Add Player... + + + + + Enter Social Club Player ID + + + + + Failed to add Player %1 because Player %1 is already added! + + + + + ProfileInterface + + + Profile Interface + + + + + Loading file %1 of %2 files + + + + + %1 %2 + + + + + Import file + + + + + &Import... + + + + + Close profile + + + + + &Close + + + + + + + Export file %1 of %2 files + + + + + + + + + + + + + + + + + + + + + + + + Import... + + + + + + + + + + + + + Import + + + + + + + + All image files (%1) + + + + + + + + + All files (**) + + + + + + + + Can't import %1 because file can't be open + + + + + + + + Can't import %1 because file can't be parsed properly + + + + + Enabled pictures: %1 of %2 + + + + + Loading... + + + + + Snapmatic Loader + + + + + <h4>Following Snapmatic Pictures got repaired</h4>%1 + + + + + Importable files (%1) + + + + + + RDR 2 Export (*.g5e) + + + + + + Savegames files (SGTA*) + + + + + + Snapmatic pictures (PGTA*) + + + + + + + No valid file is selected + + + + + + Import file %1 of %2 files + + + + + Import failed with... + +%1 + + + + + + Failed to read Snapmatic picture + + + + + + Failed to read Savegame file + + + + + Can't import %1 because file format can't be detected + + + + + Prepare Content for Import... + + + + + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e + + + + + A Snapmatic picture already exists with the uid %1, you want assign your import a new uid and timestamp? + + + + + Failed to import the Snapmatic picture, can't copy the file into profile + + + + + Failed to import the Savegame, can't copy the file into profile + + + + + Failed to import the Savegame, no Savegame slot is left + + + + + + + + + Export selected... + + + + + + JPG pictures and GTA Snapmatic + + + + + + JPG pictures only + + + + + + GTA Snapmatic only + + + + + %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: + + + + + Initialising export... + + + + + Export failed with... + +%1 + + + + + + No Snapmatic pictures or Savegames files are selected + + + + + + + Remove selected + + + + + You really want remove the selected Snapmatic picutres and Savegame files? + + + + + Failed to remove all selected Snapmatic pictures and/or Savegame files + + + + + + + + + + No Snapmatic pictures are selected + + + + + + + + + + %1 failed with... + +%2 + Action failed with... + + + + + + Qualify as Avatar + + + + + + + + Patch selected... + + + + + + + + + + + + Patch file %1 of %2 files + + + + + Qualify + %1 failed with... + + + + + + Change Players... + + + + + Change Players + %1 failed with... + + + + + + + Change Crew... + + + + + Failed to enter a valid Snapmatic Crew ID + + + + + Change Crew + %1 failed with... + + + + + + + Change Title... + + + + + Failed to enter a valid Snapmatic title + + + + + Change Title + %1 failed with... + + + + + All profile files (*.g5e SGTA* PGTA*) + + + + + QApplication + + + Font + + + + + Selected Font: %1 + + + + + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? + + + + + SavegameDialog + + + + Savegame Viewer + + + + + <span style=" font-weight:600;">Savegame</span><br><br>%1 + + + + + &Export + + + + + &Close + + + + + Failed at %1 + + + + + SavegameWidget + + + Savegame Widget + + + + + SAVE %3 - %1<br>%2 + + + + + View savegame + + + + + View + + + + + Copy savegame + + + + + + Export + + + + + Delete savegame + + + + + Delete + + + + + &View + + + + + &Export + + + + + &Remove + + + + + &Select + + + + + &Deselect + + + + + Select &All + + + + + &Deselect All + + + + + Savegame files (SGTA*) + + + + + All files (**) + + + + + + + + Export Savegame + + + + + Overwrite %1 with current Savegame? + + + + + Failed to overwrite %1 with current Savegame + + + + + Failed to export current Savegame + + + + + No valid file is selected + + + + + Export Savegame... + + + + + + AUTOSAVE - %1 +%2 + + + + + + SAVE %3 - %1 +%2 + + + + + + WRONG FORMAT + + + + + UNKNOWN + + + + + + Delete Savegame + + + + + Are you sure to delete %1 from your savegames? + + + + + Failed at deleting %1 from your savegames + + + + + SnapmaticEditor + + + + + + + + + + + Snapmatic Properties + + + + + Snapmatic Type + + + + + Editor + + + + + Selfie + + + + + Regular + + + + + Mugshot + + + + + Meme + + + + + Director + + + + + Snapmatic Values + + + + + Extras + + + + + Qualify as Avatar automatically at apply + + + + + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture + + + + + Apply changes + + + + + &Apply + + + + + Discard changes + + + + + &Cancel + + + + + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? + + + + + Patching of Snapmatic Properties failed because of %1 + + + + + + + + Patching of Snapmatic Properties failed because of I/O Error + + + + + Patching of Snapmatic Properties failed because of JSON Error + + + + + + Snapmatic Crew + + + + + + New Snapmatic crew: + + + + + + Snapmatic Title + + + + + + New Snapmatic title: + + + + + + + Edit + + + + + Players: %1 (%2) + Multiple Player are inserted here + + + + + Player: %1 (%2) + One Player is inserted here + + + + + Title: %1 (%2) + + + + + + Appropriate: %1 + + + + + Yes + Yes, should work fine + + + + + No + No, could lead to issues + + + + + Crew: %1 (%2) + + + + + SnapmaticPicture + + + + JSON is incomplete and malformed + + + + + + JSON is incomplete + + + + + + JSON is malformed + + + + + PHOTO - %1 + + + + + open file %1 + + + + + header not exists + + + + + header is malformed + + + + + picture not exists (%1) + + + + + JSON not exists (%1) + + + + + title not exists (%1) + + + + + description not exists (%1) + + + + + reading file %1 because of %2 + Example for %2: JSON is malformed error + + + + + SnapmaticWidget + + + Snapmatic Widget + + + + + PHOTO - 00/00/00 00:00:00 + + + + + View picture + + + + + View + + + + + Copy picture + + + + + Copy + + + + + Export picture + + + + + Export + + + + + + + Delete picture + + + + + Delete + + + + + Edi&t + + + + + Show &In-game + + + + + Hide &In-game + + + + + &Export + + + + + &View + + + + + &Remove + + + + + &Select + + + + + &Deselect + + + + + Select &All + + + + + &Deselect All + + + + + Are you sure to delete %1 from your Snapmatic pictures? + + + + + Failed at deleting %1 from your Snapmatic pictures + + + + + Failed to hide %1 In-game from your Snapmatic pictures + + + + + Failed to show %1 In-game from your Snapmatic pictures + + + + + TelemetryDialog + + + You want help %1 to improve in the future by including personal usage data in your submission? + + + + + %1 User Statistics + + + + + Yes, I want include personal usage data. + + + + + &OK + + + + + UserInterface + + + + %2 - %1 + + + + + Select profile + + + + + %1 %2 + + + + + Reload profile overview + + + + + &Reload + + + + + Close %1 + Close %1 <- (gta5view/gta5sync) - %1 will be replaced automatically + + + + + &Close + + + + + &File + + + + + &Help + + + + + &Edit + + + + + &Profile + + + + + &Selection visibility + + + + + Selection &mass tools + + + + + + + &About %1 + + + + + &Exit + + + + + Exit + + + + + Close &Profile + + + + + &Settings + + + + + Select &All + + + + + &Deselect All + + + + + &Export selected... + + + + + &Remove selected + + + + + &Import files... + + + + + &Open File... + + + + + + Select &RDR 2 Folder... + + + + + + + + Select RDR 2 Folder... + + + + + Show In-gam&e + + + + + Hi&de In-game + + + + + Change &Title... + + + + + Change &Crew... + + + + + &Qualify as Avatar + + + + + Change &Players... + + + + + + + Show In-game + + + + + + + Hide In-game + + + + + + + Select Profile + + + + + Open File... + + + + + + + + Open File + + + + + Can't open %1 because of not valid file format + + + + diff --git a/res/gta5sync_de.qm b/res/gta5sync_de.qm new file mode 100644 index 0000000000000000000000000000000000000000..69a41e9d3c8908620c22b44ea343ece10356963e GIT binary patch literal 48650 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 W2|#)QR?84Ncm-b$2ei1T=>GveWQKPD literal 0 HcmV?d00001 diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts new file mode 100644 index 0000000..060119c --- /dev/null +++ b/res/gta5sync_de.ts @@ -0,0 +1,2494 @@ + + + + + AboutDialog + + + About %1 + Ãœber %1 + + + + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Created on %4<br/> +Built with Qt %5<br/> +Running with Qt %6<br/> +<br/> +%7 + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Erstellt am %4<br/> +Gebaut mit Qt %5<br/> +Läuft auf Qt %6<br/> +<br/> +%7 + + + + &Close + S&chließen + + + + Translated by %1 + Translated by translator, example Translated by Syping + Ãœbersetzt von %1 + + + + TRANSLATOR + Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile + Syping,g5e://about?U3lwaW5n:R2l0TGFiOiA8YSBocmVmPSJodHRwczovL2dpdGxhYi5jb20vU3lwaW5nIj5TeXBpbmc8L2E+PGJyLz5HaXRIdWI6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TeXBpbmciPlN5cGluZzwvYT48YnIvPlNvY2lhbCBDbHViOiA8YSBocmVmPSJodHRwczovL3NvY2lhbGNsdWIucm9ja3N0YXJnYW1lcy5jb20vbWVtYmVyL1N5cGluZy80NjMwMzA1NiI+U3lwaW5nPC9hPg== + + + + A project for viewing Red Dead Redemption 2 Snapmatic<br/> +Pictures and Savegames + Ein Projekt zum ansehen von Red Dead Redemption 2<br/> +Snapmatic Bilder und Spielständen + + + + Copyright &copy; <a href="%1">%2</a> %3 + Copyright &copy; <a href="%1">%2</a> %3 + + + + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + %1 ist lizenziert unter <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + + + + Release + Release + + + + Release Candidate + Release Candidate + + + + Daily Build + Daily Build + + + + Developer + Entwickler + + + + Beta + Beta + + + + Alpha + Alpha + + + + Custom + Eigener + + + + CrewDatabase + + + + No Crew + Keine Crew + + + + ExportDialog + + + Dialog + Dialog + + + + &JPEG/PNG format + &JPEG/PNG Format + + + + GTA &Snapmatic format + GTA &Snapmatic Format + + + + Export Format + Export Format + + + + Export Size + Export Größe + + + + Default &Size + &Standard Größe + + + + &Desktop Size + &Desktop Größe + + + + &Custom Size + &Eigene Größe + + + + Custom Size: + Eigene Größe: + + + + x + x + + + + &Export + &Exportieren + + + + &Close + S&chließen + + + + ImageEditorDialog + + + + + + + + Snapmatic Image Editor + Snapmatic Bild Editor + + + + + Overwrite Image... + Bild überschreiben... + + + + Import picture + Bild importieren + + + + &Import... + &Importieren... + + + + + Apply changes + Änderungen übernehmen + + + + + &Overwrite + &Ãœberschreiben + + + + + Discard changes + Änderungen verwerfen + + + + + &Close + S&chließen + + + + + + Patching of Snapmatic Image failed because of I/O Error + Patchen von Snapmatic Bild fehlgeschlagen wegen I/O Fehler + + + + + + Patching of Snapmatic Image failed because of Image Error + Patchen von Snapmatic Bild fehlgeschlagen wegen Bild Fehler + + + + ImportDialog + + + Import... + Importieren... + + + + + Ignore Aspect Ratio + Seitenverhältnis ignorieren + + + + Avatar + Avatar + + + + Picture + Bild + + + + Watermark + Wasserzeichen + + + + Background + Hintergrund + + + + + + + Background Colour: <span style="color: %1">%1</span> + Hintergrundfarbe: <span style="color: %1">%1</span> + + + + Select background colour + Hintergrundfarbe auswählen + + + + + ... + ... + + + + Select background image + Hintergrundbild auswählen + + + + Remove background image + Hintergrundbild entfernen + + + + + Background Image: %1 + Hintergrundbild: %1 + + + + X + X + + + + Force Colour in Avatar Zone + Erzwinge Farbe in Avatar Zone + + + + Import options + Import Optionen + + + + &Options + &Optionen + + + + Import picture + Bild importieren + + + + &OK + &OK + + + + Discard picture + Bild verwerfen + + + + &Cancel + Abbre&chen + + + + + + + Background Image: + Hintergrundbild: + + + + &Import new Picture... + Neues Bild &importieren... + + + + &Crop Picture... + Bild zu&schneiden... + + + + &Load Settings... + Einstellungen &laden... + + + + &Save Settings... + Einstellungen &speichern... + + + + + Custom Avatar + Custom Avatar Description in SC, don't use Special Character! + Eigener Avatar + + + + + Custom Picture + Custom Picture Description in SC, don't use Special Character! + Eigenes Bild + + + + Storage + Background Image: Storage + Speicher + + + + Crop Picture... + Bild zuschneiden... + + + + &Crop + Zu&schneiden + + + + Crop Picture + Bild zuschneiden + + + + + Please import a new picture first + Bitte importiere ein neues Bild zuerst + + + + + Default + Default as Default Profile + Standard + + + + + + + + + + + + + + + + + + + + + + + Profile %1 + Profile %1 as Profile 1 + Profil %1 + + + + + Load Settings... + Einstellungen laden... + + + + + Please select your settings profile + Bitte wähle dein Einstellungsprofil aus + + + + + Save Settings... + Einstellungen speichern... + + + + Are you sure to use a square image outside of the Avatar Zone? +When you want to use it as Avatar the image will be detached! + Bist du sicher ein Quadrat Bild außerhalb der Avatar Zone zu verwenden? +Wenn du es als Avatar verwenden möchtest wird es abgetrennt! + + + + Snapmatic Avatar Zone + Snapmatic Avatar Zone + + + + Select Colour... + Farbe auswählen... + + + + File + Background Image: File + Datei + + + + JsonEditorDialog + + + Snapmatic JSON Editor + Snapmatic JSON Editor + + + + Apply changes + Änderungen übernehmen + + + + &Save + &Speichern + + + + Discard changes + Änderungen verwerfen + + + + &Close + S&chließen + + + + JSON Error + JSON Fehler + + + + MapLocationDialog + + + Snapmatic Map Viewer + Snapmatic Kartenansicht + + + + Close viewer + Ansicht schließen + + + + &Close + S&chließen + + + + Apply new position + Neue Position festlegen + + + + &Apply + &Ãœbernehmen + + + + Revert old position + Alte Position wiederherstellen + + + + &Revert + &Zurücksetzen + + + + Select new position + Neue Position auswählen + + + + &Select + Au&swählen + + + + Quit select position + Position auswählen verlassen + + + + &Done + &Fertig + + + + X: %1 +Y: %2 + X and Y position + X: %1 +Y: %2 + + + + OptionsDialog + + + Content Open/Select Mode + Inhalte Öffnen/Auswählen Modus + + + + Open with Singleclick + Ein Klick zum öffnen + + + + Open with Doubleclick + Doppelklick zum öffnen + + + + Select with Singleclick + Ein Klick zum auswählen + + + + Default Profile + Standardprofil + + + + Pictures + Bilder + + + + Export Size + Export Größe + + + + Screen Resolution: %1x%2 + Bildschirmauflösung: %1x%2 + + + + %1 - Settings + %1 - Einstellungen + + + + Profiles + Profile + + + + Custom RDR 2 Folder + Eigener RDR 2 Ordner + + + + Force using Custom Folder + Nutzung vom eigenen Ordner erzwingen + + + + ... + ... + + + + Default: %1x%2 + Standard: %1x%2 + + + + + Custom Size: + Eigene Größe: + + + + x + x + + + + Ignore Aspect Ratio + Seitenverhältnis ignorieren + + + + Export Quality + Export Qualität + + + + Enable Custom Quality + Eigene Export Qualität benutzen + + + + Quality: + Qualität: + + + + %1% + %1% + + + + Picture Viewer + Snapmatic Bildansicht + + + + Enable Navigation Bar + Aktiviere Navigationsleiste + + + + Players + Spieler + + + + ID + ID + + + + Name + Name + + + + Game + Spiel + + + + Social Club Version + Social Club Version + + + + + + + + + + + Found: %1 + Gefunden: %1 + + + + + + + + + + + + + Language: %1 + Sprache: %1 + + + + Steam Version + Steam Version + + + + Feedback + Feedback + + + + Participation + Teilnahme + + + + + Participate in %1 User Statistics + An %1 Benutzerstatistik teilnehmen + + + + Categories + Kategorien + + + + Hardware, Application and OS Specification + Hardware, Anwendung und OS Spezifikation + + + + System Language Configuration + Spracheinstellungen des System + + + + Application Configuration + Anwendungseinstellungen + + + + Other + Sonstiges + + + + + + Participation ID: %1 + Teilnahme ID: %1 + + + + &Copy + &Kopieren + + + + Language for Areas + Sprache für Standorte + + + + Style + Stil + + + + Use Default Style (Restart) + Benutze Standard Stil (Neustart) + + + + Style: + Stil: + + + + Font + Schrift + + + + Always use Message Font (Windows 2003 and earlier) + Immer Nachrichtenschrift nutzen (Windows 2003 und früher) + + + + Interface + Oberfläche + + + + Personal Usage Data + Persönliche Nutzungsdaten + + + + Language for Interface + Sprache für Oberfläche + + + + + + + Current: %1 + Aktuell: %1 + + + + Apply changes + Änderungen übernehmen + + + + &OK + OK, Cancel, Apply + &OK + + + + Discard changes + Änderungen verwerfen + + + + &Cancel + OK, Cancel, Apply + Abbre&chen + + + + %1 + %1 + %1 + + + + System + System in context of System default + System + + + + %1 (Game language) + Next closest language compared to the Game settings + %1 (Spielsprache) + + + + + %1 (Closest to Interface) + Next closest language compared to the Interface + %1 (Näheste zur Oberfläche) + + + + + + Auto + Automatic language choice. + Automatisch + + + + %1 (Language priority) + First language a person can talk with a different person/application. "Native" or "Not Native". + %1 (Sprachenpriorität) + + + + The new Custom Folder will initialise after you restart %1. + Der eigene Ordner wird initialisiert sobald du %1 neugestartet hast. + + + + View %1 User Statistics Online + %1 Benutzerstatistik Online ansehen + + + + Not registered + Nicht registriert + + + + + + + Yes + Ja + + + + + No + Nein + + + + + OS defined + OS-defined + + + + + Steam defined + Steam-definiert + + + + No Profile + No Profile, as default + Kein Profil + + + + + + Profile: %1 + Profil: %1 + + + + PictureDialog + + + Snapmatic Picture Viewer - %1 + Snapmatic Bildansicht - %1 + + + + <span style=" font-weight:600;">Title: </span>%6<br/> +<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Created: </span>%8 + <span style=" font-weight:600;">Titel: </span>%6<br/> +<span style=" font-weight:600;">Standort: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Spieler: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Erstellt: </span>%8 + + + + Manage picture + Bild verwalten + + + + &Manage + &Verwalten + + + + Close viewer + Ansicht schließen + + + + &Close + S&chließen + + + + + Export + Exportieren + + + + + Export as &Picture... + Als &Bild exportieren... + + + + + Export as &Snapmatic... + Als &Snapmatic exportieren... + + + + + &Edit Properties... + Eigenschaften bearb&eiten... + + + + + &Overwrite Image... + Bild &überschreiben... + + + + + Open &Map Viewer... + &Kartenansicht öffnen... + + + + Key 1 - Avatar Preview Mode +Key 2 - Toggle Overlay +Arrow Keys - Navigate + Taste 1 - Avatar Vorschaumodus +Taste 2 - Overlay umschalten +Pfeiltasten - Navigieren + + + + + Snapmatic Picture Viewer + Snapmatic Bildansicht + + + + + Failed at %1 + Fehlgeschlagen beim %1 + + + + + No Crew + Keine Crew + + + + + + No Players + Keine Spieler + + + + Avatar Preview Mode +Press 1 for Default View + Avatar Vorschaumodus +Drücke 1 für Standardmodus + + + + Unknown Location + Unbekannter Standort + + + + Portable Network Graphics (*.png) + Portable Network Graphics (*.png) + + + + + Overwrite %1 with current Snapmatic picture? + Ãœberschreibe %1 mit aktuellen Snapmatic Bild? + + + + Export as Picture... + Als Bild exportieren... + + + + JPEG Graphics (*.jpg *.jpeg) + JPEG Graphics (*.jpg *.jpeg) + + + + + + + + + Export as Picture + Als Bild exportieren + + + + Failed to export the picture because the system occurred a write failure + Fehlgeschlagen beim Exportieren weil das System ein Schreibfehler ausgelöst hat + + + + Failed to export the picture because the format detection failures + Fehlgeschlagen beim Exportieren weil die Formaterkennung fehlschlägt + + + + Failed to export the picture because the file can't be written + Fehlgeschlagen beim Exportieren weil die Datei nicht beschrieben werden kann + + + + Failed to export the picture because of an unknown reason + Fehlgeschlagen beim Exportieren wegen einen unbekannten Grund + + + + + Failed to export current Snapmatic picture + Fehlgeschlagen beim Exportieren vom aktuellen Snapmatic Bild + + + + Export as Snapmatic... + Als Snapmatic exportieren... + + + + + + + + Export as Snapmatic + Als Snapmatic exportieren + + + + Exported Snapmatic to "%1" because of using the .auto extension. + Snapmatic wurde wegen Benutzung der .auto Erweiterung zu "%1" exportiert. + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + RDR 2 Raw Export (*.auto) + RDR 2 Roher Export (*.auto) + + + + Snapmatic pictures (PRDR*) + Snapmatic Bilder (PRDR*) + + + + + No valid file is selected + Keine gültige Datei wurde ausgewählt + + + + + Open &JSON Editor... + &JSON Editor öffnen... + + + + PlayerListDialog + + + Edit Players... + Spieler bearbeiten... + + + + Available Players: + Verfügbare Spieler: + + + + Selected Players: + Ausgewählte Spieler: + + + + &Apply + &Ãœbernehmen + + + + &Cancel + Abbre&chen + + + + Add Players... + Spieler hinzufügen... + + + + Failed to add more Players because the limit of Players are %1! + Fehlgeschlagen beim Hinzufügen von mehr Spielern weil der Limit von Spielern %1 ist! + + + + + Add Player... + Spieler hinzufügen... + + + + Enter Social Club Player ID + Social Club Spieler ID eingeben + + + + Failed to add Player %1 because Player %1 is already added! + Fehlgeschlagen beim Hinzufügen vom Spieler %1 weil Spieler %1 bereits hinzugefügt wurde! + + + + ProfileInterface + + + Profile Interface + Profil Interface + + + + Loading file %1 of %2 files + Loading %1 files of %2 files + Lade Datei %1 von %2 Dateien + + + + %1 %2 + %1 %2 + + + + Import file + Importiere Datei + + + + &Import... + &Importieren... + + + + Close profile + Profil schließen + + + + &Close + S&chließen + + + + Loading... + Lade... + + + + Snapmatic Loader + Snapmatic Lader + + + + <h4>Following Snapmatic Pictures got repaired</h4>%1 + <h4>Folgende Snapmatic Bilder wurden repariert</h4>%1 + + + + + + + + + + + + + + + + + + + + + + + Import... + Importieren... + + + + + + + + + + + + Import + Importieren + + + + + Savegames files (SRDR*) + Spielstanddateien (SRDR*) + + + + + Snapmatic pictures (PRDR*) + Snapmatic Bilder (PRDR*) + + + + Importable files (%1) + Importfähige Dateien (%1) + + + + + + + All image files (%1) + Alle Bilddateien (%1) + + + + + + + + All files (**) + Alle Dateien (**) + + + + + Import file %1 of %2 files + Importiere Datei %1 von %2 Dateien + + + + Import failed with... + +%1 + Importieren fehlgeschlagen mit... + +%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 file can't be open + Kann %1 nicht importieren weil die Datei nicht geöffnet werden kann + + + + + + + Can't import %1 because file can't be parsed properly + Kann %1 nicht importieren weil die Datei nicht richtig gelesen werden kann + + + + Can't import %1 because file format can't be detected + Kann %1 nicht importieren weil das Dateiformat nicht erkannt werden kann + + + + Initialising export... + Initialisiere Export... + + + + Failed to import the Snapmatic picture, file not begin with PRDR or end with .r5e + Fehlgeschlagen beim Importieren vom Snapmatic Bild, Datei beginnt nicht mit PRDR oder endet mit .r5e + + + + %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 + + + + A Snapmatic picture already exists with the uid %1, you want assign your import a new uid and timestamp? + Ein Snapmatic Bild mit der Uid %1 existiert bereits, möchtest du dein Import eine neue Uid und Zeitstempel zuweisen? + + + + 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 + + + + + + + Patch selected... + Auswahl patchen... + + + + + + + + + + + Patch file %1 of %2 files + Patche Datei %1 von %2 Dateien + + + + + Qualify as Avatar + Als Avatar qualifizieren + + + + + + + + + No Snapmatic pictures are selected + Keine Snapmatic Bilder sind ausgewählt + + + + Failed to remove all selected Snapmatic pictures and/or Savegame files + Fehlgeschlagen beim Entfernen von allen augewählten Snapmatic Bildern und/oder Spielstanddateien + + + + + + + + + %1 failed with... + +%2 + Action failed with... + %1 fehlgeschlagen mit... + +%2 + + + + Prepare Content for Import... + Bereite Inhalt für Import vor... + + + + Qualify + %1 failed with... + Qualifizieren + + + + + Change Players... + Spieler ändern... + + + + Change Players + %1 failed with... + Spieler ändern + + + + + + Change Crew... + Crew ändern... + + + + Failed to enter a valid Snapmatic Crew ID + Fehlgeschlagen beim Eingeben von einer gültigen Crew ID + + + + Change Crew + %1 failed with... + Crew ändern + + + + + + Change Title... + Titel ändern... + + + + Failed to enter a valid Snapmatic title + Fehlgeschlagen beim Eingeben eines gültigen Snapmatic Titel + + + + Change Title + %1 failed with... + Titel ändern + + + + + No Snapmatic pictures or Savegames files are selected + Keine Snapmatic Bilder oder Spielstände sind 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? + + + + + + + + Export selected... + Auswahl exportieren... + + + + Export failed with... + +%1 + Exportieren fehlgeschlagen bei...\n%1 + + + + + + Export file %1 of %2 files + Exportiere Datei %1 von %2 Dateien + + + + All profile files (*.r5e SRDR* PRDR*) + Alle Profildateien (*.r5e SRDR* PRDR*) + + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + QApplication + + + Font + Schrift + + + + Selected Font: %1 + Ausgewähle Schrift: %1 + + + + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? + <h4>Willkommen zu %1!</h4>Möchtest du %1 einstellen bevor du es nutzt? + + + + SavegameDialog + + + + Savegame Viewer + Spielstandanzeiger + + + + <span style=" font-weight:600;">Savegame</span><br><br>%1 + <span style=" font-weight:600;">Spielstand</span><br><br>%1 + + + + &Export + &Exportieren + + + + &Close + S&chließen + + + + Failed at %1 + Fehlgeschlagen bei %1 + + + + SavegameWidget + + + Savegame Widget + Spielstand Widget + + + + View + Ansehen + + + + + Export + Exportieren + + + + Delete + Löschen + + + + Delete savegame + Savegame löschen + + + + Export Savegame... + Spielstand exportieren... + + + + SAVE %3 - %1<br>%2 + SPIELSTAND %3 - %1<br>%2 + + + + + WRONG FORMAT + FALSCHES FORMAT + + + + + AUTOSAVE - %1 +%2 + AUTOSAVE - %1 +%2 + + + + + SAVE %3 - %1 +%2 + SPIELSTAND %3 - %1 +%2 + + + + UNKNOWN + UNKNOWN + + + + Are you sure to delete %1 from your savegames? + Bist du sicher %1 von deinen Spielständen zu löschen? + + + + + Delete Savegame + Savegame löschen + + + + Failed at deleting %1 from your savegames + 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 + + + + View savegame + Spielstand ansehen + + + + Copy savegame + Spielstand kopieren + + + + &Export + &Exportieren + + + + Savegame files (SRDR*) + Spielstanddateien (SRDR*) + + + + All files (**) + Alle Dateien (**) + + + + + + + Export Savegame + Spielstand exportieren + + + + Overwrite %1 with current Savegame? + Ãœberschreibe %1 mit aktuellen Spielstand? + + + + Failed to overwrite %1 with current Savegame + Fehlgeschlagen beim Ãœberschrieben von %1 mit aktuellen Spielstand + + + + Failed to export current Savegame + Fehlgeschlagen beim Exportieren vom aktuellen Spielstand + + + + No valid file is selected + Keine gültige Datei wurde ausgewählt + + + + SnapmaticEditor + + + + + + + + + + + Snapmatic Properties + Snapmatic Eigenschaften + + + + Snapmatic Type + Snapmatic Typ + + + + Editor + Editor + + + + Selfie + Selbstporträt + + + + Regular + Typisch + + + + Mugshot + Fahndungsfoto + + + + Director + Director + + + + Meme + Meme + + + + + Snapmatic Title + Snapmatic Titel + + + + Snapmatic Values + Snapmatic Werte + + + + Crew: %1 (%2) + Crew: %1 (%2) + + + + Title: %1 (%2) + Titel: %1 (%2) + + + + Players: %1 (%2) + Multiple Player are inserted here + Spieler: %1 (%2) + + + + Player: %1 (%2) + One Player is inserted here + Spieler: %1 (%2) + + + + + Appropriate: %1 + Angemessen: %1 + + + + 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 changes + Änderungen übernehmen + + + + &Apply + &Ãœbernehmen + + + + Discard changes + Änderungen verwerfen + + + + &Cancel + Abbre&chen + + + + + + Edit + Bearbeiten + + + + Yes + Yes, should work fine + Ja + + + + No + No, could lead to issues + Nein + + + + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? + <h4>Ungespeicherte Änderungen erkannt</h4>Möchtest du den JSON Inhalt speichern bevor du verlässt? + + + + Patching of Snapmatic Properties failed because of %1 + Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen %1 + + + + Patching of Snapmatic Properties failed because of JSON Error + Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen JSON Fehler + + + + + + + Patching of Snapmatic Properties failed because of I/O Error + Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen I/O Fehler + + + + + New Snapmatic title: + Neuer Snapmatic Titel: + + + + + Snapmatic Crew + Snapmatic Crew + + + + + New Snapmatic crew: + Neue Snapmatic Crew: + + + + SnapmaticPicture + + + PHOTO - %1 + FOTO - %1 + + + + open file %1 + Datei öffnen %1 + + + + header not exists + Header nicht existiert + + + + header is malformed + Header fehlerhaft ist + + + + picture not exists (%1) + Bild nicht existiert (%1) + + + + JSON not exists (%1) + JSON nicht existiert (%1) + + + + title not exists (%1) + Titel nicht existiert (%1) + + + + description not exists (%1) + Beschreibung nicht existiert (%1) + + + + reading file %1 because of %2 + Example for %2: JSON is malformed error + Datei lesen von %1 weil %2 + + + + + JSON is incomplete and malformed + JSON ist unvollständig und Fehlerhaft + + + + + JSON is incomplete + JSON ist unvollständig + + + + + JSON is malformed + JSON ist Fehlerhaft + + + + SnapmaticWidget + + + Snapmatic Widget + Snapmatic Widget + + + + PHOTO - 00/00/00 00:00:00 + FOTO - 00/00/00 00:00:00 + + + + View + Ansehen + + + + Copy + Kopieren + + + + Export + Exportieren + + + + Delete + Löschen + + + + + + Delete picture + Bild löschen + + + + Are you sure to delete %1 from your Snapmatic pictures? + Bist du sicher %1 von deine Snapmatic Bilder zu löschen? + + + + Failed to hide %1 In-game from your Snapmatic pictures + Fehlgeschlagen beim Ausblenden von %1 im Spiel von deinen Snapmatic Bildern + + + + Failed to show %1 In-game from your Snapmatic pictures + Fehlgeschlagen beim Anzeigen von %1 im Spiel von deinen Snapmatic Bildern + + + + Edi&t + Bearbei&ten + + + + &Export + &Exportieren + + + + Show &In-game + &Im Spiel anzeigen + + + + Hide &In-game + &Im Spiel ausblenden + + + + &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 + + + + View picture + Bild ansehen + + + + Copy picture + Bild kopieren + + + + Export picture + Bild exportieren + + + + Failed at deleting %1 from your Snapmatic pictures + Fehlgeschlagen beim Löschen von %1 von deinen Snapmatic Bildern + + + + TelemetryDialog + + + %1 User Statistics + %1 Benutzerstatistik + + + + You want help %1 to improve in the future by including personal usage data in your submission? + Sollen bei Einreichungen Persönliche Nutzungsdaten einbezogen werden um %1 in der Zukunft zu unterstützen? + + + + Yes, I want include personal usage data. + Ja, ich möchte Persönliche Nutzungsdaten einbeziehen. + + + + &OK + &OK + + + + UserInterface + + + Exit + Beenden + + + + &Selection visibility + Auswahl &Sichtbarkeit + + + + &Exit + B&eenden + + + + Select profile + Profil auswählen + + + + %1 %2 + %1 %2 + + + + Reload profile overview + Ãœbersicht der Profile neuladen + + + + Close %1 + Close %1 <- (gta5view/gta5sync) - %1 will be replaced automatically + Schließe %1 + + + + &File + &Datei + + + + &Help + &Hilfe + + + + &Edit + Bearb&eiten + + + + &Profile + &Profil + + + + Selection &mass tools + Auswahl &Massenwerkzeuge + + + + Change &Title... + &Titel ändern... + + + + &Qualify as Avatar + Als Avatar &qualifizieren + + + + Change &Players... + S&pieler ändern... + + + + Change &Crew... + &Crew ändern... + + + + Close &Profile + &Profil schließen + + + + &Open File... + Datei &öffnen... + + + + + Select &RDR 2 Folder... + Wähle &RDR 2 Ordner... + + + + Show In-gam&e + Im Spiel anzeig&en + + + + Hi&de In-game + Im Spiel ausblen&den + + + + &Close + S&chließen + + + + &Settings + Ein&stellungen + + + + Select &All + &Alles auswählen + + + + &Deselect All + Alles a&bwählen + + + + &Export selected... + Auswahl &exportieren... + + + + &Remove selected + Auswahl entfe&rnen + + + + &Import files... + Dateien &importieren... + + + + + + Select Profile + Profil auswählen + + + + + + + Select RDR 2 Folder... + Wähle RDR 2 Ordner... + + + + Open File... + Datei öffnen... + + + + + %2 - %1 + %2 - %1 + + + + + + &About %1 + &Ãœber %1 + + + + + + + Open File + Datei öffnen + + + + Can't open %1 because of not valid file format + Kann nicht %1 öffnen weil Dateiformat nicht gültig ist + + + + &Reload + &Neuladen + + + + + + Show In-game + Im Spiel anzeigen + + + + + + Hide In-game + Im Spiel ausblenden + + + diff --git a/res/gta5sync_en_US.qm b/res/gta5sync_en_US.qm new file mode 100644 index 0000000000000000000000000000000000000000..da80dafc0ad216e79ba60c7e4c0de6d1364cd296 GIT binary patch literal 1550 zcmb7^O=}ZT6oyY)zwiS@L=;7?fr6mKR$FOnT1i`5Q)*h;SWQ<>Cb!M#WNw(uBu!ll zuH3m1L0tI@1UKT!jUX;uyYLsd6j%D(X-q@yMus~#_uTXGp7*?y?7Pb8Pd{Eh|9s)x zhX=3Uf147K(bU)ZKxBWR@7FYY-;4e;5&OQ!{ZD?UxtIQ*uLgMEJ^ba(Gxm>1E`C43 z{Yj6YxBW!aWkuRj7f%A&kjtzQ(K0SqcpNEM1q zv&1j5axy9FCPN9Kpryh_&QKNa)b zjZjU?ee&1wtC4Fo$#Y9CQD=@iZO&Wx-3IA>>gCCQkN0)fOj0M0UlqSK>?Ik)UgJEN z;F}`W_AyHRwN8HyxmK|);8(z2rk}BYaCp@BxgP=39KT}Xx9GM>jiL-Eyad#0cKoc} z@>eC_H2uu5Z`b*M9d(AI=Z9I~=Jz&c!9&J|V` za>d2vgB*|K$|jCxJjXX1DU>Peu;PI35piLn!+@R?*$k)+wsB5bI<4au@Vf!(Hg}pj zX(D_520)mWNwIqtZU2p$?BW@oa@X3*_vq30>X6pu9lk znoi_|YRv?C?|SEvq)r-l$=X{nBRt*A$5*tk-Kdi~lgaFzF0(6LdCxg?`R%4Z-AP~G zA<}XdhkKW4@?lgHhUgw4S=@0lM1%BH!lBQ|b;42$?tGqY4n6wxfaUYvN^&>|ChGXM zVKl}wSfAR+G9Vm + + + + AboutDialog + + + About %1 + + + + + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Created on %4<br/> +Built with Qt %5<br/> +Running with Qt %6<br/> +<br/> +%7 + + + + + &Close + + + + + Translated by %1 + Translated by translator, example Translated by Syping + + + + + TRANSLATOR + Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile + Syping,g5e://about?U3lwaW5n:R2l0TGFiOiA8YSBocmVmPSJodHRwczovL2dpdGxhYi5jb20vU3lwaW5nIj5TeXBpbmc8L2E+PGJyLz5HaXRIdWI6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TeXBpbmciPlN5cGluZzwvYT48YnIvPlNvY2lhbCBDbHViOiA8YSBocmVmPSJodHRwczovL3NvY2lhbGNsdWIucm9ja3N0YXJnYW1lcy5jb20vbWVtYmVyL1N5cGluZy80NjMwMzA1NiI+U3lwaW5nPC9hPg== + + + + A project for viewing Red Dead Redemption 2 Snapmatic<br/> +Pictures and Savegames + + + + + Copyright &copy; <a href="%1">%2</a> %3 + + + + + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + + + + + Release + + + + + Release Candidate + + + + + Daily Build + + + + + Developer + + + + + Beta + + + + + Alpha + + + + + Custom + + + + + CrewDatabase + + + + No Crew + + + + + ExportDialog + + + Dialog + + + + + Export Format + + + + + &JPEG/PNG format + + + + + GTA &Snapmatic format + + + + + Export Size + + + + + Default &Size + + + + + &Desktop Size + + + + + &Custom Size + + + + + Custom Size: + + + + + x + + + + + &Export + + + + + &Close + + + + + ImageEditorDialog + + + + + + + + Snapmatic Image Editor + + + + + + Overwrite Image... + + + + + Import picture + + + + + &Import... + + + + + + Apply changes + + + + + + &Overwrite + + + + + + Discard changes + + + + + + &Close + + + + + + + Patching of Snapmatic Image failed because of I/O Error + + + + + + + Patching of Snapmatic Image failed because of Image Error + + + + + ImportDialog + + + Import... + + + + + + + + Background Colour: <span style="color: %1">%1</span> + Background Color: <span style="color: %1">%1</span> + + + + Select background colour + Select background color + + + + + ... + + + + + Avatar + + + + + Picture + + + + + + Ignore Aspect Ratio + + + + + Watermark + + + + + Background + + + + + + Background Image: %1 + + + + + Select background image + + + + + Remove background image + + + + + X + + + + + Force Colour in Avatar Zone + Force Color in Avatar Zone + + + + Import options + + + + + &Options + + + + + Import picture + + + + + &OK + + + + + Discard picture + + + + + &Cancel + + + + + + + + Background Image: + + + + + &Import new Picture... + + + + + &Crop Picture... + + + + + &Load Settings... + + + + + &Save Settings... + + + + + + Custom Avatar + Custom Avatar Description in SC, don't use Special Character! + + + + + + Custom Picture + Custom Picture Description in SC, don't use Special Character! + + + + + Storage + Background Image: Storage + + + + + Crop Picture... + + + + + &Crop + + + + + Crop Picture + + + + + + Please import a new picture first + + + + + + Default + Default as Default Profile + + + + + + + + + + + + + + + + + + + + + + + + Profile %1 + Profile %1 as Profile 1 + + + + + + Load Settings... + + + + + + Please select your settings profile + + + + + + Save Settings... + + + + + Snapmatic Avatar Zone + + + + + Are you sure to use a square image outside of the Avatar Zone? +When you want to use it as Avatar the image will be detached! + + + + + Select Colour... + Select Color... + + + + File + Background Image: File + + + + + JsonEditorDialog + + + Snapmatic JSON Editor + + + + + Apply changes + + + + + &Save + + + + + Discard changes + + + + + &Close + + + + + JSON Error + + + + + MapLocationDialog + + + Snapmatic Map Viewer + + + + + Close viewer + + + + + &Close + + + + + Apply new position + + + + + &Apply + + + + + Revert old position + + + + + &Revert + + + + + Select new position + + + + + &Select + + + + + Quit select position + + + + + &Done + + + + + X: %1 +Y: %2 + X and Y position + + + + + OptionsDialog + + + %1 - Settings + + + + + Profiles + + + + + Content Open/Select Mode + + + + + Open with Singleclick + + + + + Open with Doubleclick + + + + + Select with Singleclick + + + + + Default Profile + + + + + Custom RDR 2 Folder + + + + + Force using Custom Folder + + + + + ... + + + + + Pictures + + + + + Export Size + + + + + Default: %1x%2 + + + + + Screen Resolution: %1x%2 + + + + + + Custom Size: + + + + + x + + + + + Ignore Aspect Ratio + + + + + Export Quality + + + + + Enable Custom Quality + + + + + Quality: + + + + + %1% + + + + + Picture Viewer + + + + + Enable Navigation Bar + + + + + Players + + + + + ID + + + + + Name + + + + + Game + + + + + Social Club Version + + + + + + + + + + + + Found: %1 + + + + + + + + + + + + + + Language: %1 + + + + + Steam Version + + + + + Feedback + + + + + + Participate in %1 User Statistics + + + + + Hardware, Application and OS Specification + + + + + Application Configuration + + + + + Other + + + + + + + Participation ID: %1 + + + + + &Copy + + + + + Language for Areas + + + + + Style + + + + + Style: + + + + + Font + + + + + Always use Message Font (Windows 2003 and earlier) + + + + + Interface + + + + + Participation + + + + + Categories + + + + + System Language Configuration + + + + + Personal Usage Data + + + + + Language for Interface + + + + + + + + Current: %1 + + + + + Use Default Style (Restart) + + + + + Apply changes + + + + + &OK + OK, Cancel, Apply + + + + + Discard changes + + + + + &Cancel + OK, Cancel, Apply + + + + + System + System in context of System default + + + + + %1 (Game language) + Next closest language compared to the Game settings + + + + + + %1 (Closest to Interface) + Next closest language compared to the Interface + + + + + + + Auto + Automatic language choice. + + + + + %1 (Language priority) + First language a person can talk with a different person/application. "Native" or "Not Native". + + + + + %1 + %1 + + + + + The new Custom Folder will initialise after you restart %1. + The new Custom Folder will initialize after you restart %1. + + + + No Profile + No Profile, as default + + + + + + + Profile: %1 + + + + + View %1 User Statistics Online + + + + + Not registered + + + + + + + + Yes + + + + + + No + + + + + + OS defined + + + + + + Steam defined + + + + + PictureDialog + + + Snapmatic Picture Viewer - %1 + + + + + <span style=" font-weight:600;">Title: </span>%6<br/> +<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Created: </span>%8 + + + + + Manage picture + + + + + &Manage + + + + + Close viewer + + + + + &Close + + + + + + Export as &Picture... + + + + + + Export as &Snapmatic... + + + + + + &Overwrite Image... + + + + + + &Edit Properties... + + + + + + Open &Map Viewer... + + + + + Key 1 - Avatar Preview Mode +Key 2 - Toggle Overlay +Arrow Keys - Navigate + + + + + + Snapmatic Picture Viewer + + + + + + Failed at %1 + + + + + + + No Players + + + + + + No Crew + + + + + Unknown Location + + + + + Avatar Preview Mode +Press 1 for Default View + + + + + Export as Picture... + + + + + + Export + + + + + JPEG Graphics (*.jpg *.jpeg) + + + + + Portable Network Graphics (*.png) + + + + + + + + + + Export as Picture + + + + + + Overwrite %1 with current Snapmatic picture? + + + + + + Failed to export current Snapmatic picture + + + + + + No valid file is selected + + + + + Failed to export the picture because the system occurred a write failure + + + + + Failed to export the picture because the format detection failures + + + + + Failed to export the picture because the file can't be written + + + + + Failed to export the picture because of an unknown reason + + + + + Export as Snapmatic... + + + + + RDR 2 Export (*.r5e) + + + + + RDR 2 Raw Export (*.auto) + + + + + Snapmatic pictures (PRDR*) + + + + + + + + + Export as Snapmatic + + + + + Exported Snapmatic to "%1" because of using the .auto extension. + + + + + + Open &JSON Editor... + + + + + PlayerListDialog + + + Edit Players... + + + + + Available Players: + + + + + Selected Players: + + + + + &Apply + + + + + &Cancel + + + + + Add Players... + + + + + Failed to add more Players because the limit of Players are %1! + + + + + + Add Player... + + + + + Enter Social Club Player ID + + + + + Failed to add Player %1 because Player %1 is already added! + + + + + ProfileInterface + + + Profile Interface + + + + + Loading file %1 of %2 files + + + + + %1 %2 + + + + + Import file + + + + + &Import... + + + + + Close profile + + + + + &Close + + + + + + + Export file %1 of %2 files + + + + + Enabled pictures: %1 of %2 + + + + + Loading... + + + + + Snapmatic Loader + + + + + <h4>Following Snapmatic Pictures got repaired</h4>%1 + + + + + + + + + + + + + + + + + + + + + + + + Import... + + + + + + + + + + + + + Import + + + + + Importable files (%1) + + + + + + RDR 2 Export (*.r5e) + + + + + + Savegames files (SRDR*) + + + + + + Snapmatic pictures (PRDR*) + + + + + + + + All image files (%1) + + + + + + + + + All files (**) + + + + + + + No valid file is selected + + + + + + Import file %1 of %2 files + + + + + Import failed with... + +%1 + + + + + + Failed to read Snapmatic picture + + + + + + Failed to read Savegame file + + + + + + + + Can't import %1 because file can't be open + + + + + + + + Can't import %1 because file can't be parsed properly + + + + + Can't import %1 because file format can't be detected + + + + + Failed to import the Snapmatic picture, file not begin with PRDR or end with .r5e + + + + + Failed to import the Snapmatic picture, can't copy the file into profile + + + + + Failed to import the Savegame, can't copy the file into profile + + + + + Failed to import the Savegame, no Savegame slot is left + + + + + + JPG pictures and GTA Snapmatic + + + + + + JPG pictures only + + + + + + GTA Snapmatic only + + + + + %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: + + + + + + + + + Export selected... + + + + + Initialising export... + Initializing export... + + + + Export failed with... + +%1 + + + + + + No Snapmatic pictures or Savegames files are selected + + + + + + + Remove selected + + + + + You really want remove the selected Snapmatic picutres and Savegame files? + + + + + + Qualify as Avatar + + + + + + + + + + No Snapmatic pictures are selected + + + + + + + + Patch selected... + + + + + + + + + + + + Patch file %1 of %2 files + + + + + + + + + + %1 failed with... + +%2 + Action failed with... + + + + + Failed to remove all selected Snapmatic pictures and/or Savegame files + + + + + Prepare Content for Import... + + + + + A Snapmatic picture already exists with the uid %1, you want assign your import a new uid and timestamp? + + + + + Qualify + %1 failed with... + + + + + + Change Players... + + + + + Change Players + %1 failed with... + + + + + + + Change Crew... + + + + + Failed to enter a valid Snapmatic Crew ID + + + + + Change Crew + %1 failed with... + + + + + + + Change Title... + + + + + Failed to enter a valid Snapmatic title + + + + + Change Title + %1 failed with... + + + + + All profile files (*.r5e SRDR* PRDR*) + + + + + QApplication + + + Font + + + + + Selected Font: %1 + + + + + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? + + + + + SavegameDialog + + + + Savegame Viewer + + + + + <span style=" font-weight:600;">Savegame</span><br><br>%1 + + + + + &Export + + + + + &Close + + + + + Failed at %1 + + + + + SavegameWidget + + + Savegame Widget + + + + + SAVE %3 - %1<br>%2 + + + + + View savegame + + + + + View + + + + + Copy savegame + + + + + + Export + + + + + Delete savegame + + + + + Delete + + + + + &View + + + + + &Export + + + + + &Remove + + + + + &Select + + + + + &Deselect + + + + + Select &All + + + + + &Deselect All + + + + + Savegame files (SRDR*) + + + + + All files (**) + + + + + + + + Export Savegame + + + + + Overwrite %1 with current Savegame? + + + + + Failed to overwrite %1 with current Savegame + + + + + Failed to export current Savegame + + + + + No valid file is selected + + + + + Export Savegame... + + + + + + AUTOSAVE - %1 +%2 + + + + + + SAVE %3 - %1 +%2 + + + + + + WRONG FORMAT + + + + + UNKNOWN + + + + + Are you sure to delete %1 from your savegames? + + + + + + Delete Savegame + + + + + Failed at deleting %1 from your savegames + + + + + SnapmaticEditor + + + + + + + + + + + Snapmatic Properties + + + + + Snapmatic Type + + + + + Editor + + + + + Selfie + + + + + Regular + + + + + Mugshot + + + + + Meme + + + + + Director + + + + + Snapmatic Values + + + + + Crew: %1 (%2) + + + + + Title: %1 (%2) + + + + + Players: %1 (%2) + Multiple Player are inserted here + + + + + Player: %1 (%2) + One Player is inserted here + + + + + + Appropriate: %1 + + + + + Extras + + + + + Qualify as Avatar automatically at apply + + + + + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture + + + + + Apply changes + + + + + &Apply + + + + + Discard changes + + + + + &Cancel + + + + + + + Edit + + + + + Yes + Yes, should work fine + + + + + No + No, could lead to issues + + + + + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? + + + + + Patching of Snapmatic Properties failed because of %1 + + + + + Patching of Snapmatic Properties failed because of JSON Error + + + + + + + + Patching of Snapmatic Properties failed because of I/O Error + + + + + + Snapmatic Title + + + + + + New Snapmatic title: + + + + + + Snapmatic Crew + + + + + + New Snapmatic crew: + + + + + SnapmaticPicture + + + PHOTO - %1 + + + + + open file %1 + + + + + header not exists + + + + + header is malformed + + + + + picture not exists (%1) + + + + + JSON not exists (%1) + + + + + title not exists (%1) + + + + + description not exists (%1) + + + + + reading file %1 because of %2 + Example for %2: JSON is malformed error + + + + + + JSON is incomplete and malformed + + + + + + JSON is incomplete + + + + + + JSON is malformed + + + + + SnapmaticWidget + + + Snapmatic Widget + + + + + PHOTO - 00/00/00 00:00:00 + + + + + View picture + + + + + View + + + + + Copy picture + + + + + Copy + + + + + Export picture + + + + + Export + + + + + + + Delete picture + + + + + Delete + + + + + Edi&t + + + + + Show &In-game + + + + + Hide &In-game + + + + + &Export + + + + + &View + + + + + &Remove + + + + + &Select + + + + + &Deselect + + + + + Select &All + + + + + &Deselect All + + + + + Are you sure to delete %1 from your Snapmatic pictures? + + + + + Failed at deleting %1 from your Snapmatic pictures + + + + + Failed to hide %1 In-game from your Snapmatic pictures + + + + + Failed to show %1 In-game from your Snapmatic pictures + + + + + TelemetryDialog + + + You want help %1 to improve in the future by including personal usage data in your submission? + + + + + %1 User Statistics + + + + + Yes, I want include personal usage data. + + + + + &OK + + + + + UserInterface + + + + %2 - %1 + + + + + Select profile + + + + + %1 %2 + + + + + Reload profile overview + + + + + &Reload + + + + + Close %1 + Close %1 <- (gta5view/gta5sync) - %1 will be replaced automatically + + + + + &Close + + + + + &File + + + + + &Help + + + + + &Edit + + + + + &Profile + + + + + &Selection visibility + + + + + + + &About %1 + + + + + &Exit + + + + + Exit + + + + + Close &Profile + + + + + &Settings + + + + + Select &All + + + + + &Deselect All + + + + + &Export selected... + + + + + &Remove selected + + + + + &Import files... + + + + + &Open File... + + + + + + Select &RDR 2 Folder... + + + + + + + + Select RDR 2 Folder... + + + + + Show In-gam&e + + + + + Hi&de In-game + + + + + Change &Players... + + + + + Selection &mass tools + + + + + Change &Title... + + + + + Change &Crew... + + + + + &Qualify as Avatar + + + + + + + Select Profile + + + + + Open File... + + + + + + + + Open File + + + + + Can't open %1 because of not valid file format + + + + + + + Show In-game + + + + + + + Hide In-game + + + + diff --git a/res/gta5sync_fr.qm b/res/gta5sync_fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..b047a2f32cdd8b1389f659754a753f7e29b050cd GIT binary patch literal 47020 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 literal 0 HcmV?d00001 diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts new file mode 100644 index 0000000..bb72c0e --- /dev/null +++ b/res/gta5sync_fr.ts @@ -0,0 +1,2497 @@ + + + + + AboutDialog + + + About %1 + À propos de %1 + + + + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Created on %4<br/> +Built with Qt %5<br/> +Running with Qt %6<br/> +<br/> +%7 + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Publié le %4<br/> +Compilé avec Qt %5<br/> +Fonctionne avec Qt %6<br/> +<br/> +%7 + + + + &Close + &Fermer + + + + Translated by %1 + Translated by translator, example Translated by Syping + Traduit par %1 + + + + TRANSLATOR + Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile + Ganjalo,https://github.com/Ganjalo/ + + + + A project for viewing Red Dead Redemption 2 Snapmatic<br/> +Pictures and Savegames + Un outil pour gérer les photos Snapmatic<br/> +et les fichiers de sauvegarde de Red Dead Redemption 2 + + + + Copyright &copy; <a href="%1">%2</a> %3 + Copyright &copy; <a href="%1">%2</a> %3 + + + + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + %1 est distribué sous license <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + + + + Release + Release + + + + Release Candidate + Release Candidate + + + + Daily Build + Daily Build + + + + Developer + Developer + + + + Beta + Beta + + + + Alpha + Alpha + + + + Custom + Personnalisé + + + + CrewDatabase + + + + No Crew + Aucun crew + + + + ExportDialog + + + Dialog + Exporter + + + + Export Format + Format + + + + &JPEG/PNG format + &JPEG/PNG + + + + GTA &Snapmatic format + GTA &Snapmatic + + + + Export Size + Dimensions + + + + Default &Size + Par &défaut + + + + &Desktop Size + Dimensions de l'&écran + + + + &Custom Size + &Personnalisé + + + + Custom Size: + Dimensions: + + + + x + x + + + + &Export + &Exporter + + + + &Close + &Fermer + + + + ImageEditorDialog + + + + + + + + Snapmatic Image Editor + Éditeur d'images Snapmatic + + + + + Overwrite Image... + Remplacer l'image... + + + + Import picture + Importer l'image + + + + &Import... + &Importer... + + + + + Apply changes + Appliquer les modifications + + + + + &Overwrite + &Remplacer + + + + + Discard changes + Annuler les modifications + + + + + &Close + &Fermer + + + + + + Patching of Snapmatic Image failed because of I/O Error + Échec du patch Snapmatic : I/O Error + + + + + + Patching of Snapmatic Image failed because of Image Error + Échec du patch Snapmatic : Image Error + + + + ImportDialog + + + Import... + Importer... + + + + + Ignore Aspect Ratio + Déverrouiller le ratio d'aspect + + + + Avatar + Avatar + + + + Picture + Image + + + + Watermark + Filigrane + + + + Background + Fond + + + + + + + Background Colour: <span style="color: %1">%1</span> + Couleur de fond : <span style="color: %1">%1</span> + + + + Select background colour + Choisir la couleur de fond + + + + + ... + ... + + + + Select background image + Choisir l'image de fond + + + + Remove background image + Supprimer l'image de fond + + + + + Background Image: %1 + Image de fond : %1 + + + + X + X + + + + Force Colour in Avatar Zone + Forcer la couleur dans la Zone d'Avatar + + + + Import options + Options d'importation + + + + &Options + &Options + + + + Import picture + Importer l'image + + + + &OK + &OK + + + + Discard picture + Supprimer l'image + + + + &Cancel + A&nnuler + + + + + + + Background Image: + Image de fond : + + + + &Import new Picture... + &Importer une nouvelle image... + + + + &Crop Picture... + &Rogner l'image... + + + + &Load Settings... + &Charger les paramètres... + + + + &Save Settings... + &Sauvegarder les paramètres... + + + + + Custom Avatar + Custom Avatar Description in SC, don't use Special Character! + Avatar personnalisé + + + + + Custom Picture + Custom Picture Description in SC, don't use Special Character! + Image personnalisé + + + + Storage + Background Image: Storage + Stockage + + + + Crop Picture... + Rogner l'image... + + + + &Crop + &Rogner + + + + Crop Picture + Rogner l'image + + + + + Please import a new picture first + Veuillez d'abord importer une nouvelle image + + + + + Default + Default as Default Profile + Défaut + + + + + + + + + + + + + + + + + + + + + + + Profile %1 + Profile %1 as Profile 1 + Profil %1 + + + + + Load Settings... + Charger les paramètres... + + + + + Please select your settings profile + Veuillez choisir votre profil de paramètres + + + + + Save Settings... + Sauvegarder les paramètres... + + + + Are you sure to use a square image outside of the Avatar Zone? +When you want to use it as Avatar the image will be detached! + Êtes-vous sûr d'utiliser une image carrée en dehors de la Zone d'Avatar ? +Si vous l'utilisez comme Avatar, l'image sera détachée ! + + + + Snapmatic Avatar Zone + Zone d'Avatar Snapmatic + + + + Select Colour... + Choisir une couleur... + + + + File + Background Image: File + Fichier + + + + JsonEditorDialog + + + Snapmatic JSON Editor + Éditeur Snapmatic JSON + + + + Apply changes + Appliquer les modifications + + + + &Save + &Sauvegarder + + + + Discard changes + Annuler les modifications + + + + &Close + &Fermer + + + + JSON Error + Erreur JSON + + + + MapLocationDialog + + + Snapmatic Map Viewer + Visionneuse de Carte Snapmatic + + + + Close viewer + Fermer la visionneuse + + + + &Close + &Fermer + + + + Apply new position + Appliquer la nouvelle position + + + + &Apply + &Appliquer + + + + Revert old position + Revenir à l'ancienne position + + + + &Revert + &Revenir + + + + Select new position + Sélectionner la nouvelle position + + + + &Select + &Sélectionner + + + + Quit select position + Quitter la sélection de position + + + + &Done + &Terminer + + + + X: %1 +Y: %2 + X and Y position + X : %1 +Y : %2 + + + + OptionsDialog + + + %1 - Settings + %1 - Paramètres + + + + Profiles + Profils + + + + Content Open/Select Mode + Ouverture/Sélection du contenu + + + + Open with Singleclick + Ouvrir avec un clic + + + + Open with Doubleclick + Ouvrir avec un double-clic + + + + Select with Singleclick + Sélectionner avec un clic + + + + Default Profile + Profil par défaut + + + + Custom RDR 2 Folder + Répertoire RDR 2 personnalisé + + + + Force using Custom Folder + Utiliser un répertoire personnalisé + + + + ... + ... + + + + Pictures + Photos + + + + Export Size + Export : Dimensions + + + + Default: %1x%2 + Par défaut : %1x%2 + + + + Screen Resolution: %1x%2 + Dimensions de l'écran : %1x%2 + + + + + Custom Size: + Personnalisé : + + + + x + x + + + + Ignore Aspect Ratio + Déverrouiller le ratio d'aspect + + + + Export Quality + Export : Qualité + + + + Enable Custom Quality + Qualité personnalisée + + + + Quality: + Qualité : + + + + %1% + %1 % + + + + Picture Viewer + Visionneuse de photos + + + + Enable Navigation Bar + Activer la barre de navigation + + + + Players + Joueurs + + + + ID + ID + + + + Name + Nom + + + + Game + Jeu + + + + Social Club Version + Version du Social Club + + + + + + + + + + + Found: %1 + Trouvé : %1 + + + + + + + + + + + + + Language: %1 + Langue : %1 + + + + Steam Version + Version de Steam + + + + Feedback + Feedback + + + + Participation + Participation + + + + + Participate in %1 User Statistics + Participer aux statistiques d'usage %1 + + + + Categories + Catégories + + + + Hardware, Application and OS Specification + Matériel, applications et OS + + + + System Language Configuration + Langage système + + + + Application Configuration + Configuration de l'application + + + + Other + Autres + + + + + + Participation ID: %1 + ID de participation : %1 + + + + &Copy + &Copier + + + + Language for Areas + Langage des Zones + + + + Style + Style + + + + Style: + Style : + + + + Font + Police + + + + Always use Message Font (Windows 2003 and earlier) + Toujours utiliser la police Message (Windows 2003 et précédent) + + + + Interface + Interface + + + + Personal Usage Data + Données d'utilisation + + + + Language for Interface + Langage de l'interface + + + + + + + Current: %1 + Actuel : %1 + + + + Use Default Style (Restart) + Utiliser le Style par Défaut (rédémarrage requis) + + + + Apply changes + Appliquer les changements + + + + &OK + OK, Cancel, Apply + &OK + + + + Discard changes + Annuler les changements + + + + &Cancel + OK, Cancel, Apply + &Annuler + + + + System + System in context of System default + Système + + + + %1 (Game language) + Next closest language compared to the Game settings + %1 (Langue du jeu) + + + + + %1 (Closest to Interface) + Next closest language compared to the Interface + %1 (Langage proche de l'interface) + + + + + + Auto + Automatic language choice. + Automatique + + + + %1 (Language priority) + First language a person can talk with a different person/application. "Native" or "Not Native". + %1 (Priorité de la langue) + + + + %1 + %1 + %1 + + + + The new Custom Folder will initialise after you restart %1. + Le nouveau Dossier personnalisé sera initialisé au redémarrage de %1. + + + + View %1 User Statistics Online + Voir les statistiques d'usage %1 en ligne + + + + Not registered + Pas enregistré + + + + + + + Yes + Oui + + + + + No + Non + + + + + OS defined + Défini par le système d'exploitation + + + + + Steam defined + Défini par Steam + + + + No Profile + No Profile, as default + Aucun profil + + + + + + Profile: %1 + Profil : %1 + + + + PictureDialog + + + Snapmatic Picture Viewer - %1 + Visionneuse de photo Snapmatic - %1 + + + + <span style=" font-weight:600;">Title: </span>%6<br/> +<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Created: </span>%8 + <span style=" font-weight:600;">Titre : </span>%6<br/> +<span style=" font-weight:600;">Emplacement : </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Joueurs : </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Créé le : </span>%8 + + + + Manage picture + Gestion de l'image + + + + &Manage + &Gestion + + + + Close viewer + Fermer la visionneuse + + + + &Close + &Fermer + + + + Failed to export the picture because the system occurred a write failure + Échec de l'export de l'image : erreur d'écriture + + + + Failed to export the picture because the format detection failures + Échec de l'export de l'image : erreur de détection du format + + + + Failed to export the picture because the file can't be written + Échec de l'export de l'image : impossible d'écrire dans le fichier + + + + Failed to export the picture because of an unknown reason + Échec de l'export de l'image : erreur inconnue + + + + Export as Snapmatic... + Exporter comme Snapmatic... + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + RDR 2 Raw Export (*.auto) + RDR 2 Export Brut (*.r5e) + + + + Snapmatic pictures (PRDR*) + Fichiers GTA Snapmatic (PRDR*) + + + + + + + + Export as Snapmatic + Exporter comme Snapmatic + + + + Exported Snapmatic to "%1" because of using the .auto extension. + Exporté comme "%1" avec l'utilisation de l'extension .auto. + + + + + Overwrite %1 with current Snapmatic picture? + %1 existe déjà. Vous-vous le remplacer ? + + + + Export as Picture... + Exporter comme image... + + + + JPEG Graphics (*.jpg *.jpeg) + JPEG Graphics (*.jpg *.jpeg) + + + + + + + + + Export as Picture + Exporter comme image + + + + + No valid file is selected + Fichier invalide + + + + + Export as &Picture... + Exporter comme &image... + + + + + Export as &Snapmatic... + Exporter comme &Snapmatic... + + + + + &Overwrite Image... + &Remplacer l'image... + + + + + &Edit Properties... + Modifier les &propriétés... + + + + + Open &Map Viewer... + Ouvrir la &Visionneuse de Carte... + + + + Key 1 - Avatar Preview Mode +Key 2 - Toggle Overlay +Arrow Keys - Navigate + Touche 1 - Mode Aperçu Avatar +Touche 2 - Activer/désactiver l'overlay +Touches fléchées - Naviguer + + + + + Snapmatic Picture Viewer + Visionneuse de photo Snapmatic + + + + + Failed at %1 + Echec de %1 + + + + + No Crew + Aucun crew + + + + + + No Players + Aucun joueurs + + + + Avatar Preview Mode +Press 1 for Default View + Mode Aperçu Avatar +Appuyer sur 1 pour le mode par défaut + + + + Unknown Location + Emplacement inconnu + + + + + Export + Exporter + + + + Portable Network Graphics (*.png) + Portable Network Graphics (*.png) + + + + + Failed to export current Snapmatic picture + Échec de l'export de la photo Snapmatic + + + + + Open &JSON Editor... + Ouvrir l'éditeur &JSON... + + + + PlayerListDialog + + + Edit Players... + Modifier les joueurs... + + + + Available Players: + Joueurs disponibles : + + + + Selected Players: + Joueurs sélectionnés : + + + + &Apply + A&ppliquer + + + + &Cancel + A&nnuler + + + + Add Players... + Ajouter des joueurs... + + + + Failed to add more Players because the limit of Players are %1! + Échec de l'ajout de joueurs : la limite de %1 est atteinte ! + + + + + Add Player... + Ajouter un joueur... + + + + Enter Social Club Player ID + Entrer l'ID Social Club du joueur + + + + Failed to add Player %1 because Player %1 is already added! + Échec de l'ajout du joueur %1 car le joueur %1 est déjà ajouté ! + + + + ProfileInterface + + + Profile Interface + Gestionnaire de profils + + + + Loading file %1 of %2 files + Chargement du fichier %1 sur %2 + + + + %1 %2 + %1 %2 + + + + Import file + Importer un fichier + + + + &Import... + &Importer... + + + + Close profile + Fermer + + + + &Close + &Fermer + + + + + + Export file %1 of %2 files + Copie du fichier %1 sur %2 + + + + Enabled pictures: %1 of %2 + Photos activées : %1 sur %2 + + + + Loading... + Chargement... + + + + Snapmatic Loader + Snapmatic Loader + + + + <h4>Following Snapmatic Pictures got repaired</h4>%1 + <h4>Les Snapmatic suivants ont été répaés</h4>%1 + + + + + + + + + + + + + + + + + + + + + + + Import... + Importer... + + + + + + + + + + + + Import + Importer + + + + + Savegames files (SRDR*) + Fichiers de sauvegarde GTA (SRDR*) + + + + + Snapmatic pictures (SRDR*) + Photos Snapmatic (SRDR*) + + + + + + + All image files (%1) + Toutes les images (%1) + + + + + + + + All files (**) + Tous les fichiers (**) + + + + + Import file %1 of %2 files + Importation du fichier %1 sur %2 + + + + Import failed with... + +%1 + Échec de l'import avec... + +%1 + + + + + + No valid file is selected + Fichier invalide + + + + Importable files (%1) + Fichiers importables (%1) + + + + + Failed to read Snapmatic picture + Impossible d'ouvrir la photo Snapmatic + + + + + Failed to read Savegame file + Impossible de lire le fichier de sauvegarde + + + + + + + Can't import %1 because file can't be open + Impossible d'importer %1, le fichier ne peut pas être ouvert + + + + + + + Can't import %1 because file can't be parsed properly + Impossible d'importer %1, le fichier ne peut pas être parsé correctement + + + + Can't import %1 because file format can't be detected + Impossible d'importer %1, le format du fichier n'est pas détecté + + + + Failed to import the Snapmatic picture, file not begin with PRDR or end with .r5e + Impossible d'importer la photo Snapmatic,nom de fichier incorrect (PRDR*, *.r5e) + + + + 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 + + + + + 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... + + + + Initialising export... + Initialisation de l'export... + + + + + Qualify as Avatar + Qualifier comme Avatar + + + + + + + + + No Snapmatic pictures are selected + Aucun Snapmatic sélectionné + + + + + + + Patch selected... + Patcher la sélection... + + + + + + + + + + + Patch file %1 of %2 files + Patch du fichier %1 sur %2 + + + + + + + + + %1 failed with... + +%2 + Action failed with... + %1 a échoué avec... + +%2 + + + + Failed to remove all selected Snapmatic pictures and/or Savegame files + Échec de la supression des Snapmatic et/ou des fichiers de sauvegarde sélectionnés + + + + Prepare Content for Import... + Préparation du contenu pour l'import... + + + + A Snapmatic picture already exists with the uid %1, you want assign your import a new uid and timestamp? + Un Snapmatic existe déjà avec le uid %1, voulez-vous assigner à votre import un nouvel uid et timestamp ? + + + + Qualify + %1 failed with... + Qualifier + + + + + Change Players... + Modifier les joueurs... + + + + Change Players + %1 failed with... + Modifier les joueurs + + + + + + Change Crew... + Modifier le Crew... + + + + Failed to enter a valid Snapmatic Crew ID + Snapmatic Crew ID invalide + + + + Change Crew + %1 failed with... + Changer le Crew + + + + + + Change Title... + Changer le titre... + + + + Failed to enter a valid Snapmatic title + Titre Snapmatic invalide + + + + Change Title + %1 failed with... + Changer le titre + + + + Export failed with... + +%1 + Échec de l'export avec... + +%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 ? + + + + All profile files (*.r5e SRDR* PRDR*) + Tous les fichiers de profil (*.r5e SRDR* PRDR*) + + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + QApplication + + + Font + Police + + + + Selected Font: %1 + Police sélectionnée : %1 + + + + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? + <h4>Bienvenue sur %1!</h4>Voulez-vous configurer %1 avant de l'utiliser t? + + + + SavegameDialog + + + + Savegame Viewer + Gestionnaire de sauvegardes + + + + <span style=" font-weight:600;">Savegame</span><br><br>%1 + <span style=" font-weight:600;">Sauvegarde</span><br><br>%1 + + + + &Export + &Exporter + + + + &Close + &Fermer + + + + Failed at %1 + Échec de %1 + + + + SavegameWidget + + + Savegame Widget + Sauvegarde + + + + SAVE %3 - %1<br>%2 + SAUVEGARDE %3 - %1<br>%2 + + + + View savegame + Voir la sauvegarde + + + + View + Voir + + + + Copy savegame + Copier la sauvegarde + + + + + Export + Exporter + + + + Delete savegame + Supprimer la sauvegarde + + + + Delete + Supprimer + + + + &Export + &Exporter + + + + Savegame files (PRDR*) + Fichiers de sauvegarde GTA (PRDR*) + + + + All files (**) + Tous les fichiers (**) + + + + + + + Export Savegame + Exporter la sauvegarde + + + + Overwrite %1 with current Savegame? + Remplacer %1 ? + + + + Failed to overwrite %1 with current Savegame + Impossible de remplacer %1 + + + + Failed to export current Savegame + Impossible d'exporter la sauvegarde + + + + No valid file is selected + Fichier invalide + + + + Export Savegame... + Exporter la sauvegarde... + + + + + AUTOSAVE - %1 +%2 + SAUVEGARDE AUTO - %1 +%2 + + + + + SAVE %3 - %1 +%2 + SAUVEGARDE %3 - %1 +%2 + + + + + WRONG FORMAT + Format invalide + + + + UNKNOWN + Inconnu + + + + Are you sure to delete %1 from your savegames? + Supprimer %1 ? + + + + + Delete Savegame + Supprimer la sauvegarde + + + + Failed at deleting %1 from your savegames + 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 + + + + SnapmaticEditor + + + + + + + + + + + Snapmatic Properties + Propriétés Snapmatic + + + + Snapmatic Type + Type + + + + Editor + Éditeur + + + + Selfie + Selfie + + + + Regular + Normal + + + + Mugshot + Photo d'identité + + + + Director + Director + + + + Meme + Meme + + + + + Snapmatic Title + Titre Snapmatic + + + + Snapmatic Values + Valeurs Snapmatic + + + + Crew: %1 (%2) + Crew : %1 (%2) + + + + Title: %1 (%2) + Titre : %1 (%2) + + + + Players: %1 (%2) + Multiple Player are inserted here + Joueurs : %1 (%2) + + + + Player: %1 (%2) + One Player is inserted here + Joueur : %1 (%2) + + + + + Appropriate: %1 + Valide : %1 + + + + 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 changes + Appliquer les modifications + + + + &Apply + A&ppliquer + + + + Discard changes + Annuler les modifications + + + + &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 + + + + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? + <h4>Modifications détectées</h4>Voulez-vous sauvegarder le contenu JSON avant de quitter ? + + + + Patching of Snapmatic Properties failed because of %1 + Patch des propriétés Snapmatic échoué : %1 + + + + Patching of Snapmatic Properties failed because of JSON Error + Patch des propriétés Snapmatic échoué : erreur JSON + + + + + + + Patching of Snapmatic Properties failed because of I/O Error + La modification des propriétés Snapmatic a échoué : erreur d'entrée/sortie + + + + + New Snapmatic title: + Nouveau titre Snapmatic : + + + + + Snapmatic Crew + Crew Snapmatic + + + + + New Snapmatic crew: + Nouveau crew Snapmatic : + + + + SnapmaticPicture + + + PHOTO - %1 + PHOTO - %1 + + + + open file %1 + ouverture du fichier %1 + + + + header not exists + les headers n'existent pas + + + + header is malformed + les headers sont incorrects + + + + picture not exists (%1) + l'image n'existe pas (%1) + + + + JSON not exists (%1) + le JSON n'existe pas (%1) + + + + title not exists (%1) + le titre n'existe pas (%1) + + + + description not exists (%1) + la description n'existe pas (%1) + + + + reading file %1 because of %2 + Example for %2: JSON is malformed error + lecture du fichier %1 : %2 + + + + + JSON is incomplete and malformed + JSON incomplet ou incorrect + + + + + JSON is incomplete + JSON incomplet + + + + + JSON is malformed + JSON incorrect + + + + SnapmaticWidget + + + Snapmatic Widget + Snapmatic + + + + PHOTO - 00/00/00 00:00:00 + Photo - 00/00/00 00:00:00 + + + + View picture + Voir la photo + + + + View + Voir + + + + Copy picture + Copier la photo + + + + Copy + Copier + + + + Export picture + Exporter la photo + + + + Export + Exporter + + + + + + Delete picture + Supprimer la photo + + + + Delete + Supprimer + + + + Are you sure to delete %1 from your Snapmatic pictures? + Supprimer %1 ? + + + + Failed at deleting %1 from your Snapmatic pictures + Impossible de supprimer %1 + + + + Failed to hide %1 In-game from your Snapmatic pictures + %1 n'a pas pu être rendu invisible en jeu + + + + Failed to show %1 In-game from your Snapmatic pictures + %1 n'a pas pu être rendu visible en jeu + + + + Edi&t + Édi&ter + + + + Show &In-game + &Visible en jeu + + + + Hide &In-game + &Invisible en jeu + + + + &Export + &Exporter + + + + &View + &Voir + + + + &Remove + S&upprimer + + + + &Select + &Sélectionner + + + + &Deselect + &Déselectionner + + + + Select &All + Sélectionner &tout + + + + &Deselect All + &Déselectionner tout + + + + TelemetryDialog + + + You want help %1 to improve in the future by including personal usage data in your submission? + Voulez-vous aider au développement de %1 en transmettant vos données d'utilisation ? + + + + %1 User Statistics + Statistiques utilisateurs %1 + + + + Yes, I want include personal usage data. + Oui, je veux partager mes données d'utilisation. + + + + &OK + &OK + + + + UserInterface + + + Select profile + Sélectionner un profil + + + + %1 %2 + %1 %2 + + + + Reload profile overview + Recharger la vue du profil + + + + &Reload + &Rafraîchir + + + + Close %1 + Close %1 <- (gta5view/gta5sync) - %1 will be replaced automatically + Fermer %1 + + + + &Close + Fer&mer + + + + &File + &Fichier + + + + &Help + Ai&de + + + + &Edit + &Éditer + + + + &Profile + &Profil + + + + &Exit + &Quitter + + + + Exit + Quitter + + + + Close &Profile + Fermer le &profil + + + + &Settings + Paramètre&s + + + + Select &All + Sélectionner &tout + + + + &Deselect All + &Désélectionner tout + + + + &Export selected... + &Exporter la sélection... + + + + &Remove selected + &Supprimer la sélection + + + + &Import files... + &Importer... + + + + &Open File... + &Ouvrir... + + + + + Select &RDR 2 Folder... + Modifier l'emplacement de &RDR 2... + + + + + + + Select RDR 2 Folder... + Modifier l'emplacement de RDR 2... + + + + Show In-gam&e + Rendre visible &en jeu + + + + Change &Players... + Modifier les &joueurs... + + + + Selection &mass tools + Outils de sélectionne en &masse + + + + Change &Title... + Changer le &titre... + + + + Change &Crew... + Changer le &Crew... + + + + &Qualify as Avatar + &Qualifier comme Avatar + + + + &Selection visibility + &Visibilité de la sélection + + + + Hi&de In-game + Ren&dre invisible en jeu + + + + + %2 - %1 + %2 - %1 + + + + + + &About %1 + &À propos de %1 + + + + + + Select Profile + Sélectionner un profil + + + + Open File... + Ouvrir... + + + + + + + Open File + Ouvrir + + + + Can't open %1 because of not valid file format + Impossible d'ouvrir %1, format invalide + + + + + + Show In-game + Visible en jeu + + + + + + Hide In-game + Invisible en jeu + + + diff --git a/res/gta5sync_ko.qm b/res/gta5sync_ko.qm new file mode 100644 index 0000000000000000000000000000000000000000..e239e2051fc95f1e9f8a61d46dcae2b0b0e63195 GIT binary patch literal 38495 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 + + + + AboutDialog + + + About %1 + %1 ì •ë³´ + + + + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Created on %4<br/> +Built with Qt %5<br/> +Running with Qt %6<br/> +<br/> +%7 + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +버전 %3<br/> +ìƒì„±ë¨ %4<br/> +Qtë¡œ 제작 %5<br/> +Qtë¡œ 실행 %6<br/> +<br/> +%7 + + + + &Close + 닫기(&C) + + + + Translated by %1 + Translated by translator, example Translated by Syping + 번역 %1 + + + + TRANSLATOR + Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile + <a href="https://steamcommunity.com/id/BLACKPINK-/">가는 ë§ì´ ê³ ì–‘ì´</a> + + + + A project for viewing Red Dead Redemption 2 Snapmatic<br/> +Pictures and Savegames + Red Dead Redemption 2 ìŠ¤ëƒ…ë§¤í‹±ì„ ë³´ê¸° 위한 프로ì íŠ¸ìž…니다<br/> +사진 ë° ì„¸ì´ë¸Œ íŒŒì¼ ê´€ë¦¬ ì§€ì› + + + + Copyright &copy; <a href="%1">%2</a> %3 + 저작권 &copy; <a href="%1">%2</a> %3 + + + + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + %1는 <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> ì— ë”°ë¼ ë¼ì´ì„¼ìŠ¤ê°€ 부여ë©ë‹ˆë‹¤ + + + + Release + 릴리스 + + + + Release Candidate + 릴리스 후보 + + + + Daily Build + ë°ì¼ë¦¬ 빌드 + + + + Developer + ê°œë°œìž + + + + Beta + 베타 + + + + Alpha + 알파 + + + + Custom + ì‚¬ìš©ìž ì§€ì • + + + + CrewDatabase + + + + No Crew + ì¡°ì§ ì—†ìŒ + + + + ExportDialog + + + Dialog + 다ì´ì–¼ë¡œê·¸ + + + + Export Format + 내보낼 í˜•ì‹ + + + + &JPEG/PNG format + JPEG/PNG 형ì‹(&J) + + + + GTA &Snapmatic format + GTA 스냅매틱 형ì‹(&S) + + + + Export Size + 내보낼 í¬ê¸° + + + + Default &Size + 기본 í¬ê¸°(&S) + + + + &Desktop Size + 바탕화면 í¬ê¸°(&D) + + + + &Custom Size + ì‚¬ìš©ìž ì •ì˜ í¬ê¸°(&C) + + + + Custom Size: + ì‚¬ìš©ìž ì •ì˜ í¬ê¸°: + + + + x + x + + + + &Export + 내보내기(&E) + + + + &Close + 닫기(&C) + + + + ImageEditorDialog + + + + Overwrite Image... + ì´ë¯¸ì§€ ë®ì–´ì“°ê¸°... + + + + Import picture + 사진 가져오기 + + + + &Import... + 가져오기(&I)... + + + + + Apply changes + 변경 사항 ì ìš© + + + + + &Overwrite + ë®ì–´ì“°ê¸°(&O) + + + + + Discard changes + 변경 사항 무시 + + + + + &Close + 닫기(&C) + + + + + + + + + Snapmatic Image Editor + 스냅매틱 ì´ë¯¸ì§€ 편집기 + + + + + + Patching of Snapmatic Image failed because of I/O Error + I/O 오류로 ì¸í•´ 스냅매틱 ì´ë¯¸ì§€ë¥¼ 패치하지 못했습니다 + + + + + + Patching of Snapmatic Image failed because of Image Error + ì´ë¯¸ì§€ 오류로 ì¸í•´ 스냅매틱 ì´ë¯¸ì§€ë¥¼ 패치하지 못했습니다 + + + + ImportDialog + + + Import... + 가져오기... + + + + Picture + 사진 + + + + Avatar + 아바타 + + + + + Ignore Aspect Ratio + 화면 비율 무시 + + + + Watermark + ì›Œí„°ë§ˆí¬ + + + + Background + ë°°ê²½ + + + + + + + Background Colour: <span style="color: %1">%1</span> + ë°°ê²½ 색ìƒ: <span style="color: %1">%1</span> + + + + Select background colour + ë°°ê²½ ìƒ‰ìƒ ì„ íƒ + + + + + ... + ... + + + + + + + Background Image: + ë°°ê²½ ì´ë¯¸ì§€: + + + + Select background image + ë°°ê²½ ì´ë¯¸ì§€ ì„ íƒ + + + + Remove background image + ë°°ê²½ ì´ë¯¸ì§€ 제거 + + + + X + X + + + + Force Colour in Avatar Zone + 아바타 êµ¬ì—­ì— ìƒ‰ìƒì„ ì ìš©í•©ë‹ˆë‹¤ + + + + Import options + 가져오기 옵션 + + + + &Options + 옵션(&O) + + + + Import picture + 사진 가져오기 + + + + &OK + 확ì¸(&O) + + + + Discard picture + 사진 ì‚­ì œ + + + + &Cancel + 취소(&C) + + + + &Import new Picture... + 새로운 사진 가져오기(&I)... + + + + &Crop Picture... + 사진 ìžë¥´ê¸°(&C)... + + + + &Load Settings... + 설정 불러오기(&L)... + + + + &Save Settings... + 설정 저장(&S)... + + + + + Custom Avatar + Custom Avatar Description in SC, don't use Special Character! + 소셜í´ëŸ½ì˜ ì‚¬ìš©ìž ì§€ì • 아바타 설명입니다. 특수 문ìžë¥¼ 사용하지 마십시오! + ì‚¬ìš©ìž ì§€ì • 아바타 + + + + + Custom Picture + Custom Picture Description in SC, don't use Special Character! + 소셜í´ëŸ½ì˜ ì‚¬ìš©ìž ì§€ì • 그림 설명입니다. 특수 문ìžë¥¼ 사용하지 마십시오! + ì‚¬ìš©ìž ì§€ì • 사진 + + + + + Background Image: %1 + ë°°ê²½ ì´ë¯¸ì§€: %1 + + + + Storage + Background Image: Storage + ë°°ê²½ ì´ë¯¸ì§€: ì €ìž¥ë¨ + ì €ìž¥ë¨ + + + + Crop Picture... + 사진 ìžë¥´ê¸°... + + + + &Crop + ìžë¥´ê¸°(&C) + + + + Crop Picture + 사진 ìžë¥´ê¸° + + + + + Load Settings... + 설정 불러오기... + + + + + Please import a new picture first + 먼저 새 ì‚¬ì§„ì„ ê°€ì ¸ì˜¤ì„¸ìš” + + + + + Default + Default as Default Profile + 기본 프로필로 기본 설정 + 기본 + + + + + + + + + + + + + + + + + + + + + + + Profile %1 + Profile %1 as Profile 1 + %1ì„ í”„ë¡œí•„ 1ë¡œ 지정합니다. + 프로필 %1 + + + + + Please select your settings profile + 설정 í”„ë¡œí•„ì„ ì„ íƒí•˜ì„¸ìš” + + + + + Save Settings... + 설정 저장... + + + + Snapmatic Avatar Zone + 스낵매틱 아바타 ì˜ì—­ + + + + Are you sure to use a square image outside of the Avatar Zone? +When you want to use it as Avatar the image will be detached! + 아바타 구역 ë°–ì—ì„œ 네모난 ì´ë¯¸ì§€ë¥¼ ì •ë§ ì‚¬ìš©í•©ë‹ˆê¹Œ? +아바타로 사용하려는 경우 ì´ë¯¸ì§€ê°€ 분리ë©ë‹ˆë‹¤! + + + + Select Colour... + ìƒ‰ìƒ ì„ íƒ... + + + + File + Background Image: File + ë°°ê²½ ì´ë¯¸ì§€: íŒŒì¼ + íŒŒì¼ + + + + JsonEditorDialog + + + Snapmatic JSON Editor + 스냅매틱 JSON 편집기 + + + + Apply changes + 변경 사항 ì ìš© + + + + &Save + 저장(&S) + + + + Discard changes + 변경 사항 무시 + + + + &Close + 닫기(&C) + + + + JSON Error + JSON 오류 + + + + MapLocationDialog + + + Snapmatic Map Viewer + 스냅매틱 ì§€ë„ ë·°ì–´ + + + + Close viewer + ë·°ì–´ 닫기 + + + + &Close + 닫기(&C) + + + + Apply new position + 새 위치 ì ìš© + + + + &Apply + ì ìš©(&A) + + + + Revert old position + ì´ì „ 위치 ë˜ëŒë¦¬ê¸° + + + + &Revert + ë˜ëŒë¦¬ê¸°(&R) + + + + Select new position + 새 위치 ì„ íƒ + + + + &Select + ì„ íƒ(&S) + + + + Quit select position + ì„ íƒ ìœ„ì¹˜ 종료 + + + + &Done + 완료(&D) + + + + X: %1 +Y: %2 + X and Y position + X ë° Y 위치 + X: %1 +Y: %2 + + + + OptionsDialog + + + %1 - Settings + %1 - 설정 + + + + Profiles + 프로필 + + + + Content Open/Select Mode + 컨í…츠 열기/ì„ íƒ ëª¨ë“œ + + + + Open with Singleclick + í•œ 번 í´ë¦­ìœ¼ë¡œ 열기 + + + + Open with Doubleclick + ë‘ ë²ˆ í´ë¦­ìœ¼ë¡œ 열기 + + + + Select with Singleclick + í•œ 번 í´ë¦­ìœ¼ë¡œ ì„ íƒ + + + + Default Profile + 기본 프로필 + + + + Custom RDR 2 Folder + ì‚¬ìš©ìž ì§€ì • RDR 2 í´ë” + + + + Force using Custom Folder + ì‚¬ìš©ìž ì§€ì • í´ë”를 강제로 사용합니다 + + + + ... + ... + + + + Pictures + 사진들 + + + + Export Size + 내보낼 í¬ê¸° + + + + Default: %1x%2 + 기본: %1x%2 + + + + Screen Resolution: %1x%2 + 화면 í•´ìƒë„: %1x%2 + + + + + Custom Size: + ì‚¬ìš©ìž ì§€ì • í¬ê¸°: + + + + x + x + + + + Ignore Aspect Ratio + 화면 비율 무시 + + + + Export Quality + 내보낼 품질 + + + + Enable Custom Quality + ì‚¬ìš©ìž ì§€ì • 품질 사용 + + + + Quality: + 품질: + + + + %1% + %1% + + + + Picture Viewer + 사진 ë·°ì–´ + + + + Enable Navigation Bar + íƒìƒ‰ë°” 사용 + + + + Players + 플레ì´ì–´ + + + + ID + ì•„ì´ë”” + + + + Name + ì´ë¦„ + + + + Game + 게임 + + + + Social Club Version + 소셜 í´ëŸ½ 버전 + + + + + + + + + + + Found: %1 + ì°¾ìŒ: %1 + + + + + + + + + + + + + Language: %1 + 언어: %1 + + + + Steam Version + 스팀 버전 + + + + Feedback + 피드백 + + + + Participation + 참가 + + + + + Participate in %1 User Statistics + ì‚¬ìš©ìž í†µê³„ 참가 %1 + + + + Categories + 카테고리 + + + + Hardware, Application and OS Specification + 하드웨어, ì‘ìš© 프로그램 ë° OS 사양 + + + + System Language Configuration + 시스템 언어 설정 + + + + Application Configuration + ì‘ìš© 프로그램 설정 + + + + Personal Usage Data + ê°œì¸ ì‚¬ìš© ë°ì´í„° + + + + Other + 다른 + + + + + + Participation ID: %1 + 참여 ì•„ì´ë””: %1 + + + + &Copy + 복사(&C) + + + + Interface + ì¸í„°íŽ˜ì´ìŠ¤ + + + + Language for Interface + ì¸í„°íŽ˜ì´ìŠ¤ 언어 + + + + + + + Current: %1 + 현재: %1 + + + + Language for Areas + 지역 언어 + + + + Style + ìŠ¤íƒ€ì¼ + + + + Use Default Style (Restart) + 기본 스타ì¼ì„ 사용합니다 (다시 시작 í•„ìš”) + + + + Style: + 스타ì¼: + + + + Font + í°íŠ¸ + + + + Always use Message Font (Windows 2003 and earlier) + í•­ìƒ ë©”ì‹œì§€ ê¸€ê¼´ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. (Windows 2003 ë° ì´ì „ 버전) + + + + Apply changes + 변경 사항 ì ìš© + + + + &OK + OK, Cancel, Apply + 확ì¸, 취소, ì ìš© + 확ì¸(&O) + + + + Discard changes + 변경 사항 무시 + + + + &Cancel + OK, Cancel, Apply + 확ì¸, 취소, ì ìš© + 취소(&C) + + + + %1 (Language priority) + First language a person can talk with a different person/application. "Native" or "Not Native". + %1 (ìš°ì„  순위) + + + + System + System in context of System default + 시스템 + + + + %1 (Game language) + Next closest language compared to the Game settings + 게임 설정과 가장 가까운 언어 + %1 (게임 언어) + + + + + + Auto + Automatic language choice. + 언어 ìžë™ ì„ íƒ + ìžë™ + + + + + %1 (Closest to Interface) + Next closest language compared to the Interface + ì¸í„°íŽ˜ì´ìŠ¤ì™€ 가장 가까운 언어 + %1 (ì¸í„°íŽ˜ì´ìŠ¤ì™€ 가까운 언어) + + + + %1 + %1 + %1 + %1 + + + + The new Custom Folder will initialise after you restart %1. + 다시 시작한 후 새 ì‚¬ìš©ìž ì§€ì • í´ë”ê°€ 초기화ë©ë‹ˆë‹¤. %1. + + + + No Profile + No Profile, as default + 프로필 ì—†ìŒ (기본값) + 프로필 ì—†ìŒ + + + + + + Profile: %1 + 프로필: %1 + + + + View %1 User Statistics Online + 온ë¼ì¸ %1 ì‚¬ìš©ìž í†µê³„ 보기 + + + + Not registered + 등ë¡ë˜ì§€ 않았습니다 + + + + + + + Yes + 예 + + + + + No + 아니요 + + + + + OS defined + OS ì •ì˜ + + + + + Steam defined + 스팀 ì •ì˜ + + + + PictureDialog + + + Snapmatic Picture Viewer - %1 + 스냅매틱 사진 ë·°ì–´ - %1 + + + + <span style=" font-weight:600;">Title: </span>%6<br/> +<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Created: </span>%8 + <span style=" font-weight:600;">제목:: </span>%6<br/> +<span style=" font-weight:600;">위치: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">플레ì´ì–´: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">ìƒì„± 날짜: </span>%8 + + + + Manage picture + 사진 관리 + + + + &Manage + 관리(&M) + + + + Close viewer + ë·°ì–´ 닫기 + + + + &Close + 닫기(&C) + + + + + Export as &Picture... + 사진으로 내보내기(&P)... + + + + + Export as &Snapmatic... + 스낵매틱으로 내보내기(&S)... + + + + + &Edit Properties... + ì†ì„± 편집(&E)... + + + + + &Overwrite Image... + ì´ë¯¸ì§€ ë®ì–´ì“°ê¸°(&O)... + + + + + Open &Map Viewer... + ì§€ë„ ë·°ì–´ 열기(&M)... + + + + + Open &JSON Editor... + JSON 편집기 열기(&J)... + + + + Key 1 - Avatar Preview Mode +Key 2 - Toggle Overlay +Arrow Keys - Navigate + ìˆ«ìž 1 - 아바타 미리보기 모드 +ìˆ«ìž 2 - ì˜¤ë²„ë ˆì´ ì „í™˜ +화살표키 - ì´ë™ + + + + + Snapmatic Picture Viewer + 스낵매틱 사진 ë·°ì–´ + + + + + Failed at %1 + %1ì—ì„œ 실패했습니다 + + + + + + No Players + 플레ì´ì–´ ì—†ìŒ + + + + + No Crew + ì¡°ì§ ì—†ìŒ + + + + Unknown Location + ì•Œ 수 없는 위치 + + + + Avatar Preview Mode +Press 1 for Default View + 아바타 미리 보기 모드입니다 +ëŒì•„가려면 ìˆ«ìž 1ì„ ëˆ„ë¦…ë‹ˆë‹¤ + + + + Export as Picture... + 사진으로 내보내기... + + + + + Export + 내보내기 + + + + JPEG Graphics (*.jpg *.jpeg) + JPEG Graphics (*.jpg *.jpeg) + + + + Portable Network Graphics (*.png) + Portable Network Graphics (*.png) + + + + + + + + + Export as Picture + 사진으로 내보내기 + + + + + Overwrite %1 with current Snapmatic picture? + %1ì„ í˜„ìž¬ 스냅매틱 사진으로 ë®ì–´ì“°ì‹œê² ìŠµë‹ˆê¹Œ? + + + + Failed to export the picture because the system occurred a write failure + 시스템ì—ì„œ 쓰기 오류가 ë°œìƒí•˜ì—¬ ì‚¬ì§„ì„ ë‚´ë³´ë‚´ì§€ 못했습니다 + + + + Failed to export the picture because the format detection failures + í™•ìž¥ìž ê°ì§€ì— 실패하여 ì‚¬ì§„ì„ ë‚´ë³´ë‚´ì§€ 못했습니다 + + + + Failed to export the picture because the file can't be written + 파ì¼ì„ 쓸 수 없으므로 ì‚¬ì§„ì„ ë‚´ë³´ë‚´ì§€ 못했습니다 + + + + Failed to export the picture because of an unknown reason + ì•Œ 수 없는 ì´ìœ ë¡œ ì‚¬ì§„ì„ ë‚´ë³´ë‚´ì§€ 못했습니다 + + + + + No valid file is selected + 올바른 파ì¼ì´ ì„ íƒë˜ì§€ 않았습니다 + + + + Export as Snapmatic... + 스냅매틱으로 내보내기... + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + RDR 2 Raw Export (*.auto) + RDR 2 Raw Export (*.auto) + + + + Snapmatic pictures (PRDR*) + Snapmatic pictures (PRDR*) + + + + + + + + Export as Snapmatic + 스냅매틱으로 내보내기 + + + + + Failed to export current Snapmatic picture + 현재 스냅매틱 ì‚¬ì§„ì„ ë‚´ë³´ë‚´ì§€ 못했습니다 + + + + Exported Snapmatic to "%1" because of using the .auto extension. + .auto 확장ìžë¥¼ 사용하기 ë•Œë¬¸ì— ìŠ¤ëƒ…ë§¤í‹±ì„ "%1"ë¡œ 내보냈습니다. + + + + PlayerListDialog + + + Edit Players... + 플레ì´ì–´ 편집... + + + + Available Players: + 사용 가능한 플레ì´ì–´: + + + + Selected Players: + ì„ íƒëœ 플레ì´ì–´: + + + + &Apply + ì ìš©(&A) + + + + &Cancel + 취소(&C) + + + + Add Players... + 플레ì´ì–´ 추가... + + + + Failed to add more Players because the limit of Players are %1! + 플레ì´ì–´ì˜ ì œí•œì´ %1ì´ë¯€ë¡œ 플레ì´ì–´ë¥¼ 추가하지 못했습니다! + + + + + Add Player... + 플레ì´ì–´ 추가... + + + + Enter Social Club Player ID + 소셜 í´ëŸ½ 플레ì´ì–´ ì•„ì´ë”” ìž…ë ¥ + + + + Failed to add Player %1 because Player %1 is already added! + %1 플레ì´ì–´ê°€ ì´ë¯¸ 추가ë˜ì–´ %1 플레ì´ì–´ë¥¼ 추가하지 못했습니다! + + + + ProfileInterface + + + Profile Interface + 프로필 ì¸í„°íŽ˜ì´ìŠ¤ + + + + Loading file %1 of %2 files + %2 파ì¼ì˜ %1 파ì¼ì„ 불러오는 중입니다 + + + + %1 %2 + %1 %2 + + + + Import file + íŒŒì¼ ê°€ì ¸ì˜¤ê¸° + + + + &Import... + 가져오기(&I)... + + + + Close profile + 프로필 닫기 + + + + &Close + 닫기(&C) + + + + + + Export file %1 of %2 files + %2 íŒŒì¼ ì¤‘ %1 파ì¼ì„ 내보냅니다 + + + + + + + + + + + + + + + + + + + + + + + Import... + 가져오기... + + + + + + + + + + + + Import + 가져오기 + + + + + + + All image files (%1) + 모든 ì´ë¯¸ì§€ íŒŒì¼ (%1) + + + + + + + + All files (**) + 모든 íŒŒì¼ (**) + + + + + + + Can't import %1 because file can't be open + 파ì¼ì„ ì—´ 수 없으므로 %1ì„ ê°€ì ¸ì˜¬ 수 없습니다 + + + + + + + Can't import %1 because file can't be parsed properly + 파ì¼ì„ 구문 분ì„í•  수 없으므로 %1ì„ ê°€ì ¸ì˜¬ 수 없습니다 + + + + Enabled pictures: %1 of %2 + í™œì„±í™”ëœ ì‚¬ì§„: %2ì˜ %1 + + + + Loading... + 불러오는 중... + + + + Snapmatic Loader + 스냅매틱 ë¡œë” + + + + <h4>Following Snapmatic Pictures got repaired</h4>%1 + <h4>ë‹¤ìŒ ìŠ¤ëƒ…ë§¤í‹± ì‚¬ì§„ì„ ë³µêµ¬í–ˆìŠµë‹ˆë‹¤ </h4>%1 + + + + Importable files (%1) + 가져올 수 있는 íŒŒì¼ (%1) + + + + + RDR 2 Export (*.r5e) + RDR 2ë¡œ 내보내기 (*.r5e) + + + + + Savegames files (SRDR*) + 세ì´ë¸Œ íŒŒì¼ (SRDR*) + + + + + Snapmatic pictures (PRDR*) + 스냅매틱 사진 (PRDR*) + + + + + + No valid file is selected + 올바른 파ì¼ì´ ì„ íƒë˜ì§€ 않았습니다 + + + + + Import file %1 of %2 files + %2 íŒŒì¼ ì¤‘ %1 파ì¼ì„ 가져옵니다 + + + + Import failed with... + +%1 + ê°€ì ¸ì˜¤ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤... + +%1 + + + + + Failed to read Snapmatic picture + 스냅매틱 ì‚¬ì§„ì„ ì½ì§€ 못했습니다 + + + + + Failed to read Savegame file + 세ì´ë¸Œ 파ì¼ì„ ì½ì§€ 못했습니다 + + + + Can't import %1 because file format can't be detected + íŒŒì¼ í˜•ì‹ì„ 검색할 수 없으므로 %1ì„ ê°€ì ¸ì˜¬ 수 없습니다 + + + + Prepare Content for Import... + 가져올 컨í…츠를 준비합니다... + + + + Failed to import the Snapmatic picture, file not begin with PRDR or end with .r5e + 스냅매틱 ì‚¬ì§„ì„ ê°€ì ¸ì˜¤ì§€ 못했습니다. 파ì¼ì´ PRDRë¡œ 시작ë˜ê±°ë‚˜ .r5eë¡œ ë나지 않습니다 + + + + A Snapmatic picture already exists with the uid %1, you want assign your import a new uid and timestamp? + uid %1ì´(ê°€) 있는 스냅매틱 ì‚¬ì§„ì´ ì´ë¯¸ 있습니다. 가져오기를 새 uid ë° íƒ€ìž„ìŠ¤íƒ¬í”„ë¥¼ 할당하시겠습니까? + + + + Failed to import the Snapmatic picture, can't copy the file into profile + 스냅매틱 ì‚¬ì§„ì„ ê°€ì ¸ì˜¤ì§€ 못했습니다. 파ì¼ì„ 프로파ì¼ì— 복사할 수 없습니다 + + + + Failed to import the Savegame, can't copy the file into profile + 게임 저장 파ì¼ì„ 가져오지 못했습니다. 파ì¼ì„ í”„ë¡œí•„ì— ë³µì‚¬í•  수 없습니다 + + + + Failed to import the Savegame, no Savegame slot is left + 게임 저장 파ì¼ì„ 가져오지 못했습니다. 게임 저장 ìŠ¬ë¡¯ì´ ë‚¨ì•„ 있지 않습니다 + + + + + + + + Export selected... + 내보내기를 ì„ íƒí–ˆìŠµë‹ˆë‹¤... + + + + + JPG pictures and GTA Snapmatic + JPG 사진 ë° GTA 스냅매틱 + + + + + JPG pictures only + JPG 사진만 + + + + + GTA Snapmatic only + GTA 스냅매틱만 + + + + %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: + %1 스냅 사진 내보내기를 수행합니다%2 <br><br>JPG ì‚¬ì§„ì„ ì‚¬ìš©í•˜ë©´ ì´ë¯¸ì§€ ë·°ì–´ ë¡œ ì‚¬ì§„ì„ ì—´ 수 있습니다<br>GTA ìŠ¤ëƒ…ë§¤í‹±ì„ ì‚¬ìš©í•˜ë©´ 다ìŒê³¼ ê°™ì´ ì‚¬ì§„ì„ ê²Œìž„ìœ¼ë¡œ 가져올 수 있습니다 + + + + Initialising export... + 내보내기를 초기화하는 중... + + + + Export failed with... + +%1 + 내보내지 못했습니다... + +%1 + + + + + No Snapmatic pictures or Savegames files are selected + 스냅매틱 사진 ë˜ëŠ” 세ì´ë¸Œ 파ì¼ì´ ì„ íƒë˜ì§€ 않았습니다 + + + + + + Remove selected + ì„ íƒí•œ 항목 ì‚­ì œ + + + + You really want remove the selected Snapmatic picutres and Savegame files? + ì„ íƒí•œ 스냅매틱 사진 ë° ì„¸ì´ë¸Œ 파ì¼ì„ 삭제하시겠습니까? + + + + Failed to remove all selected Snapmatic pictures and/or Savegame files + ì„ íƒí•œ 모든 스냅매틱 사진 ë° ì„¸ì´ë¸Œ 파ì¼ì„ 삭제하지 못했습니다 + + + + + + + + + No Snapmatic pictures are selected + 스냅매틱 ì‚¬ì§„ì´ ì„ íƒë˜ì§€ 않았습니다 + + + + + + + + + %1 failed with... + +%2 + Action failed with... + ìž‘ì—… 실패... + %1ì´(ê°€) 실패했습니다. + +%2 + + + + + Qualify as Avatar + 아바타 ìžê²© 부여 + + + + + + + Patch selected... + 패치가 ì„ íƒë¨... + + + + + + + + + + + Patch file %1 of %2 files + %2 파ì¼ì˜ %1 패치 파ì¼ìž…니다 + + + + Qualify + %1 failed with... + %1ì´(ê°€) 실패한 경우... + ìžê²© 부여 + + + + + Change Players... + 플레ì´ì–´ 변경... + + + + Change Players + %1 failed with... + %1ì´(ê°€) 실패한 경우... + 플레ì´ì–´ 변경 + + + + + + Change Crew... + ì¡°ì§ ë³€ê²½... + + + + Failed to enter a valid Snapmatic Crew ID + 올바른 스냅매틱 ì¡°ì§ ì•„ì´ë””를 입력하지 못했습니다 + + + + Change Crew + %1 failed with... + %1ì´(ê°€) 실패한 경우... + ì¡°ì§ ë³€ê²½ + + + + + + Change Title... + 제목 변경... + + + + Failed to enter a valid Snapmatic title + 올바른 스냅매틱 ì œëª©ì„ ìž…ë ¥í•˜ì§€ 못했습니다 + + + + Change Title + %1 failed with... + %1ì´(ê°€) 실패한 경우... + 제목 변경 + + + + All profile files (*.r5e SRDR* PRDR*) + 모든 프로필 íŒŒì¼ (*.r5e SRDR* PRDR*) + + + + QApplication + + + Font + í°íŠ¸ + + + + Selected Font: %1 + ì„ íƒëœ í°íŠ¸: %1 + + + + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? + <h4>%1ì— ì˜¤ì‹  ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤!</h4>%1ì„ ì‚¬ìš©í•˜ê¸° ì „ì— êµ¬ì„±í•˜ì‹œê² ìŠµë‹ˆê¹Œ? + + + + SavegameDialog + + + + Savegame Viewer + 세ì´ë¸Œ íŒŒì¼ ë³´ê¸° + + + + <span style=" font-weight:600;">Savegame</span><br><br>%1 + <span style=" font-weight:600;">세ì´ë¸Œ 파ì¼</span><br><br>%1 + + + + &Export + 내보내기(&E) + + + + &Close + 닫기(&C) + + + + Failed at %1 + 실패 %1 + + + + SavegameWidget + + + Savegame Widget + 세ì´ë¸Œ íŒŒì¼ ìœ„ì ¯ + + + + SAVE %3 - %1<br>%2 + 저장 %3 - %1<br>%2 + + + + View savegame + 세ì´ë¸Œ íŒŒì¼ ë³´ê¸° + + + + View + 보기 + + + + Copy savegame + 세ì´ë¸Œ íŒŒì¼ ë³µì‚¬ + + + + + Export + 내보내기 + + + + Delete savegame + 세ì´ë¸Œ íŒŒì¼ ì‚­ì œ + + + + Delete + ì‚­ì œ + + + + &View + 보기(&V) + + + + &Export + 내보내기(&E) + + + + &Remove + ì‚­ì œ(&R) + + + + &Select + ì„ íƒ(&S) + + + + &Deselect + ì„ íƒ í•´ì œ(&D) + + + + Select &All + ëª¨ë‘ ì„ íƒ(&A) + + + + &Deselect All + ëª¨ë‘ ì„ íƒ í•´ì œ(&D) + + + + Savegame files (SRDR*) + 세ì´ë¸Œ íŒŒì¼ (SRDR*) + + + + All files (**) + 모든 íŒŒì¼ (**) + + + + + + + Export Savegame + 세ì´ë¸Œ íŒŒì¼ ë‚´ë³´ë‚´ê¸° + + + + Overwrite %1 with current Savegame? + %1ì„ í˜„ìž¬ 세ì´ë¸Œ 파ì¼ë¡œ ë®ì–´ì“°ì‹œê² ìŠµë‹ˆê¹Œ? + + + + Failed to overwrite %1 with current Savegame + %1ì„ í˜„ìž¬ 세ì´ë¸Œ 파ì¼ë¡œ ë®ì–´ì“°ì§€ 못했습니다 + + + + Failed to export current Savegame + 현재 세ì´ë¸Œ 파ì¼ì„ 내보내지 못했습니다 + + + + No valid file is selected + 올바른 파ì¼ì´ ì„ íƒë˜ì§€ 않았습니다 + + + + Export Savegame... + 세ì´ë¸Œ íŒŒì¼ ë‚´ë³´ë‚´ê¸°... + + + + + AUTOSAVE - %1 +%2 + ìžë™ 저장 - %1 +%2 + + + + + SAVE %3 - %1 +%2 + 저장 %3 - %1 +%2 + + + + + WRONG FORMAT + ìž˜ëª»ëœ í˜•ì‹ + + + + UNKNOWN + ì•Œ 수 ì—†ìŒ + + + + + Delete Savegame + 세ì´ë¸Œ íŒŒì¼ ì‚­ì œ + + + + Are you sure to delete %1 from your savegames? + %1ì„(를) 세ì´ë¸Œ 파ì¼ì—ì„œ 삭제하시겠습니까? + + + + Failed at deleting %1 from your savegames + %1ì„(를) 세ì´ë¸Œ 파ì¼ì—ì„œ 삭제하지 못했습니다 + + + + SnapmaticEditor + + + + + + + + + + + Snapmatic Properties + 스냅매틱 ì†ì„± + + + + Snapmatic Type + 스낵매틱 í˜•ì‹ + + + + Editor + 편집기 + + + + Selfie + 셀카 + + + + Regular + ì¼ë°˜ + + + + Mugshot + 머그샷 + + + + Meme + ë°ˆ + + + + Director + ê°ë… + + + + Snapmatic Values + 스냅매틱 ê°’ + + + + Extras + ì—‘ìŠ¤íŠ¸ë¼ + + + + Qualify as Avatar automatically at apply + ì ìš© ì‹œ ìžë™ìœ¼ë¡œ 아바타 ìžê²©ì„ 부여합니다 + + + + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture + ì´ ìŠ¤ëƒ…ë§¤í‹±ì„ ì†Œì…œ í´ëŸ½ 프로필 사진으로 사용할 수 있습니다 + + + + Apply changes + 변경 사항 ì ìš© + + + + &Apply + ì ìš©(&A) + + + + Discard changes + 변경 사항 무시 + + + + &Cancel + 취소(&C) + + + + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? + < h4>저장ë˜ì§€ ì•Šì€ ë³€ê²½ ë‚´ìš©ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤. </h4>그만ë‘기 ì „ì— JSON 콘í…츠를 저장하겠습니까? + + + + Patching of Snapmatic Properties failed because of %1 + %1ë¡œ ì¸í•´ 스냅매틱 ì†ì„±ì„ 패치하지 못했습니다 + + + + + + + Patching of Snapmatic Properties failed because of I/O Error + I/O 오류로 ì¸í•´ 스냅매틱 ì†ì„±ì„ 패치하지 못했습니다 + + + + Patching of Snapmatic Properties failed because of JSON Error + JSON 오류로 ì¸í•´ 스냅매틱 ì†ì„±ì„ 패치하지 못했습니다 + + + + + Snapmatic Crew + ì¡°ì§ ìŠ¤ëƒ…ë§¤í‹± + + + + + New Snapmatic crew: + 새로운 ì¡°ì§ ìŠ¤ëƒ…ë§¤í‹±: + + + + + Snapmatic Title + 스냅매틱 제목 + + + + + New Snapmatic title: + 새로운 스냅매틱 제목: + + + + + + Edit + 편집 + + + + Players: %1 (%2) + Multiple Player are inserted here + ì—¬ê¸°ì— ì—¬ëŸ¬ 플레ì´ì–´ê°€ 추가ë©ë‹ˆë‹¤. + 플레ì´ì–´: %1 (%2) + + + + Player: %1 (%2) + One Player is inserted here + ì—¬ê¸°ì— í”Œë ˆì´ì–´ 하나가 추가ë©ë‹ˆë‹¤. + 플레ì´ì–´: %1 (%2) + + + + Title: %1 (%2) + 제목: %1 (%2) + + + + + Appropriate: %1 + 변경: %1 + + + + Yes + Yes, should work fine + 네, 잘 ë  ê±°ì˜ˆìš”. + 예 + + + + No + No, could lead to issues + 아니요, 문제가 ë°œìƒí•  수 있습니다. + 아니요 + + + + Crew: %1 (%2) + ì¡°ì§: %1 (%2) + + + + SnapmaticPicture + + + + JSON is incomplete and malformed + JSONì´ ë¶ˆì•ˆì •í•˜ê³  형ì‹ì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤ + + + + + JSON is incomplete + JSONì´ ë¶ˆì•ˆì •í•©ë‹ˆë‹¤ + + + + + JSON is malformed + ìž˜ëª»ëœ JSON í˜•ì‹ + + + + PHOTO - %1 + 사진 - %1 + + + + open file %1 + íŒŒì¼ ì—´ê¸° %1 + + + + header not exists + í—¤ë”ê°€ 존재하지 않습니다 + + + + header is malformed + í—¤ë”ì˜ í˜•ì‹ì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤ + + + + picture not exists (%1) + ì‚¬ì§„ì´ ì¡´ìž¬í•˜ì§€ 않습니다. (%1) + + + + JSON not exists (%1) + JSONì´ ì¡´ìž¬í•˜ì§€ 않습니다. (%1) + + + + title not exists (%1) + ì œëª©ì´ ì¡´ìž¬í•˜ì§€ 않습니다. (%1) + + + + description not exists (%1) + ì„¤ëª…ì´ ì¡´ìž¬í•˜ì§€ 않습니다. (%1) + + + + reading file %1 because of %2 + Example for %2: JSON is malformed error + %2ì˜ ì˜ˆ: JSONì´ ìž˜ëª»ëœ í˜•ì‹ìž…니다 + %2 ë•Œë¬¸ì— %1 파ì¼ì„ ì½ìŠµë‹ˆë‹¤ + + + + SnapmaticWidget + + + Snapmatic Widget + 스냅매틱 위젯 + + + + PHOTO - 00/00/00 00:00:00 + 사진 - 00/00/00 00:00:00 + + + + View picture + 사진 보기 + + + + View + 보기 + + + + Copy picture + 사진 복사 + + + + Copy + 복사 + + + + Export picture + 사진 내보내기 + + + + Export + 내보내기 + + + + + + Delete picture + 사진 ì‚­ì œ + + + + Delete + ì‚­ì œ + + + + Edi&t + 편집(&T) + + + + Show &In-game + ì¸ê²Œìž„ì—ì„œ ë³´ì´ê¸°(&I) + + + + Hide &In-game + ì¸ê²Œìž„ì—ì„œ 숨기기(&I) + + + + &Export + 내보내기(&E) + + + + &View + 보기(&V) + + + + &Remove + ì‚­ì œ(&R) + + + + &Select + ì„ íƒ(&S) + + + + &Deselect + ì„ íƒ í•´ì œ(&D) + + + + Select &All + ëª¨ë‘ ì„ íƒ(&A) + + + + &Deselect All + ëª¨ë‘ ì„ íƒ í•´ì œ(&D) + + + + Are you sure to delete %1 from your Snapmatic pictures? + 스냅매틱 사진ì—ì„œ %1ì„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ? + + + + Failed at deleting %1 from your Snapmatic pictures + 스냅매틱 사진ì—ì„œ %1ì„ ì‚­ì œí•˜ì§€ 못했습니다 + + + + Failed to hide %1 In-game from your Snapmatic pictures + ì¸ê²Œìž„ 스냅매틱 사진ì—ì„œ %1 ì„ ìˆ¨ê¸°ì§€ 못했습니다 + + + + Failed to show %1 In-game from your Snapmatic pictures + ì¸ê²Œìž„ 스냅매틱 사진ì—ì„œ %1 ì„ í‘œì‹œí•˜ì§€ 못했습니다 + + + + TelemetryDialog + + + You want help %1 to improve in the future by including personal usage data in your submission? + ê°œì¸ ì‚¬ìš© ë°ì´í„°ë¥¼ ì œì¶œì— í¬í•¨ì‹œì¼œ %1ì´(ê°€) 개선ë˜ê¸°ë¥¼ ì›í•©ë‹ˆê¹Œ? + + + + %1 User Statistics + %1 ì‚¬ìš©ìž í†µê³„ + + + + Yes, I want include personal usage data. + 예, ê°œì¸ ì‚¬ìš© ë°ì´í„°ë¥¼ í¬í•¨ì‹œí‚¤ê³  싶습니다. + + + + &OK + 확ì¸(&O) + + + + UserInterface + + + + %2 - %1 + %2 - %1 + + + + Select profile + 프로필 ì„ íƒ + + + + %1 %2 + %1 %2 + + + + Reload profile overview + 프로필 다시 불러오기 + + + + &Reload + 새로고침(&R) + + + + Close %1 + Close %1 <- (gta5view/gta5sync) - %1 will be replaced automatically + 닫기 %1 <- (gta5view/gta5sync) - %1 ìžë™ìœ¼ë¡œ êµì²´ë©ë‹ˆë‹¤. + 닫기 %1 + + + + &Close + 닫기(&C) + + + + &File + 파ì¼(&F) + + + + &Help + ë„움ë§(&H) + + + + &Edit + 편집(&E) + + + + &Profile + 프로필(&P) + + + + &Selection visibility + ì¸ê²Œìž„ 표시(&S) + + + + Selection &mass tools + ì„ íƒ ìž‘ì—…(&M) + + + + + + &About %1 + %1 ì •ë³´(&A) + + + + &Exit + 종료(&E) + + + + Exit + 종료 + + + + Close &Profile + 프로필 닫기(&P) + + + + &Settings + 설정(&S) + + + + Select &All + ëª¨ë‘ ì„ íƒ(&A) + + + + &Deselect All + ëª¨ë‘ ì„ íƒ í•´ì œ(&D) + + + + &Export selected... + ì„ íƒ ë‚´ë³´ë‚´ê¸°(&E)... + + + + &Remove selected + ì„ íƒ ì‚­ì œ(&R) + + + + &Import files... + íŒŒì¼ ë¶ˆëŸ¬ì˜¤ê¸°(&I)... + + + + &Open File... + íŒŒì¼ ì—´ê¸°(&O)... + + + + + Select &RDR 2 Folder... + RDR 2 í´ë” ì„ íƒ(&G)... + + + + + + + Select RDR 2 Folder... + RDR 2 í´ë” ì„ íƒ + + + + Show In-gam&e + ì¸ê²Œìž„ ë³´ì´ê¸°(&E) + + + + Hi&de In-game + ì¸ê²Œìž„ 숨기기(&D) + + + + Change &Title... + 제목 변경(&T)... + + + + Change &Crew... + &ì¡°ì§ ìƒì§• 변경(&C)... + + + + &Qualify as Avatar + 아바타 ìžê²© 부여(&Q) + + + + Change &Players... + 플레ì´ì–´ 변경(&P)... + + + + + + Show In-game + ì¸ê²Œìž„ ë³´ì´ê¸° + + + + + + Hide In-game + ì¸ê²Œìž„ 숨기기 + + + + + + Select Profile + 프로필 ì„ íƒ + + + + Open File... + íŒŒì¼ ì—´ê¸°... + + + + + + + Open File + íŒŒì¼ ì—´ê¸° + + + + Can't open %1 because of not valid file format + 올바른 íŒŒì¼ í˜•ì‹ì´ 아니므로 %1ì„ ì—´ 수 없습니다 + + + diff --git a/res/gta5sync_ru.qm b/res/gta5sync_ru.qm new file mode 100644 index 0000000000000000000000000000000000000000..657cf29ab7577ff7fbcb943f9f6e3e37bb4d0fa0 GIT binary patch literal 46877 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 + + + + AboutDialog + + + About %1 + О программе %1 + + + + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Created on %4<br/> +Built with Qt %5<br/> +Running with Qt %6<br/> +<br/> +%7 + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +ВерÑÐ¸Ñ %3<br/> +Сделано %4<br/> +Сделано Ñ Qt %5<br/> +ВыполнÑетÑÑ Ð½Ð° Qt %6<br/> +<br/> +%7 + + + + &Close + &Закрыть + + + + Translated by %1 + Translated by translator, example Translated by Syping + Перевёл %1 + + + + TRANSLATOR + Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile + VADemon,https://github.com/VADemon/ + + + + A project for viewing Red Dead Redemption 2 Snapmatic<br/> +Pictures and Savegames + Проект Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра Red Dead Redemption 2 Snapmatic<br/> +картинок и Ñохранений + + + + Copyright &copy; <a href="%1">%2</a> %3 + Copyright &copy; <a href="%1">%2</a> %3 + + + + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + %1 под лицензией <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + + + + Release + Релиз + + + + Release Candidate + Предварительный выпуÑк + + + + Daily Build + Ð”Ð½ÐµÐ²Ð½Ð°Ñ Ñборка + + + + Developer + Разработчик + + + + Beta + Бета + + + + Alpha + Ðльфа + + + + Custom + Ðе извеÑтен контекÑÑ‚ + + Ð¡Ð²Ð¾Ñ + + + + CrewDatabase + + + + No Crew + Вне банды + + + + ExportDialog + + + Dialog + Возможно не Ñто имелоÑÑŒ ввиду, немецкого перевода нету + + Диалоговое окно + + + + &JPEG/PNG format + Формат &JPEG/PNG + + + + GTA &Snapmatic format + Формат GTA &Snapmatic + + + + Export Format + Формат ÑкÑпорта + + + + Export Size + Размер ÑкÑпорта + + + + Default &Size + По &умолчанию + + + + &Desktop Size + Размер рабо&чего Ñтола + + + + &Custom Size + &Другой размер + + + + Custom Size: + Размер: + + + + x + на + + + + &Export + &ЭкÑпортировать + + + + &Close + &Закрыть + + + + ImageEditorDialog + + + + + + + + Snapmatic Image Editor + Редактор картинок Snapmatic + + + + + Overwrite Image... + ПерезапиÑать картинку... + + + + Import picture + Импортировать картинку + + + + &Import... + &Импортировать... + + + + + Apply changes + Применить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ + + + + + &Overwrite + &ПерезапиÑать + + + + + Discard changes + Отменить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ + + + + + &Close + &Закрыть + + + + + + Patching of Snapmatic Image failed because of I/O Error + Ðе удалоÑÑŒ изменить картинку Snapmatic из-за ошибки ввода-вывода + + + + + + Patching of Snapmatic Image failed because of Image Error + Ðе удалоÑÑŒ изменить картинку Snapmatic из-за ошибки Image Error + + + + ImportDialog + + + Import... + Импортировать... + + + + + Ignore Aspect Ratio + Игнорировать Ñоотн. Ñторон + + + + Avatar + Ðватар + + + + Picture + Картинка + + + + Watermark + ВодÑной знак + + + + Background + Фон + + + + + + + Background Colour: <span style="color: %1">%1</span> + Цвет фона: <span style="color: %1">%1</span> + + + + Select background colour + Выберите цвет фона + + + + + ... + ... + + + + Select background image + Выбрать фоновое изображение + + + + Remove background image + Убрать фоновую картинку + + + + + Background Image: %1 + Ð¤Ð¾Ð½Ð¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ°: %1 + + + + X + latin X + + X + + + + Force Colour in Avatar Zone + Задать цвет в зоне аватарки + + + + Import options + Опции импорта + + + + &Options + &Опции + + + + Import picture + Импортировать картинку + + + + &OK + &ОК + + + + Discard picture + Отклонить картинку + + + + &Cancel + Я не уверен наÑчет горÑчих клавиш... + + От&мена + + + + + + + Background Image: + Ð¤Ð¾Ð½Ð¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ°: + + + + &Import new Picture... + &Импортировать картинку... + + + + &Crop Picture... + Об&резать картинку... + + + + &Load Settings... + &Загрузить наÑтройки... + + + + &Save Settings... + &Сохранить наÑтройки... + + + + + Custom Avatar + Custom Avatar Description in SC, don't use Special Character! + Свой Ðватар + + + + + Custom Picture + Custom Picture Description in SC, don't use Special Character! + Ð¡Ð²Ð¾Ñ ÐšÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ° + + + + Storage + Background Image: Storage + Хранилище + + + + Crop Picture... + Обрезать картинку... + + + + &Crop + Об&резать + + + + Crop Picture + Обрезать картинку + + + + + Please import a new picture first + Импортируй Ñначала новую картинку + + + + + Default + Default as Default Profile + По умолчанию + + + + + + + + + + + + + + + + + + + + + + + Profile %1 + Profile %1 as Profile 1 + Профиль %1 + + + + + Load Settings... + Загрузить наÑтройки... + + + + + Please select your settings profile + ПожалуйÑта, выбери профиль Ð´Ð»Ñ Ð½Ð°Ñтроек + + + + + Save Settings... + Сохранить наÑтройки... + + + + Are you sure to use a square image outside of the Avatar Zone? +When you want to use it as Avatar the image will be detached! + Ты точно хочешь иÑпользовать квадратное изображение вне зоны аватарки? ЕÑли Ñто аватар, то изображение будет обрезано! + + + + Snapmatic Avatar Zone + Зона Snapmatic Ðватарки + + + + Select Colour... + Выбрать цвет... + + + + File + Background Image: File + Файл + + + + JsonEditorDialog + + + Snapmatic JSON Editor + Редактор JSON Ð´Ð»Ñ Snapmatic + + + + Apply changes + Применить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ + + + + &Save + &Сохранить + + + + Discard changes + Отменить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ + + + + &Close + &Закрыть + + + + JSON Error + Ошибка JSON + + + + MapLocationDialog + + + Snapmatic Map Viewer + ПроÑмотрщик карты Snapmatic + + + + Close viewer + Закрыть проÑмотрщик + + + + &Close + &Закрыть + + + + Apply new position + Применить новую позицию + + + + &Apply + &Применить + + + + Revert old position + Вернуть Ñтарую позицию + + + + &Revert + &Откатить + + + + Select new position + Выбрать новую позицию + + + + &Select + &Выбрать + + + + Quit select position + Покинуть выбор позиции + + + + &Done + &Готово + + + + X: %1 +Y: %2 + X and Y position + X: %1 +Y: %2 + + + + OptionsDialog + + + Content Open/Select Mode + Открывать/выбирать Ñодержимое + + + + Open with Singleclick + Открывать одним щелчком + + + + Open with Doubleclick + Открывать двойным щелчком + + + + Select with Singleclick + Выбирать одним щелчком + + + + Default Profile + Профиль по умолчанию + + + + Pictures + Картинки + + + + Export Size + Размер ÑкÑпорта + + + + Screen Resolution: %1x%2 + Разрешение Ñкрана: %1x%2 + + + + Default: %1x%2 + По умолчанию: %1x%2 + + + + %1 - Settings + %1 - ÐаÑтройки + + + + Profiles + Профили + + + + Custom RDR 2 Folder + Ð”Ñ€ÑƒÐ³Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° RDR 2 + + + + Force using Custom Folder + ИÑпользовать Ñту папку RDR 2 + + + + ... + ... + + + + + Custom Size: + Другой размер: + + + + x + x + + + + Ignore Aspect Ratio + Игнорировать Ñоотношение Ñторон + + + + Export Quality + КачеÑтво ÑкÑпорта + + + + Enable Custom Quality + Ð’Ñ‹Ñтавить другое качеÑтво + + + + Quality: + КачеÑтво: + + + + %1% + %1% + + + + Picture Viewer + ПроÑмотрщик картинок + + + + Enable Navigation Bar + Вкл. навигационную панель + + + + Players + Игроки + + + + ID + ID + + + + Name + Ð˜Ð¼Ñ + + + + Game + Игра + + + + Social Club Version + ВерÑÐ¸Ñ Social Club + + + + + + + + + + + Found: %1 + Ðайдено: %1 + + + + + + + + + + + + + Language: %1 + Язык: %1 + + + + Steam Version + ВерÑÐ¸Ñ Steam + + + + Feedback + ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь + + + + Participation + УчаÑтие + + + + + Participate in %1 User Statistics + УчаÑтвовать в пользовательÑкой ÑтатиÑтике %1 + + + + Categories + Категории + + + + Hardware, Application and OS Specification + Application = gta5view + + Железо, выпуÑк программы, тип ОС + + + + System Language Configuration + Языковые наÑтройки ÑиÑтемы + + + + Application Configuration + ÐаÑтройки программы + + + + Other + Другое + + + + + + Participation ID: %1 + Ðомер учаÑтника: %1 + + + + &Copy + &Копировать + + + + Language for Areas + Язык Ð´Ð»Ñ Ð¼ÐµÑтоположений? + + Язык перевода меÑтоположений + + + + Style + Стиль + + + + Style: + Стиль: + + + + Font + Шрифт + + + + Always use Message Font (Windows 2003 and earlier) + Ð’Ñегда иÑпользовать шрифт Ñообщений (Windows 2003 и ранние) + + + + Interface + Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ + + + + Personal Usage Data + Пользование программой + + + + Language for Interface + Язык интерфейÑа + + + + + + + Current: %1 + СейчаÑ: %1 + + + + Use Default Style (Restart) + ИÑпользовать Ñтандартный Ñтиль (ПерезапуÑк) + + + + Apply changes + Применить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ + + + + &OK + OK, Cancel, Apply + &ОК + + + + Discard changes + Отвергнуть Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ + + + + &Cancel + OK, Cancel, Apply + От&мена + + + + System + System in context of System default + СиÑтема + + + + %1 (Game language) + Next closest language compared to the Game settings + %1 (Язык игры) + + + + + %1 (Closest to Interface) + Next closest language compared to the Interface + %1 (Совпадает Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñом) + + + + + + Auto + Automatic language choice. + ÐвтоматичеÑки + + + + %1 (Language priority) + First language a person can talk with a different person/application. "Native" or "Not Native". + %1 (Приоритетный Ñзык) + + + + %1 + %1 + %1 + + + + The new Custom Folder will initialise after you restart %1. + Ð”Ñ€ÑƒÐ³Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° будет загружена поÑле перезапуÑка %1. + + + + View %1 User Statistics Online + ПоÑмотреть пользовательÑкую ÑтатиÑтику %1 онлайн + + + + Not registered + Ðе зарегиÑтрирован + + + + + + + Yes + Да + + + + + No + Ðет + + + + + OS defined + ÐаÑтройка от ОС + + + + + Steam defined + ÐаÑтройка от Steam + + + + No Profile + No Profile, as default + Ðет Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ + + + + + + Profile: %1 + Профиль: %1 + + + + PictureDialog + + + <span style=" font-weight:600;">Title: </span>%6<br/> +<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Created: </span>%8 + <span style=" font-weight:600;">Заголовок: </span>%6<br/> +<span style=" font-weight:600;">МеÑто: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Игроки: </span>%4 (Банда %5)<br/> +<span style=" font-weight:600;">Сделано: </span>%8 + + + + &Manage + &Управление + + + + Manage picture + ÐаÑтройки картинки + + + + Snapmatic Picture Viewer - %1 + ПроÑмотрщик фотографий Snapmatic - %1 + + + + Close viewer + Закрыть проÑмотрщик + + + + &Close + &Закрыть + + + + + Export + ЭкÑпортировать + + + + + Export as &Picture... + ЭкÑпортировать как &картинку... + + + + + Export as &Snapmatic... + ЭкÑпортировать как &Snapmatic... + + + + + &Overwrite Image... + &ПерезапиÑать картинку... + + + + + &Edit Properties... + &Изменить ÑвойÑтва... + + + + + Open &Map Viewer... + Открыть &карту... + + + + Key 1 - Avatar Preview Mode +Key 2 - Toggle Overlay +Arrow Keys - Navigate + Клавиша 1 - Режим показа аватарки +Клавиша 2 - Вкл./выкл. оверлей +Стрелки - ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ + + + + + Snapmatic Picture Viewer + ПроÑмотрщик фотографий Snapmatic + + + + + Failed at %1 + Ошибка при %1 + + + + + No Crew + Вне банды + + + + + + No Players + Игроков нет + + + + Avatar Preview Mode +Press 1 for Default View + Режим проÑмотра аватарок +Ðажмите 1 Ð´Ð»Ñ Ñтандартного проÑмотра + + + + Unknown Location + ÐеизвеÑтное меÑто + + + + Portable Network Graphics (*.png) + Картинка Portable Network Graphics (*.png) + + + + + Overwrite %1 with current Snapmatic picture? + ПерезапиÑать %1 текущей картинкой Snapmatic? + + + + Export as Picture... + ЭкÑпорт как картинку... + + + + JPEG Graphics (*.jpg *.jpeg) + Картинка JPEG (*.jpg *.jpeg) + + + + + + + + + Export as Picture + ЭкÑпорт как картинку + + + + Failed to export the picture because the system occurred a write failure + Ðе удалоÑÑŒ ÑкÑпортировать картинку из-за ошибки ÑиÑтемы при запиÑи + + + + Failed to export the picture because the format detection failures + Ðе удалоÑÑŒ ÑкÑпортировать картинку, потому что произошла ошибка при раÑпозновании формата + + + + Failed to export the picture because the file can't be written + Ðе удалоÑÑŒ ÑкÑпортировать картинку, так как файл не может быть запиÑан + + + + Failed to export the picture because of an unknown reason + Ðе удалоÑÑŒ ÑкÑпортировать картинку по неизвеÑтной причине + + + + + Failed to export current Snapmatic picture + Ðе удалоÑÑŒ ÑкÑпортировать текущую картинку Snapmatic + + + + Export as Snapmatic... + ЭкÑпортировать как Snapmatic... + + + + + + + + Export as Snapmatic + ЭкÑпортировать как Snapmatic + + + + Exported Snapmatic to "%1" because of using the .auto extension. + Snapmatic был ÑкÑпортирован как "%1" из-за раÑÑˆÐ¸Ñ€ÐµÐ½Ñ Ñ„Ð°Ð¹Ð»Ð°. + + + + + No valid file is selected + Выбранный файл неверен + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + RDR 2 Raw Export (*.auto) + RDR 2 ЭкÑпорт ИÑходника (*.auto) + + + + Snapmatic pictures (PRDR*) + Картинки Snapmatic (PRDR*) + + + + + Open &JSON Editor... + Открыть &редактор JSON... + + + + PlayerListDialog + + + Edit Players... + Изменить игроков... + + + + Available Players: + ДоÑтупные игроки: + + + + Selected Players: + Выбранные игроки: + + + + &Apply + &Применить + + + + &Cancel + &Отмена + + + + Add Players... + Добавить игроков... + + + + Failed to add more Players because the limit of Players are %1! + Ðевозможно добавить больше игроков из-за Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð² %1! + + + + + Add Player... + Добавить игрока... + + + + Enter Social Club Player ID + Введите идентификатор игрока из Social Club + + + + Failed to add Player %1 because Player %1 is already added! + ÐÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ добавить игрока %1, %1 уже добавлен! + + + + ProfileInterface + + + Profile Interface + Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ + + + + Loading file %1 of %2 files + ЗагружаетÑÑ Ñ„Ð°Ð¹Ð» %1 из %2 + + + + %1 %2 + %1 %2 + + + + Import file + Импортировать файл + + + + &Import... + &Импортировать... + + + + Close profile + Закрыть профиль + + + + &Close + &Закрыть + + + + Loading... + Загрузка... + + + + Snapmatic Loader + Загрузчик Snapmatic + + + + <h4>Following Snapmatic Pictures got repaired</h4>%1 + Change wording if the %1 is not a multiline beginning at new line + + <h4>ÐижеÑледующие картинки Snapmatic были воÑÑтановлены</h4>%1 + + + + + + + + + + + + + + + + + + + + + + + Import... + Импортировать... + + + + + + + + + + + + Import + Импортировать + + + + + Savegames files (SRDR*) + Файлы ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ (SRDR*) + + + + + Snapmatic pictures (PRDR*) + Картинка Snapmatic (PRDR*) + + + + + + + + All files (**) + Ð’Ñе файлы (**) + + + + + Import file %1 of %2 files + ИмпортируютÑÑ Ñ„Ð°Ð¹Ð»Ñ‹ %1 из %2 + + + + Import failed with... + +%1 + Ошибка при импорте... + +%1 + + + + + Failed to read Snapmatic picture + Ðе удалоÑÑŒ загрузить картинку Snapmatic + + + + + Failed to read Savegame file + Ðе удалоÑÑŒ загрузить файл ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ + + + + + + No valid file is selected + Выбранный файл неверен + + + + Enabled pictures: %1 of %2 + Включенные картинки: %1 из %2 + + + + Importable files (%1) + Файлы Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° (%1) + + + + + + + All image files (%1) + Ð’Ñе файлы изображений (%1) + + + + + + + Can't import %1 because file can't be open + Ðе удалоÑÑŒ открыть %1, файл не может быть открыт + + + + + + + Can't import %1 because file can't be parsed properly + Ðе получилоÑÑŒ импортировать %1, файл не может быть правильно обработан + + + + Can't import %1 because file format can't be detected + Ðе получилоÑÑŒ импортировать %1, не удалоÑÑŒ определить формат файла + + + + Failed to import the Snapmatic picture, file not begin with PRDR or end with .r5e + Ðе удалоÑÑŒ импортировать картинку Snapmatic, название не начинаетÑÑ Ñ PRDR или не заканчиваетÑÑ Ñ .r5e + + + + Failed to import the Snapmatic picture, can't copy the file into profile + Ðе удалоÑÑŒ импортировать картинку Snapmatic, не получилоÑÑŒ Ñкопировать файл в профиль + + + + Failed to import the Savegame, can't copy the file into profile + Ðе удалоÑÑŒ импортировать Ñохранение, не получилоÑÑŒ Ñкопировать файл в профиль + + + + Failed to import the Savegame, no Savegame slot is left + Ðе удалоÑÑŒ импортировать Ñохранение, нет пуÑÑ‚Ñ‹Ñ… Ñчеек под ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ + + + + + JPG pictures and GTA Snapmatic + Картинки JPG и GTA Snapmatic + + + + + JPG pictures only + Только картинки JPG + + + + + GTA Snapmatic only + Только GTA Snapmatic + + + + Initialising export... + Подготовка к ÑкÑпорту... + + + + + No Snapmatic pictures or Savegames files are selected + Ðе выделены ни один Snapmatic или Ñохранение + + + + + + Remove selected + СнÑÑ‚ÑŒ выделение + + + + You really want remove the selected Snapmatic picutres and Savegame files? + Точно ли хочешь удалить выбранные картинки Snapmatic и файлы Ñохранений? + + + + Prepare Content for Import... + Подготовка данных к импорту... + + + + + Qualify as Avatar + Пометить как Ðватар + + + + + + + + + No Snapmatic pictures are selected + Ðе выделена ни одна картинка Snapmatic + + + + + + + Patch selected... + Пропатчить выделенные... + + + + + + + + + + + Patch file %1 of %2 files + ИзменÑетÑÑ Ñ„Ð°Ð¹Ð» %1 из %2 + + + + + + + + + %1 failed with... + +%2 + Action failed with... + %1 завершилÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹... + +%2 + + + + A Snapmatic picture already exists with the uid %1, you want assign your import a new uid and timestamp? + Можно иÑпользовать Ñлово "припиÑать" + + + + + Failed to remove all selected Snapmatic pictures and/or Savegame files + Ðе удалоÑÑŒ удалить вÑе выделенные картинки Snapmatic и/или ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ + + + + Qualify + %1 failed with... + Помечание + + + + + Change Players... + Изменить игроков... + + + + Change Players + %1 failed with... + Измение игроков + + + + + + Change Crew... + Изменить банду... + + + + Failed to enter a valid Snapmatic Crew ID + Введённый идентификатор банды не верен + + + + Change Crew + %1 failed with... + Изменение банды + + + + + + Change Title... + Изменить заголовок... + + + + Failed to enter a valid Snapmatic title + Введённый заголовок не верен + + + + Change Title + %1 failed with... + Изменение заголовка + + + + %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: + %1ЭÑкпортировать картинки Snapmatic%2<br><br>Картинки JPG можно открыть любым проÑмотрщиком<br>Картинки формата GTA Snapmatic можно Ñнова импортировать в игру<br><br>ЭкÑпортировать как: + + + + + + + + Export selected... + Экпортировать выделенное... + + + + Export failed with... + +%1 + ЭкÑпорт провалилÑÑ Ð½Ð°... + +%1 + + + + + + Export file %1 of %2 files + ЭкÑпортируетÑÑ Ñ„Ð°Ð¹Ð» %1 из %2 + + + + All profile files (*.r5e SRDR* PRDR*) + Ð’Ñе файлы Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ (*.r5e SRDR* PRDR*) + + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + QApplication + + + Font + Шрифт + + + + Selected Font: %1 + Выбранный шрифт: %1 + + + + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? + <h4>Добро пожаловать в %1!</h4>Хочешь изменить наÑтройки %1 перед иÑпользованием? + + + + SavegameDialog + + + + Savegame Viewer + ПроÑмотрщик Ñохранений + + + + <span style=" font-weight:600;">Savegame</span><br><br>%1 + <span style=" font-weight:600;">Сохранение</span><br><br>%1 + + + + &Export + &ЭкÑпорт + + + + &Close + &Закрыть + + + + Failed at %1 + Ошибка при %1 + + + + SavegameWidget + + + Savegame Widget + Виджет Ñохранений + + + + View savegame + ПроÑмотреть Ñохранение + + + + View + ПроÑмотр + + + + + Export + ЭкÑпорт + + + + Delete + Удалить + + + + Delete savegame + Удалить Ñохранение + + + + Export Savegame... + ЭкÑпортировать Ñохранение... + + + + SAVE %3 - %1<br>%2 + СОХРÐÐЕÐИЕ %3 - %1<br>%2 + + + + + WRONG FORMAT + ÐЕВЕРÐЫЙ ФОРМÐТ + + + + + AUTOSAVE - %1 +%2 + ÐВТОСОХРÐÐЕÐИЕ - %1 +%2 + + + + + SAVE %3 - %1 +%2 + СОХРÐÐЕÐИЕ %3 - %1 +%2 + + + + UNKNOWN + ÐЕИЗВЕСТÐО + + + + Are you sure to delete %1 from your savegames? + Ð’Ñ‹ уверены, что хотите удалить Ñохранение %1? + + + + + Delete Savegame + Удалить Ñохранение + + + + Failed at deleting %1 from your savegames + Ðе удалоÑÑŒ удалить Ñохранение %1 + + + + &View + &ПроÑмотр + + + + &Remove + &Удалить + + + + &Select + &Выбрать + + + + &Deselect + Сн&ÑÑ‚ÑŒ выбор + + + + Select &All + Ð’&ыбрать вÑе + + + + &Deselect All + СнÑÑ‚ÑŒ выбо&Ñ€ Ñо вÑех + + + + Copy savegame + Копировать Ñохранение + + + + &Export + &ЭкÑпортировать + + + + Savegame files (SRDR*) + Файлы Ñохранений (SRDR*) + + + + All files (**) + Ð’Ñе файлы (**) + + + + + + + Export Savegame + ЭкÑпортировать Ñохранение + + + + Overwrite %1 with current Savegame? + ПерезапиÑать %1 текущим Ñохранением? + + + + Failed to overwrite %1 with current Savegame + Ðе удалоÑÑŒ перепиÑать %1 текущим Ñохранением + + + + Failed to export current Savegame + Ðе удалоÑÑŒ ÑкÑпортировать текущее Ñохранение + + + + No valid file is selected + Выбранный файл неверен + + + + SnapmaticEditor + + + + + + + + + + + Snapmatic Properties + СвойÑтва Snapmatic + + + + Snapmatic Type + Тип Snapmatic + + + + Editor + Редактор + + + + Selfie + Ðвтопортрет + + + + Regular + Обычный + + + + Mugshot + Под ареÑтом + + + + Director + Director + + + + Snapmatic Values + Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² Snapmatic + + + + Crew: %1 (%2) + Банда: %1 (%2) + + + + Meme + Meme + + + + + Snapmatic Title + Заголовок Snapmatic + + + + Title: %1 (%2) + Заголовок: %1 (%2) + + + + Players: %1 (%2) + Multiple Player are inserted here + Игроки: %1 (%2) + + + + Player: %1 (%2) + One Player is inserted here + Игрок: %1 (%2) + + + + + Appropriate: %1 + Подходит: %1 + + + + Extras + Дополнительно + + + + Qualify as Avatar automatically at apply + Пометить как аватарку + + + + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture + C меткой аватара можно загрузить Ñту картинку Snapmatic в профиль на Social Club + + + + Apply changes + Применить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ + + + + &Apply + &Применить + + + + Discard changes + + + + + &Cancel + &Отмена + + + + + + Edit + Правка + + + + Yes + Yes, should work fine + Да + + + + No + No, could lead to issues + Ðет + + + + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? + <h4>ÐеÑохранённые изменениÑ</h4>Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² JSON перед выходом? + + + + Patching of Snapmatic Properties failed because of %1 + Ðе удалоÑÑŒ изменить ÑвойÑтва Snapmatic из-за %1 + + + + Patching of Snapmatic Properties failed because of JSON Error + Ðе удалоÑÑŒ измененить ÑвойÑтва Snapmatic из-за ошибки JSON + + + + + + + Patching of Snapmatic Properties failed because of I/O Error + Ðе удалоÑÑŒ измененить ÑвойÑтва Snapmatic из-за проблемы ввода/вывода + + + + + New Snapmatic title: + Ðовый заголовок Snapmatic: + + + + + Snapmatic Crew + Банда на Snapmatic + + + + + New Snapmatic crew: + ÐÐ¾Ð²Ð°Ñ Ð±Ð°Ð½Ð´Ð° на Snapmatic: + + + + SnapmaticPicture + + + PHOTO - %1 + ФОТО - %1 + + + + open file %1 + Открыть файл %1 + + + + header not exists + ОтÑутÑтвует шапка (header) + + + + header is malformed + Шапка (header) повреждена + + + + picture not exists (%1) + Картинки не ÑущеÑтвует (%1) + + + + JSON not exists (%1) + JSON не ÑущеÑтвует (%1) + + + + title not exists (%1) + Заголовок отÑутÑтвует (%1) + + + + description not exists (%1) + ОпиÑание отÑутÑтвует (%1) + + + + reading file %1 because of %2 + Example for %2: JSON is malformed error + Чтение из файла %1 из-за %2 + + + + + JSON is incomplete and malformed + JSON не полный и повреждён + + + + + JSON is incomplete + JSON чаÑтично отÑутÑтвует + + + + + JSON is malformed + JSON повреждён + + + + SnapmaticWidget + + + Snapmatic Widget + Виджет Snapmatic + + + + PHOTO - 00/00/00 00:00:00 + ФОТО - 00/00/00 00:00:00 + + + + View picture + ПроÑмотр картинки + + + + View + ПроÑмотр + + + + Copy + Копировать + + + + Export + ЭкÑпорт + + + + Delete + Удалить + + + + + + Delete picture + Удалить картинку + + + + Are you sure to delete %1 from your Snapmatic pictures? + Уверены, что хотите удалить %1 из коллекции картинок Snapmatic? + + + + Failed at deleting %1 from your Snapmatic pictures + Ðе удалоÑÑŒ удалить %1 из колелкции картинок Snapmatic + + + + Failed to hide %1 In-game from your Snapmatic pictures + Ðе удалоÑÑŒ Ñкрыть %1 из ÑпиÑка картинок Snapmatic в игре + + + + Failed to show %1 In-game from your Snapmatic pictures + Ðе удалоÑÑŒ показать %1 в ÑпиÑке картинок Snapmatic в игре + + + + Edi&t + &Правка + + + + Show &In-game + Показывать в &игре + + + + Hide &In-game + Ск&рыть в игре + + + + &Export + &ЭкÑпорт + + + + &View + По&казать + + + + &Remove + У&далить + + + + &Select + &Выделить + + + + &Deselect + Сн&ÑÑ‚ÑŒ выделение + + + + Select &All + Ð’&ыбрать вÑе + + + + &Deselect All + СнÑÑ‚ÑŒ выбо&Ñ€ Ñо вÑех + + + + Copy picture + Скопировать картинку + + + + Export picture + ЭкÑпорт картинки + + + + TelemetryDialog + + + You want help %1 to improve in the future by including personal usage data in your submission? + Разрешишь нам Ñобирать ÑтатиÑтику о пользовании тобой %1? Это поможет нам в разработке. + + + + %1 User Statistics + %1 ПользовательÑÐºÐ°Ñ ÑтатиÑтика + + + + Yes, I want include personal usage data. + Да, передавать данные о пользовании программой. + + + + &OK + &ОК + + + + UserInterface + + + Select profile + Выбор Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ + + + + %1 %2 + %1 %2 + + + + Reload profile overview + Перезагрузить обзор профилей + + + + Close %1 + Close %1 <- (gta5view/gta5sync) - %1 will be replaced automatically + Закрыть %1 + + + + &File + &Файл + + + + &Help + &Справка + + + + &Edit + &Правка + + + + &Profile + П&рофиль + + + + &Exit + Ð’&ыход + + + + Exit + Выход + + + + Close &Profile + Закрыть п&рофиль + + + + &Settings + &ÐаÑтройки + + + + &Import files... + &Импортировать файлы... + + + + + Select &RDR 2 Folder... + Выбрать &папку RDR 2... + + + + Show In-gam&e + Показывать в и&гре + + + + Hi&de In-game + Скры&Ñ‚ÑŒ в игре + + + + Change &Players... + &Изменить игрока... + + + + Change &Title... + Изменить &Заголовок... + + + + Change &Crew... + Изменить &банду... + + + + &Qualify as Avatar + &Пометить как Ðватар + + + + &Close + &Закрыть + + + + &Selection visibility + Ð’&идимоÑÑ‚ÑŒ выделение + + + + Selection &mass tools + ИнÑтрументы &маÑÑовой выборки + + + + Select &All + Ð’&ыбрать вÑе + + + + &Deselect All + СнÑÑ‚ÑŒ выбо&Ñ€ Ñо вÑех + + + + &Export selected... + &Экпортировать выделенное... + + + + &Remove selected + &Удалить выделенное + + + + &Open File... + &Открыть файл... + + + + + + Select Profile + Выбор Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ + + + + + + + Select RDR 2 Folder... + Выбрать папку RDR 2... + + + + + %2 - %1 + %2 - %1 + + + + + + &About %1 + &О программе %1 + + + + Open File... + Открыть файл... + + + + + + + Open File + Открыть файл + + + + Can't open %1 because of not valid file format + Ðе удалоÑÑŒ открыть %1 из-за неверного формата файла + + + + &Reload + Пере&загрузить + + + + + + Show In-game + Показывать в игре + + + + + + Hide In-game + Скрыть в игре + + + diff --git a/res/gta5sync_uk.qm b/res/gta5sync_uk.qm new file mode 100644 index 0000000000000000000000000000000000000000..3b00714c950bf98ef20ae49b4a319abaabc0287e GIT binary patch literal 48099 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 + + + + AboutDialog + + + About %1 + Про %1 + + + + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Created on %4<br/> +Built with Qt %5<br/> +Running with Qt %6<br/> +<br/> +%7 + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +ВерÑÑ–Ñ %3<br/> +Створено %4<br/> +Побудовано з Qt %5<br/> +ВиконуєтьÑÑ Ð½Ð° Qt %6<br/> +<br/> +%7 + + + + &Close + &Закрити + + + + Translated by %1 + Translated by translator, example Translated by Syping + Переклад %1 + + + + TRANSLATOR + Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile + PROFessoR 'AppleSOft',https://steamcommunity.com/id/AppleSOft +VenJam1n,https://socialclub.rockstargames.com/member/--VenJam1n-- +twitter,https://twitter.com/_VenJam1n + VenJam1n,g5e://about?VmVuSmFtMW4=:U3RlYW06IDxhIGhyZWY9Imh0dHBzOi8vc3RlYW1jb21tdW5pdHkuY29tL3Byb2ZpbGVzLzc2NTYxMTk3OTg0NjM1ODE2LyI+UFJPRmVzc29SICdBcHBsZVNPZnQnPC9hPjxici8+U29jaWFsIENsdWI6IDxhIGhyZWY9Imh0dHBzOi8vc29jaWFsY2x1Yi5yb2Nrc3RhcmdhbWVzLmNvbS9tZW1iZXIvLS1WZW5KYW0xbi0tLzU2Mzc1NjkiPlZlbkphbTFuPC9hPjxici8+VHdpdHRlcjogPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9fVmVuSmFtMW4iPlZlbkphbTFuPC9hPg== + + + + A project for viewing Red Dead Redemption 2 Snapmatic<br/> +Pictures and Savegames + Проект Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду Red Dead Redemption 2 Snapmatic<br/> +зображень та Ñейвів + + + + Copyright &copy; <a href="%1">%2</a> %3 + ÐвторÑьке право &copy; <a href="%1">%2</a> %3 + + + + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + %1 ліцензовано під <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + + + + Release + Реліз + + + + Release Candidate + Реліз-Кандидат + + + + Daily Build + Щоденна Збірка + + + + Developer + Розробник + + + + Beta + Бета + + + + Alpha + Ðльфа + + + + Custom + Custom + + + + CrewDatabase + + + + No Crew + Без банди + + + + ExportDialog + + + Dialog + Діалог + + + + Export Format + Формат екÑпорту + + + + &JPEG/PNG format + &JPEG/PNG формат + + + + GTA &Snapmatic format + GTA &Snapmatic формат + + + + Export Size + ЕкÑпортувати розміром + + + + Default &Size + Стандартний &розмір + + + + &Desktop Size + &Розмір робочого Ñтолу + + + + &Custom Size + &КориÑтувацький розмір + + + + Custom Size: + КориÑтувацький розмір: + + + + x + x + + + + &Export + &ЕкÑпорт + + + + &Close + &Закрити + + + + ImageEditorDialog + + + + Overwrite Image... + ПерезапиÑати зображеннÑ... + + + + Import picture + Імпортувати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + &Import... + &Імпорт... + + + + + Apply changes + ЗаÑтоÑувати зміни + + + + + &Overwrite + &ПерезапиÑати + + + + + Discard changes + СкаÑувати зміни + + + + + &Close + &Закрити + + + + + + + + + Snapmatic Image Editor + Редактор Snapmatic зображень + + + + + + Patching of Snapmatic Image failed because of I/O Error + Ð’Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑ Ñ‡ÐµÑ€ÐµÐ· I/O Error + + + + + + Patching of Snapmatic Image failed because of Image Error + Ð’Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑ Ñ‡ÐµÑ€ÐµÐ· помилку картинки + + + + ImportDialog + + + Import... + Імпорт... + + + + Picture + Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + Avatar + Ðватар + + + + + Ignore Aspect Ratio + Ігнорувати ÑÐ¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін + + + + Watermark + ВодÑний знак + + + + Background + Фон + + + + + + + Background Colour: <span style="color: %1">%1</span> + Фоновий колір: <span style="color: %1">%1</span> + + + + Select background colour + Виберіть колір фону + + + + + ... + ... + + + + + + + Background Image: + Фонове зображеннÑ: + + + + Select background image + Виберіть фонове Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + Remove background image + Видалити фонове Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + X + Ð¥ + + + + Force Colour in Avatar Zone + ПримуÑовий колір в зоні Ðватару + + + + Import options + Параметри імпорту + + + + &Options + &Параметри + + + + Import picture + Імпортувати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + &OK + &OK + + + + Discard picture + Відхилити Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + &Cancel + &СкаÑувати + + + + &Import new Picture... + &Імпортувати нове зображеннÑ... + + + + &Crop Picture... + &Обрізати зображеннÑ... + + + + &Load Settings... + &Завантажити параметри... + + + + &Save Settings... + &Зберегти параметри... + + + + + Custom Avatar + Custom Avatar Description in SC, don't use Special Character! + КориÑтувацький Ðватар + + + + + Custom Picture + Custom Picture Description in SC, don't use Special Character! + КориÑтувацьке Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + Storage + Background Image: Storage + Ð—Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ + + + + Crop Picture... + Обрізати зображеннÑ... + + + + &Crop + &Обрізати + + + + Crop Picture + Обрізати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + + Please import a new picture first + Спершу імпортуйте нове Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + + Default + Default as Default Profile + Стандартний + + + + + + + + + + + + + + + + + + + + + + + Profile %1 + Profile %1 as Profile 1 + Профіль %1 + + + + + Load Settings... + Завантажити параметри... + + + + + Save Settings... + Зберегти параметри... + + + + Snapmatic Avatar Zone + Зона Snapmatic Ðватару + + + + Are you sure to use a square image outside of the Avatar Zone? +When you want to use it as Avatar the image will be detached! + Ви впевнені, що будете викориÑтовувати квадратне Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð° зоною аватара? +Якщо ви хочете викориÑтовувати його Ñк Ðватар, Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ відокремлено! + + + + Select Colour... + Вибір кольору... + + + + + Background Image: %1 + Фонове зображеннÑ: %1 + + + + + Please select your settings profile + Будь лаÑка, виберіть Ñвій профіль налаштувань + + + + File + Background Image: File + Файл + + + + JsonEditorDialog + + + Snapmatic JSON Editor + JSON редактор Snapmatic + + + + Apply changes + ЗаÑтоÑувати зміни + + + + &Save + &Зберегти + + + + Discard changes + СкаÑувати зміни + + + + &Close + &Закрити + + + + JSON Error + JSON помилка + + + + MapLocationDialog + + + Snapmatic Map Viewer + ПереглÑд карти Snapmatic + + + + Close viewer + Закрити переглÑдач + + + + &Close + &Закрити + + + + Apply new position + ЗаÑтоÑувати нову позицію + + + + &Apply + &ЗаÑтоÑувати + + + + Revert old position + Повернути Ñтару позицію + + + + &Revert + &Повернути + + + + Select new position + Виберіть нову позицію + + + + &Select + &Ð’Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ + + + + Quit select position + Вийти з вибору позиції + + + + &Done + &Готово + + + + X: %1 +Y: %2 + X and Y position + X: %1 +Y: %2 + + + + OptionsDialog + + + %1 - Settings + %1 - ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ + + + + Profiles + Профілі + + + + Content Open/Select Mode + Відкривати/обирати вміÑÑ‚ + + + + Open with Singleclick + Відкривати одиночним кліком + + + + Open with Doubleclick + Відкривати подвійним кліком + + + + Select with Singleclick + Обирати одиночним кліком + + + + Default Profile + Типовий профіль + + + + Custom RDR 2 Folder + КориÑтувацька RDR 2 тека + + + + Force using Custom Folder + ВикориÑтовувати цю теку RDR 2 + + + + ... + ... + + + + Pictures + Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + Export Size + Розмір при екÑпорті + + + + Default: %1x%2 + Стандартно: %1x%2 + + + + Screen Resolution: %1x%2 + Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ ÐµÐºÑ€Ð°Ð½Ñƒ: %1x%2 + + + + + Custom Size: + КориÑтувацький розмір: + + + + x + x + + + + Ignore Aspect Ratio + Ігнорувати ÑÐ¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін + + + + Export Quality + ЯкіÑÑ‚ÑŒ при екÑпорті + + + + Enable Custom Quality + Увімкнути кориÑтувацьку ÑкіÑÑ‚ÑŒ + + + + Quality: + ЯкіÑÑ‚ÑŒ: + + + + %1% + %1% + + + + Picture Viewer + ПереглÑдач зображень + + + + Enable Navigation Bar + Увімкнути навігаціїйну панель + + + + Players + Гравці + + + + ID + ID + + + + Name + Ім'Ñ + + + + Game + Гра + + + + Social Club Version + Social Club верÑÑ–Ñ + + + + + + + + + + + Found: %1 + Знайдено:%1 + + + + + + + + + + + + + Language: %1 + Мова: %1 + + + + Steam Version + Steam верÑÑ–Ñ + Steam Version + + + + Feedback + ÐžÐ¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ + + + + Participation + УчаÑÑ‚ÑŒ + + + + + Participate in %1 User Statistics + ÐžÐ¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ %1 про уÑÑ‚Ð°Ñ‚ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐŸÐš + + + + Categories + Категорії + + + + Hardware, Application and OS Specification + ОбладнаннÑ, випуÑк програми, Ñпецифікації ОС + + + + System Language Configuration + Мовні Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑиÑтеми + + + + Application Configuration + ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ + + + + Personal Usage Data + ОÑобиÑÑ‚Ñ– дані викориÑÑ‚Ð°Ð½Ð½Ñ + + + + Other + Інше + + + + + + Participation ID: %1 + ID учаÑника : %1 + + + + &Copy + &Копіювати + + + + Interface + Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ + + + + Language for Interface + Мова інтерфейÑу + + + + + + + Current: %1 + Зараз: %1 + + + + Language for Areas + Мова перекладу Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ + + + + Style + Стиль + + + + Use Default Style (Restart) + ВикориÑтовувати Ñтандартний Ñтиль (ПерезапуÑк) + + + + Style: + Стиль: + + + + Font + Шрифт + + + + Always use Message Font (Windows 2003 and earlier) + Завжди викориÑтовуйте шрифт повідомлень (Windows 2003 Ñ– раніше) + + + + Apply changes + ЗаÑтоÑувати зміни + + + + &OK + OK, Cancel, Apply + &OK + + + + Discard changes + СкаÑувати зміни + + + + &Cancel + OK, Cancel, Apply + &СкаÑувати + + + + System + System in context of System default + Як у ÑиÑтеми + + + + %1 (Game language) + Next closest language compared to the Game settings + %1 (Мова гри) + + + + + %1 (Closest to Interface) + Next closest language compared to the Interface + %1 (Співпадає з інтерфейÑом) + + + + + + Auto + Automatic language choice. + Ðвтоматично + + + + %1 (Language priority) + First language a person can talk with a different person/application. "Native" or "Not Native". + %1 (пріоритет мови) + + + + %1 + %1 + %1 + + + + The new Custom Folder will initialise after you restart %1. + Ðова кориÑтувацька папка буде ініціалізована піÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑку %1. + + + + No Profile + No Profile, as default + Жодного + + + + + + Profile: %1 + Профіль: %1 + + + + View %1 User Statistics Online + ПереглÑнути кориÑтувацьку ÑтатиÑтику %1 онлайн + + + + Not registered + Ðе зареєÑтрований + + + + + + + Yes + Так + + + + + No + ÐÑ– + + + + + OS defined + ВизначаєтьÑÑ ÐžÐ¡ + + + + + Steam defined + ВизначаєтьÑÑ Steam + + + + PictureDialog + + + Snapmatic Picture Viewer - %1 + ПереглÑдач зображень Snapmatic - %1 + + + + <span style=" font-weight:600;">Title: </span>%6<br/> +<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Created: </span>%8 + <span style=" font-weight:600;">Ðазва: </span>%6<br/> +<span style=" font-weight:600;">РозташуваннÑ: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Гравці: </span>%4 (Банда %5)<br/> +<span style=" font-weight:600;">Створено: </span>%8 + + + + Manage picture + ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм + + + + &Manage + &Керувати + + + + Close viewer + Закрити переглÑдач + + + + &Close + &Закрити + + + + + Export as &Picture... + ЕкÑпортувати Ñк &зображеннÑ... + + + + + Export as &Snapmatic... + ЕкÑпортувати Ñк &Snapmatic... + + + + + &Edit Properties... + &Змінити влаÑтивоÑÑ‚Ñ–... + + + + + &Overwrite Image... + &ПерезапиÑати зображеннÑ... + + + + + Open &Map Viewer... + Відкрити &карту... + + + + + Open &JSON Editor... + Відкрити редактор &JSON... + + + + Key 1 - Avatar Preview Mode +Key 2 - Toggle Overlay +Arrow Keys - Navigate + Клавіша 1 - Режим показу аватарки +Клавіша 2 - Вкл./Викл. Оверлей +Стрілки - ÐÐ°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ñ + + + + + Snapmatic Picture Viewer + ПереглÑдач фотографій Snapmatic + + + + + Failed at %1 + Помилка на%1 + + + + + + No Players + Гравців немає + + + + + No Crew + Банди немає + + + + Unknown Location + Ðевідома Ð»Ð¾ÐºÐ°Ñ†Ñ–Ñ + + + + Avatar Preview Mode +Press 1 for Default View + Режим Ð´Ð»Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€Ð¾Ðº +ÐатиÑніть 1 Ð´Ð»Ñ Ñтандартного переглÑду + + + + Export as Picture... + ЕкÑпортувати Ñк зображеннÑ... + + + + + Export + ЕкÑпорт + + + + JPEG Graphics (*.jpg *.jpeg) + JPEG Graphics (*.jpg *.jpeg) + + + + Portable Network Graphics (*.png) + Portable Network Graphics (*.png) + + + + + + + + + Export as Picture + ЕкÑпортувати Ñк Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + + Overwrite %1 with current Snapmatic picture? + ПерезапиÑати %1 поточним Snapmatic зображеннÑм? + + + + Failed to export the picture because the system occurred a write failure + Ðе вдалоÑÑ ÐµÐºÑпортувати зображеннÑ, оÑкільки в ÑиÑтемі виникла помилка запиÑу + + + + Failed to export the picture because the format detection failures + Ðе вдалоÑÑ ÐµÐºÑпортувати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· помилки виÑÐ²Ð»ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ + + + + Failed to export the picture because the file can't be written + Ðе вдалоÑÑ ÐµÐºÑпортувати зображеннÑ, оÑкільки файл не може бути запиÑаний + + + + Failed to export the picture because of an unknown reason + Ðе вдалоÑÑ ÐµÐºÑпортувати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· невідому причину + + + + + No valid file is selected + Вибрано невірний файл + + + + Export as Snapmatic... + ЕкÑпортувати Ñк Snapmatic... + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + RDR 2 Raw Export (*.auto) + RDR 2 RAW-екÑпорт (*.auto) + + + + Snapmatic pictures (PRDR*) + Snapmatic картинки (PRDR*) + + + + + + + + Export as Snapmatic + ЕкÑпортувати Ñк Snapmatic + + + + + Failed to export current Snapmatic picture + Ðе вдалоÑÑ ÐµÐºÑпортувати поточну фотографію Snapmatic + + + + Exported Snapmatic to "%1" because of using the .auto extension. + ЕкÑпортуєтьÑÑ Snapmatic до "%1" через викориÑÑ‚Ð°Ð½Ð½Ñ .auto розширеннÑ. + + + + PlayerListDialog + + + Edit Players... + Редагувати гравців... + + + + Available Players: + ДоÑтупні гравці: + + + + Selected Players: + Вибрані гравці: + + + + &Apply + &ЗаÑтоÑувати + + + + &Cancel + &СкаÑувати + + + + Add Players... + Додати гравців... + + + + Failed to add more Players because the limit of Players are %1! + Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ більше гравців, бо ліміт %1! + + + + + Add Player... + Додати гравцÑ... + + + + Enter Social Club Player ID + Введіть ID Ð³Ñ€Ð°Ð²Ñ†Ñ Social Club + + + + Failed to add Player %1 because Player %1 is already added! + Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ Ð³Ñ€Ð°Ð²Ñ†Ñ %1, оÑкільки %1 вже доданий! + + + + ProfileInterface + + + Profile Interface + Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ + + + + Loading file %1 of %2 files + Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ %1 з %2 файлів + + + + %1 %2 + %1 %2 + + + + Import file + Імпортувати файл + + + + &Import... + &Імпортувати... + + + + Close profile + Закрити профіль + + + + &Close + &Закрити + + + + + + Export file %1 of %2 files + ЕкÑпортуєтьÑÑ Ñ„Ð°Ð¹Ð» %1 з %2 файлів + + + + + + + + + + + + + + + + + + + + + + + Import... + ІмпортуваннÑ... + + + + + + + + + + + + Import + Імпорт + + + + + + + All image files (%1) + Файли зображень (%1) + + + + + + + + All files (**) + УÑÑ– файли (**) + + + + + + + Can't import %1 because file can't be open + Ðеможливо імпортувати %1, оÑкільки файл не може бути відкритий + + + + + + + Can't import %1 because file can't be parsed properly + Ðеможливо імпортувати %1, оÑкільки файл неможливо розібрати правильно + + + + Enabled pictures: %1 of %2 + Увімкнено фотографії:%1 з%2 + + + + Loading... + ЗавантаженнÑ... + + + + Snapmatic Loader + Snapmatic Loader + + + + <h4>Following Snapmatic Pictures got repaired</h4>%1 + <h4>ÐаÑтупні Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¸ відновлені</h4>%1 + + + + Importable files (%1) + ІмпортуютьÑÑ Ñ„Ð°Ð¹Ð»Ð¸ (%1) + + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + + Savegames files (SRDR*) + Файли Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð¸ (SRDR*) + + + + + Snapmatic pictures (PRDR*) + Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (PRDR*) + + + + + + No valid file is selected + Вибрані недійÑні файли + + + + + Import file %1 of %2 files + ІмпортуєтьÑÑ Ñ„Ð°Ð¹Ð» %1 з %2 файлів + + + + Import failed with... + +%1 + Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ тому що... + +%1 + + + + + Failed to read Snapmatic picture + Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Snapmatic картинку + + + + + Failed to read Savegame file + Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð¸ + + + + Can't import %1 because file format can't be detected + Ðеможливо імпортувати%1, оÑкільки формат файлу не може бути виÑвлений + + + + Failed to import the Snapmatic picture, file not begin with PRDR or end with .r5e + Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Snapmatic, файл не починаєтьÑÑ Ð· PRDR або закінчуєтьÑÑ .r5e + + + + Failed to import the Snapmatic picture, can't copy the file into profile + Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Snapmatic, не можна Ñкопіювати файл у профіль + + + + Failed to import the Savegame, can't copy the file into profile + Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Сейв, не можна Ñкопіювати файл у профіль + + + + Failed to import the Savegame, no Savegame slot is left + Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Сейв, немає вільного Ñлота + + + + + + + + Export selected... + ЕкÑпорт обраних... + + + + + JPG pictures and GTA Snapmatic + JPG картинки Ñ– GTA Snapmatic + + + + + JPG pictures only + Тільки JPG картинки + + + + + GTA Snapmatic only + Тільки GTA Snapmatic + + + + %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: + %1 ЕкÑпортувати Snapmatic фотографії %2 <br><br> Фотографії JPG дозволÑÑŽÑ‚ÑŒ відкривати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð° допомогою заÑобу переглÑду зображень<br>GTA Snapmatic дає змогу імпортувати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð² гру<br><br>ЕкÑпортувати Ñк: + + + + Initialising export... + Ð†Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ ÐµÐºÑпорту... + + + + Export failed with... + +%1 + ЕкÑпортувати не вдалоÑÑ Ñ‚Ð¾Ð¼Ñƒ що... + +%1 + + + + + No Snapmatic pictures or Savegames files are selected + Ðе вибрано жодного Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ файлу Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ + + + + + + Remove selected + Видалити вибрані + + + + You really want remove the selected Snapmatic picutres and Savegame files? + Ви дійÑно хочете видалити вибрані Snapmatic фотографії та файли Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð¸? + + + + Failed to remove all selected Snapmatic pictures and/or Savegame files + Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ вÑÑ– обрані Snapmatic фотографії та/або Сейви + + + + + + + + + No Snapmatic pictures are selected + Ðе вибрано жодного Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + + + + + + %1 failed with... + +%2 + Action failed with... + %1 не вдалоÑÑ Ð·... + +%2 + + + + Prepare Content for Import... + Підготувати контент Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ñƒ ... + + + + A Snapmatic picture already exists with the uid %1, you want assign your import a new uid and timestamp? + Snapmatic Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð· uid %1 вже Ñ–Ñнує, ви хочете призначити Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ñƒ новий uid та мітку чаÑу? + + + + + Qualify as Avatar + Позначити Ñк Ðватар + + + + + + + Patch selected... + Вибір патчу... + + + + + + + + + + + Patch file %1 of %2 files + Патч файлу %1 з %2 файлів + + + + Qualify + %1 failed with... + ЯкіÑÑ‚ÑŒ + + + + + Change Players... + Зміна гравців... + + + + Change Players + %1 failed with... + Змінити гравців + + + + + + Change Crew... + Зміна банди... + + + + Failed to enter a valid Snapmatic Crew ID + Ðе вдалоÑÑ Ð²Ð²ÐµÑти дійÑний ID Банди Snapmatic + + + + Change Crew + %1 failed with... + Змінити банду + + + + + + Change Title... + Зміна назви... + + + + Failed to enter a valid Snapmatic title + Ðе вдалоÑÑ Ð²Ð²ÐµÑти дійÑний заголовок Snapmatic + + + + Change Title + %1 failed with... + Змінити назву + + + + All profile files (*.r5e SRDR* PRDR*) + УÑÑ– файли зображень (*.r5e SRDR* PRDR*) + + + + QApplication + + + Font + Шрифт + + + + Selected Font: %1 + Вибраний шрифт:%1 + + + + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? + <h4>ЛаÑкаво проÑимо до %1!</h4>Ви хочете налаштувати %1 перед викориÑтаннÑм? + + + + SavegameDialog + + + + Savegame Viewer + ПереглÑд файлів Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð¸ + + + + <span style=" font-weight:600;">Savegame</span><br><br>%1 + <span style=" font-weight:600;">Ігрове збереженнÑ</span><br><br>%1 + + + + &Export + &ЕкÑпорт + + + + &Close + &Закрити + + + + Failed at %1 + Помилка на %1 + + + + SavegameWidget + + + Savegame Widget + Віджет Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð¸ + + + + SAVE %3 - %1<br>%2 + ЗБЕРЕЖЕÐÐЯ %3 - %1<br>%2 + + + + View savegame + ПереглÑнути ігрове Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ + + + + View + ПереглÑд + + + + Copy savegame + Скопіювати файл Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ + + + + + Export + ЕкÑпорт + + + + Delete savegame + Видалити Ñейв + + + + Delete + Видалити + + + + &View + &ПереглÑд + + + + &Export + &ЕкÑпорт + + + + &Remove + &Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ + + + + &Select + &Ð’Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ + + + + &Deselect + &ЗнÑти Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ + + + + Select &All + Вибрати &уÑÑ– + + + + &Deselect All + &ЗнÑти Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… + + + + Savegame files (SRDR*) + Файли Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð¸ (SRDR*) + + + + All files (**) + УÑÑ– файли (**) + + + + + + + Export Savegame + ЕкÑпорт файлу Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ + + + + Overwrite %1 with current Savegame? + ПерезапиÑати %1 поточним ігровим збереженнÑм? + + + + Failed to overwrite %1 with current Savegame + Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñати %1 поточним збереженнÑм гри + + + + Failed to export current Savegame + Ðе вдалоÑÑ ÐµÐºÑпортувати поточне ігрове Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ + + + + No valid file is selected + Вибрано невірний файл + + + + Export Savegame... + ЕкÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ збереженнÑ... + + + + + AUTOSAVE - %1 +%2 + ÐВТОМÐТИЧÐЕ ЗБЕРЕЖЕÐÐЯ - %1 +%2 + + + + + SAVE %3 - %1 +%2 + ЗБЕРЕЖЕÐÐЯ %3 - %1 +%2 + + + + + WRONG FORMAT + ÐЕПРÐВИЛЬÐИЙ ФОРМÐТ + + + + UNKNOWN + ÐЕВІДОМИЙ + + + + + Delete Savegame + Видалити файл Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ + + + + Are you sure to delete %1 from your savegames? + Ви впевнені, що хочете видалити %1 зі Ñвоїх Ñейвів? + + + + Failed at deleting %1 from your savegames + Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ %1 із ваших збережених ігор + + + + SnapmaticEditor + + + + + + + + + + + Snapmatic Properties + ВлаÑтивоÑÑ‚Ñ– Snapmatic + + + + Snapmatic Type + Тип Snapmatic + + + + Editor + Редактор + + + + Selfie + Селфі + + + + Regular + Звичайний + + + + Mugshot + Ðвтопортрет + + + + Meme + Мем + + + + Director + РежиÑер + + + + Snapmatic Values + Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð² Snapmatic + + + + Extras + Додатково + + + + Qualify as Avatar automatically at apply + При заÑтоÑуванні налаштувань помітити Ñк Ðватар + + + + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture + З міткою Ñк Ðватар можливо завантажити це Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Snapmatic в профіль Social Club + + + + Apply changes + ЗаÑтоÑувати зміни + + + + &Apply + &ЗаÑтоÑувати + + + + Discard changes + СкаÑувати зміни + + + + &Cancel + &СкаÑувати + + + + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? + <h4> ВиÑвлені незбережені зміни </h4> Ви хочете зберегти вміÑÑ‚ JSON перед тим, Ñк вийти? + + + + Patching of Snapmatic Properties failed because of %1 + Змінити влаÑтивоÑÑ‚Ñ– Snapmatic не вдалоÑÑ Ñ‚Ð¾Ð¼Ñƒ що%1 + + + + + + + Patching of Snapmatic Properties failed because of I/O Error + Змінити влаÑтивоÑÑ‚Ñ– Snapmatic не вдалоÑÑ Ñ‡ÐµÑ€ÐµÐ· I/O Помилку + + + + Patching of Snapmatic Properties failed because of JSON Error + Змінити влаÑтивоÑÑ‚Ñ– Snapmatic не вдалоÑÑ Ñ‡ÐµÑ€ÐµÐ· JSON Помилку + + + + + Snapmatic Crew + Snapmatic банда + + + + + New Snapmatic crew: + Ðова Snapmatic банда: + + + + + Snapmatic Title + Snapmatic назва + + + + + New Snapmatic title: + Ðовий Snapmatic заголовок: + + + + + + Edit + Правка + + + + Players: %1 (%2) + Multiple Player are inserted here + Гравці: %1 (%2) + + + + Player: %1 (%2) + One Player is inserted here + Гравець: %1 (%2) + + + + Title: %1 (%2) + Ðазва: %1 (%2) + + + + + Appropriate: %1 + Підходить: %1 + + + + Yes + Yes, should work fine + Так + + + + No + No, could lead to issues + ÐÑ– + + + + Crew: %1 (%2) + Банда: %1 (%2) + + + + SnapmaticPicture + + + + JSON is incomplete and malformed + JSON неповний та неправильний + + + + + JSON is incomplete + JSON неповний + + + + + JSON is malformed + JSON неправильний + + + + PHOTO - %1 + ФОТО - %1 + + + + open file %1 + відкрити файл%1 + + + + header not exists + заголовок не Ñ–Ñнує + + + + header is malformed + заголовок неправильний + + + + picture not exists (%1) + Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ Ñ–Ñнує (%1) + + + + JSON not exists (%1) + JSON не Ñ–Ñнує (%1) + + + + title not exists (%1) + заголовок не Ñ–Ñнує (%1) + + + + description not exists (%1) + Ð¾Ð¿Ð¸Ñ Ð½Ðµ Ñ–Ñнує (%1) + + + + reading file %1 because of %2 + Example for %2: JSON is malformed error + Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ %1 тому що %2 + + + + SnapmaticWidget + + + Snapmatic Widget + Віджет Snapmatic + + + + PHOTO - 00/00/00 00:00:00 + ФОТО - 00/00/00 00:00:00 + + + + View picture + ПереглÑнути Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ + + + + View + ПереглÑд + + + + Copy picture + Копіювати фото + + + + Copy + Копіювати + + + + Export picture + ЕкÑпорт фото + + + + Export + ЕкÑпорт + + + + + + Delete picture + Видалити фото + + + + Delete + Видалити + + + + Edi&t + Редагува&ти + + + + Show &In-game + Показати &у грі + + + + Hide &In-game + Сховати &у грі + + + + &Export + &ЕкÑпортувати + + + + &View + &ПереглÑнути + + + + &Remove + &Видалити + + + + &Select + &Ð’Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ + + + + &Deselect + &ЗнÑти Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ + + + + Select &All + Вибрати &уÑÑ– + + + + &Deselect All + &ЗнÑти Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… + + + + Are you sure to delete %1 from your Snapmatic pictures? + Ви дійÑно бажаєте видалити %1 з ваших Snapmatic фотографій? + + + + Failed at deleting %1 from your Snapmatic pictures + Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸%1 з ваших Snapmatic фотографій + + + + Failed to hide %1 In-game from your Snapmatic pictures + Ðе вдалоÑÑ Ñховати %1 Snapmatic у грі + + + + Failed to show %1 In-game from your Snapmatic pictures + Ðе вдалоÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ñ‚Ð¸ %1 Snapmatic у грі + + + + TelemetryDialog + + + You want help %1 to improve in the future by including personal usage data in your submission? + Ви хочете допомогти %1 покращитиÑÑŒ у майбутньому, включивши дані оÑобиÑтого кориÑтуваннÑ? + + + + %1 User Statistics + %1 СтатиÑтика кориÑтувачів + + + + Yes, I want include personal usage data. + Так, Ñ Ñ…Ð¾Ñ‡Ñƒ включити дані оÑобиÑтого кориÑтуваннÑ. + + + + &OK + &OK + &OK + + + + UserInterface + + + + %2 - %1 + %2 - %1 + + + + Select profile + Виберіть профіль + + + + %1 %2 + %1 %2 + + + + Reload profile overview + Перезавантажити оглÑд профілю + + + + &Reload + &Перезавантажити + + + + Close %1 + Close %1 <- (gta5view/gta5sync) - %1 will be replaced automatically + Закрити %1 + + + + &Close + &Закрити + + + + &File + &Файл + + + + &Help + &Справка + + + + &Edit + &Правка + + + + &Profile + &Профіль + + + + &Selection visibility + &Вибір видимоÑÑ‚Ñ– + + + + Selection &mass tools + ІнÑтрументи &маÑової вибірки + + + + + + &About %1 + &Про %1 + + + + &Exit + &Вихід + + + + Exit + Вихід + + + + Close &Profile + Закрити &профіль + + + + &Settings + &ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ + + + + Select &All + Вибрати &вÑе + + + + &Deselect All + &СкаÑувати вибір уÑÑ–Ñ… + + + + &Export selected... + &ЕкÑпорт вибраного... + + + + &Remove selected + &Видалити вибране + + + + &Import files... + &Імпорт файлів... + + + + &Open File... + &Відкрити файл... + + + + + Select &RDR 2 Folder... + Вибрати &RDR 2 теку... + + + + + + + Select RDR 2 Folder... + Вибрати RDR 2 теку... + + + + Show In-gam&e + &Показати у грі + + + + Hi&de In-game + &Приховати у грі + + + + Change &Title... + Змінити &заголовок... + + + + Change &Crew... + Змінити &банду... + + + + &Qualify as Avatar + Позначити Ñк &аватар + + + + Change &Players... + Змінити &гравців... + + + + + + Show In-game + Показати у грі + + + + + + Hide In-game + Сховати у грі + + + + + + Select Profile + Вибрати профіль + + + + Open File... + Відкрити файл... + + + + + + + Open File + Відкрити файл + + + + Can't open %1 because of not valid file format + Ðеможливо відкрити %1 через невідомий формат файлу + + + diff --git a/res/gta5sync_zh_TW.qm b/res/gta5sync_zh_TW.qm new file mode 100644 index 0000000000000000000000000000000000000000..981066a43e989c054c6efe7c77cccac8660aa107 GIT binary patch literal 35949 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 hP+Y#b&#gakI;qdigw$2+mQ5Zm4MF{{cr^&Bg!# literal 0 HcmV?d00001 diff --git a/res/gta5sync_zh_TW.ts b/res/gta5sync_zh_TW.ts new file mode 100644 index 0000000..b780070 --- /dev/null +++ b/res/gta5sync_zh_TW.ts @@ -0,0 +1,2489 @@ + + + + + AboutDialog + + + About %1 + 關於 %1 + + + + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +Version %3<br/> +Created on %4<br/> +Built with Qt %5<br/> +Running with Qt %6<br/> +<br/> +%7 + <span style=" font-weight:600;">%1</span><br/> +<br/> +%2<br/> +<br/> +版本:%3<br/> +建置於 %4<br/> +使用 Qt %5 建置<br/> +使用 Qt %6 執行<br/> +<br/> +%7 + + + + &Close + 關閉(&C) + + + + Translated by %1 + Translated by translator, example Translated by Syping + ç¹é«”中文化: %1 + + + + TRANSLATOR + Insert your name here and profile here in following scheme, First Translator,First Profile\nSecond Translator\nThird Translator,Second Profile + Ray,https://steamcommunity.com/profiles/76561198282701714/ + + + + A project for viewing Red Dead Redemption 2 Snapmatic<br/> +Pictures and Savegames + 一個 Red Dead Redemption 2 Snapmatic 圖片ã€éŠæˆ²å­˜æª”檢視專案 + + + + Copyright &copy; <a href="%1">%2</a> %3 + 版權 &copy; <a href="%1">%2</a> %3 + + + + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> + %1 使用 <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> 授權æ¢æ¬¾ç™¼å¸ƒ + + + + Release + æ­£å¼ç‰ˆæœ¬ + + + + Release Candidate + 最終測試版本 + + + + Daily Build + æ¯æ—¥å»ºç½®ç‰ˆæœ¬ + + + + Developer + 開發版本 + + + + Beta + Beta 版本 + + + + Alpha + Alpha 版本 + + + + Custom + 自訂 + + + + CrewDatabase + + + + No Crew + ç„¡ + + + + ExportDialog + + + Dialog + å°è©± + + + + Export Format + åŒ¯å‡ºæ ¼å¼ + + + + &JPEG/PNG format + JPEG/PNG æ ¼å¼(&J) + + + + GTA &Snapmatic format + GTA Snapmatic æ ¼å¼(&S) + + + + Export Size + 匯出尺寸 + + + + Default &Size + é è¨­(&S) + + + + &Desktop Size + æ¡Œé¢å°ºå¯¸(&D) + + + + &Custom Size + 自訂尺寸(&C) + + + + Custom Size: + 自訂尺寸: + + + + x + x + + + + &Export + 匯出(&E) + + + + &Close + 關閉(&C) + + + + ImageEditorDialog + + + + Overwrite Image... + 修改圖片... + + + + Import picture + 匯入圖片 + + + + &Import... + 匯入(&I)... + + + + + Apply changes + 套用變更 + + + + + &Overwrite + 修改(&O) + + + + + Discard changes + æ¨æ£„變更 + + + + + &Close + 關閉(&C) + + + + + + + + + Snapmatic Image Editor + Snapmatic 圖片編輯器 + + + + + + Patching of Snapmatic Image failed because of I/O Error + I/O 錯誤,Snapmatic 圖片更新失敗 + + + + + + Patching of Snapmatic Image failed because of Image Error + 圖片錯誤,Snapmatic 圖片更新失敗 + + + + ImportDialog + + + Import... + 匯入... + + + + Picture + 圖片 + + + + Avatar + 大頭貼 + + + + + Ignore Aspect Ratio + 忽略長寬比 + + + + Watermark + æµ®æ°´å° + + + + Background + 背景 + + + + + + + Background Colour: <span style="color: %1">%1</span> + 背景é¡è‰²: <span style="color: %1">%1</span> + + + + Select background colour + é¸æ“‡èƒŒæ™¯é¡è‰² + + + + + ... + ... + + + + + + + Background Image: + 背景圖片: + + + + Select background image + é¸æ“‡èƒŒæ™¯åœ–片 + + + + Remove background image + 移除背景圖片 + + + + X + X + + + + Force Colour in Avatar Zone + 強制在大頭貼å€åŸŸä½¿ç”¨é¡è‰² + + + + Import options + 匯入é¸é … + + + + &Options + é¸é …(&O) + + + + Import picture + 匯入圖片 + + + + &OK + 確定(&O) + + + + Discard picture + æ¨æ£„圖片 + + + + &Cancel + å–消(&C) + + + + &Import new Picture... + 匯入新圖片(&I)... + + + + &Crop Picture... + è£å‰ªåœ–片(&C)... + + + + &Load Settings... + 載入設定(&L)... + + + + &Save Settings... + 儲存設定(&S)... + + + + + Custom Avatar + Custom Avatar Description in SC, don't use Special Character! + 自訂大頭貼 + + + + + Custom Picture + Custom Picture Description in SC, don't use Special Character! + 自訂圖片 + + + + Storage + Background Image: Storage + 儲存 + + + + Crop Picture... + è£å‰ªåœ–片... + + + + &Crop + è£å‰ª(&C) + + + + Crop Picture + è£å‰ªåœ–片 + + + + + Please import a new picture first + 請先匯入新圖片 + + + + + Default + Default as Default Profile + é è¨­ + + + + + + + + + + + + + + + + + + + + + + + Profile %1 + Profile %1 as Profile 1 + 設定檔 %1 + + + + + Load Settings... + 載入設定... + + + + + Save Settings... + 儲存設定... + + + + Snapmatic Avatar Zone + Snapmatic 大頭貼å€åŸŸ + + + + Are you sure to use a square image outside of the Avatar Zone? +When you want to use it as Avatar the image will be detached! + 你確定è¦åœ¨å¤§é ­è²¼å€åŸŸä»¥å¤–的地方使用方形圖片嗎? 作為大頭貼的圖片將被分離! + + + + Select Colour... + é¸æ“‡é¡è‰²... + + + + + Background Image: %1 + 背景圖片: %1 + + + + + Please select your settings profile + è«‹é¸æ“‡è¨­å®šæª” + + + + File + Background Image: File + 文件 + + + + JsonEditorDialog + + + Snapmatic JSON Editor + Snapmatic JSON 編輯器 + + + + Apply changes + 套用變更 + + + + &Save + ä¿å­˜(&S) + + + + Discard changes + æ¨æ£„變更 + + + + &Close + 關閉(&C) + + + + JSON Error + JSON 錯誤 + + + + MapLocationDialog + + + Snapmatic Map Viewer + Snapmatic 地圖檢視器 + + + + Close viewer + 關閉檢視器 + + + + &Close + 關閉(&C) + + + + Apply new position + 套用新ä½ç½® + + + + &Apply + 套用(&A) + + + + Revert old position + 還原舊ä½ç½® + + + + &Revert + 還原(&R) + + + + Select new position + é¸æ“‡æ–°ä½ç½® + + + + &Select + é¸æ“‡(&S) + + + + Quit select position + 離開ä½ç½®é¸æ“‡ + + + + &Done + 完æˆ(&D) + + + + X: %1 +Y: %2 + X and Y position + X: %1 +Y: %2 + + + + OptionsDialog + + + %1 - Settings + %1 - 設定 + + + + Profiles + 設定檔 + + + + Content Open/Select Mode + é–‹å•Ÿ/é¸æ“‡æ¨¡å¼ + + + + Open with Singleclick + 點一次開啟 + + + + Open with Doubleclick + 點兩次開啟 + + + + Select with Singleclick + 點一次é¸å– + + + + Default Profile + é è¨­è¨­å®šæª” + + + + Custom RDR 2 Folder + 自訂 RDR 2 資料夾 + + + + Force using Custom Folder + 強制使用自訂資料夾 + + + + ... + ... + + + + Pictures + 圖片 + + + + Export Size + 匯出尺寸 + + + + Default: %1x%2 + é è¨­: %1x%2 + + + + Screen Resolution: %1x%2 + 螢幕解æžåº¦: %1x%2 + + + + + Custom Size: + 自訂尺寸: + + + + x + x + + + + Ignore Aspect Ratio + 忽略長寬比 + + + + Export Quality + 匯出å“質 + + + + Enable Custom Quality + 啟用自訂å“質 + + + + Quality: + å“質: + + + + %1% + %1% + + + + Picture Viewer + 圖片檢視器 + + + + Enable Navigation Bar + 啟用導航欄 + + + + Players + 玩家 + + + + ID + ID + + + + Name + å稱 + + + + Game + éŠæˆ² + + + + Social Club Version + Social Club 版 + + + + + + + + + + + Found: %1 + 找到: %1 + + + + + + + + + + + + + Language: %1 + 語言: %1 + + + + Steam Version + Steam 版 + + + + Feedback + å饋 + + + + Participation + åƒèˆ‡ + + + + + Participate in %1 User Statistics + åƒèˆ‡ %1 使用者統計 + + + + Categories + 分類 + + + + Hardware, Application and OS Specification + 硬體ã€è»Ÿé«”å’Œ OS è¦æ ¼ + + + + System Language Configuration + 系統語言設定 + + + + Application Configuration + 應用程å¼è¨­å®š + + + + Personal Usage Data + 個人使用數據 + + + + Other + 其他 + + + + + + Participation ID: %1 + åƒèˆ‡ ID: %1 + + + + &Copy + 複製(&C) + + + + Interface + ä»‹é¢ + + + + Language for Interface + 介é¢èªžè¨€ + + + + + + + Current: %1 + ç›®å‰: %1 + + + + Language for Areas + å€åŸŸèªžè¨€ + + + + Style + æ¨£å¼ + + + + Use Default Style (Restart) + 使用é è¨­æ¨£å¼ (需é‡æ–°å•Ÿå‹•) + + + + Style: + 樣å¼: + + + + Font + å­—é«” + + + + Always use Message Font (Windows 2003 and earlier) + 總是使用訊æ¯å­—é«” (Windows 2003 和更早版本) + + + + Apply changes + 套用變更 + + + + &OK + OK, Cancel, Apply + 確定(&O) + + + + Discard changes + æ¨æ£„變更 + + + + &Cancel + OK, Cancel, Apply + å–消(&C) + + + + System + System in context of System default + 系統 + + + + + %1 (Closest to Interface) + Next closest language compared to the Interface + %1 (與介é¢æŽ¥è¿‘的語言) + + + + + + Auto + Automatic language choice. + 自動 + + + + %1 (Language priority) + First language a person can talk with a different person/application. "Native" or "Not Native". + %1 (語言優先) + + + + %1 (Game language) + Next closest language compared to the Game settings + %1 (éŠæˆ²èªžè¨€) + + + + %1 + %1 + %1 + + + + The new Custom Folder will initialise after you restart %1. + 自訂資料夾將在 %1 é‡æ–°å•Ÿå‹•å¾Œåˆå§‹åŒ–. + + + + No Profile + No Profile, as default + ç„¡ + + + + + + Profile: %1 + 設定檔: %1 + + + + View %1 User Statistics Online + 檢視 %1 使用者統計資訊 + + + + Not registered + 未註冊åƒèˆ‡ + + + + + + + Yes + 是 + + + + + No + å¦ + + + + + OS defined + 系統定義 + + + + + Steam defined + Steam 定義 + + + + PictureDialog + + + Snapmatic Picture Viewer - %1 + Snapmatic 圖片檢視器 - %1 + + + + <span style=" font-weight:600;">Title: </span>%6<br/> +<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">Created: </span>%8 + <span style=" font-weight:600;">標題: </span>%6<br/> +<span style=" font-weight:600;">地點: </span>%7 (%1, %2, %3)<br/> +<span style=" font-weight:600;">玩家: </span>%4 (Crew %5)<br/> +<span style=" font-weight:600;">建立於: </span>%8 + + + + Manage picture + 管ç†åœ–片 + + + + &Manage + 管ç†(&M) + + + + Close viewer + 關閉檢視器 + + + + &Close + 關閉(&C) + + + + + Export as &Picture... + 匯出æˆåœ–片(&P)... + + + + + Export as &Snapmatic... + åŒ¯å‡ºæˆ Snapmatic(&S)... + + + + + &Edit Properties... + 編輯屬性(&E) ... + + + + + &Overwrite Image... + 修改圖片(&O)... + + + + + Open &Map Viewer... + 開啟地圖檢視器(&M)... + + + + + Open &JSON Editor... + é–‹å•Ÿ JSON 編輯器(&J)... + + + + Key 1 - Avatar Preview Mode +Key 2 - Toggle Overlay +Arrow Keys - Navigate + æ•¸å­—éµ 1 - 大頭接é è¦½æ¨¡å¼ +æ•¸å­—éµ 2 - é–‹é—œé‡ç–Šå±¤ +æ–¹å‘éµ - 導覽 + + + + + Snapmatic Picture Viewer + Snapmatic 圖片檢視器 + + + + + Failed at %1 + 失敗: %1 + + + + + + No Players + ç„¡ + + + + + No Crew + ç„¡ + + + + Unknown Location + 未知地點 + + + + Avatar Preview Mode +Press 1 for Default View + 大頭貼é è¦½æ¨¡å¼ +按 1 切æ›æ ¼é è¨­æª¢è¦– + + + + Export as Picture... + 匯出æˆåœ–片... + + + + + Export + 匯出 + + + + JPEG Graphics (*.jpg *.jpeg) + JPEG åœ–å½¢æ ¼å¼ (*.jpg *.jpeg) + + + + Portable Network Graphics (*.png) + å¯æ”œå¼ç¶²è·¯åœ–å½¢ (*.png) + + + + + + + + + Export as Picture + 匯出æˆåœ–片 + + + + + Overwrite %1 with current Snapmatic picture? + 確定修改目å‰çš„ Snapmatic 圖片 %1 ? + + + + Failed to export the picture because the system occurred a write failure + 系統寫入失敗,無法匯出圖片 + + + + Failed to export the picture because the format detection failures + æ ¼å¼æª¢æ¸¬å¤±æ•—,無法匯出圖片 + + + + Failed to export the picture because the file can't be written + 文件無法寫入,匯出圖片失敗 + + + + Failed to export the picture because of an unknown reason + 未知的錯誤,無法匯出圖片 + + + + + No valid file is selected + 未é¸æ“‡æœ‰æ•ˆçš„檔案 + + + + Export as Snapmatic... + åŒ¯å‡ºæˆ Snapmatic... + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + RDR 2 Raw Export (*.auto) + RDR 2 Raw Export (*.auto) + + + + Snapmatic pictures (PRDR*) + Snapmatic 圖片 (PRDR*) + + + + + + + + Export as Snapmatic + åŒ¯å‡ºæˆ Snapmatic + + + + + Failed to export current Snapmatic picture + 匯出目å‰çš„ Snapmatic 圖片失敗 + + + + Exported Snapmatic to "%1" because of using the .auto extension. + 因為使用 .auto æ ¼å¼ï¼Œå°‡ Snapmatic 匯出到 "%1". + + + + PlayerListDialog + + + Edit Players... + 編輯玩家... + + + + Available Players: + å¯ç”¨çš„玩家: + + + + Selected Players: + å·²é¸æ“‡çŽ©å®¶: + + + + &Apply + 套用(&A) + + + + &Cancel + å–消(&C) + + + + Add Players... + 新增玩家... + + + + Failed to add more Players because the limit of Players are %1! + 因為數é‡é™åˆ¶ %1,無法新增更多玩家! + + + + + Add Player... + 新增玩家... + + + + Enter Social Club Player ID + 輸入玩家的 Social Club ID + + + + Failed to add Player %1 because Player %1 is already added! + 新增 %1 失敗,因為 %1 已被新增! + + + + ProfileInterface + + + Profile Interface + è¨­å®šæª”ç•Œé¢ + + + + Loading file %1 of %2 files + 載入檔案中 %1 å…± %2 個檔案 + + + + %1 %2 + %1 %2 + + + + Import file + 匯入檔案 + + + + &Import... + 匯入(&I)... + + + + Close profile + 關閉設定檔 + + + + &Close + 關閉(&C) + + + + + + Export file %1 of %2 files + 匯出檔案中 %1 å…± %2 個檔案 + + + + + + + + + + + + + + + + + + + + + + + Import... + 匯入... + + + + + + + + + + + + Import + 匯入 + + + + + + + All image files (%1) + 所有圖片 (%1) + + + + + + + + All files (**) + 所有檔案 (**) + + + + + + + Can't import %1 because file can't be open + 無法匯入 %1,因為檔案無法開啟 + + + + + + + Can't import %1 because file can't be parsed properly + 無法匯入 %1ï¼Œå› ç‚ºæª”æ¡ˆç„¡æ³•æ­£ç¢ºè§£æž + + + + Enabled pictures: %1 of %2 + 開啟圖片 %1 å…± %2 + + + + Loading... + 載入中... + + + + Snapmatic Loader + Snapmatic 載入器 + + + + <h4>Following Snapmatic Pictures got repaired</h4>%1 + <h4>下列的 Snapmatic 圖片已被更新</h4>%1 + + + + Importable files (%1) + å¯åŒ¯å…¥çš„檔案 (%1) + + + + + RDR 2 Export (*.r5e) + RDR 2 Export (*.r5e) + + + + + Savegames files (SRDR*) + éŠæˆ²å­˜æª” (SRDR*) + + + + + Snapmatic pictures (PRDR*) + Snapmatic 圖片 (PRDR*) + + + + + + No valid file is selected + 沒有é¸æ“‡æœ‰æ•ˆçš„檔案 + + + + + Import file %1 of %2 files + 匯入檔案 %1 å…± %2 個 + + + + Import failed with... + +%1 + %1 匯入失敗 + + + + + Failed to read Snapmatic picture + ç„¡æ³•è®€å– Snapmatic 圖片 + + + + + Failed to read Savegame file + 無法讀å–éŠæˆ²å­˜æª” + + + + Can't import %1 because file format can't be detected + 無法匯入 %1ï¼Œå› ç‚ºç„¡æ³•æª¢æ¸¬è©²æª”æ¡ˆæ ¼å¼ + + + + Failed to import the Snapmatic picture, file not begin with PRDR or end with .r5e + 匯入 Snapmatic 圖片失敗,檔案ä¸æ˜¯ PRDR 開頭或附檔åä¸æ˜¯ .r5e + + + + Failed to import the Snapmatic picture, can't copy the file into profile + 匯入 Snapmatic 圖片失敗,無法將該檔案複製到設定檔中 + + + + Failed to import the Savegame, can't copy the file into profile + 匯入éŠæˆ²å­˜æª”失敗,無法將該檔案複製到設定檔中 + + + + Failed to import the Savegame, no Savegame slot is left + 匯入éŠæˆ²å­˜æª”失敗,沒有éŠæˆ²å­˜æª”æ¬„ä½ + + + + + + + + Export selected... + 匯出所é¸... + + + + + JPG pictures and GTA Snapmatic + JPG 圖片和 GTA Snapmatic + + + + + JPG pictures only + åªæœ‰ JPG 圖片 + + + + + GTA Snapmatic only + åªæœ‰ GTA Snapmatic + + + + %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: + %1 匯出 Snapmatic 圖片 %2<br><br>JPG 圖片å¯ä½¿ç”¨åœ–片檢視器開啟<br>GTA Snapmatic å¯ä»¥åŒ¯å…¥åˆ°éŠæˆ²ä¸­<br><br>匯出æˆ: + + + + Initialising export... + åˆå§‹åŒ–... + + + + Export failed with... + +%1 + %1 匯出失敗 + + + + + No Snapmatic pictures or Savegames files are selected + 未é¸æ“‡ Snapmatic 圖片或éŠæˆ²å­˜æª” + + + + + + Remove selected + ç§»é™¤æ‰€é¸ + + + + You really want remove the selected Snapmatic picutres and Savegame files? + 你想移除所é¸çš„ Snapmatic 圖片/存檔嗎? + + + + Failed to remove all selected Snapmatic pictures and/or Savegame files + 無法移除所é¸æ“‡çš„ Snapmatic 圖片/éŠæˆ²å­˜æª” + + + + + + + + + No Snapmatic pictures are selected + 未é¸æ“‡ Snapmatic 圖片 + + + + + + + + + %1 failed with... + +%2 + Action failed with... + %1 失敗... + +%2 + + + + Prepare Content for Import... + 準備匯入內容... + + + + A Snapmatic picture already exists with the uid %1, you want assign your import a new uid and timestamp? + 已有與 uid %1 相åŒçš„ Snapmatic 圖片,你想è¦åŒ¯å…¥æ–°çš„ uid 和時間戳嗎? + + + + + Qualify as Avatar + åˆæ ¼å¤§é ­è²¼ + + + + + + + Patch selected... + 修改所é¸... + + + + + + + + + + + Patch file %1 of %2 files + 修改檔案 %1 å…± %2 個檔案 + + + + Qualify + %1 failed with... + åˆæ ¼ + + + + + Change Players... + 更改玩家... + + + + Change Players + %1 failed with... + 更改玩家 + + + + + + Change Crew... + 更改幫會... + + + + Failed to enter a valid Snapmatic Crew ID + 輸入了無效的幫會 ID + + + + Change Crew + %1 failed with... + 更改幫會 + + + + + + Change Title... + 更改標題... + + + + Failed to enter a valid Snapmatic title + 輸入了無效的標題 + + + + Change Title + %1 failed with... + 更改標題 + + + + All profile files (*.r5e SRDR* PRDR*) + 所有設定檔檔案 (*.r5e SRDR* PRDR*) + + + + QApplication + + + Font + å­—é«” + + + + Selected Font: %1 + é¸æ“‡çš„å­—é«”: %1 + + + + <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? + <h4>歡迎使用 %1!</h4> 你想在開始å‰å…ˆè¨­å®š %1 å—Ž? + + + + SavegameDialog + + + + Savegame Viewer + éŠæˆ²å­˜æª”檢視器 + + + + <span style=" font-weight:600;">Savegame</span><br><br>%1 + <span style=" font-weight:600;">éŠæˆ²å­˜æª”</span><br><br>%1 + + + + &Export + 匯出(&E) + + + + &Close + 關閉(&C) + + + + Failed at %1 + 失敗 %1 + + + + SavegameWidget + + + Savegame Widget + éŠæˆ²å­˜æª”å°å·¥å…· + + + + SAVE %3 - %1<br>%2 + 存檔 %3 - %1<br>%2 + + + + View savegame + 檢視存檔 + + + + View + 檢視 + + + + Copy savegame + 複製存檔 + + + + + Export + 匯出 + + + + Delete savegame + 刪除存檔 + + + + Delete + 刪除 + + + + &View + 檢視(&V) + + + + &Export + 匯出(&E) + + + + &Remove + 移除(&R) + + + + &Select + é¸æ“‡(&S) + + + + &Deselect + å–消é¸æ“‡(&D) + + + + Select &All + é¸æ“‡å…¨éƒ¨(&A) + + + + &Deselect All + å–消é¸æ“‡å…¨éƒ¨(&D) + + + + Savegame files (SRDR*) + éŠæˆ²å­˜æª” (SRDR*) + + + + All files (**) + 所有檔案 (**) + + + + + + + Export Savegame + 匯出存檔 + + + + Overwrite %1 with current Savegame? + 是å¦ä¿®æ”¹ç›®å‰çš„存檔 %1? + + + + Failed to overwrite %1 with current Savegame + éŠæˆ²å­˜æª” %1 修改失敗 + + + + Failed to export current Savegame + 匯出目å‰çš„存檔失敗 + + + + No valid file is selected + 沒有é¸æ“‡æœ‰æ•ˆçš„檔案 + + + + Export Savegame... + 匯出éŠæˆ²å­˜æª”... + + + + + AUTOSAVE - %1 +%2 + 自動存檔 - %1 +%2 + + + + + SAVE %3 - %1 +%2 + 存檔 %3 - %1 +%2 + + + + + WRONG FORMAT + æ ¼å¼éŒ¯èª¤ + + + + UNKNOWN + 未知 + + + + + Delete Savegame + 刪除存檔 + + + + Are you sure to delete %1 from your savegames? + 你確定è¦åˆªé™¤å­˜æª” %1? + + + + Failed at deleting %1 from your savegames + 刪除存檔 %1 失敗 + + + + SnapmaticEditor + + + + + + + + + + + Snapmatic Properties + Snapmatic 屬性 + + + + Snapmatic Type + Snapmatic é¡žåž‹ + + + + Editor + 編輯 + + + + Selfie + è‡ªæ‹ + + + + Regular + 正常 + + + + Mugshot + 犯罪照片 + + + + Meme + Meme + + + + Director + å°Žæ¼” + + + + Snapmatic Values + Snapmatic ä¿¡æ¯ + + + + Extras + 附加功能 + + + + Qualify as Avatar automatically at apply + 自動設定æˆç¬¦åˆè³‡æ ¼çš„圖片 + + + + Qualify as Avatar allows you to use this Snapmatic as a Social Club profile picture + 符åˆè³‡æ ¼çš„圖片將å¯ä»¥è¨­å®šç‚º Social Club 大頭貼 + + + + Apply changes + 套用變更 + + + + &Apply + 套用(&A) + + + + Discard changes + æ¨æ£„變更 + + + + &Cancel + å–消(&C) + + + + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? + <h4>ç›®å‰çš„變更未儲存</h4> 你想è¦åœ¨é€€å‡ºä¹‹å‰å„²å­˜ JSON å—Ž? + + + + Patching of Snapmatic Properties failed because of %1 + æ›´æ–° Snapmatic 屬性失敗,因為 %1 + + + + + + + Patching of Snapmatic Properties failed because of I/O Error + 讀寫錯誤,未能更新 Snapmatic 屬性 + + + + Patching of Snapmatic Properties failed because of JSON Error + JSON 錯誤,未能更新 Snapmatic 屬性 + + + + + Snapmatic Crew + 幫會 + + + + + New Snapmatic crew: + 輸入新的幫會: + + + + + Snapmatic Title + 標題 + + + + + New Snapmatic title: + 輸入新的標題: + + + + + + Edit + 編輯 + + + + Players: %1 (%2) + Multiple Player are inserted here + 玩家: %1 (%2) + + + + Player: %1 (%2) + One Player is inserted here + 玩家: %1 (%2) + + + + Title: %1 (%2) + 標題: %1 (%2) + + + + + Appropriate: %1 + å¯ä½¿ç”¨: %1 + + + + Yes + Yes, should work fine + 是 + + + + No + No, could lead to issues + å¦ + + + + Crew: %1 (%2) + 幫會: %1 (%2) + + + + SnapmaticPicture + + + + JSON is incomplete and malformed + JSON ä¸å®Œæ•´å’Œç•°å¸¸ + + + + + JSON is incomplete + JSON ä¸å®Œæ•´ + + + + + JSON is malformed + JSON 異常 + + + + PHOTO - %1 + 照片 - %1 + + + + open file %1 + 開啟檔案 - %1 + + + + header not exists + 標頭ä¸å­˜åœ¨ + + + + header is malformed + 標頭異常 + + + + picture not exists (%1) + 圖片ä¸å­˜åœ¨ (%1) + + + + JSON not exists (%1) + JSON ä¸å­˜åœ¨ (%1) + + + + title not exists (%1) + 標題ä¸å­˜åœ¨ (%1) + + + + description not exists (%1) + æè¿°ä¸å­˜åœ¨ (%1) + + + + reading file %1 because of %2 + Example for %2: JSON is malformed error + 讀å–檔案 %1 失敗,因為 %2 + + + + SnapmaticWidget + + + Snapmatic Widget + Snapmatic å°å·¥å…· + + + + PHOTO - 00/00/00 00:00:00 + 照片 - 00/00/00 00:00:00 + + + + View picture + 檢視圖片 + + + + View + 檢視 + + + + Copy picture + 複製圖片 + + + + Copy + 複製 + + + + Export picture + 匯出圖片 + + + + Export + 匯出 + + + + + + Delete picture + 刪除圖片 + + + + Delete + 刪除 + + + + Edi&t + 編輯(&E) + + + + Show &In-game + 在éŠæˆ²ä¸­é¡¯ç¤º(&I) + + + + Hide &In-game + 在éŠæˆ²ä¸­éš±è—(&I) + + + + &Export + 匯出(&E) + + + + &View + 檢視(&V) + + + + &Remove + 移除(&R) + + + + &Select + é¸æ“‡(&S) + + + + &Deselect + å–消é¸æ“‡(&D) + + + + Select &All + é¸æ“‡å…¨éƒ¨(&A) + + + + &Deselect All + å–消é¸æ“‡å…¨éƒ¨(&D) + + + + Are you sure to delete %1 from your Snapmatic pictures? + 你確定è¦åˆªé™¤Snapmatic 圖片 %1 å—Ž? + + + + Failed at deleting %1 from your Snapmatic pictures + 刪除 Snapmatic 圖片 %1 失敗 + + + + Failed to hide %1 In-game from your Snapmatic pictures + 在éŠæˆ²ä¸­éš±è—圖片 %1 失敗 + + + + Failed to show %1 In-game from your Snapmatic pictures + 在éŠæˆ²ä¸­é¡¯ç¤ºåœ–片 %1 失敗 + + + + TelemetryDialog + + + You want help %1 to improve in the future by including personal usage data in your submission? + 你希望通éŽæ”¶é›†è³‡æ–™ä¾†å¹«åŠ©æ”¹å–„ %1 å—Ž? + + + + %1 User Statistics + %1 使用者統計 + + + + Yes, I want include personal usage data. + 是的,我想幫忙. + + + + &OK + 確定(&O) + + + + UserInterface + + + + %2 - %1 + %2 - %1 + + + + Select profile + é¸æ“‡è¨­å®šæª” + + + + %1 %2 + %1 %2 + + + + Reload profile overview + é‡æ–°è¼‰å…¥è¨­å®šæª”概述 + + + + &Reload + é‡æ–°è¼‰å…¥(&R) + + + + Close %1 + Close %1 <- (gta5view/gta5sync) - %1 will be replaced automatically + 關閉 %1 + + + + &Close + 關閉(&C) + + + + &File + 檔案(&F) + + + + &Help + 幫助(&H) + + + + &Edit + 編輯(&E) + + + + &Profile + 設定檔(&P) + + + + &Selection visibility + é¸æ“‡å¯è¦‹åº¦(&S) + + + + Selection &mass tools + 工具(&M) + + + + + + &About %1 + 關於 %1(&A) + + + + &Exit + 離開(&E) + + + + Exit + 離開 + + + + Close &Profile + 關閉設定檔(&P) + + + + &Settings + 設定(&S) + + + + Select &All + é¸æ“‡å…¨éƒ¨(&A) + + + + &Deselect All + å–消é¸æ“‡å…¨éƒ¨(&D) + + + + &Export selected... + 匯出所é¸(&E)... + + + + &Remove selected + 移除所é¸(&R) + + + + &Import files... + 匯入檔案(&I)... + + + + &Open File... + 開啟檔案(&O)... + + + + + Select &RDR 2 Folder... + é¸æ“‡ RDR 2 資料夾(&G)... + + + + + + + Select RDR 2 Folder... + é¸æ“‡ RDR 2 資料夾... + + + + Show In-gam&e + 在éŠæˆ²ä¸­é¡¯ç¤º(&E) + + + + Hi&de In-game + 在éŠæˆ²ä¸­éš±è—(&D) + + + + Change &Title... + 更改標題(&T)... + + + + Change &Crew... + 更改幫會(&C)... + + + + &Qualify as Avatar + 符åˆå¤§é ­è²¼è³‡æ ¼(&Q) + + + + Change &Players... + 更改玩家(&P)... + + + + + + Show In-game + 在éŠæˆ²ä¸­é¡¯ç¤º + + + + + + Hide In-game + 在éŠæˆ²ä¸­éš±è— + + + + + + Select Profile + é¸æ“‡è¨­å®šæª” + + + + Open File... + 開啟檔案... + + + + + + + Open File + 開啟檔案 + + + + Can't open %1 because of not valid file format + æ ¼å¼ç„¡æ•ˆï¼Œç„¡æ³•é–‹å•Ÿ %1 + + + diff --git a/res/gta5view.png b/res/gta5view.png new file mode 100644 index 0000000000000000000000000000000000000000..3e955a6af6337f1cc6e121f34518f90be1c60542 GIT binary patch literal 13479 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 literal 0 HcmV?d00001 diff --git a/res/mappreview.jpg b/res/mappreview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00496923d32fe9af67c6dfe55df3d105359cb1ab GIT binary patch literal 207939 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
cnf^T}eP!43sW# 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%0D5q4Vta9Ob0n+GyXDDWFG$oKoGne}40jk5TovFt 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 Kap9-_hyU5!Uw`5N literal 0 HcmV?d00001 diff --git a/res/next.svgz b/res/next.svgz new file mode 100644 index 0000000000000000000000000000000000000000..0203d84fe5a33a030b4fc782e457136fc5e94180 GIT binary patch literal 453 zcmV;$0XqI4iwFP!000000F6>jZ<{a}zV}yH-f;nAQj)@eO4C$n(oXwOkCS7+Ay&ag zwgchc&xWLQQV&H!vY#*eedO}-(zR#+W2IIVrg4H1D6WN6O@;sbeu^G2vW_XiTCJeM zO5?}+uCzmQhY<2+WedS8d~&WY2{RyC8?h0`SM@lK@wlBuG|zLAq$EuvuZZlV9J@sSTm2p1v!+Rs5YMg3kEjaUGw$c_ z4OlP(%=jpUJ5@NNX@8l4LBjY|Un-oS1bI083$Zp#XTZ9t^>Lusp@rzc_)BB-S&2fy zh~Bur%xWnr{DVzk{x0ql$mZm3C)Z^MjtS;i;1=}_$vx{EDt>-@s!Ps`XKh{6e`#of1 zM3yY+TBzp}Zp-T>{p$7Jz|pQ#hTVS7>UBFcTCLO-Sn5Zp*U~>l-~TSzP@2W} vh(09oev|LeHcK~Ywz~rN)UUi~oA2U1+R`M>W_CU$R8s!~=%{;yGy?zt>QUx_ literal 0 HcmV?d00001 diff --git a/res/pointmaker-16.png b/res/pointmaker-16.png new file mode 100644 index 0000000000000000000000000000000000000000..f038879a7b63e483dd380627ae05a712394c6767 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_qJzX3_ zEKZ-jY@2o1LEz}e`Mq4S2iXHAK3;iYZOF2-yfHTxB=5L$h*4Ut)&1NpjU!6FV)x!1 zI`e;{yp5ou(gMeRTfGkT*iF|K?=0qgUl7qycZqR#imCA(LFK?5mEl^EujPEDDwn+I zxXkop&E>_O`tL;_bAMR#@peLf-G)tv7KHHcK6y4b%Ft|Q-rvGM{LR`m>l#+wdoAYv zBO)>2t6ZYPp1nV&s#bq~%$8wzR_*Ean++c&nDJ&e{Lvy awvWNj>qW3}8dpBhTMVAAelF{r5}E*St$EA< literal 0 HcmV?d00001 diff --git a/res/pointmaker-24.png b/res/pointmaker-24.png new file mode 100644 index 0000000000000000000000000000000000000000..87e96693463aa672131460b3073bc3907c38899c GIT binary patch literal 353 zcmV-n0iOPeP)HN1&ukxe_fs$4I%y;1b)1E@kK_ z;11p{NJFtR;6x4^fvI*!`icwtJYL(Pm=qB+TikHJV~u=N;?)8 zLE!qwRi?liU<)jGy%x&ST4PtSjj(%5>s{eQ2Xw%UICTN$I=%^nxRvNP<<0dk_#=Wd zz#$^kW1UlA5AYRH;IZ~^f9&kJZUEUt5Nz)7#_tD30^cTiw&56DS;eqru1u1Fd`^5} zTb-Nr;j6KxU)XUynZ|Y=6a;=-P7|P~N53ssl6o7Z?XalH00000NkvXXu0mjf22qnB literal 0 HcmV?d00001 diff --git a/res/pointmaker-32.png b/res/pointmaker-32.png new file mode 100644 index 0000000000000000000000000000000000000000..de591b16cb6ea7e143d2271f8ce8d891eaf51df3 GIT binary patch literal 475 zcmV<10VMv3P)VK~z}7?Uy}n!axv4-&!sxQjk035FEgzJ18hzZ~zKQ?!W;kC^$ii zh&ECRiqN@8I=F))ITCb}f^{@r+Xy5tG#+Ur+uGgt?T=UA7!jc7!`PMV*aHknT)5$V@iFlz zASuK5Kv;Ofkv5DA5Aa3Rl#X0mzSa#UE!y%)6~3;k3wprTEllPhpCI`S(A@T!*B2&R zpx0EI_1u+cIoBFq5uk*O^ucT)_r;!HEKX|*)fiX-U%>GO;L-M3*)hT<&L4@6EF#DC ROA`P9002ovPDHLkV1o2;$!h=r literal 0 HcmV?d00001 diff --git a/res/pointmaker-8.png b/res/pointmaker-8.png new file mode 100644 index 0000000000000000000000000000000000000000..5c0e65342bf20a2149c9dbe1867d2df35ea793f6 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqY)RhkE)4%caKYZ?lYt^Bo-U3d z5|>-gZ{%%p;BmRge$g$O@yphmV%|=Q7Z^kgSlk-~F4bnLWbb2+7Rs2)>-cWxUBB5D zVw0@7XIfkc*|xk!FLc|%^*>S$yx>nxjkiD2b!y#(^mE@Q8mBMxUUcDpzF3uzc(AO^ VX;aVjaX|YRJYD@<);T3K0RW%sK8gSU literal 0 HcmV?d00001 diff --git a/res/qt_de.qm b/res/qt_de.qm new file mode 100644 index 0000000000000000000000000000000000000000..113bbcc3989b697d4811c0fdb671db9175e244d7 GIT binary patch literal 325046 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�)JFj2Yuj5OR> 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

NG;WcZ)Tnq0Rl0q5 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 literal 0 HcmV?d00001 diff --git a/res/qt_fr.qm b/res/qt_fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..be99664feb45d87f1db398859906ba00e253b6b7 GIT binary patch literal 254997 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�n0O6+6Dp<8_HGC>W2Cg3@z6j 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 D50I1r literal 0 HcmV?d00001 diff --git a/res/qt_ko.qm b/res/qt_ko.qm new file mode 100644 index 0000000000000000000000000000000000000000..e3d12319330953db14824c0d87d0c72b18a00cd0 GIT binary patch literal 241758 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

+C&7(OqVsW>}Yd#pi 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 literal 0 HcmV?d00001 diff --git a/res/qt_ru.qm b/res/qt_ru.qm new file mode 100644 index 0000000000000000000000000000000000000000..d9baf23c7308a54ce43e11d0645ec4c5c983af27 GIT binary patch literal 288266 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

sJe5kF>x;i*s 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�U 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 Ls{G6O(NF(B>M&jF literal 0 HcmV?d00001 diff --git a/res/qt_zh_TW.qm b/res/qt_zh_TW.qm new file mode 100644 index 0000000000000000000000000000000000000000..a9a25b2048a132c19fba9b5a275db64c18dca756 GIT binary patch literal 117253 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 <^ilqiYg}HZ74Yk+RCEd${ciu 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 literal 0 HcmV?d00001 diff --git a/res/qtbase_en_GB.qm b/res/qtbase_en_GB.qm new file mode 100644 index 0000000000000000000000000000000000000000..f88ef8869e2c72f1c18f44a93d77208331255171 GIT binary patch literal 941 zcma)4&npB`9RKbvyV`asQqrcUc$bmlD5;$xyG53fv**pjFlM&-QIbDElyXoGE_)|e zi4=#8a^xZ>7Z*8`;yX)fGi%JZdEfVa-|zc;zCYgJvDS9|vcG%NnK_>=oju3^Py}gf z4IokiY0uYXkjihUpJ8Hs6CipNJ>2o_&e+}N1=_cD`BfF~LEZMf?^hD@ea-04HRNC3 z(OybEoerS;HPw6dhP6J+mIR33Pt7*iwh~hb}wL%ojuxuxRp44PzKddvuT8Q`z8Dx-wA*K!-5jmp$ zMod$gIXWl&52Ox6s?IJLtC4=ERTJz3zn@|fbkr8Y90*9iDlSfQ)8k`7VOS+aDO4(4 z#u`9Sw3!xkzD!i^Q-Ad@jK7{v2`z}eD$9DRGWQ=*Gt3B$YRXchxX1`! zWTq*? + + + + + + Intro + + + + Introx + + + + + AddDialog + + Add a Contact + + + + + AddTorrentDialog + + Choose a torrent file + + + + Torrents (*.torrent);; All files (*.*) + + + + Choose a destination directory + + + + + AddTorrentFile + + Add a torrent + + + + Select a torrent source + + + + Destination: + + + + Tracker URL: + + + + Browse + + + + File(s): + + + + Size: + + + + Creator: + + + + <none> + + + + Torrent file: + + + + Comment: + + + + 0 + + + + &OK + + + + &Cancel + + + + + AddressBook + + Name: + + + + Address: + + + + Simple Address Book + + + + &Add + + + + &Submit + + + + &Cancel + + + + Empty Field + + + + Please enter a name and address. + + + + Add Successful + + + + "%1" has been added to your address book. + + + + Add Unsuccessful + + + + Sorry, "%1" is already in your address book. + + + + &Next + + + + &Previous + + + + &Edit + + + + &Remove + + + + Edit Successful + + + + "%1" has been edited in your address book. + + + + Edit Unsuccessful + + + + Confirm Remove + + + + Are you sure you want to remove "%1"? + + + + Remove Successful + + + + "%1" has been removed from your address book. + + + + &Find + + + + Contact Not Found + + + + Sorry, "%1" is not in your address book. + + + + &Load... + + + + Load contacts from a file + + + + &Save... + + + + Save contacts to a file + + + + Save Address Book + + + + Address Book (*.abk);;All Files (*) + + + + Unable to open file + + + + Open Address Book + + + + No contacts in file + + + + The file you are attempting to open contains no contacts. + + + + E&xport + + + + Export as vCard + + + + Export Contact + + + + vCard Files (*.vcf);;All Files (*) + + + + Export Successful + + + + "%1" has been exported as a vCard. + + + + + AddressWidget + + Duplicate Name + + + + The name "%1" already exists. + + + + Edit a Contact + + + + Unable to open file + + + + No contacts in file + + + + The file you are attempting to open contains no contacts. + + + + + AnalogClock + + Analog Clock + + + + + ApplicationsTab + + Open with: + + + + Application %1 + + + + Always use this application to open this type of file + + + + Always use this application to open files with the extension '%1' + + + + + BasicToolsPlugin + + Pencil + + + + Air Brush + + + + Random Letters + + + + Circle + + + + Star + + + + Text... + + + + Text Shape + + + + Enter text: + + + + Qt + + + + Invert Pixels + + + + Swap RGB + + + + Grayscale + + + + + BearerMonitor + + BearerMonitor + + + + System State + + + + Online State: + + + + Configurations + + + + Name: + + + + State: + + + + Type: + + + + Invalid + + + + Purpose: + + + + Unknown + + + + Identifier: + + + + Roaming: + + + + Children: + + + + Network Location Awareness + + + + Register + + + + Unregister + + + + New Session + + + + Delete Session + + + + Scan + + + + %p% + + + + 1 + + + + Sessions + + + + Session 1 + + + + Online + + + + Offline + + + + Active + + + + Discovered + + + + Defined + + + + Undefined + + + + Internet Access Point + + + + Service Network + + + + User Choice + + + + Public + + + + Private + + + + Service Specific + + + + Available + + + + Not available + + + + + BlockingClient + + &Server name: + + + + S&erver port: + + + + This examples requires that you run the Fortune Server example as well. + + + + Get Fortune + + + + Quit + + + + Blocking Fortune Client + + + + The host was not found. Please check the host and port settings. + + + + The connection was refused by the peer. Make sure the fortune server is running, and check that the host name and port settings are correct. + + + + The following error occurred: %1. + + + + + BookWindow + + Books + + + + Details + + + + <b>Title:</b> + + + + <b>Author: </b> + + + + <b>Genre:</b> + + + + <b>Year:</b> + + + + <b>Rating:</b> + + + + Author Name + + + + Genre + + + + Title + + + + Year + + + + Rating + + + + + Browser + + Qt SQL Browser + + + + SQL Query + + + + &Clear + + + + &Submit + + + + &Insert Row + + + + Inserts a new Row + + + + &Delete Row + + + + Deletes the current Row + + + + Submit on &Field Change + + + + Commit on Field Change + + + + Submit on &Row Change + + + + Commit on Row Change + + + + Submit &Manually + + + + Commit Manually + + + + &Submit All + + + + Submit Changes + + + + &Revert All + + + + Revert + + + + S&elect + + + + Refresh Data from Database + + + + No database drivers found + + + + This demo requires at least one Qt database driver. Please check the documentation how to build the Qt SQL plugins. + + + + Ready. + + + + Query OK. + + + + Query OK, number of affected rows: %1 + + + + Unable to open database + + + + An error occurred while opening the connection: + + + + About + + + + The SQL Browser demonstration shows how a data browser can be used to visualize the results of SQLstatements on a live database + + + + + Calculator + + . + + + + ± + + + + Backspace + + + + Clear + + + + Clear All + + + + MC + + + + MR + + + + MS + + + + M+ + + + + ÷ + + + + × + + + + - + + + + + + + + + Sqrt + + + + x² + + + + 1/x + + + + = + + + + Calculator + + + + #### + + + + + CertificateInfo + + Display Certificate Information + + + + Certification Path + + + + Certificate Information + + + + %1%2 (%3) + + + + Issued by: + + + + Organization: %1 + + + + Subunit: %1 + + + + Country: %1 + + + + Locality: %1 + + + + State/Province: %1 + + + + Common Name: %1 + + + + Issuer Organization: %1 + + + + Issuer Unit Name: %1 + + + + Issuer Country: %1 + + + + Issuer Locality: %1 + + + + Issuer State/Province: %1 + + + + Issuer Common Name: %1 + + + + + ChatDialog + + Chat + + + + Message: + + + + ! Unknown command: %1 + + + + * %1 has joined + + + + * %1 has left + + + + Launch several instances of this program on your local network and start chatting! + + + + + ChatMainWindow + + Qt D-Bus Chat + + + + Messages sent and received from other users + + + + Message: + + + + Sends a message to other people + + + + Send + + + + Help + + + + File + + + + Quit + + + + Ctrl+Q + + + + About Qt... + + + + Change nickname... + + + + Ctrl+N + + + + + ChipTester + + Chip Example + + + + + ClassInfoPage + + Class Information + + + + Specify basic information about the class for which you want to generate skeleton source code files. + + + + &Class name: + + + + B&ase class: + + + + Generate Q_OBJECT &macro + + + + C&onstructor + + + + &QObject-style constructor + + + + Q&Widget-style constructor + + + + &Default constructor + + + + &Generate copy constructor and operator= + + + + + ClassWizard + + Class Wizard + + + + + Client + + &Server name: + + + + This examples requires that you run the Fortune Server example as well. + + + + Get Fortune + + + + Quit + + + + Fortune Client + + + + The host was not found. Please check the host name and port settings. + + + + The connection was refused by the peer. Make sure the fortune server is running, and check that the host name and port settings are correct. + + + + The following error occurred: %1. + + + + S&erver port: + + + + Opening network session. + + + + + CloseButton + + Close Tab + + + + + CodeStylePage + + Code Style Options + + + + Choose the formatting of the generated code. + + + + &Start generated files with a comment + + + + &Protect header file against multiple inclusions + + + + &Macro name: + + + + &Include base class definition + + + + Base class include: + + + + + ColorDock + + Size Hint: + + + + Min Size Hint: + + + + Max Size: + + + + Dock Widget Max Size: + + + + + ColorSwatch + + Closable + + + + Movable + + + + Floatable + + + + Vertical title bar + + + + Floating + + + + Allow on Left + + + + Allow on Right + + + + Allow on Top + + + + Allow on Bottom + + + + Place on Left + + + + Place on Right + + + + Place on Top + + + + Place on Bottom + + + + Tab into + + + + Split horizontally into + + + + Split vertically into + + + + Modified + + + + Raise + + + + Change Size Hints... + + + + + CompositionWidget + + Composition Modes + + + + Mode + + + + Clear + + + + Source + + + + Destination + + + + Source Over + + + + Destination Over + + + + Source In + + + + Dest In + + + + Source Out + + + + Dest Out + + + + Source Atop + + + + Dest Atop + + + + Xor + + + + Plus + + + + Multiply + + + + Screen + + + + Overlay + + + + Darken + + + + Lighten + + + + Color Dodge + + + + Color Burn + + + + Hard Light + + + + Soft Light + + + + Difference + + + + Exclusion + + + + Circle color + + + + Circle alpha + + + + Show Source + + + + Use OpenGL + + + + What's This? + + + + Animated + + + + + ConclusionPage + + Conclusion + + + + Click %1 to generate the class skeleton. + + + + Complete Your Registration + + + + I agree to the terms of the license + + + + <u>Evaluation License Agreement:</u> You can use this software for 30 days and make one backup, but you are not allowed to distribute it. + + + + <u>First-Time License Agreement:</u> You can use this software subject to the license you will receive by email. + + + + <u>Upgrade License Agreement:</u> This software is licensed under the terms of your current license. + + + + &Print + + + + Print License + + + + As an environmentally friendly measure, the license text will not actually be printed. + + + + + ConfigDialog + + Close + + + + Config Dialog + + + + Configuration + + + + Update + + + + Query + + + + + ConfigurationPage + + Server configuration + + + + Server: + + + + Qt (Australia) + + + + Qt (Germany) + + + + Qt (Norway) + + + + Qt (People's Republic of China) + + + + Qt (USA) + + + + + Connection + + undefined + + + + unknown + + + + + ConnectionWidget + + database + + + + Refresh + + + + Show Schema + + + + + Controller + + Controller + + + + Decelerate + + + + Accelerate + + + + Right + + + + Left + + + + + ControllerWindow + + &Quit + + + + Window Flags + + + + Type + + + + Window + + + + Dialog + + + + Sheet + + + + Drawer + + + + Popup + + + + Tool + + + + Tooltip + + + + Splash screen + + + + Hints + + + + MS Windows fixed size dialog + + + + X11 bypass window manager + + + + Frameless window + + + + No drop shadow + + + + Window title + + + + Window system menu + + + + Window minimize button + + + + Window maximize button + + + + Window close button + + + + Window context help button + + + + Window shade button + + + + Window stays on top + + + + Window stays on bottom + + + + Customize window + + + + + CreateDockWidgetDialog + + Add Dock Widget + + + + Object name: + + + + Location: + + + + Top + + + + Left + + + + Right + + + + Bottom + + + + Restore + + + + + DetailsDialog + + Name: + + + + Address: + + + + Send information about products and special offers + + + + T-shirt + + + + Badge + + + + Reference book + + + + Coffee cup + + + + Incomplete Form + + + + The form does not contain all the necessary information. +Do you want to discard it? + + + + + DetailsPage + + Fill In Your Details + + + + Please fill all three fields. Make sure to provide a valid email address (e.g., tanaka.aya@example.co.jp). + + + + &Company name: + + + + &Email address: + + + + &Postal address: + + + + + Dialog + + Dialog + + + + Load Image From File... + + + + Launch two of these dialogs. In the first, press the top button and load an image from a file. In the second, press the bottom button and display the loaded image from shared memory. + + + + Display Image From Shared Memory + + + + SharedMemory Example + + + + Select an image file + + + + Images (*.png *.xpm *.jpg) + + + + Selected file is not an image, please select another. + + + + Unable to create shared memory segment. + + + + Unable to attach to shared memory segment. +Load an image first. + + + + Unable to detach from shared memory. + + + + Http authentication required + + + + You need to supply a Username and a Password to access this site + + + + Username: + + + + Password: + + + + Site: + + + + %1 at %2 + + + + Client ready + + + + Server ready + + + + &Start + + + + &Quit + + + + Loopback + + + + Unable to start the test: %1. + + + + Listening + + + + Connecting + + + + Accepted connection + + + + Connected + + + + Received %1MB + + + + Sent %1MB + + + + Network error + + + + The following error occurred: %1. + + + + Quit + + + + Threaded Fortune Server + + + + Unable to start the server: %1. + + + + The server is running on + +IP: %1 +port: %2 + +Run the Fortune Client example now. + + + + Add Album + + + + Please provide both the name of the artist and the title of the album. + + + + Artist: + + + + Title: + + + + Year: + + + + Tracks (separated by comma): + + + + &Close + + + + &Revert + + + + &Submit + + + + <p>Message boxes have a caption, a text, and any number of buttons, each with standard or custom texts.<p>Click a button to close the message box. Pressing the Esc button will activate the detected escape button (if any). + + + + If a message box has detailed text, the user can reveal it by pressing the Show Details... button. + + + + Options + + + + QInputDialog::get&Int() + + + + QInputDialog::get&Double() + + + + QInputDialog::getIte&m() + + + + QInputDialog::get&Text() + + + + QInputDialog::get&MultiLineText() + + + + QColorDialog::get&Color() + + + + QFontDialog::get&Font() + + + + QFileDialog::getE&xistingDirectory() + + + + QFileDialog::get&OpenFileName() + + + + QFileDialog::&getOpenFileNames() + + + + QFileDialog::get&SaveFileName() + + + + QMessageBox::critica&l() + + + + QMessageBox::i&nformation() + + + + QMessageBox::&question() + + + + QMessageBox::&warning() + + + + QErrorMessage::showM&essage() + + + + Input Dialogs + + + + Do not use native dialog + + + + Show alpha channel + + + + No buttons + + + + Color Dialog + + + + Show scalable fonts + + + + Show non scalable fonts + + + + Show monospaced fonts + + + + Show proportional fonts + + + + Font Dialog + + + + Show directories only + + + + Do not resolve symlinks + + + + Do not confirm overwrite + + + + Do not use sheet + + + + Readonly + + + + Hide name filter details + + + + Do not use custom directory icons (Windows) + + + + File Dialogs + + + + Message Boxes + + + + QInputDialog::getInteger() + + + + Percentage: + + + + %1% + + + + QInputDialog::getDouble() + + + + Amount: + + + + Spring + + + + Summer + + + + Fall + + + + Winter + + + + QInputDialog::getItem() + + + + Season: + + + + QInputDialog::getText() + + + + User name: + + + + QInputDialog::getMultiLineText() + + + + Address: + + + + QFileDialog::getExistingDirectory() + + + + QFileDialog::getOpenFileName() + + + + All Files (*);;Text Files (*.txt) + + + + QFileDialog::getOpenFileNames() + + + + QFileDialog::getSaveFileName() + + + + QMessageBox::critical() + + + + Abort + + + + Retry + + + + Ignore + + + + QMessageBox::information() + + + + OK + + + + Escape + + + + QMessageBox::question() + + + + Yes + + + + No + + + + Cancel + + + + QMessageBox::warning() + + + + Save &Again + + + + &Continue + + + + Save Again + + + + Continue + + + + This dialog shows and remembers error messages. If the checkbox is checked (as it is by default), the shown message will be shown again, but if the user unchecks the box the message will not appear again if QErrorMessage::showMessage() is called with the same message. + + + + If the box is unchecked, the message won't appear again. + + + + Standard Dialogs + + + + SIP Dialog Example + + + + Open and close the SIP + + + + This dialog resizes if the SIP is opened + + + + Close Dialog + + + + This widget takes up all the remaining space in the top-level layout. + + + + Basic Layouts + + + + &File + + + + E&xit + + + + Horizontal layout + + + + Button %1 + + + + Grid layout + + + + Line %1: + + + + This widget takes up about two thirds of the grid layout. + + + + Form layout + + + + Line 1: + + + + Line 2, long text: + + + + Line 3: + + + + Dynamic Layouts + + + + Dynamic Layouts Help + + + + This example shows how to change layouts dynamically. + + + + Rotable Widgets + + + + Orientation of buttons: + + + + Horizontal + + + + Vertical + + + + Rotate &Widgets + + + + Hello world! + + + + Wiggly + + + + + Dials + + Form + + + + + DigitalClock + + Digital Clock + + + + + DomModel + + Name + + + + Attributes + + + + Value + + + + + DragWidget + + Draggable Text + + + + Fridge Magnets + + + + + DropArea + + <drop content> + + + + Cannot display data + + + + + DropSiteWindow + + This example accepts drags from other applications and displays the MIME types provided by the drag object. + + + + Format + + + + Content + + + + Clear + + + + Quit + + + + Drop Site + + + + + EchoWindow + + Send Message + + + + Message: + + + + Answer: + + + + + EmbeddedDialog + + Embedded Dialog + + + + Layout Direction: + + + + Left to Right + + + + Right to Left + + + + Select Font: + + + + Style: + + + + Layout spacing: + + + + + EvaluatePage + + Evaluate <i>Super Product One</i>&trade; + + + + Please fill both fields. Make sure to provide a valid email address (e.g., john.smith@example.com). + + + + N&ame: + + + + &Email address: + + + + + ExtraFiltersPlugin + + Flip Horizontally + + + + Flip Vertically + + + + Smudge... + + + + Threshold... + + + + Smudge Filter + + + + Enter number of iterations: + + + + Threshold Filter + + + + Enter threshold: + + + + + FadeMessage + + Press me + + + + + FileManager + + Failed to create directory %1 + + + + Failed to open/create file %1: %2 + + + + Failed to resize file %1: %2 + + + + Failed to read from file %1: %2 + + + + Failed to read from file %1 (read %3 bytes): %2 + + + + Failed to write to file %1: %2 + + + + + FilterWidget + + Case Sensitive + + + + + FindDialog + + Find &what: + + + + Match &case + + + + Search from &start + + + + &Find + + + + &More + + + + &Whole words + + + + Search &backward + + + + Search se&lection + + + + Extension + + + + Enter the name of a contact: + + + + Find a Contact + + + + Empty Field + + + + Please enter a name. + + + + + Form + + Form + + + + QFrame { +background-color: #45629a; +} + +QLabel { +color: white; +} + + + + Powered by FlightView + + + + background-color: white; +color: #45629a; + + + + Ready + + + + color: black; +border: 1px solid black; +background: white; +selection-background-color: lightgray; + + + + color: rgb(255, 255, 255); +background-color: rgb(85, 85, 255); +padding: 2px; +border: 2px solid rgb(0, 0, 127); + + + + Search + + + + QFrame { border: 2px solid white; +border-radius: 10px; +margin: 5px; +background-color: rgba(69, 98, 154, 192); } + + + + color: white; +border: none; +background-color: none; + + + + Secure Socket Client + + + + Host name: + + + + www.qt.io + + + + Port: + + + + Active session + + + + Connect to host + + + + Cryptographic Cipher: + + + + <none> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;"></p></body></html> + + + + Input: + + + + &Send + + + + Easing curves + + + + Path type + + + + Line + + + + buttonGroup + + + + Circle + + + + Properties + + + + Period + + + + Overshoot + + + + Amplitude + + + + BackSide + + + + Settings + + + + Title: + + + + Pad Navigator Example + + + + Modified: + + + + Extent + + + + Other input + + + + Widgets On Graphics View + + + + QGraphicsProxyWidget + + + + QGraphicsWidget + + + + QObject + + + + QGraphicsItem + + + + QGraphicsLayoutItem + + + + QGraphicsGridLayout + + + + QGraphicsLayout + + + + QGraphicsLinearLayout + + + + + FortuneServer + + You've been leading a dog's life. Stay off the furniture. + + + + You've got to think about tomorrow. + + + + You will be surprised by a loud noise. + + + + You will feel hungry again in another hour. + + + + You might have mail. + + + + You cannot kill time without injuring eternity. + + + + Computers are not intelligent. They only think they are. + + + + + GeneralTab + + File Name: + + + + Path: + + + + Size: + + + + %1 K + + + + Last Read: + + + + Last Modified: + + + + + GradientWidget + + Gradients + + + + Color Editor + + + + Gradient Type + + + + Linear Gradient + + + + Radial Gradient + + + + Conical Gradient + + + + Spread Method + + + + Pad Spread + + + + Reflect Spread + + + + Repeat Spread + + + + Defaults + + + + 1 + + + + 2 + + + + 3 + + + + Reset + + + + Show Source + + + + Use OpenGL + + + + What's This? + + + + + GraphWidget + + Elastic Nodes + + + + Click and drag the nodes around, and zoom with the mouse wheel or the '+' and '-' keys + + + + + GraphicsView + + Boxes + + + + + HttpWindow + + Please enter the URL of a file you want to download. + + + + + + Download + + + + HTTP + + + + &URL: + + + + &Download directory: + + + + Default &file: + + + + Quit + + + + Downloading %1... + + + + Error + + + + Invalid URL: %1: %2 + + + + Overwrite Existing File + + + + There already exists a file called %1 in the current directory. Overwrite? + + + + Unable to save the file %1: %2. + + + + Download canceled. + + + + Download failed: +%1. + + + + Redirect + + + + Redirect to %1 ? + + + + Downloaded %1 bytes to %2 +in +%3 + + + + %1 at %2 + + + + SSL Errors + + + + One or more SSL errors has occurred: +%1 + + + + + IconPreviewArea + + Normal + + + + Active + + + + Disabled + + + + Selected + + + + Off + + + + On + + + + <b>%1</b> + + + + Size: %1x%2 +Actual size: %3x%4 +Device pixel ratio: %5 + + + + + IconSizeSpinBox + + (\d+)(\s*[xx]\s*\d+)? + + + + %1 x %1 + + + + + ImageComposer + + SourceOver + + + + DestinationOver + + + + Clear + + + + Source + + + + Destination + + + + SourceIn + + + + DestinationIn + + + + SourceOut + + + + DestinationOut + + + + SourceAtop + + + + DestinationAtop + + + + Xor + + + + Plus + + + + Multiply + + + + Screen + + + + Overlay + + + + Darken + + + + Lighten + + + + ColorDodge + + + + ColorBurn + + + + HardLight + + + + SoftLight + + + + Difference + + + + Exclusion + + + + = + + + + Image Composition + + + + Choose Source Image + + + + Choose Destination Image + + + + + ImageViewer + + Cannot load %1: %2 + + + + Opened "%1", %2x%3, Depth: %4 + + + + Cannot write %1: %2 + + + + Wrote "%1" + + + + Open File + + + + Save File As + + + + No image in clipboard + + + + Obtained image from clipboard, %1x%2, Depth: %3 + + + + About Image Viewer + + + + <p>The <b>Image Viewer</b> example shows how to combine QLabel and QScrollArea to display an image. QLabel is typically used for displaying a text, but it can also display an image. QScrollArea provides a scrolling view around another widget. If the child widget exceeds the size of the frame, QScrollArea automatically provides scroll bars. </p><p>The example demonstrates how QLabel's ability to scale its contents (QLabel::scaledContents), and QScrollArea's ability to automatically resize its contents (QScrollArea::widgetResizable), can be used to implement zooming and scaling features. </p><p>In addition the example shows how to use QPainter to print an image.</p> + + + + &File + + + + &Open... + + + + &Save As... + + + + &Print... + + + + E&xit + + + + Ctrl+Q + + + + &Edit + + + + &Copy + + + + &Paste + + + + &View + + + + Zoom &In (25%) + + + + Zoom &Out (25%) + + + + &Normal Size + + + + Ctrl+S + + + + &Fit to Window + + + + Ctrl+F + + + + &Help + + + + &About + + + + About &Qt + + + + Image Viewer + + + + [file] + + + + Image file to open. + + + + + Images + + Image loading and scaling example + + + + Open Images + + + + Cancel + + + + Pause/Resume + + + + Select Images + + + + + InformationWindow + + Item: + + + + Description: + + + + Image file: + + + + &Close + + + + &Revert + + + + &Submit + + + + + IntroPage + + Introduction + + + + This wizard will generate a skeleton C++ class definition, including a few functions. You simply need to specify the class name and set a few options to produce a header file and an implementation file for your new C++ class. + + + + This wizard will help you register your copy of <i>Super Product One</i>&trade; or start evaluating the product. + + + + &Register your copy + + + + &Evaluate the product for 30 days + + + + + ItemDialog + + Items (double click to flip) + + + + Add Qt box + + + + Add circle + + + + Add square + + + + + LicenseWizard + + License Wizard + + + + The decision you make here will affect which page you get to see next. + + + + Make sure to provide a valid email address, such as toni.buddenbrook@example.de. + + + + If you don't provide an upgrade key, you will be asked to fill in your details. + + + + Make sure to provide a valid email address, such as thomas.gradgrind@example.co.uk. + + + + You must accept the terms and conditions of the license to proceed. + + + + This help is likely not to be of any help. + + + + Sorry, I already gave what help I could. Maybe you should try asking a human? + + + + License Wizard Help + + + + + LocationDialog + + Native + + + + INI + + + + User + + + + System + + + + QtProject + + + + Any + + + + Qt Creator + + + + Application Example + + + + Assistant + + + + Designer + + + + Linguist + + + + &Format: + + + + &Scope: + + + + &Organization: + + + + &Application: + + + + Setting Locations + + + + Location + + + + Access + + + + Open Application Settings + + + + Read-write + + + + Read-only + + + + Read-only fallback + + + + + MAC_APPLICATION_MENU + + Services + + + + Hide %1 + + + + Hide Others + + + + Show All + + + + Preferences... + + + + Quit %1 + + + + About %1 + + + + + MainWindow + + Torrent + + + + Peers/Seeds + + + + Progress + + + + Down rate + + + + Up rate + + + + Status + + + + Downloading + + + + Add &new torrent + + + + &Pause torrent + + + + &Remove torrent + + + + &File + + + + E&xit + + + + &Help + + + + &About + + + + About &Qt + + + + Tools + + + + :/icons/1downarrow.png + + + + Move down + + + + :/icons/1uparrow.png + + + + Move up + + + + Rate control + + + + Max download: + + + + 0 KB/s + + + + 99999 KB/s + + + + Max upload: + + + + Torrent Client + + + + Choose a torrent file + + + + Torrents (*.torrent);; All files (*.*) + + + + Error + + + + An error occurred while downloading %0: %1 + + + + Already downloading + + + + The torrent file %1 is already being downloaded. + + + + The torrent file %1 cannot not be opened/resumed. + + + + Torrent: %1<br>Destination: %2 + + + + 0/0 + + + + Idle + + + + Torrent: %1<br>Destination: %2<br>State: %3 + + + + %1/%2 + + + + Resume torrent + + + + Pause torrent + + + + %1 KB/s + + + + About Torrent Client + + + + Disconnecting from trackers + + + + Abort + + + + Music Archive + + + + Artist : %1 +Number of Albums: %2 + + + + Title: %1 (%2) + + + + Delete Album + + + + Are you sure you want to delete '%1' by '%2'? + + + + Select the album you want to delete. + + + + Artist + + + + Album + + + + Details + + + + &Add album... + + + + &Delete album... + + + + &Quit + + + + Ctrl+A + + + + Ctrl+D + + + + About Music Archive + + + + <p>The <b>Music Archive</b> example shows how to present data from different data sources in the same application. The album titles, and the corresponding artists and release dates, are kept in a database, while each album's tracks are stored in an XML file. </p><p>The example also shows how to add as well as remove data from both the database and the associated XML file using the API provided by the Qt SQL and Qt XML modules, respectively.</p> + + + + Finger Paint + + + + Open File + + + + About Scribble + + + + <p>The <b>Scribble</b> example shows how to use QMainWindow as the base widget for an application, and how to reimplement some of QWidget's event handlers to receive the events generated for the application's widgets:</p><p> We reimplement the mouse event handlers to facilitate drawing, the paint event handler to update the application and the resize event handler to optimize the application's appearance. In addition we reimplement the close event handler to intercept the close events before terminating the application.</p><p> The example also demonstrates how to use QPainter to draw an image in real time, as well as to repaint widgets.</p> + + + + &Open... + + + + Ctrl+O + + + + %1... + + + + &Print... + + + + Ctrl+Q + + + + &Clear Screen + + + + Ctrl+L + + + + &Save As + + + + &Options + + + + Scribble + + + + The image has been modified. +Do you want to save your changes? + + + + Save As + + + + %1 Files (*.%2);;All Files (*) + + + + New Game + + + + Quit + + + + Puzzle + + + + Open Image + + + + Image Files (*.png *.jpg *.bmp) + + + + The image file could not be loaded. + + + + Puzzle Completed + + + + Congratulations! You have completed the puzzle! +Click OK to start again. + + + + &Game + + + + &Restart + + + + Chip Example + + + + Diagramscene + + + + Blue Grid + + + + White Grid + + + + Gray Grid + + + + % + + + + About Diagram Scene + + + + The <b>Diagram Scene</b> example shows use of the graphics framework. + + + + Conditional + + + + Process + + + + Input/Output + + + + Text + + + + No Grid + + + + Basic Flowchart Shapes + + + + Backgrounds + + + + Bring to &Front + + + + Ctrl+F + + + + Bring item to front + + + + Send to &Back + + + + Ctrl+T + + + + Send item to back + + + + &Delete + + + + Delete + + + + Delete item from diagram + + + + Quit Scenediagram example + + + + Bold + + + + Ctrl+B + + + + Italic + + + + Ctrl+I + + + + Underline + + + + Ctrl+U + + + + A&bout + + + + F1 + + + + &Item + + + + Edit + + + + Font + + + + Color + + + + 50% + + + + 75% + + + + 100% + + + + 125% + + + + 150% + + + + Pointer type + + + + black + + + + white + + + + red + + + + blue + + + + yellow + + + + Address Book + + + + &Save As... + + + + &Tools + + + + &Add Entry... + + + + &Edit Entry... + + + + &Remove Entry + + + + Chart + + + + Label + + + + Quantity + + + + Choose a data file + + + + Loaded %1 + + + + Save file as + + + + Saved %1 + + + + Editable Tree Model + + + + &Actions + + + + Insert Row + + + + Ctrl+I, R + + + + Remove Row + + + + Ctrl+R, R + + + + Insert Column + + + + Ctrl+I, C + + + + Remove Column + + + + Ctrl+R, C + + + + Insert Child + + + + Ctrl+N + + + + Title + + + + Description + + + + Position: (%1,%2) + + + + Position: (%1,%2) in top level + + + + Pixel size: + + + + Pixelator + + + + Choose an image + + + + %1 - Pixelator + + + + Large Image Size + + + + The printed image may be very large. Are you sure that you want to print it? + + + + Print Image + + + + Printing... + + + + Cancel + + + + Printing canceled + + + + The printing process was canceled. + + + + Printing is not supported on this Qt build + + + + About the Pixelator example + + + + This example demonstrates how a standard view and a custom +delegate can be used to produce a specialized representation +of data in a simple custom model. + + + + Simple DOM Model + + + + XML files (*.xml);;HTML files (*.html);;SVG files (*.svg);;User Interface files (*.ui) + + + + About Application + + + + The <b>Application</b> example demonstrates how to write modern GUI applications using Qt, with a menu bar, toolbars, and a status bar. + + + + File + + + + &New + + + + Create a new file + + + + Open an existing file + + + + &Save + + + + Save the document to disk + + + + Save &As... + + + + Save the document under a new name + + + + Exit the application + + + + &Edit + + + + Cu&t + + + + Cut the current selection's contents to the clipboard + + + + &Copy + + + + Copy the current selection's contents to the clipboard + + + + &Paste + + + + Paste the clipboard's contents into the current selection + + + + Show the application's About box + + + + Show the Qt library's About box + + + + Ready + + + + Application + + + + The document has been modified. +Do you want to save your changes? + + + + Cannot read file %1: +%2. + + + + File loaded + + + + Cannot write file %1: +%2. + + + + File saved + + + + Dock Widgets + + + + Yours sincerely, + + + + Choose a file name + + + + Saved '%1' + + + + About Dock Widgets + + + + The <b>Dock Widgets</b> example demonstrates how to use Qt's dock widgets. You can enter your own text, click a customer to add a customer name and address, and click standard paragraphs to add them. + + + + &New Letter + + + + Create a new form letter + + + + &Save... + + + + Save the current form letter + + + + Print the current form letter + + + + Quit the application + + + + &Undo + + + + Undo the last editing action + + + + &View + + + + Customers + + + + Paragraphs + + + + Status Bar + + + + Save layout... + + + + Load layout... + + + + Switch layout direction + + + + Main window + + + + Animated docks + + + + Allow nested docks + + + + Allow tabbed docks + + + + Force tabbed docks + + + + Vertical tabs + + + + Grouped dragging + + + + Tool bars + + + + Unified + + + + &Dock Widgets + + + + Save layout + + + + Failed to open %1 +%2 + + + + Error writing to %1 +%2 + + + + Load layout + + + + Error reading %1 + + + + Top left corner + + + + Top dock area + + + + Left dock area + + + + Top right corner + + + + Right dock area + + + + Bottom left corner + + + + Bottom dock area + + + + Bottom right corner + + + + Destroy dock widget + + + + Add dock widget... + + + + Failed to restore dock widget + + + + MDI + + + + &%1 %2 + + + + About MDI + + + + The <b>MDI</b> example demonstrates how to write multiple document interface applications using Qt. + + + + %1 %2 + + + + Recent... + + + + &Window + + + + Cl&ose + + + + Close the active window + + + + Close &All + + + + Close all the windows + + + + &Tile + + + + Tile the windows + + + + &Cascade + + + + Cascade the windows + + + + Ne&xt + + + + Move the focus to the next window + + + + Pre&vious + + + + Move the focus to the previous window + + + + <i>Choose a menu option, or right-click to invoke a context menu</i> + + + + A context menu is available by right-clicking + + + + Menus + + + + Invoked <b>File|New</b> + + + + Invoked <b>File|Open</b> + + + + Invoked <b>File|Save</b> + + + + Invoked <b>File|Print</b> + + + + Invoked <b>Edit|Undo</b> + + + + Invoked <b>Edit|Redo</b> + + + + Invoked <b>Edit|Cut</b> + + + + Invoked <b>Edit|Copy</b> + + + + Invoked <b>Edit|Paste</b> + + + + Invoked <b>Edit|Format|Bold</b> + + + + Invoked <b>Edit|Format|Italic</b> + + + + Invoked <b>Edit|Format|Left Align</b> + + + + Invoked <b>Edit|Format|Right Align</b> + + + + Invoked <b>Edit|Format|Justify</b> + + + + Invoked <b>Edit|Format|Center</b> + + + + Invoked <b>Edit|Format|Set Line Spacing</b> + + + + Invoked <b>Edit|Format|Set Paragraph Spacing</b> + + + + Invoked <b>Help|About</b> + + + + About Menu + + + + The <b>Menu</b> example shows how to create menu-bar menus and context menus. + + + + Invoked <b>Help|About Qt</b> + + + + Print the document + + + + Undo the last operation + + + + &Redo + + + + Redo the last operation + + + + &Bold + + + + Make the text bold + + + + &Italic + + + + Make the text italic + + + + Set &Line Spacing... + + + + Change the gap between the lines of a paragraph + + + + Set &Paragraph Spacing... + + + + Change the gap between paragraphs + + + + &Left Align + + + + Left align the selected text + + + + &Right Align + + + + Ctrl+R + + + + Right align the selected text + + + + &Justify + + + + Ctrl+J + + + + Justify the selected text + + + + &Center + + + + Ctrl+E + + + + Center the selected text + + + + &Format + + + + Alignment + + + + About SDI + + + + The <b>SDI</b> example demonstrates how to write single document interface applications using Qt. + + + + &Close + + + + Ctrl+W + + + + Close this window + + + + SDI + + + + document%1.txt + + + + Preparing font samples... + + + + &Cancel + + + + Font Sampler + + + + Date: + + + + Font size: + + + + Calendar for %1 %2 + + + + &New... + + + + Order Form + + + + Date: %1 + + + + I would like to place an order for the following items: + + + + Product + + + + Please update my records to take account of the following privacy information: + + + + I want to receive more information about your company's products and special offers. + + + + I do not want to receive any promotional information from your company. + + + + Sincerely, + + + + Enter Customer Details + + + + Print Document + + + + Syntax Highlighter + + + + About Syntax Highlighter + + + + <p>The <b>Syntax Highlighter</b> example shows how to perform simple syntax highlighting by subclassing the QSyntaxHighlighter class and describing highlighting rules using regular expressions.</p> + + + + Gesture example + + + + Codecs + + + + Cannot read file %1: +%2 + + + + Choose Encoding for %1 + + + + Save As (%1) + + + + Cannot write file %1: +%2 + + + + About Codecs + + + + The <b>Codecs</b> example demonstrates how to read and write files using various encodings. + + + + Model + + + + QFileSytemModel + + + + QFileSytemModel that shows full path + + + + Country list + + + + Word list + + + + Completion Mode + + + + Inline + + + + Filtered Popup + + + + Unfiltered Popup + + + + Case Sensitivity + + + + Case Insensitive + + + + Case Sensitive + + + + Max Visible Items + + + + Wrap around completions + + + + Completer + + + + Exit + + + + About + + + + About Qt + + + + Enter file path + + + + Enter name of your country + + + + Enter a word + + + + This example demonstrates the different features of the QCompleter class. + + + + Plug & Paint + + + + Cannot load %1. + + + + Select brush width: + + + + About Plug & Paint + + + + The <b>Plug & Paint</b> example demonstrates how to write Qt applications that can be extended through plugins. + + + + &Brush Color... + + + + &Brush Width... + + + + About &Plugins + + + + &Brush + + + + &Shapes + + + + &Filter + + + + Open INI File + + + + INI Files (*.ini *.conf) + + + + Open Property List + + + + Property List Files (*.plist) + + + + Open Registry Path + + + + Enter the path in the Windows registry: + + + + About Settings Editor + + + + The <b>Settings Editor</b> example shows how to access application settings using Qt. + + + + &Open Application Settings... + + + + Open I&NI File... + + + + Open Apple &Property List... + + + + Ctrl+P + + + + Open Windows &Registry Path... + + + + Ctrl+G + + + + &Refresh + + + + &Auto-Refresh + + + + &Fallbacks + + + + %1 (read only) + + + + %1 - %2 + + + + Opened "%1" + + + + Tree Model<br>(Double click items to edit) + + + + Tree Separator + + + + Tree Model Completer + + + + This example demonstrates how to use a QCompleter with a custom tree model. + + + + Type path from model above with items at each level separated by a '%1' + + + + Tab 1 + + + + Macros + + + + Help + + + + File actions + + + + Shape actions + + + + Undo Stack + + + + Undo limit + + + + &Open + + + + Red + + + + Green + + + + Blue + + + + Add Rectangle + + + + Add Circle + + + + Remove Shape + + + + Add robot + + + + Add snowan + + + + addTriangle + + + + File error + + + + Failed to open +%1 + + + + Parse error + + + + Failed to parse +%1 + + + + Unnamed + + + + Unsaved changes + + + + Would you like to save this document? + + + + Add snowman + + + + About Undo + + + + The Undo demonstration shows how to use the Qt Undo framework. + + + + Command List + + + + &Delete Item + + + + Del + + + + Add &Box + + + + Add &Triangle + + + + The <b>Undo</b> example demonstrates how to use Qt's undo framework. + + + + Show Font Info + + + + Filter: + + + + All + + + + Scalable + + + + Monospaced + + + + Proportional + + + + Font: + + + + Size: + + + + Style: + + + + Automatic Font Merging: + + + + &To clipboard + + + + Character Map + + + + %n font(s) found + + + + + + + Fonts + + + + Icons + + + + [file] + + + + Icon file(s) to open. + + + + Preview + + + + About Icons + + + + The <b>Icons</b> example illustrates how Qt renders an icon in different modes (active, normal, disabled, and selected) and states (on and off) based on a set of images. + + + + Small (%1 x %1) + + + + Large (%1 x %1) + + + + Toolbars (%1 x %1) + + + + List views (%1 x %1) + + + + Icon views (%1 x %1) + + + + Tab bars (%1 x %1) + + + + Open Images + + + + Directory: %1 +File: %2 +File@2x: %3 +Size: %4x%5 + + + + <None> + + + + Images + + + + Image + + + + Mode + + + + State + + + + Icon Size + + + + Other: + + + + Enter a custom size within %1..%2 + + + + "%1" (%2x%3) + + + + High DPI Scaling + + + + Screen: + + + + Device pixel ratio: + + + + Add &Sample Images... + + + + &Add Images... + + + + &Remove All Images + + + + %1 Style + + + + &Settings + + + + &Guess Image Mode/State + + + + &Use Native File Dialog + + + + Select pen width: + + + + &Pen Color... + + + + Pen &Width... + + + + Style Sheet + + + + Please read the LICENSE file before checking + + + + I accept the terms and &conditions + + + + Profession: + + + + &Name: + + + + Check this if you are male + + + + &Male + + + + &Password: + + + + Specify country of origin + + + + Egypt + + + + France + + + + Germany + + + + India + + + + Italy + + + + Norway + + + + Pakistan + + + + &Age: + + + + Country: + + + + Gender: + + + + Specify your password + + + + Password + + + + Check this if you are female + + + + &Female + + + + Specify your age + + + + Specify your name + + + + Select your profession + + + + Specify your name here + + + + Developer + + + + Student + + + + Fisherman + + + + &Exit + + + + Edit &Style... + + + + About Style sheet + + + + The <b>Style Sheet</b> example shows how widgets can be styled using <a href="http://doc.qt.io/qt-5/stylesheet.html">Qt Style Sheets</a>. Click <b>File|Edit Style Sheet</b> to pop up the style editor, and either choose an existing style sheet or design your own. + + + + Tablet Example + + + + Save Picture + + + + Open Picture + + + + About Tablet Example + + + + This example shows how to use a graphics drawing tablet in Qt. + + + + &Tablet + + + + &Line Width + + + + &Pressure + + + + &Tilt + + + + &Fixed + + + + &Alpha Channel + + + + T&angential Pressure + + + + No Alpha Channel + + + + &Color Saturation + + + + &Vertical Tilt + + + + &Horizontal Tilt + + + + &No Color Saturation + + + + DOM Bookmarks + + + + Open Bookmark File + + + + XBEL Files (*.xbel *.xml) + + + + SAX Bookmarks + + + + Save Bookmark File + + + + About DOM Bookmarks + + + + The <b>DOM Bookmarks</b> example demonstrates how to use Qt's DOM classes to read and write XML documents. + + + + Location + + + + About SAX Bookmarks + + + + The <b>SAX Bookmarks</b> example demonstrates how to use Qt's SAX classes to read XML documents and how to generate XML by hand. + + + + QXmlStream Bookmarks + + + + Parse error in file %1: + +%2 + + + + About QXmlStream Bookmarks + + + + The <b>QXmlStream Bookmarks</b> example demonstrates how to use Qt's QXmlStream classes to read and write XML documents. + + + + Add new + + + + Cannot add new window + + + + Already occupied. Undock first. + + + + + MainWindowBase + + Font Sampler + + + + &Selection + + + + &File + + + + Available Fonts + + + + &Print... + + + + Ctrl+P + + + + E&xit + + + + Ctrl+Q + + + + &Mark + + + + Ctrl+M + + + + &Unmark + + + + Ctrl+U + + + + &Clear + + + + Print Preview... + + + + + MandelbrotWidget + + Mandelbrot + + + + Rendering initial image, please wait... + + + + Use mouse wheel or the '+' and '-' keys to zoom. Press and hold left mouse button to scroll. + + + + + MapZoom + + &Oslo + + + + &Berlin + + + + &Jakarta + + + + Night Mode + + + + About OpenStreetMap + + + + &Options + + + + Light Maps + + + + + MdiChild + + document%1.txt + + + + MDI + + + + Cannot read file %1: +%2. + + + + Save As + + + + Cannot write file %1: +%2. + + + + '%1' has been modified. +Do you want to save your changes? + + + + + MoviePlayer + + No movie loaded + + + + Movie Player + + + + Open a Movie + + + + Fit to Window + + + + Current frame: + + + + Speed: + + + + % + + + + Open File + + + + Play + + + + Pause + + + + Stop + + + + Quit + + + + + NewAddressTab + + There are currently no contacts in your address book. +Click Add to add new contacts. + + + + Add + + + + + NicknameDialog + + Set nickname + + + + New nickname: + + + + OK + + + + Cancel + + + + + Notepad + + Quit + + + + Notepad + + + + Do you really want to quit? + + + + &Load + + + + &Save + + + + E&xit + + + + &File + + + + Open File + + + + Text Files (*.txt);;C++ Files (*.cpp *.h) + + + + Error + + + + Could not open file + + + + Save File + + + + + OutputFilesPage + + Output Files + + + + Specify where you want the wizard to put the generated skeleton code. + + + + &Output directory: + + + + &Header file name: + + + + &Implementation file name: + + + + + PathDeformControls + + Controls + + + + Lens Radius + + + + Deformation + + + + Font Size + + + + Text + + + + Animated + + + + Show Source + + + + Use OpenGL + + + + What's This? + + + + Qt + + + + Lens Radius: + + + + Deformation: + + + + Font Size: + + + + Quit + + + + OK + + + + + PathDeformWidget + + Vector Deformation + + + + + PathStrokeControls + + Cap Style + + + + Flat + + + + Square + + + + Round + + + + Join Style + + + + Bevel + + + + Miter + + + + Pen Style + + + + Custom + + + + Line Style + + + + Curves + + + + Lines + + + + Path Stroking + + + + Pen Width + + + + Animate + + + + Show Source + + + + Use OpenGL + + + + What's This? + + + + OK + + + + Quit + + + + Width: + + + + + PathStrokeWidget + + Path Stroking + + + + + PermissionsTab + + Permissions + + + + Readable + + + + Writable + + + + Executable + + + + Ownership + + + + Owner + + + + Group + + + + + PluginDialog + + OK + + + + Plugin Information + + + + Plug & Paint found the following plugins +(looked in %1): + + + + %1 (Static Plugin) + + + + + PreviewForm + + &Encoding: + + + + Preview + + + + Hex Dump + + + + %1: conversion error at character %2 + + + + %1: %n invalid characters + + + + + + + %1: %n bytes converted + + + + + + + + PreviewWindow + + &Close + + + + Preview + + + + + ProgressDialog + + Download Progress + + + + Downloading %1. + + + + + QAbstractSocket + + Socket operation timed out + + + + Operation on socket is not supported + + + + Host not found + + + + Connection refused + + + + Connection timed out + + + + Trying to connect while connection is in progress + + + + Socket is not connected + + + + Network unreachable + + + + + QAbstractSpinBox + + &Select All + + + + &Step up + + + + Step &down + + + + + QAccessibleActionInterface + + Press + + + + Increase + + + + Decrease + + + + ShowMenu + + + + SetFocus + + + + Toggle + + + + Scroll Left + + + + Scroll Right + + + + Scroll Up + + + + Scroll Down + + + + Previous Page + + + + Next Page + + + + Triggers the action + + + + Increase the value + + + + Decrease the value + + + + Shows the menu + + + + Sets the focus + + + + Toggles the state + + + + Scrolls to the left + + + + Scrolls to the right + + + + Scrolls up + + + + Scrolls down + + + + Goes back a page + + + + Goes to the next page + + + + + QAndroidPlatformTheme + + Yes + + + + Yes to All + + + + No + + + + No to All + + + + + QApplication + + Executable '%1' requires Qt %2, found Qt %3. + + + + Incompatible Qt Library Error + + + + + QCocoaMenuItem + + About Qt + + + + About + + + + Config + + + + Preference + + + + Options + + + + Setting + + + + Setup + + + + Quit + + + + Exit + + + + Cut + + + + Copy + + + + Paste + + + + Select All + + + + + QCocoaTheme + + Don't Save + + + + + QColorDialog + + Hu&e: + + + + &Sat: + + + + &Val: + + + + &Red: + + + + &Green: + + + + Bl&ue: + + + + A&lpha channel: + + + + &HTML: + + + + Cursor at %1, %2 +Press ESC to cancel + + + + Select Color + Select Colour + + + &Basic colors + &Basic colours + + + &Custom colors + &Custom colours + + + &Add to Custom Colors + &Add to Custom Colours + + + &Pick Screen Color + &Pick Screen Colour + + + + QComboBox + + Open the combo box selection popup + + + + False + + + + True + + + + + QCommandLineParser + + Displays version information. + + + + Displays this help. + + + + Unknown option '%1'. + + + + Unknown options: %1. + + + + Missing value after '%1'. + + + + Unexpected value after '%1'. + + + + [options] + + + + Usage: %1 + + + + Options: + + + + Arguments: + + + + + QCoreApplication + + %1: key is empty + QSystemSemaphore + + + + %1: unable to make key + QSystemSemaphore + + + + %1: ftok failed + QSystemSemaphore + + + + + QCupsJobWidget + + Job + + + + Job Control + + + + Scheduled printing: + + + + Billing information: + + + + Job priority: + + + + Banner Pages + + + + End: + Banner page at end + + + + Start: + Banner page at start + + + + Print Immediately + + + + Hold Indefinitely + + + + Day (06:00 to 17:59) + + + + Night (18:00 to 05:59) + + + + Second Shift (16:00 to 23:59) + + + + Third Shift (00:00 to 07:59) + + + + Weekend (Saturday to Sunday) + + + + Specific Time + + + + None + CUPS Banner page + + + + Standard + CUPS Banner page + + + + Unclassified + CUPS Banner page + + + + Confidential + CUPS Banner page + + + + Classified + CUPS Banner page + + + + Secret + CUPS Banner page + + + + Top Secret + CUPS Banner page + + + + + QDB2Driver + + Unable to connect + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + Unable to set autocommit + + + + + QDB2Result + + Unable to execute statement + + + + Unable to prepare statement + + + + Unable to bind variable + + + + Unable to fetch record %1 + + + + Unable to fetch next + + + + Unable to fetch first + + + + + QDBusTrayIcon + + OK + + + + + QDateTimeParser + + AM + + + + am + + + + PM + + + + pm + + + + + QDialog + + What's This? + + + + + QDialogButtonBox + + OK + + + + + QDirModel + + Name + + + + Size + + + + Kind + Match OS X Finder + + + + Type + All other platforms + + + + Date Modified + + + + + QDnsLookup + + Operation cancelled + + + + + QDnsLookupExample + + DNS Lookup Example + + + + An example demonstrating the class QDnsLookup. + + + + + QDnsLookupRunnable + + IPv6 addresses for nameservers are currently not supported + + + + Invalid domain name + + + + Not yet supported on Android + + + + Resolver functions not found + + + + Resolver initialization failed + + + + Server could not process query + + + + Server failure + + + + Non existent domain + + + + Server refused to answer + + + + Invalid reply received + + + + Could not expand domain name + + + + Invalid IPv4 address record + + + + Invalid IPv6 address record + + + + Invalid canonical name record + + + + Invalid name server record + + + + Invalid pointer record + + + + Invalid mail exchange record + + + + Invalid service record + + + + Invalid text record + + + + Resolver library can't be loaded: No runtime library loading support + + + + No hostname given + + + + Invalid hostname + + + + Host %1 could not be found. + + + + Unknown error + + + + + QDockWidget + + Float + Accessible name for button undocking a dock widget (floating state) + + + + Undocks and re-attaches the dock widget + + + + Close + Accessible name for button closing a dock widget + + + + Closes the dock widget + + + + + QErrorMessage + + Debug Message: + + + + Warning: + + + + Fatal Error: + + + + &Show this message again + + + + &OK + + + + + QFile + + Destination file is the same file. + + + + Source file does not exist. + + + + Destination file exists + + + + Error while renaming. + + + + Unable to restore from %1: %2 + + + + Will not rename sequential file using block copy + + + + Cannot remove source file + + + + Cannot open %1 for input + + + + Cannot open for output + + + + Failure to write block + + + + Cannot create %1 for output + + + + + QFileDevice + + No file engine available or engine does not support UnMapExtension + + + + + QFileDialog + + Look in: + + + + Back + + + + Go back + + + + Alt+Left + + + + Forward + + + + Go forward + + + + Alt+Right + + + + Parent Directory + + + + Go to the parent directory + + + + Alt+Up + + + + Create New Folder + + + + Create a New Folder + + + + List View + + + + Change to list view mode + + + + Detail View + + + + Change to detail view mode + + + + Sidebar + + + + List of places and bookmarks + + + + Files + + + + Files of type: + + + + Find Directory + + + + Open + + + + Save As + + + + Directory: + + + + File &name: + + + + &Open + + + + &Choose + + + + &Save + + + + All Files (*) + + + + Show + + + + &Rename + + + + &Delete + + + + Show &hidden files + + + + &New Folder + + + + All files (*) + + + + Directories + + + + %1 +Directory not found. +Please verify the correct directory name was given. + + + + %1 already exists. +Do you want to replace it? + + + + %1 +File not found. +Please verify the correct file name was given. + + + + New Folder + + + + Delete + + + + '%1' is write protected. +Do you want to delete it anyway? + + + + Are you sure you want to delete '%1'? + + + + Could not delete directory. + + + + Recent Places + + + + Remove + + + + My Computer + + + + Drive + + + + %1 File + %1 is a file name suffix, for example txt + + + + File + + + + File Folder + Match Windows Explorer + + + + Folder + All other platforms + + + + Alias + OS X Finder + + + + Shortcut + All other platforms + + + + Unknown + + + + + QFileSystemModel + + %1 TB + + + + %1 GB + + + + %1 MB + + + + %1 KB + + + + %1 bytes + + + + Invalid filename + + + + <b>The name "%1" can not be used.</b><p>Try using another name, with fewer characters or no punctuations marks. + + + + Name + + + + Size + + + + Kind + Match OS X Finder + + + + Type + All other platforms + + + + Date Modified + + + + My Computer + + + + Computer + + + + %1 byte(s) + + + + + QFontDatabase + + Normal + The Normal or Regular font weight + + + + Bold + + + + Demi Bold + + + + Medium + The Medium font weight + + + + Black + + + + Light + + + + Thin + + + + Extra Light + + + + Extra Bold + + + + Extra + The word for "Extra" as in "Extra Bold, Extra Thin" used as a pattern for string searches + + + + Demi + The word for "Demi" as in "Demi Bold" used as a pattern for string searches + + + + Italic + + + + Oblique + + + + Any + + + + Latin + + + + Greek + + + + Cyrillic + + + + Armenian + + + + Hebrew + + + + Arabic + + + + Syriac + + + + Thaana + + + + Devanagari + + + + Bengali + + + + Gurmukhi + + + + Gujarati + + + + Oriya + + + + Tamil + + + + Telugu + + + + Kannada + + + + Malayalam + + + + Sinhala + + + + Thai + + + + Lao + + + + Tibetan + + + + Myanmar + + + + Georgian + + + + Khmer + + + + Simplified Chinese + + + + Traditional Chinese + + + + Japanese + + + + Korean + + + + Vietnamese + + + + Symbol + + + + Ogham + + + + Runic + + + + N'Ko + + + + + QFontDialog + + Select Font + + + + &Font + + + + Font st&yle + + + + &Size + + + + Effects + + + + Stri&keout + + + + &Underline + + + + Sample + + + + Wr&iting System + + + + + QFtp + + Not connected + + + + Host %1 not found + + + + Connection refused to host %1 + + + + Connection timed out to host %1 + + + + Connected to host %1 + + + + Data Connection refused + + + + Unknown error + + + + Connecting to host failed: +%1 + + + + Login failed: +%1 + + + + Listing directory failed: +%1 + + + + Changing directory failed: +%1 + + + + Downloading file failed: +%1 + + + + Uploading file failed: +%1 + + + + Removing file failed: +%1 + + + + Creating directory failed: +%1 + + + + Removing directory failed: +%1 + + + + Connection closed + + + + + QGnomeTheme + + &OK + + + + &Save + + + + &Cancel + + + + &Close + + + + Close without Saving + + + + + QGuiApplication + + QT_LAYOUT_DIRECTION + Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout. + + + + + QHostInfo + + No host name given + + + + Unknown error + + + + + QHostInfoAgent + + No host name given + + + + Invalid hostname + + + + Unknown address type + + + + Host not found + + + + Unknown error + + + + Unknown error (%1) + + + + + QHttp + + Host %1 not found + + + + Connection refused + + + + Connection closed + + + + Proxy requires authentication + + + + Host requires authentication + + + + Data corrupted + + + + Unknown protocol specified + + + + SSL handshake failed + + + + Too many redirects + + + + Insecure redirect + + + + + QHttpSocketEngine + + Did not receive HTTP response from proxy + + + + Error parsing authentication request from proxy + + + + Authentication required + + + + Proxy denied connection + + + + Error communicating with HTTP proxy + + + + Proxy server not found + + + + Proxy connection refused + + + + Proxy server connection timed out + + + + Proxy connection closed prematurely + + + + + QIBaseDriver + + Error opening database + + + + Could not start transaction + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + + QIBaseResult + + Unable to create BLOB + + + + Unable to write BLOB + + + + Unable to open BLOB + + + + Unable to read BLOB + + + + Could not find array + + + + Could not get array data + + + + Could not get query info + + + + Could not start transaction + + + + Unable to commit transaction + + + + Could not allocate statement + + + + Could not prepare statement + + + + Could not describe input statement + + + + Could not describe statement + + + + Unable to close statement + + + + Unable to execute query + + + + Could not fetch next item + + + + Could not get statement info + + + + + QIODevice + + Permission denied + + + + Too many open files + + + + No such file or directory + + + + No space left on device + + + + file to open is a directory + + + + Unknown error + + + + + QImageReader + + Invalid device + + + + File not found + + + + Unsupported image format + + + + Unable to read image data + + + + Unknown error + + + + + QImageWriter + + Unknown error + + + + Device is not set + + + + Device not writable + + + + Unsupported image format + + + + + QInputDialog + + Enter a value: + + + + + QJsonParseError + + no error occurred + + + + unterminated object + + + + missing name separator + + + + unterminated array + + + + missing value separator + + + + illegal value + + + + invalid termination by number + + + + illegal number + + + + invalid escape sequence + + + + invalid UTF8 string + + + + unterminated string + + + + object is missing after a comma + + + + too deeply nested document + + + + too large document + + + + garbage at the end of the document + + + + + QKeySequenceEdit + + Press shortcut + + + + %1, ... + This text is an "unfinished" shortcut, expands like "Ctrl+A, ..." + + + + + QLibrary + + '%1' is not an ELF object (%2) + + + + '%1' is not an ELF object + + + + '%1' is an invalid ELF object (%2) + + + + Failed to extract plugin meta data from '%1' + + + + The shared library was not found. + + + + The file '%1' is not a valid Qt plugin. + + + + The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5] + + + + The plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.) + + + + Unknown error + + + + Cannot load library %1: %2 + + + + Cannot unload library %1: %2 + + + + Cannot resolve symbol "%1" in %2: %3 + + + + '%1' is not a valid Mach-O binary (%2) + + + + file is corrupt + + + + file too small + + + + no suitable architecture in fat binary + + + + invalid magic %1 + + + + wrong architecture + + + + not a dynamic library + + + + '%1' is not a Qt plugin + + + + + QLineEdit + + &Undo + + + + &Redo + + + + Cu&t + + + + &Copy + + + + &Paste + + + + Delete + + + + Select All + + + + + QLocalServer + + %1: Name error + + + + %1: Permission denied + + + + %1: Address in use + + + + %1: Unknown error %2 + + + + + QLocalSocket + + %1: Connection refused + + + + %1: Remote closed + + + + %1: Invalid name + + + + %1: Socket access error + + + + %1: Socket resource error + + + + %1: Socket operation timed out + + + + %1: Datagram too large + + + + %1: Connection error + + + + %1: The socket operation is not supported + + + + %1: Operation not permitted when socket is in this state + + + + %1: Unknown error + + + + Trying to connect while connection is in progress + + + + %1: Unknown error %2 + + + + %1: Access denied + + + + + QMYSQLDriver + + Unable to allocate a MYSQL object + + + + Unable to open database '%1' + + + + Unable to connect + + + + Unable to begin transaction + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + + QMYSQLResult + + Unable to fetch data + + + + Unable to execute query + + + + Unable to store result + + + + Unable to execute next query + + + + Unable to store next result + + + + Unable to prepare statement + + + + Unable to reset statement + + + + Unable to bind value + + + + Unable to execute statement + + + + Unable to bind outvalues + + + + Unable to store statement results + + + + + QMdiArea + + (Untitled) + + + + + QMdiSubWindow + + - [%1] + + + + %1 - [%2] + + + + Minimize + + + + Maximize + + + + Unshade + + + + Shade + + + + Restore Down + + + + Restore + + + + Close + + + + Help + + + + Menu + + + + &Restore + + + + &Move + + + + &Size + + + + Mi&nimize + + + + Ma&ximize + + + + Stay on &Top + + + + &Close + + + + + QMessageBox + + Show Details... + + + + Hide Details... + + + + OK + + + + Help + + + + <h3>About Qt</h3><p>This program uses Qt version %1.</p> + + + + <p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across all major desktop operating systems. It is also available for embedded Linux and other embedded and mobile operating systems.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p><p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 3 or GNU LGPL version 2.1.</p><p>Qt licensed under the GNU LGPL version 3 is appropriate for the development of Qt&nbsp;applications provided you can comply with the terms and conditions of the GNU LGPL version 3.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt&nbsp;applications provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Please see <a href="http://%2/">%2</a> for an overview of Qt licensing.</p><p>Copyright (C) %1 The Qt Company Ltd and other contributors.</p><p>Qt and the Qt logo are trademarks of The Qt Company Ltd.</p><p>Qt is The Qt Company Ltd product developed as an open source project. See <a href="http://%3/">%3</a> for more information.</p> + + + + About Qt + + + + + QNativeSocketEngine + + Unable to initialize non-blocking socket + + + + Unable to initialize broadcast socket + + + + Attempt to use IPv6 socket on a platform with no IPv6 support + + + + The remote host closed the connection + + + + Network operation timed out + + + + Out of resources + + + + Unsupported socket operation + + + + Protocol type not supported + + + + Invalid socket descriptor + + + + Host unreachable + + + + Network unreachable + + + + Permission denied + + + + Connection timed out + + + + Connection refused + + + + The bound address is already in use + + + + The address is not available + + + + The address is protected + + + + Datagram was too large to send + + + + Unable to send a message + + + + Unable to receive a message + + + + Unable to write + + + + Network error + + + + Another socket is already listening on the same port + + + + Operation on non-socket + + + + The proxy type is invalid for this operation + + + + Temporary error + + + + Network dropped connection on reset + + + + Connection reset by peer + + + + Unknown error + + + + + QNetworkAccessCacheBackend + + Error opening %1 + + + + + QNetworkAccessDataBackend + + Invalid URI: %1 + + + + + QNetworkAccessDebugPipeBackend + + Write error writing to %1: %2 + + + + Socket error on %1: %2 + + + + Remote host closed the connection prematurely on %1 + + + + + QNetworkAccessFileBackend + + Request for opening non-local file %1 + + + + Error opening %1: %2 + + + + Write error writing to %1: %2 + + + + Cannot open %1: Path is a directory + + + + Read error reading from %1: %2 + + + + + QNetworkAccessFtpBackend + + No suitable proxy found + + + + Cannot open %1: is a directory + + + + Logging in to %1 failed: authentication required + + + + Error while downloading %1: %2 + + + + Error while uploading %1: %2 + + + + + QNetworkAccessManager + + Network access is disabled. + + + + + QNetworkReply + + Error transferring %1 - server replied: %2 + + + + Background request not allowed. + + + + Network session error. + + + + backend start error. + + + + Temporary network failure. + + + + Protocol "%1" is unknown + + + + + QNetworkReplyHttpImpl + + Operation canceled + + + + No suitable proxy found + + + + + QNetworkReplyImpl + + Operation canceled + + + + + QNetworkSession + + Invalid configuration. + + + + + QNetworkSessionPrivateImpl + + Unknown session error. + + + + The session was aborted by the user or system. + + + + The requested operation is not supported by the system. + + + + The specified configuration cannot be used. + + + + Roaming was aborted or is not possible. + + + + + QOCIDriver + + Unable to initialize + QOCIDriver + + + + Unable to logon + + + + Unable to begin transaction + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + + QOCIResult + + Unable to bind column for batch execute + + + + Unable to execute batch statement + + + + Unable to goto next + + + + Unable to alloc statement + + + + Unable to prepare statement + + + + Unable to get statement type + + + + Unable to bind value + + + + Unable to execute statement + + + + + QODBCDriver + + Unable to connect + + + + Unable to connect - Driver doesn't support all functionality required + + + + Unable to disable autocommit + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + Unable to enable autocommit + + + + + QODBCResult + + Unable to fetch last + + + + QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration + + + + Unable to execute statement + + + + Unable to fetch + + + + Unable to fetch next + + + + Unable to fetch first + + + + Unable to fetch previous + + + + Unable to prepare statement + + + + Unable to bind variable + + + + + QObject + + ID + + + + Name + + + + City + + + + Country + + + + Relational Table Model + + + + First name + + + + Last name + + + + Plain Query Model + + + + Editable Query Model + + + + Custom Query Model + + + + Table Model (View 1) + + + + Table Model (View 2) + + + + Qt SQL Browser + + + + &File + + + + Add &Connection... + + + + &Quit + + + + &Help + + + + About + + + + About Qt + + + + Systray + + + + I couldn't detect any system tray on this system. + + + + Simple Wizard + + + + Cannot write file %1: +%2 + + + + Draggable Icons + + + + Invalid enum. + + + + Invalid value. + + + + Invalid operation. + + + + Stack overflow. + + + + Stack underflow. + + + + Out of memory. + + + + Unknown error. + + + + Subject + + + + Sender + + + + Date + + + + Dir View + + + + Frozen Column Example + + + + Simple Tree Model + + + + Spin Box Delegate + + + + Add %1 + + + + Remove %1 + + + + Set %1's color + + + + Change %1's geometry + + + + Move %1 + + + + Delete %1 + + + + %1 at (%2, %3) + + + + Code Editor Example + + + + Folder + + + + The file is not an XBEL file. + + + + The file is not an XBEL version 1.0 file. + + + + Unknown title + + + + SAX Bookmarks + + + + Parse error at line %1, column %2: +%3 + + + + %1 +Line %2, column %3 + + + + + QPSQLDriver + + Unable to connect + + + + Could not begin transaction + + + + Could not commit transaction + + + + Could not rollback transaction + + + + Unable to subscribe + + + + Unable to unsubscribe + + + + + QPSQLResult + + Unable to create query + + + + Unable to prepare statement + + + + + QPageSetupWidget + + Form + + + + Paper + + + + Page size: + + + + Width: + + + + Height: + + + + Paper source: + + + + Orientation + + + + Portrait + + + + Landscape + + + + Reverse landscape + + + + Reverse portrait + + + + Margins + + + + top margin + + + + left margin + + + + right margin + + + + bottom margin + + + + Page Layout + + + + Page order: + + + + Pages per sheet: + + + + Millimeters (mm) + + + + Inches (in) + + + + Points (pt) + + + + Pica (P̸) + + + + Didot (DD) + + + + Cicero (CC) + + + + Custom + + + + mm + Unit 'Millimeter' + + + + pt + Unit 'Points' + + + + in + Unit 'Inch' + + + + P̸ + Unit 'Pica' + + + + DD + Unit 'Didot' + + + + CC + Unit 'Cicero' + + + + + QPageSize + + Custom (%1mm x %2mm) + Custom size name in millimeters + + + + Custom (%1pt x %2pt) + Custom size name in points + + + + Custom (%1in x %2in) + Custom size name in inches + + + + Custom (%1pc x %2pc) + Custom size name in picas + + + + Custom (%1DD x %2DD) + Custom size name in didots + + + + Custom (%1CC x %2CC) + Custom size name in ciceros + + + + %1 x %2 in + Page size in 'Inch'. + + + + A0 + + + + A1 + + + + A2 + + + + A3 + + + + A4 + + + + A5 + + + + A6 + + + + A7 + + + + A8 + + + + A9 + + + + A10 + + + + B0 + + + + B1 + + + + B2 + + + + B3 + + + + B4 + + + + B5 + + + + B6 + + + + B7 + + + + B8 + + + + B9 + + + + B10 + + + + Executive (7.5 x 10 in) + + + + Executive (7.25 x 10.5 in) + + + + Folio (8.27 x 13 in) + + + + Legal + + + + Letter / ANSI A + + + + Tabloid / ANSI B + + + + Ledger / ANSI B + + + + Custom + + + + A3 Extra + + + + A4 Extra + + + + A4 Plus + + + + A4 Small + + + + A5 Extra + + + + B5 Extra + + + + JIS B0 + + + + JIS B1 + + + + JIS B2 + + + + JIS B3 + + + + JIS B4 + + + + JIS B5 + + + + JIS B6 + + + + JIS B7 + + + + JIS B8 + + + + JIS B9 + + + + JIS B10 + + + + ANSI C + + + + ANSI D + + + + ANSI E + + + + Legal Extra + + + + Letter Extra + + + + Letter Plus + + + + Letter Small + + + + Tabloid Extra + + + + Architect A + + + + Architect B + + + + Architect C + + + + Architect D + + + + Architect E + + + + Note + + + + Quarto + + + + Statement + + + + Super A + + + + Super B + + + + Postcard + + + + Double Postcard + + + + PRC 16K + + + + PRC 32K + + + + PRC 32K Big + + + + Fan-fold US (14.875 x 11 in) + + + + Fan-fold German (8.5 x 12 in) + + + + Fan-fold German Legal (8.5 x 13 in) + + + + Envelope B4 + + + + Envelope B5 + + + + Envelope B6 + + + + Envelope C0 + + + + Envelope C1 + + + + Envelope C2 + + + + Envelope C3 + + + + Envelope C4 + + + + Envelope C5 + + + + Envelope C6 + + + + Envelope C65 + + + + Envelope C7 + + + + Envelope DL + + + + Envelope US 9 + + + + Envelope US 10 + + + + Envelope US 11 + + + + Envelope US 12 + + + + Envelope US 14 + + + + Envelope Monarch + + + + Envelope Personal + + + + Envelope Chou 3 + + + + Envelope Chou 4 + + + + Envelope Invite + + + + Envelope Italian + + + + Envelope Kaku 2 + + + + Envelope Kaku 3 + + + + Envelope PRC 1 + + + + Envelope PRC 2 + + + + Envelope PRC 3 + + + + Envelope PRC 4 + + + + Envelope PRC 5 + + + + Envelope PRC 6 + + + + Envelope PRC 7 + + + + Envelope PRC 8 + + + + Envelope PRC 9 + + + + Envelope PRC 10 + + + + Envelope You 4 + + + + + QPlatformTheme + + OK + + + + Save + + + + Save All + + + + Open + + + + &Yes + + + + Yes to &All + + + + &No + + + + N&o to All + + + + Abort + + + + Retry + + + + Ignore + + + + Close + + + + Cancel + + + + Discard + + + + Help + + + + Apply + + + + Reset + + + + Restore Defaults + + + + + QPluginLoader + + The plugin was not loaded. + + + + Unknown error + + + + + QPrintDialog + + Print + + + + Left to Right, Top to Bottom + + + + Left to Right, Bottom to Top + + + + Right to Left, Bottom to Top + + + + Right to Left, Top to Bottom + + + + Bottom to Top, Left to Right + + + + Bottom to Top, Right to Left + + + + Top to Bottom, Left to Right + + + + Top to Bottom, Right to Left + + + + 1 (1x1) + + + + 2 (2x1) + + + + 4 (2x2) + + + + 6 (2x3) + + + + 9 (3x3) + + + + 16 (4x4) + + + + All Pages + + + + Odd Pages + + + + Even Pages + + + + &Options >> + + + + &Print + + + + &Options << + + + + Print to File (PDF) + + + + Local file + + + + Write PDF file + + + + Print To File ... + + + + %1 is a directory. +Please choose a different file name. + + + + File %1 is not writable. +Please choose a different file name. + + + + %1 already exists. +Do you want to overwrite it? + + + + Options 'Pages Per Sheet' and 'Page Set' cannot be used together. +Please turn one of those options off. + + + + The 'From' value cannot be greater than the 'To' value. + + + + OK + + + + Automatic + + + + + QPrintPreviewDialog + + Page Setup + + + + %1% + + + + Print Preview + + + + Next page + + + + Previous page + + + + First page + + + + Last page + + + + Fit width + + + + Fit page + + + + Zoom in + + + + Zoom out + + + + Portrait + + + + Landscape + + + + Show single page + + + + Show facing pages + + + + Show overview of all pages + + + + Print + + + + Page setup + + + + Export to PDF + + + + + QPrintPropertiesDialog + + Printer Properties + + + + Job Options + + + + + QPrintPropertiesWidget + + Form + + + + Page + + + + + QPrintSettingsOutput + + Form + + + + Copies + + + + Print range + + + + Print all + + + + Pages from + + + + to + + + + Current Page + + + + Selection + + + + Page Set: + + + + Output Settings + + + + Copies: + + + + Collate + + + + Reverse + + + + Options + + + + Color Mode + + + + Color + + + + Grayscale + + + + Duplex Printing + + + + None + + + + Long side + + + + Short side + + + + + QPrintWidget + + Form + + + + Printer + + + + &Name: + + + + P&roperties + + + + Location: + + + + Preview + + + + Type: + + + + Output &file: + + + + ... + + + + + QProcess + + Process failed to start + + + + Process crashed + + + + Process operation timed out + + + + Error reading from process + + + + Error writing to process + + + + No program defined + + + + Could not open input redirection for reading + + + + Resource error (fork failure): %1 + + + + Could not open output redirection for writing + + + + Process failed to start: %1 + + + + + QProgressDialog + + Cancel + + + + + QPushButton + + Hello world! + + + + Hello %n world(s)! + + + + + + + It's a small world + + + + + QQnxFileDialogHelper + + All files (*.*) + + + + + QQnxFilePicker + + Pick a file + + + + + QRegExp + + no error occurred + + + + disabled feature used + + + + bad char class syntax + + + + bad lookahead syntax + + + + lookbehinds not supported, see QTBUG-2371 + + + + bad repetition syntax + + + + invalid octal value + + + + missing left delim + + + + unexpected end + + + + met internal limit + + + + invalid interval + + + + invalid category + + + + + QRegularExpression + + no error + + + + \ at end of pattern + + + + \c at end of pattern + + + + unrecognized character follows \ + + + + numbers out of order in {} quantifier + + + + number too big in {} quantifier + + + + missing terminating ] for character class + + + + invalid escape sequence in character class + + + + range out of order in character class + + + + nothing to repeat + + + + internal error: unexpected repeat + + + + unrecognized character after (? or (?- + + + + POSIX named classes are supported only within a class + + + + missing ) + + + + reference to non-existent subpattern + + + + erroffset passed as NULL + + + + unknown option bit(s) set + + + + missing ) after comment + + + + regular expression is too large + + + + failed to get memory + + + + unmatched parentheses + + + + internal error: code overflow + + + + unrecognized character after (?< + + + + lookbehind assertion is not fixed length + + + + malformed number or name after (?( + + + + conditional group contains more than two branches + + + + assertion expected after (?( + + + + (?R or (?[+-]digits must be followed by ) + + + + unknown POSIX class name + + + + POSIX collating elements are not supported + + + + this version of PCRE is not compiled with PCRE_UTF8 support + + + + character value in \x{...} sequence is too large + + + + invalid condition (?(0) + + + + \C not allowed in lookbehind assertion + + + + PCRE does not support \L, \l, \N{name}, \U, or \u + + + + number after (?C is > 255 + + + + closing ) for (?C expected + + + + recursive call could loop indefinitely + + + + unrecognized character after (?P + + + + syntax error in subpattern name (missing terminator) + + + + two named subpatterns have the same name + + + + invalid UTF-8 string + + + + support for \P, \p, and \X has not been compiled + + + + malformed \P or \p sequence + + + + unknown property name after \P or \p + + + + subpattern name is too long (maximum 32 characters) + + + + too many named subpatterns (maximum 10000) + + + + octal value is greater than \377 (not in UTF-8 mode) + + + + internal error: overran compiling workspace + + + + internal error: previously-checked referenced subpattern not found + + + + DEFINE group contains more than one branch + + + + repeating a DEFINE group is not allowed + + + + inconsistent NEWLINE options + + + + \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number + + + + a numbered reference must not be zero + + + + an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT) + + + + (*VERB) not recognized + + + + number is too big + + + + subpattern name expected + + + + digit expected after (?+ + + + + ] is an invalid data character in JavaScript compatibility mode + + + + different names for subpatterns of the same number are not allowed + + + + (*MARK) must have an argument + + + + this version of PCRE is not compiled with PCRE_UCP support + + + + \c must be followed by an ASCII character + + + + \k is not followed by a braced, angle-bracketed, or quoted name + + + + internal error: unknown opcode in find_fixedlength() + + + + \N is not supported in a class + + + + too many forward references + + + + disallowed Unicode code point (>= 0xd800 && <= 0xdfff) + + + + invalid UTF-16 string + + + + name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN) + + + + character value in \u.... sequence is too large + + + + invalid UTF-32 string + + + + setting UTF is disabled by the application + + + + non-hex character in \x{} (closing brace missing?) + + + + non-octal character in \o{} (closing brace missing?) + + + + missing opening brace after \o + + + + parentheses are too deeply nested + + + + invalid range in character class + + + + group name must start with a non-digit + + + + parentheses are too deeply nested (stack check) + + + + digits missing in \x{} or \o{} + + + + + QSQLite2Driver + + Error opening database + + + + Unable to begin transaction + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + + QSQLite2Result + + Unable to fetch results + + + + Unable to execute statement + + + + + QSQLiteDriver + + Error opening database + + + + Error closing database + + + + Unable to begin transaction + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + + QSQLiteResult + + Unable to fetch row + + + + No query + + + + Unable to execute statement + + + + Unable to execute multiple statements at a time + + + + Unable to reset statement + + + + Unable to bind parameters + + + + Parameter count mismatch + + + + + QSaveFile + + Existing file %1 is not writable + + + + Filename refers to a directory + + + + Writing canceled by application + + + + + QScrollBar + + Scroll here + + + + Left edge + + + + Top + + + + Right edge + + + + Bottom + + + + Page left + + + + Page up + + + + Page right + + + + Page down + + + + Scroll left + + + + Scroll up + + + + Scroll right + + + + Scroll down + + + + + QSharedMemory + + %1: unable to set key on lock + + + + %1: create size is less then 0 + + + + %1: unable to lock + + + + %1: unable to unlock + + + + %1: key is empty + + + + %1: bad name + + + + %1: UNIX key file doesn't exist + + + + %1: ftok failed + + + + %1: unable to make key + + + + %1: system-imposed size restrictions + + + + %1: not attached + + + + %1: permission denied + + + + %1: already exists + + + + %1: doesn't exist + + + + %1: out of resources + + + + %1: unknown error %2 + + + + %1: invalid size + + + + %1: key error + + + + %1: size query failed + + + + + QShortcut + + Space + This and all following "incomprehensible" strings in QShortcut context are key names. Please use the localized names appearing on actual keyboards or whatever is commonly used. + + + + Esc + + + + Tab + + + + Backtab + + + + Backspace + + + + Return + + + + Enter + + + + Ins + + + + Del + + + + Pause + + + + Print + + + + SysReq + + + + Home + + + + End + + + + Left + + + + Up + + + + Right + + + + Down + + + + PgUp + + + + PgDown + + + + CapsLock + + + + NumLock + + + + ScrollLock + + + + Menu + + + + Help + + + + Back + + + + Forward + + + + Stop + + + + Refresh + + + + Volume Down + + + + Volume Mute + + + + Volume Up + + + + Bass Boost + + + + Bass Up + + + + Bass Down + + + + Treble Up + + + + Treble Down + + + + Media Play + + + + Media Stop + + + + Media Previous + + + + Media Next + + + + Media Record + + + + Media Pause + Media player pause button + + + + Toggle Media Play/Pause + Media player button to toggle between playing and paused + + + + Home Page + + + + Favorites + + + + Search + + + + Standby + + + + Open URL + + + + Launch Mail + + + + Launch Media + + + + Launch (0) + + + + Launch (1) + + + + Launch (2) + + + + Launch (3) + + + + Launch (4) + + + + Launch (5) + + + + Launch (6) + + + + Launch (7) + + + + Launch (8) + + + + Launch (9) + + + + Launch (A) + + + + Launch (B) + + + + Launch (C) + + + + Launch (D) + + + + Launch (E) + + + + Launch (F) + + + + Monitor Brightness Up + + + + Monitor Brightness Down + + + + Keyboard Light On/Off + + + + Keyboard Brightness Up + + + + Keyboard Brightness Down + + + + Power Off + + + + Wake Up + + + + Eject + + + + Screensaver + + + + WWW + + + + Sleep + + + + LightBulb + + + + Shop + + + + History + + + + Add Favorite + + + + Hot Links + + + + Adjust Brightness + + + + Finance + + + + Community + + + + Media Rewind + + + + Back Forward + + + + Application Left + + + + Application Right + + + + Book + + + + CD + + + + Calculator + + + + Clear + + + + Clear Grab + + + + Close + + + + Copy + + + + Cut + + + + Display + + + + DOS + + + + Documents + + + + Spreadsheet + + + + Browser + + + + Game + + + + Go + + + + iTouch + + + + Logoff + + + + Market + + + + Meeting + + + + Keyboard Menu + + + + Menu PB + + + + My Sites + + + + News + + + + Home Office + + + + Option + + + + Paste + + + + Phone + + + + Reply + + + + Reload + + + + Rotate Windows + + + + Rotation PB + + + + Rotation KB + + + + Save + + + + Send + + + + Spellchecker + + + + Split Screen + + + + Support + + + + Task Panel + + + + Terminal + + + + Tools + + + + Travel + + + + Video + + + + Word Processor + + + + XFer + + + + Zoom In + + + + Zoom Out + + + + Away + + + + Messenger + + + + WebCam + + + + Mail Forward + + + + Pictures + + + + Music + + + + Battery + + + + Bluetooth + + + + Wireless + + + + Ultra Wide Band + + + + Media Fast Forward + + + + Audio Repeat + + + + Audio Random Play + + + + Subtitle + + + + Audio Cycle Track + + + + Time + + + + Hibernate + + + + View + + + + Top Menu + + + + Power Down + + + + Suspend + + + + Microphone Mute + + + + Red + + + + Green + + + + Yellow + + + + Blue + + + + Channel Up + + + + Channel Down + + + + Guide + + + + Info + + + + Settings + + + + Microphone Volume Up + + + + Microphone Volume Down + + + + New + + + + Open + + + + Find + + + + Undo + + + + Redo + + + + Print Screen + + + + Page Up + + + + Page Down + + + + Caps Lock + + + + Num Lock + + + + Number Lock + + + + Scroll Lock + + + + Insert + + + + Delete + + + + Escape + + + + System Request + + + + Select + + + + Yes + + + + No + + + + Context1 + + + + Context2 + + + + Context3 + + + + Context4 + + + + Call + Button to start a call (note: a separate button is used to end the call) + + + + Hangup + Button to end a call (note: a separate button is used to start the call) + + + + Toggle Call/Hangup + Button that will hang up if we're in call, or make a call if we're not. + + + + Flip + + + + Voice Dial + Button to trigger voice dialing + + + + Last Number Redial + Button to redial the last number called + + + + Camera Shutter + Button to trigger the camera shutter (take a picture) + + + + Camera Focus + Button to focus the camera + + + + Kanji + + + + Muhenkan + + + + Henkan + + + + Romaji + + + + Hiragana + + + + Katakana + + + + Hiragana Katakana + + + + Zenkaku + + + + Hankaku + + + + Zenkaku Hankaku + + + + Touroku + + + + Massyo + + + + Kana Lock + + + + Kana Shift + + + + Eisu Shift + + + + Eisu toggle + + + + Code input + + + + Multiple Candidate + + + + Previous Candidate + + + + Hangul + + + + Hangul Start + + + + Hangul End + + + + Hangul Hanja + + + + Hangul Jamo + + + + Hangul Romaja + + + + Hangul Jeonja + + + + Hangul Banja + + + + Hangul PreHanja + + + + Hangul PostHanja + + + + Hangul Special + + + + Cancel + + + + Printer + + + + Execute + + + + Play + + + + Zoom + + + + Exit + + + + Touchpad Toggle + + + + Touchpad On + + + + Touchpad Off + + + + Ctrl + + + + Shift + + + + Alt + + + + Meta + + + + Num + + + + + + + + + F%1 + + + + + QSocks5SocketEngine + + Connection to proxy refused + + + + Connection to proxy closed prematurely + + + + Proxy host not found + + + + Connection to proxy timed out + + + + Proxy authentication failed + + + + Proxy authentication failed: %1 + + + + SOCKS version 5 protocol error + + + + General SOCKSv5 server failure + + + + Connection not allowed by SOCKSv5 server + + + + TTL expired + + + + SOCKSv5 command not supported + + + + Address type not supported + + + + Unknown SOCKSv5 proxy error code 0x%1 + + + + Network operation timed out + + + + + QSpiAccessibleBridge + + invalid role + Role of an accessible object - the object is in an invalid state or could not be constructed + + + + title bar + Role of an accessible object + + + + menu bar + Role of an accessible object + + + + scroll bar + Role of an accessible object + + + + grip + Role of an accessible object - the grip is usually used for resizing another object + + + + sound + Role of an accessible object + + + + cursor + Role of an accessible object + + + + text caret + Role of an accessible object + + + + alert message + Role of an accessible object + + + + frame + Role of an accessible object: a window with frame and title +---------- +Role of an accessible object + + + + filler + Role of an accessible object + + + + popup menu + Role of an accessible object + + + + menu item + Role of an accessible object + + + + tool tip + Role of an accessible object + + + + application + Role of an accessible object + + + + document + Role of an accessible object + + + + panel + Role of an accessible object + + + + chart + Role of an accessible object + + + + dialog + Role of an accessible object + + + + separator + Role of an accessible object + + + + tool bar + Role of an accessible object + + + + status bar + Role of an accessible object + + + + table + Role of an accessible object + + + + column header + Role of an accessible object - part of a table + + + + row header + Role of an accessible object - part of a table + + + + column + Role of an accessible object - part of a table + + + + row + Role of an accessible object - part of a table + + + + cell + Role of an accessible object - part of a table + + + + link + Role of an accessible object + + + + help balloon + Role of an accessible object + + + + assistant + Role of an accessible object - a helper dialog + + + + list + Role of an accessible object + + + + list item + Role of an accessible object + + + + tree + Role of an accessible object + + + + tree item + Role of an accessible object + + + + page tab + Role of an accessible object + + + + property page + Role of an accessible object + + + + indicator + Role of an accessible object + + + + graphic + Role of an accessible object + + + + label + Role of an accessible object + + + + text + Role of an accessible object + + + + push button + Role of an accessible object + + + + check box + Role of an accessible object + + + + radio button + Role of an accessible object + + + + combo box + Role of an accessible object + + + + progress bar + Role of an accessible object + + + + dial + Role of an accessible object + + + + hotkey field + Role of an accessible object + + + + slider + Role of an accessible object + + + + spin box + Role of an accessible object + + + + canvas + Role of an accessible object + + + + animation + Role of an accessible object + + + + equation + Role of an accessible object + + + + button with drop down + Role of an accessible object + + + + button menu + Role of an accessible object + + + + button with drop down grid + Role of an accessible object - a button that expands a grid. + + + + space + Role of an accessible object - blank space between other objects. + + + + page tab list + Role of an accessible object + + + + clock + Role of an accessible object + + + + splitter + Role of an accessible object + + + + layered pane + Role of an accessible object + + + + web document + Role of an accessible object + + + + paragraph + Role of an accessible object + + + + section + Role of an accessible object + + + + color chooser + Role of an accessible object + + + + footer + Role of an accessible object + + + + form + Role of an accessible object + + + + heading + Role of an accessible object + + + + note + Role of an accessible object + + + + complementary content + Role of an accessible object + + + + unknown + Role of an accessible object + + + + + QSqlConnectionDialog + + No database driver selected + + + + Please select a database driver + + + + + QSqlConnectionDialogUi + + Connect... + + + + Connection settings + + + + &Username: + + + + D&river + + + + Default + + + + Database Name: + + + + &Hostname: + + + + P&ort: + + + + &Password: + + + + Us&e predefined in-memory database + + + + &OK + + + + &Cancel + + + + + QSslSocket + + Error when setting the elliptic curves (%1) + + + + Error creating SSL context (%1) + + + + unsupported protocol + + + + Invalid or empty cipher list (%1) + + + + Cannot provide a certificate with no key, %1 + + + + Error loading local certificate, %1 + + + + Error loading private key, %1 + + + + Private key does not certify public key, %1 + + + + OpenSSL version too old, need at least v1.0.2 + + + + No error + + + + The issuer certificate could not be found + + + + The certificate signature could not be decrypted + + + + The public key in the certificate could not be read + + + + The signature of the certificate is invalid + + + + The certificate is not yet valid + + + + The certificate has expired + + + + The certificate's notBefore field contains an invalid time + + + + The certificate's notAfter field contains an invalid time + + + + The certificate is self-signed, and untrusted + + + + The root certificate of the certificate chain is self-signed, and untrusted + + + + The issuer certificate of a locally looked up certificate could not be found + + + + No certificates could be verified + + + + One of the CA certificates is invalid + + + + The basicConstraints path length parameter has been exceeded + + + + The supplied certificate is unsuitable for this purpose + + + + The root CA certificate is not trusted for this purpose + + + + The root CA certificate is marked to reject the specified purpose + + + + The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate + + + + The current candidate issuer certificate was rejected because its issuer name and serial number was present and did not match the authority key identifier of the current certificate + + + + The peer did not present any certificate + + + + The host name did not match any of the valid hosts for this certificate + + + + The peer certificate is blacklisted + + + + Unknown error + + + + The TLS/SSL connection has been closed + + + + Error creating SSL session, %1 + + + + Error creating SSL session: %1 + + + + Unable to init SSL Context: %1 + + + + Unable to write data: %1 + + + + Unable to decrypt data: %1 + + + + Error while reading: %1 + + + + Error during SSL handshake: %1 + + + + + QStandardPaths + + Desktop + + + + Documents + + + + Fonts + + + + Applications + + + + Music + + + + Movies + + + + Pictures + + + + Temporary Directory + + + + Home + + + + Cache + + + + Shared Data + + + + Runtime + + + + Configuration + + + + Shared Configuration + + + + Shared Cache + + + + Download + + + + Application Data + + + + Application Configuration + + + + + QStateMachine + + Missing initial state in compound state '%1' + + + + Missing default state in history state '%1' + + + + No common ancestor for targets and source of transition from state '%1' + + + + Unknown error + + + + + QSystemSemaphore + + %1: permission denied + + + + %1: already exists + + + + %1: does not exist + + + + %1: out of resources + + + + %1: unknown error %2 + + + + + QTDSDriver + + Unable to open connection + + + + Unable to use database + + + + + QTabBar + + Scroll Left + + + + Scroll Right + + + + + QTcpServer + + Operation on socket is not supported + + + + + QUndoGroup + + Undo %1 + + + + Undo + Default text for undo action + + + + Redo %1 + + + + Redo + Default text for redo action + + + + + QUndoModel + + <empty> + + + + + QUndoStack + + Undo %1 + + + + Undo + Default text for undo action + + + + Redo %1 + + + + Redo + Default text for redo action + + + + + QUnicodeControlCharacterMenu + + LRM Left-to-right mark + + + + RLM Right-to-left mark + + + + ZWJ Zero width joiner + + + + ZWNJ Zero width non-joiner + + + + ZWSP Zero width space + + + + LRE Start of left-to-right embedding + + + + RLE Start of right-to-left embedding + + + + LRO Start of left-to-right override + + + + RLO Start of right-to-left override + + + + PDF Pop directional formatting + + + + LRI Left-to-right isolate + + + + RLI Right-to-left isolate + + + + FSI First strong isolate + + + + PDI Pop directional isolate + + + + Insert Unicode control character + + + + + QWhatsThisAction + + What's This? + + + + + QWidget + + * + + + + + QWidgetTextControl + + &Undo + + + + &Redo + + + + Cu&t + + + + &Copy + + + + Copy &Link Location + + + + &Paste + + + + Delete + + + + Select All + + + + + QWindowsDirect2DIntegration + + Qt cannot load the direct2d platform plugin because the Direct2D version on this system is too old. The minimum system requirement for this platform plugin is Windows 7 SP1 with Platform Update. + +The minimum Direct2D version required is %1.%2.%3.%4. The Direct2D version on this system is %5.%6.%7.%8. + + + + Cannot load direct2d platform plugin + + + + + QWizard + + Go Back + + + + < &Back + + + + Continue + + + + &Next + + + + &Next > + + + + Commit + + + + Done + + + + &Finish + + + + Cancel + + + + Help + + + + &Help + + + + + QXml + + no error occurred + + + + error triggered by consumer + + + + unexpected end of file + + + + more than one document type definition + + + + error occurred while parsing element + + + + tag mismatch + + + + error occurred while parsing content + + + + unexpected character + + + + invalid name for processing instruction + + + + version expected while reading the XML declaration + + + + wrong value for standalone declaration + + + + encoding declaration or standalone declaration expected while reading the XML declaration + + + + standalone declaration expected while reading the XML declaration + + + + error occurred while parsing document type definition + + + + letter is expected + + + + error occurred while parsing comment + + + + error occurred while parsing reference + + + + internal general entity reference not allowed in DTD + + + + external parsed general entity reference not allowed in attribute value + + + + external parsed general entity reference not allowed in DTD + + + + unparsed entity reference in wrong context + + + + recursive entities + + + + error in the text declaration of an external entity + + + + + QXmlStream + + Extra content at end of document. + + + + Invalid entity value. + + + + Invalid XML character. + + + + Sequence ']]>' not allowed in content. + + + + Encountered incorrectly encoded content. + + + + Namespace prefix '%1' not declared + + + + Illegal namespace declaration. + + + + Attribute '%1' redefined. + + + + Unexpected character '%1' in public id literal. + + + + Invalid XML version string. + + + + Unsupported XML version. + + + + The standalone pseudo attribute must appear after the encoding. + + + + %1 is an invalid encoding name. + + + + Encoding %1 is unsupported + + + + Standalone accepts only yes or no. + + + + Invalid attribute in XML declaration. + + + + Premature end of document. + + + + Invalid document. + + + + Expected + + + + , but got ' + + + + Unexpected ' + + + + Expected character data. + + + + Recursive entity detected. + + + + Start tag expected. + + + + NDATA in parameter entity declaration. + + + + XML declaration not at start of document. + + + + %1 is an invalid processing instruction name. + + + + Invalid processing instruction name. + + + + %1 is an invalid PUBLIC identifier. + + + + Invalid XML name. + + + + Opening and ending tag mismatch. + + + + Entity '%1' not declared. + + + + Reference to unparsed entity '%1'. + + + + Reference to external entity '%1' in attribute value. + + + + Invalid character reference. + + + + + QueryPage + + Look for packages + + + + Name: + + + + Released after: + + + + Releases + + + + Upgrades + + + + Return up to + + + + results + + + + Return only the first result + + + + Start query + + + + + RSSListing + + Fetch + + + + Title + + + + Link + + + + RSS listing example + + + + + Receiver + + Listening for broadcasted messages + + + + &Quit + + + + Broadcast Receiver + + + + Received datagram: "%1" + + + + Listening for multicasted messages + + + + Multicast Receiver + + + + + RegExpDialog + + &Pattern: + + + + &Escaped Pattern: + + + + Regular expression v1 + + + + Regular expression v2 + + + + Wildcard + + + + Fixed string + + + + W3C Xml Schema 1.1 + + + + &Pattern Syntax: + + + + &Text: + + + + Case &Sensitive + + + + &Minimal + + + + Index of Match: + + + + Matched Length: + + + + Capture %1: + + + + Match: + + + + [A-Za-z_]+([A-Za-z_0-9]*) + + + + (10 + delta4) * 32 + + + + RegExp + + + + + RegisterPage + + Register Your Copy of <i>Super Product One</i>&trade; + + + + If you have an upgrade key, please fill in the appropriate field. + + + + N&ame: + + + + &Upgrade key: + + + + + RegularExpressionDialog + + QRegularExpression Example + + + + (\+?\d+)-(?<prefix>\d+)-(?<number>\w+) + + + + My office number is +43-152-0123456, my mobile is 001-41-255512 instead. + + + + Valid + + + + <no name> + + + + Invalid: syntax error at position %1 (%2) + + + + <h3>Regular expression and text input</h3> + + + + &Pattern: + + + + Copy to clipboard + + + + &Escaped pattern: + + + + &Subject text: + + + + Case insensitive (/i) + + + + Dot matches everything (/s) + + + + Multiline (/m) + + + + Extended pattern (/x) + + + + Inverted greediness + + + + Don't capture + + + + Use unicode properties (/u) + + + + Optimize on first usage + + + + Don't automatically optimize + + + + Pattern options: + + + + Match &offset: + + + + Normal + + + + Partial prefer complete + + + + Partial prefer first + + + + No match + + + + Match &type: + + + + Don't check subject string + + + + Anchored match + + + + Match options: + + + + <h3>Match information</h3> + + + + Match index + + + + Group index + + + + Captured string + + + + Match details: + + + + <h3>Regular expression information</h3> + + + + Pattern status: + + + + Index + + + + Named group + + + + Named groups: + + + + + RenderArea + + Qt by +The Qt Company + + + + x + + + + y + + + + + RenderOptionsDialog + + Options (double click to flip) + + + + Dynamic cube map + + + + Texture: + + + + Shader: + + + + + RenderWindow + + makeCurrent() failed + + + + + Screenshot + + Options + + + + s + + + + Hide This Window + + + + Screenshot Delay: + + + + New Screenshot + + + + Save Screenshot + + + + Quit + + + + Screenshot + + + + /untitled. + + + + Save As + + + + Save Error + + + + The image could not be saved to "%1". + + + + + Sender + + Ready to broadcast datagrams on port 45454 + + + + &Start + + + + &Quit + + + + Broadcast Sender + + + + Now broadcasting datagram %1 + + + + Ready to multicast datagrams to group %1 on port 45454 + + + + TTL for multicast datagrams: + + + + Multicast Sender + + + + Now sending datagram %1 + + + + + Server + + Quit + + + + Fortune Server + + + + Unable to start the server: %1. + + + + The server is running. +Run the Fortune Client example now. + + + + You've been leading a dog's life. Stay off the furniture. + + + + You've got to think about tomorrow. + + + + You will be surprised by a loud noise. + + + + You will feel hungry again in another hour. + + + + You might have mail. + + + + You cannot kill time without injuring eternity. + + + + Computers are not intelligent. They only think they are. + + + + Opening network session. + + + + The server is running on + +IP: %1 +port: %2 + +Run the Fortune Client example now. + + + + + SessionWidget + + Session Details + + + + Session ID: + + + + Session State: + + + + Invalid + + + + Configuration: + + + + Bearer: + + + + Interface Name: + + + + Interface GUID: + + + + Last Error: + + + + Error String: + + + + 0 + + + + Active Time: + + + + 0 seconds + + + + Open + + + + Blocking Open + + + + Close + + + + Stop + + + + %1 (%2) + + + + Not Available + + + + Connecting + + + + Connected + + + + Closing + + + + Disconnected + + + + Roaming + + + + Unknown + + + + Closed + + + + + SettingsTree + + Setting + + + + Type + + + + Value + + + + + ShapedClock + + E&xit + + + + Ctrl+Q + + + + Drag the clock with the left mouse button. +Use the right mouse button to open a context menu. + + + + Shaped Analog Clock + + + + + SortingBox + + New Circle + + + + New Square + + + + New Triangle + + + + Tool Tips + + + + Circle + + + + Square + + + + Triangle + + + + Circle <%1> + + + + Square <%1> + + + + Triangle <%1> + + + + + SplashItem + + Welcome to the Pad Navigator Example. You can use the keyboard arrows to navigate the icons, and press enter to activate an item. Press any key to begin. + + + + + SpreadSheet + + Spreadsheet + + + + Sum + + + + &Add + + + + &Subtract + + + + &Multiply + + + + &Divide + + + + Font... + + + + Background &Color... + + + + Clear + + + + About Spreadsheet + + + + E&xit + + + + &Print + + + + &File + + + + &Cell + + + + &Help + + + + Cell: (%1) + + + + Cancel + + + + OK + + + + Sum cells + + + + First cell: + + + + Last cell: + + + + Output to: + + + + sum %1 %2 + + + + Cell 1 + + + + Cell 2 + + + + %1 %2 %3 + + + + Addition + + + + Subtraction + + + + Multiplication + + + + Division + + + + + SslClient + + &lt;not connected&gt; + + + + <none> + + + + Display encryption details. + + + + Connection error + + + + + SslErrors + + Unable To Validate The Connection + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#ff0000;">Warning</span><span style=" color:#ff0000;">:</span><span style=" color:#000000;"> One or more errors with this connection prevent validating the authenticity of the host you are connecting to. Please review the following list of errors, and click </span><span style=" color:#000000;">Ignore</span><span style=" color:#000000;"> to continue, or </span><span style=" color:#000000;">Cancel</span><span style=" color:#000000;"> to abort the connection.</span></p></body></html> + + + + View Certificate Chain + + + + Ignore + + + + Cancel + + + + + StorageModel + + 0 b + + + + %1 %2 + this should expand to "1.23 GB" + + + + Root path : %1 +Name: %2 +Display Name: %3 +Device: %4 +FileSystem: %5 +Total size: %6 +Free size: %7 +Available size: %8 +Is Ready: %9 +Is Read-only: %10 +Is Valid: %11 +Is Root: %12 + + + + true + + + + false + + + + Root path + + + + Volume Name + + + + Device + + + + File system + + + + Total + + + + Free + + + + Available + + + + Ready + + + + Read-only + + + + Valid + + + + + StyleSheetEditor + + Style Editor + + + + Default + + + + Coffee + + + + Pagefold + + + + Style: + + + + &Apply + + + + Style Sheet: + + + + + StyleWidget + + Form + + + + Styles + + + + Transp. + + + + Blue + + + + Khaki + + + + None + + + + Value: + + + + Show + + + + Enable + + + + Close + + + + + StyleWindow + + Big Red Button + + + + A simple style button + + + + Style Plugin Example + + + + + TabDialog + + General + + + + Permissions + + + + Applications + + + + Tab Dialog + + + + + TableEditor + + ID + + + + First name + + + + Last name + + + + Submit + + + + &Revert + + + + Quit + + + + Cached Table + + + + The database reported an error: %1 + + + + + TableModel + + Name + + + + Address + + + + + TabletCanvas + + This input device is not supported by the example. + + + + Unknown tablet device - treating as stylus + + + + + TestWidget + + But soft, what light through yonder window breaks? / It is the east, and Juliet is the sun. / Arise, fair sun, and kill the envious moon, / Who is already sick and pale with grief / That thou, her maid, art far more fair than she. + + + + To-morrow, and to-morrow, and to-morrow, / Creeps in this petty pace from day to day, / To the last syllable of recorded time; / And all our yesterdays have lighted fools / The way to dusty death. Out, out, brief candle! / Life's but a walking shadow, a poor player, / That struts and frets his hour upon the stage, / And then is heard no more. It is a tale / Told by an idiot, full of sound and fury, / Signifying nothing. + + + + Feeling lucky, punk? + + + + Switch text + + + + Exit + + + + Elided + + + + + TetrixBoard + + Pause + + + + + TetrixWindow + + &Start + + + + &Quit + + + + &Pause + + + + NEXT + + + + LEVEL + + + + SCORE + + + + LINES REMOVED + + + + Tetrix + + + + + TextEdit + + Help + + + + About + + + + About &Qt + + + + File Actions + + + + &File + + + + &New + + + + &Open... + + + + &Save + + + + Save &As... + + + + &Print... + + + + Print Preview... + + + + &Export PDF... + + + + &Quit + + + + Edit Actions + + + + &Edit + + + + &Undo + + + + &Redo + + + + Cu&t + + + + &Copy + + + + &Paste + + + + Format Actions + + + + F&ormat + + + + &Bold + + + + &Italic + + + + &Underline + + + + &Left + + + + C&enter + + + + &Right + + + + &Justify + + + + &Color... + + + + The document has been modified. +Do you want to save your changes? + + + + %1[*] - %2 + + + + Open File... + + + + Opened "%1" + + + + Could not open "%1" + + + + Wrote "%1" + + + + Could not write to file "%1" + + + + Save as... + + + + Print Document + + + + Export PDF + + + + Exported "%1" + + + + This example demonstrates Qt's rich text editing facilities in action, providing an example document for you to experiment with. + + + + This TextEdit provides autocompletions for words that have more than 3 characters. You can trigger autocompletion using + + + + + ToolBar + + Order Items in Tool Bar + + + + Randomize Items in Tool Bar + + + + Add Spin Box + + + + Remove Spin Box + + + + Movable + + + + Allow on Left + + + + Allow on Right + + + + Allow on Top + + + + Allow on Bottom + + + + Place on Left + + + + Place on Right + + + + Place on Top + + + + Place on Bottom + + + + Insert break + + + + + UpdatePage + + Package selection + + + + Update system + + + + Update applications + + + + Update documentation + + + + Existing packages + + + + Qt + + + + QSA + + + + Teambuilder + + + + Start update + + + + + ValidatorsForm + + Validators + + + + QIntValidator + + + + Min: + + + + Max: + + + + editingFinished() + + + + QDoubleValidator + + + + Format: + + + + Standard + + + + Scientific + + + + Decimals: + + + + Quit + + + + + View + + 0 + + + + Pointer Mode + + + + Select + + + + Drag + + + + Antialiasing + + + + OpenGL + + + + + Widget + + Context &version: + + + + Create context + + + + Profile + + + + Options + + + + Renderable type + + + + Failed to create context + + + + OpenGL version: %1.%2 + + + + Profile: %1 + + + + Options: %1 + + + + Renderable type: %1 + + + + Depth buffer size: %1 + + + + Stencil buffer size: %1 + + + + Samples: %1 + + + + Red buffer size: %1 + + + + Green buffer size: %1 + + + + Blue buffer size: %1 + + + + Alpha buffer size: %1 + + + + Swap interval: %1 + + + + *** Context information *** + + + + Vendor: %1 + + + + Renderer: %1 + + + + OpenGL version: %1 + + + + GLSL version: %1 + + + + +*** QSurfaceFormat from context *** + + + + +*** QSurfaceFormat from window surface *** + + + + +*** Qt build information *** + + + + Qt OpenGL configuration: %1 + + + + Qt OpenGL library handle: %1 + + + + Found %1 extensions: + + + + An error has occurred: +%1 + + + + + WidgetGallery + + &Style: + + + + &Use style's standard palette + + + + &Disable widgets + + + + Styles + + + + Group 1 + + + + Radio button 1 + + + + Radio button 2 + + + + Radio button 3 + + + + Tri-state check box + + + + Group 2 + + + + Default Push Button + + + + Toggle Push Button + + + + Flat Push Button + + + + Twinkle, twinkle, little star, +How I wonder what you are. +Up above the world so high, +Like a diamond in the sky. +Twinkle, twinkle, little star, +How I wonder what you are! + + + + + &Table + + + + Text &Edit + + + + Group 3 + + + + + Window + + &Load image... + + + + &Stop + + + + Queued Custom Type + + + + Open Image + + + + Image files (%1) + + + + &Send message + + + + Custom Type Sending + + + + Na&me: + + + + &Address: + + + + &Type: + + + + &Next + + + + &Previous + + + + SQL Widget Mapper + + + + Cannot open database + + + + Unable to establish a database connection. +This example needs SQLite support. Please read the Qt SQL driver documentation for information how to build it. + + + + Systray + + + + The program will keep running in the system tray. To terminate the program, choose <b>Quit</b> in the context menu of the system tray entry. + + + + Sorry, I already gave what help I could. +Maybe you should try asking a human? + + + + Tray Icon + + + + Bad + + + + Heart + + + + Trash + + + + Show icon + + + + Balloon Message + + + + Type: + + + + None + + + + Information + + + + Warning + + + + Critical + + + + Duration: + + + + (some systems might ignore this hint) + + + + Title: + + + + Cannot connect to network + + + + Body: + + + + Don't believe me. Honestly, I don't have a clue. +Click this balloon for details. + + + + Show Message + + + + Mi&nimize + + + + Ma&ximize + + + + &Restore + + + + &Quit + + + + &Browse... + + + + &Find + + + + * + + + + Named: + + + + Containing text: + + + + In directory: + + + + Find Files + + + + &Cancel + + + + Searching file number %1 of %n... + + + + + + + %1 KB + + + + %n file(s) found (Double click on a file to open it) + + + + + + + Filename + + + + Size + + + + Basic Graphics Layouts Example + + + + Case sensitive sorting + + + + Case sensitive filter + + + + &Filter pattern: + + + + Regular expression + + + + Wildcard + + + + Fixed string + + + + Filter &syntax: + + + + Subject + + + + Sender + + + + Date + + + + Filter &column: + + + + Original Model + + + + Sorted/Filtered Model + + + + Basic Sort/Filter Model + + + + Alice + + + + Neptun + + + + Ferdinand + + + + Name + + + + Hair Color + + + + Color Editor Factory + + + + Delegate Widget Mapper + + + + Home + + + + Work + + + + Other + + + + F&rom: + + + + &To: + + + + Custom Sort/Filter Model + + + + &Directory: + + + + Fetch More Example + + + + %1 items added. + + + + A&ge (in years): + + + + Simple Widget Mapper + + + + Central widget + + + + Border Layout + + + + Short + + + + Longer + + + + Different text + + + + More text + + + + Even longer button text + + + + Flow Layout + + + + Polygon + + + + Rectangle + + + + Rounded Rectangle + + + + Ellipse + + + + Pie + + + + Chord + + + + Path + + + + Line + + + + Polyline + + + + Arc + + + + Points + + + + Text + + + + Pixmap + + + + &Shape: + + + + 0 (cosmetic pen) + + + + Pen &Width: + + + + Solid + + + + Dash + + + + Dot + + + + Dash Dot + + + + Dash Dot Dot + + + + &Pen Style: + + + + Flat + + + + Square + + + + Round + + + + Pen &Cap: + + + + Miter + + + + Bevel + + + + Pen &Join: + + + + Linear Gradient + + + + Radial Gradient + + + + Conical Gradient + + + + Texture + + + + Horizontal + + + + Vertical + + + + Cross + + + + Backward Diagonal + + + + Forward Diagonal + + + + Diagonal Cross + + + + Dense 1 + + + + Dense 2 + + + + Dense 3 + + + + Dense 4 + + + + Dense 5 + + + + Dense 6 + + + + Dense 7 + + + + &Brush: + + + + Options: + + + + &Antialiasing + + + + &Transformations + + + + Basic Drawing + + + + Aliased + + + + Antialiased + + + + Int + + + + Float + + + + Concentric Circles + + + + Qt + + + + Odd Even + + + + Winding + + + + Fill &Rule: + + + + &Fill Gradient: + + + + to + + + + &Pen Width: + + + + Pen &Color: + + + + &Rotation Angle: + + + + Painter Paths + + + + Clock + + + + House + + + + Truck + + + + No transformation + + + + Rotate by 60° + + + + Scale to 75% + + + + Translate by (50, 50) + + + + Transformations + + + + Calendar Widget + + + + Bold + + + + Italic + + + + Green + + + + Preview + + + + General Options + + + + &Locale + + + + Sunday + + + + Monday + + + + Tuesday + + + + Wednesday + + + + Thursday + + + + Friday + + + + Saturday + + + + Wee&k starts on: + + + + Single selection + + + + &Selection mode: + + + + &Grid + + + + &Navigation bar + + + + Single letter day names + + + + Short day names + + + + &Horizontal header: + + + + ISO week numbers + + + + &Vertical header: + + + + Dates + + + + &Minimum Date: + + + + &Current Date: + + + + Ma&ximum Date: + + + + Text Formats + + + + Black + + + + &Weekday color: + + + + Red + + + + Week&end color: + + + + Plain + + + + &Header text: + + + + &First Friday in blue + + + + May &1 in red + + + + Blue + + + + Magenta + + + + Group Boxes + + + + Exclusive Radio Buttons + + + + &Radio button 1 + + + + R&adio button 2 + + + + Ra&dio button 3 + + + + E&xclusive Radio Buttons + + + + Rad&io button 1 + + + + Radi&o button 2 + + + + Radio &button 3 + + + + Ind&ependent checkbox + + + + Non-Exclusive Checkboxes + + + + &Checkbox 1 + + + + C&heckbox 2 + + + + Tri-&state button + + + + &Push Buttons + + + + &Normal Button + + + + &Toggle Button + + + + &Flat Button + + + + Pop&up Button + + + + &First Item + + + + &Second Item + + + + &Third Item + + + + F&ourth Item + + + + Submenu + + + + Popup Submenu + + + + Item 1 + + + + Item 2 + + + + Item 3 + + + + Echo + + + + Mode: + + + + Normal + + + + Password + + + + PasswordEchoOnEdit + + + + No Echo + + + + Validator + + + + No validator + + + + Integer validator + + + + Double validator + + + + Alignment + + + + Left + + + + Centered + + + + Right + + + + Input mask + + + + No mask + + + + Phone number + + + + ISO date + + + + License key + + + + Access + + + + Read-only: + + + + False + + + + True + + + + Line Edits + + + + Controls + + + + Sliders + + + + Minimum value: + + + + Maximum value: + + + + Current value: + + + + Inverted appearance + + + + Inverted key bindings + + + + Horizontal slider-like widgets + + + + Vertical slider-like widgets + + + + Spin Boxes + + + + Spinboxes + + + + Enter a value between %1 and %2: + + + + Enter a zoom value between %1 and %2: + + + + Automatic + + + + Enter a price between %1 and %2: + + + + Show group separator + + + + Date and time spin boxes + + + + Appointment date (between %0 and %1): + + + + Appointment time (between %0 and %1): + + + + Format string for the meeting date and time: + + + + Meeting date (between %0 and %1): + + + + Meeting time (between %0 and %1): + + + + Double precision spinboxes + + + + Number of decimal places to show: + + + + Enter a scale factor between %1 and %2: + + + + No scaling + + + + 2D Painting on Native and OpenGL Widgets + + + + Native + + + + OpenGL + + + + Undock + + + + Hello GL + + + + Dock + + + + Cannot dock + + + + Main window already closed + + + + Main window already occupied + + + + Textures + + + + + XFormWidget + + Affine Transformations + + + + Rotate + + + + Scale + + + + Shear + + + + Type + + + + Vector Image + + + + Pixmap + + + + Text + + + + Reset Transform + + + + Animate + + + + Show Source + + + + Use OpenGL + + + + What's This? + + + + + XbelTree + + Title + + + + Location + + + + DOM Bookmarks + + + + Parse error at line %1, column %2: +%3 + + + + The file is not an XBEL file. + + + + The file is not an XBEL version 1.0 file. + + + + + XmlStreamLint + + Usage: xmlstreamlint <path to XML file> + + + + + File %1 does not exist. + + + + + Failed to open file %1. + + + + + Failed to open stdout. + + + + Error: %1 in file %2 at line %3, column %4. + + + + + + childwidget + + Child widget + + + + Press me + + + + + contekst + + Intro + + + + Introx + + + + + nestedlayouts + + Query: + + + + Name + + + + Office + + + + Nested layouts + + + + + simpleanchorlayout + + QGraphicsAnchorLayout in use + + + + Simple Anchor Layout + + + + + toplevel + + Top-level widget + + + + + tst_QKeySequence + + Shift++ + + + + Ctrl++ + + + + Alt++ + + + + Meta++ + + + + Shift+,, Shift++ + + + + Shift+,, Ctrl++ + + + + Shift+,, Alt++ + + + + Shift+,, Meta++ + + + + Ctrl+,, Shift++ + + + + Ctrl+,, Ctrl++ + + + + Ctrl+,, Alt++ + + + + Ctrl+,, Meta++ + + + + + tst_QLocale + + tr_TR + + + + + windowlayout + + Name: + + + + Window layout + + + + diff --git a/res/qtbase_fr.qm b/res/qtbase_fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..8353f0a934abaea9c5523e2318dded0974e5f3e1 GIT binary patch literal 166157 zcmd3P2Ygi3*6%u#=`)#x5PES$5_+VIQbR&$p`-vJicFG8GLU5AWCBFR0$4$8pdczL z#fFFq7DTYXRgi11U_lWCd*Ry4`>(y{lu2fi-22_{z4!BnE0fIGd+pWN+H3DK?8%b0 z`@g+?)jv<|xO>js&wMzV==A%Ds3)2FoB-@a%DT&l%%e!LYzE8(d<}3kDb@~vS%4z} zvjNutjv>W%E?^Ge@{G9d-DKE?-I(r)_FSRE+Cq&AtYcS^=Qf}=* zbS}R4HfVX?LQ+h-iOvUYlg|)PdFKbBx-wF}36Ron2hniw^sO;OBS(>G_X}9xOfp}! zmT2Ne0hN0)$b8*3q}&6x+`OHX^}mz(madrNO2Ap*+iWtg?oG0-QzWcdjG)%O{{R^a%+^0AKuG84dj210NrHp3GnMCE9k2 zg!?K5R8D(J!bctx&@^}*nSa9fA4?U`lc9rW&UL_lR^0^mkc zPT4`0Qpj$>PXa1kmr1y1G+D~tCS~YvWT|+Tl)VSZ5&}Q|QA?I(kk^;S2xvO(0|~nx zC(ClC-w$M2y_b}h4e&U#J#`=WDADw_fcW0@SE24HL^Bcq7XzL_Jz0+L+904Q!%jWlfer9~ zMLi)$rhz-DSI%Cd$Cgm9+>`kHIrU<`js1;!Era~F84LI@G zaSP7G@AuI7ZqWC0C(`)3qhw0Cnqfs*Mk!&_Z;y3!S$581kbm-jdFj#9Jc5Vnq-0;1D zLiyK1KIg2W{PpWex#Bv?e#e$OGK zq?&2|QhfeuHeJYgd^d_Ntbkql&P^BAr9nS0rHjq8A&38>OV=$S#Xo`;|FM@$^Z_l| zyN{IIy|i@x_3*n_325rGg06b&5mFv4q^n!JPfA`MEh|N=QL&7c_sD|%NTC%2b4lrb zAFUX)1@H^HVQ?1YbsMcZ-ko+w=MYfZadnyy^1LPsDz6KOSse_;e##-zsQ&Hy9)$Vu6aPh>lV?=9o`~Jut<2p z<@EARlSs+vNUym@6aDiKdh@qJGM!pW?-!3JTDOKi>XATn%4|AvI@W1_2k=o+9IXI> zx1$gccsp(e+z$8#9a#aresL{*_Gc~huOA)j4tqXyH+?Z_2jp@+eRFLsDc2vMA71g1 zGX5OJb_jgDd#BQFuAj(ruF}CZ8UDSa(qZ2QqV;zv9e+rM{jN|t4f~8t*-oYNyMut| z3Z?T8mymMtElSrp)ui-KRMMsu62115(tR&twHeH06o<*w z?tUfXTiBUSgOp)qp!1i%DI-(EMBy7dy zshmG?C()ffl{uN2(9d5LUp``-aqAWT$veT9=M?`>fM>m?R9tlxDL1;6iaYz0^4rHs z#a)1*(Mshx``|Y(Rw_?yAsW?JnZM#I_|1jNg2y3m``arEpMrd?xK6oZEcEmISCr+? zUV%8yqO6%)KuX~m%G$fUuqS(!yFBm%f$hp&$u?5v_EPSCbq1MwI+XkRCqwU6D-T^! zMzmsy^3a#r(1X#+_H7x6120t`&;N)_xvi8Z-nWx7u~ON6hpFFtU5O5SVH#F>KPd|8W|2)OdsnJ&2GGx*(O zrukv`$Ie#^sNA;1bn%(@kTT;9)AjxSguVUMw6e=CGEJy7t(*qAY^RuR@f{|m%}s!x z0Db`YDJgB!0Wn_NYSWq-@Y|_{fHwht33xLptp)+&`Bs+#t^(W#cnc}5TLRt+cpl(t zzqN@g)9$>!~yjjA> zCYc_(5zn<=V|w@??A5#*OxtGP4f>I3+Y;E*(LGF$vmdzYZ2?UgqfJlbLr%?~nx0^L z-=nu_$Itkjd4Xx?B^i*9W2R?L*+t~+XWF%R8{mxsnmV3o+I9Qyr0oCGv>Sg{R^4FQ zJ?1FjVbinto^nfX)1He~kg4nArWc1lLiC>3bf^R5X5K@lLoc)=<^8)%pXOq`Z!a}{ zwm~7~u;ZH*ZRIc4A;SJZA{`DU6o^7X_{`K7? z#4*VUmcf2fo*9*3xuTeqy0a5n9Q=e#$+Hqt?*zX-_#vVFA1ScI;}SYt06eD_C3HNF zbzj~xp|dp%zwJ!$ezBO8+xjM)`l=s!Xy=6VC+{TFlz9o=pF9)x>eqxGZ+C|Oc{!nH zci8ci%K%rB;&~Skd`)T#2)-uG1iTCIHo&_94*^21k~;#f2RsiDb|m>uK=3#DW57+| zvlsAQz>Nt#PscjmwkPz=guY+?cS5ga4)DjH(CbbQ(dW-5^qvg-|J#Yx+!7QKPSVkyp)jBI!MZ_3lk;=@V%SM5~e(e=YL(CFzffd$Pu?B zoLigP2d`!m+D?d^m)hg%Xo+9#p-9mvl!&n1)`{TK9oMMCM3J!G1?CSk4}{%Xe7 zgvv0U`!ge<`t(Ag3FjwVa0>YN)8h%@k84ReG&iBP`*!3X%MupN^O5p#AmOr)VAlo@ zPPqITj91(>;p)TiBY)3MSk~zqQcj~JoOFi;mxll?A+Q0e)Y|Soqyj;^x$s^&zciR8M8UzIrm`1 zAIlS7VE(;5Heqiq%$~dcZzCVIDQ-3R0E~F=vI$MAvmRk6&0o)M~IfxBdI1+?Q<5KRSX; z)4P~wPWptX{1)@fgSBMpR%1Rt2!53Y%ta~FNI7S=x%i?i`1c&ZY{2<|V*odqOWvx& zdP~gy8pwzBNAtYw5kwtdGgm!mCgtzT&6hn5K9zrIUQ&(tZ^C=#s}~|3oOPdh`Bkl8 z|L-@iID|O3Z6EV3+aRCS*PCxa&Z*pd$b9R8y`+rTZC*Vd@mQC?BpiQC!j0bwXd1M_ zyr%o3u#3-|*CmW6<;jJBGXb{&1^~YUtRv;A-hkJT^2F7EYXJ8E-jBZ%;8TFZ08ile z$$-BC=9<@WeQ3u@Ks@)<20%Rb)L}q8x1%E0O42<7HY!5831$$Z~4tBCA3n>Y7{9iH4-!n@ZA zs61d2&~*Ck=FJbHmhmy`J+GBAphJ2lWuBGMX zqp&xlEbaE5BxPxZrG2YBGIcs)X}@zZ(UlV{9e#s8UUY}$lnt;4j)Rs{9*19^KEmR? zqJosi4_dmmK0odTAuw_I)@U`oWmXTf76Frn-$$9k!GNq2RO!Q19Q-@)e z+`pfL-V|FVeFJ@2pJJKJan6~yTc%tzij++UEz@tl7~}lYa^67b$tm|+&f9$_(Z%f~ zT;j6$2g2{3@|ndycql2}HkPujvq{YR^P77NW)Gb0> z+ud@>+HIszKg+UfP~Y(Gvn(GJMjp4-vOEWVpzuY@@|`P?zqPa6Y=>MGO}E@K#DUKX zEvv_-5tX?uYu?*V^u-~|+N%+#yu8%1_P#w>=ed^Kdu_ny9hN&gL;lh}vTT@h87X~k zwrqH1Cef-lEe~9SxGSxrW%E#sTas_tJmND_j2+v<~wPnjf#0Mo; zTDG2fF8sqImaSKVPOqM3*?N5qK7Vf6{t@u-JYjkK>bJ?{>STFxIppD^zts?v*bq0TkQg*{Q8*X;5o2+g`+Ho0-(p+pIQ!GxQr;X zhvnlPu)_%}Ek_cto)NPxN8m4%)n{2gyM80)`@?eVoWF>kY-9Pn6ngvihn6pH1>Js| zVfpgzjbt*_SibHBd;I9NmS0wnA!YU?%O3;E5MS)E{BiQ(zeLUR@+sD| zk&y4#CtG{`0Dtt&57u65A(uU!)?SaoZw;Mg?e*;dQkIRf_U?-BT~ug2{p1y-jM``I zJ9j)OC3fq;j+YP}$+Qms=TyXxKUoLAih9z^Io2V4kUw}QSci4Ef=uoN>#$DnN2>zX z%=N2K4|&*{o%A{U&zshH8&IfufsO0ly-|U4x9<$~jfIoTc6>C8$=;Qy;TClf@l=M35G!w?TYORE?t+G!0 zs1SN;wodO}jJTksb>^O@VV}&_a|S|BZRyr?UVa^ZY$D(rfJ*@11biCsEx;eGvy@h_ zyFXaZo7WTcO|#Ap_9x|sYpk;`*$ViMb@mbXuaVzb&!39#zx$i@{A$3VEv<9T_!lV? zmRd{8-bWp_vvpqHE;3Df+*;LjAnE|$Sc8Y4zmt=#)dL|X8Q)l|zXzQ^Nw;2bybJv7 z7VAY;#4|0&2&jx4Y+Y1)1N5!x8N5I427-nVlN;(>|Q2ktlt{$69|Gb2-2O;6s zR0+TRR>EKYmhg`q)&qmiB)V*(^}wiah+Mm@uk}a#cWjOI_3J)IJ!rV~ow@w^BkOy; z+7T_tw!ZiG38GsLS`SVxAo}G}>xVP4k!PG?J+gflQPwQ$(SC?qTi$3rHo7w@(=M`p zIS=;hy&={w!+(+T^#|6ke1D-%_@?!%x-CRU4_Lo?dK%F?hpk_Il@C2zXZ@z+a=3+c z*1sMeO{T2r*1tX}C;I6r8&$uAI?-aAvH;J0Il^YTsVnsCDx3Kh_<`H5wAr^qPA06i zrSwii{Ug=Z?it{H>S~+!iW{-MXKj6-0YAPwVe9`@d!k`K+XmnCI`XvjwzCGnADnj3 zHsbZ3u-A3AkwanEExl}6tKm;y+hfb_^d9g~Y!mw4iM%b_CiKpB86fn+m28`KG2+5a zr`pcloJ`6YkK4{W9rE(PYc^kKFYLn}TWLSom)5V?Dt;(IUG#vhYRFMCS=ZZYa^R0I zOt#f-v5``nX1kc5A40Z83(f%^FWVN~hV`vHU|YI!HvHy4ZOao{p|0?qZTYLnU$fTQ zZaC*Az*i-F@e|v+N5F^qKHELNVcp-pZd?CLSE7}5wyk5oM!n@5+txWw#EmJotrr51 za6j84Er%g)`p&j(;xN<|PqA&=2|t)T*Y^AqkpEkc3217UZ`*51Mcu8`_K$ZTBV}aR z_VSRcNSS-L?d_~R(8mvKZ3-Dx}MhreIeXdpnM|&%4!r+NF;Yy?@xAb`$KzI--d2b{c-G!)E&NZ< zQTAR>_CP$p)}Hb63Nq!5w)dU268Xph`@q*ML^%caLG#9tGU;;r@FkxD&yE6`+P`fd z(JupZ8)+Yj-_!cx65c=6K57E!dT*XRD?A?KoM#_X3ORSbZqNA*_@q2%AOGzih_j3A zlXpxd<++RP)6<|&)dwUD^|GHm4fLPd*FJkvOXQo!072K30rvA(fKC+w`<$akNm=uf zy~vskKRm@=H1-LiHC}tsYzykAW9;SQS0V0NX%Bn>zJC3ly%OY7o_)~1upj)&rnBuA z_JrNN=VSXNf59$&b(?+heI-OcEV5ra4e`PHW%gy8-v|7MeU*avVE7&ORmE6m?IrfL z4-X{zeztwncJQNYr2W2@h%>j3us?7I^u6;@0hK$}+BX-SgkAg9{^SGDgJWmgcO+LL zPT6aJItB4q*CYwkI@oun!H!=4mwo3$Zz2D@)BenI=$KRi8?=#O#s zAFKDlejT>|y0IVp{_pnR(n06D&bR;ZEBHBevHj2C_mgr#vBUfs@a*}J!?Fl;eq@`& zeu1ATbi2cGa0BXuwSXIuHw7JzlO?2lbcLhk*O2Fj?w0WDGDpYEV$|E8aCAHfdL2CC z=rRv}_vQ(X0k;94cZwXtCjN!|?4V=Th&9MJ${j_->)h@rx}k_n=|dewJLkX-&vq2; znuEH|`;M|{KM-wt-%-8`a^1eYqr!I*`OT>k?(5;GDE%I8Ypmmf3zwr#a)qO&59EAk zx+DDcWTNBOI~HC5|2N+5SbXtbqBkCOT>HcX)TMSimWSU&9QwCo`8(K$qBO?}2jZbg z6^>PPm^bxK$1NuoV}JHq$8Af`B;{PMW8KD&uxCBPvF_ko@OOVW?s;qv{MUmL9$4+p( zm>NT>aeGf}6R=X33j|RKm4gP_3MsAryg*g`s6RL zTW)8!?k^BoW=MGdW6mC>pj+D=&K}#LSN#S#d!Bw2cx`a@L>*nRR68?90Pp+GcJ{yb zC{e#{&NFI%Bva-d=g{lkCt4eF4sZJz^l+4OYNj<=>mH=%$fH! zKKI<@%s;dR@o+0=VVwhU@-5E7zu;HaPjyb4I}r7p_nkAj?;yS0d2aYl_=y7Nc{c*S zdxLX!I_R{MoO2$rATL@cpmOy!5-y+ZEHXo1H;!=@cL(0X`Z1}*@z$2xotqdw+}?TLgnii8wma`1(3X^{GUo%AV!qCO1yt75I5($NBWk?Nxw-ch z7%%L6^jKHq?N;YgBSP@&*EydWb1Kn|)y`+C@Oj@a&S!$~Bm2*A?w(`D`V{9L&k@86 zK>FO!U^(u5K+CBR?4G>h)j%{(8Qv@0GAu$&b2*k2)3gt`}XS7$4hsSLWJZQLp~U zmG$E^;IrA4(;j@9(Akx{4BzkIcIEyA`!=YfYf|yK$ZrO@3SLV>{`Qq?`n#=AhuH2q zCus@x?^e6c!@eF38RI(dQ}C~QfvfoW0hsqESLtxnfd{R11%e~6zqQv@kqW=E?><+> zEw#vZH@IpJcO>P?9e~xS2j#gITreE_82PTctTm|1w0AAa+lag-*R{;Pfs_T$yOxi` zyyN<~uKU0Zx#;b>;We!L;kB+CyTb109&+83F$()C*{-$8SAc)>Tz8nRM!j`_YdwEI zwVQ-@zb&BY^h2(Vh}YAqT&2bKSRd5a?oZ-G9jeQi?BfJ-8J8P7j~!+VaT> z#8W$555GSFe0s;Vtv%wN3CCQ!!{Fmdv+MbJkPGL}0-8E5cRl~S33*nA>&29PM5C{F z?VmgX@y0RN%cmn=-;m}y@WdCWzo)nk?D!G#wZipQpKREf>s{}>hw*Oz#r6IZ;E&^7 z*TJ;Mh!Quu4vodS?;7Abgx@Peu62Dd7~_B4&GjkfRc=}AI;QL;<>S9xU-YOWrRH4M zSA`=GCw=VtaUJA;?EnEy?M<$edmvZsZ*={uFV`0qyQwSmX8#tq>E08_6F+d92SFa( zpSdkRJ4i{)bz8^ZkI$)Y>vr(NeX-lVd_49Qwz*yR;rEGvJMeo?dw1gEG|0~scakNQ zOty9Il%Ei{zwos?75k&g`RVS~OW^p)w?>6_KS5S{Q^_csNoNcgMA@^BV0{^1h-6LMbcvYJuykLlg zHHw5+2PM2VAmMVigm+vm;k&~HRMNi{(3E^o!gdz-s5h@gA5F14^RNf~0~_6AO7A4o zxDM`#A`ZJ)!nCX16K{e&?SG4VQqiY~zuUN{+z$GmIN;8oz5@QO6mSdV_&#^R*k6f0 zJnk-d7JW3M&T`KPJ_R(>l1X-gOV+gsJZ3uOl8@y3&2!`2~=ZY3>!rEy$6H#T=1#;=Hq*?KebE3pIf_EDjy&(bGldVbpVfV z+_zl!4g7v<_uAq$@UtV_xBr28lo#E1^nl*HJ;1&0Ud(gv6!-nt*boo=;okfl


v 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�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 literal 0 HcmV?d00001 diff --git a/res/qtbase_ko.qm b/res/qtbase_ko.qm new file mode 100644 index 0000000000000000000000000000000000000000..8d78f0262a307bfaa048ab9b51c5b5f3f5ae6972 GIT binary patch literal 143590 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%0Aet@e`mUhh0+oEhw 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°-i@+p9F&HCf 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 literal 0 HcmV?d00001 diff --git a/res/rdr2view.desktop b/res/rdr2view.desktop new file mode 100644 index 0000000..b6beb83 --- /dev/null +++ b/res/rdr2view.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=0.1 +Encoding=UTF-8 +Type=Application +Name=rdr2view +Comment=rdr2view +Categories=Qt;Application;Utility; +Exec=rdr2view +Icon=gta5view +Terminal=false +StartupNotify=false diff --git a/res/rdr2view.exe.manifest b/res/rdr2view.exe.manifest new file mode 100644 index 0000000..3f57eaf --- /dev/null +++ b/res/rdr2view.exe.manifest @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/res/savegame.svgz b/res/savegame.svgz new file mode 100644 index 0000000000000000000000000000000000000000..a1c8247b7ae6e835b68ae854bf2cfa9e43316c55 GIT binary patch literal 35568 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

?bx10oWeKubYInyzhPclqkRZBxCc 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 z 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 z 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

2QFFZt1n5LJEsD_Zc%$C}? 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 z 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 z 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%0DKcnpt{GHZQ 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≦RY-kxe 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

=4@X6sG2I8+7~+< zA$7i3b1cOt+q}mWQB20rC^{uP9FAX+;LF3psWqZ+PY@B9B!=5>$P^I28Do1o(=&VI z3nRL}Vx-N#3E5SpB=qGyOU^OtzwJNDP$|E=QfTBjVlA`Y;3rd~pg9BH*M z*6b&0vtf})__-%wGy|P~RG5+I1_;Nxq-Fu>m}2(JI}x#;bY(P0BvHm0*MdnpZf8n|B4*QL|_Fk~xYY)xrs4=H}Ybc3$bnKJCW?Vdk5 zac~!Y1Gqg`9YDbprgt;h-xG-SYRrZDgZkz_)un&r%RlA%e*{n3du9!2&xK|J5^BKI z!IBu{_W$n|A_0M1L44Cfupy>3+hi)1P2o{b75{Hcwu#W$+aTge-03%OiOALGl>AOT0j$mQI`il1a-AGqF`B{hT&U1Av?C^_)O~;bV0F&Qp zaMuq%sq8NxU3%hyofvFqixG*AjyXMm7=$$({gjAbS>533`1KI{LEk5f8sy3Smxal{ z+rP*(oqg!Hd6W@#YhY;`eZ!hL=sXZCO<)QP8$>0~VCu6E^Y6S`olp|~S}Mdm(5%Zo z+%2Ra;QHw7aJ>H!Wy3tzQ!xSlAK7j{zF2hJ(&L#_7U;t>CIA;23c`o2YB`VP$*%`9 zRqiY5QqKl{XB_VOQd16YVl9ssbqmfGKd0auHP8YVk&6O4Z-uQX88RrD}gi#@A&v(c^3kPfUQOXKars(ap z-lKZv=eCb7TvgEOy7UA7*7*BH*x%L7kTt8Y<`f#2pmPd4|I0$U!V0Cm$sO_4-mxDly@^F{&!TBa#>9brc(Wh#fxyuwAdWD#DDZfqImXRh+b1a&vavU?Y zx>*v&&XXbOy*-m}v%OU@sPKO5wBDkR1U$QCxbD)DU#5iBV?Xdm5Bs79lIbj_;U8_x zROnVKXkL_mMN^qA`bF^w z)9HdSygcja%zhhQF83p!J(cx{@(_Uc(a%Sn>`?F`AY)6FfIlcGuk}k)MW!9e(YA%0+i)VW1kocXg&Ap1n zxZ`h({(g`;Q0yqX+!y1pk%I{iz3h j__K~oO8_*|?p@-P8yn?qkorV|{0~r)QxW@pi^!9!-j@B1BdVt+z_m zhSZ$3n+>_rL@No_k(7uaN>D_oXFNh8iHL5$?r)gykKZ3Z04&ts0{}1qSXx{q&umSh z(_{SYOy!X~UgbZgd%gbwneJ-EAy08d4h7a%=@+U-ZHfoxWdV=`zEjY>wXFbm(_iT$ z<#EAk0Gz@doh_b+BtJZL>y*!Zvx1#yTpspw0tc}x7%Ea(yKe& zdyY0Xi9N<`gMB_`bBL}y7^ii$Z%5$JkXo_$-$QB*G9|5gY2Alq`robau#vfoE^(ix zO*OM-@^-8`Eu5KZJptbp*U)L;&1YL2ee8CEzR z?b8FIKD|l4&>~#v+x6o@UoV_bD}ycl(&N*@idbvY3_J{{acd@U@BpVe@4?V4@(t(U zuOZ)1su!O?eV4XWW2#%aU@r8m0WB~v4h2cESQIbJd6=~4X{~E8f;v(zs@udg#~MACz0`9V`+^X%bNSt~IJsPV*U zfNd-CU7d{c(U&!uP1r%4C}UvKFG~*h$6!L3@wFl22l5E)4tPbR3LRpnJ_>U^IJ2K3 zEJ6gbSy821_g?i{BgP0%>u1BA!*c`Ki0-P2@4M>62kNglccdfbgI63M#NI{2kY{Tl zXQb5vr&+16J{&rEzJy!Gf*FKDMNvtH@-W%4!YwR~O@4>54l^6T5}$kUOLei2SQD=L xp!_E$0G%(mw*4|BNx}Z2I~jQVo`L3l$G;T!2}ZI=drMnXEZG|01 + + gta5sync_en_US.qm + gta5sync_de.qm + gta5sync_fr.qm + gta5sync_ko.qm + gta5sync_ru.qm + gta5sync_uk.qm + gta5sync_zh_TW.qm + + diff --git a/res/tr_qt4.qrc b/res/tr_qt4.qrc new file mode 100644 index 0000000..0b79a15 --- /dev/null +++ b/res/tr_qt4.qrc @@ -0,0 +1,10 @@ + + + qt_de.qm + qt_fr.qm + qt_ko.qm + qt_ru.qm + qt_uk.qm + qt_zh_TW.qm + + diff --git a/res/tr_qt5.qrc b/res/tr_qt5.qrc new file mode 100644 index 0000000..7bfe7cc --- /dev/null +++ b/res/tr_qt5.qrc @@ -0,0 +1,11 @@ + + + qtbase_en_GB.qm + qtbase_de.qm + qtbase_fr.qm + qtbase_ko.qm + qtbase_ru.qm + qtbase_uk.qm + qtbase_zh_TW.qm + + diff --git a/res/watermark_1b.png b/res/watermark_1b.png new file mode 100644 index 0000000000000000000000000000000000000000..eddab1727cbf22d40f9dd0df0bcc3e603863f24d GIT binary patch literal 11496 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 literal 0 HcmV?d00001 diff --git a/res/watermark_2b.png b/res/watermark_2b.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4cb5726442ee36af09cc1eedecd054541f13d8 GIT binary patch literal 5765 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 literal 0 HcmV?d00001 diff --git a/res/watermark_2r.png b/res/watermark_2r.png new file mode 100644 index 0000000000000000000000000000000000000000..2747605a7f08ae827404919738cd93e525a8bfb4 GIT binary patch literal 5713 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. +*****************************************************************************/ + +#include "TelemetryClassAuthenticator.h" +#include +#include + +#ifndef GTA5SYNC_TELEMETRY_PUSHURL +#define GTA5SYNC_TELEMETRY_PUSHURL "" +#endif + +#ifndef GTA5SYNC_TELEMETRY_REGURL +#define GTA5SYNC_TELEMETRY_REGURL "" +#endif + +#ifndef GTA5SYNC_TELEMETRY_AUTHID +#define GTA5SYNC_TELEMETRY_AUTHID "" +#endif + +#ifndef GTA5SYNC_TELEMETRY_AUTHPW +#define GTA5SYNC_TELEMETRY_AUTHPW "" +#endif + +const QUrl TelemetryClassAuthenticator::getTrackingPushURL() +{ + if (haveAccessData()) + { + QUrl pushUrl(GTA5SYNC_TELEMETRY_PUSHURL); + QUrlQuery pushQuery(pushUrl); + if (!getTrackingAuthID().isEmpty()) { pushQuery.addQueryItem("tid", getTrackingAuthID()); } + if (!getTrackingAuthPW().isEmpty()) { pushQuery.addQueryItem("tpw", getTrackingAuthPW()); } + pushUrl.setQuery(pushQuery.query(QUrl::FullyEncoded)); + return pushUrl; + } + else + { + QUrl pushUrl(GTA5SYNC_TELEMETRY_PUSHURL); + return pushUrl; + } +} + +const QUrl TelemetryClassAuthenticator::getTrackingRegURL() +{ + if (haveAccessData()) + { + QUrl regUrl(GTA5SYNC_TELEMETRY_REGURL); + QUrlQuery regQuery(regUrl); + if (!getTrackingAuthID().isEmpty()) { regQuery.addQueryItem("tid", getTrackingAuthID()); } + if (!getTrackingAuthPW().isEmpty()) { regQuery.addQueryItem("tpw", getTrackingAuthPW()); } + regUrl.setQuery(regQuery.query(QUrl::FullyEncoded)); + return regUrl; + } + else + { + QUrl regUrl(GTA5SYNC_TELEMETRY_REGURL); + return regUrl; + } +} + +const QString TelemetryClassAuthenticator::getTrackingAuthID() +{ + return QString(GTA5SYNC_TELEMETRY_AUTHID); +} + +const QString TelemetryClassAuthenticator::getTrackingAuthPW() +{ + return QString(GTA5SYNC_TELEMETRY_AUTHPW); +} + +bool TelemetryClassAuthenticator::havePushURL() +{ + return !getTrackingPushURL().isEmpty(); +} + +bool TelemetryClassAuthenticator::haveRegURL() +{ + return !getTrackingRegURL().isEmpty(); +} + +bool TelemetryClassAuthenticator::haveAccessData() +{ + if (getTrackingAuthID().isEmpty() && getTrackingAuthPW().isEmpty()) { return false; } + return true; +} diff --git a/tmext/TelemetryClassAuthenticator.h b/tmext/TelemetryClassAuthenticator.h new file mode 100644 index 0000000..4180029 --- /dev/null +++ b/tmext/TelemetryClassAuthenticator.h @@ -0,0 +1,41 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 2018 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef TELEMETRYCLASSAUTHENTICATOR_H +#define TELEMETRYCLASSAUTHENTICATOR_H + +#include +#include +#include +#include + +class TelemetryClassAuthenticator : public QObject +{ + Q_OBJECT +public: + static const QUrl getTrackingPushURL(); + static const QUrl getTrackingRegURL(); + static const QString getTrackingAuthID(); + static const QString getTrackingAuthPW(); + static bool havePushURL(); + static bool haveRegURL(); + static bool haveAccessData(); +}; + + +#endif // TELEMETRYCLASSAUTHENTICATOR_H diff --git a/uimod/JSHighlighter.cpp b/uimod/JSHighlighter.cpp new file mode 100644 index 0000000..7b3aec0 --- /dev/null +++ b/uimod/JSHighlighter.cpp @@ -0,0 +1,72 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "JSHighlighter.h" +#include + +JSHighlighter::JSHighlighter(QTextDocument *parent) : + QSyntaxHighlighter(parent) +{ + HighlightingRule rule; + + QBrush keywordBrush(QColor::fromRgb(66, 137, 244)); + keywordFormat.setForeground(keywordBrush); + keywordFormat.setFontItalic(true); + QStringList keywordPatterns; + keywordPatterns << "\\btrue\\b" << "\\bfalse\\b"; + for (QString pattern : keywordPatterns) + { + rule.pattern = QRegExp(pattern); + rule.format = keywordFormat; + highlightingRules.append(rule); + } + + QBrush doubleBrush(QColor::fromRgb(66, 137, 244)); + doubleFormat.setForeground(doubleBrush); + rule.pattern = QRegExp("[+-]?\\d*\\.?\\d+"); + rule.format = doubleFormat; + highlightingRules.append(rule); + + QBrush quotationBrush(QColor::fromRgb(66, 244, 104)); + quotationFormat.setForeground(quotationBrush); + rule.pattern = QRegExp("\"[^\"]*\""); + rule.format = quotationFormat; + highlightingRules.append(rule); + + QBrush objectBrush(QColor::fromRgb(255, 80, 80)); + objectFormat.setForeground(objectBrush); + rule.pattern = QRegExp("\"[^\"]*\"(?=:)"); + rule.format = objectFormat; + highlightingRules.append(rule); +} + +void JSHighlighter::highlightBlock(const QString &text) +{ + for (HighlightingRule rule : highlightingRules) + { + QRegExp expression(rule.pattern); + int index = expression.indexIn(text); + while (index >= 0) + { + int length = expression.matchedLength(); + setFormat(index, length, rule.format); + index = expression.indexIn(text, index + length); + } + } + setCurrentBlockState(0); +} diff --git a/uimod/JSHighlighter.h b/uimod/JSHighlighter.h new file mode 100644 index 0000000..cad6453 --- /dev/null +++ b/uimod/JSHighlighter.h @@ -0,0 +1,56 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef JSHIGHLIGHTER_H +#define JSHIGHLIGHTER_H + +#include +#include +#include +#include +#include +#include +#include +#include + +class QTextDocument; + +class JSHighlighter : public QSyntaxHighlighter +{ + Q_OBJECT + +public: + struct HighlightingRule + { + QRegExp pattern; + QTextCharFormat format; + }; + QVector highlightingRules; + + QTextCharFormat keywordFormat; + QTextCharFormat doubleFormat; + QTextCharFormat quotationFormat; + QTextCharFormat objectFormat; + + JSHighlighter(QTextDocument *parent = 0); + +protected: + void highlightBlock(const QString &text) override; +}; + +#endif // JSHIGHLIGHTER_H diff --git a/uimod/UiModLabel.cpp b/uimod/UiModLabel.cpp new file mode 100644 index 0000000..4a2c2d4 --- /dev/null +++ b/uimod/UiModLabel.cpp @@ -0,0 +1,75 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "UiModLabel.h" +#include +#include + +UiModLabel::UiModLabel(const QString &text, QWidget *parent) : QLabel(parent) +{ + setText(text); +} + +UiModLabel::UiModLabel(QWidget *parent, const QString &text) : QLabel(parent) +{ + setText(text); +} + +UiModLabel::UiModLabel(QWidget *parent) : QLabel(parent) +{ +} + +UiModLabel::~UiModLabel() +{ +} + +void UiModLabel::paintEvent(QPaintEvent *ev) +{ + QLabel::paintEvent(ev); + emit labelPainted(); +} + +void UiModLabel::mouseMoveEvent(QMouseEvent *ev) +{ + QLabel::mouseMoveEvent(ev); + emit mouseMoved(); +} + +void UiModLabel::mousePressEvent(QMouseEvent *ev) +{ + QLabel::mousePressEvent(ev); + emit mousePressed(ev->button()); +} + +void UiModLabel::mouseReleaseEvent(QMouseEvent *ev) +{ + QLabel::mouseReleaseEvent(ev); + emit mouseReleased(ev->button()); +} + +void UiModLabel::mouseDoubleClickEvent(QMouseEvent *ev) +{ + QLabel::mouseDoubleClickEvent(ev); + emit mouseDoubleClicked(ev->button()); +} + +void UiModLabel::resizeEvent(QResizeEvent *ev) +{ + QLabel::resizeEvent(ev); + emit resized(ev->size()); +} diff --git a/uimod/UiModLabel.h b/uimod/UiModLabel.h new file mode 100644 index 0000000..0988a4e --- /dev/null +++ b/uimod/UiModLabel.h @@ -0,0 +1,53 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef UIMODLABEL_H +#define UIMODLABEL_H + +#include +#include +#include +#include + +class UiModLabel : public QLabel +{ + Q_OBJECT +public: + UiModLabel(const QString &text, QWidget *parent = 0); + UiModLabel(QWidget *parent, const QString &text); + UiModLabel(QWidget *parent = 0); + ~UiModLabel(); + +protected: + void mouseMoveEvent(QMouseEvent *ev); + void mousePressEvent(QMouseEvent *ev); + void mouseReleaseEvent(QMouseEvent *ev); + void mouseDoubleClickEvent(QMouseEvent *ev); + void paintEvent(QPaintEvent *ev); + void resizeEvent(QResizeEvent *ev); + +signals: + void mouseMoved(); + void mousePressed(Qt::MouseButton button); + void mouseReleased(Qt::MouseButton button); + void mouseDoubleClicked(Qt::MouseButton button); + void labelPainted(); + void resized(QSize newSize); +}; + +#endif // UIMODLABEL_H diff --git a/uimod/UiModWidget.cpp b/uimod/UiModWidget.cpp new file mode 100644 index 0000000..ff8946c --- /dev/null +++ b/uimod/UiModWidget.cpp @@ -0,0 +1,86 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "UiModWidget.h" +#include +#include +#include +#include +#include +#include + +UiModWidget::UiModWidget(QWidget *parent) : QWidget(parent) +{ + filesDropEnabled = false; + imageDropEnabled = false; +} + +UiModWidget::~UiModWidget() +{ +} + +void UiModWidget::setFilesDropEnabled(bool enabled) +{ + filesDropEnabled = enabled; +} + +void UiModWidget::setImageDropEnabled(bool enabled) +{ + imageDropEnabled = enabled; +} + +void UiModWidget::dragEnterEvent(QDragEnterEvent *dragEnterEvent) +{ + if (filesDropEnabled && dragEnterEvent->mimeData()->hasUrls()) + { + QStringList pathList; + const QList urlList = dragEnterEvent->mimeData()->urls(); + + for (const QUrl ¤tUrl : urlList) + { + if (currentUrl.isLocalFile()) + { + pathList.append(currentUrl.toLocalFile()); + } + } + + if (!pathList.isEmpty()) + { + dragEnterEvent->acceptProposedAction(); + } + } + else if (imageDropEnabled && dragEnterEvent->mimeData()->hasImage()) + { + dragEnterEvent->acceptProposedAction(); + } +} + +void UiModWidget::dropEvent(QDropEvent *dropEvent) +{ + dropEvent->acceptProposedAction(); + emit dropped(dropEvent->mimeData()); +} + +void UiModWidget::paintEvent(QPaintEvent *paintEvent) +{ + Q_UNUSED(paintEvent) + QStyleOption opt; + opt.init(this); + QPainter p(this); + style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); +} diff --git a/uimod/UiModWidget.h b/uimod/UiModWidget.h new file mode 100644 index 0000000..469c000 --- /dev/null +++ b/uimod/UiModWidget.h @@ -0,0 +1,49 @@ +/***************************************************************************** +* gta5view Grand Theft Auto V Profile Viewer +* Copyright (C) 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 +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#ifndef UIMODWIDGET_H +#define UIMODWIDGET_H + +#include +#include +#include +#include + +class UiModWidget : public QWidget +{ + Q_OBJECT +public: + UiModWidget(QWidget *parent = 0); + void setFilesDropEnabled(bool enabled); + void setImageDropEnabled(bool enabled); + ~UiModWidget(); + +protected: + void dragEnterEvent(QDragEnterEvent *dragEnterEvent); + void dropEvent(QDropEvent *dropEvent); + void paintEvent(QPaintEvent *paintEvent); + +private: + bool filesDropEnabled; + bool imageDropEnabled; + +signals: + void dropped(const QMimeData *mimeData); +}; + +#endif // UIMODWIDGET_H

X-wD@J7)6{*>fOc`6>PQ2gexJitG6KPzXjbR5|jiv6VU4FNHrKVi6^%} z7j=dcKjoEUqY!D8lLY@Uza_FOBG@hPTaa2tOED7RqfV8$SjzP16nM4}&@dO|&TIsM zAeiYMw96aB5V&*$=#pN}%N?IyPRkveuUFTOzQ(~4N2Qqz_U6vKE;pxhE;i;)rZ2ZF zS=-LDoCAQ>ZoS!KICq2_bJ4*c$W_0ZDTx8DvzF_nQzy?;*;>5M^>Bz>r0}e=iY^Ml zHW!jPRZ!=D`e*dOw{hC3yK30uXLQMj2QUR{y_fFHMbk58s6S?=6n(%PrfV=wo}mDg za6WZ@YGX96wSYPLo!>KfcHn&W7Ow{RQC~NTqdNC=#`&K9Dc070#&FytccC{b$aFv% zMlc>5+dVFwKztO`oDtj|_gj?$tKTvva)mX25_gz(OONom|1K0SN=_1!6!Jg3E@xJj z0>B-gX$916o3;1{dRDi7`eY~?t3fZ0pli2h?HO`fH^D3C#_&IpIw@PU?B-&C;%Q{@ zPf`5kj7f~dTKAt$&W`iF-~y{1rGf&bx4i5BO3ja-*k%xfA*%r3tkSF{eOd4tQzjF8 z0pqB3l-h&Qc#P>CZY_PLj$v6h6ue6w2~yP_;WS?F=>WFF)y$jz;;hT|iP7wX2Dw5$ z`K~P=ZZB1TpZs2(=x#*xXD%Uh>gm(B9 zsKFuH^mq`PY%8#@n>*bx0`g{5YPE*tY;w(PXJ@|;9!ND3iSr+Wj&@+6fW3@4QRQ1V zPkRNGwV5Fb5Y%rMaYh?RCd1C;y=c>>5*raz(+5Eo_VQP$1Y$UWs^Lyyns~g-+(|PH(aw<|rbD8)ujE$Z+l;Ff1 zr`fG4*hsC7G_bN~57=>oo_Av5VNg{1&!U8-W)M_y@Mhw4M(Iy!uakXyy)|@3#d@^x zfP8=%f>bfE?-}?EE6gNjqws3+$W}NoGuRH7Sa{EwXP$#DMWhk`e533s89@)jk}BMf z5cFBV9n`bQa>K0&6@J~Qlr-Z6gm;;=ItNQ_^iqJC_K>L7^w6xt;e5xHau4kViEicy z{KWL2`0V3vGbL(t5m!(NS|;xzhmz-ySDqPgCj-tu?W-g8<)V^7K&WRpxL~{IaMrJq z51=c*#7(^x1B4RBOdh7K2a5^+1-dugjc9z8GC<7YX`0$pN7<65chV%dDXkqBe|?mC za~G~Wz1Z#W(@DyfZvb6Nu=%70fxA+}yROsS7hegtoCGG%OAPd!PA7&T9L!Xq_(N%2wy)7WTnjTNfv%jPNbWeKQGvd4g zb4LNiE~2#+bi{Val&i6lCpIQJga&JO{7{D~$vK3z9Ubdj_CLCGnAJiIR+?=^BcB(J zbYr3SWqiMTVT@9yc6bUic~=5{Zqfz=AarSJUF32MzYfC|9&jyh35rpuK8$dWlUV%w zzAlA|VB_}IiAl>6#Q=uH{}+o2W`{2c#b#OoZKV{XMj>Fr3GcK`4J!6A zONuvWXlR%+^hMtuxo&&kt`y7LUM&#IV7$&%0Hs8PwIkPjvWo+ewaR*5dXH0LMs5nR zKS~+0nzC+k#m#EEI!4FD!~kddY9SSyT;So^Lr}#jrdgr3WrD`zlR%b!UV*;Z=r!7V z?%)xp!;Ba|JB^ocSA#pwP3J>POtP0Zy3Ra$m~hI)6R!08d|1^nv7-TQ9KCt?N8r{e@ptm=^}zn zuK3a7jAh#uHG&Wi4q|1c#)&3`glTq!#+MbOphX6rSJFjepK8Mkspy5RssmO0^~tI4 z8R`UYlspz09KYu-sV{9MzMbzL`MHA?^F#akN~YNU{IBDaf`Grjcb0`zBcYURGV|H+ zLrZp5KqEbeeYjFL&772)4E@|0aR|WmPsS<($Fw_t#><^`c(oq%1pV%&_?^+8%19rq z3$m=ZrSzF9TLK}Ev{qVPkO_5$iZD=eY5tv@(c0HfK)HN{B+-T`xY(C7n?0R%|Z0>*Ro^$%slDX}GY0h%F z@?5U%bT>cVJ!z`yakvclTcN+l!Dj*B(s7YdTAl3VugG1@U!jE!S0cet zLRgCe25+tkGFcF?MgcQ@12fHJbXsDWhSK*we6VYM&E8=1oR=V0H9lMDx;i#3Wiy1T zb#JkpRR&h5GXLo8TdI(qF@?u@n){0mT@L}5C_zK}0uUpCK*Ll#(3Mx`Nos7Y_l#>- ziZ0lPSfSWj{gqRn6ZuX%+gbaU`U3x*(wUc~4#d>lpnNkb5Gg)VpOI$7C`-SF>cT=P z)Nl)6I6uR}VrkJcuE zu*n@Mvu#{wJ3Bi52~mpFgb)ZLe%yJKRO*wx}JJv}Gr z3KsK9oSsaRHw%Twjn}huiLZWiNLofuJZX5+kine)U*^iG*cV{!)5_R9J^KnK!(;G_ z&D^Zj*JH}hIZT;DC6lwM7v_o^iLk&?&l;~|a5k2~`DnLQI#kIoq3oQBn-M@4(Es9Z zwPTLl>FR4Ehll3ormdt_7M>T+v?y0e70{Ek*ZE50tjj*{*&zvX-j|9{G|TAbA?&Rn zVI}RMZ^xLYK~Q<9_LmfT<&KmENE@(&5a3DH>5JM>uxV&2QTy`Nu}<623+|6xl3 zy}TJSCNpEjM?izKw%-bevw)7I39DL*uMms+qA1@{BuD=geWI1@pjF+44`7b4to}zH zNwycp3-bK!j{ywbav+7XkxpQTUR}9{KO{S0##LZ2fh^8=0(0b9DiTt8=508 zt0sSN`_K>e1z0$SK><;c*W?qeByO_S=u-oroj+SG5>93ph%t!%yqKEwyk089VqDq! zy#Tg10_xys_Cut9zbB^xp!rE_i#e+p=~M%PBbzr99yMMD2Hfpz7dtJyIVUt$RWqLN z0^?X~CJlfzed1?i>HKE?b-MDqD?XWWGY zri>lvW(30~3AgC^3|!5s^!Le2AE+M|)k`6beE~(RooVwmd8Vp%A%Fb>0=`NX{{b?|3_73C1fH+u?1auK|^6kL%S~SDX zlZ$2Z%faHg`n}+i*pWwT-F`8d-4#s8NsCe9j2yE#&p7u>*;t&W+ zL6)>lf>#3s{jL|}y{=&ke%DhqEW6NUmJnqyf>f>nw~2IZ zm@#i{C9YMA-LlWsrRIEKn%)ok$RJ!Os)?D4_jxZe>^|W!l?JdOJByr7Tjw^sj=?wH ze9xub!+W6$pW^&`7MG?U&E=^KoTYWAk;;guFetQYdUNkh(bsA|>ijpT1U?EC5F^sI zcCl#6I407-020LwN2@7$)O;xWyH_yo(H}kOlc*v}vY?`H`+L;7vKrDL=&c=N&?NJw zX|wg~l2si(THCd-Q2fnlMn)-+%`3!8GM9UlFoOPTiXByPI6t~*qY>nHvVz`d6;FubYV}-aWMFro){@i<( zS||?z4btum>6z)i$);yaK%-ve{a(e_0UzIy;&JYChrkwnza!KSKq3x@zl_W5VLKLu zW3>}tkY1&O45|zPawJ?+-&(B=xDK4C0&n|ES0bR@feU3VEv;uYa;F&OKVt*&|C(MX zuTqTOQ#dV3Jw5W4Q#Pv;w)U^twVj4=EH;#ibq- z9vzZThJiZ_e{=|ehJ4xAc9sfMJT4we#X+t{9Qn1K9ysBC{8ZEfLMQv}_$;=mTPz_u z!BYg*NsVxU@X;c9C1*uk8R1jo%d@f@?V~9sj?YUj2!_^U&bh`#PpDsoHLVTCu_7tavmoJS}?n5{|v*YHFly0m05G^VEO z)vwIc)%^I1%17lnvE$>zO2P?hNTtO{{)U|V@8_&PH&$FFah7hAPYd;kqT!07L%=it znyoE*D`LClfA{~KOp*jLI*k>SHpOpa%araZLB`Y=W}2E{)zRA)~g& zfR;ID{e2G@V^~bm=ykgX3UAS1CoWrU={JH(Db*jM`NO#IAvSDA4u6n8y{`A@v20>8 zH#Q`M`&|L5AEJu#O+?`IL2&KVw!Z~T3AfRrBd#p(z{@=;$;%IqaeD(uX#%sY?ceB4 z&KFO`dj88~rhqEwMn?q*q17MWHNYoG3SxCQX;{A;Gv9kJhOa|PB%$Ox{7 zggV(D@7O8i?KSmY=11G7)0&zqx?gsL2Fw{r*_X4)GzWPc6ThN0qTpZxZ_LTXl==)~ z>6lg997?_6f7WgmL#C@D@q5ZE&|J=o>^nTL?;dehUZ;|3KfT+pP!00uAS>k#J^z#|RybyjY zK&3AnF%htWj?silt^jn$xG=#1pa3VpsD}!BvuIUaC6EeVK1=#pm7M%VHCS(gop1D= zmm6dGRr;ZEozd^WZLr?xjo!qj&>PQH8?iuOqn^)equ1u|aZ~X(m~ZE$T>BTe8x6%M zZ~~v1HGWbtF_6b6HZ5D|?dFykI!o=CUIf?BPg$}W`NGWdv0{zY?}?VaZGV=#fdNe? z2)@L;(fJGCx7*Ly_=acra<78WVYR$1a?26d*A`9W-xdGNjH&H+WkdGOV>m4BcFmbv#Q=3T5)jTLWO-jbWqtC~6Imgf=~+-;cz z^kO~<&iN;wmgC7h%IEplBo;-bLFAIaUN2VWGa}s>Y(u=G0A;-*>9)IXst`bHIEZvl z9bFX0U1Nk@6mUIbFJMNaJen+MJ7154G8j{>HNjPaNM<&Ez?=Y8GD1EcsR1gYZ#?`C zfO*Asz^Lfqmidv3XqRw}`>$0!HF)TZRJl&~MWlHA@zb~6%!Vr$PjU+kv$DOV{I)Sj z+xl4;kCLTk?qlHy&2otqactzrX-9VzN*^u`A`#iwRn5%~;NhhHe%-#>1&sLQX=|_r z1pZ_|nVB4pFSg87WYA7W-yM5);5G(O)m{;{P6M-70_D_7GKxw{jj8|ZwPd9fcKc@h z+-4{YcnG`Ysh&(!;uocK*aDVCa*lU^h~LF(==${eXv3^6yBY;ZeB@8HJ+;X2o@d*H z@l6-MYRxF1eV>*3$ZWEN4!=G1C5_7pOg$Z7dgh!7Ngt4WFTStlH0f(4LYI=s0HLt`zLF=KqnVEX4z)9JhVxxSN6;f(Y|R*$Id92-Qu;k z+V=to3&11c2LMQW0%bdHhI)teKRfCJwriw{1t@`E zFPwQnd^4O=oSuh48Sb#HRzd<39~^NLwV-2Zu~>57Ub_<`9vm#*26Hf$;ijdT@Fq zyIPo7#5vhGwK8Y$t9+b6v41iewbAJv;NCd3fz$+SXu)4p3hIUHctMJ@u>GrJK2>Om0)PFe=!ePC7Y8Nb63QxzE8#*Fv$* zv;X~fWY?Q$L4sQ{yAVO=dR7Vs$Xf=3?B8%0mBQ##V-2;lwS#rbJ4Blr6M>Uo?BLqZ z=+QiW@Tc!<)+5=1sg9;&29|{8W`FKmEhLh3w{syQWlm=H4H&09t}Hqa9sN$#0oENQ zFDJ23?dQH<zohag4+A6M60LbNPb7qXw(=T0}~ZX-U8U0kk+ z;-+=A5v1SR#Z%PwsnD=HS^vrx{|~*xuonz_^c;$p{=)Rg%$yvc7Vlw7{vLw>c%L&r zO%!(WvnF_%ikWQdWMQVj;9%qigk4htAtj;+#ptDb%>_(c2SBM%{RxkVP6ePaH=gs`_5@4k><5VCXN}zh5Vf$o=0J2JpsDctj4eW_! zx8e}j;*Odj#PcB1mA#bpRN_S-P3smBfwiE;1@`L}yHIHeCE}nmfL@ zUi7kA1C4Z%#h$;?8y;;Rv4;Rhnca+_Q|EjCGCoH_o5dLNdih34aEJa_c+{e}mgz)J zcIM5I+;tpc;GmzmX2uDFbDVxv?(AGiUnQyxWLKm(ka2^}O)Y)K0)<^I|NOI8aIM0! z*Z6?!-X#n(q?x&7pGc^N--WrP7hzItOo3by>+z#-9q0>=f%7P^9?y1^BG@(kOgzqO zs$)SspD~h8&E^4-3bZ2LJ>Qa3^s>Biy}G>g+iL58)&!Ju*p&-T?Wk$VWB15e5cYZ3 zda7Onrj$LKYV$5%ro2u`_5pXcjNi3LWF(QeP7>4r>a=j2mO;c5RGG9+pQLU6o4|7r z{viq7UsO)TKy3u30LiLE>wy_V#Fdp8kl=)@v|Vr_)#6=6Fn!+Lp4peNX(xfJq+EMq zQ3W4zj9^T(zu%mt2v#;=DvAc2xo#u;!Q>x!i=at#$fsSKTz%_-`tL=$k^~qxA(5*3 zJ*XXoqf+`Zvf>L9*rT%2Y`LE>jv|$}xQ$CRpdfYe?P6-0eyx=KHHq2I6WE>}`nl9IIn(z(a zS&WLBP9&3Frz@K!?$XQkxU;TD1`FTUX*`#N$@d?6?ufZ4E!vB}yo&f8=+!c}UHQm7 z_S`9(WGQ_Hc!sp%aC5^Pi3my4syE%Prqlw-~xAM2r{r5?mc z${89o2!=Pz`j&1-Oc|9dt}X8G?w(Wz9uE`=tkol?i2?(v@%Nv^{5v`Mp$!bm$FJjm zvz^&p`ZSqHZP%iK9bAs@y5o_-QE27mh3as2Pg=ougs|W0i9*619y?8#?nQ^(CDSAG z){5xcNiKVn;$ueRXykoZ347f&uSEw=o3ru`@sU(VEDT@T zp_4t>qZUZ>R%I|=DvA`NKAyG<$yaop4B@p+kztm z$|-WATwb1XW7#!LMcWX_Dv<$UNQo^|(Uj*xFjp9;@CFU6n+m>kb|-|2HG}9>n*Pq6 z7B2Fju-NCHZ1}uB@}W&4hfbk>ULKJkY-42mc)stI3@$5U`P&CB<=?s~OM7-~1_q7O z_dO%Xt=kOH_inQMHp@QYAji>{CA8x*-e)dA|I5rw)_W(IWvw0{daR#Xu7$g%w|plG zhpnhl@+s3M(Blxr#l@Yuet&;og?M<9oce$7j`aWsOrUSp_YLe?{W3Pij<>YuaO=?z zF<-mlKHrs=oB-oWogVu;yblPOO}TvQzE#Y$5v|*?Pkl)DkcI-r3O!$+z;vVYv(h6s zMDJh<@_znH{YxdH0o$b^*{8Ekr}vfR@d29F36Fre%4fVvfcj~=eqoX=R6m*0TmLNq zT_M#cVTA~nQmGLwT9;Jw_Vg5^(f1^_06sht(3AAZ?snZE(IRZFdWIJ?x^-y_D&|zI z*Lz}cMzs$)Wc@BVZ3EAa{^r?lQ;S!pc>sEL=BBc(AyE??g08m52LsTAI8otZF{AQ zS3)^D()e6QMH@0Q^1j;G1NaAl+dvk8fM!6guoj5YD9*7F7>xVlb7UT@j~|Qc=oeW; zs@?DbM1;B9H3^cPJ!7wuJ)};R3~sp#Q&^!<6flvw+1X{WB_HsA41><9u2A9!qmPIF@qF=K{Rb=ofd_p3K=Q$>vbu;)*mWs4 zYBY*N4PYqrh|-Np|AhR`DC%1{X*ycTwBB`xnKHi?KMIA0fY(SodC-9Sy6haepE6(~ zyelSZWdz^RUzA4uIT3d~Ojm@(hu@{*oQuXm#VbsRaQpP|s+a_f=E6pgCGa;Qu3TGQ zm5~~zp|MYw2HEGA-#BG@)Z@xGu(q+m7#vBJC(o$G>5e|}Y#M@G*%STY6aALry}WQK~ZqHxgDL^yN8qXdC-A;&VZ0iJTSWJbgv3)75pQ<;>e+Emi63;<#sYc@gw0efK(hNSKJAko5%_GpTzi~JD`4`l zQ}mR8(z08(O*5&U)wQmL^s;*nsrVB`n41}SEYt{T-iwYmjrq^FOO0cNMCPKkoF*!?@3RUL-@ zie>2Jls8QsSVFU&=R-gMFg1)PjIc&%vRmrwoBHR;8TKvjlh-yyLUSlt2}EG1rc*#A z|C#VFbVn)S*_T?{N>F!yULLnyvb7y&T$;@t21~!0Io%HOp8Sb=|L9_uDJN*>wO3PL za!_!Z_{wv33rY~O9s5UXonB;x<;At{J$@S%tz3_|y>LF)z!+ec!+KW`c>y3Fzp8ny$E$n+|;J$^kz!ddA{69J`ivIRIyI@Ei`0f`nc5N ziPq)5SJ0t``N=mcy$PEe(5d6Li}lN8^V7%w6Dk3i!XzeIHlJ)e?)k4XT|3AN%V!SCm8 z^RV%#1}|pb%I3SA$zH3f__f@!?_fw*Ew3h8~3)=x1hwhRxi&q46DB(=)jxTAEYCOztKQn((VC zMPJ(C2qA_pJTjO$&&~n&&6v|tZW?N0Pj#xBj{fs|adA+RO&$yFZj4}lSNNUssyf`n zCG%U$o=Az3X&TV4e!Eu#rzuE757xwBL(rcINDKCUjg}Q=NU-=Y@9w0W2=E>S>h+Tv z77S;{qPyRW`mY`ePIeKwt(WIBHQG@z#&;jS#po7tXv%&XiH0Jb?K-$sU!vet>|D$2 zPdN(mzM^9Yi8t=!H>3dqr)xE&&#&p#ZTYldT75YhMd~VJQTD~xG6{GNl@)qj2prmS z+}G^Hf_#inV*n z2>zIhk}5L$-Fi_O?iuBce5-vxNz5247NeZ|l;Hz8HO4-jrh`~6I2-swaP1o-9P5*f zpr8(eXJyWKbpRywx&NO9cy8dqA6D~gdhX(1YTH?9epaZ5v6}Md7c1Wdu0rroMHE5Y zI=Af*#w0s;Knk0R>%<#PO8?lRHQmzb>udD^o1}E7ajbLHjxS8Eyh=U~%t+dHqwgO1 z%78>c)UoaFl0=F=-F2O`Hxb=@Jp**2AvHzEu^pvsoBKS?EH&+K+UDjY8iYoGz1aT8 z#ND$q6ZJnWa#B(QZ@p}cmZRPQlI2H>-S5g6nl)~;I$+hwb&gHaMl1N(E~|uz%)#Ec z1-^nodnY4_^1A!Q>dnXAoEItMKdR)2v6n%gXG_)VH<}qvTQ}ne28jah0e403v_f=f zz$6xGt}Z0Si3kt(Uc>>nFQsYsWFg&`^9CcD;}IZ`u*103QE9e7d!i z3Fvpl<6xxU=FuGz4sci)bSA=EH_me7oBoPwxj&Te(DJ~zrz@F zrfq8!HsHKyRDTRk7L7^}MydBx&;#+w$iPPF`Ai4Lmcym846m9lf6I+pKuS=Bc5`s- zr+}%lxoK+YKQS$>yB~g`QeNdODDc1*(yzkRb;qytFW-+_UzFhGPiMqxKe@$lmi|;` z$p=AL{_D7*m0fPfxw&LtD@MlEiAi`$F1l7(wBth3Hz8_k}(`E9kh$HUZ@CtzeMpZ}yLTi#6 z?Y~VAdDa;-iTwHX%W|U5=F!X80eL4*doT>m52_tkVZ%gA6yn~|e-`KE78c-cr_xn9 z{Ty^?aVpze=M#pyJI042 z_1iXuAmO*tIdyc~vyEPd+7n_Se`lQRvJfgS96&cyaqcMacY`brEYx33_6weUaiduW zG`(rdtjfiQ?S+4VGXMT^U&+WvHw8M@Efc=HtS?<3UFh_g2wWSQD5rZ= z*&v$;&8O=-U9?hzP^jbB#Y+pUaZAt;_gTYI$C+9p5uQ8yg2`X=ErT_V8U}LLhGL>& zzS~xV@az373`!xv@M6ZqVR#QSVEXxb3ytK;)PNN*@^`HUyvN3OPS))aiCH)PXXKkb zY<-V2Sy7N%!U0p{)JJ(#$-qCnC>!k-m2+twsc^9Zv4U_bCmqjA@+boH3PfyUa*kr_*GrB1Xm)1ZNGOvi`z2;gE8SA;DrwK z_n()pJ0Wx=&ezV(<>dTw(@C$0maI^rC0wsnzpd~yhrT~n>rV|_Ie2a+AtAXz zO5xOkF-{oMTM6^L2AlNGIK3oIiLPGmJ_)*OB`GUmh2@7`WeTY=Rx`qROQ2EyG#w;H zD{>W;;h2YMbs5kFUl}X+trfTC5l&XszYZyoy6?q}J%h-GV{^$saE~|BYvh zYu{XHjuidpRiBB$^)VG7n=15){6EN6t{FwHX+;FZcekz-K+h`JZqz5CIV^nYNfm|o z)YMdA7+!2YI&%~pVdXOlaTY}t_+vx zjDR2wgqs(P_=?=Si!1<&(M7SwPk{=7+e7`tY=wtJ;2n zQ~|UZ641+OfF8P#phv9JE;Rg-CfxEIrPn{eVqlPr{{}Q39y-Qw`!-fMbWi!VM7$uA z7>4?oF(EeqiL;3TP6HD_^)D&s{I{K4km?Ina86lU<3Sh7Rb-3y_NMvSR8I3jm=4Ab zC%@0*{aj2Wvyb3r+JHuJ$%B9TtH2BSlJA7KblZNHBIcn+c zyC{ARW9D&;>3nWLgJuZP?Z<>bt*RcgC*pT&rz&=}!92{5QYPyimK|4G4rGhCs(9dq zBZlP%qIc{z#GLlU^{V0-OP-F#-&8Q(y3yn+M5agj19om?jyR`5A*ucuN?nDe@Tz9!l6%iNj^8egL!ni z$~N1bd^P`Nk-akHI=dEk{H%WxRCvn1&e+k5Gb0kpaWh3DU2cKiVmdxa%um133t3G- zfBJ;{Qbc6AxirR+FA=uX@!7b|@Xct!qenAkrEdSge+SG@KEEE<8r|RcbA5d*no}LI zL=%FbgaY*$49CDynL*;sL>$DnKti4TK)H_XEs&5S@@rQG3&GxvT|*Bdx}j=+i@@?c zZe&?&s`<=5B4sc$ayQPkgF_dD;|}QXOTBUcvq3#|X?azF#N#M3*9ok4x-$+DxLXUUZ}g^y4Sz6-Gd49%Y!DJldPKbZ<3SxeGW!aQFb5zLtOO>m>};Uh6Z-%W2RFX3mJ&R;hsM2EK(}J}A=F znQtrLK$D!tuE+xlraycK;})ZO|2_KR1u79~7R0wa=|w#sv6iq~r>W}@;O+nX^aIiM zoAFbkegu&?8+f{@TG{M*ID4hvD4`@^XAy!~+}WBLh!KHN*|O6>Zq6NzZ?_$n41*0E z9E1XETUX(jux}=gg9|}629vE;a+HrChe(?r?8Fzlw z**mrbBDOhutsfX*H`A|T>I%;PNfyr6anf+wvRzT;xZ5G2)t6+Q{1kChZVgM&YiDJT zmj3eiW7BhiT(yYqKpkWnMq3d_Eo6 z^K_KF*7wJ;O?~v!%V|=(JJI03|c1v^^a)zP58Bf>MMM9yb zksXrV*oKq`Q)B;q!MEfzcub28o0}bd>iK#f-S6X8!C1+F1jbU_kN66iZ(2%|=1t@a z2p>%dA?V&pKVppLsb0S%4`9wd4^j`kQ979Za9^cC<*v%XtIb zVb579xtBF2&mvS+yBif89Hcpl)#zb%P~2gF+{QCU{g#s*g-A0U&itd*U#4pH&-V3m z&dy$oJt(j!*%9hqq|q9sY#;MI*zHOJ;ve#EWWbPn=DXKXImZ_MM{4eP#o2%1?(7fy zbao{b2o;;6HB}=+Mxb5Rjnl#Z)S>#o2es=4#e0TCN@E9oTxOLqKiLNIiO=*QJb9O? zux{L!i>hF8RMgu!qo~#L;3Zl2$5)iH1gxNh#4xsD^2vU(UScI0P|Jql7sTWA_2LJK z#2=fUSA)^lBvzPP4#)lGJhGa6T==OAJjsxL2|ymhk-c>~%dDUG6%1QH0MNs3tUZYg z0nDlrz&Pe-%Le$q@zy z`IA}Y#Q!bx$t&)HtFOgM?^3|^QFNpVoJ-yK>)||$oxqw_S{R>T^C1DxAy`R#RdXNp zs@Aps<=2?yUv3_z2DgMsf4m4*5XBh8eKxi^e#@WYXcUH$i36$-cGMGe1{g=X9!+n_ zKXdFSxFR8l1$OZ|{h;lwzo|hhHL5Z727?rJwzyd~RsjqSFN9PnC~TefGspgLeD2<* zPYL8U^lqV_)@j0xN`c}81QsA?yuQ3w0gQryJKMPZ3TqKF($LgYXH*Fe{~RAU>EyYN z?*5Z$RH=%=5e)t|Q-TW1UJp_yq`Q-y;;H^w-ouJ&0jj?~4}}7>Fbv>kV1=}<=rW*p z^o_c#P!QoQQ*Jl~6f@|Q)*Gv0^Jp#2V@N#Cm-R=zV|p|i1q%3Bc%tlZBNBxwd0KJ; z7?AHm`al-tUgTst_z4Irgwzkw%Mjn64lEXnwg5bi6)#{^`O<}p6#g_1mjK{9CbmY+ z4f2$U)vm_q)vmv+`F6dId2=)TPt?GYuNC9j?*toN!GTtS;L zfpQrtL)phgIXTqdrR%nkQNa?fAf@5v)=k^VXcZkS3u1`IokG`C)C~;Kg{&bS5J$*dRM{_Pd5$~Y>FwLI)Zjs{c8R)c67ca)*D;)UxhAgEV41o^(qnyg?c3D?d zt`=(cXNvHu!5!C^Uy5-`OuByb4Vl;1Mhh`H(!4{X&|xv{Gz+?)=BZ_DtK}LXO49W3jY6 znrw6&yyu&H%<0w^6)3S(PX{$l*q!m*5tO}{|MT%4@D|;{vTnOKBdS0~@@dq$-xuzC z^2?P=v0I5+aK?+^&w4ZU-rhsVUp;@#-8Kcao1dNT-2UY$R?Rdy(+iT7{LA;m3fZf= ze(lB<&sEK0sx&B!mr4^4u{im!EQf-Efimm`*SRb8S^e<8+tGFw#CN<(22bdB4+D=v z(-;c(0S(geg51SIz2i+rjfzx2Lo~s(@+e#SV(C#}Ze2n&03q)r8=vm~*&{iw5lsbw zKT;-ecaV8+{6&sbOT!=(P0Oh467G6o7xZ@p_5}znt8O=+JITe3d&3AG>3WNqQl$?% z-tqN|;OO175ow)9oY=Ios_sm50|F)i*ZwXpa`o(AT-OO)i7{^_&9+L*4Yz}NHHC~yOlXA_ z`t51@yy@h@VaN|lnhcan!kk0&DmVF-Kz-cXCGoO0?D+gS^DCm;T1BU^|8Xog&t-=( zx_8g#iRq)FI9`=I7#sxTU?e3a-C(FbiAB}~#4F65eL^UkM}7}PJ-fkFAHI&{##+2? znL)#XIY0%308QAZ5XNLQ%g8%0L{S_2HIscwO%Hkv-mRcBJB^lBXK86}MWxvkV)+Ns zM7qV9UX8i%tJzj8I_3CIecI$>DniQlUy73*| z{*5#C3rMx`qW}w5%pu#1^E!!09I9B!oL&t*TquY=h%8FpU3HNyeW2hnQip5r8l#3! zZFw5nrcq(QFaTSRXW$a(ei@)9ODT_nB7+A_T$*x+5l=Jg9$z81c*PvQb=P)S$25Cw zXIG^NNy>>IeJ_@E4+wzYs>IUFj-dosYCasKw(fIda52Ap>lD7&f19zArIF+WM&X%o z_7BBXns4E@b`1G^5-N5Q`Kan<>6Z>wtEA(+Boi!@xr-TTIst^58N^Zngx0$a5z$yg z<^Ym-5OBFT<<7IXeSWe1g6;ia*@Hfa)`;qgs)J&i(e}wVk%@YMoM96A`F*ONw&f|% z$3elx<&5tqPj_AXi-CrW{@~!a<)2<8PNV!v8D8!Xs3HHe$dU28!OM{l_>H|G=8VUi zzkdB%J6T&>>zDBQB;ER77(Q{Ljv7|xl@Zt!hkwu^kviKLa_LmOcJ;PSQuYZ2eFiBG zG45fCtr>6P*lB5P73(HERLH%5!`ul6KlVbw*^d_clBPPW=td>32Y*X9<9pFR3Cywn zS|w**XHo>`V#Nr~N$5e_8phnGZdfRpOm05(n31#t`(kjfmQ{Or2_gdQ&CgXeJrNv)kiIQ<}3 zR|N{Dm?<}(W)q(B$MVaW@e3ag#{JluSCHV`HIe}e;LK!(`6Z3TB0z85$Q#xzhbH|M z>tH+JcIwG#bG2~JFO%JApo|Bmv<R zSh9nuIP-DP_aH)z5@b0V)<^XK2C=`wIc#minp z*~{5WXlCv)=JM5PIBSrn?$pd|p0sX9SWX;9et0UA!^VXLT8WptzX9hGs;a^Pl`(ek zo**tQ&JG@rg?DYfk8vTI#5x*GcnlRrBDTgIkdX|+eyVUSaGLOnefaT!v#ch3aK+sY zsNi?|Pu6F;+s$;XHNO~?$n7@l8vB%$$PgY&o=#AeSYp@HLl`9rvC*EDS}0Sl`g<+ zzj(eK)Xx0kjY#2_eARf_<0+k>KVGed6VV17cTXD|WPu?dFpk*t0;)C!Aa-VEj8VS< zcS3O8GnZW67vKy(ukFeCoHl>GQd?%P?TeF{=jH*Al_s7px{Pa%#_3fKEw-qJQ|NQS zxkJ=qQnF{UGhLZZ4#6Pyo0`EaQ96Ia*}F0io!SgFqd@o@I-0W9SvTR5OCf~ln2#1l z;cV$(=gw>iVFA4{HT-OUdcq>3J4C$k?ErQ$6QGN?Sf^7W!!ssnaaXI8G!MVBK;3E0 z#yv)UCd2G|A$;y?KaMR2-?^3$eVMNbeqUNTcBl;ao&4NPBN$9zWG}Q0=|A%CM zGnO(+F}4iCAWVeDK3OtCWFKqxJ$u<>M2szi!jNSsYxX2#A4w6iWXUp?>^r~L=X=i2 z|BiEv~>~hx-!{bu@JX>2l**9-A0D=vp(Sx&^?xD6lqUZV8#gb?H9$kd`!dg@b7g-A>1g=o1y0(Y`p2}1` zTU%RC>n3)uBYm;@40HJT1SXv*0|}bV7v37s#S~v!Kh2m0k;YC=n@Ki2Bu)dER@o~BAQZICLuB4^_90|+;fS8L?aPfaZlBRnDH zsxgH)DuGNGbo+QCj;8I$eHjvUEO-RK+3t8NZ(0TYOJS#n{y?E=1_ak{EPeoJ&6P%a zw+W#~+l|R=^o*#dgy(!kkNv0YJ}#ehJds%`EiYgEGq?$fvi?rz?$xDN!!*+UO`E4ggjiuLYBPT808gx@`Bt|K0iqiHh-s7| zV7Js@;P3j#(om(GYbL*jr~@I8!`81zPKHg&i2P|6{!H_^%~kAI8<8Hml5T2tfrWF| zDjptj>`fTEYZ#RT4%rdWKi^5sS+O-7w;nu5kGQLZv+%Qw;tV_!we^98ZN{nO-MBe$ zO&>&GwAk@_&%61?vF(jQ$^N6zk6A-Y=9KVeTW!#5CPJN@GWg3x{Z*_C370bRmH~>? z5&mQl{>HE8CA!IqNUUSlF&e|Z#1HFcfELk3oC!@p2&Tz{DeEc{NA1oi^69O+X>l76 z%K&{)P!O5>(PV<|mc6{tSRK5eNhKI3&J%|BhqrO)ez$j4PMY9Mul`vtX4cJsd$4v}TOri~VS)gxv3mOWi* z9RhTw2U6GU9!va9?4o8fEjJ!_0LBanaz*Syo3Xz7PhWllYExyB^!Sm;l6?M9dD+u9 z*Fb2A<`3y&F(fVdlv zkR5Ak5`8;9u~(E5z-TWXEmdvU5}^FFy>@4*`Mcfms#sMFxHdbWIk%zmEeT8weMi*3 z?L?W(>`0KZ*jzrVChc@+(gMRvU4$m#(O7NWER>1^ZS0?Yf2{;D;!FfE zo|>g^5n7vW@INSh-l==~uzNwL%u*)Qz5`lX-Sh8(d{jTZ9{KJPlH9BK>fzXbUI6Cr zZ>W!-x$_AiP^lVi5Of~%UuveLZe;t2OipnsEm<(=gHUCQ!^1jcvnK{VO%_$GuMFDG z{yP2dxF$DMss}*|)7edu%}($;ZqtB_3xJ93MBL^fc{Fh7PJf`MMzh>k+eXIEmVbBc z|NmJ4ixF8M9@!nJ&y@285&{ItqO@2syQqiS$_ndvmX2;n=q_w2I)zOdblGPl$0x_= zz>_{#rH^Aqnep|r{-ccxa#6JF?@!=}OPaph?;0|H$2TV)&NZmX^?3?%fA>5MJnork z-$J|mDQDp4pE}|54dO=WU;xD2n&vLdn1Csp(EpKCSMQM%alE0z3-nDILsXVRLqq!@ zJ5U{1XkVo7CWbMaukE5E1W28Qp01Vp>Wdt4MI0}+ho4eG)qnoH?%DDRr@$qbqgQoH z_}OImCGIVV6=@_LzRISaL(Y}`%3N4j{a?| z>;XRkPsY~sF95oFbNfm2#jeUl6|YjzU6#90b_t}m`&5tlepp0ZlZCsSLyVZtV^k@a zM-5Fo2qR>{9oRY4DG&ZB2=u_DQxE*N5QcqfG?aVxsT_LTm_8b~f+VC%oa#AS0w=u< z^?SlLS#wi?P|Z${2<8I5V|VtOhaVdocVV7}s_RCMK)$~ZQ_;hNkuS50&x7km?p2}8 z08UQkKg+&%D?c1V2I+YuGcAp{I_n-O{l?yp#*u-3>FZZ#_J|T729Uj%=L=wTeaIM< z3JFO>M{}V5Q=wNGJM;6MiT(YQ!GPA4#)|Z^AY&(043AE@_Xm+5u)?BRXBXap&f4{o zUM&jJ%ZRy{?R5GqO|e8P-Htov!O?2)NbP$6o+E@7`n4q^EA4IVT#+$a`VHnoFi(9> z(AcLz7BmpC@TLN#-GOU*T8L{}@FC)OWb8ldR@C(``aohKUs~r!z|^Xa*xj>w_a{hg z6*ucV%a;9#TRGSZmC-xpHi>P z|3=crr;Vmyx)4sk?5dRYGEjD>3L#n1k`fY~00mUnfVxOFoad=~o^+bR^p# z;4-&-`R4Yu<@z$FGdaDq;ihOBUvf^Fgkc{>MW{#O5QMm2+u?a)sUtdz@5aebx)XkM zxLHB`FuKOZ1kuI{tp>PP3}|{%MP$kdU~;;JHNWLV)Qy^>db!h(zwiuTat!(khub$b zs)|L+=oI!ZvU(a@N|2gKH+pDIK!9H;{cCC3hBNk^qu&UzXb~P?7hcW;E@OF&ZfVn} zjlOb##8!K2qR&;VRu%{{njIFhvzdIh9=80{QMY5Z;^a*x&f=d_F8 zIz4US;YPW@d($u5y(y;d1jDC)TpGOUd;JpO$K_0h0L#E~M+PWoeYpJY$a{`dTS)Cq zV%|iM81DBTCQr%8U&SM0YojWOh1*&GvqCcTZXrTwcm>#IO_H~c*h?R?Zft7i>Ycr=9p{)ED z|Kwi!n{+e?y{%JL#*V}7^SBZd{{)mh93!HChQ3SKeV;NSJ*cDHqMuK)x%fZLb&K;j_-jZ3Nmd&J#Tf9wZ z30#3AeRbusQu%=vCXPGuJ?h~H(Q7y#hhm-*m+fgEeFAvVxi<%-IOM^cPUFMayxuh9 zoK&h zDovq#PH&3)Yj%oVGWr*{|2gw?+d@!R@*nXRJ4bP$?qXCfMwg_aTc!rP5_u< zE5jq6F(R95ohwjK@gp=SK06xxKbKY;@ORSp&C3(U>gIIO*y)pDTHU5f*SBm&C`6{W z2Hh-h^ETl4sWiD=MepPcKJCDeQnp*`Z^ZS6RMo}ehlV7|%*|X03oVteKR|rxCAz@A zZ;_#M=dA{9+W-LbbYxIUv`=El>JYM98-+ta=`5R-EP9H2VSwzD9{Un9FPqKJ-r8oB z*=amSiL(`5$%2!PT5<->VL^;->KFRvmjnqvhKJwbeCiciE>>OP>O~7(J2Ip!xF(7P z2+8Kcr$c&P!|Sbx`UVDUzNP&Dc}G`H>%*vUJnU;(S%n-9ExHI~@pXSW4Yi#vN+t&b z@huECX?_`x0clb`>fW>zzi-MLlg9wvyrllGK76sTFX>642jXCV?}dD?!gJogS{qk- z7fdoOiube8^+UA+(Ggj!VTDyahm(u2hW6GLrJjE?VWFI_Ike-W`2dBsHaHFw+%y-n;Y4?n&|H(^vl@%i; zMMVQdrcjzMB8hfbl7&@YpM_En_=JJ6i0Lr22yDUNb(`8UGRqE_Ez$P&Z~!cVJ$6fa^!q#3qA4`$9*+kY{5(KWI>_XEa`W~ zQxaF1A`#Ik@Ou$Q)vgn`=Y~Ob6P0olfPgIqK*A%AcUMYO_8NK54!J`9{6{D8!9^7H z@@7Te@1KjJNX{~3AG%NI>8ljM7;*m^d2ZwAZxA&;9I%Fd!$$P(bwP~|13tBF?NYuT zDv@IBOIj6UVjm3}l~u^zB}(?)7Rh4w|Chn`i2761Oj>$ybHAPe3@&XYFYJ%}1Qof-Pr9hk)vX*BQvR3eX$pDLcgjuF9!My<$Z zyQ_ep4DmyPzh-@C|8%`qT8c z(Ju4!P<#zoim>2&vtqs5>WPf5u!B90{C7P!s%vEh`p&O)%B}t$o2X;x`L-L67U9w4 z;ECjzt=csoMt2JAvWGaFOSqov+I{3bHx#+vLiOQayibA*v1Q%96Pf zy$1C7Wc6B8K+BsdpM1l^&l7pi=91)9&H#4L+5eWZwt8E+B=h`pqh}rUi1Z&vD($cF z)D6~Tsu;jZ%lf$SOxoP4_vZDbl_}=>FBcwxWrN+CkItG)0u2mM35F;`*iYH? zy6}eUK9N)PlIBCjL?e_&gZXxi9Ts>%sn3p?a%C=YP1=S9A4H2C#Yl$!xj4_cSncdL z2wUY)R`{vyw069Djo(cCZ(Ll>Q2|>|bNwBX?tBkoD4y_5B38BDmUF=dNWn1yD!$EBNy>O9VKtKi>iF#Aq3%$vk9}TXR1I_@qVL-B1kBmPE zKk9f|C(57ERO(BPiEbl8)=sQw4f%V~sOj#4D=Na{?Via@K0UQkv@G^Zt`a1Nq(Tc9?t~pT1Bt4l_oUY34|&C|SD4UL53ybIRPA zpayY0I#3k4%%#m8x+P{EM3M2N*Y7j=b9nd|)r)dr5;!kjF8a~Z;9g#L6+g7J6XqRg zOKWQ#zyVcsLZebJ`czP;jaRIlFbE5hM#5reD}G)!U=+fjj8xJssrXq=X1U%lIB0`m z4h7D)>bxfuNRYHh#%wer+^5f%Ovn&HN*MPcY~xwjFtI5{EW>m;=sCETurCSeGsEXY z2XdeMi#PICDR~6Zfh{%(`dcU+u7)ZDlWQ=NlinH?1u2Yw%oyI6p-um;h%+({Qeyji zuQl5*o(-*!xFNwZVKxGg#MLJsxlf{?^aLCqY@8Yg{)|g&AS*^(UwpD5J|asT%SlYE z!Kcl-eSGW(1d;}u%*u=2;`xe>TFM0{D@>-d<5)Lm+54PuyoM= zl!xh<|4M1Z$$CS#HyBxK$%V1UC(UQc@XR3YXees9jL2erfZ*JhU@r7P%8;bwiFZ6K zW|sR_iV=w?)Z1QI8^nDXxYM6JJA@E-CRRBg(CE!#)8Bwm@K}ZYPR9oBSY?HLD&)Us zMo|ZA<2APo^3a;{IqLz&C2F124$Ey*l*a$`oJ|!0%#u zsw(VEto@?<;(R3kY%Q0L^%V2o=sDv1D}?sxk>b;mAcHE0N?r_L@V%o zMKQ7KbahpfFd!n9<41xB;ow(WN^r#xZVXZs^i4D3SSCLlm}^T^Rkocsw=4b^l_PwQ zrFn{s;QDeC2(ISV0E%Lc`z^h9Md()Mxo`0H;UdI}=Y=8j@)69QzH&Y*=(l z27%gaSoS{$JUT&pwJ8G~wAmjZPmq-#Gti$YL!y(v(Q?>tT5Z!xe4819wIp&9#!u+c0l@t zr+QrkW_wpAihN8vi#J4Ozs1X-1cb6}Y_edz_U#;Md;>??DR6!e1GP|ml6_6(3p}4j zhciG@H~v{y9Z)8iKlH{7pqKrd7GvGym2`q@5~n=mA0l&oN1J@Ee8u5wj0rR)!PhEs zA-AFn?xf+qWO*+KqW)D9Sy@>H3nMu;f7{7U zG9J_8lIA1Ct3Tn5bi#4;lxWc<$V47(@{7PD^a3!uoN?Q9RCJ06$z@>O^FZWCNsRI(0XSmzJDJ$K^j)XJ`M-&229~ z%Z|*91dyz>f{%YDd2eiul(6|siD)+F`NhAK-Vk`a+4&z;k~WxKgA>OH^P%0Gt8izq zkAG$3_H;a8+eX<41w^j-zw(4KvQ?TsDIW|i&Y+Xg2LM^wNCjo(Ic%<_<-M?dpULFs zoFY-tNP3bpHhioqN7EZ6wS@ACY|NPZ2@DJ_#tmkgeedQBu4+Qd$a3EP(fR0@n z`f8440t25xaMRCiQRB^kX4dJ5>S?#vpWQ~!`wb#?$&xdJJtS{CtRZ#0p-vvY8w)gp zfDO(5PVT~JwrdzHnL`yVRl5T$rx+8~h&Xy`q3G}H-$I_R|7uqNbXwbsi$5JycFDj< z#d0hz4ruB{an4EYjy4wD6)U|Q^WSX~BHHQk!(n$*^OyYEFg6qpt!J5OKNoq`Lk7H` z`zNt0RC%V5x5u2K<4Srw=8yO8K`e&)`Tcn0|0nhD)c^WYh=cPgUTeIy{s_R)jRE@` z0h^7%o6%sxLe+bP46Qiq$KVTRMoQ=j%ASC_9q_UE%J<`aP4`@}lw$!+E)+drd5f&{ zyaZRHcYIUv6ZyzL@LBNYpPicigM6g}vYIgYi1}F!uA9?OV5Pk3x5{HbWc4JON;})v zu*n7`O9zUceV~Q?*~AQcaM^}xkf6i%ecIts0tO}7EyX+)Y63B%SYTab$;Ul3);tmn z9n25M_O=hbrtj2Ln%%rj=|Y+i!FLu{om4`W6lc!D|HU&vY$Jyk)Qr8g_m{o4HZT4i zOrI{4a}F<;x;;PGdr^8Awj~$e1erW;bHXm-m_WBTMM(7YLg`8|+WU>}A>&)JdMW$! zi3Q}_j6-2}&IV(Nl|O)}Q^vRN6PD!9xKw{z2&s)Xf#WE2x_u&2ewv88s_xg>(PeUc){x(GhZe7tNW#(7{mN>JKmB8I~F@~Qg@iDEscHOLGE9F#hc)=!`KaAW@Wat7_i1nlGQ`)HJ}`sQD73grVs7*8Wc zPVecuL^CJidWrWN;d|Umc!ThfO%OfCOOcHuDeFwHb{A43rs1w$gzQ9qLYSv~Q+ zo@}k(!Nc)R6*M0=_}ad~tQ!Jb)M)o#BIh23wvD@)l&AYv=F|Z_&Yhq!|6KO(dWGOf zj>kXx6jV&uVVQbek1HL24&Q$O@?}JH+gM`Xm1Q4bWVI87>NE$ z%K`M+K%)y~D0HJHV$U?f*wGZRG<%7iC-!6NcgVWv{T;naJan~2}A^d`^?I; z)TP-sSei5y?A+(l*j$Q!1xt@_=t`WTY8w zk~XR>k|HQ#gff&+qYqOFc2zkdi2=K)01zs7aH78)Xs$f~`2;hAk}_ zd!cJ@7qXhlD$B^H+fSws5JN%aolpQ+3<#Rq5&M^E@!5_F#lC1E0czW@h6@xX>mRUcT2PS`C?_R7ISh7v4(LIO!9!em0+^h{_(W zUpVmdTkla+Qfz$7r^@oN!cW0h0=fij52hz2cZ}O;4H?O1ldF-aJW$aiYL}9^ED*Jq zddzE?Xt8E*Sdx7x_GJwXoI9I=B~7$nrb~)JT_R?I52CrmaA`eK%SU zrVEvgzxve!Fl!4G%xMIOog;9@@9OkZvQi>H+7s*AcxfqNG-L>42c#1cwHNMZ!q8Ja z!0Hjyc(Y=r_N=4h{>;JIH|o!Bav_HuA?1s6MpbQ3tLGL@0a*`^MMVk6tlOFr#!Wew zf8JmyWB3FNhEoZX8%^H8W8pN4q|cX^m<^?Rm;eFj3pj1)l)w#L3-uaQX&2A_? z6!=$cj9m!(58S(_z2fpCo`Dro2LU{htUTNa<` zOfr(5plgW38Pzap2y@@$HeL^SVOdNIg5=74{5kARX0y$S=1K(>;*d0?6kkS(vxkyM&o3eqjo-0x}$At zn*8Q%Y6t4RCmfJz^Ii-@ZO#N!$R`K+3qga~5Zas;W0W&h{Y>azAOYOhe#|X2?pS9Z z5BL{Ne;9zs0ZV^+({AlVg%S6B8W-?6{HEyFecAQqX->#^+!qCNbw3H|{vwen)?jT4 zbYMV0rQX4G!Wl%pLh})^1faG`lz^ZvH^cq+%F8EhmcWf?Y|N=~70K9rcjq zQV*{2n^RWwZ*+S%T73To_cHl;2f8wqR{wb6m zr(!(;!YQyZzI6;7)0>JB7g`a!T5w^azjhurJ*SwvX&ND)D>r=t8D7ZttrSU!Dijcf zMy5V0Jo)$T;gGe4CX`<=mYD;jrpu$?@ECqtVv!&5{rjtn=!+ZNVHRdb(qt8+iZ4k; z-{n$7?9REiK2(V7yt^L(dVZ-?=Q&*P$vyH5@0(OHsh^+OqaCt)5__&J^$BqzD@@7( zX=Oj~?ywvie!aOlG+9p=y|wZ^p#T!Q!4&uINfw{Iulx0>RS3E7?AyW!#F1^ zX{T&T|I2ha>Y(EVX$CJOCnw)Z>+MY|xpgbqDA?kve;ya`GRJ;=w^{pIxZnABNzD4F z&){O$0Pu%i5P>cB{f2gTqI>a9K?P#z$I45X4#^^cDx1!pKGM6F>h;Mik;!tbxARh& z)@rqA8Tx^L==^a*`^j1U@k)gE(tZeB7*o9$?C+((6$#{M`WL^2z^*JQ(O8=RJ-m+2 z5`%A~jtPY(8fLci6wT~e%?Tygb}sc@HB>DlEEXxk5Lwg1U#hJBgTavrGi(O^;q%LQ? zWjKLo!ql6Fd+7^l`Y+ft^QXNutPId`d(`N|a1Nz3HKY6Ms)siH?{&D-N-|=7C4^_u z-tX+}J#vyiCz;SgS}ymlmf>ahN|cWn)LYKZPbif?&0dMKoGCo6D*8Q{^V18~2j=?MiFFV!wEP$g%cNd}v@&C15dq5Asz(&>(RVU#Ye0{?@}h?LAa z6En*(30uWiQ1wa;q_iVTSO}stfnVn2Wr*jOU!)x{*4`&yhW?Ve_|(@JUtMesAJV zOkKUm*FD#6`B#-c9SXDlq<{?>{vi2QWeE$!`Q0#p9?u*wu){+GRBNxM8)qda2OQr|7?( z^s|>ticj^f1_?AJiMUf&)G|GBjlpRcg3*%wXjG$x#O6#$GV&_nhvir<0Kz-T+Yqu7 znXJF3pz!_;(fD6*tFX6}cbej>Y}s*j-PCjYTY)B;Bf5fn*(+JC2V{gfE}#!1${?Z} zy{mRwxcUFH0E-f_fHXcle7aIn#{HonQAT=wQPoA)4p1RLZ0_n|YGUy&1$Ow)MIj1`DTibNn1iwxK@9y8!t5 zEq!1|`mC{~b7^0bVI+o8#NIyD;pcS6pl1YSGFhKoUGd@Utv#(Wd3E)4Ze{q-=}h>% zDJ#phrC6nYcRKVN-17?1q6xlG^>g#{MR#PBCxjVG;^QnfK;bdMQxr9PD(2&37ff8+#+7xvIeA}#EiD5t4uadW-iV-6HGd}w)2&Yz)UebSEKm^9K>?b#JcfN95;!-V2gvTbl7*0{z|0c6MX~iuEMN+R^ z%N>|<6~61X&*m?CK7vCyS%Bt0*S~!0$A^!D)U+ggj*(7ly_B6E7N0$bE(3q*7{0?U zU}CHha%HL@-Vjw;w}1zfT2Fu~xY>JN)9TU4%e+nAXOyfIhR5pKI6x$ZM#;R0w+D8p zK9Y0u@_bm*Tx7C!J?WL2MzXJ4YTgwy`|v`(Gy<|&<( zO17SNoSi6tzNNfX3jA`R+?8!u`Y z2XU!=nKfd5@ij6Vu8~o~Y3|h804LFe^4xP`R-o@qr6F<8Xm%7HT>9WFjmY8p1fiHi zgcN+$W}GyrmND4O%%!_Bl)X3iuaQRgraI1Rzg4?jyPf^8Ebyba-dAuT@Nd0D0;lEZ zi+XlDt5pUWUzz`QY*WYSfFQ`t2DbtaCX1>uBn3kO zCcdDOVo?spvawyZ5!OHrD3&;cpLuOAa^++2?K}IEg{*`2n`?7lf~$0kjbq~*4fTvg zNvGc`J5>u8I+rKfo_I|7k7>=K#A2PRnYk4dgYz}Jp_gf2`YNj^-L)1sb_|Wz$dk+v z(}rMvSByDixTJN_l>0ZY#tv{wkL19`uZj(-15WAhwFAjZH9I>yf{#ry-uo$j+R<~h zOfj?K{IA=-`OesPNSB#-!k2NcfPky`K)KK@ChOpx?oAK5>r3kj`!E#r)Lu@;Y&faj z+WmOgIO%bv30xBvof=8V;x4`XfXBy@W^&UY=YKQw^Yb=PF$g#7v4&U*;DJe-JD8z3 zO+M4};PLo{phk1|K55=u4P9VBe0DIi^rn43+hE9v4p<#BJp;C1tuK~|4eh7@w&v5~ zV$k+Qr)M#q)?b0fZlgzq| z=OK9x)W8SoQqwFhB>*DdX$~{Ka|fOU#OxbZXv|$pIgP2wCugqR{}(zt1UlRX7_7e~ zSEDW7Nz+ARVgt)Lkft+eJgjlXd%o&9(|%y}p+h^viThCG&Xe1K^nCR}e(;_H)yCQi zM%`1(XsoWL)Lou)R8RY^SmKJGC_$Y}A6RK3h8Y;Hb1gB*C*J}JYc=|wdJHHiW3bq0 zA`j`+I>Ud@j>6u|$i(<6MZ#gibM*F-5*(1lrITeg@9AB4GIOj=fU|f&&a@A{&vz%E zv;}qmp%#9_tI4=*fIWmvfN83e6l8?OP&$ku5|5~9$n3?lVW^j?H;iF^U))vr_~*41 z^59qD3_?t1(j@VYWn3yclKK5h2_Y%1GQJ7D(%9uD^2B`$7gS|&RWy!T)tQ)kJrMH& z1(SgA({fD=I<}6d*m8iri38o(LTx9X!b#dcB0~4+p`i)%y%3H$;mUU0KHTF&C$K(% zAQ^3OxE3LrE4$@C`xeada>AEAet&}J>KmcTe`>DYgE zK$5PwX(qftZhX#X#qE7b+KOKp&RcCW?01gA!2#gm81qy*I8Ds|g={JZ86%%hBZ$7o z4;M%p2A4AjUI}2{$Lvl&(N+iX75s2)wK58n6x$AWR{QtpkKw}r6fD*&9X@FwoCYki z#aW-NnqI68ov)1&p8$HQu#?;7#Z=ojl{mpoWA)gVLJW44Yhmf_J~8j|jYT)3`?aBbd+Ut{jEl31j9B@+O^QVwv*K*i{+C@Nkgu^R#UFA!$tR5GAN4@a=X2_w7&n zP!Rz>A(+rl3c0abT#bGhSY1DE6Eb~tjc{CNeNxBUes*=~G$vE|zMeeD`3+$8mR?#y z8?LSdi1?nsqQQ*MCAl&ayZDX%0(ELxiG!K`-xJCr;7?BGRk5fv4GEzOGI7)}G_Bh) z0VHE}ocTw)PRctgLxLa*fSWFFKi+y0cvCriVG>RSuzS8nLp9_1KJkqg09kDxDv-uc zpg!I_KVxm%ud8a^A|=zt>3YS|r@SdH7<>j<`?Uwm*euI&hrgGU1)>i-Si`-x4_}Hf zYx>E30@sR47shhNddNm5{$9}RqQ9ZJ8La-J7>k1P8vyz$xU_zPmg?8#78`M~fsXL` zwc^Sm!zS2v7yn-kvgSW1VY#R$+6Mj>o;{qMO3O#}uijm&;px8T2JfJ;Fbppu-)P9g z2K^;%qow`;=rG9qy@O0s?$kFqgN>L-){^`f|h_|7e~bD zKHh9)9oEd?HoXtm_8MGaq5-D01y(uI&t@UMzqm4g*Yy&O>^1ad+5X)l!kT`Y{f zj~S|-z(c)!@==rmVSApRpYLQ=|F|jo&!0|KptQDE4qHsim%6L| z_en(xW_j&dqm^Yqj^5-kjXCAJy+#I?`5g!2bcag4f1~@CRQq-;Ty(-9sYkD;Js)7$ z%*1GJH>x+Y_xxgM($SO~`1+ddm?su$^akQ=C!t)dtq;3>l?jR)y(`b%I}~uvzQBAh zS07kMy!5W&=hH5lTg$p}>P&9N#!!vE<6T9CF`27(Kzja~+82^fmKBLG$TgFJ}ZCeMG? z-&av|YFAr#uL|z(O&4kl#zKYI7m4Jho#4Ar*qRix1-&RS#w2hWsG*w!fxVbit{@L= zPZF#j4ZGvw$oC8z|2eUGbVBJ_(_zHLc?i&osv9UP_35;Uv+~Vw*k;NPJ3HQbaj?J8 zi=>yE$r*LHf^U%fb|`H8FeuNr?q_1!nv-0Pnd|?e>85dGXr?6( z{r1qClrd3)&tu=B*n z&ekIY*ex2#- z&8mFJ7cG@D2vOC3i`y+6)GNlBix2Ho$HRr<7*s{3fIiHX-0m!hK~Z;g03;4NG#Dzq zXz|(&UM%}6BhP@hQ_2td4>)@ZA%Lf7#cx!X0)ZFTj{Akp2vkQKI%9Hcs1!as%$&pr zRoWp_Y%p`WC;_LMR@bpgmv`-_Lv1uYFH{813BT+>WJruMwHy4tpFq(<)a2jiAHFJd zN1MAAP=W0d7+$`*^lzG>gTRUE1xFh8LG-de!%3V1&DHiJ8$3_ku#vugsEVt6?;BXsAfw#Ion zh=#HtMpb>67-ofe=K7I%{7x?9ZrG!n+wV^3oajxTA7@i(h5pS~aY+iiq8pF(mbkoR zKiAE{g>&I<@dg*Au`EW^-7Z6lSaETEf<)u5A$<=VH z-mS-s`S&j_K5bQ^dxw4ZnwR(=7eCb{Flzf^Ei?R&b;LTC#|$th$qi}sjo2G(f48b8 z#*GA9Fo#+HCB=Ofnw(K#fwunp(x2wI84_`!Mkc_6KVV*GniV7BfNwssf`2IN!-$Ko zpWpkU!!(tnG)}muD9Og_o?sqQ^^azz;0IlJug&rk`WoHDFCw&NGY8^#dmWf{#0;+n zL7ph?JG}NLhsI-Vjnh%99yNJ#d#eCvAv^CNr)^VyieLa27C}wbmmj&+kJnbUoR(3V zTaVnl!>i2$6T1*zqfidf_JebGlDg4PwRQmDuo?1Mgunpe;ZJ^e?Mh+yZ1=D^WsI^H zTtfviT7VbqNksECstQ-ILe+%?G2r_7t3R%&s}Eq=BL$)?#8f>62Y^%mlRVM-Q#hxc z5+W?YLJ&yj>53@6>Xfpd-~p-u-Wx&k1-t|k%`%83&^hv{*@&%dU<T0$=valVTJ>5%Rw8uiPFSn z^=xk{aK=(XZqO~@WPiQjeVn&!W82XwG4580=D#-A+#4*cRnWOwpdCaxX#)YHJ!T`i zxD$C#E5)XO9%^Y?Ag02fiKjAm^-bGry@KU9&`s?F&)ZAuJU2E^$3i9g(38R<5- z`6?WTnhrg0Y{~{`yE7Mj{LKojvuMTZH}8d_^|niZKet3aTJ!<51Rd6m2&|>qbPBpy zb>lI>(ZEZVqeK@gZnScIel8O?9MD<3DQBq&uv(Vam({eN*EovC^wgGa7r?g5M3Oj% zUj=29wy4LG5%PC!uuOkRKuNy@&|0P{{=AwK8s%mique39_%*y?B8QerZ8rPxiW5t- zqV4()$1m`hr9~nKB0y6AH2P$zB3FOOsWbaPd1xmsjbpp`H=}#faJI{2hSDYj5`33S z7p-kObKqcQKjC(REdfuu+na6AmAZ)IcYcqX)7=j<;CjsoV`%6D_7G;=>v2VO@y>n{ z>3?^-?acmq%C^$2jm_cSw8X`^t(9?`Zt)>$p^~(x$}Z1< z>7#H>DH&xWS`aVdVDh{9qC>uYZz^0BwhhMX6|#k5>+^o7?2K5yktN)?TWG7S_?Dr^ z#z_7b%`e#`T{H6nDnHl|W?NP5iN*@Dy+hv~@~ytc ziAq&=lHXWCCcs}=av|f{>PCYAvrf#M#A7nyAj7v80lu`3cP-xYlVck8pK`1V2r?P< zzn44o-YOOCF_E`#hOGaA`flDmYlnpv6_-L(vBD&x*CTpExjX!Cob9lM>nj1(qZ=O- zPBtR;dgUWl<=>O}-sI}evk73nG`_AExywR^fw^F@xn+z^T?8CWl#bc6Ju&;}OAxQ< zufPz;rQCab-=yHyAI{d8)Vux4;#)?j&nY^>Lh`~FDO$SX(X*Do^M4kMLCucr3xEWK zyuX)6p?GXUe-*=r z@e-z?%SeF{R)gp8Il98KfzR3=i(h4Gy0cSVTX+DwhOr7+uUqju?~)9EeLR8Pu_6AT z1%F1^Fmr>LhPL0WtR~)MZn{+;YmFD+H+@q)2WDGg7c3LLJ^b;}9k!c`cr9JoL*O-K zs+NYN@A_%?@$HKr0}JgtitSNs;Tucg%ZYqPB9vj9r^ zyqopj%5zg=2ka3^G9oN2n7u*>N@E<{^Zc4Fa9Q44vPjL3wNHh^qCvl1`t#0ao1ePV zIR&a*WMQUi{!BMlc&1LMC_aooHIo6ig^cH3n%2+Tt8my;5lSv@NQoSHeAyID-w^|X zf}fe)3A)#NOU70jd@V-5$8NhL=&N?WeA2Nk77NF4@*}>^lV_6w=XAQ1W5YVo6zVnz zyxjO+R0wBdoXyL##>+$gtEVSHZ5k&ILhwriXVKHmYXn^1^N;T+K-MP_20TFCCsre$ zXQg;w2C?xS3SQBAt_Yl|C&bB!^Q8#=1Hs(=Osi+!o}05t^3%^&2${#>e&qYQ7CNr$ z(;aO#7BKHSI)k+tDQH9cs@DC9pQ8|i#K#)2XHYaT7c`2v_KycBICL) zwVx-Pq3{6vU#o+KRx-Z#<0e<)&QXO+85XY2(%Nu$sD)K+tc0fH2#mCqhC%F7d1^Cu z!yF&|{E^wuLN!VWn5sk4&ps)II05WI&6D50LvVF6g7g)UY5v%in9Rzn@`@^{HyzEK zYX30Zta7}zuY`bTlN-b5-_Fcod$NSVGJkah?zc_Scu|{o=x@$q*D>>LUDwh>g;&b6 zg*$@|iu+-bMRFPv>5S0m<;WW5LR^7pKQ8h$Af)gg%geJol~(R9 zAXN`AUD9}cFJi|8`)qr;myTDdqHOhej{@|VuUCX^b#X~%B$nLbGBaduy^|e$wkIjU zwKS|KAHe<(=&0Wr)AFhANjxhv1bQ3< zwEN_%!bJW;HQTo_FOloA}%)1H#W}~P0uwH zYXPQNqlLfxD^Htvwf4q(>+^~BGtFYX%IXChp6&wN%NMw7RLcy6o17ir^k$OCv5-r} zdSen}<={d%>3zjOUzs>lp^W>R0&yR}onU+e>LDKp1&jwL%0hg9q_=z*L>jEBO8IUv z$=T(;e4n?W_fnUzA}me$FxvEjbpAtPDSh<25`fmP?bObp=VlJsjM^bL7Q7G83^5J= z%nct2n^6fpr3bxAPOh?U*YD>lbsk-hCCTq7#YH#M3QPZrmDfQ4Ps1;E@2(L4%qvU` zZ|WAW7|FExll{qNiWOt7(u!4ODEd2}aHb=j*Cj8O_fKYyPI$WjV-q9CEIy6~K5j8v zk*abcW6fOez?{q5OD>S&&J{zGzio|-zjdsF7niPrk=n1zaMj{^d2o_n-hZ9XL8ww- ztTEdWmDn#Ny&NXGiuA2l$Nj1ILk6aV&zH3t;W5Riv?E=^?#9i%o z_-6$wJc)MnsU1a1&6TVm`3hz&xM7VbnA=Z<=jyxP?XO{Uv+*9x?5rcRao;1wceLLa zv_&U&MV@{M)V~s~4clVl5bJ-VKhZlQ4o&yVub3FIkrEcDwoo6I>&wSp9Skj>xcJ7~ zz3_$Rn$5WMBH^lb!F!uu(=E^cE#0Wuw}%5My0;~hcpeR4ul|?O`89wmsB7J9vrJ@z zgio4ma+~`h-UE?^@ZK0%4w+;yKTem;9UJ~sgC|V{*E}TNrYQeI<`jF!}me=N-=_JK+ams+jUG<|tmcrn;@GE=7*9OiS_5%}K=`$7f?5RE(p!UFd8_I@o< zcO8aa&iVKsKR-K(JRbEt-;AMV^fMcAlytS3RENIajc0eTd3t3rF6$=KZQUsLI;tV} zYfn^a7lQcX9Ef*^TEni+mL=!TBTG4asD10$%Vs2*oyN3F&y6N_4Q_Uv>YhD@UT0TP zzW5k^4OZdE{z4PfT?)$4F&$ZzuR}@DK7paZprB7BSm;mXc7hGM3XK9qQ?sG*P8exg z`#cYm%9212#XTh}1gteP?S3g&X;!x!(fzN;mVCqDBf%GfFVLx4N5w$MiAdw!9mVls z#kzQFKx;%AT}e-W1kWxK7_OI+XU)^$TWbva-Abza8FIn){1OkOP+y#%GG4R*$EBy^ zDlLcySL{^wSMZ!lAuLuS*o}1KXbw)!FW_{;;VFJpH@R$b^k?9uXjnekbsX7wyf(q3 zn&~hz(bQ2i6l0i0(bwI|UNdR2ZFq1%3^goN#OCdj9B67??v$D~E{XYB0cO70U5mlD zO1SeSP6v1?jsD~jC{bKrNz=YZ{uThd)pJdap}F-$^(rj8OxUX1c}DicRyp$Q$Qybq z6~Z4SmDF*~3+_bH)wFC%3)9B#h*w0;HPz>i6(+4 z#W5WnGkVs4i&?>>`Y}lkainzaWP-m8YQKylPZZ{Yq7n30S7FFkLI!;Oe=Wc=eet;D zjXyMGpX|kdA0K~`GuO`nLHO3F+n!j`@kbj%s4D!ul3x61L`voZgV_(BgkeqN<*CMh z(j&E2loj)xp`2txWd^{BXOurNg`I0~c~!p_5T-h`bt)=Ym3=8o2T0Vdr(5Uku2wL2gWQrd~)gVJG7H7#`u-qne|`5cDqVc#(z+b#i79A4p;DY_+Fl_ zwJ^#nBIK5xqP#pEM34Ulgo;WfTMs+UKRnx9x}>P2q@?l`kQagftsTuKvh`cIS+Ac1 zvzUv+u1GIGKmbaT@i^nWBzA=!XBe((0=GWBdIWr9$=Nu1<+sGgE#1OMO*bSqUYxEL zC?4jdYw^+J3AV3U1R5!N@T4(nL!G7E&TE3x{`y=;*0|@a4yh|J7`dL8wlYQp>o6$i zq&F$CVflVKS^3ZSDiwAx8M9_zu3|3LX^8nKawg>bhntCN|z@M2&BvwsT3dHBic*0X;$z?xv20vr& zzYQH4n0kVKaGMxIsVxZXl()FQs7E@yc6?y|R4(sZ#-ItT0w7X>(-;w%qxU9tOpW=i zG98p{KKq+(Lzb%iNzp_-N*^)<9~LSUONzRY6oiVv7;KZqC|Js656X)V7z)}vRrBiX z>JokVti~*NG=D9f~jS+W!6qx^DI6ljLOwK%w z=ZCepcm*b9$U-40)ACOCBwbGqJNA>#xg+#jfgNC7^+Xu-qR+JBFa_7S zO{7BHf0}(69g^G$QDv?09J573MdWEWZS5XEg*~fgf{`K1z-T4om z*a|cby&+>)r-`zx(sNV#lP3=njL%;LoFo`=))V33c!}a=^&u@rh~Iha^*?lIcL#hM z^&iBJC~7f`szS@D!{0KVdsx3L1({$j*z$I0PdMG!AGXZRs^bPsmMnxEeoHgOlw#pu zs_5XUatG7o*HfO0S6jmRz|3$P_x>qU{W*V*GJjLk$(e$0(RZT;?cv}=^w@0k_8@F^ zaDCFS>tv%b8;dZ)`@_1gfJ@aI(~sT3{V8e5-i;r&+akO$AI@hQuLJQ|EE&EGSt&5_ zK1?PCSj?%TDN@AkqfgP0-bGtI!654q!O~sDmg(CK903u>E3bDIPXUmA97eK?>7$_< z?R7FZIa%YTkUS^!U3@)B9tJ29_%l^C;5>hpsjxk-;oN8Us9xx*g_Z2`a5ay8F%L}= zSBf`8-)u@qbjPQ!kqRQNh7q?a6|dCutqqXGV#JS`m}yWTjbQjwGuH-R3toz-f}S~Y zm8HU=mmsgwi_+-FSQY2AP){#~|S6ldr*uC~om7)oi7__LeH|j#0!=`Vwjj+ zPr{~UXa;c-b-buCq(&Sx@7`l$HV{a6EPTh z*#}Ou*UIC%e5x>)`o7b#f!}|veO}+|OYsKBs%fuuJgvh|pS<04mUj00?CMV*ongw5 z0!hRB?pZy#07uru6YN9Wl>L zOJMVA+l-|I*UOo5I!%* zaLmLFukn&)=uItRc3GL>0#f_YupDRGtyGU#+Xjn;)?E?Gk=<{}(zBfdI})PPuM<2P z%-H)`z&pU&j9XMRbGW^-?JYH=|Lx6~EUBq5I3In$H`DaK@1>7|w&zYii)p(I)oa+d zY4zOj$n#2L7Cbaff#{q$+&HBp=HwQ%G9=2xH;9&)laQC!PWwmY*= zk|FNO+5KQRpKA*=%iV7~+=^KBEhOssRK!jIDRu&U9|I3NL@ydd+1c5>K7{Ab*cT8T zFdv#W!*KoSyd}0Z59l;+!GjB^^#FiRaRZQ>PRjEgK$x1AsGGt$**RRwFea_vf(z~s zLdvXea=;sl`5X=I<6B2p%yPB6?G~{-(O~a}GIsyNUX6hyfhtb*4{QNTtz^l1;OXCKp z$M3PsXR&It`#A2ld$#xT-cP4xW$e}Mt?wu<5D0`l4%$u^1W(Hn2lfrYl|lJr zGqSBVcZ{(=3Sp)w_q4E}fVwaq%B`Cx4*4DsuLUN5TkXU5MA@xzS~Hc&)X>a=H=e8K zF!MdDt8!ub&)|lc6eB5aq2h`fePP;t>k9wKpdf)#dpH%U$Kt_9wi>Y<-S7x+xy->U zzbJlw4A=wK$DH{O%*3I;2VUH~-7@EBLA)F^zX<-@(Qxi7QzuEk^g~Ec(pU_Vmnc%Q zDOH?masLxU;aCCLK0O=t%C~cP=2sqZ_VEJ^J|H(6Yt#Nj_+wfyAkw3)@a4NrQxViM zuhqpQU3yL9^xCGZ$>!t8?oeVeTR#M~82-k*tT)AvA83FOsl-;0EjZSjeGq5e*jYA<7qb-|Qd4n_s7w7Wv!Y z7mTY|z(>Px?3+r1r7yX)F=l+VEr|KS#HdieFC$559U!)LQz&H zPxLNtCItYhUkkUldn+MLA1y<+6TfK=QY)mj9Q&E+J4xOdxPNcdJ#svB+cs;&iA;4E zkSyj5f6 zB_|}UC5Gj0aQ_fXDjxja^Q(zX#$!47qGCL(k0C~oE{cYXo{B;uYO&f-9q*6+AaGBWGDJEv#6P78ulq;jSD_Zh|~tMutbev!L# zyVt)V@()S+zGXiA zZJM!<_QJGenamWtNl!HuC>(4COrNu0_99yLK2p+lMhCa95v)Q5XlsM262h{5Ycxesqt zShL4!#SMGRBR$S0Rhw}NgHF)td_{iN}l1%tr421u{C9+N2E zjO?;_F5pmt6+s0AX9LksOgCCzIwGW#>}=>KwP+Zkq9xHOMXb>}J#y;1mrMtaDrpXb z*@fBpn;xD0nW+fffX(XKXBytx(t-?PYj>3rsa{d7sxgL4s_2fKlkKV>n=6p&`-U4#kDn8s8Lxi62bq3E9@^a=3|BI?9>XK8K2&>_DApDT^2}b!2~Z)jj9!=E-94`+4V~MhSk_ zD5SaJy>!seofB8-{PztOm5-92{pYeOo@a1C(7l4kH_s$i`6vp})vOGD(s~wn{(4;0 zqt>&^m4(9G^r3z)cYexjBrX}K_g%jp&oK*H)IsEv~`Zcf3soi^wck|lMrm;bnYp7O%Go(1WU6!Y7Nq8y(r-@XOD0_y`fwFYfBL=W%Kl^e<;F>i z>SR$pr^y$e$E!I|@N&j6Aaf`=$-s;->QorMv$F%G@%9O^NaUYx-4D4*UY=0g*)X{t zrd-I_;VYeYw{WU0VCQ7*UsdvaFfp%nCeR~u1$6jK_JwPy`jwDa|=J&A+ zA(AaOcN%At5=FdMKDpjFu=CCS3s>Veiw}&*h0txa$CFK5+IMOa*o{yiTqkEN2NbJa z;S)yI&7sW^m+2Vt@ok|&zjGWY8YA@T(|0|?$@q#l(+X}i*Qd!jH}*x^eZR3*Y0FJ;=#a$CSGkVF4jDK$`}WntUe@P&<&#AMBF_MWVgJGH(X=j5yFDGEJwRkd<|$fQlOC#Qyrp zb0$|cZ#t!~+eU=>`Zie9cz6P2YU-$;f3A1Hhnfvb9*&O;q%h<$9$3Qw$4`BX)XNTx zLF2G}^haZU?1?b-#~*Y1-7d=qQIdM*y0gw@T84nTAG3bma^4-2fD&|mvt6CyUkmK{ zQoP4^XU*&F&=8cc%*ap1e2xR1L!G$N5|JLidzKWG?-%gplbSav*?sbWEFp^5XKgxW_?e0kJ8lnNf-JQ88`+<{k-qwBwru@W*;q)_ zR|_M4pl{b0ywqe)Og~<@`2Cq^*ctZsFTlL4mT7Yue>Spu4ZE@G_)24G!dba6DIu+x z+8V*syGTh4woyWX_|w-3o*k#Fxt?Q=l0ampDh*8!Z`%`$>hei}4j`!XMj)l#YMM-D zXA9)YHm&VhXZjakN~xaC-}*_(76;0^=JN0?_8)7MogaKisvpqr!S34I{tYE`hb#E= zU;BhjJ#O0Z+Q^3#nG2o2Z<+>A`p?}f4D$h~MS$n(?6~mqxCH=D{?{aPMjQd2{)_F% zQ-uY>W&q@`YZGi)!EG}k;q|=)BNuumdEzG}-`#VGzdids8Y5m^cg_PDcEf8VMyUq= zW-PE?bZUQkZvN}=;obtmvu`=B_vrF^;zge)27`jGXgE4`^DS?bi3LSDts zHtXMyn!d9#&zV+9L(6Qa0dsNi!zr$Cyt&GhIM^U8Ib$!M`=b^(6ped$VBrX(vIGt; zZY?T#3q1pa2)DJG!9Bx>9hv80|CV1r536Wu9&`OPIoSZfy|`m+A)e!$S1W!LVEB!oye1MvyYbXC#NwfHiy=AKyMvKqq zF{FOi0TJY>U!Wwfa5uRh=+wJTc60~_ZH~@uok*lTa~ijflLB{+KL3g{7X6-DSwur5 zo}!2v)J-l%=g4q3o2tLpp4TW#&lm0Af(#%mCQs&%OMXY*EA^wFKmBQMh1c(2T0>?h zTAIhb-HxlR_Q}YA>ac!ndfU*WNhKKdqahGNQEWm1N<$l4#ez5ka*!C zBTx!V^o;!{LtbwkzS`AJ)&JD|H3o<~-Voam2c_1JCoZ=JSR>CBZ0S_sS7uOC9uD&%5cogoq zIzQ8loUPUE79~ix&U?l%ilcO*%66XNaEH8{t1CXYUmP|n{4ke+Z{OE{`$}O-lRmg0 zm)kIHK(0Tqtfx`H0b!;sPOm;Y{>Zvw%3dBO(G8Y-QW*cc0^WJ~0etwDm+Vw)4=)G` zRmn{oGzX+@#%}VZzh6XAz104kP_dgCdwSzqE0RzzJZVyTErqQH8=uOgO_Sm3Tfu;A z{FfTG2(7|D3oXTxLtnqL;7X zw2^*90b5O5NO{xUtE`lM)7M4xR?B1d@l|t$7lh0Gm6dOr1$tWeVYbI_hxS7~JHjKR z=W9jy(^CtupT&4BXehMEG%6nIR2(`7YzGpWuoAC6n@E~kaKg`-mF|ZR6i)~=aUJYp z`*@X~;^wFTMG@+~C+sIVotlvET4Y%p{C9h)-j|N2=LSah(O9^=TS@5PUW)#$|cdDoxS)Fh6vL^Fn6oV0DXpI%J-M!(4SwOH>UM+}@7cGqrae-3E7Nuh2n=;a?8 zGY~*iMF^1+k;&E1bfAeEfYI{*DoP&dx$=>9Ht;zGcM+Q698bkA$wNz#L^dKWJ3hkB zr1r&`Nu0YxRFz6CnhMH2A+9Rq{QH+lz?je9KJaP^g#_7ez{!yB>wvfbrd+@NrzzYH zT{t}(e9ekC*Po+>0Nzr7D)sN|c(-LfL{~8U_;)XGtq*z^-27+29;vRynRhQupif&n z%y8$zYK7=2u-=ii+996PIhL3i3X_UVPwXFw+RI4mjGI~tukANqiaok4FW6SXK8CND zir-mrC~YMF#w7NJmsf+C;)?oEHziv2U2muH?P$XmnVO8Itc~B(d;>Co=oh4cb@BZx zd-W=;jKP*!6-6(=LJm}$X?cbhJh9!=z=*kKG-d`5tW?6411D*WXly#}aSLh``9tYZ z%r9YhYd`Ua*ftT~z!cwK%fQt`N$?+91~5xY$v^;re1uoT-S(Ss3%q0Y!Q0DZ0D&CX zwTmP!0qyd|F|n`(*_L(pvf=WeP)BosJlmbqS8}kywuKPv*<@5+{>WW{CnNbqK1cOb zt6YwumMQtf>tGMP=_Uf}c%4X{XEjl~h=hE0i?rW7;IsI4D50lKstYPkKlXAB#dXz? z!pG&?AD;pu6y==HjAp;0_E()hBTv7isD31%Mstu^n__GjkXH@bOK_7FiaPsS#3Wt14ITpVqzHgBI6<++QPL*9cb1uDPf zSdElTPS|&JURm`<^n#uTpRJB7UpRn6(4F5l?3FoQUxEL@^<8}qsARafw?A)&1O|7U z{62m;Bt*56w~4FWCe+p$8XD>fJPR(xS)I#L0VrC)t=AU7rdUvzcd>eS2`R1{`U4c8 zU)GTq35I9ZH(wda0VxiGiP~^iaS06;o+qTqjA#t>-MV{f0QT#L&N8aT^~Qb ztK68vKbvbBO)np>t$RJ+uVHJdb@|6h#W?$RSeC(~@P)3RVE@oIAV@H<>*!CyvW|kh z{FvVU#p(9K&!1<6$lY@GfXgYB^I}|W#@BwQa(}DcMc$#QlV)LEvXAZUKiyl}nghll zMw3!N4BXyw$$$^7Ha$1Ap=#H?(8h+Eq;4GzUaCb_H$io%CJxU7+BP@29^ZLj%t}(V zG?4ft7Z@CzO^4GV<7@gZrB7qv#J|rrNnhCVs*8=mSYUk#TJn7@xf>EhvZ~av`@P`^ zUxU&qW$T5}Lr@d;dK$R|2fROkasNAidB)1A&z}yc2mqoU*lwtv1u91@F{@zO?uY|- z+KA|TcBMGrSWEDQ%Rv@#ll8ZwojAE0beV-TnKhEc87%IXq8>Yx8PO0wg){-@+V?El zFxZ2YuTArzoZ+~9uwCq`^hr|a{nC-0@LMByP40bxJk@7QAEDLoki95QZ<@5}(^}2HG&yOE1Qywz9v(nkTX03=x2zB*O@xq+OG~Ww?D7bEm{+r583$os z9p7rBeI=(|Xt>@_nY*qy34&_gB!4GB_ex@u-VVc5gteftsoAzFgb%_)!tf7AvWUk) zilZ2Ew8b#iC$sEI2r2DiZ~oEt!9vM(h@g}D!l638WVav8lZIiqu+G+`deI$~XTSE# zR(p%66w9IQf=NA5z#P22s|SC>MO3FFx)GGQ91xj97J#JfWsRomDh*K4KQS2%H>!=a zx2S#*;HKuMQacqzPq!^9@?6XIQBcQ#0OB1tG)deiWZY#f1O2T{7uqA&&)#teW7FhC zfloYeS?b#T#bZ_9fZ)IDBK_qMr&#c_k=dT$#{@Y%+F&-QZz1P8fb z5))Zktbv~s%?GxVlmWB<+7K7LXn~-w(YBb}{W5{wT9Q`rL=Wzc9hRnPlSz}poU{4X zdVM?3GU@Yy5>m=|17Nk4ykU}klDPf`V+?zf8c&-(Y5-#AdbqG?RI)JrP(O3soDRx1v==xw%2d0`eP&52t=}=3=VdRKBASj;e6rfdn8f>b~%G0ZOa#(vZ_ub$7xYNSyZc0na~54 z?VOvSC_4=K!T8_^H0moXMV7YL_vQa<0fIoib4y%xJiHA`?ACcMOPhJdFa*gC6TSfG zCI%v;L{y%HmAf>H7N|&OLqV{FwGKGlkMa*ofb(Ptm?L~9i~KLhZQiqe_t>dW;;osj zBBI(HIL#wf#I&H!HZt(<(^Xc+uN{KJaDY`n^Y8zHmDBb+8EEz*1$o31&e;euwq||vLv^$)m0m%-jhCtEm+t96-UCnxWkdlP ztpoIJFNo>|TRXf+XotG|9>qc4qZ)_v`CQMg(`na+XLz>laD<8eq&0?Y!dYFTxZax6 zmcB=>m=8o@vmJ!LzPYHt3M91CcRv#v@=+Ivv-ultx8p8;*CAdr$8ArUB0UZ1XI{juUBN6+!)@yg8c{p83U&WIQ2#qf;mbwA6M zY$FYg>^n6wEyYGgiTpyta-XKA^d*1L>;NL-aGB?Ng({JEqVq+|V6N382v)<<=o{-;f1rAQ55LYS9fXuhWw;HSD}PzU{u9AE^077PO@Tye&s*x=?wa3 z%c&Kil_=140lXIPs+CXwq_0d#h?-2w0Q;#&2@UD#4UCru#DUMDo+{Hq>2Qg-l^qMW z^_b1LPIl8cVft+)iIVjePhd72FrX!5%`hE&fPNw~Hy11C=wNi~<#lfYfRWqAhtEkP z=YqDIQcR7Q9hWMbw1q7WX6H9 zTom@)n%tG)<$vBV$dIfa-sO`k=o3Jy zFX?o+5Z{i3nDjY_N1z5I;NyNe?|h?(2+lw)o;J^aZ^37mf!~5}iVt;eBk}x)0TMct zDTn`7R|BN(Kxj)%WcJ`NIIodJ1MiC{&9jM~fH-}i28~Z{$)oFND z-K@-7Il?BlPR6*svjNaVNrNUC`f@ciVR(1@Ww&xHsF*R8JQbB9aimeL`}xU)9I0bz zQ7%Yuz}W#~2IsQbDU&Ep{t(#QQ0qG;8Iz(dRS7F*p%w*8(ek{Upp#wJyj#=|KqF2@ z;oCUYY{g2hK+FZU3_Y>nbQ>0N2@q{fA~u@mM^ErLJs4bb7~?-8tfM1H#Y`dO!u;gp z_9<>N1?7J+*gy;}u!9v+YL8%PsvFJvwBMpqphMlx9lj7)4S5DA7m6F;pSnGIlVuNtzX^9h&aOum({{^iCI~D(a~Uq-#V%FZf;O_LpsHc&CJh|zo0#YWRLt&-|NvW1*d3#8JMT$ z?qRY;2fQcKMn|J5Z=`WSUb0|i2L!agfMOWCRkh&*dxs++D2AT8T%QKg7uBsHK=YDI zBNm*^Lrw$LP-|ZZ6Su~&L;9pF;udct^GT$UC5dZkq`;3rH0uEk=YNY04aV<|B^zL+ z$loJpdj|)PW8zjm&Q{}@W?C=yJ(aFf@$Suwi*eJdCu4wJkujE@iB^L`gThh67MHNE zg^r4PmGh$8i}=26vS~d-!Zt)fTN_)lH)p_o^K~i+B->}wGf!PYCh2n`N0xM2qHev2 zt8uSrk~t1bv=t+d0!}~nVOe#xV2}g8TfC5x zZ?hoU(nfK_$;H-vZ%uB9Yw5Spx62q-;IrBg4L2(qCNhVO2n`mEG!|Nj5d|}oU~%Gv zmM&87*|I}w?g$r?P8y8g(_@iL52{UdOM?c~emLf9&&^9g6)@HZrh@n`gQ?zfQGEd^ zk{yQ2>{UGBj7HZYb&JgCMW|2?~;H%RgRj(3@Z zJ^7E8j%z(Enoe_|qxIq802ge&IT76#ibC-}*M6?`hMAc;7}>*ziL9ck@x!@KhojY=;0sk` z<&+RVMe6dJJk|*F4?Ja%q>_;^8g&&=&pYPL)fHP;Tp5GMfL?Rf1IJ0Ae>SyvJ*BPf z@9k|v{n|;6mW5ZMc!--7Wl_O>zd3g_fz|Luu(@Z0UZDEnjHpUYZW(~e8*lONAZ%%) zCqBaVzceFr%OWp+^S#G?#BrR+-W@05XnO)ir%xl43xS}js;W}6W54F3qtAvk>l+(8 zDwpFIuhPB+w-IWvMWY9|fWAb|DEnXnZ?zO-tYvO0mup~p@{5VSZBiuxM}?hCC{+$0PR+ z_iC__{mV4Etd89%VX7CZ=}wxdl5aU;QL5f!K;jIw;7v*Tm`#BG78;eKMkezST*M5c z>t#CWIXDMFHJFuAD?T&+`Cnb%H_vZT(GnH8_CJ4>+O+lFJ0NVg?+jIG8r9-+SA1y6 z)E9JtWD0)CX$FF$Tii2kNXg%xmuot2;PnDKy|%T0glaiBlZc>Ew9Z! zXspMqG!+Pbb7de71l?n=tY_zTTAFbsMC?rvMfjq;RiRvDECWp9pdUc%^<-G!ioO<4 zjYG%WkIt6x$k5OPG~_)NMm)Bc=S;lEYfspZ*%yC*y|zi;=oULgzu2A?I2PwY25(Kt z+ok%V>dkRI9TesV6&s65x!kSG9WGiD~!z+&O$q9(q>H> zZs5MggnvHBRWX-N6N$HfDUoer!Fxj@4jmQk>@_VP+Gdf8T>@H#+=2qdzf5|WlxZfo zJIM(}JCH`?wmKIoH+N-p!_1|oer^Ti&WVV| z4+0B|(JI&F@U>G&qKcX6)FBezr17rN7Hzfga?Orj-#Biulm!yo>xR>v5jb_p-a{lBwCl-Id8ir0wfO9F*mV&hE@`ho34g}=KZ_f6gwX>ew#MBt zi|uwp8Yf5l)iDMwIx7Az1IqF#+EHJdAJ7R@e!!y8ke3M-gw~YW7OCkJVk`eBsuq~} zh#;TV%&|UZqJ%5#!QR|Xz7csZHbu)1sPZVO+1{Q|(MBMmPUlOe5-(ssY6EC&juP2^ zfz3vs<*W0X0s508WxMsl8H4=%#?j~j&F$){9b2zX(p88nx6tlLFl&*hgyh|1LPQo; zbAOB=@&)v36#x9guU|{}g{;wgo}I_5L5f#j5H>}O<%2?_>NvE77)yJSg8UXc zQn*&n^;>;mNRAVFR*B0lvBXpyGjy$@KQ26w2Tobaf2ved6{2l6H2;v=La*BFTv+>E zC~F+25L&iXyy&~x4^q}ceeYR^XN}!T_n$jZCmftF?kKVjwTF4rf(xIwpT(#gQQAMh z(>nJPu-c@-D}e;7k*4+2U$sIQYQ0CxCOKNFWS#d_7Vg_c#*}{$WmH$?>PD;n-T(Co z`z!ELWhehS?@goMbyK<9JliSho8(}yIJ2ECN|Mh-gt_*L4y-1=C`D5f@q+)6OO${^ zV|k|>8CTrEUGCCvo|Vj{#lB)!?t(eigE*2LT@7dfskZvH-x1V2nqjG`P&JK;aZT-N zDkk1a4sKdOrk9MuG?VK&)_sR@vXi1p-Mt-$;J+76K{8BiuZ zX6zL?WZJAIrOeF%LRoe7hNHsm@n}x6$FP~e{LGCwm9t-f4Xk)vciK z?LURP%ccIEH>j)^y0#FQZ6;uCT4$L<=l`=A33j*fbJ^(@0*$Qhigq1YQWWOr3#tt{ zs~R1C-gotHn4hvLY@UJ_F_}1i3qUqJORfaQh^*|yr8L_gxdFD{HGff3_f-)HNW5ky z;@KB4A)u`uIRwr(D2E*35U+##dOA)I6o`xl&y_FRD_Z&|jSAcztjtUlAv|d-wnN1v zv^=>a9Uzjs35F4^NStV4IHZB@v4`~Vzjw}rX0gUBeJIWFN}3vyt=xVBpqtT;9fOxb z{PR0H9>XwIIy43_x!OL`{w&z82Dx!<``ljsrhswOb58{%3sWhVj%O&hyqw%%yq=)H z_x{fDZuzG5Zc&<+0x91&ea1wPuk=Z+hfLe%*S1{3W*le4*#Uvmt0b3XN*@;Bb2dw2 zR5{)w3br?saw_jU>I12|Hq8EsAO=Q?N;=Fn_iWjMJv?6n->rPI!asal-M9r>;hibI z>nv3n&;9bswEyPS1a$8^i9UK{i(8>L=G2nv(W zHI=8_Hj}}-#FD?N7p8=~1o84Q{kN|Sqd0fWh7^hIL5>KcW1-i`OR#7b=&V7)en`HE zub@K#@W=|5qI<4iboVLIKjgT2I|IIZ9QIeF#u0$jjO!Nro%~?Lr0$2D1Nj~{U^qnB z=52#8;UU4kPrr0jole6iku${>*o}+uqr60%^ZAsmcZjF~O(PokNSt)r2rom#6Hj?b zrMV`n-1jq3F31f#4et6(%|-+t=99#Ddy_t12j=T(>N9@tXZH)ZxUaPb!V{wF8#!zb=I`?* ze#;$oY_oWTnrG;JC;X^*(7wpO3_F1k=XW_*J{G0g!p(-(VWi9G=lP#MCN#r*-#?fjN4 z=H+0$umXyI>!~&*sGG)J{Yf3(?6w_-YyDjL8I_TJHp2^QH*&FYU$y#*!w-4X21D=e zD3H`?V8^_&Aa9ez-D+ptt=C|0+r2!4OOFcsdY}5qkj;Ro5>dG# zX^jn=8PhFqPZe<`flRw&vCFe@%k6-UJkA8^m;|yzQ&$;6Yt-~k3dmKrm;8T*bQs9H zH(4+ZVyiEv6+E9?Spn`_x59`M@5$zDmgy7L@n?z=XR;?CyXEdwJ8cstd#$S|s>QKH-wG-T0x*C8OaS>@l#Z6NMHZ#~x&@BWYuwUoMxnebyY zPpf55QqE{JcGdAgi&3P}M`@>(N^54{)O=n zFm!X1Z~FH9?n%gz+tb(JC1RC>FOl)C2cAuJWa#&>Xjjx{9PK3CM^jX0JsVj zu~yANR(z|3X16^>aFs?3X={fWf%HATg;;#jGWu~KcP^m8B8J)9)5n2I`;;39>M^+W zh)_1~E=_d02fU;JDvkquC^t8Ezt-UJo|?Uq28{(B0Z15GpZMe4DVt-^4)_9@I;vXQ zKvwX3;yxR!ZV*b^0Su#(&(CTzX46y$D|5h*=<92|Ashm@qE0%)ga0X-bN6SxU~|g$ zB&GM-cRah#7jA9La`zSG#m188)m!7Wfj)kX&o*&5j~xCZkF|h0C3#aA;P>hMeRSd| znLBzS;#_m@hK>LUchRwM+VP0Um%{s2ub>wkN(#^q4-TL5x3a=7Ty7l#&?Y~5eaZUI zVt+P}5APt&a;0vWnFQm`?|oNCBn^olcjt4In5?|pzblqFg%c5+5lbcKrT zF6JkvK9zkVcIE*!5;zz6Yg#3!9tOP?&a}bu6eolUFrV#qwDv>W6;ipr7J5E$PwP zz-ej~73KeSj=-soMD12{XfzxiRoE1;sLIq|?6S~eE`z7CWO>;X;br!CNa|nfAePyQ zNaO{MFx$e*{HMu)douEH;gV5Zau50W+gSOEN880kpi0nbV*jp7sQ^ps&U9Ijb}0)T z9QI?ejRCACm<0IgOs=;J)B{+MbYMVc&5sp{@7zw0JQtfSkbWRO+exzg z=~QsZB{YotoTTkL?zFR(mfwsh`h=3fIN>w3Uj#q{E_1akM@<*fwnMb%(eNGciPOax(k#V&`=tU`5HjTGjKt+U^_LqBx;Ue{69t zSYAc|a#Cw}8b?X(H13N2NA~zER#y4Ufd--#$$2A{e@LC?6*0U#BTmWofMmP!ruJx_ zr^Yt!WFB!9$Znk+Qxl-|ySj%mA(okvm{8S2|$zgk6dz{{n@YrERDCkyH~ z3eag_;pNx1CyoKF2gl9gvKeo5A6T#ARZpbV?|w2Diz{%pWjCXj>koE21^}^&%r}mi zV8->MS&)s7?N7-k)F-ecyX7ulAMp=c2k8la(v8_%I8%C1G|{P9R5}hrl{q3il`QZp z-PnO}PSoqhop3}L*j(GmKz^EEqvqWp}@e z(TiO5m-%>o;b%tJgSpiUxyRHjjmoxB7fCr)O8xO5OLVia=C1H!E0PU;J@Ip>v}L)UKjy@6rehe?l=*y z3Pn~JMN~^c_7%8Cedi`Bja`$jSf>r)xC#czF|pxENSe0-LcFp$<26mBecX2LTY_LI zINH}kJQvuAfr1+5Z)$3?TqPAMhyL60Y)=<*6)yrf5`h2bZDO@n@!DKWL;7azhiO6P z&tCy}&pW-qkORo1g^qR#IRyko#=otkPS!`mPC@KzM7n9+lmygp(xW0|{fjsdMFU7^ zeAnG%h5vr(9(zro=<`k%m{59g3U4@p5kR_%(T6($nEh{kG=DTPT4-C#M7r>RkgdG* z=xbKr_iH^}1vLo%Lc_Ubui&+2xo=xExN%}aJ|x*$+1jJkkbS_T(L6Ej;fvhiR>urBc94VFDtnW}5H`B8s=@%jkm*=QVRpmfB=iloWR*L|ihi*xo8 zcTTR71?cato#~NAPJ(=Vc8=3o`PsVKahcFK(0>+-VE?IV+;-UC=Ug!lEU|4eA2~YC8sQV zoJf1?%Siel3cZ0dXiw5mmewi_S$1s5=1lkHu877yh#8prLq!Jf>+iJwkbKEaj_MZI zU13m#yWO2XZOitl>hWr_UhI;KgF zikZIN6?(nJV=?S^6x(T786uI5c{C|iR+#oZ%|uq9b^wALUEOW<-RezX%}oRXb9EoL z17S=+*qh%q)#ZOcK^qNdn|s804iz-UKa}j+8M+UUeD#p=-veZ^*#|~wSjl8vEva7E z7_K&CI8YCC)EzZ8G z)@-T0ii%oMRg~1Gs%r23dp^J8`2GPo9K`e7_jR4;`8szN*T%|vB!HH24`MT5-+U=# z{5_LaY_omjK&ew|X6w7|wnTny`Y5~%u~Ge<>=}95XKLeRpC;DA6wXvb3Agp2CWR2z zYd#=)JkK&`IQ^&q;4>VM!ghT`YGaYt{OJu{EL`DQg|BBr^c35_y4mbj2a6;T>(K~} z)#tNQPkxdeHCzKfG9I75jS?ArjULFU56qYGAvQyiI^BW<=(7i)e^y#IJYf()1>t^s zD47<>7!o=#Bym^l-<`i`6!U8g{Xf|8@GxNMstTB?M-cYSL%r(>!-uCpzsbo(peX<6^8*W}HH;`L zQ#|+oKQBPxqUs7~1MY~Ni3ajVweU7q+~0W__ssXM7wbAQfkG}!2-W+=5CkuiAP-6P zaW81-qh~7+0Wm_|yHF9X*b%1wpo9gz@|9Meek=`ZDN0?^S33D81E?fpsWb=fbu(T@ zzNu_y)k(Ih=}WhT`7ZvGV0mDtHtSNbrTaDT5OjLay|0V!Mxb&+O65%dh;O9)cCNdl zGi8fR!&kDXR~?6KP$mGZz^IAdi@K(zAy^<~lvc{wU(0O%5*eN77Iw&^&4_R5aU3at zga_Hj)r*Elnw2v|AAhJU&LtBtlcrg{xIk=wlABk6+$+iVUiJnXB0;&B4`Nh&LSv?= zJ#A8X&${9d7=v)(*<2ZOQ~&bCsyF^u>CJ3ZK-+x*>#rje5Oh^zLX;a$kNPCV)=UG~3r3p6Y5 z$YXa0=p|)KZGQQ>{`tp^GhgE*p}Llh=cP={lrLJ=ZuMza-F{o@@phc&&D#|94-+=l zR>eATLi(Nm&LX7qIPd6L&0G7E^QTM&kGy)rU-Ib9nzmS&*gpdz z$wTJm2QeG>S@K6MMCt-8RedGdfiu2Ww54m#%2uqV#y0%o?zo3@o!i(y2ORuV!XL&`rcCiW6QvJ2YGf>t!*u{KNK+Zujvto#L`(oruuN; zU5_Ku0#~p9c6ZE*fl!$+{(E1UrnZuejZNq2G~cj+4B%`&>AY3kmNd9B?C|m3`e6=W zSG|haBBON!mH^dm^=Yi8GHToN$Hm^QD^FROoa@w$jn{HNdRoAp$R4-Cy1EHVz9w%v zLrz!x>N;jB&*sfiAR=AGE-S8%IO=ZbrESBk=tQmPeHM#7i%|Kc`!ZfbuU@gqHB*~5 zZ-|(_neiI%`ekAn@h2@d*foW0j}8i(1v4{8n^NBS;cnwfK68yvMe(PZ7seK7t5>Aumj=`)8RJ(vmyK6mLL*UXACZ}?+<=EoLP1r z=$j5E@`^W*{_`HI%1X?;itX%$BW9di<=@Qf6e^_Pu^(;$b7a+#^<;fG&FSZu7z+5x zW9ei>Zk}~1zH}**5k4|F`?f=-OGsdkx8|u$fWn&F_H0~K&YU)y)Id!SFe-K{fy7n{ z80qvX4lvGQ!RtdxEQ;(&w-VLO)57Q60YQ>{j$U>RikbNPEW0E0Xw&uXwc7wW811)e zg;Szz%u?x|^m~{MDwuG`@;UtsuB)1Su$Un|)4%rL*1y&*KudLZ1^vjXdc(Xz4qN^N zB$Tw$SDWje&i|8yU9Ydh{pyZi5L#+{j!E8dz^Zb-z{KZA%_REtNN_vn_;^RD^uSYD3KmXef^Y!@Xs40iy5D3&M#T}RVaJ5g5iY?R4s_kScFta)!I`9y$NtC0 z$YC4o984`a*Rge0y?$oH;n|*w3f^MUz+Hzql8&s)!s%^~cf>D;^G>FKB72Up6HYo- zkK05-ssxYr|N4BTz(LxaNSI?pjt-!r9LwOVZR!#BMWn= zTG1)SN5y=hgqLj2Hm|q!z)&Th>SbXbw=s7G)g-QU-z@<}SVD!OM-S#knv^2TZ+!+` z-CUQ$Nz5yMOYPKXTpDq%5QWN{*Q#o+_^mWB%3`4wrmuQ z_;-h2_EwjN-dB2KYw_Ppy~61gNA^a8 zBo(yqX6xW?bsLDfjbpGO1dqVrCT_vLG`Dq3zd+n7OdgHV=KbT8G&;eK($00k@`(L; zEX}d&)>rf%9ZWh5cM%h>k!2+YuhN(B_u^endQV~})u9`eHxQD9 z=~7lSE!<`7{qiHa-%0lL4+)6p`zP^C&oig6_DY;FiFGNWBR>H9ZPw|$&!|VcMb)Q| zPHC&bdT2Fa<^iSiW6Z!$#>it;+?t2&nLO~Kov{(EsSF@$(v-F#&`2K?v=`-<{XL}q zkZ6QV8eMtkfd3J2J6aQZ{e6S(Du!OkA-eM3`ndaDc5N}`;B$U~yKK6~g0oGLlQfzL zIeGa6B?;7<*Qq;NKBI@vB@7#_wc!6HWCeQHG-maU+!SUwJaQm^_qIACw}@4Y z5yvr#gCM=gJ(o!5I`jJ>XH|i-5vCq_U~5nIb(W&tVNLIvNe_*+cLRog0I=$OEApg^ zG4gL&#NScUmS}qV1dux7vh>(fRFH2Y=b5L8JPF5rNUk2O^7jG)fn6{4lhe~pX<>p* z0YvJp0wHMh0a1QEn?lM6=ZliH{}uRqaS_%3ZwWXI!%v^I+wftr^O~BP#>Sj^*^k}t z=W)BPC;8GcabIvSa-DaNTye~u?I~|fZ%lUX7(?1O_kja^+S&I5i1@a8q_*-MYE>~m zv&Ew-pyJ@vz3%DkAn!!Gnnqy@z{&ax^Y|{jp)=tV0*!*WZNB zU}in9NX0DOF2GB$v+TmY031?Miy)p(04xCXs8=xp#rFfkMT#~;%1}>I!$vC+8uPSF zJK8q~&s^dVG}IpWEtqD4zC2X+x5}d%QIy|=@^2A-0?T;-RY-y5eJq%ALNoh4d&{aI z$^`naBCt5w-;Pv?k4|!eiaxtNBzL{O`p5>f*;cVmEiB^UY4Y+@AGdOFL1;R-tF_>j zibQujwKvXd7uSAt_yFgy4-=@-EvtW?!8kunt}TUBy&Ailga`>tD{(yYQUtbybOPC| zMQcxN(u@;SeZ(k}grBxg5G(xtf$w+zx;$x&{9rSVa~KN*kT<7O-eCt7wig`6L`iM9 zde?($e#2lfwX~aTWj}g9R002K#*H_S!T|QTeBN=bh09ray1}|e8qr%Z9MbBB`-mP; z94U~RIJ!Uc;*_@_-r!fj@c4Lbb)z*Ysc&f~2nlk_ssPpLeqrP)xIp$<+}=qe_0bK6;i_fOc0>{&N=5Y=wNjGS5XZ35-?FGqMk5`=0FN@@le5h+2$%tnQWLw$w(j}jviP>k6kGh|)V)0?0GYlcG zCkP5X(1*w`QC9TWl$?S)f+;}&C~$2WeJXEK>h=~`3!Q{96va`zyWKPkyD=WhD7J%o z55;u%_dzO+5?+?oi380Wk-#@$kClYCe;jt^;6qIs-orZ}rhZl`CCP#~m7bULjvt;2c%vEo%kuv960nP>j`w z14(?=M5>ZcGhVO)9)cEC5BwOsITyM#cg7fTVSC=yc)6Y2@#cN@e=s~fWsYrC7-&{b zAV}lgo{eRn#0yylsd|b2Mt=uwT6+K|2}YIy4fTX_&X|c3(TB+R0Cwqp{C6OXF89{T z>dqOF7Pi-hH*fH4DKAHA>CWht?UlM^C)b^*8XE(T-N(`r$};G#j)p2|$(r=Q2d;4! zYj^h2aJfA_nh7r}fG7sleW6r`IOu?2TNHw?{F>WZ{$>HmH|NAD=Q?{N>ecN>083Z} z{#dN0f#ewvunAXdUNU-d&U6G`h0a}dmA>cx)gIW<=8ys1%I_pszh9E=V*(j>4yd2; z(oEfPl>Zx0R`p)S5*HYeh^8fKiQVi9BmK}!>{;${uOFymDhZQ(Pgq*(XVky^r!aRv zLsw{Nad)?NfDT5fp~OF(1%4rK4TP4l`TdWd`uXnsn=)c;!`E(2D`@Vu2F@CYh*$Jq z9bBDvMx#AjEM*vNJ3?}`cjD$wF_|lKXOqgfS949idsB&H7J>R)%GZ@nAdw5+SBn=U zOh1|gl%F42Ud?&WH3zJp?+4u_&V>UNVQhSVfI48?tNGC2YO4<@-S7mUbh3d|y*}^O z(qu-1FZZK-%(Q~LzL4Wa62q!Uc*@_wzRpY_XF`U9!so^VYU+u#ZR_$Lx`r!4Wvl-? zZ?61pEovIF0yaM5X-Zs1axazu-{fUar%dg!JV;uR} zu}OkBXdxVyakM~mo6Q0DQO#8ip8rUfuy^vw?d@0{FunNbK#TgrZWV3e8YTp}X<^xP zsP|IR=?SaNc;-GZGU~;(btYE;Sqj0Rpid6WnfcAT`3&~ z6#_S-%HsS1T4dF|{J$L=^G~>bpGXK0pd}E>rfBc352{@zOIF*nhVh&jHPj1XK>Y)p z^0RS;oQ8yHJq7N^yWuVprQ5r9djM3Q^?GleL&)lH*VY+PahtUUmTaLm1>@C30Bse6 ze?2}8O+`CqJ8Ll`p#nJOA>l=SQyikaUN4^ZUQ5d_*O`@A&?q_~t6EG`sszRIwevi6 zD`HFh^0fwmsUTa-i~Dj&CZc6XZnv~i!|!*yfUqBdWCKtkye96g@CR`iV$lo4Bn4w* zPtx!6^EMGp&zh1UgYJV6(otzS!QAAXqW4>`W~=H+OOHFN=RmzGkUfyp+wxOKqu}>+ zDe7X1`ZH*~vNae=qJ(>(LaR7@(F`SnhF$Ir?Y?mDg(t3WsUP_hn=2|RfZt}_H9F@d z+3P5z545aYB%ix!s#0YHsL0bOk}N6QIs=ZJ3_*S@uI~*(KK5th4OMLrQ})AX7Hq(z zB@nP$%`St)f}PCe@1qdNLDvi=I@ptd9ywDh9<4)Ywx#M1a+F~9H^mDzUG(7Q6&qHc%?!t7Z+E=631N7_B^@c?E+|P z%S(hID*UJ0`}zr=3F+Z9#P9Z)QR}Vym@tEZEsy+~BNk@eh3AG87sK}HpeA45`;l{Ts>Mj(DY;c6?h~!XI9$B8@e8^cxP2-&uI*D+}T%GAsRgfVylWIJIt1$FnGa%iA);8y+k>k@8jb)?{XGYQ%C=@Agu$D zjUhFn3=nE%ML#zsfC3f#QL>Sy{||7Y9Wy4~*t`hOci}2sN+iGg`Cvnl1uMz?IKe z!qP^p{^?jR6Vi3&Q@d9Vq8TV<%I1A%O$%$Op?yOdKHdKmd9{}pxqCdd({GMC*5r=d z#ca6%jm+YJF>NuuL&xA9N$FIgd_dAjm((e*P=aGV}=LY2o+lyTNdir9dhS2T#t~!^I z%l@m=&htf?&dc4Y za`-nI%*!^6UyL{NtPCW#KJ$|tkkgD0V)mZx=q+jcRS5)$Oe%mTp>#TJE|Y;kOb`lp@$o~5Y|ce4i7N%o9<^T=RYyv|?iOf)x{=>HymJ~B zFUgSrg(l7&c$#r(PMPSpI)W0fR;tuNhB!d2DWkvJWC5rq;L5F2$0upYaKX}bxq|V> zxdwmEq?sk(-qt{x23(y*Zi_2N_*ogh*^*DVxS;V4TiDxLaIE@hN~#}dD#7{#>pb`R zwNItlF0s7XNfoi+JiU(;v7Kh32Hj{BhR2@=dDm_%pr~I5WNSRWuuy;oYH7$!#eUWf zJpk!i23q?AO`Dje&?B)DN81;y7(5-)r54IZ{~QGaFb08e0p!nmJ3)OofOX%xcp?v2 zF{3=&jsPl)&kO41)c@sZXICs0T&n)}lz!XeJRd}8Pf&T>xT`}0r67n)l$lKeWzkR! zoKL;!>)wUWB5aD4u+eq|-j_0{Q1E<0uSG{|A`Y^LJAt}RpW9QuA4U0IvlA9jlUNnO z+GPtpGZ-itg6fI|z4pP4h9sj4LETgBM=%HQd+_?*m)a6UxV?i*n^)V<_n|e~W8iP| zPid&QI|LVmorr9!oX8A+ZMKKATaR$=M?a6rnEtaF7z*VsTmm`C9nCJ`1yf%feVl9% z5z#7sa*1@Jsw}G&wSV(j?moM|!c4jo?R4_m6FSo>&$EV&ssr!#gNd5+ff@i+t_r9P zZ+VTZNshPMHFFCmIFP{H7>T0Xs{+E=nOhb2rvU<3T)}8i3&O z6Sm*)!tCD~{DQ5;8+6C>L>nP9zC$RG@sbPefe6qmbv5ijc_BWt5UUBSg|U*|Yz3S~ zyx`?d%C5|>kM?2KG$B2^QE$k4(qkN;5}fg`$c#$y^E=PG_&(>HB``Dl zMSEwb-e!5Nhph4cb$c;$E_|ix^ThJt|)DI^VDMppk{*mzT&m6vr2>Pz3OqITsPom zskczYJZW{4C=8zqoF+ieW@S0Dx0U#HXn8Xb&PlA;r#X5VyxrJ=s&U;h?Jf)sf`QA@ zAw~vEHxQ-4HVuTeYVl$fXmTHh*&637&DQgkL4zL+VJgKkBy+(W>!u*hcDOqXE=W*S zYr_Ul>`SzK)@`#HzSmaUR^{Wr)x9fyHy0g(&o*ZoJQ*1o&pPUfBJf(#9<&Z&DJEu0 zC{K~eit39Asah%=1shy$VrPo3)%hKqTTux-4ltua;lAE?r$it^wY=u9t;2+{g$@v z9{r|CeU-1{=NAwH;6f_IJI)SI$^}udtzE0%v5VRMrD7)BSuOYPN1jX+aqq2l2OTXQ z8{?P+_FFrT&Wfzgy|4E3W@N3hb91luO*=yNTt^?*JmDrR{ePT7n=l<}XJ_Z3$3>9z z*6HQ){+kJQruYi{V1@D6VTLck4B0e!Tegb{r7-3Xm*B;{5FONiIZ|1_)p527aQqve z@%a#M7X58MnroZ@yzM#47ev4MOdV&&xgaBtv%lksmNG9v8n(yh$@fo=i#pFQ1Lq>Q zMlV{AikHm|>0qGlBxwt8iQ~AC)(y+`+spbW|iu})o@Tjge0E16zOL;S#MDLH4%^Y8GUlmmBjbzy@O(lMNO_!3r3X}3TJOFtP%IZBrVAVhUAWJ1)1|=-+8cf z6Nkv%l~==X?E{ips>ujv^IJ#&LV;cTTq_#qCarbc8oVc{`UA>`-=8%iB0)UGG5lH> zdQ(Y4kZ=9J7BQ^P-tXZSkEEw54r%c>gaMXW$5z9Eyx=d6EM|flsDF~=6oStA%P?ghzPtg zcwvvyZep;YA`x+*Sohzr>`xQ0-qFGHf+mI0ukgxa;ao>I4{?2fi36_78%0YtR$*y!!0`V2i5|9SnIM^QlfD&0bk zg)tqF?a#&)N$SG|xV4bk1_U#~SoEUQV|GV+ImROp`1d@Do~DEvdZY5DmhmAr7oy1h zdEkcMYdjk7w+CpY6?L#$9!N7Q(LH~l<>n+==|*7Uf~ zl?=m!emwFd86lr8wG-_j3&!@ixO<5GxtjmVB*;oHh-Y?oG*$;(yPqGla%%7%-Y=^u z`KZ98J{b^f^DmU15pL8I4{Lk$t%Cm1zQ^~M&)P467xK)Fgm`fD6vL6qZEcV$D3rT? zLYEX+H8CxyR)U|uN5l^7{W>$7y!Y!>_?A5mETHI%qwt^jGl5r^RyO<0`h-*!pz)rw z1pH}uPg3AtrBH_8TTm(9`sl91^r|Ke_Y>ipD)4&!!!pPxp#7J7r}{}TClk)WPt1p5 zh72oF>S($ai?ssbYq9bAh~g;O5hwE`Li+>U^=in9B2TH_|s ztdJYmGeT=>nW^H0J44S7z0WnTb^<%ESUdMZJH@e|88|QoI$~-|-C>eWkV#+^)B#bf zo~>)XmegP_rId1ssh8#v1*T+FrrS)tXCAt#1yFI99Oz)O9L{xe1!48m1_OPVsd{!y z*pnw2=*yXMX22N`Gcrynv#O2-;1vP#*K1Py$j7OD)a!k*z^zB10nk|n?-v((8kLUcV`{=y{w$OWcmuGMQG>$J10v#d@A>UP1#O}}$ZY>EsKyVu z^kl-T#dLAoi1U44@6h)UR=k9u!~sH>Kvjft%HCVXfK(+ioy@CikxmQKb&v0|JDCIh zsh*R@a@2iU5MiB5z{+Qv41FCA6Hq+nAw)fJm-Qu!XRPM2o`jbGcjCsbP)4oW(rg}g z7XB^nL!MGMy+#m5UHRXjKx`PK&eD$Th<{Z;m1WfdAYPqGJ211nE(F)gnsN4GO|q)| zxnQr*2{2}TBRV(}baJ#*83-*#^k_dqG9!OzVmL#=#>hOKI^!d<@jI>-G=c3VgW-iQ+iAO6S zhTC?`WuE3SI;>Y$;r~FQ;U}NoY_S5ug&`Dd1EmHbtRU9e)B?5CPK>hCx^o zXamITbYxxZjJg5F`5CzD=cEN=?)Hah+7i&h?7k-n)DJTm4mHKgA+<$D13b-d;taVt zVNGst`yJ_LDB&x^9E}ktTbH}y!1M0Edg$2|oB+rXVLVW&0pX0>^6$8#>!pJlXDVao z@tZnQ`7spwe$%?M?WL$WV@Xd^_w(90PknfAh7CvdS!FUnM|$LP{B}>{fi0H>RKiLN zKJ)55RQ0wxTwS>Rx%DB<=w&&G!+z*pyf8ENkDlX0VL_avogn6m#rklAxp!8BXDEiL zTXOKt05YB!iqryicyb(1DcpXl^ZBb_bSOrm00|ms-kXr+D^_gr{Slbsuk?IA#|0O< z+G4}aDfV4&oPGtBfKa7`JBg~+E(O>>cj&fD;Of~#gUyU^lD8amusm3698sQ?uM6wX z7N!L+Py-W~mf}FM8TfHW^h*uofR=jUYmj>8XFMO4CEDJUP~w>VU{jzczHr%igvBZXxdorc9& za~C~Wc-7#&uBO{OSgiy~SmWf}&$^e|6yx{zji1J|ElvK~e9lTOrBRcV5WD|(J3|%;B1r_1~i|~_HZVJ4*;dL4lqVy1LZ^=iBW! zX0O9?Vhkp&8t6cSqBXj8Z7HpW1j-Ie%*|2JeV*K#e9rM@N+XTvf{sw|E9xO;m21>OOY=Hr3TCl z(~Qj(LyiT@9s!8L;Og3O=Z)~TfV0EA%c;h_T6(Chn2hy$)7Q79z(ND)X0QP*4979D z74-Fq2Xuz7=E$@6SZLkqI5{kmp@k95FdKgLa<aN1S|U^elrtUS z>p6{cHZ`W|xw?YmqoW1O|A;x3E$jMvFJtFX^ADcxMKc#?-indFk8xFv z_e$=H4kXQn%$F=_YsG`-_z4k zO=XL!>Q4wziOxW8Sj5@yVM|R-Mc7H@qNoXjhc`Cg22o zZUE_Zl!t2?CyZKTxyWhIB7@1dt_}M8`T}^{1mWk7N&Z9{ZUiq;p_`4x$~nQ0Kq;xzO!vX8!aBnG~z6wt% zb`m7-Pws!O{N8EaRll-=T>ID9?ylMPfa4SH&vEZyO&pIo^J>V2Tn@$!Qo)3U3y zMKD6gBtjkKro*qniKJ8dk^$Dh?Usu?(;KKQEY}bj3@?lqD7%&4OW290ychm<68boAEMEHo|(YmDEygbX*{{;w+HaBW3KS`tB zD~~V6|lkWoJ(B~F;A8rcMf|0X7 z8$7jx5?lS|avK#<3xMiZJ z7SF>;TZ)ySQdRGd`<%%O<%>2#iIrwB7iJhROAzs|&Glp-g4D4ROSp&L4r=@`<}oqX zY&1&v4Q~;>)Ik2@0>`qjZP*Rt8y_TNNIX6xF;};@UsCABPLpvNn*}_eA5fydt@9;r z(S7^$XCUr!Uu?_uU(Wb{C~)LkVO0n>BJZ_jRWiK;!PqIO8`+Hf857u@Vw z3E%jpl$nE0AnyXhK0qW=$XM+q_5~+tanJ(Ak*v~Ee6K6zh&k%bK*#as>Se{%V&{3% z)w%L@V!@wDQ$1}PlNDjpRiP29c$F4u1Q0q)}V?CNqU>At08v+Yj*76Tb!D_{eC4iXYLHcv!1+0G=(EetQ zr0u2;TFM8?2ZWk_Otj0(bu^n*HURND&uxT;j)eN%d@PFtmN|P@Q9Qw+bq0-VvIGA> zRU7+*Q*M5gQ@VcyJCL`svMK)KJ=+Fs$`TJ+pr*Y^9M@OxAU_K4PCY(cT#@>g->E3a z@QOLjfzD#xx%Kjec;rVBe{EU@2DOh%wRBto)4$pyx5Oj&M=iI)HpeUaP`IQz0IhrP zR%T066VTUngLu;Ft$Yf6j`*ZP3oLZJ5jgvO1vQg!q*lz`F$Ce*kHmb`-ob3LjM!nP2iV+$4dwDqA zv$t0kd9`(6-Su@xjywawpLbV9!y;T$4(>Gz&!0)uOI6D>|?&B`d|+9?pFmD5CQ$wJ^K~b2gxLm zb*-4u2&>+WcfjcQ*ciNeqrO`(H8GN>%qT06Y*H~Egf0OauC0!}2X~YHSYz?#?>^Fy zP?@XQ{#({_N3uxPAG8H+N1s*GoM`XN0S;ud5|{^&qGH^m#-{p!UQLCHca-% zZMs;16A&bsnGaoXjJr-%tRMfva1H%O-ug{u;=2t?PmV9;b*w^Hi^-RjZb|vOe+Y|0 z!0t2b^-ZernFJ7#_90Ul76c16w9{!%p0-&3v^T1dht`6YV9%6ntbw^~V*OyjK`C#< zzEeD5KrW{G#NrPDXo<|XW?*pUVWaU?2azA9s*1BC7p;hr<7*N1Ghl2pq{s0Qh`iw2 zU0rXT+|{KuN9im%7o^YF8f2e?kO2(`EyMs7k^lidIr)DxR!I9r}@JG&kdmQ z2~$ii{Hct4MTOCsTm$pAQDc2TOt)?f-QvNM6*%A!MFtrJd^95z^WlF~2hT}bm~rXn z4o9DO3Tt9iIU9zwam(QAFo#U!lJbdu=i!(wH&Wp>BMRjaf-f8mPk6?I^Yp5hY zV{yPo=RJJG`kB%JD~v&-G6A!9*JBy$;2W>v{JmU_>8HFOa3q3Hr+n7+gF93uD1Jxv z1l}N{YLK&&C)bYIy$O+>RH17xwGY3;x>O&DCUk``sG@=>In%(r8YE8=AbU2fg?a+R zBzY{YKbwka%pQfrpZI(%^UqYxZ06DoM3?XbH~}ih8eHmt(ls(7040G6T>1b;fR{Ib z^i>gX@WK(W_-|db?3id;^$ZCOS^?OX6yBeHU+`f#5X%6xfW8Uv1=;I(XbL~XV)0gA zq`yRgQ_Vkr!G2>S$#KJ3)aBlC;aq5nb~vS&z5iL?PY)1)`Q=9DoW@_Cc$p02Cl|Pr*Pkj1d0}>-@wvv(CG;nOjqNNS5%4 zh3`i3y|(%b?pp66B4F!d$4ssdkGq>2-~8wMO>+9aCKF@u8!I0Vddx35A#8%dr!onV z!J4pxvWTm^D}Nk|Hjv3dBuI5ltiRd3mo6!=t%41D_(eF8wg8I&pvz0)WBb!TA*m_6 zBmZ%Sk^au^&z220+_G}70{+OkMo1%^?1Ij~&N~RQveDX`z8lMIvZ9WJ$v@N<+56S} zlavA;m8MbyE!0g7{fP(&=$FkL)-W~>aS=}+EOiSb3ue5Ia8P68n_wSnG#5151y<`G z(MQJSe`klB_ZrsOFtjCmiT+EKA_J*o6(@_oS9$?kt8BsOyCErcL>lh)kn<7%iQ7r6 zODq}K^#n2_*HG4DCQfYGN-ZCuE9S7^PXxh*RUM{fI{4PN zezr2(U#P~$8qiGcn68iSE^q{vs4Su6XWFkeLm@)AU+t}pv%n;E5|+Rs4}j&w(x)>9 z2P-_sY&;t>`U5=EvVQOEEj2U-dd+QwhCf--7^`1$hd9(uw5oifB?_(cI`Lv%tJsW< z+h=}tMz)IXw#)*I)oiKrD&^yL8LnRn5hr1-GZ2*6Z{9wF)FeLQAD01l`O&uF7$Tz4* z-Zn{abNlc!>%5^GpSv3QWQ~5QZ$ez*@>#gj*jAA_2z;lw#1A~+C`jsKh zkWfom*U%<5_YLvCY8&lb|A{IqQc-HO@8pqpMK5YIvxYM;bLGtd5 z?6A5Yd@8AiWdgR~NU$EP; z?!bC--9~}c0Y?fL`;_$PyDTf>AVW=*OF4L_FLHO|z+H;%O%eKHS3G>r74h*xP`#{p zpO`gkzFK)eY=)%jcZIN`zfB)b5Hdh36UV7bd#vJmxJ2u@$n6D9i*@Lj>s?6=7hpOA zYa^(1z?dIEw$RgXdD4))U+((Z&eK+P__Ox>y4lvxa;!*R+(g#+%Iu9$U%To%kO?_Yd$xO8R z)de|!{f)6zp37$#COr+*`y)M%v7>3ZWWEHLyC)FlntsY-D~u8*KqyeJzUBBz1l8VD zC%3@Qe9o8;HpBxm*>#wJ{in0kIZ|&8*&_7`7D25hgnVy*jTR!}^XR|&L7TW5EL$Y; zdIb?AR1~)0+8N=8MHiNr=Xn0IQ3~G8>(^RueTg848S{8hlOudWC4OF~%c21y z3%^D#egR)`jyBaD>JmtCOJG2ql^DDS34*W`P_p3K8oL-I9PGXVv*NCISp>mVC`7wo z6OXR7R`^CZi^!ySc=UFBGor26Q)ASo?ske$YRL&pM7%u z`ugT0Evr`xAm5(Y+q3QqH;x)sO4?I66F%IwpZbn`&BqCd1qKk6c(oYHXBv#-GxtoL zesgRE{a)$~4n8Y*RZ%{aF22>i#V~hr=}qPv`Ps-jt^R4koFQ44a ztWIY=+MHEns1o#_Zr8jylbIky5EyneRVUS5V%R<$#y?&w>>)XYUj_n)U2wpn`@ z<52*o*)KvcF~ImC-23L(#%_V}G->;Eoso=w;$4F~m5}mDBKPXtxgWf2Z_U-pIoelD zk8B^6xdJrZ{Pb$n9V5p&+NjWdqN)fmz87A0%^}-h?7yX)$g2xRq14f{3P#ql|FIZ* z;{XuG`7$rJe*La4DM^zLJql2j8(@1d@eIU$JPCV=5Zh}L9n{f6f}X)I8yY4g<9mZ@s{_f&AlImK zOOJD)Q3r`jOJ9s0;A$0%&}tyhnokWjS-2NVQ(*{8GO~=X32Q&2w-`Q!ZV4(u)U zSK>1pO#;H@284>>m?8Gbqi|#6{!K-$WKE~c1VbDG0!&0Yv|Nf~v^&L>xQ;D`Q0yF;5S76Cme2Hty!ga*UFA%GLo~Ocu+bg|jw9p2LHR%r7Cr3ZVT7WhsU5?# zRd9$dxCE*RN;MLQO{H%$%XOg%7!w^0MrcI;13BeL778nDaPma%q;{UJ>Cdq!T3%ie z|IZ7Me(hJM|Lz3qoUl}zh0>&_ROZW1F9XKQmR`{MB2+-+(ecOSYuD(_(@wx|ON|Eh z2dbr8Ib?tXVA_7)PHNDz1IQuPJ$rp^xRzqbHo^q^EFQc8X7FR z=>${z0TbwK$a>ZC)WcB*{31V{7Q?5LFeR?!F)3aqVR)T@ll<-12Jbh8s4U6Jcy}H| z{oF2&0izm}>x=QaHPjlC?GM;P1-}cq!D+zttm{`@lfSw3XLXL@?SL5rLrD|Bg+u7j z0!IiiOMv@8*?ZdPYh+&_7-UOFGMQa8P*=(XdRAXLDgU2Fh6GtYBkcIg-EK0~nFcam zoHiMPnhfEXeVw?+%aYBEj5ATx2u^d#PJ|XsXn5qf)2gb$PK&!F2<(`oM)EL|m&4G( zL1u^L9DTC8gZ>`3Sse@%_!rzj3;+J#U-V&2n6kcTib^9|p0{%b_$C|kJ5lO8gs-*mYSq<{%JY5VQhEwqc z%HEj@Zk_WZ2(I{DPnngo5WKC`A@A&*q7MFa&sZWA8Oqc|GV&~y;e}GhbjXLV0I~Ix z7l&%_`2d|~pS`DDtu=r(c}2T^G6RO3<&(lUIHDfjS;j3mpv|)&cic=z9k-6zWxz!tb zghQceBhOD?ACMIC{t)mcSl_BkDHO2~+_ngax*I3~+DCc)2kJIAAq5S6o`;Rg`)=Y0_@$;x5JEO0$3`^q#f$TDi>hUL3@Publ3tP4j%L zTrquqW2!g&2)(C*gulDXd@0$ZaR#Xcj0iATWb9K(qt_<0fX+@#JV)HVN0RVETZb*! z=$_XcgumWkOfkW71#^7 zi@tUFt?VA+&DeQ8j_WoQlTEYr`VQsCeMF4}!ziM1xyH(uCK6g6zUZJ`xcxLuhcE7} zjG&))zLfs!4`oZrq2s`UJ=m@iZ!`|r?-f`{vvuZJlc(3vZjh`NFLS9JW^2I!9Bnd` zj}rN7b^)GO;j(aP3ynh@w%LkxAK;}7ZuN)d-JcHJ1l0e|ILT2ouHL>oe0w<|!%33u zAgcFuaHrj~eEJ-#96-+&}g9QBQ2u<3upLqcFj4$?nguEg#5=ZD;@VVF0y~*pq?*xa6*t~Ij;>LRMI|cF465*5v(b0zYPvDq>9gjnRqicKbu2I;0@a< zIs?MaKFx*rd3^mC&sfg~c~)HfhL%d4U)8_kn%m<^ecCw)QLJCRbR||whwTPHXoq(* zqMVaafKD0^{=4Se(h0+`P)bI1NDpV))i*0>e`I9x!Z8SqE8Ys43^tr=wp+ZhfdNBd z{Srv58P+d(0;oRTK?E|;ipL^^kc%&^b>`iumaPb=hRuuzrl~n-lK(LWE3XAO$MyO0 zKuXEsf9w%}v{zwe$)W!jX(#utz~wiWqB-?j-KxxXLbH>42i3lzr(gV2FZHP; zN#IqsaV*bI+9i52H{{&6m71hVSEwoFsFDVO2wyjr6$9W7^9NO1LGyv#Bm(tT_m#dR zkeME~RRp3y_!naBI7|Pt-px|Nk7f9BP?!#X()p=-!@9agi7g054+Bq}WklG!@1T0fbhTH~08X8;Wjbr~G&otF=8V{Ua!K7ehVAbtf!}0FP`U zIAigq5Y6&qC{^-;(u(E>$s?tUB_8GDRVIUBAP?_X$5Y9H+)zd|2vpkrlLuLTXZir7 zj)o^o+?0pL*-ckyA%+u}flxaazd#@y9cCF66x5zVaqB5nvW}};?G!BWGEj)MJdBv)K!;9WC)-*~qpuQQTc$xpv%b+7izI*&y6M&S0{S7E^o0`6I5!+# z+b=p=^Mh>=kfqeJQHBTUXzd^K)Q*MEe+jxNu+_Q0(A_DSwXxUWxzQku27*{ErikoW zSHGt!-;i`li$gfWD@(VBw@bX{c*Su+z**;P=3;GcAT(~@h0RqBKmGb57S$U;Zr*IU zin~Z!JXuI(9WU7_ZFsfO%vf+Rf6#M~hdfM8b)DR2t*)-H5>rpstG`KT+B{ynKZsq8 z^TKE*Z+NdoJ^0l#YhhfZd~rOz=tp!m2=2V;)b-HDAha5gc`?>y=WU1LkPkbJe5t!8 zE4F6qJ~SpVs&xQb#n1CAx;%6`zdAB)U9@$C8Bl?CA?*tiV&0%9&fbO{kA@($C0Xms z!;`GlhCzN|l}(VA%^R ztb|;`9h3^W*Dw}uC{5iUpPG2TSl$#aN8dtXLt3m<=-(-(f*|i`ykLSgwVeE%yv3@66rroPXU@T~)AC zwRI1~8y6~BaM^U^LFC1G9>vR|?t>l@wG%s^7K9I6&^kc_r9wYhK3rP3Nolv6g1Ezc zX;5_3pI9bCvKfMl|8uUlW$a6ca=nU{pW35Ht_c7&ICq5Zq&gh?Ty)0xhlLFbE2t?P z|CsI-y;~#8Dxv6g=PB!)ck?_6iXdV?x`IC`ra}^-(%#h(&uok^I0;_tW10PB|Msf9 z3X40wBJXF8j_P}Mf}niZw{_Kf;Zs50!0v1KJ$&bICd-%`P-YIVBr)<-Jl4RyLF4ViQJ&l!N+t#XDLiZ7{eR zQZ6FSH`~4aV;fX&{;f?d0*f>C^0u%5Hruc7VNDe4uU>f(`#w++V0TV#-*saflz*R$ z#KQg2BA9%W+&cmg=CHyJw@U)VuyOzpB$y1-XB&X>fx3f6evj3|G07&lr;>u@cx@uq zpx-UlrYSp<^bStlX&hjoFMDK1EGEQvz zSx+on9bPj{koN{oHfnmlz9(0;*aX3RAU?2;mw^QOgEiUvCH69sR2uQI1Z`-EMz0S&RMs1;I-%@fdmpf%a3p zgMb9VNae$rG)r(PJkqxihGr{<&>8`byDWY&qd#m0(3PeSjq5JTc?PLy=VSx~LWx_7 zMI;3eBL~Db&%g5u=^Zi7htj%Kwv)e0I4!+NYWVZ$SVfeJb0jJ=#i)G3ArGBW5CAIIG7=Xuuh6S7=@j|9aqM z^)0$rp2=?7(xTZ`jJ(5#bSm6xMuU*Ae7AsKYEASP(mGIKq#$SuR%dT zBJY9ta3G}BZ9ru4&wa0W=E0UI>0IqK(hg45#Z!Lt{{CNInPBh2NAEYtzQUGez z$;F!Qr+hv2=a=E-WG8;9r=yXw&tKaoK|z$TIEXWj8g`Xxm&oA-O~f@;c=M=){}GKm zU+!nWhx=#Q+&KmezFHsV&$kD;hqXV*`*G-zPHW@S0%0oO+nzv?^RIqxxj87GMX8BU zC`ccIKWPx|nz9y@UjfctOU?d`mW%E2Xp&cXLAJGQp+V1u&&9m6-~K=6W}B@-l^9j_ zXT*e+(v{7QYVIZ#lzMhSGy1Y8mw5HJG=ly`H$4n zmg>$r0eH3jASgk&cX!{a{DZiIoxG1#wEzf-_6-jwU9V0HfLR!l0ebqq6~UF)A>3LL zg?MNzquQ~SNOScxVzzZLynt3#YzR^cDU}U3_o=RPZvff;IsP+K&FVerF-5acS-QS` z>LPm&Y7_bI=lW>%wehuyZAySkwoil^$c@UxnMnNUnzNV#h!xfxVmWg&yP@4xR@Ik5 z%*dLm`81A7d~tYd$@|5Q_FTiY;o+ae+DpiDj;+Y%%_ZV|GLB=B~YdqicH8>LlhLk=szl8CgeAQ!BH3W5{e-XY> zGh7x6O@sg$oLMeol+Yk=AX?DW4U3>xuRop$#X@F)kI1g_iuG9`$;`+d(pyCm2Lmmjt6_ySHIFK_wM|KLlIz6B-X^8+!0V-xK{b)8kW4QBx~IpBF^ zW#Q+J&HWCp4X$KV`8WN(_z)no%lSjO?}9T3H&wm%4E4e^9hQ!agT!UvB!^$i%(8RE z%h^1FONu~r%zSmso4ER+&h(SQ*@)lyD4W40kv^O=b7?Dy-Mc9Tx%!+lO`rIx6%dM- zAK$SiNC9VAa~GP4nJ=h8|xraIMj+Gk2Nmdsb^wwhKQ2 z2!wJ6*OU>OH4GzOm8(9u!Pyiwpv0-;OMmof{R&Od-n(!H#Yd0Cjg>;LOfjWnZc*oqRyI=yElFM|(gy`^ENi zR%PV5olO|!+&{GfvVXiy#C+qL`9C#K2Vy?ZD7Mv?`i*Jj8%3SFU64uu{9^E|$(r~n~?3j9`>XpC8 zQR)j$KNJlF?{CF-rVrmv8Wc#tec;#nN#5#ZL}p3~9N_WxnlOi zU1+Gv2a9O*Wa~1HVw^IrIRs)1xW(g}aJ6iDg}#nG}RY=2)H9Gr5qOCKFvUk6&vbe5rzt*+qa zZ=_mw;~zj-Hq!WeZFF=fqsY>N5BsS@MWJA!C#uBz;&5W6W!exkYtO?Yj?kibxmoux zqVaWbDWE|a%>k64;-rl$uKulFF{giwqtADepv7_vq0mw_H8mAgYvr)h(DvCchGdX> zvdCKb$3Kg`z1H<ThuLxEJ$;I2js^X4ilxEBqu zH!(UOSo?U-HMK*5m0!_VdfJY-{mq#DJ{s=Wg;z(Bvh1vO_tHkpLau{jf`Ux5+XGs* z6#E4F9{5GhwuDEbH=Q1iogG9l;NJCdiL{%L-fYp$$lLX`EnH#JWxoo@CCzX~tV3bh=K4~|(T04ZN>_W2sg1fMq?@gY{*JN` zmRTE?&vA`U|JJ{J7*2sqmLrb(;~%b=>FZlx4~8IJT>IKz;>vxotIM|r=kaDxjb(OJ zKZ)Jz8UCuqrxpOUYF%fwkn~=s*0Q?ATZ3Nvxf4AwfXcV&xJ z_bO0?0a7qJio?}OpsLIR$vMm4T2) zesAYw3@bre(A28E&WaO<^P>ySF1CzAtA+3#7nFj+i;r$haegV>VnUM>9`vx!6-9=E zIvWt@LU%lBLs_FuGj6nQ#9Q?&u_EAdhF`x^YE z|3ija`y+)h*Z{&;d$Ix0QSri^-;g*kCp@Q%U=S1(h&+BnLxZH;Dn(VS=RqlrD9qqj z(Fn+65lpU$K2>r0Cof;714jmRvTdwmOd;}Te*DB_w+Ix5{o4#1p)P`gv|xijyBYyX z`fi1>2i3r*Ag&a3eb4YgxF*~gN2^Wy61zm(kN;e-0GRb^-jMjP9rjX$V_-9W)PA_ zu|CQAdTicF3BQw~<|V?;>UGJQYqgT>gUh*Hnr)o|Yi`X7+_}h?C^^hd?!8C1^1x7TFQoPJg`9 z6F?@0cmL`5BSEJiFiO9ufam15m+h+`e~w^e{P6M$eD);K7|B&Wu4nn#*gSl#=U3K~ z-BKj4?-PS7LqeOkDf)DGJtPt@eSTA*NnHAVU3lhn@`O?2iKa>) zIh?3QHc;6GDguZ`63b`JOZz5{VLy4(CK#$~98^CHEbc9w1S%-yh_^$R>hvF5o54JQFoqg-^s!c`}ze=ES zRDubLS9G#m>R#g2<6_7m(PW3y)RXYfC9n+rIIb-1)&NW}yF&*-GfmJiVN#0u`IRsD47XT}v ztjg_)ffgqIgb z#*y+31zMgvW1~ujfFtnX-ZCyttu;IZl2KQ(hDTG^TK-57fMKn}e->HQ9NVtw3wv{K zDWmZW*8J}+vp_}DEoDPn=+ip)^Yno#jF*nW#rmzyCY-5ys$w(mXnQ%Wb>Vzz!1&G< zvKaU?XG;S~;$rsl9K493)YAKnoqj8pI4;5c?*qmzIwPVqpeot)p%wRW`#`%DN+@q< zo2`vkcaWtQ*wOreq}y2Q(B1K3>_@%Ww3StT(`>U{zyZk+yK{1|<#zOQcru4aIa0YW zJQsA-l|lK*`O1uU%coC5^j8o z4p>`#l;vOKTTEpmQh0}+T*oD-EC3XCiBk<1hn!yXy{<MMX_EB99q1*pJM_ONWh z0G0xDGCgf=x4x?M1BxzfqCyDaOHhGcw6x0o7m357w{G1nTx$;ij7GK`$xf#Ru$;Sb z$*|n9iU}HcX%Is!zG=&qpzz=K%oO}iVfx0iStmG?w(9F&mV0i}&m{(xV1~d<(9;wZfZ?_*&zhKf%4leuVZ>Q1Va`r2p`}roQ=k&-~wi z?TpK5!s@#LygE1yMN)(m@5!1jPg8p3XV(&yLYLy$xl@KG7LY%;SI>~;5 zuGxCSY?|79!*dh#+)Wp%PgbgOh}O3RJy4TMwj2Zu-QWgv1<#0Fjr>{Wct$x5Q3by!$kE z=MWI?PZ`||!`z=6%yaers$Qe?tfie%Qeuwu=jRwkO*nO65J+%2c9j|&kle^PDO=|S8y45Cw3~L1rTFGm4!qGo(8*j-)ZAV- z2?g{aI$%J^e>IMw;Y@Q`DrzL2nSvV}OJBD4#7I82Ydk2GexXx?HN7774FpbVHVI#Q zvZ`|DQ{~HTr{{UO^Z1vU*-X9icfV@>(&{ct<7BX+{IrfW@R5n+jOPgqtqx?lBC|9g zB>9{8=F=?Mk0AdM#W3wzL^lE|qSM7WB`>o5fO`r^d|F6K)P|^y5;dWYIJQcFMj;|7 zObgytwR&I1Pi$f>LN0lIifP+zAYCtiW(F_qo6k+xN$KJFl@$G&aH;IQHO|kJS)>`0 z`+(Ce)3z1cF>dA4FaN%o+bs&aRLV%0?cHlVF9k3P#+Xj8 zywFav5GCfb&^|9c*4neT3ET?NXB&%OYvih@s=Pzy=2MpB^9;+NcGc>L(dso9Wm$sn zQy7{!?o(q4U>w%AhuL&K&c3m&bBNj5B#VoYQ!xg)J8qqJXgFN6dac2e1I>o{eEh0O zAXfuY?JbjM#6JY4z?_7)Mjr1DN2o>d=pf*`b-f`6wyiO!4JOMx z!^=_cL91rmJU1JZJMY%1p8hSq0z*VzG}GXhjCrD(?CpAjw}PM2ikOuMKbSkO74NyJ z)nnsr-)*zsU0p?hC&4^l?C)>RZH(z32(GM!cb^?asBN4WRdX`|WiC(jVINI~>d~(F z;@LLMR_{T`1u-TvIPyU=8fFqV*qk@WAJE-w^W1(9p|g=6A|@k10TFSEql3q-qRosD zydc^Uf02Oa&#YT=dB%h$4L&H3riha9ebCe{1YGD}+v|;vy2-(3BS7C_H*FCV6;=AK z$||g|{6@F%Wnx%3GlP@>`5QM!8J(I!ZW>$NL7-^`JB@n*>c>>Im0q86A?|Y|BPNp^ zmd%Rxtqru8YCNKk{d7=EQfwBa*{a=vFyV#)JjC@rfYaaj#r&)En18cDhs;*@lEJOV z$Od5Cm7?qp53#e#7SPG1V*@gII};=>4zq@;_gMOvTf4{q>Y46Kz^i8)SB}=VIs0N! zW|pnq8~HmVk9h@mC?#YQ!&~;z=UY!20*MQFu8D1jV&8-SkIMMsmyiw+m$=~btv7`1 zp*qG-hx~vhK%Su%sI)}-!B;6^)JR9jj%b#(Tdkc>%YRrvycsAI;xt0FheU&#K3h!M z+tfAp)cVffwJYQAfx_ z9H^jwL|VVNY_rYLP`rNvjRVm$hqEJ7AXl|~ukUF?E&;3hzBVXjGJpq#YQdMf4XMj| zp2IO%L^w}(l1Gsp3l#)**Q?vOQ2#&Vf}aLkG0CPpE%w#sH6}>`r=Ss>PJ$#Yl0tAb zOUM|&rN`4SzOd7#Z3lwL{s17egXoi1l$O~@#cajx@YcCUz>w+nkdo8nqXmw`+bh3| zR}sZGh+%@6D{UJmg=VsU)02p`1N8%e3AD16(>SVp^J5TME#?VA;3nN7iQcj= z-#Q)l7Af0uFwsD>?bTw5ni;djwyUh!#>C2L4%eUry&=%lC+_edT>$RC_lqe(YL$5>hAfJt zysaQBWVhyy^pQ8!3F)_NK!HiLvLx9bQuL+V(H*?fp(AHMO7xdH1{uU>G^( zcIQ^@Y?*vDUu$#nZftzL?{pGxEhD&xM>EuwI`EtjHN;!mvAjJSX>F@G=LlL6O+td#qs#X8t{EP z|2GuF@U&ojWHVSvOkm}ffAq@lh35ZYG!Mqcj+z|HC`?HY zQ-@zlhVsLot;s9Q7X(1mMFfPHky^Ch^M`&G1c;OcjSIE`nitGR&n%sU_4DVhGZLFx zkee)Y*iU7gS0<}8&4HkW>xQ_bSYp$+u?Erk`p;uhuX&%DZvPR%A>1htEC_iFM8wds%y1@-83zM|1k2VAWrxYSW@~&OD8}cwBEzu zue`p_5C@ePz`?NUiwF9i07vBS+SCgatYnb>K8ENs52T8(tKF-uCytND>=if+r{bW} z+&QXWUw&`#EVzRGD|#b8z$$M{Rh-iq`5MCRM^6B@6|8oVQXsL;aH^4x}_{stngBvMe8XcS3N zL<)mD5V3ux0on0)sSP4w;uKb@$4G45cSS$jy@2L_hJYX-Ei^P1Ajo%z*Z{uGt^@bV z%B*4jga0cP&LQV-j=Y@ zr$w-r6d|x!sYL5o3TTN?Ok~FL(bAgR5L>-vfB0C_(L$G)dRhv=vUy*B)*IM5Fq@tWg zHhTu$P7bQrIQhxPbka1aV!`%^@pUm?QVf7p65pmsWtC+DMx;X_+kxT0&I$ZyB|;5Y~at7 z|Gpfc`^+vkJTiIc_=cY64yNtV%^&&PmQ)N7w^(zkYjQP@7&Pet{?PwFj@bf5%c8swRgg*}<8$PWqp2n56bChsocCM?Ok2Pj*^N z%7{4ZVql#39*%)_a~29E-OLp^cD|c#Zh%mSPZaL}am>hO9asb7@-5K-tmB6tN~?pD zI^1sKjBBev!eN^V_`T=+tN)0|3nzf6zre^`?DLxz<<*r5_w)sM-|tW~wy*f9Bi!S+ zJKZCjm7bk~tLjg~1>$_<#wMIeAw>A3^n9o^-zS$N56Qwq$7i1x zhM?bL#s7Sf|yu!x)RA~6# zuV+x48L_cOE>U8g>)W5%TaHt^3rcb7^oi)ujlguM&BqMk@*q2=xU!G1zRoJo7bM-^ z`K6pr`oVL*wj0TiTgl0Erq5qCZ#H!VknN{8)(>~LCv&RDe*AYGY&x7($D9@TTsM%eT7&ZIjehXxfz z9_Q1ZlX80Ye-2l=lgVqsbnoc;>MX6$E_#~RC;;wd|49|y!kTuAjh!j|2yX2X$1__I z0S_aQn4^CsUd95h# z`y?Cp2Pt1mupa_>+6w(lv5y#`=oP*`d5rRF8Sn~J9b}r#n!i)ARpOV6`r!LZ@U~pO z*7Xp(9Qpp9t;uIV`H^W4xt^IFZ}vsnu;a;G%gs?qyFk5RlC+^B$K1#}as*)2>RN|MIr}F-S4T067DRI_-WP;%G_Uiph2bAAwto~>4ksQz`MNA0tkRFk!h_aF~)P)3yC3vCV z7=Hy$6$sjV>*~}Mb(5;w+p42$BWxA`or(;(3WAp7P%ysV&lW5SQejO0x);wQE(X<( zbuFfVwl!*nV=KRaTh7q6yS*)ZuaxHuapT4&mzG+KlX9!V(X*ZOZI%`!_Wd_M zVuIsDL|bnW4g66vAvg4cn80I==^(Tl8gfgR%qf))8^o*Q4!%p~+7!{JNq}ahCg5kN;}syCpiW?&p;32nPC6O3c^x zJJXcr5M|I)b*SU+@EN5#JwqG_1A;>O{QeTDe?JKzmg&%wC1M-b;nZI}uW5?z(1Xfq zXC7AZTeRyq@`K&aV_Ft|Tc>XTX?_uZtb?k5Jp_rVgZR}cZPiVo0+}VNEpwO*AdjfW(2+IJ&5R) z%NxrN2x_!MFSPGeFCG;v4mZ$iEWMo6zw6~bHG6*mZf+ySlFF}_$-lkpq@GQ&2*<>3 z{E*Wu>iM0M`;rMl3F^I%wU)xxnI}1QWc`eVXbj~}aorD@nfaSnDD%5QNv+iL&yVyl zJ@utprR#UcVIvO@oE%?ve(`Con^B-c?xGPik7NmXm*V4C(2&Tuq=Zk3O(L{8^Y1V* z<_T9ygmlk@X6a9w&VzivT}w{d39bMMeg`LB?sms=s-E-yt=C}SHYu3y!QjrQ2F45H zWIO1RJ1>5l_1o?3OYsDh;uWR5RCmg0R@udnTS6PZ?kV@hL*G~`kr@{b#V=!$yA&v1 z5<}c6-q=N%hMcr|g3ctJev2$H;P!W*Wlt07goZ3GI@Dbv4y^eS zWT7m%Qc~3!Z@0xXH;oGp7>@I1XU76YV|rB=7IN|q-E8V*ek+Qf-B8=n>-;5n@yF@Q zkNU5MwedetX$w&&1sA&xJ$V(cr^4-~O$~hJ!}pH&SkLEsj{*`W%)Uf)4oqgPG<_}P z=CYezyaf8zdl2@Vz|(awFzwLm`bZ@6Rn8zpGue*0arlAV{_%#ZHpH1?m%@-@v;@xbP*dUKK@aoAoY-tJCdm-VO(3oqvX;#H+IGjL7_F(pMH5y_p zZ>VlIW7qH&etfe549HTR3(->H(R57>wl!Abw(Ze@p<9a=y)oM~F@I|#+tzBb2UM*t8dH258G359)?2%RkdsN_Lrdv-bCw6vS%aRL@SO&~|u&t9baI z_WA8~rn*(}=%Z2~1XnC<^Z#~V7xHmL^e(KUC!lv0tM}490Er!)$(+b- z^-8wQ7af%lAk7wZ+wq8`qKMW%d|ZfO zbC=2aeo%~Ub~(Adi+)y9M+A^cXer%>{Id`1Wj7XNA|7pTzg={x>M$w^jfluYRR|n> zOg2k_vAAC%-1XBgepu^q@7{w!`ybWKQ-pADg}=dIaQ<76jk{rCrD3zZIN_5BR-Lm^ z-l)m)T?O7*2Sd1vFN38q4 zOLb7TK#;lDO$v}+S6CY#Hj?gH3sKI(k4Q_<%RHockf{|-kz+iDvUd`d z(Q`w%^(1Ig`!b5j!L(U>^`x-r_ms&8o_P;NFG9#h>+@*wA@GX2QWj*&Re3O{>$Q8_eLIPh2G zmIiTR%~l1vW%H*{#G3vdzEO*rpl~o+xA^!HVP5>$N&LHY)*Gg;_|1ZZTcOS}kW?zy z<)Rz*Op9Y~v~suPzf{6lh(}xr)BX=u&D={~h^=w%8}*nVJl+Ejee`AYc1C$DvB-}i zSU__;uo*mP`nBie_HBqMv$pQk&KHJaEZ)paAOGuF*vQu(^nfYI5D;#8_ws`xsJ}Qf zJ3Z)P?#nYS3TApmmkcI z8A>(P@kQLoRecN$BOMdhzzeOo1l*R+m~?x z00r+i+j#rUc*o$pqbPQ~(C?mzt9|G#<(KP2u z2Twc9?h{?@raL=NY)1PW5&Qwf)v&_% h4QwWc%j+(uu8M45XH|LtEUakFWPd$MR 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 U@#jDNA++581Hw~J^UmW30JhQK+W-In literal 0 HcmV?d00001 diff --git a/res/src/AvatarAreaProject.xcf b/res/src/AvatarAreaProject.xcf new file mode 100644 index 0000000000000000000000000000000000000000..98c204e700d21a921fdfcc6364b16ebcfbe3d812 GIT binary patch literal 43526 zcmeI5Yitx%6vt01EGS@EwG{*EBG|MNTJX_IFjm{x#t^E8SYwH3AG^zjKInr28remY z5@Q66S~UU*H5U1xMopUdLB*KV@Ij0kYy9Ff))*5XF{x3b>+iO^?R0o$haC*PXOiFE zduQ&QopbKv{AatJjmBCxhqg6ELXlWYSVYb{B9gm+jM;*alf%o!FuQW^jC}_3m%t48 z1PW4lQ!k(THKg;RoOXFrduwaBt(&r#gBMkGh8w!W&7rNa?v0_E+t=P{j?5pc8f$Hc zhL=Y>W6fqCwR5DXt9yG(IMmhN5^FBLpePb;YHw-p3>A$f%R8fu4WSh!E5^1HWLBmQ z71Olw1WnV&LnqIerrWwUH#EiCqM?=P_hRSv6YWgxTfU_&)*XtqHEj%cnfC3GNLRRf z;sQ9SipURWSRgU~3NB#mwKIF*HapdPZ^79<|Jo4uK(%URD=Dp2!HKg-PO+J}S{!6+f zl{eR&9${&l*p>S_FKiR$bB^54aLuJa+vZYOJ+;n^e?(?-T{AC-8(=M$wGKAHqwoT} zDKh6h_!z!{-$dr(qqz+Kxr<>XqjVMA%S5;X+F=j81|NxBYWNC%0j_;P9$X2fP$9C2 zu3L1E$dwJy0XyMIIEcxI;Vn1{U%-#>r^r(JXX#}kMZA9z@4pPYmaT#Hz_l-XNTihO zFMSGL1Z*gMA3lZe;CGSh{ua5OzA9%{mgDns>@U9!?iN{nAGE^5@C59KSKw{fO^2prs8D&>0{XGVqAvD z=MfPn2?TExySPRstv8;q%X-t>>VYv2BpC;gn?&(hM~TGc2=V)t6Ql_udSYzfk#qYlSeB{PGzk+$8Ww%Km%Rr`%1F19WjrxnQmaW`O}{&n8* z7$vA4P!HI52asNKOv>GW>r(_9mA~^&XSS#Z)C2BW;ibI9LLKka?)m&#*uFa%^}tjQ z6k7Nhn=`_yvUjTPvyoS2uO2WSP-Q>$J2I;3)C1}PFG}9sMs=-vKs}(!-n}mPUDi*m z)dT7QRrc<6=3G*Bd^VExZ`z+*pV_Mi{PBQ$R(L6^s#6cB2UOX6Sv$_8jjB5JfOeK`3 z0r#x%QdU)`9#9XcviGufoJkv1b?O22fGT_U8ltLBJ)jeDnky1Ih74f zo1&fVTiTktF!V!_f!|*Nq41Z0n6WuKmJpix5J8%rX z1nNfl5sZx&!WB>gH$yFKfHv3xyWxOHOC9t;9}L1UjEb}th-@amc?2kT;QJ2tbreDw zREume)IkJ#pcndJKxDgN5QbnFMqpIr!2lG9>@XBU8B{|ZM4(6H5koKZ!2k@x5Ddcz zBgil+vMT@uPzYsEE%Lab4kFM4z0d~(FetLeFa*Oe0;3{(15hCHw4o5npc?8R0zJ?x z@|>X$24E0|U>HV3_8CS+_6MK<3ZV?Dp-$wWAp$+n3wg1LY_!T&=31dFu#&T_n`}@h zYNH)W)Js3xsBxS&v)&{enESY_mTig8YNs8VGt+*yRmY_5Rz0J!*GpX1Hr~dKGq&59 z&$fPXpD)w(U+b$bm`-CL9oKD5RnK^fOB&DBZ(hcLjT**jvs-^;yF8s@liH$ME7LJx ztBy(At$Ie|vX{85ZM=;eXKc4IpKbl(K3}Hmzt&gHFrCIgIPJ&AOfm@PFr%^gHrqf4|1TQ^!HSV;p^ua9|$yk=62aS{wYZ#qV{7{ygRU L%k+4rk8k-8q|I89 literal 0 HcmV?d00001 diff --git a/res/src/mainui.png b/res/src/mainui.png new file mode 100644 index 0000000000000000000000000000000000000000..34354762aaedffc042b1ff35d1581db909947040 GIT binary patch literal 42909 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πV;!H3^yBdN~_f>B_TB? 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