feat: improve toolbar open and open from PACS logic when measuring
This commit is contained in:
@@ -721,7 +721,7 @@ void ImportWidget::moveDone(int code, QString dir)
|
||||
if(code == 0)
|
||||
{
|
||||
emit sigMoveDone(code, dir.toStdString());
|
||||
reject();
|
||||
accept();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -417,6 +417,15 @@ void ImageViewManager::activeMeasure() {
|
||||
}, nullptr, nullptr, ImageViewManager::All);
|
||||
}
|
||||
|
||||
void ImageViewManager::unactiveMeasure() {
|
||||
|
||||
smartDo([](auto v, auto) {
|
||||
if (v->hasSeries()) {
|
||||
v->unactiveMeasure();
|
||||
}
|
||||
}, nullptr, nullptr, ImageViewManager::All);
|
||||
}
|
||||
|
||||
void ImageViewManager::deleteMeasure(EventObject* deleteType){
|
||||
switch (deleteType->Detail["type"].toInt()) {
|
||||
case AnnotationDeleteType::DeleteSelectedAnn:
|
||||
|
||||
@@ -86,6 +86,8 @@ public:
|
||||
|
||||
void activeMeasure();
|
||||
|
||||
void unactiveMeasure();
|
||||
|
||||
void deleteMeasure(EventObject* deleteType);
|
||||
|
||||
void changeReconPlane(int plane);
|
||||
|
||||
@@ -807,6 +807,12 @@ void DicomImageView::activeMeasure(Measure *m) {
|
||||
}
|
||||
}
|
||||
|
||||
void DicomImageView::unactiveMeasure() {
|
||||
if (nullptr != mSeries) {
|
||||
mImageViewer->UnActiveMeasure();
|
||||
}
|
||||
}
|
||||
|
||||
void DicomImageView::deleteSelectedMeasure() {
|
||||
if (nullptr != mSeries) {
|
||||
mImageViewer->DeleteSelectedMeasure();
|
||||
|
||||
@@ -101,6 +101,8 @@ public:
|
||||
//Measure
|
||||
void activeMeasure(Measure *m);
|
||||
|
||||
void unactiveMeasure();
|
||||
|
||||
void deleteSelectedMeasure();
|
||||
|
||||
void deleteCurrentSliceMeasure();
|
||||
|
||||
@@ -85,6 +85,11 @@ void DefaultToolBar::changePseudoColor(bool on)
|
||||
emit setPseudoColor(table);
|
||||
}
|
||||
|
||||
void DefaultToolBar::resetToolbarMode()
|
||||
{
|
||||
mBtnSlice->click();
|
||||
}
|
||||
|
||||
QAction* DefaultToolBar::addButton(QToolButton* button, const char* objectName) {
|
||||
button->setObjectName(objectName);
|
||||
button->setToolButtonStyle(Qt::ToolButtonIconOnly);
|
||||
|
||||
@@ -21,6 +21,7 @@ public:
|
||||
void updateNeedCheckFunctionButtons(ViewFunctionState state);
|
||||
void setViewManager(ImageViewManager* aManager);
|
||||
void changePseudoColor(bool on = false);
|
||||
void resetToolbarMode();
|
||||
signals:
|
||||
void openFile();
|
||||
void openFolder();
|
||||
|
||||
@@ -203,6 +203,12 @@ void QDicomViewer::initViewOperation() {
|
||||
void QDicomViewer::initGeneralTool() {
|
||||
// open dir
|
||||
connect(ui->toolBar,&DefaultToolBar::openFolder, [&] {
|
||||
bool needMeasureAgain = false;
|
||||
// unactive measring any way
|
||||
if (MeasureHelper::measuring){
|
||||
ui->viewContainer->getViewManager()->unactiveMeasure();
|
||||
needMeasureAgain = true;
|
||||
}
|
||||
QString cachePath = QDir::currentPath()+"/.cache";
|
||||
if (!QFile::exists(cachePath))
|
||||
{
|
||||
@@ -211,15 +217,25 @@ void QDicomViewer::initGeneralTool() {
|
||||
cache.close();
|
||||
}
|
||||
QSettings setting(cachePath,QSettings::IniFormat);
|
||||
QString p = QFileDialog::getExistingDirectory(this, tr("Open dicom directory"),
|
||||
QString p = QFileDialog::getExistingDirectory(this, tr("Open dicom directory"),
|
||||
setting.contains("LastDir")?setting.value("LastDir").toString():QDir::currentPath());
|
||||
if (!p.isEmpty()) {
|
||||
if (!p.isEmpty()) {
|
||||
openDICOM(p.toLocal8Bit().toStdString(), DIR_OPEN_MODE);
|
||||
setting.setValue("LastDir",p);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if (needMeasureAgain) ui->viewContainer->getViewManager()->activeMeasure();
|
||||
}
|
||||
});
|
||||
// openfile
|
||||
connect(ui->toolBar,&DefaultToolBar::openFile, [&] {
|
||||
connect(ui->toolBar, &DefaultToolBar::openFile, [&]
|
||||
{
|
||||
bool needMeasureAgain = false;
|
||||
|
||||
if (MeasureHelper::measuring){
|
||||
ui->viewContainer->getViewManager()->unactiveMeasure();
|
||||
needMeasureAgain = true;
|
||||
}
|
||||
QString cachePath = QDir::currentPath()+"/.cache";
|
||||
if (!QFile::exists(cachePath))
|
||||
{
|
||||
@@ -234,14 +250,25 @@ void QDicomViewer::initGeneralTool() {
|
||||
openDICOM(fn.toLocal8Bit().toStdString(), FILE_OPEN_MODE);
|
||||
setting.setValue("LastDir", info.absolutePath());
|
||||
}
|
||||
});
|
||||
else{
|
||||
if (needMeasureAgain) ui->viewContainer->getViewManager()->activeMeasure();
|
||||
} });
|
||||
// import
|
||||
connect(ui->toolBar, &DefaultToolBar::import, this, [&] {
|
||||
bool needMeasureAgain = false;
|
||||
|
||||
if (MeasureHelper::measuring){
|
||||
ui->viewContainer->getViewManager()->unactiveMeasure();
|
||||
needMeasureAgain = true;
|
||||
}
|
||||
if (nullptr == m_import) {
|
||||
m_import = new ImportWidget(this);
|
||||
connect(m_import, &ImportWidget::sigMoveDone, this, &QDicomViewer::openDICOMFromPACS);
|
||||
}
|
||||
m_import->show();
|
||||
if (m_import->result() == QDialog::Rejected){
|
||||
if (needMeasureAgain) ui->viewContainer->getViewManager()->activeMeasure();
|
||||
}
|
||||
});
|
||||
// export
|
||||
connect(ui->toolBar, &DefaultToolBar::save, this, [=] {
|
||||
@@ -312,7 +339,6 @@ void QDicomViewer::changeColorTable(const QString& aTable)
|
||||
|
||||
//TODO: 覆盖逻辑和增加逻辑待补充
|
||||
void QDicomViewer::openDICOM(const std::string &dicomName, SeriesOpenMode openMode) {
|
||||
|
||||
displayThumbnailBar(true);
|
||||
|
||||
//必须首先重置成1个窗口的布局
|
||||
@@ -335,7 +361,9 @@ void QDicomViewer::openDICOM(const std::string &dicomName, SeriesOpenMode openMo
|
||||
if (count > 0){
|
||||
ui->viewContainer->getViewManager()->viewReload(vector[0]->GetUniqueID());
|
||||
}
|
||||
|
||||
ui->thumbnailBar->updateThumbnailBar();
|
||||
ui->toolBar->resetToolbarMode();
|
||||
}
|
||||
|
||||
void QDicomViewer::openDICOMWithLayout(const std::string &dicomName, SeriesType aSeriesType)
|
||||
@@ -388,4 +416,5 @@ void QDicomViewer::openDICOMWithLayout(const std::string &dicomName, SeriesType
|
||||
}
|
||||
}
|
||||
ui->thumbnailBar->updateThumbnailBar();
|
||||
ui->toolBar->resetToolbarMode();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user