diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp index 60e354d6e..064fbed5d 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include @@ -83,8 +82,13 @@ void VisualDeckEditorWidget::initializeSearchBarAndCompleter() searchBar = new QLineEdit(searchContainer); searchContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); connect(searchBar, &QLineEdit::returnPressed, this, [=, this]() { - if (searchBar->hasFocus()) { - addCardFromSearch(); + if (!searchBar->hasFocus()) { + return; + } + + ExactCard card = CardDatabaseManager::query()->getCard({searchBar->text()}); + if (card) { + emit cardAdditionRequested(card); } }); @@ -129,24 +133,16 @@ void VisualDeckEditorWidget::initializeSearchBarAndCompleter() // Search button functionality searchPushButton = new CompactPushButton(searchContainer); searchPushButton->setButtonIcon(themePixmap(QStringLiteral("icons/search"))); - connect(searchPushButton, &QPushButton::clicked, this, [this] { addCardFromSearch(); }); + connect(searchPushButton, &QPushButton::clicked, this, [=, this]() { + ExactCard card = CardDatabaseManager::query()->getCard({searchBar->text()}); + if (card) { + emit cardAdditionRequested(card); + } + }); searchLayout->addWidget(searchPushButton); } -void VisualDeckEditorWidget::addCardFromSearch() -{ - ExactCard card = CardDatabaseManager::query()->getCard({searchBar->text()}); - if (!card) { - return; - } - - emit cardAdditionRequested(card); - - searchBar->setFocus(); - QTimer::singleShot(0, searchBar, [this] { searchBar->setSelection(0, searchBar->text().length()); }); -} - void VisualDeckEditorWidget::initializeDisplayOptionsWidget() { displayOptionsWidget = new VisualDeckDisplayOptionsWidget(this); diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h index cc045fca2..ac0d07efd 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h @@ -78,7 +78,6 @@ signals: protected: void initializeSearchBarAndCompleter(); - void addCardFromSearch(); void initializeDisplayOptionsWidget(); void initializeDisplayOptionsAndSearchWidget(); void initializeScrollAreaAndZoneContainer(); diff --git a/cockatrice/src/interface/window_main.cpp b/cockatrice/src/interface/window_main.cpp index ae967312d..595d38d5b 100644 --- a/cockatrice/src/interface/window_main.cpp +++ b/cockatrice/src/interface/window_main.cpp @@ -575,18 +575,11 @@ MainWindow::MainWindow(QWidget *parent) void MainWindow::startupConfigCheck() { - const bool isCleanInstall = SettingsCache::instance().network().getClientVersion() == CLIENT_INFO_NOT_SET; - // checkUnknownSets() is intentionally deferred from the card database load // (which runs in main() before MainWindow exists) so that // cardDatabaseNewSetsFound / cardDatabaseAllNewSetsEnabled have live // receivers when emitted. - // On a clean install the onboarding wizard owns the first-run experience; - // wait until it closes so the legacy "all sets enabled" welcome and the - // Manage Sets dialog don't appear first. - if (!isCleanInstall) { - CardDatabaseManager::getInstance()->checkUnknownSets(); - } + CardDatabaseManager::getInstance()->checkUnknownSets(); if (SettingsCache::instance().debug().getLocalGameOnStartup()) { LocalGameOptions options; @@ -600,14 +593,14 @@ void MainWindow::startupConfigCheck() actCheckCommanderBracketDefinitionUpdates(); - if (isCleanInstall) { + if (SettingsCache::instance().network().getClientVersion() == CLIENT_INFO_NOT_SET) { // no config found, 99% new clean install qCInfo(WindowMainStartupVersionLog) << "Startup: old client version empty, assuming first start after clean install"; SettingsCache::instance().downloads().resetToDefaultURLs(); // populate the download urls SettingsCache::instance().network().setClientVersion(VERSION_STRING); actCheckServerUpdates(); - runFirstRunWizard(true); + runFirstRunWizard(); if (QString(VERSION_STRING).contains("custom", Qt::CaseInsensitive)) { SettingsCache::instance().updates().setCheckUpdatesOnStartup(false); @@ -687,7 +680,7 @@ void MainWindow::startupConfigCheck() } } -void MainWindow::runFirstRunWizard(bool firstRun) +void MainWindow::runFirstRunWizard() { auto *wizard = new FirstRunWizard(this); wizard->setAttribute(Qt::WA_DeleteOnClose); @@ -699,19 +692,6 @@ void MainWindow::runFirstRunWizard(bool firstRun) connect(wizard, &FirstRunWizard::registerRequested, connectionController, &ConnectionController::registerToServer); connect(wizard, &FirstRunWizard::connectRequested, connectionController, &ConnectionController::connectToServer); - if (firstRun) { - // The onboarding wizard owns set handling for a clean install. Suppress - // the legacy set dialogs while it's open and run checkUnknownSets() once - // it closes so the sets end up enabled in the right order. - firstRunWizardActive = true; - connect(wizard, &QDialog::finished, this, [this] { - QTimer::singleShot(0, this, [this] { - CardDatabaseManager::getInstance()->checkUnknownSets(); - firstRunWizardActive = false; - }); - }); - } - wizard->setModal(true); wizard->show(); } @@ -1015,7 +995,7 @@ void MainWindow::cardDatabaseLoadingFailed() void MainWindow::cardDatabaseNewSetsFound(int numUnknownSets, QStringList unknownSetsNames) { - if (firstRunWizardActive || SettingsCache::instance().updates().getAlwaysEnableNewSets()) { + if (SettingsCache::instance().updates().getAlwaysEnableNewSets()) { CardDatabaseManager::getInstance()->enableAllUnknownSets(); const auto reloadOk1 = QtConcurrent::run([] { CardDatabaseManager::getInstance()->reloadCardDatabasesAndNotify(); }); @@ -1058,12 +1038,6 @@ void MainWindow::cardDatabaseNewSetsFound(int numUnknownSets, QStringList unknow void MainWindow::cardDatabaseAllNewSetsEnabled() { - if (firstRunWizardActive || CardDatabaseManager::getInstance()->getCardList().isEmpty()) { - // The onboarding wizard owns the first-run messaging on a clean install, - // and with no card data there are no sets to have enabled. - return; - } - QMessageBox::information( this, tr("Welcome"), tr("Hi! It seems like you're running this version of Cockatrice for the first time.\nAll the sets in the card " diff --git a/cockatrice/src/interface/window_main.h b/cockatrice/src/interface/window_main.h index fc7980d16..9e45a4c3e 100644 --- a/cockatrice/src/interface/window_main.h +++ b/cockatrice/src/interface/window_main.h @@ -139,7 +139,7 @@ private: void createTrayIcon(); int getNextCustomSetPrefix(QDir dataDir); - void runFirstRunWizard(bool firstRun = false); + void runFirstRunWizard(); inline QString getCardUpdaterBinaryName() { @@ -169,7 +169,6 @@ private: bool bHasActivated, askedForDbUpdater; bool skipStartupAutoConnect = false; bool startupAutoConnectAttempted = false; - bool firstRunWizardActive = false; QProcess *cardUpdateProcess; QByteArray cardUpdateOutputBuffer; DlgViewLog *logviewDialog; diff --git a/oracle/CMakeLists.txt b/oracle/CMakeLists.txt index d8f30dcad..a942870b7 100644 --- a/oracle/CMakeLists.txt +++ b/oracle/CMakeLists.txt @@ -31,6 +31,8 @@ set(oracle_SOURCES ../cockatrice/src/interface/pixel_map_generator.cpp ../cockatrice/src/interface/theme_config.cpp ../cockatrice/src/interface/theme_manager.cpp + ../cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp + ../cockatrice/src/interface/widgets/quick_settings/settings_popup_widget.cpp ${VERSION_STRING_CPP} ) @@ -121,14 +123,10 @@ target_link_libraries( oracle PUBLIC libcockatrice_card PUBLIC libcockatrice_settings - PUBLIC libcockatrice_protocol + PUBLIC libcockatrice_network PUBLIC ${ORACLE_QT_MODULES} ) -# Only user_level.h is needed from the network headers (pulled in transitively -# by pixel_map_generator.h); nothing from the network libraries is linked. -target_include_directories(oracle PRIVATE ${CMAKE_SOURCE_DIR}/libcockatrice_network) - if(ZLIB_FOUND) target_link_libraries(oracle PUBLIC ${ZLIB_LIBRARIES}) endif()