merged with gta5view 1.8
This commit is contained in:
parent
b387046fe5
commit
68dff71d17
43 changed files with 2383 additions and 2034 deletions
18
AppEnv.cpp
18
AppEnv.cpp
|
@ -22,13 +22,17 @@
|
|||
#include "StandardPaths.h"
|
||||
#include <QtGlobal>
|
||||
#include <QStringBuilder>
|
||||
#include <QDesktopWidget>
|
||||
#include <QApplication>
|
||||
#include <QSettings>
|
||||
#include <QScreen>
|
||||
#include <QDebug>
|
||||
#include <QRect>
|
||||
#include <QDir>
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
#include <QDesktopWidget>
|
||||
#endif
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
|
@ -153,7 +157,7 @@ QString AppEnv::getPluginsFolder()
|
|||
QByteArray AppEnv::getUserAgent()
|
||||
{
|
||||
#if QT_VERSION >= 0x050400
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
QString kernelVersion = QSysInfo::kernelVersion();
|
||||
const QStringList &kernelVersionList = kernelVersion.split(".");
|
||||
if (kernelVersionList.length() > 2)
|
||||
|
@ -210,7 +214,7 @@ QUrl AppEnv::getPlayerFetchingUrl(QString crewID, int pageNumber)
|
|||
|
||||
GameVersion AppEnv::getGameVersion()
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
QString argumentValue;
|
||||
#ifdef _WIN64
|
||||
argumentValue = "\\WOW6432Node";
|
||||
|
@ -268,7 +272,7 @@ GameLanguage AppEnv::getGameLanguage(GameVersion gameVersion)
|
|||
{
|
||||
if (gameVersion == GameVersion::SocialClubVersion)
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
QString argumentValue;
|
||||
#ifdef _WIN64
|
||||
argumentValue = "\\WOW6432Node";
|
||||
|
@ -282,7 +286,7 @@ GameLanguage AppEnv::getGameLanguage(GameVersion gameVersion)
|
|||
}
|
||||
else if (gameVersion == GameVersion::SteamVersion)
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
QString argumentValue;
|
||||
#ifdef _WIN64
|
||||
argumentValue = "\\WOW6432Node";
|
||||
|
@ -443,7 +447,7 @@ bool AppEnv::setGameLanguage(GameVersion gameVersion, GameLanguage gameLanguage)
|
|||
}
|
||||
if (socialClubVersion)
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
QString argumentValue;
|
||||
#ifdef _WIN64
|
||||
argumentValue = "\\WOW6432Node";
|
||||
|
@ -468,7 +472,7 @@ bool AppEnv::setGameLanguage(GameVersion gameVersion, GameLanguage gameLanguage)
|
|||
}
|
||||
if (steamVersion)
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
QString argumentValue;
|
||||
#ifdef _WIN64
|
||||
argumentValue = "\\WOW6432Node";
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -65,7 +62,9 @@ void DatabaseThread::scanCrewReference(const QStringList &crewList, const int &r
|
|||
QNetworkAccessManager *netManager = new QNetworkAccessManager();
|
||||
QNetworkRequest netRequest(AppEnv::getCrewFetchingUrl(crewID));
|
||||
#if QT_VERSION >= 0x050600
|
||||
#if QT_VERSION < 0x060000
|
||||
netRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
|
||||
#endif
|
||||
#endif
|
||||
netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent());
|
||||
netRequest.setRawHeader("Accept", "text/html");
|
||||
|
@ -138,7 +137,9 @@ void DatabaseThread::scanCrewMembersList(const QStringList &crewList, const int
|
|||
QNetworkAccessManager *netManager = new QNetworkAccessManager();
|
||||
QNetworkRequest netRequest(AppEnv::getPlayerFetchingUrl(crewID, currentPage));
|
||||
#if QT_VERSION >= 0x050600
|
||||
#if QT_VERSION < 0x060000
|
||||
netRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
|
||||
#endif
|
||||
#endif
|
||||
netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent());
|
||||
netRequest.setRawHeader("Accept", "application/json");
|
||||
|
|
|
@ -35,9 +35,11 @@ QMap<QString, QString> GlobalString::getGlobalMap()
|
|||
{
|
||||
QMap<QString, QString> globalMap;
|
||||
QSettings globalFile(getLanguageFile(), QSettings::IniFormat);
|
||||
#if QT_VERSION < 0x060000
|
||||
globalFile.setIniCodec("UTF-8");
|
||||
#endif
|
||||
globalFile.beginGroup("Global");
|
||||
for (QString globalStr : globalFile.childKeys())
|
||||
for (const QString &globalStr : globalFile.childKeys())
|
||||
{
|
||||
globalMap[globalStr] = globalFile.value(globalStr, globalStr).toString();
|
||||
}
|
||||
|
@ -49,7 +51,9 @@ QString GlobalString::getString(QString valueStr, bool *ok)
|
|||
{
|
||||
QString globalString = valueStr;
|
||||
QSettings globalFile(getLanguageFile(), QSettings::IniFormat);
|
||||
#if QT_VERSION < 0x060000
|
||||
globalFile.setIniCodec("UTF-8");
|
||||
#endif
|
||||
globalFile.beginGroup("Global");
|
||||
QStringList globalStrList = globalFile.childKeys();
|
||||
if (globalStrList.contains(valueStr))
|
||||
|
|
|
@ -95,6 +95,21 @@ void MapLocationDialog::on_cmdDone_clicked()
|
|||
changeMode = false;
|
||||
}
|
||||
|
||||
#if QT_VERSION >= 0x060000
|
||||
void MapLocationDialog::updatePosFromEvent(double x, double y)
|
||||
{
|
||||
QSize mapPixelSize = size();
|
||||
double xpos_ad = x;
|
||||
double ypos_ad = mapPixelSize.height() - y;
|
||||
double xrat = 10000 / (double)mapPixelSize.width();
|
||||
double yrat = 12000 / (double)mapPixelSize.height();
|
||||
double xpos_rv = xrat * xpos_ad;
|
||||
double ypos_rv = yrat * ypos_ad;
|
||||
double xpos_fp = xpos_rv - 4000;
|
||||
double ypos_fp = ypos_rv - 4000;
|
||||
drawPointOnMap(xpos_fp, ypos_fp);
|
||||
}
|
||||
#else
|
||||
void MapLocationDialog::updatePosFromEvent(int x, int y)
|
||||
{
|
||||
QSize mapPixelSize = size();
|
||||
|
@ -108,6 +123,7 @@ void MapLocationDialog::updatePosFromEvent(int x, int y)
|
|||
double ypos_fp = ypos_rv - 4000;
|
||||
drawPointOnMap(xpos_fp, ypos_fp);
|
||||
}
|
||||
#endif
|
||||
|
||||
void MapLocationDialog::paintEvent(QPaintEvent *ev)
|
||||
{
|
||||
|
@ -133,7 +149,7 @@ void MapLocationDialog::paintEvent(QPaintEvent *ev)
|
|||
long xpos_pr;
|
||||
long ypos_pr;
|
||||
if (screenRatioPR != 1) {
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
xpos_pr = xpos_mp - pointMarkerHalfSize;
|
||||
ypos_pr = ypos_mp + pointMarkerHalfSize;
|
||||
#else
|
||||
|
@ -156,7 +172,11 @@ void MapLocationDialog::mouseMoveEvent(QMouseEvent *ev)
|
|||
if (!changeMode) { ev->ignore(); }
|
||||
else if (ev->buttons() & Qt::LeftButton)
|
||||
{
|
||||
#if QT_VERSION >= 0x060000
|
||||
updatePosFromEvent(ev->position().x(), ev->position().y());
|
||||
#else
|
||||
updatePosFromEvent(ev->x(), ev->y());
|
||||
#endif
|
||||
ev->accept();
|
||||
}
|
||||
else
|
||||
|
@ -170,7 +190,11 @@ void MapLocationDialog::mouseReleaseEvent(QMouseEvent *ev)
|
|||
if (!changeMode) { ev->ignore(); }
|
||||
else if (ev->button() == Qt::LeftButton)
|
||||
{
|
||||
#if QT_VERSION >= 0x060000
|
||||
updatePosFromEvent(ev->position().x(), ev->position().y());
|
||||
#else
|
||||
updatePosFromEvent(ev->x(), ev->y());
|
||||
#endif
|
||||
ev->accept();
|
||||
}
|
||||
else
|
||||
|
|
|
@ -48,7 +48,11 @@ private slots:
|
|||
void on_cmdApply_clicked();
|
||||
void on_cmdChange_clicked();
|
||||
void on_cmdRevert_clicked();
|
||||
#if QT_VERSION >= 0x060000
|
||||
void updatePosFromEvent(double x, double y);
|
||||
#else
|
||||
void updatePosFromEvent(int x, int y);
|
||||
#endif
|
||||
void on_cmdClose_clicked();
|
||||
|
||||
private:
|
||||
|
|
111
MessageThread.cpp
Normal file
111
MessageThread.cpp
Normal file
|
@ -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();
|
||||
}
|
48
MessageThread.h
Normal file
48
MessageThread.h
Normal file
|
@ -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
|
|
@ -174,7 +174,7 @@ void OptionsDialog::setupLanguageBox()
|
|||
|
||||
QString cbSysStr = tr("%1 (Language priority)", "First language a person can talk with a different person/application. \"Native\" or \"Not Native\".").arg(tr("System",
|
||||
"System in context of System default"));
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
QString cbAutoStr;
|
||||
if (AppEnv::getGameLanguage(AppEnv::getGameVersion()) != GameLanguage::Undefined)
|
||||
{
|
||||
|
@ -301,7 +301,7 @@ void OptionsDialog::setupInterfaceSettings()
|
|||
settings->beginGroup("Startup");
|
||||
bool alwaysUseMessageFont = settings->value("AlwaysUseMessageFont", false).toBool();
|
||||
ui->cbAlwaysUseMessageFont->setChecked(alwaysUseMessageFont);
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
if (QSysInfo::windowsVersion() >= 0x0080)
|
||||
{
|
||||
ui->gbFont->setVisible(false);
|
||||
|
@ -367,7 +367,7 @@ void OptionsDialog::applySettings()
|
|||
settings->setValue("Language", ui->cbLanguage->itemData(ui->cbLanguage->currentIndex()));
|
||||
settings->setValue("AreaLanguage", ui->cbAreaLanguage->itemData(ui->cbAreaLanguage->currentIndex()));
|
||||
#endif
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
settings->setValue("NavigationBar", ui->cbSnapmaticNavigationBar->isChecked());
|
||||
#endif
|
||||
|
@ -626,7 +626,7 @@ void OptionsDialog::setupWindowsGameSettings()
|
|||
{
|
||||
#ifdef GTA5SYNC_GAME
|
||||
GameVersion gameVersion = AppEnv::getGameVersion();
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
if (gameVersion != GameVersion::NoVersion)
|
||||
{
|
||||
if (gameVersion == GameVersion::SocialClubVersion)
|
||||
|
@ -723,7 +723,7 @@ void OptionsDialog::setupCustomGTAFolder()
|
|||
|
||||
void OptionsDialog::setupSnapmaticPictureViewer()
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
settings->beginGroup("Interface");
|
||||
ui->cbSnapmaticNavigationBar->setChecked(settings->value("NavigationBar", true).toBool());
|
||||
|
|
|
@ -33,7 +33,11 @@
|
|||
#include "AppEnv.h"
|
||||
#include "config.h"
|
||||
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#if QT_VERSION < 0x060000
|
||||
#include <QDesktopWidget>
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
#include <QtWinExtras/QtWin>
|
||||
#include <QtWinExtras/QWinEvent>
|
||||
|
@ -41,7 +45,6 @@
|
|||
#endif
|
||||
|
||||
#include <QStringBuilder>
|
||||
#include <QDesktopWidget>
|
||||
#include <QJsonDocument>
|
||||
#include <QApplication>
|
||||
#include <QFontMetrics>
|
||||
|
@ -80,7 +83,11 @@
|
|||
#define picPath picture->getPictureFilePath()
|
||||
#define picTitl StringParser::escapeString(picture->getPictureTitle())
|
||||
#define plyrsList picture->getSnapmaticProperties().playersList
|
||||
#if QT_VERSION >= 0x060000
|
||||
#define created QLocale().toString(picture->getSnapmaticProperties().createdDateTime, QLocale::ShortFormat)
|
||||
#else
|
||||
#define created picture->getSnapmaticProperties().createdDateTime.toString(Qt::DefaultLocaleShortDate)
|
||||
#endif
|
||||
|
||||
PictureDialog::PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent) :
|
||||
QDialog(parent), profileDB(profileDB), crewDB(crewDB),
|
||||
|
@ -208,7 +215,7 @@ void PictureDialog::setupPictureDialog()
|
|||
|
||||
PictureDialog::~PictureDialog()
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
if (naviEnabled)
|
||||
{
|
||||
|
@ -248,7 +255,7 @@ void PictureDialog::closeEvent(QCloseEvent *ev)
|
|||
|
||||
void PictureDialog::addPreviousNextButtons()
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
QToolBar *uiToolbar = new QToolBar("Picture Toolbar", this);
|
||||
uiToolbar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
|
||||
|
@ -276,120 +283,6 @@ void PictureDialog::addPreviousNextButtons()
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
#ifdef GTA5SYNC_APV
|
||||
bool PictureDialog::nativeEvent(const QByteArray &eventType, void *message, long *result)
|
||||
{
|
||||
*result = 0;
|
||||
MSG *msg = static_cast<MSG*>(message);
|
||||
LRESULT lRet = 0;
|
||||
|
||||
if (naviEnabled && QtWin::isCompositionEnabled())
|
||||
{
|
||||
if (msg->message == WM_NCCALCSIZE && msg->wParam == TRUE)
|
||||
{
|
||||
NCCALCSIZE_PARAMS *pncsp = reinterpret_cast<NCCALCSIZE_PARAMS*>(msg->lParam);
|
||||
|
||||
int sideBorderSize = ((frameSize().width() - size().width()) / 2);
|
||||
#ifdef GTA5SYNC_APV_SIDE
|
||||
int buttomBorderSize = sideBorderSize;
|
||||
#else
|
||||
int buttomBorderSize = (frameSize().height() - size().height());
|
||||
#endif
|
||||
pncsp->rgrc[0].left += sideBorderSize;
|
||||
pncsp->rgrc[0].right -= sideBorderSize;
|
||||
pncsp->rgrc[0].bottom -= buttomBorderSize;
|
||||
}
|
||||
else if (msg->message == WM_NCHITTEST)
|
||||
{
|
||||
int CLOSE_BUTTON_ID = 20;
|
||||
lRet = HitTestNCA(msg->hwnd, msg->lParam);
|
||||
DwmDefWindowProc(msg->hwnd, msg->message, msg->wParam, msg->lParam, &lRet);
|
||||
*result = lRet;
|
||||
if (lRet != CLOSE_BUTTON_ID) { return QWidget::nativeEvent(eventType, message, result); }
|
||||
}
|
||||
else
|
||||
{
|
||||
return QWidget::nativeEvent(eventType, message, result);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return QWidget::nativeEvent(eventType, message, result);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
LRESULT PictureDialog::HitTestNCA(HWND hWnd, LPARAM lParam)
|
||||
{
|
||||
int LEFTEXTENDWIDTH = 0;
|
||||
int RIGHTEXTENDWIDTH = 0;
|
||||
int BOTTOMEXTENDWIDTH = 0;
|
||||
int TOPEXTENDWIDTH = layout()->menuBar()->height();
|
||||
|
||||
POINT ptMouse = {(int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)};
|
||||
|
||||
RECT rcWindow;
|
||||
GetWindowRect(hWnd, &rcWindow);
|
||||
|
||||
RECT rcFrame = {};
|
||||
AdjustWindowRectEx(&rcFrame, WS_OVERLAPPEDWINDOW & ~WS_CAPTION, FALSE, NULL);
|
||||
|
||||
USHORT uRow = 1;
|
||||
USHORT uCol = 1;
|
||||
bool fOnResizeBorder = false;
|
||||
|
||||
if (ptMouse.y >= rcWindow.top && ptMouse.y < rcWindow.top + TOPEXTENDWIDTH)
|
||||
{
|
||||
fOnResizeBorder = (ptMouse.y < (rcWindow.top - rcFrame.top));
|
||||
uRow = 0;
|
||||
}
|
||||
else if (ptMouse.y < rcWindow.bottom && ptMouse.y >= rcWindow.bottom - BOTTOMEXTENDWIDTH)
|
||||
{
|
||||
uRow = 2;
|
||||
}
|
||||
|
||||
if (ptMouse.x >= rcWindow.left && ptMouse.x < rcWindow.left + LEFTEXTENDWIDTH)
|
||||
{
|
||||
uCol = 0;
|
||||
}
|
||||
else if (ptMouse.x < rcWindow.right && ptMouse.x >= rcWindow.right - RIGHTEXTENDWIDTH)
|
||||
{
|
||||
uCol = 2;
|
||||
}
|
||||
|
||||
LRESULT hitTests[3][3] =
|
||||
{
|
||||
{ HTTOPLEFT, fOnResizeBorder ? HTTOP : HTCAPTION, HTTOPRIGHT },
|
||||
{ HTLEFT, HTNOWHERE, HTRIGHT },
|
||||
{ HTBOTTOMLEFT, HTBOTTOM, HTBOTTOMRIGHT },
|
||||
};
|
||||
|
||||
return hitTests[uRow][uCol];
|
||||
}
|
||||
|
||||
void PictureDialog::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
Q_UNUSED(event)
|
||||
// int newDialogHeight = (ui->labPicture->pixmap()->height() / AppEnv::screenRatioPR());
|
||||
// newDialogHeight = newDialogHeight + ui->jsonFrame->height();
|
||||
// if (naviEnabled) newDialogHeight = newDialogHeight + layout()->menuBar()->height();
|
||||
// int buttomBorderSize = (frameSize().height() - size().height());
|
||||
// int sideBorderSize = ((frameSize().width() - size().width()) / 2);
|
||||
// int brokenDialogHeight = newDialogHeight + (buttomBorderSize - sideBorderSize);
|
||||
// if (event->size().height() == brokenDialogHeight)
|
||||
// {
|
||||
// qDebug() << "BROKEN 1";
|
||||
// setGeometry(geometry().x(), geometry().y(), width(), newDialogHeight);
|
||||
// qDebug() << "BROKEN 2";
|
||||
// event->ignore();
|
||||
// }
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void PictureDialog::adaptNewDialogSize(QSize newLabelSize)
|
||||
{
|
||||
Q_UNUSED(newLabelSize)
|
||||
|
@ -410,7 +303,7 @@ void PictureDialog::adaptNewDialogSize(QSize newLabelSize)
|
|||
|
||||
void PictureDialog::styliseDialog()
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
if (QtWin::isCompositionEnabled())
|
||||
{
|
||||
|
@ -432,7 +325,7 @@ void PictureDialog::styliseDialog()
|
|||
|
||||
bool PictureDialog::event(QEvent *event)
|
||||
{
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
if (naviEnabled)
|
||||
{
|
||||
|
@ -517,7 +410,7 @@ bool PictureDialog::eventFilter(QObject *obj, QEvent *ev)
|
|||
break;
|
||||
}
|
||||
}
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
if (obj != ui->labPicture && naviEnabled)
|
||||
{
|
||||
|
@ -805,7 +698,7 @@ QString PictureDialog::generatePlayersString()
|
|||
QString plyrsStr;
|
||||
if (playersList.length() >= 1)
|
||||
{
|
||||
for (const QString player : playersList)
|
||||
for (const QString &player : playersList)
|
||||
{
|
||||
const QString playerName = profileDB->getPlayerName(player);
|
||||
if (player != playerName) {
|
||||
|
@ -852,13 +745,17 @@ void PictureDialog::on_labPicture_mouseDoubleClicked(Qt::MouseButton button)
|
|||
{
|
||||
if (button == Qt::LeftButton)
|
||||
{
|
||||
#if QT_VERSION >= 0x060000
|
||||
QRect desktopRect = QApplication::screenAt(pos())->geometry();
|
||||
#else
|
||||
QRect desktopRect = QApplication::desktop()->screenGeometry(this);
|
||||
#endif
|
||||
PictureWidget *pictureWidget = new PictureWidget(this); // Work!
|
||||
pictureWidget->setObjectName("PictureWidget");
|
||||
#if QT_VERSION >= 0x050600
|
||||
pictureWidget->setWindowFlags(pictureWidget->windowFlags()^Qt::FramelessWindowHint^Qt::WindowStaysOnTopHint^Qt::MaximizeUsingFullscreenGeometryHint);
|
||||
pictureWidget->setWindowFlags(pictureWidget->windowFlags()^Qt::FramelessWindowHint^Qt::MaximizeUsingFullscreenGeometryHint);
|
||||
#else
|
||||
pictureWidget->setWindowFlags(pictureWidget->windowFlags()^Qt::FramelessWindowHint^Qt::WindowStaysOnTopHint);
|
||||
pictureWidget->setWindowFlags(pictureWidget->windowFlags()^Qt::FramelessWindowHint);
|
||||
#endif
|
||||
pictureWidget->setWindowTitle(windowTitle());
|
||||
pictureWidget->setStyleSheet("QLabel#pictureLabel{background-color: black;}");
|
||||
|
@ -872,7 +769,7 @@ void PictureDialog::on_labPicture_mouseDoubleClicked(Qt::MouseButton button)
|
|||
|
||||
pictureWidget->move(desktopRect.x(), desktopRect.y());
|
||||
pictureWidget->resize(desktopRect.width(), desktopRect.height());
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
QtWin::markFullscreenWindow(pictureWidget, true);
|
||||
#endif
|
||||
|
|
|
@ -29,14 +29,6 @@
|
|||
#include <QEvent>
|
||||
#include <QMenu>
|
||||
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
#ifdef GTA5SYNC_APV
|
||||
#include <dwmapi.h>
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
namespace Ui {
|
||||
class PictureDialog;
|
||||
}
|
||||
|
@ -98,15 +90,6 @@ protected:
|
|||
bool eventFilter(QObject *obj, QEvent *ev);
|
||||
void mousePressEvent(QMouseEvent *ev);
|
||||
bool event(QEvent *event);
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
#ifdef GTA5SYNC_APV
|
||||
bool nativeEvent(const QByteArray &eventType, void *message, long *result);
|
||||
LRESULT HitTestNCA(HWND hWnd, LPARAM lParam);
|
||||
void resizeEvent(QResizeEvent *event);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
private:
|
||||
QString generateCrewString();
|
||||
|
@ -136,7 +119,7 @@ private:
|
|||
int avatarLocY;
|
||||
int avatarSize;
|
||||
QMenu *manageMenu;
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050200
|
||||
QPoint dragPosition;
|
||||
bool dragStart;
|
||||
|
|
|
@ -23,19 +23,19 @@
|
|||
#include "StandardPaths.h"
|
||||
#include "SidebarGenerator.h"
|
||||
#include <QStringBuilder>
|
||||
#include <QDesktopWidget>
|
||||
#include <QApplication>
|
||||
#include <QMessageBox>
|
||||
#include <QFileDialog>
|
||||
#include <QSettings>
|
||||
#include <QRegExp>
|
||||
#include <QDebug>
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
#include <QDesktopWidget>
|
||||
#endif
|
||||
|
||||
#if QT_VERSION >= 0x050000
|
||||
#include <QSaveFile>
|
||||
#include <QScreen>
|
||||
#else
|
||||
#include <QDesktopWidget>
|
||||
#endif
|
||||
|
||||
PictureExport::PictureExport()
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "PictureDialog.h"
|
||||
#include "PictureWidget.h"
|
||||
#include "UiModLabel.h"
|
||||
#include <QDesktopWidget>
|
||||
#include <QApplication>
|
||||
#include <QHBoxLayout>
|
||||
#include <QKeyEvent>
|
||||
|
@ -27,6 +26,10 @@
|
|||
#include <QEvent>
|
||||
#include <QDebug>
|
||||
|
||||
#if QT_VERSION < 0x060000
|
||||
#include <QDesktopWidget>
|
||||
#endif
|
||||
|
||||
PictureWidget::PictureWidget(QWidget *parent) : QDialog(parent)
|
||||
{
|
||||
installEventFilter(this);
|
||||
|
@ -98,12 +101,21 @@ void PictureWidget::setImage(QImage image_)
|
|||
|
||||
void PictureWidget::updateWindowSize(int screenID)
|
||||
{
|
||||
#if QT_VERSION >= 0x060000
|
||||
Q_UNUSED(screenID)
|
||||
QRect desktopRect = QApplication::screenAt(pos())->geometry();
|
||||
move(desktopRect.x(), desktopRect.y());
|
||||
resize(desktopRect.width(), desktopRect.height());
|
||||
showFullScreen();
|
||||
pictureLabel->setPixmap(QPixmap::fromImage(image.scaled(desktopRect.width(), desktopRect.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation)));
|
||||
#else
|
||||
if (screenID == QApplication::desktop()->screenNumber(this))
|
||||
{
|
||||
QRect desktopRect = QApplication::desktop()->screenGeometry(this);
|
||||
this->move(desktopRect.x(), desktopRect.y());
|
||||
this->resize(desktopRect.width(), desktopRect.height());
|
||||
this->showFullScreen();
|
||||
move(desktopRect.x(), desktopRect.y());
|
||||
resize(desktopRect.width(), desktopRect.height());
|
||||
showFullScreen();
|
||||
pictureLabel->setPixmap(QPixmap::fromImage(image.scaled(desktopRect.width(), desktopRect.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation)));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
#include <QClipboard>
|
||||
#include <QFileInfo>
|
||||
#include <QPainter>
|
||||
#include <QRegExp>
|
||||
#include <QAction>
|
||||
#include <QDebug>
|
||||
#include <QColor>
|
||||
|
@ -264,18 +263,14 @@ void ProfileInterface::insertSnapmaticIPI(QWidget *widget)
|
|||
QStringList widgetsKeyList = widgets.values();
|
||||
QStringList pictureKeyList = widgetsKeyList.filter("PIC", Qt::CaseSensitive);
|
||||
#if QT_VERSION >= 0x050600
|
||||
#if QT_VERSION >= 0x050F00
|
||||
std::sort(pictureKeyList.rbegin(), pictureKeyList.rend());
|
||||
#else
|
||||
qSort(pictureKeyList.rbegin(), pictureKeyList.rend());
|
||||
#endif
|
||||
#else
|
||||
qSort(pictureKeyList.begin(), pictureKeyList.end(), qGreater<QString>());
|
||||
#endif
|
||||
int picIndex = pictureKeyList.indexOf(QRegExp(widgetKey));
|
||||
int picIndex = pictureKeyList.indexOf(widgetKey);
|
||||
ui->vlSnapmatic->insertWidget(picIndex, proWidget);
|
||||
|
||||
qApp->processEvents();
|
||||
QApplication::processEvents();
|
||||
ui->saProfile->ensureWidgetVisible(proWidget, 0, 0);
|
||||
}
|
||||
}
|
||||
|
@ -288,15 +283,15 @@ void ProfileInterface::insertSavegameIPI(QWidget *widget)
|
|||
QString widgetKey = widgets[proWidget];
|
||||
QStringList widgetsKeyList = widgets.values();
|
||||
QStringList savegameKeyList = widgetsKeyList.filter("SGD", Qt::CaseSensitive);
|
||||
#if QT_VERSION >= 0x050F00
|
||||
#if QT_VERSION >= 0x050600
|
||||
std::sort(savegameKeyList.begin(), savegameKeyList.end());
|
||||
#else
|
||||
qSort(savegameKeyList.begin(), savegameKeyList.end());
|
||||
#endif
|
||||
int sgdIndex = savegameKeyList.indexOf(QRegExp(widgetKey));
|
||||
int sgdIndex = savegameKeyList.indexOf(widgetKey);
|
||||
ui->vlSavegame->insertWidget(sgdIndex, proWidget);
|
||||
|
||||
qApp->processEvents();
|
||||
QApplication::processEvents();
|
||||
ui->saProfile->ensureWidgetVisible(proWidget, 0, 0);
|
||||
}
|
||||
}
|
||||
|
@ -311,11 +306,7 @@ void ProfileInterface::dialogNextPictureRequested(QWidget *dialog)
|
|||
QStringList widgetsKeyList = widgets.values();
|
||||
QStringList pictureKeyList = widgetsKeyList.filter("PIC", Qt::CaseSensitive);
|
||||
#if QT_VERSION >= 0x050600
|
||||
#if QT_VERSION >= 0x050F00
|
||||
std::sort(pictureKeyList.rbegin(), pictureKeyList.rend());
|
||||
#else
|
||||
qSort(pictureKeyList.rbegin(), pictureKeyList.rend());
|
||||
#endif
|
||||
#else
|
||||
qSort(pictureKeyList.begin(), pictureKeyList.end(), qGreater<QString>());
|
||||
#endif
|
||||
|
@ -326,7 +317,7 @@ void ProfileInterface::dialogNextPictureRequested(QWidget *dialog)
|
|||
}
|
||||
else
|
||||
{
|
||||
picIndex = pictureKeyList.indexOf(QRegExp(widgetKey));
|
||||
picIndex = pictureKeyList.indexOf(widgetKey);
|
||||
}
|
||||
picIndex++;
|
||||
if (pictureKeyList.length() > picIndex)
|
||||
|
@ -350,11 +341,7 @@ void ProfileInterface::dialogPreviousPictureRequested(QWidget *dialog)
|
|||
QStringList widgetsKeyList = widgets.values();
|
||||
QStringList pictureKeyList = widgetsKeyList.filter("PIC", Qt::CaseSensitive);
|
||||
#if QT_VERSION >= 0x050600
|
||||
#if QT_VERSION >= 0x050F00
|
||||
std::sort(pictureKeyList.rbegin(), pictureKeyList.rend());
|
||||
#else
|
||||
qSort(pictureKeyList.rbegin(), pictureKeyList.rend());
|
||||
#endif
|
||||
#else
|
||||
qSort(pictureKeyList.begin(), pictureKeyList.end(), qGreater<QString>());
|
||||
#endif
|
||||
|
@ -365,7 +352,7 @@ void ProfileInterface::dialogPreviousPictureRequested(QWidget *dialog)
|
|||
}
|
||||
else
|
||||
{
|
||||
picIndex = pictureKeyList.indexOf(QRegExp(widgetKey));
|
||||
picIndex = pictureKeyList.indexOf(widgetKey);
|
||||
}
|
||||
if (picIndex > 0)
|
||||
{
|
||||
|
@ -386,7 +373,7 @@ void ProfileInterface::sortingProfileInterface()
|
|||
|
||||
QStringList widgetsKeyList = widgets.values();
|
||||
|
||||
#if QT_VERSION >= 0x050F00
|
||||
#if QT_VERSION >= 0x050600
|
||||
std::sort(widgetsKeyList.begin(), widgetsKeyList.end());
|
||||
#else
|
||||
qSort(widgetsKeyList.begin(), widgetsKeyList.end());
|
||||
|
@ -408,7 +395,7 @@ void ProfileInterface::sortingProfileInterface()
|
|||
ui->vlSavegame->setEnabled(true);
|
||||
ui->vlSnapmatic->setEnabled(true);
|
||||
|
||||
qApp->processEvents();
|
||||
QApplication::processEvents();
|
||||
}
|
||||
|
||||
void ProfileInterface::profileLoaded_p()
|
||||
|
@ -772,7 +759,11 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime
|
|||
cEnough++;
|
||||
}
|
||||
spJson.createdDateTime = importDateTime;
|
||||
#if QT_VERSION >= 0x060000
|
||||
spJson.createdTimestamp = QString::number(spJson.createdDateTime.toSecsSinceEpoch()).toUInt();
|
||||
#else
|
||||
spJson.createdTimestamp = spJson.createdDateTime.toTime_t();
|
||||
#endif
|
||||
picture->setSnapmaticProperties(spJson);
|
||||
picture->setPicFileName(QString("PRDR3%1").arg(QString::number(spJson.uid)));
|
||||
picture->setPictureTitle(customImageTitle);
|
||||
|
@ -826,7 +817,11 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime
|
|||
cEnough++;
|
||||
}
|
||||
spJson.createdDateTime = importDateTime;
|
||||
#if QT_VERSION >= 0x060000
|
||||
spJson.createdTimestamp = QString::number(spJson.createdDateTime.toSecsSinceEpoch()).toUInt();
|
||||
#else
|
||||
spJson.createdTimestamp = spJson.createdDateTime.toTime_t();
|
||||
#endif
|
||||
picture->setSnapmaticProperties(spJson);
|
||||
picture->setPicFileName(QString("PRDR3%1").arg(QString::number(spJson.uid)));
|
||||
picture->setPictureTitle(importDialog->getImageTitle());
|
||||
|
@ -1071,7 +1066,11 @@ bool ProfileInterface::importImage(QImage *snapmaticImage, QDateTime importDateT
|
|||
cEnough++;
|
||||
}
|
||||
spJson.createdDateTime = importDateTime;
|
||||
#if QT_VERSION >= 0x060000
|
||||
spJson.createdTimestamp = QString::number(spJson.createdDateTime.toSecsSinceEpoch()).toUInt();
|
||||
#else
|
||||
spJson.createdTimestamp = spJson.createdDateTime.toTime_t();
|
||||
#endif
|
||||
picture->setSnapmaticProperties(spJson);
|
||||
picture->setPicFileName(QString("PRDR3%1").arg(QString::number(spJson.uid)));
|
||||
picture->setPictureTitle(importDialog->getImageTitle());
|
||||
|
@ -1115,7 +1114,11 @@ bool ProfileInterface::importSnapmaticPicture(SnapmaticPicture *picture, bool wa
|
|||
// Update Snapmatic uid
|
||||
snapmaticProperties.uid = getRandomUid();
|
||||
snapmaticProperties.createdDateTime = QDateTime::currentDateTime();
|
||||
#if QT_VERSION >= 0x060000
|
||||
snapmaticProperties.createdTimestamp = QString::number(snapmaticProperties.createdDateTime.toSecsSinceEpoch()).toUInt();
|
||||
#else
|
||||
snapmaticProperties.createdTimestamp = snapmaticProperties.createdDateTime.toTime_t();
|
||||
#endif
|
||||
bool fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid));
|
||||
bool fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".bak");
|
||||
bool fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".hidden");
|
||||
|
@ -1152,7 +1155,11 @@ bool ProfileInterface::importSnapmaticPicture(SnapmaticPicture *picture, bool wa
|
|||
// Update Snapmatic uid
|
||||
snapmaticProperties.uid = getRandomUid();
|
||||
snapmaticProperties.createdDateTime = QDateTime::currentDateTime();
|
||||
#if QT_VERSION >= 0x060000
|
||||
snapmaticProperties.createdTimestamp = QString::number(snapmaticProperties.createdDateTime.toSecsSinceEpoch()).toUInt();
|
||||
#else
|
||||
snapmaticProperties.createdTimestamp = snapmaticProperties.createdDateTime.toTime_t();
|
||||
#endif
|
||||
bool fExists = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid));
|
||||
bool fExistsBackup = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".bak");
|
||||
bool fExistsHidden = QFile::exists(profileFolder % "/PRDR3" % QString::number(snapmaticProperties.uid) % ".hidden");
|
||||
|
@ -1325,7 +1332,7 @@ void ProfileInterface::exportSelected()
|
|||
|
||||
QString ExportPreSpan;
|
||||
QString ExportPostSpan;
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
ExportPreSpan = "<span style=\"color: #003399; font-size: 12pt\">";
|
||||
ExportPostSpan = "</span>";
|
||||
#else
|
||||
|
@ -2047,7 +2054,7 @@ void ProfileInterface::massTool(MassTool tool)
|
|||
else
|
||||
{
|
||||
picture->emitUpdate();
|
||||
qApp->processEvents();
|
||||
QApplication::processEvents();
|
||||
}
|
||||
}
|
||||
pbDialog.close();
|
||||
|
@ -2146,7 +2153,7 @@ void ProfileInterface::massTool(MassTool tool)
|
|||
else
|
||||
{
|
||||
picture->emitUpdate();
|
||||
qApp->processEvents();
|
||||
QApplication::processEvents();
|
||||
}
|
||||
}
|
||||
pbDialog.close();
|
||||
|
@ -2199,7 +2206,7 @@ preSelectionCrewID:
|
|||
}
|
||||
if (crewList.contains(QString::number(crewID)))
|
||||
{
|
||||
indexNum = crewList.indexOf(QRegExp(QString::number(crewID)));
|
||||
indexNum = crewList.indexOf(QString::number(crewID));
|
||||
}
|
||||
QString newCrew = QInputDialog::getItem(this, QApplication::translate("SnapmaticEditor", "Snapmatic Crew"), QApplication::translate("SnapmaticEditor", "New Snapmatic crew:"), itemList, indexNum, true, &ok, windowFlags()^Qt::Dialog^Qt::WindowMinMaxButtonsHint);
|
||||
if (ok && !newCrew.isEmpty())
|
||||
|
@ -2277,7 +2284,7 @@ preSelectionCrewID:
|
|||
else
|
||||
{
|
||||
picture->emitUpdate();
|
||||
qApp->processEvents();
|
||||
QApplication::processEvents();
|
||||
}
|
||||
}
|
||||
pbDialog.close();
|
||||
|
@ -2380,7 +2387,7 @@ preSelectionTitle:
|
|||
else
|
||||
{
|
||||
picture->emitUpdate();
|
||||
qApp->processEvents();
|
||||
QApplication::processEvents();
|
||||
}
|
||||
}
|
||||
pbDialog.close();
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
#include "StringParser.h"
|
||||
#include "SavegameData.h"
|
||||
#include <QStringBuilder>
|
||||
#include <QTextCodec>
|
||||
#include <QByteArray>
|
||||
#include <QDebug>
|
||||
#include <QFile>
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
#include "StringParser.h"
|
||||
#include "AppEnv.h"
|
||||
#include "config.h"
|
||||
#include <QStringListIterator>
|
||||
#include <QStringBuilder>
|
||||
#include <QTextDocument>
|
||||
#include <QInputDialog>
|
||||
|
@ -438,7 +437,7 @@ void SnapmaticEditor::on_labCrew_linkActivated(const QString &link)
|
|||
}
|
||||
if (crewList.contains(QString::number(crewID)))
|
||||
{
|
||||
indexNum = crewList.indexOf(QRegExp(QString::number(crewID)));
|
||||
indexNum = crewList.indexOf(QString::number(crewID));
|
||||
}
|
||||
QString newCrew = QInputDialog::getItem(this, tr("Snapmatic Crew"), tr("New Snapmatic crew:"), itemList, indexNum, true, &ok, windowFlags());
|
||||
if (ok && !newCrew.isEmpty())
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
#include <QJsonObject>
|
||||
#include <QStringList>
|
||||
#include <QVariantMap>
|
||||
#include <QTextCodec>
|
||||
#include <QJsonArray>
|
||||
#include <QFileInfo>
|
||||
#include <QPainter>
|
||||
|
@ -33,6 +32,10 @@
|
|||
#include <QSize>
|
||||
#include <QFile>
|
||||
|
||||
#if QT_VERSION < 0x060000
|
||||
#include <QTextCodec>
|
||||
#endif
|
||||
|
||||
#if QT_VERSION >= 0x050000
|
||||
#include <QSaveFile>
|
||||
#else
|
||||
|
@ -106,7 +109,7 @@ void SnapmaticPicture::reset()
|
|||
jsonStr = QString();
|
||||
|
||||
// SNAPMATIC DEFAULTS
|
||||
#ifdef GTA5SYNC_NOASSIST
|
||||
#ifdef SNAPMATIC_NODEFAULT
|
||||
careSnapDefault = false;
|
||||
#else
|
||||
careSnapDefault = true;
|
||||
|
@ -993,7 +996,11 @@ void SnapmaticPicture::parseJsonContent()
|
|||
bool timestampOk;
|
||||
QDateTime createdTimestamp;
|
||||
localProperties.createdTimestamp = jsonMap["creat"].toUInt(×tampOk);
|
||||
#if QT_VERSION >= 0x060000
|
||||
createdTimestamp.setSecsSinceEpoch(QString::number(localProperties.createdTimestamp).toLongLong());
|
||||
#else
|
||||
createdTimestamp.setTime_t(localProperties.createdTimestamp);
|
||||
#endif
|
||||
localProperties.createdDateTime = createdTimestamp;
|
||||
if (!timestampOk) { jsonError = true; }
|
||||
}
|
||||
|
@ -1418,7 +1425,13 @@ bool SnapmaticPicture::verifyTitleChar(const QChar &titleChar)
|
|||
QString SnapmaticPicture::parseTitleString(const QByteArray &commitBytes, int maxLength)
|
||||
{
|
||||
Q_UNUSED(maxLength)
|
||||
#if QT_VERSION >= 0x060000
|
||||
QStringDecoder strDecoder = QStringDecoder(QStringDecoder::Utf16LE);
|
||||
QString retStr = strDecoder(commitBytes);
|
||||
retStr = retStr.trimmed();
|
||||
#else
|
||||
QString retStr = QTextCodec::codecForName("UTF-16LE")->toUnicode(commitBytes).trimmed();
|
||||
#endif
|
||||
retStr.remove(QChar('\x00'));
|
||||
return retStr;
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "StringParser.h"
|
||||
#include <QTextDocument>
|
||||
#include <QLibraryInfo>
|
||||
#include <QTextCodec>
|
||||
#include <QByteArray>
|
||||
#include <QFileInfo>
|
||||
#include <QString>
|
||||
|
@ -49,12 +48,16 @@ QString StringParser::escapeString(const QString &toEscape)
|
|||
QString StringParser::convertBuildedString(const QString &buildedStr)
|
||||
{
|
||||
QString outputStr = buildedStr;
|
||||
QByteArray sharePath = GTA5SYNC_SHARE;
|
||||
outputStr.replace("APPNAME:", GTA5SYNC_APPSTR);
|
||||
outputStr.replace("SHAREDDIR:", QString::fromUtf8(sharePath));
|
||||
outputStr.replace("RUNDIR:", QFileInfo(qApp->applicationFilePath()).absoluteDir().absolutePath());
|
||||
outputStr.replace("APPNAME:", QString::fromUtf8(GTA5SYNC_APPSTR));
|
||||
outputStr.replace("SHAREDDIR:", QString::fromUtf8(GTA5SYNC_SHARE));
|
||||
outputStr.replace("RUNDIR:", QFileInfo(QApplication::applicationFilePath()).canonicalPath());
|
||||
#if QT_VERSION >= 0x060000
|
||||
outputStr.replace("QCONFLANG:", QLibraryInfo::path(QLibraryInfo::TranslationsPath));
|
||||
outputStr.replace("QCONFPLUG:", QLibraryInfo::path(QLibraryInfo::PluginsPath));
|
||||
#else
|
||||
outputStr.replace("QCONFLANG:", QLibraryInfo::location(QLibraryInfo::TranslationsPath));
|
||||
outputStr.replace("QCONFPLUG:", QLibraryInfo::location(QLibraryInfo::PluginsPath));
|
||||
#endif
|
||||
outputStr.replace("SEPARATOR:", QDir::separator());
|
||||
return outputStr;
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
#define GTA5SYNC_TELEMETRY_WEBURL ""
|
||||
#endif
|
||||
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#include "windows.h"
|
||||
#include "intrin.h"
|
||||
#include "d3d9.h"
|
||||
|
@ -228,7 +228,7 @@ QJsonDocument TelemetryClass::getSystemHardware()
|
|||
{
|
||||
QJsonDocument jsonDocument;
|
||||
QJsonObject jsonObject;
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
{
|
||||
int CPUInfo[4] = {-1};
|
||||
unsigned nExIds, ic = 0;
|
||||
|
|
|
@ -63,7 +63,11 @@ void TranslationClass::loadTranslation(QApplication *app)
|
|||
{
|
||||
app->installTranslator(&inQtTranslator);
|
||||
}
|
||||
#if QT_VERSION <= 0x060000
|
||||
QLocale::setDefault(QLocale(currentLanguage));
|
||||
#else
|
||||
QLocale::setDefault(currentLanguage);
|
||||
#endif
|
||||
isLangLoaded = true;
|
||||
return;
|
||||
}
|
||||
|
@ -147,7 +151,11 @@ void TranslationClass::loadTranslation(QApplication *app)
|
|||
{
|
||||
app->installTranslator(&inQtTranslator);
|
||||
}
|
||||
#if QT_VERSION <= 0x060000
|
||||
QLocale::setDefault(QLocale(currentLanguage));
|
||||
#else
|
||||
QLocale::setDefault(currentLanguage);
|
||||
#endif
|
||||
isLangLoaded = true;
|
||||
}
|
||||
}
|
||||
|
@ -176,7 +184,11 @@ void TranslationClass::loadTranslation(QApplication *app)
|
|||
{
|
||||
app->installTranslator(&inQtTranslator);
|
||||
}
|
||||
#if QT_VERSION <= 0x060000
|
||||
QLocale::setDefault(QLocale(currentLanguage));
|
||||
#else
|
||||
QLocale::setDefault(currentLanguage);
|
||||
#endif
|
||||
isLangLoaded = true;
|
||||
}
|
||||
else
|
||||
|
@ -195,7 +207,11 @@ void TranslationClass::loadTranslation(QApplication *app)
|
|||
{
|
||||
app->installTranslator(&inQtTranslator);
|
||||
}
|
||||
#if QT_VERSION <= 0x060000
|
||||
QLocale::setDefault(QLocale(currentLanguage));
|
||||
#else
|
||||
QLocale::setDefault(currentLanguage);
|
||||
#endif
|
||||
isLangLoaded = true;
|
||||
}
|
||||
}
|
||||
|
@ -219,7 +235,11 @@ void TranslationClass::loadTranslation(QApplication *app)
|
|||
{
|
||||
app->installTranslator(&inQtTranslator);
|
||||
}
|
||||
#if QT_VERSION <= 0x060000
|
||||
QLocale::setDefault(QLocale(currentLanguage));
|
||||
#else
|
||||
QLocale::setDefault(currentLanguage);
|
||||
#endif
|
||||
isLangLoaded = true;
|
||||
}
|
||||
else if (!trLoadSuccess)
|
||||
|
@ -236,7 +256,11 @@ void TranslationClass::loadTranslation(QApplication *app)
|
|||
{
|
||||
app->installTranslator(&inQtTranslator);
|
||||
}
|
||||
#if QT_VERSION <= 0x060000
|
||||
QLocale::setDefault(QLocale(currentLanguage));
|
||||
#else
|
||||
QLocale::setDefault(currentLanguage);
|
||||
#endif
|
||||
isLangLoaded = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 RDR 2 Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly);
|
||||
|
|
|
@ -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;
|
||||
|
|
10
config.h
10
config.h
|
@ -44,7 +44,7 @@
|
|||
#endif
|
||||
|
||||
#ifndef GTA5SYNC_APPVER
|
||||
#define GTA5SYNC_APPVER "0.3.0"
|
||||
#define GTA5SYNC_APPVER "0.4.0"
|
||||
#endif
|
||||
|
||||
#if __cplusplus
|
||||
|
@ -107,22 +107,16 @@
|
|||
#define GTA5SYNC_INLANG ":/tr"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#else
|
||||
#ifndef GTA5SYNC_SHARE
|
||||
#define GTA5SYNC_SHARE "RUNDIR:"
|
||||
#endif
|
||||
|
||||
#ifndef GTA5SYNC_LANG
|
||||
#define GTA5SYNC_LANG "SHAREDDIR:SEPARATOR:lang"
|
||||
#endif
|
||||
|
||||
#ifndef GTA5SYNC_PLUG
|
||||
#define GTA5SYNC_PLUG "RUNDIR:SEPARATOR:plugins"
|
||||
#endif
|
||||
|
||||
#ifdef GTA5SYNC_WINRT
|
||||
#undef GTA5SYNC_WIN
|
||||
#endif
|
||||
|
||||
#ifndef GTA5SYNC_COMPILER
|
||||
|
|
53
main.cpp
53
main.cpp
|
@ -31,7 +31,6 @@
|
|||
#include "IconLoader.h"
|
||||
#include "AppEnv.h"
|
||||
#include "config.h"
|
||||
#include <QDesktopWidget>
|
||||
#include <QStringBuilder>
|
||||
#include <QSignalMapper>
|
||||
#include <QStyleFactory>
|
||||
|
@ -54,11 +53,19 @@
|
|||
#include <QFont>
|
||||
#include <QFile>
|
||||
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#if QT_VERSION < 0x060000
|
||||
#include <QDesktopWidget>
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#include "windows.h"
|
||||
#include <iostream>
|
||||
#endif
|
||||
|
||||
#ifdef GTA5SYNC_MOTD
|
||||
#include "MessageThread.h"
|
||||
#endif
|
||||
|
||||
#ifdef GTA5SYNC_TELEMETRY
|
||||
#include "TelemetryClass.h"
|
||||
#endif
|
||||
|
@ -66,16 +73,16 @@
|
|||
int main(int argc, char *argv[])
|
||||
{
|
||||
#if QT_VERSION >= 0x050600
|
||||
#if QT_VERSION < 0x060000
|
||||
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true);
|
||||
QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true);
|
||||
#endif
|
||||
#endif
|
||||
QApplication a(argc, argv);
|
||||
a.setApplicationName(GTA5SYNC_APPSTR);
|
||||
a.setApplicationVersion(GTA5SYNC_APPVER);
|
||||
a.setQuitOnLastWindowClosed(false);
|
||||
|
||||
QResource::registerResource(":/global/global.rcc");
|
||||
|
||||
QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
settings.beginGroup("Startup");
|
||||
|
||||
|
@ -99,25 +106,12 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef GTA5SYNC_WIN
|
||||
#ifdef Q_OS_WIN
|
||||
#if QT_VERSION >= 0x050400
|
||||
bool alwaysUseMessageFont = settings.value("AlwaysUseMessageFont", false).toBool();
|
||||
if (QSysInfo::windowsVersion() >= 0x0080 || alwaysUseMessageFont)
|
||||
{
|
||||
// Get Windows Font
|
||||
NONCLIENTMETRICS ncm;
|
||||
ncm.cbSize = sizeof(ncm);
|
||||
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, 0);
|
||||
LOGFONTW uiFont = ncm.lfMessageFont;
|
||||
QString uiFontStr(QString::fromStdWString(std::wstring(uiFont.lfFaceName)));
|
||||
|
||||
#ifdef GTA5SYNC_DEBUG
|
||||
qDebug() << QApplication::tr("Font") << QApplication::tr("Selected Font: %1").arg(uiFontStr);
|
||||
#endif
|
||||
|
||||
// Set Application Font
|
||||
QFont appFont(uiFontStr, 9);
|
||||
a.setFont(appFont);
|
||||
a.setFont(QApplication::font("QMenu"));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
@ -260,9 +254,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); }
|
||||
|
@ -307,7 +299,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
|
||||
|
|
27
rdr2view.pro
27
rdr2view.pro
|
@ -16,7 +16,7 @@
|
|||
#* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#*****************************************************************************/
|
||||
|
||||
QT += core gui network svg
|
||||
QT += core gui network svg
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
greaterThan(QT_MAJOR_VERSION, 4): greaterThan(QT_MINOR_VERSION, 1): win32: QT += winextras
|
||||
|
@ -40,6 +40,7 @@ SOURCES += main.cpp \
|
|||
ImportDialog.cpp \
|
||||
JsonEditorDialog.cpp \
|
||||
MapLocationDialog.cpp \
|
||||
MessageThread.cpp \
|
||||
OptionsDialog.cpp \
|
||||
PictureDialog.cpp \
|
||||
PictureExport.cpp \
|
||||
|
@ -69,7 +70,7 @@ SOURCES += main.cpp \
|
|||
uimod/UiModLabel.cpp \
|
||||
uimod/UiModWidget.cpp
|
||||
|
||||
HEADERS += \
|
||||
HEADERS += \
|
||||
AboutDialog.h \
|
||||
AppEnv.h \
|
||||
CrewDatabase.h \
|
||||
|
@ -81,6 +82,7 @@ HEADERS += \
|
|||
ImportDialog.h \
|
||||
JsonEditorDialog.h \
|
||||
MapLocationDialog.h \
|
||||
MessageThread.h \
|
||||
OptionsDialog.h \
|
||||
PictureDialog.h \
|
||||
PictureExport.h \
|
||||
|
@ -112,7 +114,7 @@ HEADERS += \
|
|||
uimod/UiModLabel.h \
|
||||
uimod/UiModWidget.h
|
||||
|
||||
FORMS += \
|
||||
FORMS += \
|
||||
AboutDialog.ui \
|
||||
ExportDialog.ui \
|
||||
ImportDialog.ui \
|
||||
|
@ -160,8 +162,9 @@ INCLUDEPATH += ./anpro ./pcg ./tmext ./uimod
|
|||
|
||||
# GTA5SYNC/GTA5VIEW/RDR2VIEW ONLY
|
||||
|
||||
DEFINES += GTA5SYNC_PROJECT # Enable exclusive gta5sync/gta5view/rdr2view functions
|
||||
DEFINES += GTA5SYNC_NOASSIST # Not assisting at proper usage of SnapmaticPicture class
|
||||
DEFINES += GTA5SYNC_QMAKE # We using qmake do we?
|
||||
DEFINES += GTA5SYNC_PROJECT # Enable exclusive gta5sync/gta5view functions
|
||||
DEFINES += SNAPMATIC_NODEFAULT # Not assisting at proper usage of SnapmaticPicture class
|
||||
|
||||
# WINDOWS ONLY
|
||||
|
||||
|
@ -229,9 +232,21 @@ 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!")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,8 +7,8 @@ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "rdr2view.exe.manifest"
|
|||
#include <windows.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 0, 3, 0, 0
|
||||
PRODUCTVERSION 0, 3, 0, 0
|
||||
FILEVERSION 0, 4, 0, 0
|
||||
PRODUCTVERSION 0, 4, 0, 0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
FILEFLAGS 0
|
||||
FILEOS VOS_NT_WINDOWS32
|
||||
|
@ -25,12 +25,12 @@ BEGIN
|
|||
BEGIN
|
||||
VALUE "CompanyName", "Syping"
|
||||
VALUE "FileDescription", "rdr2view"
|
||||
VALUE "FileVersion", "0.3.0"
|
||||
VALUE "FileVersion", "0.4.0"
|
||||
VALUE "InternalName", "rdr2view"
|
||||
VALUE "LegalCopyright", "Copyright © 2016-2020 Syping"
|
||||
VALUE "OriginalFilename", "rdr2view.exe"
|
||||
VALUE "ProductName", "rdr2view"
|
||||
VALUE "ProductVersion", "0.3.0"
|
||||
VALUE "ProductVersion", "0.4.0"
|
||||
END
|
||||
END
|
||||
END
|
||||
|
|
450
res/gta5sync.ts
450
res/gta5sync.ts
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
/*****************************************************************************
|
||||
* gta5view Grand Theft Auto V Profile Viewer
|
||||
* Copyright (C) 2017 Syping
|
||||
* Copyright (C) 2017-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
|
||||
|
@ -17,7 +17,6 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include "JSHighlighter.h"
|
||||
#include <QRegExp>
|
||||
|
||||
JSHighlighter::JSHighlighter(QTextDocument *parent) :
|
||||
QSyntaxHighlighter(parent)
|
||||
|
@ -31,34 +30,61 @@ JSHighlighter::JSHighlighter(QTextDocument *parent) :
|
|||
keywordPatterns << "\\btrue\\b" << "\\bfalse\\b";
|
||||
for (QString pattern : keywordPatterns)
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
rule.pattern = QRegularExpression(pattern);
|
||||
#else
|
||||
rule.pattern = QRegExp(pattern);
|
||||
#endif
|
||||
rule.format = keywordFormat;
|
||||
highlightingRules.append(rule);
|
||||
}
|
||||
|
||||
QBrush doubleBrush(QColor::fromRgb(66, 137, 244));
|
||||
doubleFormat.setForeground(doubleBrush);
|
||||
#if QT_VERSION >= 0x050000
|
||||
rule.pattern = QRegularExpression("[+-]?\\d*\\.?\\d+");
|
||||
#else
|
||||
rule.pattern = QRegExp("[+-]?\\d*\\.?\\d+");
|
||||
#endif
|
||||
rule.format = doubleFormat;
|
||||
highlightingRules.append(rule);
|
||||
|
||||
QBrush quotationBrush(QColor::fromRgb(66, 244, 104));
|
||||
quotationFormat.setForeground(quotationBrush);
|
||||
#if QT_VERSION >= 0x050000
|
||||
rule.pattern = QRegularExpression("\"[^\"]*\"");
|
||||
#else
|
||||
rule.pattern = QRegExp("\"[^\"]*\"");
|
||||
#endif
|
||||
rule.format = quotationFormat;
|
||||
highlightingRules.append(rule);
|
||||
|
||||
QBrush objectBrush(QColor::fromRgb(255, 80, 80));
|
||||
objectFormat.setForeground(objectBrush);
|
||||
#if QT_VERSION >= 0x050000
|
||||
rule.pattern = QRegularExpression("\"[^\"]*\"(?=:)");
|
||||
#else
|
||||
rule.pattern = QRegExp("\"[^\"]*\"(?=:)");
|
||||
#endif
|
||||
rule.format = objectFormat;
|
||||
highlightingRules.append(rule);
|
||||
}
|
||||
|
||||
void JSHighlighter::highlightBlock(const QString &text)
|
||||
{
|
||||
for (HighlightingRule rule : highlightingRules)
|
||||
#if QT_VERSION >= 0x050000
|
||||
for (const HighlightingRule &rule : qAsConst(highlightingRules))
|
||||
#else
|
||||
for (const HighlightingRule &rule : highlightingRules)
|
||||
#endif
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text);
|
||||
while (matchIterator.hasNext()) {
|
||||
QRegularExpressionMatch match = matchIterator.next();
|
||||
setFormat(match.capturedStart(), match.capturedLength(), rule.format);
|
||||
}
|
||||
#else
|
||||
QRegExp expression(rule.pattern);
|
||||
int index = expression.indexIn(text);
|
||||
while (index >= 0)
|
||||
|
@ -67,6 +93,7 @@ void JSHighlighter::highlightBlock(const QString &text)
|
|||
setFormat(index, length, rule.format);
|
||||
index = expression.indexIn(text, index + length);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
setCurrentBlockState(0);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*****************************************************************************
|
||||
* gta5view Grand Theft Auto V Profile Viewer
|
||||
* Copyright (C) 2017 Syping
|
||||
* Copyright (C) 2017-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
|
||||
|
@ -24,10 +24,15 @@
|
|||
#include <QTextDocument>
|
||||
#include <QTextFormat>
|
||||
#include <QStringList>
|
||||
#include <QRegExp>
|
||||
#include <QVector>
|
||||
#include <QHash>
|
||||
|
||||
#if QT_VERSION >= 0x050000
|
||||
#include <QRegularExpression>
|
||||
#else
|
||||
#include <QRegExp>
|
||||
#endif
|
||||
|
||||
class QTextDocument;
|
||||
|
||||
class JSHighlighter : public QSyntaxHighlighter
|
||||
|
@ -37,7 +42,11 @@ class JSHighlighter : public QSyntaxHighlighter
|
|||
public:
|
||||
struct HighlightingRule
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
QRegularExpression pattern;
|
||||
#else
|
||||
QRegExp pattern;
|
||||
#endif
|
||||
QTextCharFormat format;
|
||||
};
|
||||
QVector<HighlightingRule> highlightingRules;
|
||||
|
|
|
@ -80,7 +80,11 @@ void UiModWidget::paintEvent(QPaintEvent *paintEvent)
|
|||
{
|
||||
Q_UNUSED(paintEvent)
|
||||
QStyleOption opt;
|
||||
#if QT_VERSION <= 0x060000
|
||||
opt.initFrom(this);
|
||||
#else
|
||||
opt.init(this);
|
||||
#endif
|
||||
QPainter p(this);
|
||||
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue