From 8b117635d51a6a28aea4d818bc8519ef54274345 Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Sun, 4 Feb 2024 18:07:51 +0100
Subject: [PATCH] all datafiles in _one_ list

---
 GUI/Model/Files/DatafilesQModel.cpp | 46 +++++++++++------------------
 GUI/Model/Files/DatafilesQModel.h   |  4 +--
 2 files changed, 19 insertions(+), 31 deletions(-)

diff --git a/GUI/Model/Files/DatafilesQModel.cpp b/GUI/Model/Files/DatafilesQModel.cpp
index f85560d611c..18435443568 100644
--- a/GUI/Model/Files/DatafilesQModel.cpp
+++ b/GUI/Model/Files/DatafilesQModel.cpp
@@ -23,8 +23,7 @@ DatafilesQModel::DatafilesQModel(QObject* parent, DatafilesSet* model)
     : QAbstractItemModel(parent)
     , m_model(model)
 {
-    for (int rank : {1, 2})
-        m_items[rank - 1] = model->dfileItems(rank);
+    m_items = model->dfileItems();
 }
 
 bool DatafilesQModel::setData(const QModelIndex& index, const QVariant& value, int role)
@@ -40,10 +39,9 @@ bool DatafilesQModel::setData(const QModelIndex& index, const QVariant& value, i
 void DatafilesQModel::injectDatafileItem(DatafileItem* item)
 {
     m_model->insertDatafileItem(item);
-    const int rank = item->rank();
-    const int rowOfItem = m_model->dfileItems(rank).indexOf(item);
-    beginInsertRows(indexOfHeadline(rank), rowOfItem, rowOfItem);
-    m_items[rank - 1] = m_model->dfileItems(rank);
+    const int rowOfItem = m_model->dfileItems().indexOf(item);
+    beginInsertRows(indexOfHeadline(), rowOfItem, rowOfItem);
+    m_items = m_model->dfileItems();
     endInsertRows();
 }
 
@@ -52,26 +50,23 @@ void DatafilesQModel::removeDatafileItem(DatafileItem* item)
     QModelIndex index = indexForItem(item);
     if (!index.isValid())
         return;
-    const int rank = item->rank();
-    const int rowOfItem = m_items[rank - 1].indexOf(item);
-    beginRemoveRows(indexOfHeadline(rank), rowOfItem, rowOfItem);
-    m_items[rank - 1].removeAll(item);
+    const int rowOfItem = m_items.indexOf(item);
+    beginRemoveRows(indexOfHeadline(), rowOfItem, rowOfItem);
+    m_items.removeAll(item);
     m_model->removeDatafileItem(item);
     endRemoveRows();
 }
 
 DatafileItem* DatafilesQModel::topMostItem() const
 {
-    if (!m_items[0].isEmpty())
-        return m_items[0].first();
-    if (!m_items[1].isEmpty())
-        return m_items[1].first();
+    if (!m_items.isEmpty())
+        return m_items.first();
     return nullptr;
 }
 
-QModelIndex DatafilesQModel::indexOfHeadline(int rank) const
+QModelIndex DatafilesQModel::indexOfHeadline() const
 {
-    return createIndex(rank - 1, 0, nullptr);
+    return createIndex(0, 0, nullptr);
 }
 
 QModelIndex DatafilesQModel::index(int row, int column, const QModelIndex& parent) const
@@ -82,9 +77,8 @@ QModelIndex DatafilesQModel::index(int row, int column, const QModelIndex& paren
     if (!parent.isValid())
         return createIndex(row, column, nullptr);
 
-    for (int rank : {1, 2})
-        if (parent == indexOfHeadline(rank))
-            return createIndex(row, column, m_items[rank - 1][row]);
+    if (parent == indexOfHeadline())
+        return createIndex(row, column, m_items[row]);
 
     return {};
 }
@@ -97,7 +91,7 @@ QModelIndex DatafilesQModel::parent(const QModelIndex& index) const
     if (index.internalPointer() == nullptr) // index is headline => no parent
         return {};
 
-    return indexOfHeadline(itemForIndex(index)->rank());
+    return indexOfHeadline();
 }
 
 int DatafilesQModel::columnCount(const QModelIndex& /*parent*/) const
@@ -111,9 +105,8 @@ int DatafilesQModel::rowCount(const QModelIndex& parent) const
         return 2;
 
     // parent is a headline
-    for (int rank : {1, 2})
-        if (parent == indexOfHeadline(rank))
-            return m_items[rank - 1].size();
+    if (parent == indexOfHeadline())
+        return m_items.size();
 
     return 0;
 }
@@ -155,7 +148,6 @@ DatafileItem* DatafilesQModel::itemForIndex(const QModelIndex& index) const
 {
     if (!index.isValid())
         return nullptr;
-
     return reinterpret_cast<DatafileItem*>(index.internalPointer());
 }
 
@@ -163,11 +155,8 @@ QModelIndex DatafilesQModel::indexForItem(DatafileItem* item) const
 {
     if (item == nullptr)
         return {};
-
-    const int rank = item->rank();
-    if (auto index = m_items[rank - 1].indexOf(item); index >= 0)
+    if (auto index = m_items.indexOf(item); index >= 0)
         return createIndex(index, 0, item);
-
     return {};
 }
 
@@ -175,6 +164,5 @@ bool DatafilesQModel::isHeadline(const QModelIndex& index) const
 {
     if (!index.isValid())
         return false;
-
     return index.internalPointer() == nullptr;
 }
diff --git a/GUI/Model/Files/DatafilesQModel.h b/GUI/Model/Files/DatafilesQModel.h
index 038f183dd31..0b00f952574 100644
--- a/GUI/Model/Files/DatafilesQModel.h
+++ b/GUI/Model/Files/DatafilesQModel.h
@@ -42,12 +42,12 @@ public:
     DatafileItem* itemForIndex(const QModelIndex& index) const;
     QModelIndex indexForItem(DatafileItem* item) const;
     DatafileItem* topMostItem() const; //!< The topmost visible item. Can be null.
-    QModelIndex indexOfHeadline(int rank) const;
+    QModelIndex indexOfHeadline() const;
     bool isHeadline(const QModelIndex& index) const;
 
 private:
     DatafilesSet* const m_model;
-    QVector<DatafileItem*> m_items[2]; //< Items borrowed from model. Never delete the ptrs!
+    QVector<DatafileItem*> m_items; //< Items borrowed from model. Never delete the ptrs!
 };
 
 #endif // BORNAGAIN_GUI_MODEL_FILES_DATAFILESQMODEL_H
-- 
GitLab