Skip to content

Commit

Permalink
> Fixed crash in release card for bleach release
Browse files Browse the repository at this point in the history
  • Loading branch information
trueromanus committed Sep 28, 2024
1 parent c37a775 commit 980a73a
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 23 deletions.
19 changes: 9 additions & 10 deletions src/Classes/ListModels/releaseserieslistmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,11 @@ void ReleaseSeriesListModel::refresh() noexcept

beginResetModel();

m_releases->clear();
m_variantReleases.clear();

if (m_releaseId > 0) {
auto releases = m_releases.get();

m_linkedSeries->fillReleaseSeries(releases, m_releaseId);
auto newSeries = m_linkedSeries->fillReleaseSeries(m_releaseId);
m_variantReleases.append(newSeries);
}

endResetModel();
Expand All @@ -47,27 +46,27 @@ int ReleaseSeriesListModel::rowCount(const QModelIndex &parent) const
{
if (parent.isValid()) return 0;

return m_releases->size();
return m_variantReleases.size();
}

QVariant ReleaseSeriesListModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid()) return QVariant();

auto release = m_releases->at(index.row());
auto map = m_variantReleases.at(index.row());

switch (role) {
case IndexRole: {
return QVariant(release->id());
return map.value("id");
}
case TitleRole: {
return QVariant(release->title());
return map.value("title");
}
case PosterRole: {
return QVariant(release->poster());
return map.value("poster");
}
case IsSelected: {
return QVariant(release->id() == m_releaseId);
return QVariant(map.value("id").toInt() == m_releaseId);
}
case ReleaseNumber: {
return QVariant(index.row() + 1);
Expand Down
3 changes: 2 additions & 1 deletion src/Classes/ListModels/releaseserieslistmodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class ReleaseSeriesListModel : public QAbstractListModel
ReleaseNumber
};
QScopedPointer<QList<FullReleaseModel*>> m_releases { new QList<FullReleaseModel*>() };
QList<QVariantMap> m_variantReleases { QList<QVariantMap>() };
ReleaseLinkedSeries* m_linkedSeries { nullptr };
int m_releaseId { -1 };

Expand All @@ -58,7 +59,7 @@ class ReleaseSeriesListModel : public QAbstractListModel
int releaseId() const noexcept { return m_releaseId; }
void setReleaseId(int releaseId) noexcept;

bool isEmpty() const noexcept { return m_releases->isEmpty(); }
bool isEmpty() const noexcept { return m_variantReleases.isEmpty(); }

signals:
void releaseIdChanged();
Expand Down
29 changes: 18 additions & 11 deletions src/Classes/Services/releaselinkedseries.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -245,8 +245,9 @@ int ReleaseLinkedSeries::getSortedOrder(int id) const noexcept
return 0;
}

void ReleaseLinkedSeries::fillReleaseSeries(QList<FullReleaseModel *> *list, const int id) noexcept
QList<QVariantMap> ReleaseLinkedSeries::fillReleaseSeries(const int id) noexcept
{
QList<QVariantMap> result;
auto iterator = std::find_if(
m_series.cbegin(),
m_series.cend(),
Expand All @@ -255,22 +256,28 @@ void ReleaseLinkedSeries::fillReleaseSeries(QList<FullReleaseModel *> *list, con
}
);

if (iterator == m_series.cend()) return;
if (iterator == m_series.cend()) return result;

auto item = *iterator;
auto idsCollection = item->releaseIds();

for (auto i = 0; i < idsCollection->count(); i++) {
list->append(nullptr);
QMap<int, FullReleaseModel*> releaseMap;
foreach(auto release, *m_releases) {
releaseMap.insert(release->id(), release);
}

foreach (auto release, *m_releases) {
auto releaseId = release->id();
if (idsCollection->contains(releaseId)) {
auto releaseIndex = idsCollection->indexOf(releaseId);
(*list)[releaseIndex] = release;
}
foreach (auto releaseSeries, *idsCollection) {
auto releaseId = releaseSeries.toInt();
if (!releaseMap.contains(releaseId)) continue;

auto release = releaseMap.value(releaseId);
QVariantMap map;
map["id"] = release->id();
map["title"] = release->title();
map["poster"] = release->poster();
result.append(map);
}

return result;
}

int ReleaseLinkedSeries::getNextLinkedRelease(const int currentRelease)
Expand Down
2 changes: 1 addition & 1 deletion src/Classes/Services/releaselinkedseries.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ class ReleaseLinkedSeries : public QAbstractListModel
QList<QList<int>> getFullLinkedReleases() const noexcept;
int getSortedOrder(int id) const noexcept;

void fillReleaseSeries(QList<FullReleaseModel*>* list, const int id) noexcept;
QList<QVariantMap> fillReleaseSeries(const int id) noexcept;

Q_INVOKABLE int getNextLinkedRelease(const int currentRelease);
Q_INVOKABLE void refreshSeries();
Expand Down
1 change: 1 addition & 0 deletions src/Classes/ViewModels/releasesviewmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1030,6 +1030,7 @@ void ReleasesViewModel::showReleaseCard(int id, bool needHandle) noexcept

resetReleaseChanges(release->id());


refreshOpenedReleaseCard();

m_customGroups->setupReleaseId(id);
Expand Down

0 comments on commit 980a73a

Please sign in to comment.