mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
Rework the way sets selection/importing works; fix #539 (rebased)
This commit is contained in:
parent
e69ca60164
commit
881cea27f4
13 changed files with 369 additions and 162 deletions
|
|
@ -33,7 +33,7 @@ static QXmlStreamWriter &operator<<(QXmlStreamWriter &xml, const CardSet *set)
|
|||
CardSet::CardSet(const QString &_shortName, const QString &_longName, const QString &_setType, const QDate &_releaseDate)
|
||||
: shortName(_shortName), longName(_longName), releaseDate(_releaseDate), setType(_setType)
|
||||
{
|
||||
updateSortKey();
|
||||
loadSetOptions();
|
||||
}
|
||||
|
||||
QString CardSet::getCorrectedShortName() const
|
||||
|
|
@ -58,12 +58,36 @@ void CardSet::setSortKey(unsigned int _sortKey)
|
|||
settings.setValue("sortkey", sortKey);
|
||||
}
|
||||
|
||||
void CardSet::updateSortKey()
|
||||
void CardSet::loadSetOptions()
|
||||
{
|
||||
QSettings settings;
|
||||
settings.beginGroup("sets");
|
||||
settings.beginGroup(shortName);
|
||||
|
||||
sortKey = settings.value("sortkey", 0).toInt();
|
||||
enabled = settings.value("enabled", false).toBool();
|
||||
isknown = settings.value("isknown", false).toBool();
|
||||
// qDebug() << "load set" << shortName << "key" << sortKey;
|
||||
}
|
||||
|
||||
void CardSet::setEnabled(bool _enabled)
|
||||
{
|
||||
enabled = _enabled;
|
||||
|
||||
QSettings settings;
|
||||
settings.beginGroup("sets");
|
||||
settings.beginGroup(shortName);
|
||||
settings.setValue("enabled", enabled);
|
||||
}
|
||||
|
||||
void CardSet::setIsKnown(bool _isknown)
|
||||
{
|
||||
isknown = _isknown;
|
||||
|
||||
QSettings settings;
|
||||
settings.beginGroup("sets");
|
||||
settings.beginGroup(shortName);
|
||||
settings.setValue("isknown", isknown);
|
||||
}
|
||||
|
||||
class SetList::CompareFunctor {
|
||||
|
|
@ -79,6 +103,81 @@ void SetList::sortByKey()
|
|||
qSort(begin(), end(), CompareFunctor());
|
||||
}
|
||||
|
||||
int SetList::getEnabledSetsNum()
|
||||
{
|
||||
int num=0;
|
||||
for (int i = 0; i < size(); ++i)
|
||||
{
|
||||
CardSet *set = at(i);
|
||||
if(set->getEnabled())
|
||||
++num;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
int SetList::getUnknownSetsNum()
|
||||
{
|
||||
int num=0;
|
||||
for (int i = 0; i < size(); ++i)
|
||||
{
|
||||
CardSet *set = at(i);
|
||||
if(!set->getIsKnown())
|
||||
++num;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
void SetList::enableAllUnknown()
|
||||
{
|
||||
for (int i = 0; i < size(); ++i)
|
||||
{
|
||||
CardSet *set = at(i);
|
||||
if(!set->getIsKnown())
|
||||
{
|
||||
set->setIsKnown(true);
|
||||
set->setEnabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SetList::enableAll()
|
||||
{
|
||||
for (int i = 0; i < size(); ++i)
|
||||
{
|
||||
CardSet *set = at(i);
|
||||
set->setIsKnown(true);
|
||||
set->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
void SetList::markAllAsKnown()
|
||||
{
|
||||
for (int i = 0; i < size(); ++i)
|
||||
{
|
||||
CardSet *set = at(i);
|
||||
if(!set->getIsKnown())
|
||||
{
|
||||
set->setIsKnown(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SetList::guessSortKeys()
|
||||
{
|
||||
// sort by release date DESC; invalid dates to the bottom.
|
||||
QDate distantFuture(2050, 1, 1);
|
||||
int aHundredYears = 36500;
|
||||
for (int i = 0; i < size(); ++i)
|
||||
{
|
||||
CardSet *set = at(i);
|
||||
QDate date = set->getReleaseDate();
|
||||
if(date.isNull())
|
||||
set->setSortKey(aHundredYears);
|
||||
else
|
||||
set->setSortKey(date.daysTo(distantFuture));
|
||||
}
|
||||
}
|
||||
|
||||
PictureToLoad::PictureToLoad(CardInfo *_card, bool _hq)
|
||||
: card(_card), setIndex(0), hq(_hq)
|
||||
{
|
||||
|
|
@ -512,7 +611,7 @@ void CardInfo::getPixmap(QSize size, QPixmap &pixmap)
|
|||
|
||||
void CardInfo::clearPixmapCache()
|
||||
{
|
||||
qDebug() << "Deleting pixmap for" << name;
|
||||
//qDebug() << "Deleting pixmap for" << name;
|
||||
QPixmapCache::remove(pixmapCacheKey);
|
||||
}
|
||||
|
||||
|
|
@ -736,7 +835,11 @@ void CardDatabase::loadSetsFromXml(QXmlStreamReader &xml)
|
|||
else if (xml.name() == "releasedate")
|
||||
releaseDate = QDate::fromString(xml.readElementText(), Qt::ISODate);
|
||||
}
|
||||
sets.insert(shortName, new CardSet(shortName, longName, setType, releaseDate));
|
||||
|
||||
CardSet * newSet = getSet(shortName);
|
||||
newSet->setLongName(longName);
|
||||
newSet->setSetType(setType);
|
||||
newSet->setReleaseDate(releaseDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -907,6 +1010,11 @@ void CardDatabase::picDownloadHqChanged()
|
|||
}
|
||||
}
|
||||
|
||||
void CardDatabase::emitCardListChanged()
|
||||
{
|
||||
emit cardListChanged();
|
||||
}
|
||||
|
||||
LoadStatus CardDatabase::loadCardDatabase(const QString &path, bool tokens)
|
||||
{
|
||||
LoadStatus tempLoadStatus = NotLoaded;
|
||||
|
|
@ -919,8 +1027,6 @@ LoadStatus CardDatabase::loadCardDatabase(const QString &path, bool tokens)
|
|||
while (setsIterator.hasNext())
|
||||
allSets.append(setsIterator.next().value());
|
||||
allSets.sortByKey();
|
||||
for (int i = 0; i < allSets.size(); ++i)
|
||||
allSets[i]->setSortKey(i);
|
||||
|
||||
emit cardListChanged();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue