From 15dfc2c84b82275a36d82a769230660b666005d8 Mon Sep 17 00:00:00 2001
From: Syping <schiedelrafael@keppe.org>
Date: Sun, 13 Sep 2020 02:10:15 +0200
Subject: [PATCH] added motd message system

---
 CMakeLists.txt        |  18 ++++++
 DatabaseThread.cpp    |   9 +--
 MessageThread.cpp     | 111 +++++++++++++++++++++++++++++++++++++
 MessageThread.h       |  48 ++++++++++++++++
 UserInterface.cpp     | 124 ++++++++++++++++++++++++++++++++++++++++++
 UserInterface.h       |  16 ++++++
 gta5view.pro          |  20 ++++++-
 main.cpp              |  25 ++++++++-
 res/gta5sync.ts       |  66 ++++++++++++----------
 res/gta5sync_de.qm    | Bin 48463 -> 48550 bytes
 res/gta5sync_de.ts    |  66 ++++++++++++----------
 res/gta5sync_en_US.ts |  66 ++++++++++++----------
 res/gta5sync_fr.ts    |  66 ++++++++++++----------
 res/gta5sync_ko.ts    |  66 ++++++++++++----------
 res/gta5sync_ru.ts    |  66 ++++++++++++----------
 res/gta5sync_uk.ts    |  66 ++++++++++++----------
 res/gta5sync_zh_TW.ts |  66 ++++++++++++----------
 17 files changed, 648 insertions(+), 251 deletions(-)
 create mode 100644 MessageThread.cpp
 create mode 100644 MessageThread.h

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f028be6..97d4837 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -177,6 +177,24 @@ if(FLATPAK_BUILD)
     )
 endif()
 
+option(WITH_MOTD "Developer message system directed to users" OFF)
+if(WITH_MOTD)
+    list(APPEND GTA5VIEW_HEADERS
+        MessageThread.h
+    )
+    list(APPEND GTA5VIEW_SOURCES
+        MessageThread.cpp
+    )
+    list(APPEND GTA5VIEW_DEFINES
+        -DGTA5SYNC_MOTD
+    )
+    if(MOTD_WEBURL)
+        list(APPEND GTA5VIEW_DEFINES
+            "-DGTA5SYNC_MOTD_WEBURL=\"${MOTD_WEBURL}\""
+        )
+    endif()
+endif()
+
 option(WITH_TELEMETRY "Hardware survey and basic telemetry system" OFF)
 if(WITH_TELEMETRY)
     list(APPEND GTA5VIEW_HEADERS
diff --git a/DatabaseThread.cpp b/DatabaseThread.cpp
index 498ad90..a944638 100644
--- a/DatabaseThread.cpp
+++ b/DatabaseThread.cpp
@@ -1,6 +1,6 @@
 /*****************************************************************************
 * gta5view Grand Theft Auto V Profile Viewer
-* Copyright (C) 2016-2017 Syping
+* Copyright (C) 2016-2020 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
@@ -48,11 +48,8 @@ void DatabaseThread::run()
 
     while (threadRunning)
     {
-        if (threadRunning)
-        {
-            QTimer::singleShot(300000, &threadLoop, SLOT(quit()));
-            threadLoop.exec();
-        }
+        QTimer::singleShot(300000, &threadLoop, SLOT(quit()));
+        threadLoop.exec();
     }
 }
 
diff --git a/MessageThread.cpp b/MessageThread.cpp
new file mode 100644
index 0000000..2781ac6
--- /dev/null
+++ b/MessageThread.cpp
@@ -0,0 +1,111 @@
+/*****************************************************************************
+* gta5view Grand Theft Auto V Profile Viewer
+* Copyright (C) 2020 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 <http://www.gnu.org/licenses/>.
+*****************************************************************************/
+
+#include "TranslationClass.h"
+#include "MessageThread.h"
+#include "AppEnv.h"
+#include "config.h"
+#include <QNetworkAccessManager>
+#include <QNetworkReply>
+#include <QJsonDocument>
+#include <QEventLoop>
+#include <QUrlQuery>
+#include <QTimer>
+#include <QDebug>
+#include <QUrl>
+
+MessageThread::MessageThread(uint cacheId, QObject *parent) : QThread(parent), cacheId(cacheId)
+{
+    threadRunning = true;
+}
+
+void MessageThread::run()
+{
+    QEventLoop threadLoop;
+
+    QObject::connect(this, SIGNAL(threadTerminated()), &threadLoop, SLOT(quit()));
+
+    while (threadRunning) {
+        {
+#ifdef GTA5SYNC_MOTD_WEBURL
+            QUrl motdWebUrl = QUrl(GTA5SYNC_MOTD_WEBURL);
+#else
+            QUrl motdWebUrl = QUrl("https://motd.syping.de/gta5view-dev/");
+#endif
+            QUrlQuery urlQuery(motdWebUrl);
+            urlQuery.addQueryItem("code", GTA5SYNC_BUILDCODE);
+            urlQuery.addQueryItem("cacheid", QString::number(cacheId));
+            urlQuery.addQueryItem("lang", Translator->getCurrentLanguage());
+            urlQuery.addQueryItem("version", GTA5SYNC_APPVER);
+            motdWebUrl.setQuery(urlQuery);
+
+            QNetworkAccessManager *netManager = new QNetworkAccessManager();
+            QNetworkRequest netRequest(motdWebUrl);
+            netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent());
+            QNetworkReply *netReply = netManager->get(netRequest);
+
+            QEventLoop downloadLoop;
+            QObject::connect(netManager, SIGNAL(finished(QNetworkReply*)), &downloadLoop, SLOT(quit()));
+            QObject::connect(this, SIGNAL(threadTerminated()), &threadLoop, SLOT(quit()));
+            QTimer::singleShot(60000, &downloadLoop, SLOT(quit()));
+            downloadLoop.exec();
+
+            if (netReply->isFinished()) {
+                QByteArray jsonContent = netReply->readAll();
+                QString headerData = QString::fromUtf8(netReply->rawHeader("gta5view"));
+                if (!headerData.isEmpty()) {
+                    QMap<QString,QString> headerMap;
+                    const QStringList headerVarList = headerData.split(';');
+                    for (QString headerVar : headerVarList) {
+                        QStringList varValueList = headerVar.split('=');
+                        if (varValueList.length() >= 2) {
+                            const QString variable = varValueList.at(0).trimmed();
+                            varValueList.removeFirst();
+                            const QString value = varValueList.join('=');
+                            headerMap.insert(variable, value);
+                        }
+                    }
+                    if (headerMap.value("update", "false") == "true") {
+                        QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonContent);
+                        emit messagesArrived(jsonDocument.object());
+                    }
+                    if (headerMap.contains("cache")) {
+                        bool uintOk;
+                        uint cacheVal = headerMap.value("cache").toUInt(&uintOk);
+                        if (uintOk) {
+                            cacheId = cacheVal;
+                            emit updateCacheId(cacheId);
+                        }
+                    }
+                }
+            }
+
+            delete netReply;
+            delete netManager;
+        }
+
+        QTimer::singleShot(300000, &threadLoop, SLOT(quit()));
+        threadLoop.exec();
+    }
+}
+
+void MessageThread::terminateThread()
+{
+    threadRunning = false;
+    emit threadTerminated();
+}
diff --git a/MessageThread.h b/MessageThread.h
new file mode 100644
index 0000000..fa2d25b
--- /dev/null
+++ b/MessageThread.h
@@ -0,0 +1,48 @@
+/*****************************************************************************
+* gta5view Grand Theft Auto V Profile Viewer
+* Copyright (C) 2020 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 <http://www.gnu.org/licenses/>.
+*****************************************************************************/
+
+#ifndef MESSAGETHREAD_H
+#define MESSAGETHREAD_H
+
+#include <QJsonObject>
+#include <QObject>
+#include <QThread>
+
+class MessageThread : public QThread
+{
+    Q_OBJECT
+public:
+    explicit MessageThread(uint cacheId, QObject *parent = 0);
+
+public slots:
+    void terminateThread();
+
+private:
+    bool threadRunning;
+    uint cacheId;
+
+protected:
+    void run();
+
+signals:
+    void messagesArrived(const QJsonObject &messageObject);
+    void updateCacheId(uint cacheId);
+    void threadTerminated();
+};
+
+#endif // MESSAGETHREAD_H
diff --git a/UserInterface.cpp b/UserInterface.cpp
index a9d7734..78476ea 100644
--- a/UserInterface.cpp
+++ b/UserInterface.cpp
@@ -40,14 +40,21 @@
 #include <QMessageBox>
 #include <QSettings>
 #include <QFileInfo>
+#include <QTimer>
 #include <QDebug>
 #include <QFile>
 #include <QDir>
 #include <QMap>
 
+#ifdef GTA5SYNC_MOTD
+UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, MessageThread *threadMessage, QWidget *parent) :
+    QMainWindow(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB), threadMessage(threadMessage),
+    ui(new Ui::UserInterface)
+#else
 UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent) :
     QMainWindow(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB),
     ui(new Ui::UserInterface)
+#endif
 {
     ui->setupUi(this);
     contentMode = 0;
@@ -328,7 +335,11 @@ void UserInterface::closeProfile_p()
 void UserInterface::closeEvent(QCloseEvent *ev)
 {
     Q_UNUSED(ev)
+#ifdef GTA5SYNC_MOTD
+    threadMessage->terminateThread();
+#else
     threadDB->terminateThread();
+#endif
 }
 
 UserInterface::~UserInterface()
@@ -603,6 +614,119 @@ void UserInterface::settingsApplied(int _contentMode, bool languageChanged)
     }
 }
 
+#ifdef GTA5SYNC_MOTD
+void UserInterface::messagesArrived(const QJsonObject &object)
+{
+    QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
+    settings.beginGroup("Messages");
+    QJsonObject::const_iterator it = object.constBegin();
+    QJsonObject::const_iterator end = object.constEnd();
+    QStringList messages;
+    while (it != end) {
+        const QString key = it.key();
+        const QJsonValue value = it.value();
+        bool uintOk;
+        uint messageId = key.toUInt(&uintOk);
+        if (uintOk && value.isString()) {
+            const QString valueStr = value.toString();
+            settings.setValue(QString::number(messageId), valueStr);
+            messages << valueStr;
+        }
+        it++;
+    }
+    settings.endGroup();
+    if (!messages.isEmpty())
+        showMessages(messages);
+}
+
+void UserInterface::showMessages(const QStringList messages)
+{
+    QDialog *messageDialog = new QDialog(this);
+    messageDialog->setWindowTitle(tr("%1 - Messages").arg(GTA5SYNC_APPSTR));
+    messageDialog->setWindowFlags(messageDialog->windowFlags()^Qt::WindowContextHelpButtonHint);
+    QVBoxLayout *messageLayout = new QVBoxLayout;
+    messageDialog->setLayout(messageLayout);
+    QStackedWidget *stackWidget = new QStackedWidget(messageDialog);
+    for (const QString message : messages) {
+        QLabel *messageLabel = new QLabel(messageDialog);
+        messageLabel->setText(message);
+        messageLabel->setWordWrap(true);
+        stackWidget->addWidget(messageLabel);
+    }
+    messageLayout->addWidget(stackWidget);
+    QHBoxLayout *buttonLayout = new QHBoxLayout;
+    QPushButton *backButton = new QPushButton(messageDialog);
+    QPushButton *nextButton = new QPushButton(messageDialog);
+    if (QIcon::hasThemeIcon("go-previous") && QIcon::hasThemeIcon("go-next") && QIcon::hasThemeIcon("list-add")) {
+        backButton->setIcon(QIcon::fromTheme("go-previous"));
+        nextButton->setIcon(QIcon::fromTheme("go-next"));
+    }
+    else {
+        backButton->setIcon(QIcon(":/img/back.svgz"));
+        nextButton->setIcon(QIcon(":/img/next.svgz"));
+    }
+    backButton->setEnabled(false);
+    if (stackWidget->count() <= 1) {
+        nextButton->setEnabled(false);
+    }
+    buttonLayout->addWidget(backButton);
+    buttonLayout->addWidget(nextButton);
+    buttonLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum));
+    QPushButton *closeButton = new QPushButton(messageDialog);
+    closeButton->setText(tr("&Close"));
+    if (QIcon::hasThemeIcon("dialog-close")) {
+        closeButton->setIcon(QIcon::fromTheme("dialog-close"));
+    }
+    else if (QIcon::hasThemeIcon("gtk-close")) {
+        closeButton->setIcon(QIcon::fromTheme("gtk-close"));
+    }
+    buttonLayout->addWidget(closeButton);
+    messageLayout->addLayout(buttonLayout);
+    QObject::connect(backButton, &QPushButton::clicked, [stackWidget,backButton,nextButton,closeButton]() {
+        int index = stackWidget->currentIndex();
+        if (index > 0) {
+            index--;
+            stackWidget->setCurrentIndex(index);
+            nextButton->setEnabled(true);
+            if (index > 0) {
+                backButton->setEnabled(true);
+            }
+            else {
+                backButton->setEnabled(false);
+                closeButton->setFocus();
+            }
+        }
+    });
+    QObject::connect(nextButton, &QPushButton::clicked, [stackWidget,backButton,nextButton,closeButton]() {
+        int index = stackWidget->currentIndex();
+        if (index < stackWidget->count()-1) {
+            index++;
+            stackWidget->setCurrentIndex(index);
+            backButton->setEnabled(true);
+            if (index < stackWidget->count()-1) {
+                nextButton->setEnabled(true);
+            }
+            else {
+                nextButton->setEnabled(false);
+                closeButton->setFocus();
+            }
+        }
+    });
+    QObject::connect(closeButton, &QPushButton::clicked, messageDialog, &QDialog::accept);
+    QObject::connect(messageDialog, &QDialog::finished, messageDialog, &QDialog::deleteLater);
+    QTimer::singleShot(0, closeButton, SLOT(setFocus()));
+    messageDialog->show();
+}
+
+void UserInterface::updateCacheId(uint cacheId)
+{
+    QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
+    settings.beginGroup("Messages");
+    settings.setValue("CacheId", cacheId);
+    settings.endGroup();
+}
+#endif
+
 void UserInterface::on_actionSelect_GTA_Folder_triggered()
 {
     QString GTAV_Folder_Temp = QFileDialog::getExistingDirectory(this, tr("Select GTA V Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly);
diff --git a/UserInterface.h b/UserInterface.h
index c6f9ed2..7e5259d 100644
--- a/UserInterface.h
+++ b/UserInterface.h
@@ -31,6 +31,10 @@
 #include <QString>
 #include <QMap>
 
+#ifdef GTA5SYNC_MOTD
+#include "MessageThread.h"
+#endif
+
 namespace Ui {
 class UserInterface;
 }
@@ -39,7 +43,11 @@ class UserInterface : public QMainWindow
 {
     Q_OBJECT
 public:
+#ifdef GTA5SYNC_MOTD
+    explicit UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, MessageThread *messageThread, QWidget *parent = 0);
+#else
     explicit UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent = 0);
+#endif
     void setupDirEnv();
     ~UserInterface();
 
@@ -67,6 +75,11 @@ private slots:
     void on_actionSet_Crew_triggered();
     void on_actionSet_Title_triggered();
     void settingsApplied(int contentMode, bool languageChanged);
+#ifdef GTA5SYNC_MOTD
+    void messagesArrived(const QJsonObject &object);
+    void showMessages(const QStringList messages);
+    void updateCacheId(uint cacheId);
+#endif
 
 protected:
     void closeEvent(QCloseEvent *ev);
@@ -75,6 +88,9 @@ private:
     ProfileDatabase *profileDB;
     CrewDatabase *crewDB;
     DatabaseThread *threadDB;
+#ifdef GTA5SYNC_MOTD
+    MessageThread *threadMessage;
+#endif
     Ui::UserInterface *ui;
     ProfileInterface *profileUI;
     QList<QPushButton*> profileBtns;
diff --git a/gta5view.pro b/gta5view.pro
index db2c77e..7761343 100644
--- a/gta5view.pro
+++ b/gta5view.pro
@@ -40,6 +40,7 @@ SOURCES += main.cpp \
     ImportDialog.cpp \
     JsonEditorDialog.cpp \
     MapLocationDialog.cpp \
+    MessageThread.cpp \
     OptionsDialog.cpp \
     PictureDialog.cpp \
     PictureExport.cpp \
@@ -81,6 +82,7 @@ HEADERS += \
     ImportDialog.h \
     JsonEditorDialog.h \
     MapLocationDialog.h \
+    MessageThread.h \
     OptionsDialog.h \
     PictureDialog.h \
     PictureExport.h \
@@ -236,10 +238,10 @@ INSTALLS += target pixmaps appfiles
 
 # QCONF BASED BUILD STUFF
 
-contains(DEFINES, GTA5SYNC_QCONF){
+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){
+    !contains(DEFINES, GTA5SYNC_QCONF_IN) {
         RESOURCES -= res/tr_g5p.qrc
         langfiles.path = $$GTA5SYNC_PREFIX/share/gta5view/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
@@ -249,13 +251,25 @@ contains(DEFINES, GTA5SYNC_QCONF){
 
 # TELEMETRY BASED STUFF
 
-!contains(DEFINES, GTA5SYNC_TELEMETRY){
+!contains(DEFINES, GTA5SYNC_TELEMETRY) {
     SOURCES -= TelemetryClass.cpp \
         tmext/TelemetryClassAuthenticator.cpp
     HEADERS -= TelemetryClass.h \
         tmext/TelemetryClassAuthenticator.h
 }
 
+!contains(DEFINES, GTA5SYNC_MOTD) {
+    SOURCES -= MessageThread.cpp
+    HEADERS -= MessageThread.h
+} else {
+    lessThan(QT_MAJOR_VERSION, 5) {
+        SOURCES -= MessageThread.cpp
+        HEADERS -= MessageThread.h
+        DEFINES -= GTA5SYNC_MOTD
+        message("Messages require Qt5 or newer!")
+    }
+}
+
 # CMAKE BASED STUFF
 
 unix: greaterThan(QT_MAJOR_VERSION, 4) {
diff --git a/main.cpp b/main.cpp
index f08ab01..870a1bb 100644
--- a/main.cpp
+++ b/main.cpp
@@ -59,6 +59,10 @@
 #include <iostream>
 #endif
 
+#ifdef GTA5SYNC_MOTD
+#include "MessageThread.h"
+#endif
+
 #ifdef GTA5SYNC_TELEMETRY
 #include "TelemetryClass.h"
 #endif
@@ -258,9 +262,7 @@ int main(int argc, char *argv[])
         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); }
@@ -305,7 +307,26 @@ int main(int argc, char *argv[])
     QObject::connect(&threadDB, SIGNAL(finished()), &a, SLOT(quit()));
     threadDB.start();
 
+#ifdef GTA5SYNC_MOTD
+    uint cacheId;
+    {
+        QSettings messageSettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
+        messageSettings.beginGroup("Messages");
+        cacheId = messageSettings.value("CacheId", 0).toUInt();
+        messageSettings.endGroup();
+    }
+    MessageThread threadMessage(cacheId);
+    QObject::connect(&threadMessage, SIGNAL(finished()), &threadDB, SLOT(terminateThread()));
+    threadMessage.start();
+#endif
+
+#ifdef GTA5SYNC_MOTD
+    UserInterface uiWindow(&profileDB, &crewDB, &threadDB, &threadMessage);
+    QObject::connect(&threadMessage, SIGNAL(messagesArrived(QJsonObject)), &uiWindow, SLOT(messagesArrived(QJsonObject)));
+    QObject::connect(&threadMessage, SIGNAL(updateCacheId(uint)), &uiWindow, SLOT(updateCacheId(uint)));
+#else
     UserInterface uiWindow(&profileDB, &crewDB, &threadDB);
+#endif
     uiWindow.setWindowIcon(IconLoader::loadingAppIcon());
     uiWindow.setupDirEnv();
 #ifdef Q_OS_ANDROID
diff --git a/res/gta5sync.ts b/res/gta5sync.ts
index 9510eff..e408904 100644
--- a/res/gta5sync.ts
+++ b/res/gta5sync.ts
@@ -1315,7 +1315,7 @@ Press 1 for Default View</source>
         <location filename="../ImportDialog.cpp" line="438"/>
         <location filename="../ImportDialog.cpp" line="759"/>
         <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../UserInterface.cpp" line="463"/>
+        <location filename="../UserInterface.cpp" line="474"/>
         <source>All files (**)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1360,26 +1360,26 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="525"/>
-        <location filename="../UserInterface.cpp" line="460"/>
+        <location filename="../UserInterface.cpp" line="471"/>
         <source>GTA V Export (*.g5e)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="526"/>
-        <location filename="../UserInterface.cpp" line="461"/>
+        <location filename="../UserInterface.cpp" line="472"/>
         <source>Savegames files (SGTA*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="527"/>
-        <location filename="../UserInterface.cpp" line="462"/>
+        <location filename="../UserInterface.cpp" line="473"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="553"/>
         <location filename="../ProfileInterface.cpp" line="944"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>No valid file is selected</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1398,13 +1398,13 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="650"/>
-        <location filename="../UserInterface.cpp" line="503"/>
+        <location filename="../UserInterface.cpp" line="514"/>
         <source>Failed to read Snapmatic picture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="685"/>
-        <location filename="../UserInterface.cpp" line="519"/>
+        <location filename="../UserInterface.cpp" line="530"/>
         <source>Failed to read Savegame file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1614,7 +1614,7 @@ Press 1 for Default View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="459"/>
+        <location filename="../UserInterface.cpp" line="470"/>
         <source>All profile files (*.g5e SGTA* PGTA*)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1622,17 +1622,17 @@ Press 1 for Default View</source>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Font</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Selected Font: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="140"/>
+        <location filename="../main.cpp" line="144"/>
         <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2209,22 +2209,22 @@ Press 1 for Default View</source>
 <context>
     <name>TelemetryDialog</name>
     <message>
-        <location filename="../main.cpp" line="169"/>
+        <location filename="../main.cpp" line="173"/>
         <source>You want help %1 to improve in the future by including personal usage data in your submission?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="170"/>
+        <location filename="../main.cpp" line="174"/>
         <source>%1 User Statistics</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="174"/>
+        <location filename="../main.cpp" line="178"/>
         <source>Yes, I want include personal usage data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="183"/>
+        <location filename="../main.cpp" line="187"/>
         <source>&amp;OK</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2233,7 +2233,7 @@ Press 1 for Default View</source>
     <name>UserInterface</name>
     <message>
         <location filename="../UserInterface.ui" line="20"/>
-        <location filename="../UserInterface.cpp" line="61"/>
+        <location filename="../UserInterface.cpp" line="68"/>
         <source>%2 - %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2265,6 +2265,7 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="153"/>
+        <location filename="../UserInterface.cpp" line="676"/>
         <source>&amp;Close</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2300,8 +2301,8 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="236"/>
-        <location filename="../UserInterface.cpp" line="59"/>
-        <location filename="../UserInterface.cpp" line="641"/>
+        <location filename="../UserInterface.cpp" line="66"/>
+        <location filename="../UserInterface.cpp" line="765"/>
         <source>&amp;About %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2357,15 +2358,15 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="319"/>
-        <location filename="../UserInterface.cpp" line="247"/>
+        <location filename="../UserInterface.cpp" line="254"/>
         <source>Select &amp;GTA V Folder...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="322"/>
         <location filename="../OptionsDialog.cpp" line="744"/>
-        <location filename="../UserInterface.cpp" line="188"/>
-        <location filename="../UserInterface.cpp" line="608"/>
+        <location filename="../UserInterface.cpp" line="195"/>
+        <location filename="../UserInterface.cpp" line="732"/>
         <source>Select GTA V Folder...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2414,29 +2415,34 @@ Press 1 for Default View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="63"/>
-        <location filename="../UserInterface.cpp" line="313"/>
-        <location filename="../UserInterface.cpp" line="655"/>
+        <location filename="../UserInterface.cpp" line="70"/>
+        <location filename="../UserInterface.cpp" line="320"/>
+        <location filename="../UserInterface.cpp" line="779"/>
         <source>Select Profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="456"/>
+        <location filename="../UserInterface.cpp" line="467"/>
         <source>Open File...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="503"/>
-        <location filename="../UserInterface.cpp" line="519"/>
-        <location filename="../UserInterface.cpp" line="546"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="514"/>
+        <location filename="../UserInterface.cpp" line="530"/>
+        <location filename="../UserInterface.cpp" line="557"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>Open File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="546"/>
+        <location filename="../UserInterface.cpp" line="557"/>
         <source>Can&apos;t open %1 because of not valid file format</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../UserInterface.cpp" line="645"/>
+        <source>%1 - Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
diff --git a/res/gta5sync_de.qm b/res/gta5sync_de.qm
index ce9dec12294d60e3df791a133226fe1098269b0e..246cd44b965e0156862940a0b9e1de81ad98b266 100644
GIT binary patch
delta 357
zcmWNDO(=tL9LImZ|6U*eo|Mpbpk1EfshO!+NiK@hV=Zw(a#$o*Vs>I`EgY2fE0>jB
zwt1O(TgVzxmK@fjL{4rFYBOh2o^O3VpRfAE(!Xr09$RA#2`t3U!`3s9RXsqe3i6W#
zklp~f+@ZBV3VJX^QG7r@DeM-5B<faJs*N^v_PPTXd)%%C7!;T~?*_<xQ&AUS8JXPr
zHGHFMz10+7e+EcS(~CZYGo%<oSfZk#pQY_28kbmBrl@g3*fAyV0sy;Ssu(>uM3Tvg
zmo#iru}YG;1;0o!JMo>CHNR5U?8OBAY2QZ<A&hy-3Kwjzhx|1oohKr{iZlcCjqrSA
z6u|M!Z{~^s$2zSa07p4~-}?zL7Ub&U3P83@l^Q3;sfl}WmF9RC+i#~7x3j~6T#3&j
tj_10?*`#0t30z<U2l?EVMl)zLYKW4{=CCRLg@wr}Kg9}`T>5mM{{!D4c0K?A

delta 308
zcmV-40n7fT`vTAU0+18|AdwZH0d0}Be;H!{D$fJ}0HvS+D$peW0H!(sD(o--0H$q|
zO#wFnD3gT&#{m|TO#;6GCX)>VegdT0lZ^u=5~<<>$(9cQ08R-4&v7*X0IQ*s#RF~v
zs@sz_1cw2Mlf48Plimb&0UMK51$O~{lg$N20;SiJ6$W+!tlN`~244wJ2c*Gn005@|
zll2BS0R)pR2QL9=lU)bT0icsD2qyublT`>W0gsb~2rmJLleGv>0Z@|#2`>QxlQju{
z0c(@B3AO^K?UQW^Rx+=?3%P?H002W)3%Y|_001r13%+f|006GE3%+gT006FJ3&cL@
z003Nd3(s_Z006C>ll2NO0Zfx63r_(tlXVL=0;u1UtqUdstN63k3v2-a4zofHY^1aO
Gv8f9~B5A__

diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts
index 8b00064..0d5d6e2 100644
--- a/res/gta5sync_de.ts
+++ b/res/gta5sync_de.ts
@@ -1333,13 +1333,13 @@ Drücke 1 für Standardmodus</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="526"/>
-        <location filename="../UserInterface.cpp" line="461"/>
+        <location filename="../UserInterface.cpp" line="472"/>
         <source>Savegames files (SGTA*)</source>
         <translation>Spielstanddateien (SGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="527"/>
-        <location filename="../UserInterface.cpp" line="462"/>
+        <location filename="../UserInterface.cpp" line="473"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation>Snapmatic Bilder (PGTA*)</translation>
     </message>
@@ -1359,7 +1359,7 @@ Drücke 1 für Standardmodus</translation>
         <location filename="../ImportDialog.cpp" line="438"/>
         <location filename="../ImportDialog.cpp" line="759"/>
         <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../UserInterface.cpp" line="463"/>
+        <location filename="../UserInterface.cpp" line="474"/>
         <source>All files (**)</source>
         <translation>Alle Dateien (**)</translation>
     </message>
@@ -1380,13 +1380,13 @@ Drücke 1 für Standardmodus</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="650"/>
-        <location filename="../UserInterface.cpp" line="503"/>
+        <location filename="../UserInterface.cpp" line="514"/>
         <source>Failed to read Snapmatic picture</source>
         <translation>Fehler beim Lesen vom Snapmatic Bild</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="685"/>
-        <location filename="../UserInterface.cpp" line="519"/>
+        <location filename="../UserInterface.cpp" line="530"/>
         <source>Failed to read Savegame file</source>
         <translation>Fehler beim Lesen von Spielstanddatei</translation>
     </message>
@@ -1427,7 +1427,7 @@ Drücke 1 für Standardmodus</translation>
     <message>
         <location filename="../ProfileInterface.cpp" line="553"/>
         <location filename="../ProfileInterface.cpp" line="944"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>No valid file is selected</source>
         <translation>Keine gültige Datei wurde ausgewählt</translation>
     </message>
@@ -1631,13 +1631,13 @@ Drücke 1 für Standardmodus</translation>
         <translation>Exportiere Datei %1 von %2 Dateien</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="459"/>
+        <location filename="../UserInterface.cpp" line="470"/>
         <source>All profile files (*.g5e SGTA* PGTA*)</source>
         <translation>Alle Profildateien (*.g5e SGTA* PGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="525"/>
-        <location filename="../UserInterface.cpp" line="460"/>
+        <location filename="../UserInterface.cpp" line="471"/>
         <source>GTA V Export (*.g5e)</source>
         <translation>GTA V Export (*.g5e)</translation>
     </message>
@@ -1645,17 +1645,17 @@ Drücke 1 für Standardmodus</translation>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Font</source>
         <translation>Schrift</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Selected Font: %1</source>
         <translation>Ausgewähle Schrift: %1</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="140"/>
+        <location filename="../main.cpp" line="144"/>
         <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
         <translation>&lt;h4&gt;Willkommen zu %1!&lt;/h4&gt;Möchtest du %1 einstellen bevor du es nutzt?</translation>
     </message>
@@ -2234,22 +2234,22 @@ Drücke 1 für Standardmodus</translation>
 <context>
     <name>TelemetryDialog</name>
     <message>
-        <location filename="../main.cpp" line="170"/>
+        <location filename="../main.cpp" line="174"/>
         <source>%1 User Statistics</source>
         <translation>%1 Benutzerstatistik</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="169"/>
+        <location filename="../main.cpp" line="173"/>
         <source>You want help %1 to improve in the future by including personal usage data in your submission?</source>
         <translation>Sollen bei Einreichungen Persönliche Nutzungsdaten einbezogen werden um %1 in der Zukunft zu unterstützen?</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="174"/>
+        <location filename="../main.cpp" line="178"/>
         <source>Yes, I want include personal usage data.</source>
         <translation>Ja, ich möchte Persönliche Nutzungsdaten einbeziehen.</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="183"/>
+        <location filename="../main.cpp" line="187"/>
         <source>&amp;OK</source>
         <translation>&amp;OK</translation>
     </message>
@@ -2349,7 +2349,7 @@ Drücke 1 für Standardmodus</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="319"/>
-        <location filename="../UserInterface.cpp" line="247"/>
+        <location filename="../UserInterface.cpp" line="254"/>
         <source>Select &amp;GTA V Folder...</source>
         <translation>Wähle &amp;GTA V Ordner...</translation>
     </message>
@@ -2365,6 +2365,7 @@ Drücke 1 für Standardmodus</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="153"/>
+        <location filename="../UserInterface.cpp" line="676"/>
         <source>&amp;Close</source>
         <translation>S&amp;chließen</translation>
     </message>
@@ -2399,51 +2400,56 @@ Drücke 1 für Standardmodus</translation>
         <translation>Dateien &amp;importieren...</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="63"/>
-        <location filename="../UserInterface.cpp" line="313"/>
-        <location filename="../UserInterface.cpp" line="655"/>
+        <location filename="../UserInterface.cpp" line="70"/>
+        <location filename="../UserInterface.cpp" line="320"/>
+        <location filename="../UserInterface.cpp" line="779"/>
         <source>Select Profile</source>
         <translation>Profil auswählen</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="322"/>
         <location filename="../OptionsDialog.cpp" line="744"/>
-        <location filename="../UserInterface.cpp" line="188"/>
-        <location filename="../UserInterface.cpp" line="608"/>
+        <location filename="../UserInterface.cpp" line="195"/>
+        <location filename="../UserInterface.cpp" line="732"/>
         <source>Select GTA V Folder...</source>
         <translation>Wähle GTA V Ordner...</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="456"/>
+        <location filename="../UserInterface.cpp" line="467"/>
         <source>Open File...</source>
         <translation>Datei öffnen...</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="20"/>
-        <location filename="../UserInterface.cpp" line="61"/>
+        <location filename="../UserInterface.cpp" line="68"/>
         <source>%2 - %1</source>
         <translation>%2 - %1</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="236"/>
-        <location filename="../UserInterface.cpp" line="59"/>
-        <location filename="../UserInterface.cpp" line="641"/>
+        <location filename="../UserInterface.cpp" line="66"/>
+        <location filename="../UserInterface.cpp" line="765"/>
         <source>&amp;About %1</source>
         <translation>&amp;Über %1</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="503"/>
-        <location filename="../UserInterface.cpp" line="519"/>
-        <location filename="../UserInterface.cpp" line="546"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="514"/>
+        <location filename="../UserInterface.cpp" line="530"/>
+        <location filename="../UserInterface.cpp" line="557"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>Open File</source>
         <translation>Datei öffnen</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="546"/>
+        <location filename="../UserInterface.cpp" line="557"/>
         <source>Can&apos;t open %1 because of not valid file format</source>
         <translation>Kann nicht %1 öffnen weil Dateiformat nicht gültig ist</translation>
     </message>
+    <message>
+        <location filename="../UserInterface.cpp" line="645"/>
+        <source>%1 - Messages</source>
+        <translation>%1 - Nachrichten</translation>
+    </message>
     <message>
         <location filename="../UserInterface.ui" line="134"/>
         <source>&amp;Reload</source>
diff --git a/res/gta5sync_en_US.ts b/res/gta5sync_en_US.ts
index 386924d..518ff52 100644
--- a/res/gta5sync_en_US.ts
+++ b/res/gta5sync_en_US.ts
@@ -1331,19 +1331,19 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="525"/>
-        <location filename="../UserInterface.cpp" line="460"/>
+        <location filename="../UserInterface.cpp" line="471"/>
         <source>GTA V Export (*.g5e)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="526"/>
-        <location filename="../UserInterface.cpp" line="461"/>
+        <location filename="../UserInterface.cpp" line="472"/>
         <source>Savegames files (SGTA*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="527"/>
-        <location filename="../UserInterface.cpp" line="462"/>
+        <location filename="../UserInterface.cpp" line="473"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1358,14 +1358,14 @@ Press 1 for Default View</source>
         <location filename="../ImportDialog.cpp" line="438"/>
         <location filename="../ImportDialog.cpp" line="759"/>
         <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../UserInterface.cpp" line="463"/>
+        <location filename="../UserInterface.cpp" line="474"/>
         <source>All files (**)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="553"/>
         <location filename="../ProfileInterface.cpp" line="944"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>No valid file is selected</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1384,13 +1384,13 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="650"/>
-        <location filename="../UserInterface.cpp" line="503"/>
+        <location filename="../UserInterface.cpp" line="514"/>
         <source>Failed to read Snapmatic picture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="685"/>
-        <location filename="../UserInterface.cpp" line="519"/>
+        <location filename="../UserInterface.cpp" line="530"/>
         <source>Failed to read Savegame file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1614,7 +1614,7 @@ Press 1 for Default View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="459"/>
+        <location filename="../UserInterface.cpp" line="470"/>
         <source>All profile files (*.g5e SGTA* PGTA*)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1622,17 +1622,17 @@ Press 1 for Default View</source>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Font</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Selected Font: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="140"/>
+        <location filename="../main.cpp" line="144"/>
         <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2209,22 +2209,22 @@ Press 1 for Default View</source>
 <context>
     <name>TelemetryDialog</name>
     <message>
-        <location filename="../main.cpp" line="169"/>
+        <location filename="../main.cpp" line="173"/>
         <source>You want help %1 to improve in the future by including personal usage data in your submission?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="170"/>
+        <location filename="../main.cpp" line="174"/>
         <source>%1 User Statistics</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="174"/>
+        <location filename="../main.cpp" line="178"/>
         <source>Yes, I want include personal usage data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="183"/>
+        <location filename="../main.cpp" line="187"/>
         <source>&amp;OK</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2233,7 +2233,7 @@ Press 1 for Default View</source>
     <name>UserInterface</name>
     <message>
         <location filename="../UserInterface.ui" line="20"/>
-        <location filename="../UserInterface.cpp" line="61"/>
+        <location filename="../UserInterface.cpp" line="68"/>
         <source>%2 - %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2265,6 +2265,7 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="153"/>
+        <location filename="../UserInterface.cpp" line="676"/>
         <source>&amp;Close</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2295,8 +2296,8 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="236"/>
-        <location filename="../UserInterface.cpp" line="59"/>
-        <location filename="../UserInterface.cpp" line="641"/>
+        <location filename="../UserInterface.cpp" line="66"/>
+        <location filename="../UserInterface.cpp" line="765"/>
         <source>&amp;About %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2352,15 +2353,15 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="319"/>
-        <location filename="../UserInterface.cpp" line="247"/>
+        <location filename="../UserInterface.cpp" line="254"/>
         <source>Select &amp;GTA V Folder...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="322"/>
         <location filename="../OptionsDialog.cpp" line="744"/>
-        <location filename="../UserInterface.cpp" line="188"/>
-        <location filename="../UserInterface.cpp" line="608"/>
+        <location filename="../UserInterface.cpp" line="195"/>
+        <location filename="../UserInterface.cpp" line="732"/>
         <source>Select GTA V Folder...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2400,30 +2401,35 @@ Press 1 for Default View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="63"/>
-        <location filename="../UserInterface.cpp" line="313"/>
-        <location filename="../UserInterface.cpp" line="655"/>
+        <location filename="../UserInterface.cpp" line="70"/>
+        <location filename="../UserInterface.cpp" line="320"/>
+        <location filename="../UserInterface.cpp" line="779"/>
         <source>Select Profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="456"/>
+        <location filename="../UserInterface.cpp" line="467"/>
         <source>Open File...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="503"/>
-        <location filename="../UserInterface.cpp" line="519"/>
-        <location filename="../UserInterface.cpp" line="546"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="514"/>
+        <location filename="../UserInterface.cpp" line="530"/>
+        <location filename="../UserInterface.cpp" line="557"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>Open File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="546"/>
+        <location filename="../UserInterface.cpp" line="557"/>
         <source>Can&apos;t open %1 because of not valid file format</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../UserInterface.cpp" line="645"/>
+        <source>%1 - Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="1545"/>
         <location filename="../ProfileInterface.cpp" line="1559"/>
diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts
index 891d5f2..a746d61 100644
--- a/res/gta5sync_fr.ts
+++ b/res/gta5sync_fr.ts
@@ -1344,13 +1344,13 @@ Appuyer sur 1 pour le mode par défaut</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="526"/>
-        <location filename="../UserInterface.cpp" line="461"/>
+        <location filename="../UserInterface.cpp" line="472"/>
         <source>Savegames files (SGTA*)</source>
         <translation>Fichiers de sauvegarde GTA (SGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="527"/>
-        <location filename="../UserInterface.cpp" line="462"/>
+        <location filename="../UserInterface.cpp" line="473"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation>Photos Snapmatic (PGTA*)</translation>
     </message>
@@ -1365,7 +1365,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <location filename="../ImportDialog.cpp" line="438"/>
         <location filename="../ImportDialog.cpp" line="759"/>
         <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../UserInterface.cpp" line="463"/>
+        <location filename="../UserInterface.cpp" line="474"/>
         <source>All files (**)</source>
         <translation>Tous les fichiers (**)</translation>
     </message>
@@ -1387,7 +1387,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
     <message>
         <location filename="../ProfileInterface.cpp" line="553"/>
         <location filename="../ProfileInterface.cpp" line="944"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>No valid file is selected</source>
         <translation>Fichier invalide</translation>
     </message>
@@ -1398,13 +1398,13 @@ Appuyer sur 1 pour le mode par défaut</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="650"/>
-        <location filename="../UserInterface.cpp" line="503"/>
+        <location filename="../UserInterface.cpp" line="514"/>
         <source>Failed to read Snapmatic picture</source>
         <translation>Impossible d&apos;ouvrir la photo Snapmatic</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="685"/>
-        <location filename="../UserInterface.cpp" line="519"/>
+        <location filename="../UserInterface.cpp" line="530"/>
         <source>Failed to read Savegame file</source>
         <translation>Impossible de lire le fichier de sauvegarde</translation>
     </message>
@@ -1632,13 +1632,13 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation>Supprimer la sélection ?</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="459"/>
+        <location filename="../UserInterface.cpp" line="470"/>
         <source>All profile files (*.g5e SGTA* PGTA*)</source>
         <translation>Tous les fichiers de profil (*.g5e SGTA* PGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="525"/>
-        <location filename="../UserInterface.cpp" line="460"/>
+        <location filename="../UserInterface.cpp" line="471"/>
         <source>GTA V Export (*.g5e)</source>
         <translation>GTA V Export (*.g5e)</translation>
     </message>
@@ -1646,17 +1646,17 @@ Appuyer sur 1 pour le mode par défaut</translation>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Font</source>
         <translation>Police</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Selected Font: %1</source>
         <translation>Police sélectionnée : %1</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="140"/>
+        <location filename="../main.cpp" line="144"/>
         <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
         <translation>&lt;h4&gt;Bienvenue sur %1!&lt;/h4&gt;Voulez-vous configurer %1 avant de l&apos;utiliser t?</translation>
     </message>
@@ -2237,22 +2237,22 @@ Appuyer sur 1 pour le mode par défaut</translation>
 <context>
     <name>TelemetryDialog</name>
     <message>
-        <location filename="../main.cpp" line="169"/>
+        <location filename="../main.cpp" line="173"/>
         <source>You want help %1 to improve in the future by including personal usage data in your submission?</source>
         <translation>Voulez-vous aider au développement de %1 en transmettant vos données d&apos;utilisation ?</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="170"/>
+        <location filename="../main.cpp" line="174"/>
         <source>%1 User Statistics</source>
         <translation>Statistiques utilisateurs %1</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="174"/>
+        <location filename="../main.cpp" line="178"/>
         <source>Yes, I want include personal usage data.</source>
         <translation>Oui, je veux partager mes données d&apos;utilisation.</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="183"/>
+        <location filename="../main.cpp" line="187"/>
         <source>&amp;OK</source>
         <translation>&amp;OK</translation>
     </message>
@@ -2287,6 +2287,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="153"/>
+        <location filename="../UserInterface.cpp" line="676"/>
         <source>&amp;Close</source>
         <translation>Fer&amp;mer</translation>
     </message>
@@ -2362,15 +2363,15 @@ Appuyer sur 1 pour le mode par défaut</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="319"/>
-        <location filename="../UserInterface.cpp" line="247"/>
+        <location filename="../UserInterface.cpp" line="254"/>
         <source>Select &amp;GTA V Folder...</source>
         <translation>Modifier l&apos;emplacement de &amp;GTA V...</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="322"/>
         <location filename="../OptionsDialog.cpp" line="744"/>
-        <location filename="../UserInterface.cpp" line="188"/>
-        <location filename="../UserInterface.cpp" line="608"/>
+        <location filename="../UserInterface.cpp" line="195"/>
+        <location filename="../UserInterface.cpp" line="732"/>
         <source>Select GTA V Folder...</source>
         <translation>Modifier l&apos;emplacement de GTA V...</translation>
     </message>
@@ -2416,42 +2417,47 @@ Appuyer sur 1 pour le mode par défaut</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="20"/>
-        <location filename="../UserInterface.cpp" line="61"/>
+        <location filename="../UserInterface.cpp" line="68"/>
         <source>%2 - %1</source>
         <translation>%2 - %1</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="236"/>
-        <location filename="../UserInterface.cpp" line="59"/>
-        <location filename="../UserInterface.cpp" line="641"/>
+        <location filename="../UserInterface.cpp" line="66"/>
+        <location filename="../UserInterface.cpp" line="765"/>
         <source>&amp;About %1</source>
         <translation>&amp;À propos de %1</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="63"/>
-        <location filename="../UserInterface.cpp" line="313"/>
-        <location filename="../UserInterface.cpp" line="655"/>
+        <location filename="../UserInterface.cpp" line="70"/>
+        <location filename="../UserInterface.cpp" line="320"/>
+        <location filename="../UserInterface.cpp" line="779"/>
         <source>Select Profile</source>
         <translation>Sélectionner un profil</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="456"/>
+        <location filename="../UserInterface.cpp" line="467"/>
         <source>Open File...</source>
         <translation>Ouvrir...</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="503"/>
-        <location filename="../UserInterface.cpp" line="519"/>
-        <location filename="../UserInterface.cpp" line="546"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="514"/>
+        <location filename="../UserInterface.cpp" line="530"/>
+        <location filename="../UserInterface.cpp" line="557"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>Open File</source>
         <translation>Ouvrir</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="546"/>
+        <location filename="../UserInterface.cpp" line="557"/>
         <source>Can&apos;t open %1 because of not valid file format</source>
         <translation>Impossible d&apos;ouvrir %1, format invalide</translation>
     </message>
+    <message>
+        <location filename="../UserInterface.cpp" line="645"/>
+        <source>%1 - Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="1545"/>
         <location filename="../ProfileInterface.cpp" line="1559"/>
diff --git a/res/gta5sync_ko.ts b/res/gta5sync_ko.ts
index 7e71a0b..7d2c644 100644
--- a/res/gta5sync_ko.ts
+++ b/res/gta5sync_ko.ts
@@ -1347,7 +1347,7 @@ Press 1 for Default View</source>
         <location filename="../ImportDialog.cpp" line="438"/>
         <location filename="../ImportDialog.cpp" line="759"/>
         <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../UserInterface.cpp" line="463"/>
+        <location filename="../UserInterface.cpp" line="474"/>
         <source>All files (**)</source>
         <translation>모든 파일 (**)</translation>
     </message>
@@ -1392,26 +1392,26 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="525"/>
-        <location filename="../UserInterface.cpp" line="460"/>
+        <location filename="../UserInterface.cpp" line="471"/>
         <source>GTA V Export (*.g5e)</source>
         <translation>GTA V로 내보내기 (*.g5e)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="526"/>
-        <location filename="../UserInterface.cpp" line="461"/>
+        <location filename="../UserInterface.cpp" line="472"/>
         <source>Savegames files (SGTA*)</source>
         <translation>세이브 파일 (SGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="527"/>
-        <location filename="../UserInterface.cpp" line="462"/>
+        <location filename="../UserInterface.cpp" line="473"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation>스냅매틱 사진 (PGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="553"/>
         <location filename="../ProfileInterface.cpp" line="944"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>No valid file is selected</source>
         <translation>올바른 파일이 선택되지 않았습니다</translation>
     </message>
@@ -1432,13 +1432,13 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="650"/>
-        <location filename="../UserInterface.cpp" line="503"/>
+        <location filename="../UserInterface.cpp" line="514"/>
         <source>Failed to read Snapmatic picture</source>
         <translation>스냅매틱 사진을 읽지 못했습니다</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="685"/>
-        <location filename="../UserInterface.cpp" line="519"/>
+        <location filename="../UserInterface.cpp" line="530"/>
         <source>Failed to read Savegame file</source>
         <translation>세이브 파일을 읽지 못했습니다</translation>
     </message>
@@ -1657,7 +1657,7 @@ Press 1 for Default View</source>
         <translation>제목 변경</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="459"/>
+        <location filename="../UserInterface.cpp" line="470"/>
         <source>All profile files (*.g5e SGTA* PGTA*)</source>
         <translation>모든 프로필 파일 (*.g5e SGTA* PGTA*)</translation>
     </message>
@@ -1665,17 +1665,17 @@ Press 1 for Default View</source>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Font</source>
         <translation>폰트</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Selected Font: %1</source>
         <translation>선택된 폰트: %1</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="140"/>
+        <location filename="../main.cpp" line="144"/>
         <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
         <translation>&lt;h4&gt;%1에 오신 것을 환영합니다!&lt;/h4&gt;%1을 사용하기 전에 구성하시겠습니까?</translation>
     </message>
@@ -2259,22 +2259,22 @@ Press 1 for Default View</source>
 <context>
     <name>TelemetryDialog</name>
     <message>
-        <location filename="../main.cpp" line="169"/>
+        <location filename="../main.cpp" line="173"/>
         <source>You want help %1 to improve in the future by including personal usage data in your submission?</source>
         <translation>개인 사용 데이터를 제출에 포함시켜 %1이(가) 개선되기를 원합니까?</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="170"/>
+        <location filename="../main.cpp" line="174"/>
         <source>%1 User Statistics</source>
         <translation>%1 사용자 통계</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="174"/>
+        <location filename="../main.cpp" line="178"/>
         <source>Yes, I want include personal usage data.</source>
         <translation>예, 개인 사용 데이터를 포함시키고 싶습니다.</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="183"/>
+        <location filename="../main.cpp" line="187"/>
         <source>&amp;OK</source>
         <translation>확인(&amp;O)</translation>
     </message>
@@ -2283,7 +2283,7 @@ Press 1 for Default View</source>
     <name>UserInterface</name>
     <message>
         <location filename="../UserInterface.ui" line="20"/>
-        <location filename="../UserInterface.cpp" line="61"/>
+        <location filename="../UserInterface.cpp" line="68"/>
         <source>%2 - %1</source>
         <translation>%2 - %1</translation>
     </message>
@@ -2316,6 +2316,7 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="153"/>
+        <location filename="../UserInterface.cpp" line="676"/>
         <source>&amp;Close</source>
         <translation>닫기(&amp;C)</translation>
     </message>
@@ -2351,8 +2352,8 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="236"/>
-        <location filename="../UserInterface.cpp" line="59"/>
-        <location filename="../UserInterface.cpp" line="641"/>
+        <location filename="../UserInterface.cpp" line="66"/>
+        <location filename="../UserInterface.cpp" line="765"/>
         <source>&amp;About %1</source>
         <translation>%1 정보(&amp;A)</translation>
     </message>
@@ -2408,15 +2409,15 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="319"/>
-        <location filename="../UserInterface.cpp" line="247"/>
+        <location filename="../UserInterface.cpp" line="254"/>
         <source>Select &amp;GTA V Folder...</source>
         <translation>GTA V 폴더 선택(&amp;G)...</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="322"/>
         <location filename="../OptionsDialog.cpp" line="744"/>
-        <location filename="../UserInterface.cpp" line="188"/>
-        <location filename="../UserInterface.cpp" line="608"/>
+        <location filename="../UserInterface.cpp" line="195"/>
+        <location filename="../UserInterface.cpp" line="732"/>
         <source>Select GTA V Folder...</source>
         <translation>GTA V 폴더 선택</translation>
     </message>
@@ -2465,29 +2466,34 @@ Press 1 for Default View</source>
         <translation>인게임 숨기기</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="63"/>
-        <location filename="../UserInterface.cpp" line="313"/>
-        <location filename="../UserInterface.cpp" line="655"/>
+        <location filename="../UserInterface.cpp" line="70"/>
+        <location filename="../UserInterface.cpp" line="320"/>
+        <location filename="../UserInterface.cpp" line="779"/>
         <source>Select Profile</source>
         <translation>프로필 선택</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="456"/>
+        <location filename="../UserInterface.cpp" line="467"/>
         <source>Open File...</source>
         <translation>파일 열기...</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="503"/>
-        <location filename="../UserInterface.cpp" line="519"/>
-        <location filename="../UserInterface.cpp" line="546"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="514"/>
+        <location filename="../UserInterface.cpp" line="530"/>
+        <location filename="../UserInterface.cpp" line="557"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>Open File</source>
         <translation>파일 열기</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="546"/>
+        <location filename="../UserInterface.cpp" line="557"/>
         <source>Can&apos;t open %1 because of not valid file format</source>
         <translation>올바른 파일 형식이 아니므로 %1을 열 수 없습니다</translation>
     </message>
+    <message>
+        <location filename="../UserInterface.cpp" line="645"/>
+        <source>%1 - Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
diff --git a/res/gta5sync_ru.ts b/res/gta5sync_ru.ts
index 797cc8b..1b2dd12 100644
--- a/res/gta5sync_ru.ts
+++ b/res/gta5sync_ru.ts
@@ -1345,13 +1345,13 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="526"/>
-        <location filename="../UserInterface.cpp" line="461"/>
+        <location filename="../UserInterface.cpp" line="472"/>
         <source>Savegames files (SGTA*)</source>
         <translation>Файлы сохранения (SGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="527"/>
-        <location filename="../UserInterface.cpp" line="462"/>
+        <location filename="../UserInterface.cpp" line="473"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation>Картинка Snapmatic (PGTA*)</translation>
     </message>
@@ -1359,7 +1359,7 @@ Press 1 for Default View</source>
         <location filename="../ImportDialog.cpp" line="438"/>
         <location filename="../ImportDialog.cpp" line="759"/>
         <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../UserInterface.cpp" line="463"/>
+        <location filename="../UserInterface.cpp" line="474"/>
         <source>All files (**)</source>
         <translation>Все файлы (**)</translation>
     </message>
@@ -1380,20 +1380,20 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="650"/>
-        <location filename="../UserInterface.cpp" line="503"/>
+        <location filename="../UserInterface.cpp" line="514"/>
         <source>Failed to read Snapmatic picture</source>
         <translation>Не удалось загрузить картинку Snapmatic</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="685"/>
-        <location filename="../UserInterface.cpp" line="519"/>
+        <location filename="../UserInterface.cpp" line="530"/>
         <source>Failed to read Savegame file</source>
         <translation>Не удалось загрузить файл сохранения</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="553"/>
         <location filename="../ProfileInterface.cpp" line="944"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>No valid file is selected</source>
         <translation>Выбранный файл неверен</translation>
     </message>
@@ -1646,13 +1646,13 @@ Press 1 for Default View</source>
         <translation>Экспортируется файл %1 из %2</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="459"/>
+        <location filename="../UserInterface.cpp" line="470"/>
         <source>All profile files (*.g5e SGTA* PGTA*)</source>
         <translation>Все файлы профиля (*.g5e SGTA* PGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="525"/>
-        <location filename="../UserInterface.cpp" line="460"/>
+        <location filename="../UserInterface.cpp" line="471"/>
         <source>GTA V Export (*.g5e)</source>
         <translation>GTA V Export (*.g5e)</translation>
     </message>
@@ -1660,17 +1660,17 @@ Press 1 for Default View</source>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Font</source>
         <translation>Шрифт</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Selected Font: %1</source>
         <translation>Выбранный шрифт: %1</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="140"/>
+        <location filename="../main.cpp" line="144"/>
         <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
         <translation>&lt;h4&gt;Добро пожаловать в %1!&lt;/h4&gt;Хочешь изменить настройки %1 перед использованием?</translation>
     </message>
@@ -2249,22 +2249,22 @@ Press 1 for Default View</source>
 <context>
     <name>TelemetryDialog</name>
     <message>
-        <location filename="../main.cpp" line="169"/>
+        <location filename="../main.cpp" line="173"/>
         <source>You want help %1 to improve in the future by including personal usage data in your submission?</source>
         <translation>Разрешишь нам собирать статистику о пользовании тобой %1? Это поможет нам в разработке.</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="170"/>
+        <location filename="../main.cpp" line="174"/>
         <source>%1 User Statistics</source>
         <translation>%1 Пользовательская статистика</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="174"/>
+        <location filename="../main.cpp" line="178"/>
         <source>Yes, I want include personal usage data.</source>
         <translation>Да, передавать данные о пользовании программой.</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="183"/>
+        <location filename="../main.cpp" line="187"/>
         <source>&amp;OK</source>
         <translation>&amp;ОК</translation>
     </message>
@@ -2339,7 +2339,7 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="319"/>
-        <location filename="../UserInterface.cpp" line="247"/>
+        <location filename="../UserInterface.cpp" line="254"/>
         <source>Select &amp;GTA V Folder...</source>
         <translation>Выбрать &amp;папку GTA V...</translation>
     </message>
@@ -2375,6 +2375,7 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="153"/>
+        <location filename="../UserInterface.cpp" line="676"/>
         <source>&amp;Close</source>
         <translation>&amp;Закрыть</translation>
     </message>
@@ -2414,51 +2415,56 @@ Press 1 for Default View</source>
         <translation>&amp;Открыть файл...</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="63"/>
-        <location filename="../UserInterface.cpp" line="313"/>
-        <location filename="../UserInterface.cpp" line="655"/>
+        <location filename="../UserInterface.cpp" line="70"/>
+        <location filename="../UserInterface.cpp" line="320"/>
+        <location filename="../UserInterface.cpp" line="779"/>
         <source>Select Profile</source>
         <translation>Выбор профиля</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="322"/>
         <location filename="../OptionsDialog.cpp" line="744"/>
-        <location filename="../UserInterface.cpp" line="188"/>
-        <location filename="../UserInterface.cpp" line="608"/>
+        <location filename="../UserInterface.cpp" line="195"/>
+        <location filename="../UserInterface.cpp" line="732"/>
         <source>Select GTA V Folder...</source>
         <translation>Выбрать папку GTA V...</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="20"/>
-        <location filename="../UserInterface.cpp" line="61"/>
+        <location filename="../UserInterface.cpp" line="68"/>
         <source>%2 - %1</source>
         <translation>%2 - %1</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="236"/>
-        <location filename="../UserInterface.cpp" line="59"/>
-        <location filename="../UserInterface.cpp" line="641"/>
+        <location filename="../UserInterface.cpp" line="66"/>
+        <location filename="../UserInterface.cpp" line="765"/>
         <source>&amp;About %1</source>
         <translation>&amp;О программе %1</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="456"/>
+        <location filename="../UserInterface.cpp" line="467"/>
         <source>Open File...</source>
         <translation>Открыть файл...</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="503"/>
-        <location filename="../UserInterface.cpp" line="519"/>
-        <location filename="../UserInterface.cpp" line="546"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="514"/>
+        <location filename="../UserInterface.cpp" line="530"/>
+        <location filename="../UserInterface.cpp" line="557"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>Open File</source>
         <translation>Открыть файл</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="546"/>
+        <location filename="../UserInterface.cpp" line="557"/>
         <source>Can&apos;t open %1 because of not valid file format</source>
         <translation>Не удалось открыть %1 из-за неверного формата файла</translation>
     </message>
+    <message>
+        <location filename="../UserInterface.cpp" line="645"/>
+        <source>%1 - Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location filename="../UserInterface.ui" line="134"/>
         <source>&amp;Reload</source>
diff --git a/res/gta5sync_uk.ts b/res/gta5sync_uk.ts
index 2115c75..fda1d75 100644
--- a/res/gta5sync_uk.ts
+++ b/res/gta5sync_uk.ts
@@ -1337,7 +1337,7 @@ Press 1 for Default View</source>
         <location filename="../ImportDialog.cpp" line="438"/>
         <location filename="../ImportDialog.cpp" line="759"/>
         <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../UserInterface.cpp" line="463"/>
+        <location filename="../UserInterface.cpp" line="474"/>
         <source>All files (**)</source>
         <translation>Усі файли (**)</translation>
     </message>
@@ -1382,26 +1382,26 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="525"/>
-        <location filename="../UserInterface.cpp" line="460"/>
+        <location filename="../UserInterface.cpp" line="471"/>
         <source>GTA V Export (*.g5e)</source>
         <translation>GTA V Export (*.g5e)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="526"/>
-        <location filename="../UserInterface.cpp" line="461"/>
+        <location filename="../UserInterface.cpp" line="472"/>
         <source>Savegames files (SGTA*)</source>
         <translation>Файли збереження гри (SGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="527"/>
-        <location filename="../UserInterface.cpp" line="462"/>
+        <location filename="../UserInterface.cpp" line="473"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation>Snapmatic зображення (PGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="553"/>
         <location filename="../ProfileInterface.cpp" line="944"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>No valid file is selected</source>
         <translation>Вибрані недійсні файли</translation>
     </message>
@@ -1422,13 +1422,13 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="650"/>
-        <location filename="../UserInterface.cpp" line="503"/>
+        <location filename="../UserInterface.cpp" line="514"/>
         <source>Failed to read Snapmatic picture</source>
         <translation>Не вдалося прочитати Snapmatic картинку</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="685"/>
-        <location filename="../UserInterface.cpp" line="519"/>
+        <location filename="../UserInterface.cpp" line="530"/>
         <source>Failed to read Savegame file</source>
         <translation>Не вдалося прочитати файл збереження гри</translation>
     </message>
@@ -1642,7 +1642,7 @@ Press 1 for Default View</source>
         <translation>Змінити назву</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="459"/>
+        <location filename="../UserInterface.cpp" line="470"/>
         <source>All profile files (*.g5e SGTA* PGTA*)</source>
         <translation>Усі файли зображень (*.g5e SGTA* PGTA*)</translation>
     </message>
@@ -1650,17 +1650,17 @@ Press 1 for Default View</source>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Font</source>
         <translation>Шрифт</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Selected Font: %1</source>
         <translation>Вибраний шрифт:%1</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="140"/>
+        <location filename="../main.cpp" line="144"/>
         <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
         <translation>&lt;h4&gt;Ласкаво просимо до %1!&lt;/h4&gt;Ви хочете налаштувати %1 перед використанням?</translation>
     </message>
@@ -2239,22 +2239,22 @@ Press 1 for Default View</source>
 <context>
     <name>TelemetryDialog</name>
     <message>
-        <location filename="../main.cpp" line="169"/>
+        <location filename="../main.cpp" line="173"/>
         <source>You want help %1 to improve in the future by including personal usage data in your submission?</source>
         <translation>Ви хочете допомогти %1  покращитись у майбутньому, включивши дані особистого користування?</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="170"/>
+        <location filename="../main.cpp" line="174"/>
         <source>%1 User Statistics</source>
         <translation>%1 Статистика користувачів</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="174"/>
+        <location filename="../main.cpp" line="178"/>
         <source>Yes, I want include personal usage data.</source>
         <translation>Так, я хочу включити дані особистого користування.</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="183"/>
+        <location filename="../main.cpp" line="187"/>
         <source>&amp;OK</source>
         <translatorcomment>&amp;OK</translatorcomment>
         <translation>&amp;OK</translation>
@@ -2264,7 +2264,7 @@ Press 1 for Default View</source>
     <name>UserInterface</name>
     <message>
         <location filename="../UserInterface.ui" line="20"/>
-        <location filename="../UserInterface.cpp" line="61"/>
+        <location filename="../UserInterface.cpp" line="68"/>
         <source>%2 - %1</source>
         <translation>%2 - %1</translation>
     </message>
@@ -2296,6 +2296,7 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="153"/>
+        <location filename="../UserInterface.cpp" line="676"/>
         <source>&amp;Close</source>
         <translation>&amp;Закрити</translation>
     </message>
@@ -2331,8 +2332,8 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="236"/>
-        <location filename="../UserInterface.cpp" line="59"/>
-        <location filename="../UserInterface.cpp" line="641"/>
+        <location filename="../UserInterface.cpp" line="66"/>
+        <location filename="../UserInterface.cpp" line="765"/>
         <source>&amp;About %1</source>
         <translation>&amp;Про %1</translation>
     </message>
@@ -2388,15 +2389,15 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="319"/>
-        <location filename="../UserInterface.cpp" line="247"/>
+        <location filename="../UserInterface.cpp" line="254"/>
         <source>Select &amp;GTA V Folder...</source>
         <translation>Вибрати &amp;GTA V теку...</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="322"/>
         <location filename="../OptionsDialog.cpp" line="744"/>
-        <location filename="../UserInterface.cpp" line="188"/>
-        <location filename="../UserInterface.cpp" line="608"/>
+        <location filename="../UserInterface.cpp" line="195"/>
+        <location filename="../UserInterface.cpp" line="732"/>
         <source>Select GTA V Folder...</source>
         <translation>Вибрати GTA V теку...</translation>
     </message>
@@ -2445,29 +2446,34 @@ Press 1 for Default View</source>
         <translation>Сховати у грі</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="63"/>
-        <location filename="../UserInterface.cpp" line="313"/>
-        <location filename="../UserInterface.cpp" line="655"/>
+        <location filename="../UserInterface.cpp" line="70"/>
+        <location filename="../UserInterface.cpp" line="320"/>
+        <location filename="../UserInterface.cpp" line="779"/>
         <source>Select Profile</source>
         <translation>Вибрати профіль</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="456"/>
+        <location filename="../UserInterface.cpp" line="467"/>
         <source>Open File...</source>
         <translation>Відкрити файл...</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="503"/>
-        <location filename="../UserInterface.cpp" line="519"/>
-        <location filename="../UserInterface.cpp" line="546"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="514"/>
+        <location filename="../UserInterface.cpp" line="530"/>
+        <location filename="../UserInterface.cpp" line="557"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>Open File</source>
         <translation>Відкрити файл</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="546"/>
+        <location filename="../UserInterface.cpp" line="557"/>
         <source>Can&apos;t open %1 because of not valid file format</source>
         <translation>Неможливо відкрити %1 через невідомий формат файлу</translation>
     </message>
+    <message>
+        <location filename="../UserInterface.cpp" line="645"/>
+        <source>%1 - Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
diff --git a/res/gta5sync_zh_TW.ts b/res/gta5sync_zh_TW.ts
index 670f5ff..20b79d4 100644
--- a/res/gta5sync_zh_TW.ts
+++ b/res/gta5sync_zh_TW.ts
@@ -1331,7 +1331,7 @@ Press 1 for Default View</source>
         <location filename="../ImportDialog.cpp" line="438"/>
         <location filename="../ImportDialog.cpp" line="759"/>
         <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../UserInterface.cpp" line="463"/>
+        <location filename="../UserInterface.cpp" line="474"/>
         <source>All files (**)</source>
         <translation>所有檔案 (**)</translation>
     </message>
@@ -1376,26 +1376,26 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="525"/>
-        <location filename="../UserInterface.cpp" line="460"/>
+        <location filename="../UserInterface.cpp" line="471"/>
         <source>GTA V Export (*.g5e)</source>
         <translation>GTA V Export (*.g5e)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="526"/>
-        <location filename="../UserInterface.cpp" line="461"/>
+        <location filename="../UserInterface.cpp" line="472"/>
         <source>Savegames files (SGTA*)</source>
         <translation>遊戲存檔 (SGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="527"/>
-        <location filename="../UserInterface.cpp" line="462"/>
+        <location filename="../UserInterface.cpp" line="473"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation>Snapmatic 圖片 (PGTA*)</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="553"/>
         <location filename="../ProfileInterface.cpp" line="944"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>No valid file is selected</source>
         <translation>沒有選擇有效的檔案</translation>
     </message>
@@ -1414,13 +1414,13 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="650"/>
-        <location filename="../UserInterface.cpp" line="503"/>
+        <location filename="../UserInterface.cpp" line="514"/>
         <source>Failed to read Snapmatic picture</source>
         <translation>無法讀取 Snapmatic 圖片</translation>
     </message>
     <message>
         <location filename="../ProfileInterface.cpp" line="685"/>
-        <location filename="../UserInterface.cpp" line="519"/>
+        <location filename="../UserInterface.cpp" line="530"/>
         <source>Failed to read Savegame file</source>
         <translation>無法讀取遊戲存檔</translation>
     </message>
@@ -1632,7 +1632,7 @@ Press 1 for Default View</source>
         <translation>更改標題</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="459"/>
+        <location filename="../UserInterface.cpp" line="470"/>
         <source>All profile files (*.g5e SGTA* PGTA*)</source>
         <translation>所有設定檔檔案 (*.g5e SGTA* PGTA*)</translation>
     </message>
@@ -1640,17 +1640,17 @@ Press 1 for Default View</source>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Font</source>
         <translation>字體</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="113"/>
+        <location filename="../main.cpp" line="117"/>
         <source>Selected Font: %1</source>
         <translation>選擇的字體: %1</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="140"/>
+        <location filename="../main.cpp" line="144"/>
         <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
         <translation>&lt;h4&gt;歡迎使用 %1!&lt;/h4&gt; 你想在開始前先設定 %1 嗎?</translation>
     </message>
@@ -2229,22 +2229,22 @@ Press 1 for Default View</source>
 <context>
     <name>TelemetryDialog</name>
     <message>
-        <location filename="../main.cpp" line="169"/>
+        <location filename="../main.cpp" line="173"/>
         <source>You want help %1 to improve in the future by including personal usage data in your submission?</source>
         <translation>你希望通過收集資料來幫助改善 %1 嗎?</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="170"/>
+        <location filename="../main.cpp" line="174"/>
         <source>%1 User Statistics</source>
         <translation>%1 使用者統計</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="174"/>
+        <location filename="../main.cpp" line="178"/>
         <source>Yes, I want include personal usage data.</source>
         <translation>是的,我想幫忙.</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="183"/>
+        <location filename="../main.cpp" line="187"/>
         <source>&amp;OK</source>
         <translation>確定(&amp;O)</translation>
     </message>
@@ -2253,7 +2253,7 @@ Press 1 for Default View</source>
     <name>UserInterface</name>
     <message>
         <location filename="../UserInterface.ui" line="20"/>
-        <location filename="../UserInterface.cpp" line="61"/>
+        <location filename="../UserInterface.cpp" line="68"/>
         <source>%2 - %1</source>
         <translation>%2 - %1</translation>
     </message>
@@ -2285,6 +2285,7 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="153"/>
+        <location filename="../UserInterface.cpp" line="676"/>
         <source>&amp;Close</source>
         <translation>關閉(&amp;C)</translation>
     </message>
@@ -2320,8 +2321,8 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="236"/>
-        <location filename="../UserInterface.cpp" line="59"/>
-        <location filename="../UserInterface.cpp" line="641"/>
+        <location filename="../UserInterface.cpp" line="66"/>
+        <location filename="../UserInterface.cpp" line="765"/>
         <source>&amp;About %1</source>
         <translation>關於 %1(&amp;A)</translation>
     </message>
@@ -2377,15 +2378,15 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="319"/>
-        <location filename="../UserInterface.cpp" line="247"/>
+        <location filename="../UserInterface.cpp" line="254"/>
         <source>Select &amp;GTA V Folder...</source>
         <translation>選擇 GTA V 資料夾(&amp;G)...</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="322"/>
         <location filename="../OptionsDialog.cpp" line="744"/>
-        <location filename="../UserInterface.cpp" line="188"/>
-        <location filename="../UserInterface.cpp" line="608"/>
+        <location filename="../UserInterface.cpp" line="195"/>
+        <location filename="../UserInterface.cpp" line="732"/>
         <source>Select GTA V Folder...</source>
         <translation>選擇 GTA V 資料夾...</translation>
     </message>
@@ -2434,29 +2435,34 @@ Press 1 for Default View</source>
         <translation>在遊戲中隱藏</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="63"/>
-        <location filename="../UserInterface.cpp" line="313"/>
-        <location filename="../UserInterface.cpp" line="655"/>
+        <location filename="../UserInterface.cpp" line="70"/>
+        <location filename="../UserInterface.cpp" line="320"/>
+        <location filename="../UserInterface.cpp" line="779"/>
         <source>Select Profile</source>
         <translation>選擇設定檔</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="456"/>
+        <location filename="../UserInterface.cpp" line="467"/>
         <source>Open File...</source>
         <translation>開啟檔案...</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="503"/>
-        <location filename="../UserInterface.cpp" line="519"/>
-        <location filename="../UserInterface.cpp" line="546"/>
-        <location filename="../UserInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="514"/>
+        <location filename="../UserInterface.cpp" line="530"/>
+        <location filename="../UserInterface.cpp" line="557"/>
+        <location filename="../UserInterface.cpp" line="562"/>
         <source>Open File</source>
         <translation>開啟檔案</translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="546"/>
+        <location filename="../UserInterface.cpp" line="557"/>
         <source>Can&apos;t open %1 because of not valid file format</source>
         <translation>格式無效,無法開啟 %1</translation>
     </message>
+    <message>
+        <location filename="../UserInterface.cpp" line="645"/>
+        <source>%1 - Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>