File indexing completed on 2024-05-12 16:01:34
0001 /* 0002 * SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "kis_model_index_converter_show_all.h" 0008 0009 #include "kis_node_dummies_graph.h" 0010 #include "kis_dummies_facade_base.h" 0011 #include "kis_node_model.h" 0012 0013 0014 KisModelIndexConverterShowAll::KisModelIndexConverterShowAll(KisDummiesFacadeBase *dummiesFacade, 0015 KisNodeModel *model) 0016 : m_dummiesFacade(dummiesFacade), 0017 m_model(model) 0018 { 0019 } 0020 0021 KisNodeDummy* KisModelIndexConverterShowAll::dummyFromRow(int row, QModelIndex parent) 0022 { 0023 Q_ASSERT(parent.isValid() || !row); 0024 0025 if(!parent.isValid()) return m_dummiesFacade->rootDummy(); 0026 0027 KisNodeDummy *parentDummy = dummyFromIndex(parent); 0028 0029 int rowCount = parentDummy->childCount(); 0030 int index = rowCount - row - 1; 0031 return parentDummy->at(index); 0032 } 0033 0034 KisNodeDummy* KisModelIndexConverterShowAll::dummyFromIndex(QModelIndex index) 0035 { 0036 Q_ASSERT(index.isValid()); 0037 Q_ASSERT(index.internalPointer()); 0038 return static_cast<KisNodeDummy*>(index.internalPointer()); 0039 } 0040 0041 QModelIndex KisModelIndexConverterShowAll::indexFromDummy(KisNodeDummy *dummy) 0042 { 0043 int row = 0; 0044 0045 KisNodeDummy *parentDummy = dummy->parent(); 0046 0047 if(parentDummy) { 0048 int rowCount = parentDummy->childCount(); 0049 int index = parentDummy->indexOf(dummy); 0050 row = rowCount - index - 1; 0051 } 0052 0053 return m_model->createIndex(row, 0, (void*)dummy); 0054 } 0055 0056 bool KisModelIndexConverterShowAll::indexFromAddedDummy(KisNodeDummy *parentDummy, 0057 int index, 0058 const QString &newNodeMetaObjectType, 0059 QModelIndex &parentIndex, 0060 int &row) 0061 { 0062 Q_UNUSED(newNodeMetaObjectType); 0063 0064 Q_ASSERT(parentDummy || !index); 0065 0066 if(!parentDummy) { 0067 row = 0; 0068 parentIndex = QModelIndex(); 0069 } 0070 else { 0071 int rowCount = parentDummy->childCount(); 0072 row = rowCount - index; 0073 parentIndex = indexFromDummy(parentDummy); 0074 } 0075 return true; 0076 } 0077 0078 int KisModelIndexConverterShowAll::rowCount(QModelIndex parent) 0079 { 0080 if(!parent.isValid()) return 1; 0081 0082 KisNodeDummy *parentDummy = dummyFromIndex(parent); 0083 0084 return parentDummy->childCount(); 0085 }