File indexing completed on 2024-05-12 04:37:44
0001 /* 0002 SPDX-FileCopyrightText: 2009 Lior Mualem <lior.m.kde@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "classmodelnodescontroller.h" 0008 #include "classmodelnode.h" 0009 #include "../duchain/duchainlock.h" 0010 #include "../duchain/duchain.h" 0011 #include "../duchain/classdeclaration.h" 0012 #include <QTimer> 0013 0014 using namespace KDevelop; 0015 0016 ClassModelNodeDocumentChangedInterface::~ClassModelNodeDocumentChangedInterface() 0017 { 0018 } 0019 0020 ClassModelNodesController::ClassModelNodesController() 0021 : m_updateTimer(new QTimer(this)) 0022 { 0023 m_updateTimer->setSingleShot(true); 0024 connect(m_updateTimer, &QTimer::timeout, this, &ClassModelNodesController::updateChangedFiles); 0025 } 0026 0027 ClassModelNodesController::~ClassModelNodesController() 0028 { 0029 } 0030 0031 ClassModelNodesController& ClassModelNodesController::self() 0032 { 0033 static ClassModelNodesController ret; 0034 return ret; 0035 } 0036 0037 void ClassModelNodesController::registerForChanges(const KDevelop::IndexedString& a_file, 0038 ClassModelNodeDocumentChangedInterface* a_node) 0039 { 0040 m_filesMap.insert(a_file, a_node); 0041 } 0042 0043 void ClassModelNodesController::unregisterForChanges(const KDevelop::IndexedString& a_file, 0044 ClassModelNodeDocumentChangedInterface* a_node) 0045 { 0046 m_filesMap.remove(a_file, a_node); 0047 } 0048 0049 void ClassModelNodesController::updateChangedFiles() 0050 { 0051 // re-parse changed documents. 0052 // TODO: m_updatedFiles seems no longer set, check again and remove if 0053 for (const IndexedString& file : qAsConst(m_updatedFiles)) { 0054 const auto values = m_filesMap.values(file); 0055 for (ClassModelNodeDocumentChangedInterface* value : values) { 0056 value->documentChanged(file); 0057 } 0058 } 0059 0060 // Processed all files. 0061 m_updatedFiles.clear(); 0062 } 0063 0064 #include "moc_classmodelnodescontroller.cpp"