better and more efficient uid generation
This commit is contained in:
parent
c7ec038e26
commit
291236ff2c
2 changed files with 28 additions and 22 deletions
|
@ -56,6 +56,8 @@
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|
||||||
|
#include <random>
|
||||||
|
|
||||||
#define importTimeFormat "HHmmss"
|
#define importTimeFormat "HHmmss"
|
||||||
#define findRetryLimit 500
|
#define findRetryLimit 500
|
||||||
|
|
||||||
|
@ -496,8 +498,7 @@ fileDialogPreOpen: //Work?
|
||||||
{
|
{
|
||||||
QString selectedFile = selectedFiles.at(0);
|
QString selectedFile = selectedFiles.at(0);
|
||||||
QDateTime importDateTime = QDateTime::currentDateTime();
|
QDateTime importDateTime = QDateTime::currentDateTime();
|
||||||
int currentTime = importDateTime.toString(importTimeFormat).toInt();
|
if (!importFile(selectedFile, importDateTime, true)) goto fileDialogPreOpen; //Work?
|
||||||
if (!importFile(selectedFile, importDateTime, ¤tTime, true)) goto fileDialogPreOpen; //Work?
|
|
||||||
}
|
}
|
||||||
else if (selectedFiles.length() > 1)
|
else if (selectedFiles.length() > 1)
|
||||||
{
|
{
|
||||||
|
@ -540,14 +541,13 @@ void ProfileInterface::importFilesProgress(QStringList selectedFiles)
|
||||||
|
|
||||||
// THREADING HERE PLEASE
|
// THREADING HERE PLEASE
|
||||||
QDateTime importDateTime = QDateTime::currentDateTime();
|
QDateTime importDateTime = QDateTime::currentDateTime();
|
||||||
int currentTime = importDateTime.time().toString(importTimeFormat).toInt();
|
|
||||||
for (QString selectedFile : selectedFiles)
|
for (QString selectedFile : selectedFiles)
|
||||||
{
|
{
|
||||||
overallId++;
|
overallId++;
|
||||||
pbDialog.setValue(overallId);
|
pbDialog.setValue(overallId);
|
||||||
pbDialog.setLabelText(tr("Import file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId)));
|
pbDialog.setLabelText(tr("Import file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId)));
|
||||||
importDateTime = QDateTime::currentDateTime();
|
importDateTime = QDateTime::currentDateTime();
|
||||||
if (!importFile(selectedFile, importDateTime, ¤tTime, false))
|
if (!importFile(selectedFile, importDateTime, false))
|
||||||
{
|
{
|
||||||
failed << QFileInfo(selectedFile).fileName();
|
failed << QFileInfo(selectedFile).fileName();
|
||||||
}
|
}
|
||||||
|
@ -565,12 +565,12 @@ void ProfileInterface::importFilesProgress(QStringList selectedFiles)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime, int *currentTime, bool notMultiple)
|
bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime, bool notMultiple)
|
||||||
{
|
{
|
||||||
QString selectedFileName = QFileInfo(selectedFile).fileName();
|
QString selectedFileName = QFileInfo(selectedFile).fileName();
|
||||||
if (QFile::exists(selectedFile))
|
if (QFile::exists(selectedFile))
|
||||||
{
|
{
|
||||||
if (selectedFileName.left(4) == "PGTA" || selectedFileName.right(4) == ".g5e")
|
if ((selectedFileName.left(4) == "PGTA" && !selectedFileName.contains('.')) || selectedFileName.right(4) == ".g5e")
|
||||||
{
|
{
|
||||||
SnapmaticPicture *picture = new SnapmaticPicture(selectedFile);
|
SnapmaticPicture *picture = new SnapmaticPicture(selectedFile);
|
||||||
if (picture->readingPicture(true, true, true))
|
if (picture->readingPicture(true, true, true))
|
||||||
|
@ -673,17 +673,16 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
SnapmaticProperties spJson = picture->getSnapmaticProperties();
|
SnapmaticProperties spJson = picture->getSnapmaticProperties();
|
||||||
spJson.uid = QString(QString::number(*currentTime) %
|
spJson.uid = getRandomUid();
|
||||||
QString::number(importDateTime.date().dayOfYear())).toInt();
|
|
||||||
bool fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
|
bool fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
|
||||||
|
bool fExistsBackup = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".bak");
|
||||||
bool fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
|
bool fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
|
||||||
int cEnough = 0;
|
int cEnough = 0;
|
||||||
while ((fExists || fExistsHidden) && cEnough < findRetryLimit)
|
while ((fExists || fExistsBackup || fExistsHidden) && cEnough < findRetryLimit)
|
||||||
{
|
{
|
||||||
*currentTime = *currentTime - 1;
|
spJson.uid = getRandomUid();
|
||||||
spJson.uid = QString(QString::number(*currentTime) %
|
|
||||||
QString::number(importDateTime.date().dayOfYear())).toInt();
|
|
||||||
fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
|
fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
|
||||||
|
fExistsBackup = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".bak");
|
||||||
fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
|
fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
|
||||||
cEnough++;
|
cEnough++;
|
||||||
}
|
}
|
||||||
|
@ -728,17 +727,16 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime
|
||||||
if (picture->setImage(importDialog->image()))
|
if (picture->setImage(importDialog->image()))
|
||||||
{
|
{
|
||||||
SnapmaticProperties spJson = picture->getSnapmaticProperties();
|
SnapmaticProperties spJson = picture->getSnapmaticProperties();
|
||||||
spJson.uid = QString(QString::number(*currentTime) %
|
spJson.uid = getRandomUid();
|
||||||
QString::number(importDateTime.date().dayOfYear())).toInt();
|
|
||||||
bool fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
|
bool fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
|
||||||
|
bool fExistsBackup = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".bak");
|
||||||
bool fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
|
bool fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
|
||||||
int cEnough = 0;
|
int cEnough = 0;
|
||||||
while ((fExists || fExistsHidden) && cEnough < findRetryLimit)
|
while ((fExists || fExistsBackup || fExistsHidden) && cEnough < findRetryLimit)
|
||||||
{
|
{
|
||||||
*currentTime = *currentTime - 1;
|
spJson.uid = getRandomUid();
|
||||||
spJson.uid = QString(QString::number(*currentTime) %
|
|
||||||
QString::number(importDateTime.date().dayOfYear())).toInt();
|
|
||||||
fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
|
fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
|
||||||
|
fExistsBackup = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".bak");
|
||||||
fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
|
fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
|
||||||
cEnough++;
|
cEnough++;
|
||||||
}
|
}
|
||||||
|
@ -1337,8 +1335,7 @@ void ProfileInterface::on_saProfileContent_dropped(const QMimeData *mimeData)
|
||||||
{
|
{
|
||||||
QString selectedFile = pathList.at(0);
|
QString selectedFile = pathList.at(0);
|
||||||
QDateTime importDateTime = QDateTime::currentDateTime();
|
QDateTime importDateTime = QDateTime::currentDateTime();
|
||||||
int currentTime = importDateTime.toString(importTimeFormat).toInt();
|
importFile(selectedFile, QDateTime::currentDateTime(), true);
|
||||||
importFile(selectedFile, QDateTime::currentDateTime(), ¤tTime, true);
|
|
||||||
}
|
}
|
||||||
else if (pathList.length() > 1)
|
else if (pathList.length() > 1)
|
||||||
{
|
{
|
||||||
|
@ -1945,3 +1942,11 @@ preSelectionTitle:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ProfileInterface::getRandomUid()
|
||||||
|
{
|
||||||
|
std::mt19937 rng;
|
||||||
|
rng.seed(std::random_device()());
|
||||||
|
std::uniform_int_distribution<std::mt19937::result_type> uiddist(10000000, 2147483647);
|
||||||
|
return uiddist(rng);
|
||||||
|
}
|
||||||
|
|
|
@ -113,7 +113,7 @@ private:
|
||||||
int contentMode;
|
int contentMode;
|
||||||
|
|
||||||
bool isSupportedImageFile(QString selectedFileName);
|
bool isSupportedImageFile(QString selectedFileName);
|
||||||
bool importFile(QString selectedFile, QDateTime importDateTime, int *currentTime, bool notMultiple);
|
bool importFile(QString selectedFile, QDateTime importDateTime, bool notMultiple);
|
||||||
void importFilesProgress(QStringList selectedFiles);
|
void importFilesProgress(QStringList selectedFiles);
|
||||||
bool importSnapmaticPicture(SnapmaticPicture *picture, bool warn = true);
|
bool importSnapmaticPicture(SnapmaticPicture *picture, bool warn = true);
|
||||||
bool importSavegameData(SavegameData *savegame, QString sgdPath, bool warn = true);
|
bool importSavegameData(SavegameData *savegame, QString sgdPath, bool warn = true);
|
||||||
|
@ -124,6 +124,7 @@ private:
|
||||||
void insertSnapmaticIPI(QWidget *widget);
|
void insertSnapmaticIPI(QWidget *widget);
|
||||||
void insertSavegameIPI(QWidget *widget);
|
void insertSavegameIPI(QWidget *widget);
|
||||||
void sortingProfileInterface();
|
void sortingProfileInterface();
|
||||||
|
static int getRandomUid();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void profileLoaded();
|
void profileLoaded();
|
||||||
|
|
Loading…
Reference in a new issue