From 3e2bda7cf109d3638dc7358874f8ae962d069199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Sat, 29 Oct 2022 11:07:10 +0200 Subject: [PATCH] Extract function --- YACReaderLibrary/db/folder_model.cpp | 19 +------------------ common/yacreader_global.cpp | 19 +++++++++++++++++++ common/yacreader_global.h | 5 +++++ 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/YACReaderLibrary/db/folder_model.cpp b/YACReaderLibrary/db/folder_model.cpp index 73fe13b6..97a61760 100644 --- a/YACReaderLibrary/db/folder_model.cpp +++ b/YACReaderLibrary/db/folder_model.cpp @@ -216,27 +216,10 @@ QModelIndex FolderModel::index(int row, int column, const QModelIndex &parent) return QModelIndex(); } -void iterate(const QModelIndex &index, - const QAbstractItemModel *model, - const std::function &iteration) -{ - if (index.isValid()) { - auto continueIterating = iteration(index); - if (!continueIterating) { - return; - } - } - if ((index.flags() & Qt::ItemNeverHasChildren) || !model->hasChildren(index)) - return; - auto rows = model->rowCount(index); - for (int i = 0; i < rows; ++i) - iterate(model->index(i, 0, index), model, iteration); -} - QModelIndex FolderModel::index(qulonglong folderId) const { QModelIndex index; - iterate(QModelIndex(), this, [&](const QModelIndex &idx) { + YACReader::iterate(QModelIndex(), this, [&](const QModelIndex &idx) { if (index.isValid()) { return false; } diff --git a/common/yacreader_global.cpp b/common/yacreader_global.cpp index f802c1e4..105e7372 100644 --- a/common/yacreader_global.cpp +++ b/common/yacreader_global.cpp @@ -1,5 +1,7 @@ #include "yacreader_global.h" +#include + using namespace YACReader; QString YACReader::getSettingsPath() @@ -100,3 +102,20 @@ QDataStream &YACReader::operator>>(QDataStream &stream, OpenComicSource &source) stream >> source.sourceId; return stream; } + +void YACReader::iterate(const QModelIndex &index, + const QAbstractItemModel *model, + const std::function &iteration) +{ + if (index.isValid()) { + auto continueIterating = iteration(index); + if (!continueIterating) { + return; + } + } + if ((index.flags() & Qt::ItemNeverHasChildren) || !model->hasChildren(index)) + return; + auto rows = model->rowCount(index); + for (int i = 0; i < rows; ++i) + iterate(model->index(i, 0, index), model, iteration); +} diff --git a/common/yacreader_global.h b/common/yacreader_global.h index 8281e989..d2f35f97 100644 --- a/common/yacreader_global.h +++ b/common/yacreader_global.h @@ -4,6 +4,7 @@ #include #include #include +#include #define VERSION "9.10.0" @@ -68,6 +69,10 @@ QString getSettingsPath(); QString colorToName(LabelColors colors); QString labelColorToRGBString(LabelColors color); +void iterate(const QModelIndex &index, + const QAbstractItemModel *model, + const std::function &iteration); + } Q_DECLARE_METATYPE(YACReader::OpenComicSource::Source)