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