#include "OpenDirAction.h" #include #include #include #include "IO/DICOM/DicomLoader.h" #include "DICOMPropertiesStore.h" OpenDirAction::OpenDirAction(const QString& aName,QWidget* aParent) : QAction(aName, aParent) { connect(this,&QAction::triggered,this,&OpenDirAction::executeAction); } OpenDirAction::~OpenDirAction() { } void OpenDirAction::executeAction() { QString cachePath = QDir::currentPath()+"/.cache"; if (!QFile::exists(cachePath)) { QFile cache(cachePath); cache.open(QFile::NewOnly); cache.close(); } QSettings setting(cachePath,QSettings::IniFormat); QString path = QFileDialog::getExistingDirectory(menu(), tr("Open Directory"), setting.contains("LastDir")?setting.value("LastDir").toString():QDir::currentPath(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); DicomLoader::InitCodecs(); setting.setValue("LastDir",path); std::string dir = path.toStdString(); std::vector vector; int count = 0; DicomLoader::readPropertiesFromDir(dir,vector, count); DicomLoader::FinalizeCodecs(); if( vector.empty()){ emit dataLoaded(false); return; } DICOMPropertiesStore::GetInstance()->reset(); for (auto item : vector) { DICOMPropertiesStore::GetInstance()->addProperty(item); } emit dataLoaded(true); }