From b4f409dac2117196b9cf5e0ec9ac323c1d3b6460 Mon Sep 17 00:00:00 2001
From: Matthias Puchner <github@mpuchner.de>
Date: Thu, 25 Nov 2021 12:23:54 +0100
Subject: [PATCH] remove obsolete SessionModel code

---
 GUI/Model/Session/ModelUtils.cpp        | 29 ----------
 GUI/Model/Session/ModelUtils.h          | 10 ----
 GUI/Model/Session/SessionItemUtils.cpp  | 18 ------
 GUI/Model/Session/SessionItemUtils.h    |  4 --
 Tests/Unit/GUI/TestModelUtils.cpp       | 76 -------------------------
 Tests/Unit/GUI/TestSessionItemUtils.cpp | 41 -------------
 6 files changed, 178 deletions(-)

diff --git a/GUI/Model/Session/ModelUtils.cpp b/GUI/Model/Session/ModelUtils.cpp
index 1ebb074fb7b..6f652f670cf 100644
--- a/GUI/Model/Session/ModelUtils.cpp
+++ b/GUI/Model/Session/ModelUtils.cpp
@@ -28,35 +28,6 @@ QStringList GUI::Model::ItemUtils::topItemNames(const SessionModel* model, const
     return result;
 }
 
-void GUI::Model::ItemUtils::iterate(const QModelIndex& index, const QAbstractItemModel* model,
-                                    const std::function<void(const QModelIndex&)>& fun)
-{
-    if (index.isValid())
-        fun(index);
-
-    if (!model->hasChildren(index))
-        return;
-
-    for (int i = 0; i < model->rowCount(index); ++i)
-        for (int j = 0; j < model->columnCount(index); ++j)
-            iterate(model->index(i, j, index), model, fun);
-}
-
-void GUI::Model::ItemUtils::iterate_if(const QModelIndex& index, const QAbstractItemModel* model,
-                                       const std::function<bool(const QModelIndex&)>& fun)
-{
-    bool proceed_with_children(true);
-    if (index.isValid())
-        proceed_with_children = fun(index);
-
-    if (!model->hasChildren(index) || !proceed_with_children)
-        return;
-
-    for (int i = 0; i < model->rowCount(index); ++i)
-        for (int j = 0; j < model->columnCount(index); ++j)
-            iterate_if(model->index(i, j, index), model, fun);
-}
-
 QString GUI::Model::ItemUtils::suggestName(const QStringList& existingNames, const QString& name)
 {
     int newNumber = -1;
diff --git a/GUI/Model/Session/ModelUtils.h b/GUI/Model/Session/ModelUtils.h
index aa8f0e4df84..440682b169e 100644
--- a/GUI/Model/Session/ModelUtils.h
+++ b/GUI/Model/Session/ModelUtils.h
@@ -35,16 +35,6 @@ QString suggestName(const QStringList& existingNames, const QString& name);
 //! Returns list of names of given items.
 template <typename T> QStringList itemNames(QVector<T*> items);
 
-//! Iterates through all model indices and calls user function.
-void iterate(const QModelIndex& index, const QAbstractItemModel* model,
-             const std::function<void(const QModelIndex&)>& fun);
-
-//! Iterates through all model indices and calls user function.
-//! If function returns false for given index, iteration will not go down to children.
-void iterate_if(const QModelIndex& index, const QAbstractItemModel* model,
-                const std::function<bool(const QModelIndex&)>& fun);
-
-
 template <typename T> QStringList itemNames(const QVector<T*> items)
 {
     QStringList result;
diff --git a/GUI/Model/Session/SessionItemUtils.cpp b/GUI/Model/Session/SessionItemUtils.cpp
index 399e83dff47..8bd8467b160 100644
--- a/GUI/Model/Session/SessionItemUtils.cpp
+++ b/GUI/Model/Session/SessionItemUtils.cpp
@@ -37,24 +37,6 @@ int GUI::Session::ItemUtils::ParentRow(const SessionItem& item)
     return -1;
 }
 
-int GUI::Session::ItemUtils::ParentVisibleRow(const SessionItem& item)
-{
-    int result(-1);
-
-    if (!item.parent() || !item.isVisible())
-        return result;
-
-    for (auto* child : item.parent()->children()) {
-        if (child->isVisible())
-            ++result;
-
-        if (&item == child)
-            return result;
-    }
-
-    return result;
-}
-
 QVariant GUI::Session::ItemUtils::ForegroundRole(const SessionItem& item)
 {
     return item.isEnabled() ? QVariant() : QColor(Qt::gray);
diff --git a/GUI/Model/Session/SessionItemUtils.h b/GUI/Model/Session/SessionItemUtils.h
index ceb523ca9a7..baf7d11a837 100644
--- a/GUI/Model/Session/SessionItemUtils.h
+++ b/GUI/Model/Session/SessionItemUtils.h
@@ -27,10 +27,6 @@ namespace GUI::Session::ItemUtils {
 //! Returns the index of the given item within its parent. Returns -1 when no parent is set.
 int ParentRow(const SessionItem& item);
 
-//! Returns the row of the given item within its parent not accounting for all hidden items
-//! above. Returns -1 when no parent set or item is hidden.
-int ParentVisibleRow(const SessionItem& item);
-
 //! Returns text color for given item.
 QVariant ForegroundRole(const SessionItem& item);
 
diff --git a/Tests/Unit/GUI/TestModelUtils.cpp b/Tests/Unit/GUI/TestModelUtils.cpp
index 6192c38633e..89fdce2e027 100644
--- a/Tests/Unit/GUI/TestModelUtils.cpp
+++ b/Tests/Unit/GUI/TestModelUtils.cpp
@@ -8,19 +8,6 @@
 
 class TestModelUtils : public ::testing::Test {
 public:
-    //! Returns true if model contains given item using iterate_if procedure.
-    bool modelContainsItem(SessionModel* model, SessionItem* selectedItem)
-    {
-        bool result = false;
-        GUI::Model::ItemUtils::iterate_if(QModelIndex(), model,
-                                          [&](const QModelIndex& index) -> bool {
-                                              SessionItem* item = model->itemForIndex(index);
-                                              if (item == selectedItem)
-                                                  result = true;
-                                              return item->isVisible();
-                                          });
-        return result;
-    }
 };
 
 //! Testing top item names.
@@ -68,66 +55,3 @@ TEST_F(TestModelUtils, suggestName)
     EXPECT_EQ(suggestName({"A (0)"}, "A"), "A (1)");
     EXPECT_EQ(suggestName({"A, A (0)"}, "A"), "A (1)");
 }
-
-
-//! Testing iteration over empty model.
-
-TEST_F(TestModelUtils, emptyModel)
-{
-    SessionModel model("TestModel");
-
-    QVector<QModelIndex> indices;
-
-    GUI::Model::ItemUtils::iterate(QModelIndex(), &model,
-                                   [&](const QModelIndex& index) { indices.push_back(index); });
-
-    EXPECT_EQ(indices.size(), 0);
-}
-
-//! Testing iteration over the model with one VectorItem inserted.
-
-TEST_F(TestModelUtils, vectorItem)
-{
-    SessionModel model("TestModel");
-    auto* vectorItem = model.insertItem<VectorItem>();
-
-    QVector<QModelIndex> indices;
-
-    // checking indices visited during iteration
-    GUI::Model::ItemUtils::iterate(QModelIndex(), &model,
-                                   [&](const QModelIndex& index) { indices.push_back(index); });
-    EXPECT_EQ(indices.size(), 8); // (VectorItem, P_X, P_Y, P_Z) x (row, col)
-
-    indices.clear();
-    GUI::Model::ItemUtils::iterate(QModelIndex(), &model, [&](const QModelIndex& index) {
-        if (index.column() == 0)
-            indices.push_back(index);
-    });
-
-    // checking SessionItems visited during the iteration
-    EXPECT_EQ(indices.size(), 4); // (VectorItem, P_X, P_Y, P_Z) x (row, col)
-    EXPECT_EQ(model.itemForIndex(indices.front()), vectorItem);
-    EXPECT_EQ(model.itemForIndex(indices.back()), vectorItem->zItem());
-}
-
-//! Tests iteration when some children is invisible.
-
-TEST_F(TestModelUtils, iterateIf)
-{
-    SessionModel model("TestModel");
-    auto* multilayer = model.insertItem<MultiLayerItem>();
-    auto* layer = model.insertItem<LayerItem>(multilayer);
-    SessionItem* thicknessItem = layer->thicknessItem();
-
-    layer->setVisible(true);
-    EXPECT_TRUE(modelContainsItem(&model, layer));
-    EXPECT_TRUE(modelContainsItem(&model, thicknessItem));
-
-    // Setting layer invisible will hide its children from iteration.
-    // Layer itself still will be visible.
-    layer->setVisible(false);
-
-    layer->setVisible(false);
-    EXPECT_TRUE(modelContainsItem(&model, layer));
-    EXPECT_FALSE(modelContainsItem(&model, thicknessItem));
-}
diff --git a/Tests/Unit/GUI/TestSessionItemUtils.cpp b/Tests/Unit/GUI/TestSessionItemUtils.cpp
index bbf8ef27aec..0804aacc028 100644
--- a/Tests/Unit/GUI/TestSessionItemUtils.cpp
+++ b/Tests/Unit/GUI/TestSessionItemUtils.cpp
@@ -8,47 +8,6 @@
 class TestSessionItemUtils : public ::testing::Test {
 };
 
-//! Test GUI::Session::ItemUtils::ParentVisibleRow utility method.
-
-TEST_F(TestSessionItemUtils, ParentVisibleRow)
-{
-    SessionModel model("TestModel");
-
-    // 3 property items in root, all visible
-    auto* item1 = model.insertItem<PropertyItem>();
-    auto* item2 = model.insertItem<PropertyItem>();
-    auto* item3 = model.insertItem<PropertyItem>();
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item1), 0);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item2), 1);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item3), 2);
-
-    // one item become invisible
-    item2->setVisible(false);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item1), 0);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item2), -1);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item3), 1);
-
-    // two more items
-    auto* item4 = model.insertItem<PropertyItem>();
-    auto* item5 = model.insertItem<PropertyItem>();
-    item5->setVisible(false);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item1), 0);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item2), -1);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item3), 1);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item4), 2);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*item5), -1);
-
-    // adding vector item
-    auto* vector = model.insertItem<VectorItem>();
-    auto* x = vector->xItem();
-    auto* y = vector->yItem();
-    auto* z = vector->zItem();
-    x->setVisible(false);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*x), -1);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*y), 0);
-    EXPECT_EQ(GUI::Session::ItemUtils::ParentVisibleRow(*z), 1);
-}
-
 //! Comparing types of variant.
 
 TEST_F(TestSessionItemUtils, VariantType)
-- 
GitLab