/*========================================================================= medInria Copyright (c) INRIA 2013 - 2020. All rights reserved. See LICENSE.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. =========================================================================*/ #include #include #include #include #include #include #include class medDataManagerPrivate { public: medDataManagerPrivate(medDataManager *q) : q_ptr(q) {} Q_DECLARE_PUBLIC(medDataManager) medDataManager *const q_ptr; }; // ------------------------- medDataManager ----------------------------------- medDataManager *medDataManager::s_instance = nullptr; medDataManager *medDataManager::instance() { if (!s_instance) { s_instance = new medDataManager(); } return s_instance; } medAbstractData* medDataManager::retrieveData(const medDataIndex &index) { Q_D(medDataManager); return medDataHub::instance()->getData(index); } QList medDataManager::retrieveDataList(const medDataIndex &index) { Q_D(medDataManager); return medDataHub::instance()->getDataList(index); } void medDataManager::loadData(const medDataIndex &index) {} // //////////////////////////////////////////////////////////////////////// // New behavior QUuid medDataManager::importData(medAbstractData *data, bool persistent) { Q_D(medDataManager); return medDataHub::instance()->writeResultsHackV3(*data, persistent); } // //////////////////////////////////////////////////////////////////////// // New behavior QUuid medDataManager::importPath(const QString &dataPath, bool indexWithoutCopying, bool persistent) { Q_D(medDataManager); if (!QFile::exists(dataPath)) return QUuid(); QUuid uuid = QUuid::createUuid(); medDataHub::instance()->loadDataFromLocalFileSystem(dataPath, uuid); return uuid; } /** @brief return writers able to handle the data *Memory management is the responsability of the caller* */ QHash medDataManager::getPossibleWriters(medAbstractData *data) { Q_D(medDataManager); QList allWriters = medAbstractDataFactory::instance()->writers(); QHash possibleWriters; for (QString writerType : allWriters) { dtkAbstractDataWriter *writer = medAbstractDataFactory::instance()->writer(writerType); if (writer->handled().contains(data->identifier())) possibleWriters[writerType] = writer; else delete writer; } if (possibleWriters.isEmpty()) medMessageController::instance()->showError("Sorry, we have no exporter for this format."); return possibleWriters; } void medDataManager::exportData(dtkSmartPointer data) {} void medDataManager::exportDataToPath(dtkSmartPointer data, const QString & filename, const QString & writer) {} int medDataManager::getDataType(const medDataIndex & index) { Q_D(medDataManager); return medDataHub::instance()->getDataType(index); } QList medDataManager::getSubData(const medDataIndex & index) { Q_D(medDataManager); return medDataHub::instance()->getSubData(index); } QPixmap medDataManager::thumbnail(const medDataIndex & index) { return QPixmap(); } QList medDataManager::getSeriesListFromStudy(const medDataIndex &indexStudy) { return QList(); } QList medDataManager::moveStudy(const medDataIndex &indexStudy, const medDataIndex &toPatient) { return QList(); } medDataIndex medDataManager::moveSeries(const medDataIndex &indexSeries, const medDataIndex &toStudy) { return medDataIndex(); } void medDataManager::exportDialog_updateSuffix(int index) { QComboBox *typesHandled = qobject_cast(sender()); if (!typesHandled) return; QFileDialog *exportDialog = qobject_cast(typesHandled->itemData(index, Qt::UserRole + 2).value()); QString extension = typesHandled->itemData(index, Qt::UserRole + 1).toString(); QString currentFilename = med::smartBaseName(exportDialog->selectedFiles().first()); currentFilename += extension; exportDialog->selectFile(currentFilename); } medDataManager::medDataManager() : d_ptr(new medDataManagerPrivate(this)) { Q_D(medDataManager); } void medDataManager::medDataHubRelay(medDataIndex index, QUuid uuid) { emit dataImported(index , uuid); } medDataManager::~medDataManager() {}