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