mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-11 16:44:48 -07:00
Rework "paths" settings loading and card database loading
* main.cpp: removed path checking and db loading * card database: merge card loading methods into a single one * settings cache: take care of returning safe paths for decks, replays, etc.. * main window: if db loading fails (eg. first run), propose to run oracle NSIS: propose to run cockatrice instead of oracle Rework card database loading * Move carddatabase-related method out of deckeditor tab * Load cards in another thread and render them progressively * Optimize database reload after enabled sets change Fix deck editor column width * removed the noCard hack. * getCard() no more creates cards instead of just returning existing ones * Fix the “edit tokens” dialog. * PictureLoader: avoid trying to download twice the same card * PictureLoader: correct return of card background * AbstractCardItem: avoid recalculating card color at every paint Use a different file to save custom tokens Misc required improvements * Use nullptr; * Refactor CardInfoWidget to use CardInfoPicture and CardInfoText instead of duplicating code; * Added CardInfo::getColorChar() * Fixed some potential crashes * removed dead code related to CardInfoWidget * Don't require a restart after adding a new custom sets file * Bump CMake requirements to 3.1
This commit is contained in:
parent
0b8f52e084
commit
1e3fb6c6e1
41 changed files with 855 additions and 1074 deletions
|
|
@ -27,7 +27,6 @@
|
|||
#include <QLibraryInfo>
|
||||
#include <QDateTime>
|
||||
#include <QDir>
|
||||
#include <QDesktopServices>
|
||||
#include <QDebug>
|
||||
#include <QSystemTrayIcon>
|
||||
#include "QtNetwork/QNetworkInterface"
|
||||
|
|
@ -86,14 +85,6 @@ void installNewTranslator()
|
|||
qApp->installTranslator(translator);
|
||||
}
|
||||
|
||||
bool settingsValid()
|
||||
{
|
||||
return QDir(settingsCache->getDeckPath()).exists() &&
|
||||
!settingsCache->getDeckPath().isEmpty() &&
|
||||
QDir(settingsCache->getPicsPath()).exists() &&
|
||||
!settingsCache->getPicsPath().isEmpty();
|
||||
}
|
||||
|
||||
QString const generateClientID()
|
||||
{
|
||||
QString macList;
|
||||
|
|
@ -156,73 +147,21 @@ int main(int argc, char *argv[])
|
|||
|
||||
qsrand(QDateTime::currentDateTime().toTime_t());
|
||||
|
||||
#ifdef PORTABLE_BUILD
|
||||
const QString dataDir = "data/";
|
||||
#elif QT_VERSION < 0x050000
|
||||
const QString dataDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
|
||||
#else
|
||||
const QString dataDir = QStandardPaths::standardLocations(QStandardPaths::DataLocation).first();
|
||||
#endif
|
||||
qDebug("main(): starting main program");
|
||||
|
||||
if (settingsCache->getCardDatabasePath().isEmpty() ||
|
||||
db->loadCardDatabase() != Ok)
|
||||
settingsCache->setCardDatabasePath(dataDir + "/cards.xml");
|
||||
MainWindow ui;
|
||||
qDebug("main(): MainWindow constructor finished");
|
||||
|
||||
if (settingsCache->getTokenDatabasePath().isEmpty() ||
|
||||
db->loadTokenDatabase() != Ok)
|
||||
settingsCache->setTokenDatabasePath(dataDir + "/tokens.xml");
|
||||
ui.setWindowIcon(QPixmap("theme:cockatrice"));
|
||||
|
||||
settingsCache->setClientID(generateClientID());
|
||||
|
||||
if (!QDir(settingsCache->getDeckPath()).exists() || settingsCache->getDeckPath().isEmpty()) {
|
||||
QDir().mkpath(dataDir + "/decks");
|
||||
settingsCache->setDeckPath(dataDir + "/decks");
|
||||
}
|
||||
if (!QDir(settingsCache->getReplaysPath()).exists() || settingsCache->getReplaysPath().isEmpty()) {
|
||||
QDir().mkpath(dataDir + "/replays");
|
||||
settingsCache->setReplaysPath(dataDir + "/replays");
|
||||
}
|
||||
if (!QDir(settingsCache->getPicsPath()).exists() || settingsCache->getPicsPath().isEmpty()) {
|
||||
QDir().mkpath(dataDir + "/pics");
|
||||
settingsCache->setPicsPath(dataDir + "/pics");
|
||||
}
|
||||
if (!QDir().mkpath(settingsCache->getPicsPath() + "/CUSTOM"))
|
||||
qDebug() << "Could not create " + settingsCache->getPicsPath().toUtf8() + "/CUSTOM. Will fall back on default card images.";
|
||||
|
||||
if (!settingsValid() || db->getLoadStatus() != Ok) {
|
||||
qDebug("main(): invalid settings or load status");
|
||||
DlgSettings dlgSettings;
|
||||
dlgSettings.show();
|
||||
app.exec();
|
||||
}
|
||||
|
||||
// load custom databased after LoadStatus check, so that they don't bring up the settings dialog
|
||||
if (QDir().mkpath(dataDir + "/customsets"))
|
||||
{
|
||||
// if the dir exists (or has just been created)
|
||||
db->loadCustomCardDatabases(dataDir + "/customsets");
|
||||
} else {
|
||||
qDebug() << "Could not create " + dataDir + "/customsets folder.";
|
||||
}
|
||||
|
||||
// when all the cards have been loaded, resolve the reverse-related tags
|
||||
db->refreshCachedReverseRelatedCards();
|
||||
|
||||
if (settingsValid()) {
|
||||
qDebug("main(): starting main program");
|
||||
|
||||
MainWindow ui;
|
||||
qDebug("main(): MainWindow constructor finished");
|
||||
|
||||
ui.setWindowIcon(QPixmap("theme:cockatrice"));
|
||||
|
||||
settingsCache->setClientID(generateClientID());
|
||||
|
||||
ui.show();
|
||||
qDebug("main(): ui.show() finished");
|
||||
ui.show();
|
||||
qDebug("main(): ui.show() finished");
|
||||
#if QT_VERSION > 0x050000
|
||||
app.setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||
app.setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||
#endif
|
||||
app.exec();
|
||||
}
|
||||
app.exec();
|
||||
|
||||
qDebug("Event loop finished, terminating...");
|
||||
delete db;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue