diff --git a/cockatrice/src/client/ui/window_main.cpp b/cockatrice/src/client/ui/window_main.cpp index 121f61285..b30f5556d 100644 --- a/cockatrice/src/client/ui/window_main.cpp +++ b/cockatrice/src/client/ui/window_main.cpp @@ -883,6 +883,7 @@ void MainWindow::startupConfigCheck() // no config found, 99% new clean install qDebug() << "Startup: old client version empty, assuming first start after clean install"; alertForcedOracleRun(VERSION_STRING, false); + SettingsCache::instance().downloads().resetToDefaultURLs(); // populate the download urls SettingsCache::instance().setClientVersion(VERSION_STRING); } else if (SettingsCache::instance().getClientVersion() != VERSION_STRING) { // config found, from another (presumably older) version diff --git a/cockatrice/src/dialogs/dlg_settings.cpp b/cockatrice/src/dialogs/dlg_settings.cpp index 236a7eeb5..9451bb543 100644 --- a/cockatrice/src/dialogs/dlg_settings.cpp +++ b/cockatrice/src/dialogs/dlg_settings.cpp @@ -588,8 +588,7 @@ DeckEditorSettingsPage::DeckEditorSettingsPage() connect(urlList->model(), SIGNAL(rowsMoved(const QModelIndex, int, int, const QModelIndex, int)), this, SLOT(urlListChanged(const QModelIndex, int, int, const QModelIndex, int))); - for (int i = 0; i < SettingsCache::instance().downloads().getCount(); i++) - urlList->addItem(SettingsCache::instance().downloads().getDownloadUrlAt(i)); + urlList->addItems(SettingsCache::instance().downloads().getAllURLs()); auto aAdd = new QAction(this); aAdd->setIcon(QPixmap("theme:icons/increment")); @@ -694,7 +693,7 @@ DeckEditorSettingsPage::DeckEditorSettingsPage() void DeckEditorSettingsPage::resetDownloadedURLsButtonClicked() { - SettingsCache::instance().downloads().clear(); + SettingsCache::instance().downloads().resetToDefaultURLs(); urlList->clear(); urlList->addItems(SettingsCache::instance().downloads().getAllURLs()); QMessageBox::information(this, tr("Success"), tr("Download URLs have been reset.")); @@ -774,11 +773,13 @@ void DeckEditorSettingsPage::actEditURL() void DeckEditorSettingsPage::storeSettings() { qInfo() << "URL Priority Reset"; - SettingsCache::instance().downloads().clear(); + + QStringList downloadUrls; for (int i = 0; i < urlList->count(); i++) { qInfo() << "Priority" << i << ":" << urlList->item(i)->text(); - SettingsCache::instance().downloads().setDownloadUrlAt(i, urlList->item(i)->text()); + downloadUrls << urlList->item(i)->text(); } + SettingsCache::instance().downloads().setDownloadUrls(downloadUrls); } void DeckEditorSettingsPage::urlListChanged(const QModelIndex &, int, int, const QModelIndex &, int) diff --git a/cockatrice/src/settings/download_settings.cpp b/cockatrice/src/settings/download_settings.cpp index 1af9d4f71..adbe26363 100644 --- a/cockatrice/src/settings/download_settings.cpp +++ b/cockatrice/src/settings/download_settings.cpp @@ -2,56 +2,28 @@ #include "settings_manager.h" +const QStringList DownloadSettings::DEFAULT_DOWNLOAD_URLS = { + "https://api.scryfall.com/cards/!set:uuid!?format=image&face=!prop:side!", + "https://api.scryfall.com/cards/multiverse/!set:muid!?format=image", + "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=!set:muid!&type=card", + "https://gatherer.wizards.com/Handlers/Image.ashx?name=!name!&type=card"}; + DownloadSettings::DownloadSettings(const QString &settingPath, QObject *parent = nullptr) : SettingsManager(settingPath + "downloads.ini", parent) { - downloadURLs = getValue("urls", "downloads").value(); } -void DownloadSettings::setDownloadUrlAt(int index, const QString &url) +void DownloadSettings::setDownloadUrls(const QStringList &downloadURLs) { - downloadURLs.insert(index, url); setValue(QVariant::fromValue(downloadURLs), "urls", "downloads"); } -/** - * If reset or first run, this method contains the default URLs we will populate - */ QStringList DownloadSettings::getAllURLs() { - // First run, these will be empty - if (downloadURLs.count() == 0) { - populateDefaultURLs(); - } - - return downloadURLs; + return getValue("urls", "downloads").toStringList(); } -void DownloadSettings::populateDefaultURLs() +void DownloadSettings::resetToDefaultURLs() { - downloadURLs.clear(); - downloadURLs.append("https://api.scryfall.com/cards/!set:uuid!?format=image&face=!prop:side!"); - downloadURLs.append("https://api.scryfall.com/cards/multiverse/!set:muid!?format=image"); - downloadURLs.append("https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=!set:muid!&type=card"); - downloadURLs.append("https://gatherer.wizards.com/Handlers/Image.ashx?name=!name!&type=card"); - setValue(QVariant::fromValue(downloadURLs), "urls", "downloads"); + setValue(QVariant::fromValue(DEFAULT_DOWNLOAD_URLS), "urls", "downloads"); } - -QString DownloadSettings::getDownloadUrlAt(int index) -{ - if (0 <= index && index < downloadURLs.size()) { - return downloadURLs[index]; - } - - return ""; -} - -int DownloadSettings::getCount() -{ - return downloadURLs.size(); -} - -void DownloadSettings::clear() -{ - downloadURLs.clear(); -} \ No newline at end of file diff --git a/cockatrice/src/settings/download_settings.h b/cockatrice/src/settings/download_settings.h index 5916b0083..a961199b3 100644 --- a/cockatrice/src/settings/download_settings.h +++ b/cockatrice/src/settings/download_settings.h @@ -10,20 +10,14 @@ class DownloadSettings : public SettingsManager Q_OBJECT friend class SettingsCache; + static const QStringList DEFAULT_DOWNLOAD_URLS; + public: explicit DownloadSettings(const QString &, QObject *); QStringList getAllURLs(); - QString getDownloadUrlAt(int); - void setDownloadUrlAt(int, const QString &); - int getCount(); - void clear(); - -private: - QStringList downloadURLs; - -private: - void populateDefaultURLs(); + void setDownloadUrls(const QStringList &downloadURLs); + void resetToDefaultURLs(); }; #endif // COCKATRICE_DOWNLOADSETTINGS_H