#include "FITKGUIRepo.h" #include "FITKAbstractGUIObject.h" #include namespace Core { //静态变量初始化 FITKGUIRepo* FITKGUIRepo::_instance = nullptr; QMutex FITKGUIRepo::m_mutex; FITKAbstractGUIObject* FITKGUIRepo::getFITKGUIObject(const int id) { //不存在则返回空指针 return _idObjectHash.value(id); } void FITKGUIRepo::closeGUIObject(const int objID) { FITKAbstractGUIObject* guiObj = _idObjectHash.value(objID); //delete会关闭 if (guiObj != nullptr) delete guiObj; } void FITKGUIRepo::closeGUIObject(FITKAbstractGUIObject* obj) { if (!isContains(obj)) return; //delete会关闭 delete obj; } void FITKGUIRepo::closeAllDialog() { QList dlgs = this->getGUIObjects(); for (auto d : dlgs) delete d; } bool FITKGUIRepo::isContains(FITKAbstractGUIObject* obj) { if (obj == nullptr) return false; const int id = obj->getGUIObjectID(); return _idObjectHash.contains(id); } void FITKGUIRepo::insertGUIObject(FITKAbstractGUIObject* obj) { if (obj == nullptr) return; const int id = obj->getGUIObjectID(); //纳入到管理 _idObjectHash.insert(id, obj); } void FITKGUIRepo::removeGUIObject(FITKAbstractGUIObject* obj) { //FITKAbstractGUIObject析构调用 if (obj == nullptr) return; const int id = obj->getGUIObjectID(); //不能重复delete _idObjectHash.remove(id); } void FITKGUIRepo::initialize() { } void FITKGUIRepo::finalize() { } FITKGUIRepoDeleator::~FITKGUIRepoDeleator() { if (FITKGUIRepo::_instance) delete FITKGUIRepo::_instance; FITKGUIRepo::_instance = nullptr; } static FITKGUIRepoDeleator _DELEATOR__; }