showing name of crew and created date of picture
This commit is contained in:
parent
5fcc69f5d6
commit
50866075b5
14 changed files with 140 additions and 21 deletions
|
@ -110,6 +110,11 @@ QByteArray AppEnv::getUserAgent()
|
|||
return QString("Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0 gta5sync/1.0").toUtf8();
|
||||
}
|
||||
|
||||
QUrl AppEnv::getCrewFetchingUrl(QString crewID)
|
||||
{
|
||||
return QUrl(QString("https://socialclub.rockstargames.com/reference/crewfeed/%1").arg(crewID));
|
||||
}
|
||||
|
||||
QUrl AppEnv::getPlayerFetchingUrl(QString crewID, QString pageNumber)
|
||||
{
|
||||
return QUrl(QString("https://socialclub.rockstargames.com/crewsapi/GetMembersList?crewId=%1&pageNumber=%2").arg(crewID, pageNumber));
|
||||
|
|
1
AppEnv.h
1
AppEnv.h
|
@ -35,6 +35,7 @@ public:
|
|||
|
||||
// Web Stuff
|
||||
static QByteArray getUserAgent();
|
||||
static QUrl getCrewFetchingUrl(QString crewID);
|
||||
static QUrl getPlayerFetchingUrl(QString crewID, QString pageNumber);
|
||||
};
|
||||
|
||||
|
|
|
@ -47,10 +47,35 @@ CrewDatabase::~CrewDatabase()
|
|||
|
||||
QStringList CrewDatabase::getCrews()
|
||||
{
|
||||
return crewDB->childKeys();
|
||||
QStringList compatibleCrewList = crewDB->childKeys();
|
||||
crewDB->endGroup();
|
||||
crewDB->beginGroup("CrewList");
|
||||
QStringList crewIDs = crewDB->value("IDs", QStringList()).toStringList();
|
||||
crewIDs.append(compatibleCrewList);
|
||||
crewIDs.removeDuplicates();
|
||||
crewDB->endGroup();
|
||||
crewDB->beginGroup("Crews");
|
||||
return crewIDs;
|
||||
}
|
||||
|
||||
QString CrewDatabase::getCrewName(int crewID)
|
||||
{
|
||||
return crewDB->value(QString::number(crewID), crewID).toString();
|
||||
}
|
||||
|
||||
void CrewDatabase::setCrewName(int crewID, QString crewName)
|
||||
{
|
||||
crewDB->setValue(QString::number(crewID), crewName);
|
||||
}
|
||||
|
||||
void CrewDatabase::addCrew(int crewID)
|
||||
{
|
||||
crewDB->setValue(QString::number(crewID), crewID);
|
||||
QStringList crews = getCrews();
|
||||
crews.append(QString::number(crewID));
|
||||
crews.removeDuplicates();
|
||||
crewDB->endGroup();
|
||||
crewDB->beginGroup("CrewList");
|
||||
crewDB->setValue("IDs", crews);
|
||||
crewDB->endGroup();
|
||||
crewDB->beginGroup("Crews");
|
||||
}
|
||||
|
|
|
@ -28,6 +28,8 @@ class CrewDatabase : public QObject
|
|||
Q_OBJECT
|
||||
public:
|
||||
explicit CrewDatabase(QObject *parent = 0);
|
||||
void setCrewName(int crewID, QString crewName);
|
||||
QString getCrewName(int crewID);
|
||||
QStringList getCrews();
|
||||
~CrewDatabase();
|
||||
|
||||
|
|
|
@ -45,11 +45,13 @@ void DatabaseThread::run()
|
|||
// Quick time scan
|
||||
if (crewList.length() <= 3)
|
||||
{
|
||||
scanCrewReference(crewList, 2500);
|
||||
scanCrewMembersList(crewList, 3, 2500);
|
||||
emit playerNameUpdated();
|
||||
}
|
||||
else if (crewList.length() <= 5)
|
||||
{
|
||||
scanCrewReference(crewList, 2500);
|
||||
scanCrewMembersList(crewList, 2, 2500);
|
||||
emit playerNameUpdated();
|
||||
}
|
||||
|
@ -64,6 +66,7 @@ void DatabaseThread::run()
|
|||
crewList = crewDB->getCrews();
|
||||
|
||||
// Long time scan
|
||||
scanCrewReference(crewList, 10000);
|
||||
scanCrewMembersList(crewList, crewMaxPages, 10000);
|
||||
emit playerNameUpdated();
|
||||
|
||||
|
@ -72,6 +75,80 @@ void DatabaseThread::run()
|
|||
}
|
||||
}
|
||||
|
||||
void DatabaseThread::scanCrewReference(QStringList crewList, int requestDelay)
|
||||
{
|
||||
foreach (const QString &crewID, crewList)
|
||||
{
|
||||
if (crewID != "0")
|
||||
{
|
||||
QNetworkAccessManager *netManager = new QNetworkAccessManager();
|
||||
|
||||
QNetworkRequest netRequest(AppEnv::getCrewFetchingUrl(crewID));
|
||||
netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent());
|
||||
netRequest.setRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
|
||||
netRequest.setRawHeader("Accept-Language", "en-US;q=0.5,en;q=0.3");
|
||||
netRequest.setRawHeader("Connection", "keep-alive");
|
||||
|
||||
QNetworkReply *netReply = netManager->get(netRequest);
|
||||
|
||||
QEventLoop *downloadLoop = new QEventLoop();
|
||||
QObject::connect(netReply, SIGNAL(finished()), downloadLoop, SLOT(quit()));
|
||||
QTimer::singleShot(30000, downloadLoop, SLOT(quit()));
|
||||
downloadLoop->exec();
|
||||
delete downloadLoop;
|
||||
|
||||
if (netReply->isFinished())
|
||||
{
|
||||
QByteArray crewJson = netReply->readAll();
|
||||
QJsonDocument crewDocument = QJsonDocument::fromJson(crewJson);
|
||||
QJsonObject crewObject = crewDocument.object();
|
||||
QVariantMap crewMap = crewObject.toVariantMap();
|
||||
QString crewName;
|
||||
bool isFound = false;
|
||||
|
||||
if (crewMap.contains("activities"))
|
||||
{
|
||||
QList<QVariant> activitiesList = crewMap["activities"].toList();
|
||||
foreach (const QVariant &activitiesVariant, activitiesList)
|
||||
{
|
||||
QMap<QString, QVariant> activityRootMap = activitiesVariant.toMap();
|
||||
foreach(const QVariant &activityRootVariant, activityRootMap)
|
||||
{
|
||||
QMap<QString, QVariant> activityMap = activityRootVariant.toMap();
|
||||
foreach(const QVariant &activityVariant, activityMap)
|
||||
{
|
||||
QMap<QString, QVariant> activityFinalMap = activityVariant.toMap();
|
||||
if (activityFinalMap.contains("id") && activityFinalMap["id"] == crewID)
|
||||
{
|
||||
if (activityFinalMap.contains("name") && isFound == false)
|
||||
{
|
||||
isFound = true;
|
||||
crewName = activityFinalMap["name"].toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!crewName.isNull())
|
||||
{
|
||||
crewDB->setCrewName(crewID.toInt(), crewName);
|
||||
}
|
||||
}
|
||||
|
||||
QEventLoop *waitingLoop = new QEventLoop();
|
||||
QTimer::singleShot(requestDelay, waitingLoop, SLOT(quit()));
|
||||
waitingLoop->exec();
|
||||
delete waitingLoop;
|
||||
|
||||
netReply->deleteLater();
|
||||
delete netReply;
|
||||
netManager->deleteLater();
|
||||
delete netManager;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DatabaseThread::scanCrewMembersList(QStringList crewList, int maxPages, int requestDelay)
|
||||
{
|
||||
foreach (const QString &crewID, crewList)
|
||||
|
|
|
@ -32,6 +32,7 @@ public:
|
|||
private:
|
||||
CrewDatabase *crewDB;
|
||||
void scanCrewMembersList(QStringList crewList, int maxPages, int requestDelay);
|
||||
void scanCrewReference(QStringList crewList, int requestDelay);
|
||||
bool threadRunning;
|
||||
int crewMaxPages;
|
||||
int plyrPerReq;
|
||||
|
|
|
@ -44,8 +44,8 @@
|
|||
#include <QUrl>
|
||||
#include <QDir>
|
||||
|
||||
PictureDialog::PictureDialog(ProfileDatabase *profileDB, QWidget *parent) :
|
||||
QDialog(parent), profileDB(profileDB),
|
||||
PictureDialog::PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent) :
|
||||
QDialog(parent), profileDB(profileDB), crewDB(crewDB),
|
||||
ui(new Ui::PictureDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
@ -59,6 +59,7 @@ PictureDialog::PictureDialog(ProfileDatabase *profileDB, QWidget *parent) :
|
|||
picArea = "";
|
||||
picTitl = "";
|
||||
picPath = "";
|
||||
created = "";
|
||||
crewID = "";
|
||||
locX = "";
|
||||
locY = "";
|
||||
|
@ -178,7 +179,8 @@ void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, QString pictu
|
|||
locX = QString::number(picture->getLocationX());
|
||||
locY = QString::number(picture->getLocationY());
|
||||
locZ = QString::number(picture->getLocationZ());
|
||||
crewID = QString::number(picture->getCrewNumber());
|
||||
crewID = crewDB->getCrewName(picture->getCrewNumber());
|
||||
created = picture->getCreatedDateTime().toString(Qt::DefaultLocaleShortDate);
|
||||
plyrsList = picture->getPlayers();
|
||||
picTitl = picture->getPictureTitl();
|
||||
picArea = picture->getArea();
|
||||
|
@ -214,8 +216,8 @@ void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, QString pictu
|
|||
|
||||
if (crewID == "") { crewID = tr("No crew"); }
|
||||
|
||||
this->setWindowTitle(windowTitleStr.arg(picture->getCreatedDateTime().toString(Qt::DefaultLocaleLongDate)));
|
||||
ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, plyrsStr, crewID, picTitl, picAreaStr));
|
||||
this->setWindowTitle(windowTitleStr.arg(picture->getPictureStr()));
|
||||
ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, plyrsStr, crewID, picTitl, picAreaStr, created));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -279,7 +281,7 @@ void PictureDialog::playerNameUpdated()
|
|||
plyrsStr.append("</a>");
|
||||
}
|
||||
plyrsStr.remove(0,2);
|
||||
ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, plyrsStr, crewID, picTitl, picAreaStr));
|
||||
ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, plyrsStr, crewID, picTitl, picAreaStr, created));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include "SnapmaticPicture.h"
|
||||
#include "ProfileDatabase.h"
|
||||
#include "CrewDatabase.h"
|
||||
#include <QMouseEvent>
|
||||
#include <QDialog>
|
||||
#include <QEvent>
|
||||
|
@ -34,7 +35,7 @@ class PictureDialog : public QDialog
|
|||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit PictureDialog(ProfileDatabase *profileDB, QWidget *parent = 0);
|
||||
explicit PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent = 0);
|
||||
void setSnapmaticPicture(SnapmaticPicture *picture, QString picPath, bool readOk, bool indexed, int index);
|
||||
void setSnapmaticPicture(SnapmaticPicture *picture, QString picPath, bool readOk);
|
||||
void setSnapmaticPicture(SnapmaticPicture *picture, QString picPath);
|
||||
|
@ -71,6 +72,7 @@ protected:
|
|||
|
||||
private:
|
||||
ProfileDatabase *profileDB;
|
||||
CrewDatabase *crewDB;
|
||||
Ui::PictureDialog *ui;
|
||||
QMap<QString, QString> globalMap;
|
||||
SnapmaticPicture *smpic;
|
||||
|
@ -85,6 +87,7 @@ private:
|
|||
QString picArea;
|
||||
QString picTitl;
|
||||
QString picPath;
|
||||
QString created;
|
||||
QString crewID;
|
||||
QString locX;
|
||||
QString locY;
|
||||
|
|
|
@ -80,8 +80,8 @@
|
|||
<property name="text">
|
||||
<string><span style=" font-weight:600;">Title: </span>%6<br/>
|
||||
<span style=" font-weight:600;">Location: </span>%7 (%1, %2, %3)<br/>
|
||||
<span style=" font-weight:600;">Players: </span>%4<br/>
|
||||
<span style=" font-weight:600;">Crew ID: </span>%5</string>
|
||||
<span style=" font-weight:600;">Players: </span>%4 (Crew %5)<br/>
|
||||
<span style=" font-weight:600;">Created: </span>%8<br/></string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
|
|
|
@ -136,7 +136,7 @@ void ProfileInterface::pictureLoaded(SnapmaticPicture *picture, QString pictureP
|
|||
|
||||
void ProfileInterface::pictureLoaded_f(SnapmaticPicture *picture, QString picturePath, bool inserted)
|
||||
{
|
||||
SnapmaticWidget *picWidget = new SnapmaticWidget(profileDB, threadDB);
|
||||
SnapmaticWidget *picWidget = new SnapmaticWidget(profileDB, crewDB, threadDB);
|
||||
picWidget->setSnapmaticPicture(picture, picturePath);
|
||||
picWidget->setContentMode(contentMode);
|
||||
widgets[picWidget] = "PIC" + picture->getPictureSortStr();
|
||||
|
|
|
@ -30,8 +30,8 @@
|
|||
#include <QMenu>
|
||||
#include <QFile>
|
||||
|
||||
SnapmaticWidget::SnapmaticWidget(ProfileDatabase *profileDB, DatabaseThread *threadDB, QWidget *parent) :
|
||||
ProfileWidget(parent), profileDB(profileDB), threadDB(threadDB),
|
||||
SnapmaticWidget::SnapmaticWidget(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent) :
|
||||
ProfileWidget(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB),
|
||||
ui(new Ui::SnapmaticWidget)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
@ -95,7 +95,7 @@ void SnapmaticWidget::setSnapmaticPicture(SnapmaticPicture *picture)
|
|||
|
||||
void SnapmaticWidget::on_cmdView_clicked()
|
||||
{
|
||||
PictureDialog *picDialog = new PictureDialog(profileDB, this);
|
||||
PictureDialog *picDialog = new PictureDialog(profileDB, crewDB, this);
|
||||
picDialog->setWindowFlags(picDialog->windowFlags()^Qt::WindowContextHelpButtonHint);
|
||||
picDialog->setSnapmaticPicture(smpic, picPath, true);
|
||||
picDialog->setModal(true);
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "ProfileDatabase.h"
|
||||
#include "DatabaseThread.h"
|
||||
#include "ProfileWidget.h"
|
||||
#include "CrewDatabase.h"
|
||||
#include <QContextMenuEvent>
|
||||
#include <QMouseEvent>
|
||||
#include <QWidget>
|
||||
|
@ -38,7 +39,7 @@ class SnapmaticWidget : public ProfileWidget
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SnapmaticWidget(ProfileDatabase *profileDB, DatabaseThread *threadDB, QWidget *parent = 0);
|
||||
SnapmaticWidget(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent = 0);
|
||||
void setSnapmaticPicture(SnapmaticPicture *picture, QString picturePath);
|
||||
void setSnapmaticPicture(SnapmaticPicture *picture);
|
||||
void setSelectionMode(bool selectionMode);
|
||||
|
@ -69,6 +70,7 @@ protected:
|
|||
|
||||
private:
|
||||
ProfileDatabase *profileDB;
|
||||
CrewDatabase *crewDB;
|
||||
DatabaseThread *threadDB;
|
||||
Ui::SnapmaticWidget *ui;
|
||||
SnapmaticPicture *smpic;
|
||||
|
|
|
@ -406,7 +406,7 @@ bool UserInterface::openFile(QString selectedFile, bool warn)
|
|||
|
||||
void UserInterface::openSnapmaticFile(SnapmaticPicture *picture)
|
||||
{
|
||||
PictureDialog *picDialog = new PictureDialog(profileDB, this);
|
||||
PictureDialog *picDialog = new PictureDialog(profileDB, crewDB, this);
|
||||
picDialog->setWindowFlags(picDialog->windowFlags()^Qt::WindowContextHelpButtonHint);
|
||||
picDialog->setSnapmaticPicture(picture, true);
|
||||
picDialog->setModal(true);
|
||||
|
|
9
main.cpp
9
main.cpp
|
@ -252,6 +252,10 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (language == "en" || language == "English")
|
||||
{
|
||||
QLocale::setDefault(QLocale(QLocale::English, QLocale::AnyCountry));
|
||||
}
|
||||
else
|
||||
{
|
||||
QString languageName = language;
|
||||
|
@ -360,9 +364,6 @@ int main(int argc, char *argv[])
|
|||
#endif
|
||||
// End internal translate loading
|
||||
|
||||
QLocale locale;
|
||||
qDebug() << locale.nativeLanguageName();
|
||||
|
||||
QStringList applicationArgs = a.arguments();
|
||||
QString selectedAction;
|
||||
QString arg1;
|
||||
|
@ -416,7 +417,7 @@ int main(int argc, char *argv[])
|
|||
CrewDatabase *crewDB = new CrewDatabase();
|
||||
ProfileDatabase *profileDB = new ProfileDatabase();
|
||||
DatabaseThread *threadDB = new DatabaseThread(crewDB);
|
||||
PictureDialog *picDialog = new PictureDialog(profileDB);
|
||||
PictureDialog *picDialog = new PictureDialog(profileDB, crewDB);
|
||||
SnapmaticPicture picture;
|
||||
|
||||
bool readOk = picture.readingPictureFromFile(arg1);
|
||||
|
|
Loading…
Reference in a new issue