54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#include "OpenDirAction.h"
|
|
|
|
#include <QFileDialog>
|
|
#include <QMenu>
|
|
#include <QSettings>
|
|
|
|
#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<ExtendMedicalImageProperties*> 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);
|
|
}
|
|
|