From b05ed0376a88a0f553ddc2fcfcf7c20881a5577d Mon Sep 17 00:00:00 2001 From: Psithief Date: Fri, 7 Jul 2017 12:45:46 +0800 Subject: [PATCH] Fixes #2712 (#2797) When checking unknown sets, consider sets with an empty long name, set type and release date as 'incomplete'/'partial' sets. Do not mark partial sets as known, or ask the user to enable them. Instead, silently enable partial sets. When a partial set becomes complete, the user is prompted to enable the set as before. If they choose not to enable, those partial sets are disabled, as we can no longer assume they are disabled by default. --- cockatrice/src/carddatabase.cpp | 22 +++++++++++++++++----- cockatrice/src/carddatabase.h | 2 ++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index dce7da725..489b78d90 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -99,7 +99,7 @@ int SetList::getUnknownSetsNum() for (int i = 0; i < size(); ++i) { CardSet *set = at(i); - if(!set->getIsKnown()) + if(!set->getIsKnown() && !set->getIsKnownIgnored()) ++num; } return num; @@ -111,7 +111,7 @@ QStringList SetList::getUnknownSetsNames() for (int i = 0; i < size(); ++i) { CardSet *set = at(i); - if(!set->getIsKnown()) + if(!set->getIsKnown() && !set->getIsKnownIgnored()) sets << set->getShortName(); } return sets; @@ -122,11 +122,15 @@ void SetList::enableAllUnknown() for (int i = 0; i < size(); ++i) { CardSet *set = at(i); - if(!set->getIsKnown()) + if(!set->getIsKnown() && !set->getIsKnownIgnored()) { set->setIsKnown(true); set->setEnabled(true); } + else if (set->getIsKnownIgnored() && !set->getEnabled()) + { + set->setEnabled(true); + } } } @@ -135,7 +139,8 @@ void SetList::enableAll() for (int i = 0; i < size(); ++i) { CardSet *set = at(i); - set->setIsKnown(true); + if(!set->getIsKnownIgnored()) + set->setIsKnown(true); set->setEnabled(true); } } @@ -145,9 +150,14 @@ void SetList::markAllAsKnown() for (int i = 0; i < size(); ++i) { CardSet *set = at(i); - if(!set->getIsKnown()) + if(!set->getIsKnown() && !set->getIsKnownIgnored()) { set->setIsKnown(true); + set->setEnabled(false); + } + else if (set->getIsKnownIgnored() && !set->getEnabled()) + { + set->setEnabled(true); } } } @@ -840,6 +850,8 @@ void CardDatabase::checkUnknownSets() QStringList unknownSetNames = sets.getUnknownSetsNames(); if(numUnknownSets > 0) emit cardDatabaseNewSetsFound(numUnknownSets, unknownSetNames); + else + sets.markAllAsKnown(); } else { // No set enabled. Probably this is the first time running trice sets.guessSortKeys(); diff --git a/cockatrice/src/carddatabase.h b/cockatrice/src/carddatabase.h index 557454ff8..800f22cb0 100644 --- a/cockatrice/src/carddatabase.h +++ b/cockatrice/src/carddatabase.h @@ -43,6 +43,8 @@ public: void setEnabled(bool _enabled); bool getIsKnown() const { return isknown; } void setIsKnown(bool _isknown); + //Determine incomplete sets. + bool getIsKnownIgnored() const { return longName.length() + setType.length() + releaseDate.toString().length() == 0 ; } }; class SetList : public QList {