From 43c0254fed1a8ae03b457a790bf904691af83a80 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Fri, 20 Mar 2026 17:31:40 -0500 Subject: [PATCH 01/32] COMP: Replace deprecated invalidateFilter() with beginFilterChange/endFilterChange Qt 6.10 deprecated QSortFilterProxyModel::invalidateFilter() in favor of the beginFilterChange()/endFilterChange() pair. Use #if QT_VERSION guards to select the appropriate API while maintaining Qt5 and Qt6 <6.10 compat. Co-Authored-By: Claude Opus 4.6 --- Libs/DICOM/Core/ctkDICOMFilterProxyModel.cpp | 28 +++++++++++++++++++ .../Core/ctkDICOMPatientFilterProxyModel.cpp | 25 +++++++++++++++++ Libs/Widgets/ctkActionsWidget.cpp | 14 ++++++++++ 3 files changed, 67 insertions(+) diff --git a/Libs/DICOM/Core/ctkDICOMFilterProxyModel.cpp b/Libs/DICOM/Core/ctkDICOMFilterProxyModel.cpp index 36e0b4b133..4176084c4f 100644 --- a/Libs/DICOM/Core/ctkDICOMFilterProxyModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMFilterProxyModel.cpp @@ -66,29 +66,57 @@ ctkDICOMFilterProxyModel::~ctkDICOMFilterProxyModel(){ //---------------------------------------------------------------------------- void ctkDICOMFilterProxyModel::setNameSearchText(const QString &text){ Q_D(ctkDICOMFilterProxyModel); +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + this->beginFilterChange(); +#endif d->searchTextName = text; +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->endFilterChange(); +#else this->invalidateFilter(); +#endif } //---------------------------------------------------------------------------- void ctkDICOMFilterProxyModel::setStudySearchText(const QString &text){ Q_D(ctkDICOMFilterProxyModel); +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + this->beginFilterChange(); +#endif d->searchTextStudy = text; +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->endFilterChange(); +#else this->invalidateFilter(); +#endif } //---------------------------------------------------------------------------- void ctkDICOMFilterProxyModel::setSeriesSearchText(const QString &text){ Q_D(ctkDICOMFilterProxyModel); +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + this->beginFilterChange(); +#endif d->searchTextSeries = text; +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->endFilterChange(); +#else this->invalidateFilter(); +#endif } //---------------------------------------------------------------------------- void ctkDICOMFilterProxyModel::setIdSearchText(const QString &text){ Q_D(ctkDICOMFilterProxyModel); +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + this->beginFilterChange(); +#endif d->searchTextID = text; +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->endFilterChange(); +#else this->invalidateFilter(); +#endif } bool ctkDICOMFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const{ diff --git a/Libs/DICOM/Core/ctkDICOMPatientFilterProxyModel.cpp b/Libs/DICOM/Core/ctkDICOMPatientFilterProxyModel.cpp index f9d806bacc..c488a097e2 100644 --- a/Libs/DICOM/Core/ctkDICOMPatientFilterProxyModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMPatientFilterProxyModel.cpp @@ -107,7 +107,12 @@ void ctkDICOMPatientFilterProxyModel::setDisplayMode(DisplayMode mode) d->DisplayMode = mode; // Trigger re-filtering +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->beginFilterChange(); + this->endFilterChange(); +#else this->invalidateFilter(); +#endif emit displayModeChanged(mode); } @@ -217,7 +222,12 @@ void ctkDICOMPatientFilterProxyModel::setWidgetWidth(int width) { d->WidgetWidth = width; d->FirstOutOfBoundsRow = -1; +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->beginFilterChange(); + this->endFilterChange(); +#else this->invalidateFilter(); +#endif } } @@ -236,7 +246,12 @@ void ctkDICOMPatientFilterProxyModel::setMaxTextWidth(int width) { d->MaxTextWidth = width; d->FirstOutOfBoundsRow = -1; +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->beginFilterChange(); + this->endFilterChange(); +#else this->invalidateFilter(); +#endif } } @@ -255,7 +270,12 @@ void ctkDICOMPatientFilterProxyModel::setIconSize(int size) { d->IconSize = size; d->FirstOutOfBoundsRow = -1; +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->beginFilterChange(); + this->endFilterChange(); +#else this->invalidateFilter(); +#endif } } @@ -274,7 +294,12 @@ void ctkDICOMPatientFilterProxyModel::setSpacing(int spacing) { d->Spacing = spacing; d->FirstOutOfBoundsRow = -1; +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->beginFilterChange(); + this->endFilterChange(); +#else this->invalidateFilter(); +#endif } } diff --git a/Libs/Widgets/ctkActionsWidget.cpp b/Libs/Widgets/ctkActionsWidget.cpp index 6df91189cf..93bedc8e3b 100644 --- a/Libs/Widgets/ctkActionsWidget.cpp +++ b/Libs/Widgets/ctkActionsWidget.cpp @@ -348,8 +348,15 @@ ctkSortFilterActionsProxyModel::ctkSortFilterActionsProxyModel(QObject* parentOb void ctkSortFilterActionsProxyModel::setActionsWithNoShortcutVisible(bool visible) { Q_D(ctkSortFilterActionsProxyModel); +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->beginFilterChange(); +#endif d->ActionsWithNoShortcutVisible = visible; +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->endFilterChange(); +#else this->invalidateFilter(); +#endif } //----------------------------------------------------------------------------- @@ -363,8 +370,15 @@ bool ctkSortFilterActionsProxyModel::areActionsWithNoShortcutVisible()const void ctkSortFilterActionsProxyModel::setMenuActionsVisible(bool visible) { Q_D(ctkSortFilterActionsProxyModel); +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->beginFilterChange(); +#endif d->MenuActionsVisible = visible; +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + this->endFilterChange(); +#else this->invalidateFilter(); +#endif } //----------------------------------------------------------------------------- From cbd79bb38ff15df9c2bd9d70203526b334b87064 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Fri, 20 Mar 2026 17:36:30 -0500 Subject: [PATCH 02/32] COMP: Replace QImage::mirrored() with flipped() for Qt 6.9+ compatibility QImage::flipped(Qt::Orientations) was introduced in Qt 6.9. While QImage::mirrored() was briefly annotated as deprecated in Qt 6.9 and then un-deprecated in Qt 6.10 (scheduled for removal from Qt 6.13), the newer flipped() API is clearer in intent and is the recommended replacement going forward. Use #if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) guards to select the appropriate API while maintaining Qt5 compatibility. Co-Authored-By: Claude Opus 4.6 --- .../VTK/Widgets/ctkVTKMagnifyView.cpp | 4 ++++ .../VTK/Widgets/ctkVTKWidgetsUtils.cpp | 14 ++++++++++++-- Libs/Widgets/ctkExpandButton.cpp | 5 +++++ Libs/Widgets/ctkQImageView.cpp | 7 +++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp index 9ce3e7ef9f..e9f77b3600 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp @@ -382,7 +382,11 @@ void ctkVTKMagnifyViewPrivate::updatePixmap() } pixelData->Delete(); image = image.rgbSwapped(); +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + image = image.flipped(); +#else image = image.mirrored(); +#endif // Scale the image to zoom, using FastTransformation to prevent smoothing QSize imageSize = actualSize * this->Magnification; diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.cpp index 8bd94e4aef..b29893ae03 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.cpp @@ -132,7 +132,11 @@ QImage ctk::vtkImageDataToQImage(vtkImageData* imageData) // Qt image is upside-down compared to VTK, so return mirrored image. // Mirroring also takes care of the pixel buffer ownership, because mirroring deep-copies the pixel buffer // (therefore the returned QImage() owns its own pixel buffer). +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + return image.flipped(); +#else return image.mirrored(); +#endif } //---------------------------------------------------------------------------- @@ -157,17 +161,23 @@ bool ctk::qImageToVTKImageData(const QImage& inputQImage, vtkImageData* outputVT vtkIdType numberOfScalarComponents = 0; if (inputQImage.hasAlphaChannel() || forceAlphaChannel) { -#if QT_VERSION >= QT_VERSION_CHECK(5,2,0) +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + normalizedQtImage = inputQImage.convertToFormat(QImage::Format_RGBA8888).flipped(); +#elif QT_VERSION >= QT_VERSION_CHECK(5,2,0) normalizedQtImage = inputQImage.convertToFormat(QImage::Format_RGBA8888).mirrored(); - numberOfScalarComponents = 4; #else qWarning() << Q_FUNC_INFO << " failed: conversion of 4-component image is not available with Qt < 5.2"; return false; #endif + numberOfScalarComponents = 4; } else { +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + normalizedQtImage = inputQImage.convertToFormat(QImage::Format_RGB888).flipped(); +#else normalizedQtImage = inputQImage.convertToFormat(QImage::Format_RGB888).mirrored(); +#endif numberOfScalarComponents = 3; } diff --git a/Libs/Widgets/ctkExpandButton.cpp b/Libs/Widgets/ctkExpandButton.cpp index c38f194655..605d5b71bf 100644 --- a/Libs/Widgets/ctkExpandButton.cpp +++ b/Libs/Widgets/ctkExpandButton.cpp @@ -137,9 +137,14 @@ void ctkExpandButton::updateIcon() } else { +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + QImage mirrorImage = + d->defaultPixmap.toImage().flipped(d->orientation); +#else QImage mirrorImage = d->defaultPixmap.toImage().mirrored(d->orientation == Qt::Horizontal, d->orientation == Qt::Vertical); +#endif this->setIcon(QIcon(QPixmap::fromImage(mirrorImage))); } } diff --git a/Libs/Widgets/ctkQImageView.cpp b/Libs/Widgets/ctkQImageView.cpp index 3e82eb17ef..45dd5d0fa6 100644 --- a/Libs/Widgets/ctkQImageView.cpp +++ b/Libs/Widgets/ctkQImageView.cpp @@ -1020,7 +1020,14 @@ void ctkQImageView::update( bool zoomChanged, } if( d->FlipXAxis || d->FlipYAxis ) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0) + Qt::Orientations flipOrient; + if( d->FlipXAxis ) flipOrient |= Qt::Horizontal; + if( d->FlipYAxis ) flipOrient |= Qt::Vertical; + tmpI = tmpI.flipped( flipOrient ); +#else tmpI = tmpI.mirrored( d->FlipXAxis, d->FlipYAxis ); +#endif if( d->FlipXAxis ) { sourceX = tmpI.width() - (d->TmpXMax - d->TmpXMin) - d->TmpXMin; From 40a975e38030754812e48ad4c13dea9c63cd74c5 Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Sun, 6 Jul 2025 20:32:23 -0500 Subject: [PATCH 03/32] COMP: Q_ENUMS (deprecated) in Qt5.5+ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Requires explicit declaration of the enum in Q_ENUMS(...). • Does not support compile-time introspection via QMetaEnum::fromType(). • Print conversions via qDebug() or QVariant conversions not automatically supported. • Replace all Q_ENUMS(...) with Q_ENUM(...) in your QObject classes. • Make sure the enum is declared immediately before the Q_ENUM macro. • After migration, there is seamless integration into Qt’s meta-object system, better introspection, and compatibility with modern Qt5 (5.5+) and Qt6. --- Libs/Core/ctkAbstractJob.h | 2 +- Libs/DICOM/Core/ctkDICOMJob.h | 2 +- Libs/Scripting/Python/Core/ctkAbstractPythonManager.h | 2 +- Libs/Widgets/ctkComboBox.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Libs/Core/ctkAbstractJob.h b/Libs/Core/ctkAbstractJob.h index 124493f89d..88a1288643 100644 --- a/Libs/Core/ctkAbstractJob.h +++ b/Libs/Core/ctkAbstractJob.h @@ -90,7 +90,7 @@ class CTK_CORE_EXPORT ctkAbstractJob : public QObject Failed, Finished, }; - Q_ENUM(JobStatus) + Q_ENUM(JobStatus); JobStatus status() const; virtual void setStatus(JobStatus status); ///@} diff --git a/Libs/DICOM/Core/ctkDICOMJob.h b/Libs/DICOM/Core/ctkDICOMJob.h index 763ae33dcc..25785739ab 100644 --- a/Libs/DICOM/Core/ctkDICOMJob.h +++ b/Libs/DICOM/Core/ctkDICOMJob.h @@ -60,7 +60,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMJob : public ctkAbstractJob Series, Instances }; - Q_ENUM(DICOMLevels) + Q_ENUM(DICOMLevels); ///@{ /// DICOM Level diff --git a/Libs/Scripting/Python/Core/ctkAbstractPythonManager.h b/Libs/Scripting/Python/Core/ctkAbstractPythonManager.h index 32cc0718dc..0848bfa4b1 100644 --- a/Libs/Scripting/Python/Core/ctkAbstractPythonManager.h +++ b/Libs/Scripting/Python/Core/ctkAbstractPythonManager.h @@ -96,7 +96,7 @@ class CTK_SCRIPTING_PYTHON_CORE_EXPORT ctkAbstractPythonManager : public QObject FileInput, SingleInput }; - Q_ENUM(ExecuteStringMode) + Q_ENUM(ExecuteStringMode); /// Execute a python of python code (can be multiple lines separated with newline) /// and return the result as a QVariant. diff --git a/Libs/Widgets/ctkComboBox.h b/Libs/Widgets/ctkComboBox.h index a9ff51498b..a66164b0ab 100644 --- a/Libs/Widgets/ctkComboBox.h +++ b/Libs/Widgets/ctkComboBox.h @@ -92,7 +92,7 @@ class CTK_WIDGETS_EXPORT ctkComboBox : public QComboBox /// a visible vertical scrollbar. ScrollWithNoVScrollBar }; - Q_ENUM(ScrollEffect) + Q_ENUM(ScrollEffect); /// Return the scrollWheelEffect property value. /// \sa scrollEffect ScrollEffect scrollWheelEffect()const; From 819105c58983cc128bd202a75487a05711c9d87b Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 22 Mar 2026 15:42:24 -0500 Subject: [PATCH 04/32] PERF: Prevent range-loop container detach (clazy range-loop-detach) Use std::as_const() or const local variables to ensure range-for loops call the const begin()/end() overloads, avoiding unnecessary COW detach on implicitly shared Qt containers. Co-Authored-By: Claude Opus 4.6 --- Libs/Core/Testing/Cpp/ctkBackTraceTest.cpp | 2 +- Libs/DICOM/Core/ctkDICOMPatientModel.cpp | 12 ++++++------ Libs/DICOM/Core/ctkDICOMSeriesModel.cpp | 6 +++--- Libs/DICOM/Core/ctkDICOMStudyModel.cpp | 8 ++++---- Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp | 3 ++- Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp | 14 +++++++------- 6 files changed, 23 insertions(+), 22 deletions(-) diff --git a/Libs/Core/Testing/Cpp/ctkBackTraceTest.cpp b/Libs/Core/Testing/Cpp/ctkBackTraceTest.cpp index b0ea3bd426..45a886e7ca 100644 --- a/Libs/Core/Testing/Cpp/ctkBackTraceTest.cpp +++ b/Libs/Core/Testing/Cpp/ctkBackTraceTest.cpp @@ -36,7 +36,7 @@ void Q_DECL_EXPORT bt_func1() bool foundBackTrace = false; bool foundFunc1 = false; bool foundFunc2 = false; - for (const QString& frame : trace) + for (const QString& frame : std::as_const(trace)) { if (frame.contains("ctkBackTrace")) { diff --git a/Libs/DICOM/Core/ctkDICOMPatientModel.cpp b/Libs/DICOM/Core/ctkDICOMPatientModel.cpp index 9d3e26841b..3527d0a242 100644 --- a/Libs/DICOM/Core/ctkDICOMPatientModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMPatientModel.cpp @@ -224,7 +224,7 @@ void ctkDICOMPatientModelPrivate::populatePatients() // Create a set of existing patient items for quick lookup QSet existingPatientUIDs; - for (const PatientData& patient : this->Patients) + for (const PatientData& patient : std::as_const(this->Patients)) { existingPatientUIDs.insert(patient.patientUID); } @@ -360,7 +360,7 @@ void ctkDICOMPatientModelPrivate::populatePatients() // Update allowed servers from database for newly added patients if (!newPatients.isEmpty()) { - for (const PatientData& patientData : newPatients) + for (const PatientData& patientData : std::as_const(newPatients)) { q->updateAllowedServersFromDB(patientData.patientUID); } @@ -433,7 +433,7 @@ int ctkDICOMPatientModelPrivate::getSeriesCountForPatient(const QString& patient { return 0; } - QStringList studyInstanceUIDs = studyModel->studyInstanceUIDs(); + const QStringList studyInstanceUIDs = studyModel->studyInstanceUIDs(); int totalSeriesCount = 0; for (const QString& studyInstanceUID : studyInstanceUIDs) { @@ -458,7 +458,7 @@ int ctkDICOMPatientModelPrivate::getFilteredSeriesCountForPatient(const QString& { return 0; } - QStringList filteredStudyInstanceUIDs = studyModel->filteredStudyInstanceUIDs(); + const QStringList filteredStudyInstanceUIDs = studyModel->filteredStudyInstanceUIDs(); int totalFilteredSeriesCount = 0; for (const QString& studyInstanceUID : filteredStudyInstanceUIDs) { @@ -1791,7 +1791,7 @@ void ctkDICOMPatientModel::updateAllowedServersFromDB(const QString& patientUID) QStringList denyList = connectionsInformation["deny"]; QStringList allowedServers; - for (const QString& connectionName : allActiveConnectionNames) + for (const QString& connectionName : std::as_const(allActiveConnectionNames)) { if (allowList.contains(connectionName)) { @@ -1853,7 +1853,7 @@ void ctkDICOMPatientModel::saveAllowedServersToDB(const QString& patientUID, con QStringList databaseAllowList; QStringList databaseDenyList; - for (const QString& connectionName : allActiveConnectionNames) + for (const QString& connectionName : std::as_const(allActiveConnectionNames)) { if (allowedServers.contains(connectionName)) { diff --git a/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp b/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp index bed26f42e2..a056c5eb0a 100644 --- a/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp @@ -1009,7 +1009,7 @@ void ctkDICOMSeriesModel::forceUpdateSeriesJobs(const QString &seriesInstanceUID // Stop running or waiting jobs QStringList jobUIDs; // Restart the failed job - for (QSharedPointer job : runningJobs) + for (const QSharedPointer& job : std::as_const(runningJobs)) { jobUIDs.append(job->jobUID()); } @@ -1019,7 +1019,7 @@ void ctkDICOMSeriesModel::forceUpdateSeriesJobs(const QString &seriesInstanceUID { QStringList jobUIDs; // Restart the failed job - for (QSharedPointer job : failedJobs) + for (const QSharedPointer& job : std::as_const(failedJobs)) { jobUIDs.append(job->jobUID()); } @@ -1542,7 +1542,7 @@ void ctkDICOMSeriesModel::updateGUIFromScheduler(const QVariant& data, const boo this->refresh(); - for (const QString& seriesInstanceUID : td.QueriedSeriesInstanceUIDs) + for (const QString& seriesInstanceUID : std::as_const(td.QueriedSeriesInstanceUIDs)) { int linearIndex = d->findSeriesLinearIndex(seriesInstanceUID); if (linearIndex < 0) diff --git a/Libs/DICOM/Core/ctkDICOMStudyModel.cpp b/Libs/DICOM/Core/ctkDICOMStudyModel.cpp index 852c949f6c..89b542d20c 100644 --- a/Libs/DICOM/Core/ctkDICOMStudyModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMStudyModel.cpp @@ -263,7 +263,7 @@ void ctkDICOMStudyModelPrivate::populateStudies() // Create a set of existing study instance UIDs for quick lookup QSet existingStudyUIDs; - for (const StudyData& study : this->Studies) + for (const StudyData& study : std::as_const(this->Studies)) { existingStudyUIDs.insert(study.studyInstanceUID); } @@ -1563,7 +1563,7 @@ void ctkDICOMStudyModel::forceUpdateStudyJobs(const QString &studyInstanceUID) // Stop running or waiting jobs QStringList jobUIDs; // Restart the failed job - for (QSharedPointer job : runningJobs) + for (const QSharedPointer& job : std::as_const(runningJobs)) { jobUIDs.append(job->jobUID()); } @@ -1573,7 +1573,7 @@ void ctkDICOMStudyModel::forceUpdateStudyJobs(const QString &studyInstanceUID) { QStringList jobUIDs; // Restart the failed job - for (QSharedPointer job : failedJobs) + for (const QSharedPointer& job : std::as_const(failedJobs)) { jobUIDs.append(job->jobUID()); } @@ -1611,7 +1611,7 @@ void ctkDICOMStudyModel::updateGUIFromScheduler(const QVariant& data) // Sort study UIDs by date/time (most recent first) using the same logic as proxy models QList> studyDateTimePairs; - for (const QString& studyInstanceUID : td.QueriedStudyInstanceUIDs) + for (const QString& studyInstanceUID : std::as_const(td.QueriedStudyInstanceUIDs)) { QModelIndex idx = this->indexFromStudyInstanceUID(studyInstanceUID); QString studyDate = this->data(idx, ctkDICOMStudyModel::StudyDateRole).toString(); diff --git a/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp index a0558b8a8f..3fb469b7df 100644 --- a/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp @@ -265,7 +265,8 @@ void ctkDICOMQueryRetrieveWidget::query() d->QueriesByServer[d->CurrentServer] = query; - for (const auto & StudyAndSeriesInstanceUIDPair : query->studyAndSeriesInstanceUIDQueried() ) + const auto queriedPairs = query->studyAndSeriesInstanceUIDQueried(); + for (const auto & StudyAndSeriesInstanceUIDPair : queriedPairs ) { d->QueriesByStudyUID[StudyAndSeriesInstanceUIDPair.first] = query; d->StudyAndSeriesInstanceUIDPairList.push_back(qMakePair( StudyAndSeriesInstanceUIDPair.first, StudyAndSeriesInstanceUIDPair.second )); diff --git a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp index 4fe34e4a29..1d30cd891d 100644 --- a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp @@ -2887,7 +2887,7 @@ void ctkDICOMVisualBrowserWidget::onStudiesSortedByDate(const QStringList& sorte // Find which patient these studies belong to QString patientID; - QList studyModels = d->PatientModel->allStudyModels(); + const QList studyModels = d->PatientModel->allStudyModels(); for (ctkDICOMStudyModel* studyModel : studyModels) { if (studyModel && studyModel->studyInstanceUIDs().contains(sortedStudyInstanceUIDs.first())) @@ -2919,7 +2919,7 @@ void ctkDICOMVisualBrowserWidget::onStudyReadyToOpen(const QString& studyInstanc // Get the patient ID for this study QString patientID; - QList studyModels = d->PatientModel->allStudyModels(); + const QList studyModels = d->PatientModel->allStudyModels(); for (ctkDICOMStudyModel* studyModel : studyModels) { if (studyModel && studyModel->studyInstanceUIDs().contains(studyInstanceUID)) @@ -3296,7 +3296,7 @@ void ctkDICOMVisualBrowserWidget::onSeriesDoubleClicked(const QString& seriesIns ctkDICOMStudyListView* studyListView = d->PatientView->studyListView(); if (studyListView) { - QMap allSeriesViews = studyListView->getAllSeriesView(); + const QMap allSeriesViews = studyListView->getAllSeriesView(); for (ctkDICOMSeriesTableView* seriesView : allSeriesViews) { if (seriesView) @@ -3383,10 +3383,10 @@ void ctkDICOMVisualBrowserWidget::removePatients(const QStringList& patientUIDs) QStringList loadedSeriesInstanceUIDs = d->DicomDatabase->loadedSeriesInstanceUIDs(); foreach (const QString& patientUID, patientUIDs) { - QStringList studyInstanceUIDs = d->DicomDatabase->studiesForPatient(patientUID); + const QStringList studyInstanceUIDs = d->DicomDatabase->studiesForPatient(patientUID); for (const QString& studyInstanceUID : studyInstanceUIDs) { - QStringList seriesInstanceUIDs = d->DicomDatabase->seriesForStudy(studyInstanceUID); + const QStringList seriesInstanceUIDs = d->DicomDatabase->seriesForStudy(studyInstanceUID); for (const QString& seriesInstanceUID : seriesInstanceUIDs) { loadedSeriesInstanceUIDs.removeAll(seriesInstanceUID); @@ -3487,7 +3487,7 @@ void ctkDICOMVisualBrowserWidget::removeStudies(const QStringList& studyInstance QStringList loadedSeriesInstanceUIDs = d->DicomDatabase->loadedSeriesInstanceUIDs(); foreach (const QString& studyInstanceUID, studyInstanceUIDs) { - QStringList seriesInstanceUIDs = d->DicomDatabase->seriesForStudy(studyInstanceUID); + const QStringList seriesInstanceUIDs = d->DicomDatabase->seriesForStudy(studyInstanceUID); for (const QString& seriesInstanceUID : seriesInstanceUIDs) { loadedSeriesInstanceUIDs.removeAll(seriesInstanceUID); @@ -3743,7 +3743,7 @@ void ctkDICOMVisualBrowserWidget::onLoadSeries(const QStringList& seriesInstance { emit seriesRetrieved(retrievedSeriesInstanceUIDs); QStringList loadedSeriesInstanceUIDs = d->DicomDatabase->loadedSeriesInstanceUIDs(); - for (const QString& uid : retrievedSeriesInstanceUIDs) + for (const QString& uid : std::as_const(retrievedSeriesInstanceUIDs)) { if (!loadedSeriesInstanceUIDs.contains(uid)) { From f663a5e7527f713295b20f3e2fb2a4690b5a59b9 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Fri, 20 Mar 2026 19:37:29 -0500 Subject: [PATCH 05/32] PERF: Replace QMap with QHash for pointer keys (clazy qmap-with-pointer-key) QMap sorts by key, but sorting by memory address is meaningless and non-deterministic. Replace QMap with QHash for faster O(1) lookups without spurious ordering. Co-Authored-By: Claude Opus 4.6 --- .../VTK/Widgets/Testing/Cpp/ctkVTKDataSetModelTest1.cpp | 6 +++--- Libs/Widgets/ctkLayoutManager.cpp | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKDataSetModelTest1.cpp b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKDataSetModelTest1.cpp index 3cfa486f8d..ced6ff6100 100644 --- a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKDataSetModelTest1.cpp +++ b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKDataSetModelTest1.cpp @@ -21,7 +21,7 @@ // Qt includes #include #include -#include +#include #include #include @@ -48,7 +48,7 @@ namespace bool checkItems(int line, const QList& expectedAttributeArrays, ctkVTKDataSetModel* dataSetModel, - QMap locations) + QHash locations) { foreach(vtkAbstractArray* expectedDataArray, expectedAttributeArrays) { @@ -89,7 +89,7 @@ int ctkVTKDataSetModelTest1(int argc, char * argv [] ) { QApplication app(argc, argv); - QMap locations; + QHash locations; vtkNew dataSet; diff --git a/Libs/Widgets/ctkLayoutManager.cpp b/Libs/Widgets/ctkLayoutManager.cpp index 7764b3600f..1f4c6761b5 100644 --- a/Libs/Widgets/ctkLayoutManager.cpp +++ b/Libs/Widgets/ctkLayoutManager.cpp @@ -20,6 +20,7 @@ // Qt includes #include +#include #include #include #include @@ -250,7 +251,7 @@ void ctkLayoutManager::setSpacing(int spacing) void ctkLayoutManager::refresh() { Q_D(ctkLayoutManager); - QMap updatesEnabled; + QHash updatesEnabled; foreach(QWidget* viewport, d->Viewports) { if (!viewport) @@ -265,7 +266,7 @@ void ctkLayoutManager::refresh() this->setupLayout(); foreach(QWidget* viewport, d->Viewports) { - QMap::iterator updatesEnabledIt = updatesEnabled.find(viewport); + QHash::iterator updatesEnabledIt = updatesEnabled.find(viewport); if (updatesEnabledIt == updatesEnabled.end()) { continue; From 6218b0a64f42b096c13f870fcdf67e61f98e4262 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Fri, 20 Mar 2026 18:55:20 -0500 Subject: [PATCH 06/32] STYLE: Replace container anti-patterns with direct iteration (clazy) Replace foreach(x, map.keys()) and foreach(x, map.values()) with constBegin/constEnd iterator loops to avoid creating temporary QList copies. Also replace map.keys().contains() with map.contains(). Co-Authored-By: Claude Opus 4.6 --- .../Core/ctkCmdLineModuleCache.cpp | 4 +- Libs/Core/ctkErrorLogAbstractModel.cpp | 28 ++++---- Libs/Core/ctkWorkflow.cpp | 14 ++-- Libs/DICOM/Core/ctkDICOMDatabase.cpp | 52 ++++++++------- Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp | 18 ++--- Libs/DICOM/Core/ctkDICOMQuery.cpp | 34 +++++----- .../Widgets/ctkDICOMQueryRetrieveWidget.cpp | 16 ++--- Libs/DICOM/Widgets/ctkDICOMTableView.cpp | 24 +++---- .../Widgets/ctkDICOMVisualBrowserWidget.cpp | 30 ++++----- .../ctkPluginFrameworkDebugOptions.cpp | 6 +- Libs/Widgets/ctkLayoutManager.cpp | 3 +- Libs/Widgets/ctkModalityWidget.cpp | 65 +++++++++---------- Libs/Widgets/ctkSettingsDialog.cpp | 26 ++++---- Libs/Widgets/ctkSettingsPanel.cpp | 26 ++++---- Libs/Widgets/ctkWorkflowButtonBoxWidget.cpp | 11 ++-- 15 files changed, 178 insertions(+), 179 deletions(-) diff --git a/Libs/CommandLineModules/Core/ctkCmdLineModuleCache.cpp b/Libs/CommandLineModules/Core/ctkCmdLineModuleCache.cpp index 8e495115e0..b6c1ad9c20 100644 --- a/Libs/CommandLineModules/Core/ctkCmdLineModuleCache.cpp +++ b/Libs/CommandLineModules/Core/ctkCmdLineModuleCache.cpp @@ -182,8 +182,8 @@ void ctkCmdLineModuleCache::removeCacheEntry(const QUrl& moduleLocation) void ctkCmdLineModuleCache::clearCache() { - foreach(const QUrl &url, d->LocationToXmlDescription.keys()) + for (auto it = d->LocationToXmlDescription.constBegin(); it != d->LocationToXmlDescription.constEnd(); ++it) { - removeCacheEntry(url); + removeCacheEntry(it.key()); } } diff --git a/Libs/Core/ctkErrorLogAbstractModel.cpp b/Libs/Core/ctkErrorLogAbstractModel.cpp index 868dd5b17d..6d07327141 100644 --- a/Libs/Core/ctkErrorLogAbstractModel.cpp +++ b/Libs/Core/ctkErrorLogAbstractModel.cpp @@ -92,10 +92,9 @@ ctkErrorLogAbstractModelPrivate::ctkErrorLogAbstractModelPrivate(ctkErrorLogAbst // -------------------------------------------------------------------------- ctkErrorLogAbstractModelPrivate::~ctkErrorLogAbstractModelPrivate() { - foreach(const QString& handlerName, this->RegisteredHandlers.keys()) + for (auto it = this->RegisteredHandlers.constBegin(); it != this->RegisteredHandlers.constEnd(); ++it) { - ctkErrorLogAbstractMessageHandler * msgHandler = - this->RegisteredHandlers.value(handlerName); + ctkErrorLogAbstractMessageHandler * msgHandler = it.value(); Q_ASSERT(msgHandler); msgHandler->setEnabled(false); delete msgHandler; @@ -162,7 +161,7 @@ bool ctkErrorLogAbstractModel::registerMsgHandler(ctkErrorLogAbstractMessageHand { return false; } - if (d->RegisteredHandlers.keys().contains(msgHandler->handlerName())) + if (d->RegisteredHandlers.contains(msgHandler->handlerName())) { return false; } @@ -187,7 +186,7 @@ QStringList ctkErrorLogAbstractModel::msgHandlerNames()const bool ctkErrorLogAbstractModel::msgHandlerEnabled(const QString& handlerName) const { Q_D(const ctkErrorLogAbstractModel); - if (!d->RegisteredHandlers.keys().contains(handlerName)) + if (!d->RegisteredHandlers.contains(handlerName)) { return false; } @@ -198,7 +197,7 @@ bool ctkErrorLogAbstractModel::msgHandlerEnabled(const QString& handlerName) con void ctkErrorLogAbstractModel::setMsgHandlerEnabled(const QString& handlerName, bool enabled) { Q_D(ctkErrorLogAbstractModel); - if (!d->RegisteredHandlers.keys().contains(handlerName)) + if (!d->RegisteredHandlers.contains(handlerName)) { // qCritical() << "Failed to enable/disable message handler " << handlerName // << "- Handler not registered !"; @@ -212,11 +211,11 @@ QStringList ctkErrorLogAbstractModel::msgHandlerEnabled() const { Q_D(const ctkErrorLogAbstractModel); QStringList msgHandlers; - foreach(const QString& handlerName, d->RegisteredHandlers.keys()) + for (auto it = d->RegisteredHandlers.constBegin(); it != d->RegisteredHandlers.constEnd(); ++it) { - if (d->RegisteredHandlers.value(handlerName)->enabled()) + if (it.value()->enabled()) { - msgHandlers << handlerName; + msgHandlers << it.key(); } } return msgHandlers; @@ -247,9 +246,9 @@ void ctkErrorLogAbstractModel::disableAllMsgHandler() void ctkErrorLogAbstractModel::setAllMsgHandlerEnabled(bool enabled) { Q_D(ctkErrorLogAbstractModel); - foreach(const QString& msgHandlerName, d->RegisteredHandlers.keys()) + for (auto it = d->RegisteredHandlers.constBegin(); it != d->RegisteredHandlers.constEnd(); ++it) { - this->setMsgHandlerEnabled(msgHandlerName, enabled); + this->setMsgHandlerEnabled(it.key(), enabled); } } @@ -478,10 +477,9 @@ void ctkErrorLogAbstractModel::setAsynchronousLogging(bool value) return; } - foreach(const QString& handlerName, d->RegisteredHandlers.keys()) + for (auto it = d->RegisteredHandlers.constBegin(); it != d->RegisteredHandlers.constEnd(); ++it) { - d->setMessageHandlerConnection( - d->RegisteredHandlers.value(handlerName), value); + d->setMessageHandlerConnection(it.value(), value); } QObject::disconnect(this, @@ -582,7 +580,7 @@ int ctkErrorLogAbstractModel::logEntryCount()const ctkErrorLogAbstractMessageHandler* ctkErrorLogAbstractModel::msgHandler(const QString& handlerName)const { Q_D(const ctkErrorLogAbstractModel); - if (!d->RegisteredHandlers.keys().contains(handlerName)) + if (!d->RegisteredHandlers.contains(handlerName)) { return nullptr; } diff --git a/Libs/Core/ctkWorkflow.cpp b/Libs/Core/ctkWorkflow.cpp index 971e3c369e..9ef3c4868c 100644 --- a/Libs/Core/ctkWorkflow.cpp +++ b/Libs/Core/ctkWorkflow.cpp @@ -296,12 +296,12 @@ void ctkWorkflowPrivate::createTransitionToPreviousStartingStep(ctkWorkflowStep* // -------------------------------------------------------------------------- ctkWorkflowStep* ctkWorkflowPrivate::stepFromId(const QString& id)const { - foreach(ctkWorkflowStep* step, this->StepToForwardAndBackwardStepMap.keys()) + for (auto it = this->StepToForwardAndBackwardStepMap.constBegin(); it != this->StepToForwardAndBackwardStepMap.constEnd(); ++it) { - Q_ASSERT(step); - if (QString::compare(step->id(), id, Qt::CaseInsensitive) == 0) + Q_ASSERT(it.key()); + if (QString::compare(it.key()->id(), id, Qt::CaseInsensitive) == 0) { - return step; + return it.key(); } } return 0; @@ -739,11 +739,11 @@ QList ctkWorkflow::finishSteps()const // iterate through our list of steps, and keep the steps that don't have anything following them QList finishSteps; - foreach (ctkWorkflowStep* step, d->StepToForwardAndBackwardStepMap.keys()) + for (auto it = d->StepToForwardAndBackwardStepMap.constBegin(); it != d->StepToForwardAndBackwardStepMap.constEnd(); ++it) { - if (!this->canGoForward(step)) + if (!this->canGoForward(it.key())) { - finishSteps.append(step); + finishSteps.append(it.key()); } } return finishSteps; diff --git a/Libs/DICOM/Core/ctkDICOMDatabase.cpp b/Libs/DICOM/Core/ctkDICOMDatabase.cpp index b43e59060e..174d211c28 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase.cpp +++ b/Libs/DICOM/Core/ctkDICOMDatabase.cpp @@ -1151,9 +1151,9 @@ QString ctkDICOMDatabasePrivate::getDisplayPatientFieldsKey(const QString& patie QString ctkDICOMDatabasePrivate::getDisplayStudyFieldsKey(QString studyInstanceUID, QMap > &displayedFieldsMapStudy) { // Look for the study in the displayed fields cache first - foreach (QString currentStudyInstanceUid, displayedFieldsMapStudy.keys()) + for (auto it = displayedFieldsMapStudy.constBegin(); it != displayedFieldsMapStudy.constEnd(); ++it) { - if ( !displayedFieldsMapStudy[currentStudyInstanceUid]["StudyInstanceUID"].compare(studyInstanceUID) ) + if ( !it.value()["StudyInstanceUID"].compare(studyInstanceUID) ) { return studyInstanceUID; } @@ -1192,9 +1192,9 @@ QString ctkDICOMDatabasePrivate::getDisplayStudyFieldsKey(QString studyInstanceU QString ctkDICOMDatabasePrivate::getDisplaySeriesFieldsKey(QString seriesInstanceUID, QMap > &displayedFieldsMapSeries) { // Look for the series in the displayed fields cache first - foreach (QString currentSeriesInstanceUid, displayedFieldsMapSeries.keys()) + for (auto it = displayedFieldsMapSeries.constBegin(); it != displayedFieldsMapSeries.constEnd(); ++it) { - if ( !displayedFieldsMapSeries[currentSeriesInstanceUid]["SeriesInstanceUID"].compare(seriesInstanceUID) ) + if ( !it.value()["SeriesInstanceUID"].compare(seriesInstanceUID) ) { return seriesInstanceUID; } @@ -1238,14 +1238,15 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMap currentPatient = displayedFieldsMapPatient[compositeID]; + QMap currentPatient = it.value(); if (currentPatient["PatientID"].isEmpty() || currentPatient["PatientsName"].isEmpty()) { logger.error("Unable to locate the patient due to missing values for PatientsName and/or PatientID. " @@ -1267,14 +1268,14 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMap boundValues; - foreach (QString tagName, currentPatient.keys()) + for (auto tagIt = currentPatient.constBegin(); tagIt != currentPatient.constEnd(); ++tagIt) { - if (tagName == "PatientCompositeID") + if (tagIt.key() == "PatientCompositeID") { continue; // Do not write patient index that is only used internally and temporarily } - displayPatientsFieldUpdateString.append( tagName + " = ? , " ); - boundValues << currentPatient[tagName]; + displayPatientsFieldUpdateString.append( tagIt.key() + " = ? , " ); + boundValues << tagIt.value(); } // Trim the separators from the end @@ -1307,13 +1308,14 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMap currentStudy = displayedFieldsMapStudy[currentStudyInstanceUid]; + QMap currentStudy = studyIt.value(); QSqlQuery displayStudiesQuery(this->Database); displayStudiesQuery.prepare("SELECT StudyInstanceUID FROM Studies WHERE StudyInstanceUID = ? ;"); displayStudiesQuery.addBindValue(currentStudyInstanceUid); @@ -1326,8 +1328,9 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMap boundValues; - foreach (QString tagName, currentStudy.keys()) + for (auto tagIt = currentStudy.constBegin(); tagIt != currentStudy.constEnd(); ++tagIt) { + const QString& tagName = tagIt.key(); if (!tagName.compare("PatientCompositeID")) { displayStudiesFieldUpdateString.append( "PatientsUID = ? , " ); @@ -1364,14 +1367,15 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMap currentSeries = displayedFieldsMapSeries[currentSeriesInstanceUid]; + QMap currentSeries = seriesIt.value(); QSqlQuery displaySeriesQuery(this->Database); displaySeriesQuery.prepare("SELECT SeriesInstanceUID FROM Series WHERE SeriesInstanceUID = ? ;"); displaySeriesQuery.addBindValue(currentSeriesInstanceUid); @@ -1384,10 +1388,10 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMap boundValues; - foreach (QString tagName, currentSeries.keys()) + for (auto tagIt = currentSeries.constBegin(); tagIt != currentSeries.constEnd(); ++tagIt) { - displaySeriesFieldUpdateString.append( tagName + " = ? , " ); - boundValues << currentSeries[tagName]; + displaySeriesFieldUpdateString.append( tagIt.key() + " = ? , " ); + boundValues << tagIt.value(); } // Trim the separators from the end displaySeriesFieldUpdateString = displaySeriesFieldUpdateString.left(displaySeriesFieldUpdateString.size() - 3); @@ -3085,9 +3089,9 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabase::insert(const QListcopyFile(); QMap datasets = jobResponseSet->datasets(); - for(QString key : datasets.keys()) + for (auto it = datasets.constBegin(); it != datasets.constEnd(); ++it) { - ctkDICOMItem* dataset = datasets.value(key); + ctkDICOMItem* dataset = it.value(); if (!dataset) { continue; @@ -3102,7 +3106,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabase::insert(const QList ctkDICOMJobResponseSet::datasetShared() const void ctkDICOMJobResponseSet::setDatasets(const QMap& dcmItems, bool takeOwnership) { Q_D(ctkDICOMJobResponseSet); - for (const QString& key : dcmItems.keys()) + for (auto it = dcmItems.constBegin(); it != dcmItems.constEnd(); ++it) { - DcmItem* dcmItem = dcmItems.value(key); + DcmItem* dcmItem = it.value(); if (!dcmItem) { continue; @@ -227,7 +227,7 @@ void ctkDICOMJobResponseSet::setDatasets(const QMap& dcmItems QSharedPointer(new ctkDICOMItem); dataset->InitializeFromItem(dcmItem, takeOwnership); - d->Datasets.insert(key, dataset); + d->Datasets.insert(it.key(), dataset); } } @@ -237,15 +237,15 @@ QMap ctkDICOMJobResponseSet::datasets() const Q_D(const ctkDICOMJobResponseSet); QMap datasets; - for (const QString& key : d->Datasets.keys()) + for (auto it = d->Datasets.constBegin(); it != d->Datasets.constEnd(); ++it) { - QSharedPointer dcmItem = d->Datasets.value(key); + QSharedPointer dcmItem = it.value(); if (!dcmItem) { continue; } - datasets.insert(key, dcmItem.data()); + datasets.insert(it.key(), dcmItem.data()); } return datasets; @@ -276,16 +276,16 @@ ctkDICOMJobResponseSet* ctkDICOMJobResponseSet::clone() // Clone datasets QMap datasets = this->datasets(); - for (const QString& key : datasets.keys()) + for (auto it = datasets.constBegin(); it != datasets.constEnd(); ++it) { - ctkDICOMItem* dataset = datasets.value(key); + ctkDICOMItem* dataset = it.value(); if (!dataset) { continue; } QSharedPointer newDataset = QSharedPointer(dataset->Clone()); - newJobResponseSet->d_func()->Datasets.insert(key, newDataset); + newJobResponseSet->d_func()->Datasets.insert(it.key(), newDataset); } return newJobResponseSet; diff --git a/Libs/DICOM/Core/ctkDICOMQuery.cpp b/Libs/DICOM/Core/ctkDICOMQuery.cpp index def431c064..e0acd1e1e5 100644 --- a/Libs/DICOM/Core/ctkDICOMQuery.cpp +++ b/Libs/DICOM/Core/ctkDICOMQuery.cpp @@ -445,9 +445,10 @@ bool ctkDICOMQuery::query(ctkDICOMDatabase& database) float progressRatio = 25. / d->StudyDatasets.count(); int i = 0; - foreach(QString studyInstanceUID, d->StudyDatasets.keys()) + for (auto it = d->StudyDatasets.constBegin(); it != d->StudyDatasets.constEnd(); ++it) { - DcmDataset *studyDataset = d->StudyDatasets.value(studyInstanceUID); + const QString& studyInstanceUID = it.key(); + DcmDataset *studyDataset = it.value(); DcmElement *patientName, *patientID; studyDataset->findAndGetElement(DCM_PatientName, patientName); studyDataset->findAndGetElement(DCM_PatientID, patientID); @@ -1130,37 +1131,38 @@ QString ctkDICOMQuery::applyFilters(QMap filters) * Study Description, Modalities in Study, and Study Date are used. */ QString seriesDescription; - foreach(QString key, filters.keys()) + for (auto it = filters.constBegin(); it != filters.constEnd(); ++it) { - if (key == QString("Name") && !filters[key].toString().isEmpty()) + const QString& key = it.key(); + if (key == QString("Name") && !it.value().toString().isEmpty()) { // make the filter a wildcard in dicom style d->QueryDcmDataset->putAndInsertString(DCM_PatientName, - (QString("*") + filters[key].toString() + QString("*")).toLatin1().data()); + (QString("*") + it.value().toString() + QString("*")).toLatin1().data()); } - else if (key == QString("ID") && !filters[key].toString().isEmpty()) + else if (key == QString("ID") && !it.value().toString().isEmpty()) { // make the filter a wildcard in dicom style d->QueryDcmDataset->putAndInsertString(DCM_PatientID, - (QString("*") + filters[key].toString() + QString("*")).toLatin1().data()); + (QString("*") + it.value().toString() + QString("*")).toLatin1().data()); } - else if (key == QString("Study") && !filters[key].toString().isEmpty()) + else if (key == QString("Study") && !it.value().toString().isEmpty()) { // make the filter a wildcard in dicom style d->QueryDcmDataset->putAndInsertString(DCM_StudyDescription, - (QString("*") + filters[key].toString() + QString("*")).toLatin1().data()); + (QString("*") + it.value().toString() + QString("*")).toLatin1().data()); } - else if (key == QString("AccessionNumber") && !filters[key].toString().isEmpty()) + else if (key == QString("AccessionNumber") && !it.value().toString().isEmpty()) { // make the filter a wildcard in dicom style d->QueryDcmDataset->putAndInsertString(DCM_AccessionNumber, - (QString("*") + filters[key].toString() + QString("*")).toLatin1().data()); + (QString("*") + it.value().toString() + QString("*")).toLatin1().data()); } - else if (key == QString("Modalities") && filters[key].toStringList().count() != 0) + else if (key == QString("Modalities") && it.value().toStringList().count() != 0) { // make the filter be an "OR" of modalities using backslash (dicom-style) QString modalitySearch(""); - foreach (const QString& modality, filters[key].toStringList()) + foreach (const QString& modality, it.value().toStringList()) { modalitySearch += modality + QString("\\"); } @@ -1170,10 +1172,10 @@ QString ctkDICOMQuery::applyFilters(QMap filters) d->QueryDcmDataset->putAndInsertString(DCM_ModalitiesInStudy, modalitySearch.toLatin1().data()); } // Remember Series Description for later series query if we go through the keys now - else if (key == QString("Series") && !filters[key].toString().isEmpty()) + else if (key == QString("Series") && !it.value().toString().isEmpty()) { // make the filter a wildcard in dicom style - seriesDescription = "*" + filters[key].toString() + "*"; + seriesDescription = "*" + it.value().toString() + "*"; } else { @@ -1181,7 +1183,7 @@ QString ctkDICOMQuery::applyFilters(QMap filters) } } - if (filters.keys().contains("StartDate") && filters.keys().contains("EndDate") && + if (filters.contains("StartDate") && filters.contains("EndDate") && !filters["StartDate"].toString().isEmpty() && !filters["EndDate"].toString().isEmpty()) { QString dateRange = filters["StartDate"].toString() + diff --git a/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp index 3fb469b7df..37eb991781 100644 --- a/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp @@ -87,13 +87,13 @@ ctkDICOMQueryRetrieveWidgetPrivate::ctkDICOMQueryRetrieveWidgetPrivate( //---------------------------------------------------------------------------- ctkDICOMQueryRetrieveWidgetPrivate::~ctkDICOMQueryRetrieveWidgetPrivate() { - foreach(ctkDICOMQuery* query, this->QueriesByServer.values()) + for (auto it = this->QueriesByServer.constBegin(); it != this->QueriesByServer.constEnd(); ++it) { - delete query; + delete it.value(); } - foreach(ctkDICOMRetrieve* retrieval, this->RetrievalsByStudyUID.values()) + for (auto it = this->RetrievalsByStudyUID.constBegin(); it != this->RetrievalsByStudyUID.constEnd(); ++it) { - delete retrieval; + delete it.value(); } } @@ -279,7 +279,7 @@ void ctkDICOMQueryRetrieveWidget::query() d->dicomTableManager->setDICOMDatabase(&(d->QueryResultDatabase)); } - d->RetrieveButton->setEnabled(d->QueriesByStudyUID.keys().size() != 0); + d->RetrieveButton->setEnabled(!d->QueriesByStudyUID.isEmpty()); // We would need to call database.updateDisplayedFields() now, but currently // updateDisplayedFields requires entries in the Image table and tag cache @@ -380,12 +380,12 @@ void ctkDICOMQueryRetrieveWidget::retrieve() { // perform the retrieve QMap parameters; - foreach(QString server, d->QueriesByServer.keys()) + for (auto it = d->QueriesByServer.constBegin(); it != d->QueriesByServer.constEnd(); ++it) { - ctkDICOMQuery* query = d->QueriesByServer[server]; + ctkDICOMQuery* query = it.value(); if (query == currentQuery) { - parameters = d->ServerNodeWidget->serverNodeParameters(server); + parameters = d->ServerNodeWidget->serverNodeParameters(it.key()); break; } } diff --git a/Libs/DICOM/Widgets/ctkDICOMTableView.cpp b/Libs/DICOM/Widgets/ctkDICOMTableView.cpp index f864bf7432..09345c53d3 100644 --- a/Libs/DICOM/Widgets/ctkDICOMTableView.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMTableView.cpp @@ -691,25 +691,25 @@ void ctkDICOMTableView::setQuery(const QStringList &uids) } ++filterIt; } - foreach (const QString& column, d->sqlGreaterWhereConditions.keys()) + for (auto it = d->sqlGreaterWhereConditions.constBegin(); it != d->sqlGreaterWhereConditions.constEnd(); ++it) { - queryString += " AND " + column + " > ?" ; - boundValues << d->sqlGreaterWhereConditions[column]; + queryString += " AND " + it.key() + " > ?" ; + boundValues << it.value(); } - foreach (const QString& column, d->sqlLessWhereConditions.keys()) + for (auto it = d->sqlLessWhereConditions.constBegin(); it != d->sqlLessWhereConditions.constEnd(); ++it) { - queryString += " AND " + column + " < ?" ; - boundValues << d->sqlLessWhereConditions[column]; + queryString += " AND " + it.key() + " < ?" ; + boundValues << it.value(); } - foreach (const QString& column, d->sqlGreaterEqualWhereConditions.keys()) + for (auto it = d->sqlGreaterEqualWhereConditions.constBegin(); it != d->sqlGreaterEqualWhereConditions.constEnd(); ++it) { - queryString += " AND " + column + " >= ?" ; - boundValues << d->sqlGreaterEqualWhereConditions[column]; + queryString += " AND " + it.key() + " >= ?" ; + boundValues << it.value(); } - foreach (const QString& column, d->sqlLessEqualWhereConditions.keys()) + for (auto it = d->sqlLessEqualWhereConditions.constBegin(); it != d->sqlLessEqualWhereConditions.constEnd(); ++it) { - queryString += " AND " + column + " <= ?" ; - boundValues << d->sqlLessEqualWhereConditions[column]; + queryString += " AND " + it.key() + " <= ?" ; + boundValues << it.value(); } if (d->dicomDatabase != 0 && d->dicomDatabase->isOpen() diff --git a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp index 1d30cd891d..139b51ad33 100644 --- a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp @@ -1241,10 +1241,10 @@ QStringList ctkDICOMVisualBrowserWidgetPrivate::filterPatientList(const QStringL foreach (QString patientUID, patientList) { bool filtered = false; - for (QString key : filters.keys()) + for (auto it = filters.constBegin(); it != filters.constEnd(); ++it) { - QString filter = this->DicomDatabase->fieldForPatient(key, patientUID); - QString filterValue = filters.value(key).toString(); + QString filter = this->DicomDatabase->fieldForPatient(it.key(), patientUID); + QString filterValue = it.value().toString(); if (!filter.contains(filterValue, Qt::CaseInsensitive)) { filtered = true; @@ -1277,11 +1277,11 @@ QStringList ctkDICOMVisualBrowserWidgetPrivate::filterStudyList(const QStringLis foreach (QString studyItem, studyList) { bool filtered = false; - for (QString key : filters.keys()) + for (auto it = filters.constBegin(); it != filters.constEnd(); ++it) { - QString filter = this->DicomDatabase->fieldForStudy(key, studyItem); - QString filterValue = filters.value(key).toString(); - if (key == "StudyDate") + QString filter = this->DicomDatabase->fieldForStudy(it.key(), studyItem); + QString filterValue = it.value().toString(); + if (it.key() == QLatin1String("StudyDate")) { int nDays = filterValue.toInt(); if (nDays != -1) @@ -1329,12 +1329,12 @@ QStringList ctkDICOMVisualBrowserWidgetPrivate::filterSeriesList(const QStringLi foreach (QString seriesItem, seriesList) { bool filtered = false; - for (QString key : filters.keys()) + for (auto it = filters.constBegin(); it != filters.constEnd(); ++it) { - QString filter = this->DicomDatabase->fieldForSeries(key, seriesItem); - if (key == "Modality") + QString filter = this->DicomDatabase->fieldForSeries(it.key(), seriesItem); + if (it.key() == QLatin1String("Modality")) { - QStringList filterValues = filters.value(key).toStringList(); + QStringList filterValues = it.value().toStringList(); if (!filterValues.contains("Any") && !filterValues.contains(filter)) { filtered = true; @@ -1343,7 +1343,7 @@ QStringList ctkDICOMVisualBrowserWidgetPrivate::filterSeriesList(const QStringLi } else { - QString filterValue = filters.value(key).toString(); + QString filterValue = it.value().toString(); if (!filter.contains(filterValue, Qt::CaseInsensitive)) { filtered = true; @@ -3901,16 +3901,16 @@ void ctkDICOMVisualBrowserWidget::removeSeries(const QStringList& seriesInstance d->DicomDatabase->setLoadedSeriesInstanceUIDs(loadedSeriesInstanceUIDs); // Refresh the affected series models and update their views' viewports - foreach (const QString& studyUID, affectedSeriesModels.keys()) + for (auto it = affectedSeriesModels.constBegin(); it != affectedSeriesModels.constEnd(); ++it) { - ctkDICOMSeriesModel* seriesModel = affectedSeriesModels.value(studyUID, nullptr); + ctkDICOMSeriesModel* seriesModel = it.value(); if (seriesModel) { seriesModel->refresh(); } // Also refresh the series view and force layout recalculation - ctkDICOMSeriesTableView* seriesView = studyListView->getSeriesViewForStudy(studyUID); + ctkDICOMSeriesTableView* seriesView = studyListView->getSeriesViewForStudy(it.key()); if (seriesView) { // reset the model to force a full view update diff --git a/Libs/PluginFramework/ctkPluginFrameworkDebugOptions.cpp b/Libs/PluginFramework/ctkPluginFrameworkDebugOptions.cpp index 8bd46f3776..ea6bbd4a5a 100644 --- a/Libs/PluginFramework/ctkPluginFrameworkDebugOptions.cpp +++ b/Libs/PluginFramework/ctkPluginFrameworkDebugOptions.cpp @@ -197,11 +197,11 @@ void ctkPluginFrameworkDebugOptions::setOptions(const QHash& return; } // first check for removals - foreach (const QString& key, this->options.keys()) + for (auto it = this->options.constBegin(); it != this->options.constEnd(); ++it) { - if (!newOptions.contains(key)) + if (!newOptions.contains(it.key())) { - QString symbolicName = this->getSymbolicName(key); + QString symbolicName = this->getSymbolicName(it.key()); if (!symbolicName.isEmpty()) { fireChangesTo.insert(symbolicName); diff --git a/Libs/Widgets/ctkLayoutManager.cpp b/Libs/Widgets/ctkLayoutManager.cpp index 1f4c6761b5..112b59ff46 100644 --- a/Libs/Widgets/ctkLayoutManager.cpp +++ b/Libs/Widgets/ctkLayoutManager.cpp @@ -339,8 +339,9 @@ void ctkLayoutManager::setupLayout() { qWarning() << "Expected 'viewports' or 'layout' as XML root element, found" << d->Layout.documentElement().tagName(); } - foreach (const QString& viewportName, d->Viewports.keys()) + for (auto it = d->Viewports.constBegin(); it != d->Viewports.constEnd(); ++it) { + const QString& viewportName = it.key(); bool usedInLayout = viewportNamesUsedInLayout.contains(viewportName); QWidget* viewport = d->viewport(viewportName); if (d->isViewportUsedInLayout(viewport) == usedInLayout) diff --git a/Libs/Widgets/ctkModalityWidget.cpp b/Libs/Widgets/ctkModalityWidget.cpp index 719954c715..ab79c68fb3 100644 --- a/Libs/Widgets/ctkModalityWidget.cpp +++ b/Libs/Widgets/ctkModalityWidget.cpp @@ -146,9 +146,9 @@ void ctkModalityWidgetPrivate::updateAnyCheckBoxState() // None selected? bool foundSelectedModality = false; - foreach(const QString & modality, this->Modalities.keys()) + for (auto it = this->Modalities.constBegin(); it != this->Modalities.constEnd(); ++it) { - if (this->Modalities[modality]->isChecked()) + if (it.value()->isChecked()) { foundSelectedModality = true; break; @@ -168,9 +168,9 @@ void ctkModalityWidgetPrivate::updateAnyCheckBoxState() // All selected? bool allModalitiesSelected = true; - foreach(const QString & modality, this->Modalities.keys()) + for (auto it = this->Modalities.constBegin(); it != this->Modalities.constEnd(); ++it) { - if (!this->Modalities[modality]->isChecked()) + if (!it.value()->isChecked()) { allModalitiesSelected = false; break; @@ -217,12 +217,11 @@ QStringList ctkModalityWidget::selectedModalities()const { Q_D(const ctkModalityWidget); QStringList modalities; - foreach(const QString & modality, d->Modalities.keys()) + for (auto it = d->Modalities.constBegin(); it != d->Modalities.constEnd(); ++it) { - QCheckBox* modalityBox = d->Modalities[modality]; - if (modalityBox->isChecked()) + if (it.value()->isChecked()) { - modalities << modality; + modalities << it.key(); } } return modalities; @@ -233,10 +232,10 @@ void ctkModalityWidget::setSelectedModalities(const QStringList& selectedModalit { Q_D(ctkModalityWidget); bool modified = false; - foreach(const QString & modality, d->Modalities.keys()) + for (auto it = d->Modalities.constBegin(); it != d->Modalities.constEnd(); ++it) { - QCheckBox* modalityBox = d->Modalities[modality]; - bool selected = selectedModalities.contains(modality); + QCheckBox* modalityBox = it.value(); + bool selected = selectedModalities.contains(it.key()); if (modalityBox->isChecked() != selected) { #if QT_VERSION >= QT_VERSION_CHECK(5,3,0) @@ -263,13 +262,12 @@ QStringList ctkModalityWidget::visibleModalities()const { Q_D(const ctkModalityWidget); QStringList modalities; - foreach(const QString & modality, d->Modalities.keys()) + for (auto it = d->Modalities.constBegin(); it != d->Modalities.constEnd(); ++it) { - QCheckBox* modalityBox = d->Modalities[modality]; // isHidden() means explicitly hidden (not the same as !isVisible()) - if (!modalityBox->isHidden()) + if (!it.value()->isHidden()) { - modalities << modality; + modalities << it.key(); } } return modalities; @@ -279,14 +277,13 @@ QStringList ctkModalityWidget::visibleModalities()const void ctkModalityWidget::setVisibleModalities(const QStringList& visibleModalities) { Q_D(ctkModalityWidget); - foreach(const QString & modality, d->Modalities.keys()) + for (auto it = d->Modalities.constBegin(); it != d->Modalities.constEnd(); ++it) { - QCheckBox* modalityBox = d->Modalities[modality]; - bool visible = visibleModalities.contains(modality); + bool visible = visibleModalities.contains(it.key()); // isHidden() means explicitly hidden (not the same as !isVisible()) - if (modalityBox->isHidden() == visible) + if (it.value()->isHidden() == visible) { - modalityBox->setVisible(visible); + it.value()->setVisible(visible); } } } @@ -340,9 +337,9 @@ void ctkModalityWidget::selectAll() { Q_D(ctkModalityWidget); bool modified = false; - foreach(const QString & modality, d->Modalities.keys()) + for (auto it = d->Modalities.constBegin(); it != d->Modalities.constEnd(); ++it) { - QCheckBox* modalityBox = d->Modalities[modality]; + QCheckBox* modalityBox = it.value(); if (!modalityBox->isChecked()) { #if QT_VERSION >= QT_VERSION_CHECK(5,3,0) @@ -369,9 +366,9 @@ void ctkModalityWidget::unselectAll() { Q_D(ctkModalityWidget); bool modified = false; - foreach(const QString & modality, d->Modalities.keys()) + for (auto it = d->Modalities.constBegin(); it != d->Modalities.constEnd(); ++it) { - QCheckBox* modalityBox = d->Modalities[modality]; + QCheckBox* modalityBox = it.value(); if (modalityBox->isChecked()) { #if QT_VERSION >= QT_VERSION_CHECK(5,3,0) @@ -397,10 +394,9 @@ void ctkModalityWidget::unselectAll() void ctkModalityWidget::showAll() { Q_D(ctkModalityWidget); - foreach(const QString& modality, d->Modalities.keys()) + for (auto it = d->Modalities.constBegin(); it != d->Modalities.constEnd(); ++it) { - QCheckBox* modalityBox = d->Modalities[modality]; - modalityBox->setVisible(true); + it.value()->setVisible(true); } } @@ -408,10 +404,9 @@ void ctkModalityWidget::showAll() void ctkModalityWidget::hideAll() { Q_D(ctkModalityWidget); - foreach(const QString& modality, d->Modalities.keys()) + for (auto it = d->Modalities.constBegin(); it != d->Modalities.constEnd(); ++it) { - QCheckBox* modalityBox = d->Modalities[modality]; - modalityBox->setVisible(false); + it.value()->setVisible(false); } } @@ -419,10 +414,9 @@ void ctkModalityWidget::hideAll() bool ctkModalityWidget::areAllModalitiesSelected()const { Q_D(const ctkModalityWidget); - foreach(const QString & modality, d->Modalities.keys()) + for (auto it = d->Modalities.constBegin(); it != d->Modalities.constEnd(); ++it) { - QCheckBox* modalityBox = d->Modalities[modality]; - if (!modalityBox->isChecked()) + if (!it.value()->isChecked()) { return false; } @@ -434,11 +428,10 @@ bool ctkModalityWidget::areAllModalitiesSelected()const bool ctkModalityWidget::areAllModalitiesVisible()const { Q_D(const ctkModalityWidget); - foreach(const QString & modality, d->Modalities.keys()) + for (auto it = d->Modalities.constBegin(); it != d->Modalities.constEnd(); ++it) { - QCheckBox* modalityBox = d->Modalities[modality]; // isHidden() means explicitly hidden (not the same as !isVisible()) - if (modalityBox->isHidden()) + if (it.value()->isHidden()) { return false; } diff --git a/Libs/Widgets/ctkSettingsDialog.cpp b/Libs/Widgets/ctkSettingsDialog.cpp index 50a4b1cd2d..f34337541b 100644 --- a/Libs/Widgets/ctkSettingsDialog.cpp +++ b/Libs/Widgets/ctkSettingsDialog.cpp @@ -209,9 +209,9 @@ void ctkSettingsDialog::setSettings(QSettings* settings) d->SettingsButtonBox->button(QDialogButtonBox::Reset)->setEnabled(false); d->Settings = settings; - foreach(ctkSettingsPanel* panel, d->Panels.values()) + for (auto it = d->Panels.constBegin(); it != d->Panels.constEnd(); ++it) { - panel->setSettings(settings); + it.value()->setSettings(settings); } } @@ -282,11 +282,11 @@ ctkSettingsPanel* ctkSettingsDialog::currentPanel()const ctkSettingsPanel* ctkSettingsDialog::panel(const QString& label)const { Q_D(const ctkSettingsDialog); - foreach(ctkSettingsPanel* settingsPanel, d->Panels.values()) + for (auto it = d->Panels.constBegin(); it != d->Panels.constEnd(); ++it) { - if (settingsPanel->windowTitle() == label) + if (it.value()->windowTitle() == label) { - return settingsPanel; + return it.value(); } } return 0; @@ -331,9 +331,9 @@ void ctkSettingsDialog::reject() void ctkSettingsDialog::applySettings() { Q_D(ctkSettingsDialog); - foreach(ctkSettingsPanel* panel, d->Panels.values()) + for (auto it = d->Panels.constBegin(); it != d->Panels.constEnd(); ++it) { - panel->applySettings(); + it.value()->applySettings(); } d->SettingsButtonBox->button(QDialogButtonBox::Reset)->setEnabled(false); } @@ -342,9 +342,9 @@ void ctkSettingsDialog::applySettings() void ctkSettingsDialog::reloadSettings() { Q_D(ctkSettingsDialog); - foreach(ctkSettingsPanel* panel, d->Panels.values()) + for (auto it = d->Panels.constBegin(); it != d->Panels.constEnd(); ++it) { - panel->reloadSettings(); + it.value()->reloadSettings(); } d->SettingsButtonBox->button(QDialogButtonBox::Reset)->setEnabled(false); } @@ -353,9 +353,9 @@ void ctkSettingsDialog::reloadSettings() void ctkSettingsDialog::resetSettings() { Q_D(ctkSettingsDialog); - foreach(ctkSettingsPanel* panel, d->Panels.values()) + for (auto it = d->Panels.constBegin(); it != d->Panels.constEnd(); ++it) { - panel->resetSettings(); + it.value()->resetSettings(); } d->SettingsButtonBox->button(QDialogButtonBox::Reset)->setEnabled(false); } @@ -371,9 +371,9 @@ void ctkSettingsDialog::restoreDefaultSettings() d->Settings->clear(); } // ... and restore settings for the ones we can - foreach(ctkSettingsPanel* panel, d->Panels.values()) + for (auto it = d->Panels.constBegin(); it != d->Panels.constEnd(); ++it) { - panel->restoreDefaultSettings(); + it.value()->restoreDefaultSettings(); } } diff --git a/Libs/Widgets/ctkSettingsPanel.cpp b/Libs/Widgets/ctkSettingsPanel.cpp index 44cf034c4d..d46e19d3c6 100644 --- a/Libs/Widgets/ctkSettingsPanel.cpp +++ b/Libs/Widgets/ctkSettingsPanel.cpp @@ -231,8 +231,9 @@ void ctkSettingsPanel::setSettings(QSettings* settings) void ctkSettingsPanel::reloadSettings() { Q_D(ctkSettingsPanel); - foreach(const QString& key, d->Properties.keys()) + for (auto it = d->Properties.begin(); it != d->Properties.end(); ++it) { + const QString& key = it.key(); QSettings* settings = d->settings(key); if (!settings) { @@ -241,7 +242,7 @@ void ctkSettingsPanel::reloadSettings() if (settings->contains(key)) { QVariant value = settings->value(key); - PropertyType& prop = d->Properties[key]; + PropertyType& prop = it.value(); // Update object registered using registerProperty() prop.setValue(value); prop.setPreviousValue(value); @@ -388,12 +389,11 @@ QStringList ctkSettingsPanel::changedSettings()const { Q_D(const ctkSettingsPanel); QStringList settingsKeys; - foreach(const QString& key, d->Properties.keys()) + for (auto it = d->Properties.constBegin(); it != d->Properties.constEnd(); ++it) { - const PropertyType& prop = d->Properties[key]; - if (prop.previousValue() != prop.value()) + if (it.value().previousValue() != it.value().value()) { - settingsKeys << key; + settingsKeys << it.key(); } } return settingsKeys; @@ -418,13 +418,13 @@ ::settingOptions(const QString& settingKey)const void ctkSettingsPanel::applySettings() { Q_D(ctkSettingsPanel); - foreach(const QString& key, d->Properties.keys()) + for (auto it = d->Properties.begin(); it != d->Properties.end(); ++it) { - PropertyType& prop = d->Properties[key]; + PropertyType& prop = it.value(); if (prop.previousValue() != prop.value()) { prop.setPreviousValue(prop.value()); - emit settingChanged(key, prop.value()); + emit settingChanged(it.key(), prop.value()); } } } @@ -433,9 +433,9 @@ void ctkSettingsPanel::applySettings() void ctkSettingsPanel::resetSettings() { Q_D(ctkSettingsPanel); - foreach(const QString& key, d->Properties.keys()) + for (auto it = d->Properties.constBegin(); it != d->Properties.constEnd(); ++it) { - this->setSetting(key, d->Properties[key].previousValue()); + this->setSetting(it.key(), it.value().previousValue()); } } @@ -443,8 +443,8 @@ void ctkSettingsPanel::resetSettings() void ctkSettingsPanel::restoreDefaultSettings() { Q_D(ctkSettingsPanel); - foreach(const QString& key, d->Properties.keys()) + for (auto it = d->Properties.constBegin(); it != d->Properties.constEnd(); ++it) { - this->setSetting(key, d->Properties[key].DefaultValue); + this->setSetting(it.key(), it.value().DefaultValue); } } diff --git a/Libs/Widgets/ctkWorkflowButtonBoxWidget.cpp b/Libs/Widgets/ctkWorkflowButtonBoxWidget.cpp index df26dec510..3b36ae5004 100644 --- a/Libs/Widgets/ctkWorkflowButtonBoxWidget.cpp +++ b/Libs/Widgets/ctkWorkflowButtonBoxWidget.cpp @@ -209,10 +209,10 @@ void ctkWorkflowButtonBoxWidgetPrivate::updateGoToButtons(ctkWorkflowStep* curre // Remove the buttons if the set of steps to have goTo buttons has changed if (goToStepsThatHaveButtons != goToStepsToHaveButtons) { - foreach (ctkPushButton* goToButton, this->GoToButtonToStepMap.keys()) + for (auto it = this->GoToButtonToStepMap.constBegin(); it != this->GoToButtonToStepMap.constEnd(); ++it) { - q->layout()->removeWidget(goToButton); - goToButton->deleteLater(); + q->layout()->removeWidget(it.key()); + it.key()->deleteLater(); } this->GoToButtonToStepMap.clear(); } @@ -236,13 +236,14 @@ void ctkWorkflowButtonBoxWidgetPrivate::updateGoToButtons(ctkWorkflowStep* curre // Show/hide the goTo buttons depending on whether they are accessible from the current step ctkWorkflowWidgetStep* step = dynamic_cast(currentStep); - foreach (ctkPushButton* goToButton, this->GoToButtonToStepMap.keys()) + for (auto it = this->GoToButtonToStepMap.constBegin(); it != this->GoToButtonToStepMap.constEnd(); ++it) { + ctkPushButton* goToButton = it.key(); // TODO enable and show the goTo button if we can go to it // ctkWorkflowStep* goToStep = this->GoToButtonToStepMap[goToButton]; // if (this->Workflow->canGoToStep(currentStep, goToStep)) // for now we'll assume we can go to the step - ctkWorkflowStep* goToStep = this->GoToButtonToStepMap[goToButton]; + ctkWorkflowStep* goToStep = it.value(); Q_ASSERT(goToStep); bool enable = currentStep && this->Workflow->canGoToStep(goToStep->id(), currentStep); bool visible = step ? !(step->buttonBoxHints() & ctkWorkflowWidgetStep::ButtonBoxHidden) : true; From bd0c0d44e8958d6065e65fcc28a6aab762d7d328 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 22 Mar 2026 10:56:55 -0500 Subject: [PATCH 07/32] PERF: Replace non-const calls on temporaries with const alternatives (clazy detaching-temporary) Replace .first()/.front() with .constFirst() and operator[] with .at() when called on temporary containers (function return values) to avoid unnecessary implicit detach of shared data. While the refcount is typically 1 for temporaries, using const accessors is safer and avoids potential deep copies if the code is later refactored. Co-Authored-By: Claude Opus 4.6 --- Libs/Core/Testing/Cpp/ctkWorkflowTest1.cpp | 8 +-- .../Cpp/ctkDICOMServerNodeWidgetTest1.cpp | 4 +- Libs/PluginFramework/ctkPlugin_p.cpp | 2 +- .../Widgets/ctkVTKVolumePropertyWidget.cpp | 2 +- .../Testing/Cpp/ctkLayoutManagerTest1.cpp | 52 +++++++++---------- .../Testing/Cpp/ctkWorkflowWidgetTest1.cpp | 4 +- .../Testing/Cpp/ctkWorkflowWidgetTest2.cpp | 2 +- Libs/Widgets/ctkPathLineEdit.cpp | 2 +- 8 files changed, 38 insertions(+), 38 deletions(-) diff --git a/Libs/Core/Testing/Cpp/ctkWorkflowTest1.cpp b/Libs/Core/Testing/Cpp/ctkWorkflowTest1.cpp index 97be48f9a2..5edd7393ea 100644 --- a/Libs/Core/Testing/Cpp/ctkWorkflowTest1.cpp +++ b/Libs/Core/Testing/Cpp/ctkWorkflowTest1.cpp @@ -305,9 +305,9 @@ int ctkWorkflowTest1(int argc, char * argv [] ) } if (workflow->forwardSteps(step1).length() != 1 - || workflow->forwardSteps(step1).first() != step2 + || workflow->forwardSteps(step1).constFirst() != step2 || workflow->forwardSteps(step2).length() != 1 - || workflow->forwardSteps(step2).first() != step3 + || workflow->forwardSteps(step2).constFirst() != step3 || workflow->forwardSteps(step3).length() != 0) { std::cerr << "error in list of forward steps" << std::endl; @@ -316,9 +316,9 @@ int ctkWorkflowTest1(int argc, char * argv [] ) if (workflow->backwardSteps(step1).length() != 0 || workflow->backwardSteps(step2).length() != 1 - || workflow->backwardSteps(step2).first() != step1 + || workflow->backwardSteps(step2).constFirst() != step1 || workflow->backwardSteps(step3).length() != 1 - || workflow->backwardSteps(step3).first() != step2) + || workflow->backwardSteps(step3).constFirst() != step2) { std::cerr << "error in list of backward steps" << std::endl; return EXIT_FAILURE; diff --git a/Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMServerNodeWidgetTest1.cpp b/Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMServerNodeWidgetTest1.cpp index e0b0b769de..e54005003d 100644 --- a/Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMServerNodeWidgetTest1.cpp +++ b/Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMServerNodeWidgetTest1.cpp @@ -121,7 +121,7 @@ int ctkDICOMServerNodeWidgetTest1( int argc, char * argv [] ) serverNode["Port"] = 12345; widget.addServerNode(serverNode); if (widget.serverNodes().count() != 2 || - widget.serverNodes()[1] != "TestName" || + widget.serverNodes().at(1) != "TestName" || widget.selectedServerNodes().count() != 1 || widget.serverNodeParameters("TestName") != serverNode || widget.serverNodeParameters(1) != serverNode) @@ -129,7 +129,7 @@ int ctkDICOMServerNodeWidgetTest1( int argc, char * argv [] ) std::cout << "ctkDICOMServerNodeWidget::addServerNode() failed:" << widget.serverNodes().count() << " " << (widget.serverNodes().count() > 1? - qPrintable(widget.serverNodes()[1]) : "none") << " " + qPrintable(widget.serverNodes().at(1)) : "none") << " " << widget.selectedServerNodes().count() << " " << (widget.serverNodeParameters("TestName") == serverNode) << " " << (widget.serverNodeParameters(1) == serverNode) << std::endl; diff --git a/Libs/PluginFramework/ctkPlugin_p.cpp b/Libs/PluginFramework/ctkPlugin_p.cpp index 95649b3893..053e75aa59 100644 --- a/Libs/PluginFramework/ctkPlugin_p.cpp +++ b/Libs/PluginFramework/ctkPlugin_p.cpp @@ -145,7 +145,7 @@ ctkPluginPrivate::ctkPluginPrivate( const QMap& e = i.next(); const QStringList& res = e.value(ctkPluginConstants::RESOLUTION_DIRECTIVE); const QStringList& version = e.value(ctkPluginConstants::PLUGIN_VERSION_ATTRIBUTE); - ctkRequirePlugin* rp = new ctkRequirePlugin(this, e.value("$key").front(), + ctkRequirePlugin* rp = new ctkRequirePlugin(this, e.value("$key").constFirst(), res.empty() ? QString() : res.front(), version.empty() ? QString() : version.front()); require.push_back(rp); diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.cpp index c53f39cb4c..33cada4a3c 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.cpp @@ -98,7 +98,7 @@ void ctkVTKVolumePropertyWidgetPrivate::setupUi(QWidget* widget) this->ScalarOpacityWidget->view()->addCompositeFunction(0, 0, true, true); vtkCompositeControlPointsItem* composite = vtkCompositeControlPointsItem::SafeDownCast( - this->ScalarOpacityWidget->view()->opacityFunctionPlots()[1]); + this->ScalarOpacityWidget->view()->opacityFunctionPlots().at(1)); composite->SetColorFill(true); composite->SetPointsFunction(vtkCompositeControlPointsItem::OpacityPointsFunction); this->ScalarColorWidget->view()->addColorTransferFunction(0); diff --git a/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp index 67a46ea0eb..b7dea45a25 100644 --- a/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp @@ -221,18 +221,18 @@ int ctkLayoutManagerTest1(int argc, char * argv [] ) app.exec(); if (tabToGridInstanciator->registeredViews().count() != 6 || - tabToGridInstanciator->registeredViews()[0]->isHidden() || - tabToGridInstanciator->registeredViews()[1]->isHidden() || - tabToGridInstanciator->registeredViews()[2]->isHidden() || - tabToGridInstanciator->registeredViews()[3]->isHidden()) + tabToGridInstanciator->registeredViews().at(0)->isHidden() || + tabToGridInstanciator->registeredViews().at(1)->isHidden() || + tabToGridInstanciator->registeredViews().at(2)->isHidden() || + tabToGridInstanciator->registeredViews().at(3)->isHidden()) { std::cout << __LINE__ << " TabToGrid: " << "ctkLayoutManager::setupLayout() failed to show/hide widgets" << tabToGridInstanciator->registeredViews().count() << " " - << tabToGridInstanciator->registeredViews()[0]->isHidden() << " " - << tabToGridInstanciator->registeredViews()[1]->isHidden() << " " - << tabToGridInstanciator->registeredViews()[2]->isHidden() << " " - << tabToGridInstanciator->registeredViews()[3]->isHidden() << std::endl; + << tabToGridInstanciator->registeredViews().at(0)->isHidden() << " " + << tabToGridInstanciator->registeredViews().at(1)->isHidden() << " " + << tabToGridInstanciator->registeredViews().at(2)->isHidden() << " " + << tabToGridInstanciator->registeredViews().at(3)->isHidden() << std::endl; return EXIT_FAILURE; } @@ -256,16 +256,16 @@ int ctkLayoutManagerTest1(int argc, char * argv [] ) app.exec(); if (tabToSimpleInstanciator->registeredViews().count() != 3 || - tabToSimpleInstanciator->registeredViews()[0]->isHidden() || - tabToSimpleInstanciator->registeredViews()[1]->isVisible() || - tabToSimpleInstanciator->registeredViews()[2]->isVisible()) + tabToSimpleInstanciator->registeredViews().at(0)->isHidden() || + tabToSimpleInstanciator->registeredViews().at(1)->isVisible() || + tabToSimpleInstanciator->registeredViews().at(2)->isVisible()) { std::cout << __LINE__ << " TabToSimple: " << "ctkLayoutManager::setupLayout() failed to show/hide widgets" << tabToSimpleInstanciator->registeredViews().count() << " " - << tabToSimpleInstanciator->registeredViews()[0]->isHidden() << " " - << tabToSimpleInstanciator->registeredViews()[1]->isVisible() << " " - << tabToSimpleInstanciator->registeredViews()[2]->isVisible() << std::endl; + << tabToSimpleInstanciator->registeredViews().at(0)->isHidden() << " " + << tabToSimpleInstanciator->registeredViews().at(1)->isVisible() << " " + << tabToSimpleInstanciator->registeredViews().at(2)->isVisible() << std::endl; return EXIT_FAILURE; } @@ -288,17 +288,17 @@ int ctkLayoutManagerTest1(int argc, char * argv [] ) QTimer::singleShot(200, &app, SLOT(quit())); app.exec(); - if (nestedToTabInstanciator->registeredViews()[0]->isHidden() || - nestedToTabInstanciator->registeredViews()[1]->isVisible() || - nestedToTabInstanciator->registeredViews()[2]->isVisible() || - nestedToTabInstanciator->registeredViews()[3]->isVisible()) + if (nestedToTabInstanciator->registeredViews().at(0)->isHidden() || + nestedToTabInstanciator->registeredViews().at(1)->isVisible() || + nestedToTabInstanciator->registeredViews().at(2)->isVisible() || + nestedToTabInstanciator->registeredViews().at(3)->isVisible()) { std::cout << __LINE__ << " NestedToTab: " << "ctkLayoutManager::setupLayout() failed to show/hide widgets" - << nestedToTabInstanciator->registeredViews()[0]->isHidden() << " " - << nestedToTabInstanciator->registeredViews()[1]->isVisible() << " " - << nestedToTabInstanciator->registeredViews()[2]->isVisible() << " " - << nestedToTabInstanciator->registeredViews()[3]->isVisible() << std::endl; + << nestedToTabInstanciator->registeredViews().at(0)->isHidden() << " " + << nestedToTabInstanciator->registeredViews().at(1)->isVisible() << " " + << nestedToTabInstanciator->registeredViews().at(2)->isVisible() << " " + << nestedToTabInstanciator->registeredViews().at(3)->isVisible() << std::endl; return EXIT_FAILURE; } @@ -312,16 +312,16 @@ int ctkLayoutManagerTest1(int argc, char * argv [] ) nestedToTabInstanciator->setUseCachedViews(false); nestedToTabLayoutManager.setLayout(tabMultipleLayoutDoc); if (nestedToTabInstanciator->registeredViews().count() != 2 * 4 || - nestedToTabInstanciator->registeredViews()[0]->isHidden() || - !nestedToTabInstanciator->registeredViews()[1]->isHidden() || - !nestedToTabInstanciator->registeredViews()[2]->isHidden()) + nestedToTabInstanciator->registeredViews().at(0)->isHidden() || + !nestedToTabInstanciator->registeredViews().at(1)->isHidden() || + !nestedToTabInstanciator->registeredViews().at(2)->isHidden()) { std::cout << __LINE__ << " tabMultiple: " << "ctkLayoutManager::setupLayout() failed to show/hide widgets " << nestedToTabInstanciator->registeredViews().count(); for (int i = 0; i < nestedToTabInstanciator->registeredViews().count(); i++) { - std::cout << " " << nestedToTabInstanciator->registeredViews()[i]->isHidden(); + std::cout << " " << nestedToTabInstanciator->registeredViews().at(i)->isHidden(); } std::cout << std::endl; return EXIT_FAILURE; diff --git a/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest1.cpp index eb7de4bdc5..e78c367bca 100644 --- a/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest1.cpp @@ -196,7 +196,7 @@ int userInteractionSimulator1(QApplication& app, ctkExampleDerivedWorkflowWidget Q_ASSERT(nextButton); #ifndef QT_NO_DEBUG - QPushButton* finishButton = workflowWidget->buttonBoxWidget()->goToButtons().first(); + QPushButton* finishButton = workflowWidget->buttonBoxWidget()->goToButtons().constFirst(); Q_ASSERT(finishButton); #endif @@ -290,7 +290,7 @@ int userInteractionSimulator2(QApplication& app, ctkExampleDerivedWorkflowWidget QPushButton* backButton = workflowWidget->buttonBoxWidget()->backButton(); QPushButton* nextButton = workflowWidget->buttonBoxWidget()->nextButton(); - QPushButton* finishButton = workflowWidget->buttonBoxWidget()->goToButtons().first(); + QPushButton* finishButton = workflowWidget->buttonBoxWidget()->goToButtons().constFirst(); Q_ASSERT(backButton); Q_ASSERT(nextButton); Q_ASSERT(finishButton); diff --git a/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest2.cpp b/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest2.cpp index 915c1eeb14..53c99c2350 100644 --- a/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest2.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest2.cpp @@ -288,7 +288,7 @@ int userInteractionSimulator2(QApplication& app, ctkWorkflowWidgetStep* step1, c QPushButton* backButton = workflowWidget->buttonBoxWidget()->backButton(); QPushButton* nextButton = workflowWidget->buttonBoxWidget()->nextButton(); - QPushButton* finishButton = workflowWidget->buttonBoxWidget()->goToButtons().first(); + QPushButton* finishButton = workflowWidget->buttonBoxWidget()->goToButtons().constFirst(); Q_ASSERT(backButton); Q_ASSERT(nextButton); Q_ASSERT(finishButton); diff --git a/Libs/Widgets/ctkPathLineEdit.cpp b/Libs/Widgets/ctkPathLineEdit.cpp index d7b6f0b40e..27a4d17a27 100644 --- a/Libs/Widgets/ctkPathLineEdit.cpp +++ b/Libs/Widgets/ctkPathLineEdit.cpp @@ -522,7 +522,7 @@ void ctkPathLineEditPrivate::_q_recomputeCompleterPopupSize() QVariant icon = model->data(model->index(i, 0), Qt::DecorationRole); if (icon.isValid() && icon.canConvert()) { - iconWidth = qMax(iconWidth, icon.value().availableSizes().front().width() + 4); + iconWidth = qMax(iconWidth, icon.value().availableSizes().constFirst().width() + 4); } textWidth = qMax(textWidth, fm.boundingRect(model->data(model->index(i, 0)).toString()).width()); } From d0a08f03b88e9f995cf6329060e0505a2d70da99 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 22 Mar 2026 10:25:38 -0500 Subject: [PATCH 08/32] STYLE: Remove const from signals and move getters out of slots sections (clazy const-signal-or-slot) Remove the const qualifier from signal declarations in workflow step private classes (ctkWorkflowStepPrivate, ctkWorkflowWidgetStepPrivate) and their public forwarding methods, since signals imply state change and should not be const. Also propagate the const removal to the *Internal() wrapper methods that emit these signals. Move const getter methods that were incorrectly placed in public/protected slots sections to the appropriate public/protected sections in ctkAxesWidget, ctkDoubleSpinBox, ctkVTKAbstractView, ctkVTKVolumePropertyWidget, and ctkProxyStyle. Co-Authored-By: Claude Opus 4.6 --- ...kExampleWorkflowStepUsingSignalsAndSlots.h | 6 ++-- Libs/Core/ctkWorkflowStep.cpp | 36 +++++++++---------- Libs/Core/ctkWorkflowStep.h | 12 +++---- Libs/Core/ctkWorkflowStep_p.h | 24 ++++++------- .../VTK/Widgets/ctkVTKAbstractView.h | 8 ++--- .../VTK/Widgets/ctkVTKVolumePropertyWidget.h | 3 +- ...leWorkflowWidgetStepUsingSignalsAndSlots.h | 8 ++--- Libs/Widgets/ctkAxesWidget.h | 18 +++++----- Libs/Widgets/ctkDoubleSpinBox.h | 16 ++++----- Libs/Widgets/ctkProxyStyle.h | 4 +-- Libs/Widgets/ctkWorkflowWidgetStep.cpp | 24 ++++++------- Libs/Widgets/ctkWorkflowWidgetStep.h | 8 ++--- Libs/Widgets/ctkWorkflowWidgetStep_p.h | 16 ++++----- 13 files changed, 91 insertions(+), 92 deletions(-) diff --git a/Libs/Core/Testing/Cpp/ctkExampleWorkflowStepUsingSignalsAndSlots.h b/Libs/Core/Testing/Cpp/ctkExampleWorkflowStepUsingSignalsAndSlots.h index d3eedfad51..f9fbbf5e86 100644 --- a/Libs/Core/Testing/Cpp/ctkExampleWorkflowStepUsingSignalsAndSlots.h +++ b/Libs/Core/Testing/Cpp/ctkExampleWorkflowStepUsingSignalsAndSlots.h @@ -102,9 +102,9 @@ protected Q_SLOTS: /// /// Signals indicating to the workflow that these processes have /// completed - void validationComplete(bool validationSucceeded, const QString& branchId = "")const; - void onEntryComplete()const; - void onExitComplete()const; + void validationComplete(bool validationSucceeded, const QString& branchId = ""); + void onEntryComplete(); + void onExitComplete(); protected: QScopedPointer d_ptr; diff --git a/Libs/Core/ctkWorkflowStep.cpp b/Libs/Core/ctkWorkflowStep.cpp index 7153c0dc0b..870d9b586a 100644 --- a/Libs/Core/ctkWorkflowStep.cpp +++ b/Libs/Core/ctkWorkflowStep.cpp @@ -82,37 +82,37 @@ ctkWorkflowStepPrivate::~ctkWorkflowStepPrivate() } // -------------------------------------------------------------------------- -void ctkWorkflowStepPrivate::validationCompleteInternal(bool validationResults, const QString& branchId)const +void ctkWorkflowStepPrivate::validationCompleteInternal(bool validationResults, const QString& branchId) { emit validationComplete(validationResults, branchId); } // -------------------------------------------------------------------------- -void ctkWorkflowStepPrivate::onEntryCompleteInternal()const +void ctkWorkflowStepPrivate::onEntryCompleteInternal() { emit onEntryComplete(); } // -------------------------------------------------------------------------- -void ctkWorkflowStepPrivate::onExitCompleteInternal()const +void ctkWorkflowStepPrivate::onExitCompleteInternal() { emit onExitComplete(); } // -------------------------------------------------------------------------- -void ctkWorkflowStepPrivate::invokeValidateCommandInternal(const QString& desiredBranchId)const +void ctkWorkflowStepPrivate::invokeValidateCommandInternal(const QString& desiredBranchId) { emit invokeValidateCommand(desiredBranchId); } // -------------------------------------------------------------------------- -void ctkWorkflowStepPrivate::invokeOnEntryCommandInternal(const ctkWorkflowStep* comingFrom, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType)const +void ctkWorkflowStepPrivate::invokeOnEntryCommandInternal(const ctkWorkflowStep* comingFrom, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType) { emit invokeOnEntryCommand(comingFrom, transitionType); } // -------------------------------------------------------------------------- -void ctkWorkflowStepPrivate::invokeOnExitCommandInternal(const ctkWorkflowStep* goingTo, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType)const +void ctkWorkflowStepPrivate::invokeOnExitCommandInternal(const ctkWorkflowStep* goingTo, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType) { emit invokeOnExitCommand(goingTo, transitionType); } @@ -210,44 +210,44 @@ QObject* ctkWorkflowStep::ctkWorkflowStepQObject() } // -------------------------------------------------------------------------- -void ctkWorkflowStep::validationComplete(bool validationResults, const QString& branchId)const +void ctkWorkflowStep::validationComplete(bool validationResults, const QString& branchId) { - Q_D(const ctkWorkflowStep); + Q_D(ctkWorkflowStep); d->validationCompleteInternal(validationResults, branchId); } // -------------------------------------------------------------------------- -void ctkWorkflowStep::onEntryComplete()const +void ctkWorkflowStep::onEntryComplete() { - Q_D(const ctkWorkflowStep); + Q_D(ctkWorkflowStep); d->onEntryCompleteInternal(); } // -------------------------------------------------------------------------- -void ctkWorkflowStep::onExitComplete()const +void ctkWorkflowStep::onExitComplete() { - Q_D(const ctkWorkflowStep); + Q_D(ctkWorkflowStep); d->onExitCompleteInternal(); } // -------------------------------------------------------------------------- -void ctkWorkflowStep::invokeValidateCommand(const QString& desiredBranchId)const +void ctkWorkflowStep::invokeValidateCommand(const QString& desiredBranchId) { - Q_D(const ctkWorkflowStep); + Q_D(ctkWorkflowStep); d->invokeValidateCommandInternal(desiredBranchId); } // -------------------------------------------------------------------------- -void ctkWorkflowStep::invokeOnEntryCommand(const ctkWorkflowStep* comingFrom, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType)const +void ctkWorkflowStep::invokeOnEntryCommand(const ctkWorkflowStep* comingFrom, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType) { - Q_D(const ctkWorkflowStep); + Q_D(ctkWorkflowStep); d->invokeOnEntryCommandInternal(comingFrom, transitionType); } // -------------------------------------------------------------------------- -void ctkWorkflowStep::invokeOnExitCommand(const ctkWorkflowStep* goingTo, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType)const +void ctkWorkflowStep::invokeOnExitCommand(const ctkWorkflowStep* goingTo, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType) { - Q_D(const ctkWorkflowStep); + Q_D(ctkWorkflowStep); d->invokeOnExitCommandInternal(goingTo, transitionType); } diff --git a/Libs/Core/ctkWorkflowStep.h b/Libs/Core/ctkWorkflowStep.h index d2836636cd..eb8fbc5f0f 100644 --- a/Libs/Core/ctkWorkflowStep.h +++ b/Libs/Core/ctkWorkflowStep.h @@ -208,37 +208,37 @@ class CTK_CORE_EXPORT ctkWorkflowStep /// step's processing should be performed. /// /// \sa validation() - void invokeValidateCommand(const QString& desiredBranchId = QString())const; + void invokeValidateCommand(const QString& desiredBranchId = QString()); /// \brief Signal (emitted by the private implementation) indicating that validation of this /// step's processing has completed. /// /// \sa validation() - void validationComplete(bool validationSuceeded, const QString& branchId = QString())const; + void validationComplete(bool validationSuceeded, const QString& branchId = QString()); /// \brief Signal (emitted by the private implementation) indicating that the step's 'onEntry' /// processing should be performed. /// /// \sa onEntry() - void invokeOnEntryCommand(const ctkWorkflowStep* comingFrom, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType)const; + void invokeOnEntryCommand(const ctkWorkflowStep* comingFrom, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType); /// \brief Signal (emitted by the private implementation) indicating that the step's 'onEntry' /// processing has completed. /// /// \sa onEntry() - void onEntryComplete()const; + void onEntryComplete(); /// \brief Signal (emitted by the private implementation) indicating that the step's 'onExit' /// processing should be performed. /// /// \sa onExit() - void invokeOnExitCommand(const ctkWorkflowStep* goingTo, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType)const; + void invokeOnExitCommand(const ctkWorkflowStep* goingTo, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType); /// \brief Signal (emitted by the private implementation) indicating that the step's 'onExit' /// processing has completed. /// /// \sa onExit() - void onExitComplete()const; + void onExitComplete(); protected: QScopedPointer d_ptr; diff --git a/Libs/Core/ctkWorkflowStep_p.h b/Libs/Core/ctkWorkflowStep_p.h index 994b50698f..53e402b37d 100644 --- a/Libs/Core/ctkWorkflowStep_p.h +++ b/Libs/Core/ctkWorkflowStep_p.h @@ -71,31 +71,31 @@ class CTK_CORE_EXPORT ctkWorkflowStepPrivate: public QObject bool HasOnEntryCommand; bool HasOnExitCommand; - void invokeValidateCommandInternal(const QString& desiredBranchId)const; + void invokeValidateCommandInternal(const QString& desiredBranchId); - void validationCompleteInternal(bool validationSuceeded, const QString& branchId)const; + void validationCompleteInternal(bool validationSuceeded, const QString& branchId); - void invokeOnEntryCommandInternal(const ctkWorkflowStep* comingFrom, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType)const; + void invokeOnEntryCommandInternal(const ctkWorkflowStep* comingFrom, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType); - void onEntryCompleteInternal()const; + void onEntryCompleteInternal(); - void invokeOnExitCommandInternal(const ctkWorkflowStep* goingTo, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType)const; + void invokeOnExitCommandInternal(const ctkWorkflowStep* goingTo, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType); - void onExitCompleteInternal()const; + void onExitCompleteInternal(); Q_SIGNALS: - void invokeValidateCommand(const QString& desiredBranchId)const; + void invokeValidateCommand(const QString& desiredBranchId); - void validationComplete(bool validationSuceeded, const QString& branchId)const; + void validationComplete(bool validationSuceeded, const QString& branchId); - void invokeOnEntryCommand(const ctkWorkflowStep* comingFrom, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType)const; + void invokeOnEntryCommand(const ctkWorkflowStep* comingFrom, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType); - void onEntryComplete()const; + void onEntryComplete(); - void invokeOnExitCommand(const ctkWorkflowStep* goingTo, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType)const; + void invokeOnExitCommand(const ctkWorkflowStep* goingTo, const ctkWorkflowInterstepTransition::InterstepTransitionType transitionType); - void onExitComplete()const; + void onExitComplete(); private: friend class ctkWorkflowPrivate; // for access to invoke...Internal() methods diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.h b/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.h index 8cba60088f..91113f3ae1 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.h +++ b/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.h @@ -103,10 +103,6 @@ public Q_SLOTS: /// \sa setPauseRender virtual int resumeRender(); - /// Returns true if the current pause render count is greater than 0 - /// \sa setPauseRender - virtual bool isRenderPaused()const; - /// Set maximum rate for rendering (in frames per second). /// If rendering is requested more frequently than this rate using scheduleRender, /// actual rendering will happen at this rate. @@ -155,6 +151,10 @@ public Q_SLOTS: void setUseDepthPeeling(bool use); public: + /// Returns true if the current pause render count is greater than 0 + /// \sa setPauseRender + virtual bool isRenderPaused()const; + /// Get underlying RenderWindow Q_INVOKABLE vtkRenderWindow* renderWindow()const; diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.h b/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.h index d7ed6c08bc..7aa159e2ed 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.h +++ b/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.h @@ -83,6 +83,8 @@ class CTK_VISUALIZATION_VTK_WIDGETS_EXPORT ctkVTKVolumePropertyWidget /// Get gradient extents of the chart. Q_INVOKABLE QList chartsGradientExtent()const; + int currentComponent() const; + public Q_SLOTS: void setVolumeProperty(vtkVolumeProperty* volumeProperty); @@ -124,7 +126,6 @@ public Q_SLOTS: void setChartsGradientExtent(double extent[2]); void setChartsGradientExtent(double min, double max); - int currentComponent() const; void setCurrentComponent(int component); Q_SIGNALS: diff --git a/Libs/Widgets/Testing/Cpp/ctkExampleWorkflowWidgetStepUsingSignalsAndSlots.h b/Libs/Widgets/Testing/Cpp/ctkExampleWorkflowWidgetStepUsingSignalsAndSlots.h index 9fb328e5ef..a06e12a811 100644 --- a/Libs/Widgets/Testing/Cpp/ctkExampleWorkflowWidgetStepUsingSignalsAndSlots.h +++ b/Libs/Widgets/Testing/Cpp/ctkExampleWorkflowWidgetStepUsingSignalsAndSlots.h @@ -124,10 +124,10 @@ public Q_SLOTS: /// Signals indicating to the workflow that these processes have /// completed - void validationComplete(bool validationSucceeded, const QString& branchId="")const; - void onEntryComplete()const; - void onExitComplete()const; - void createUserInterfaceComplete()const; + void validationComplete(bool validationSucceeded, const QString& branchId=""); + void onEntryComplete(); + void onExitComplete(); + void createUserInterfaceComplete(); protected: QScopedPointer d_ptr; diff --git a/Libs/Widgets/ctkAxesWidget.h b/Libs/Widgets/ctkAxesWidget.h index 78f6935386..c21694af3c 100644 --- a/Libs/Widgets/ctkAxesWidget.h +++ b/Libs/Widgets/ctkAxesWidget.h @@ -64,6 +64,15 @@ public : /// False by default. bool autoReset() const; + /// Get the axes labels + QStringList axesLabels() const; + + /// Size hints + virtual QSize minimumSizeHint()const; + virtual QSize sizeHint()const; + virtual bool hasHeightForWidth()const; + virtual int heightForWidth(int width)const; + Q_SIGNALS: void currentAxisChanged(ctkAxesWidget::Axis axis); @@ -93,15 +102,6 @@ public slots : /// \sa axesLabels() bool setAxesLabels(const QStringList& labels); - /// Get the axes labels - QStringList axesLabels() const; - - /// Size hints - virtual QSize minimumSizeHint()const; - virtual QSize sizeHint()const; - virtual bool hasHeightForWidth()const; - virtual int heightForWidth(int width)const; - protected: void paintEvent(QPaintEvent *); void mousePressEvent(QMouseEvent *mouseEvent); diff --git a/Libs/Widgets/ctkDoubleSpinBox.h b/Libs/Widgets/ctkDoubleSpinBox.h index 3f45ba8ef0..18143a601b 100644 --- a/Libs/Widgets/ctkDoubleSpinBox.h +++ b/Libs/Widgets/ctkDoubleSpinBox.h @@ -294,6 +294,14 @@ class CTK_WIDGETS_EXPORT ctkDoubleSpinBox : public QWidget /// \sa sizeHintPolicy virtual QSize minimumSizeHint()const; + /// Return true if the spinbox is in the progress of setting a value. + /// + /// Setting of value is performed in two steps: first the value is set in the spinbox + /// and then the valueChanged and decimalsChanged signals are emitted. + /// During this entire time, isSettingValue() returns true, because in some cases + /// it is important to know which of the sibling widgets initiated an update. + bool isSettingValue()const; + public Q_SLOTS: /// Set the value of the spinbox following the current mode. /// \sa setMode(), value(), setValueIfDifferent(), setValueAlways() @@ -322,14 +330,6 @@ public Q_SLOTS: /// \sa isReadOnly void setReadOnly(bool readOnly); - /// Return true if the spinbox is in the progress of setting a value. - /// - /// Setting of value is performed in two steps: first the value is set in the spinbox - /// and then the valueChanged and decimalsChanged signals are emitted. - /// During this entire time, isSettingValue() returns true, because in some cases - /// it is important to know which of the sibling widgets initiated an update. - bool isSettingValue()const; - Q_SIGNALS: /// Emitted every time the spinbox value is modified /// \sa QDoubleSpinBox::valueChanged() diff --git a/Libs/Widgets/ctkProxyStyle.h b/Libs/Widgets/ctkProxyStyle.h index c37d6d19ec..1d2e3f0d93 100644 --- a/Libs/Widgets/ctkProxyStyle.h +++ b/Libs/Widgets/ctkProxyStyle.h @@ -73,9 +73,7 @@ class CTK_WIDGETS_EXPORT ctkProxyStyle : public QProxyStyle protected: QScopedPointer d_ptr; virtual bool event(QEvent *e); - -protected Q_SLOTS: - virtual QIcon standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const; + virtual QIcon standardIconImplementation(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const; virtual int layoutSpacingImplementation(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const; private: diff --git a/Libs/Widgets/ctkWorkflowWidgetStep.cpp b/Libs/Widgets/ctkWorkflowWidgetStep.cpp index 24e5c4e550..ac666d4d21 100644 --- a/Libs/Widgets/ctkWorkflowWidgetStep.cpp +++ b/Libs/Widgets/ctkWorkflowWidgetStep.cpp @@ -52,13 +52,13 @@ ctkWorkflowWidgetStepPrivate::~ctkWorkflowWidgetStepPrivate() } //----------------------------------------------------------------------------- -void ctkWorkflowWidgetStepPrivate::invokeShowUserInterfaceCommandInternal()const +void ctkWorkflowWidgetStepPrivate::invokeShowUserInterfaceCommandInternal() { emit invokeShowUserInterfaceCommand(); } //----------------------------------------------------------------------------- -void ctkWorkflowWidgetStepPrivate::showUserInterfaceCompleteInternal()const +void ctkWorkflowWidgetStepPrivate::showUserInterfaceCompleteInternal() { emit showUserInterfaceComplete(); } @@ -71,13 +71,13 @@ void ctkWorkflowWidgetStepPrivate::showUserInterface() } //----------------------------------------------------------------------------- -void ctkWorkflowWidgetStepPrivate::invokeCreateUserInterfaceCommandInternal()const +void ctkWorkflowWidgetStepPrivate::invokeCreateUserInterfaceCommandInternal() { emit invokeCreateUserInterfaceCommand(); } //----------------------------------------------------------------------------- -void ctkWorkflowWidgetStepPrivate::createUserInterfaceCompleteInternal()const +void ctkWorkflowWidgetStepPrivate::createUserInterfaceCompleteInternal() { emit createUserInterfaceComplete(); } @@ -206,29 +206,29 @@ void ctkWorkflowWidgetStep::showUserInterface() } //----------------------------------------------------------------------------- -void ctkWorkflowWidgetStep::invokeShowUserInterfaceCommand()const +void ctkWorkflowWidgetStep::invokeShowUserInterfaceCommand() { - Q_D(const ctkWorkflowWidgetStep); + Q_D(ctkWorkflowWidgetStep); d->invokeShowUserInterfaceCommandInternal(); } //----------------------------------------------------------------------------- -void ctkWorkflowWidgetStep::showUserInterfaceComplete()const +void ctkWorkflowWidgetStep::showUserInterfaceComplete() { - Q_D(const ctkWorkflowWidgetStep); + Q_D(ctkWorkflowWidgetStep); d->showUserInterfaceCompleteInternal(); } //----------------------------------------------------------------------------- -void ctkWorkflowWidgetStep::invokeCreateUserInterfaceCommand()const +void ctkWorkflowWidgetStep::invokeCreateUserInterfaceCommand() { - Q_D(const ctkWorkflowWidgetStep); + Q_D(ctkWorkflowWidgetStep); d->invokeCreateUserInterfaceCommandInternal(); } //----------------------------------------------------------------------------- -void ctkWorkflowWidgetStep::createUserInterfaceComplete()const +void ctkWorkflowWidgetStep::createUserInterfaceComplete() { - Q_D(const ctkWorkflowWidgetStep); + Q_D(ctkWorkflowWidgetStep); d->createUserInterfaceCompleteInternal(); } diff --git a/Libs/Widgets/ctkWorkflowWidgetStep.h b/Libs/Widgets/ctkWorkflowWidgetStep.h index 77c0b91c8b..e872c84e1e 100644 --- a/Libs/Widgets/ctkWorkflowWidgetStep.h +++ b/Libs/Widgets/ctkWorkflowWidgetStep.h @@ -131,22 +131,22 @@ class CTK_WIDGETS_EXPORT ctkWorkflowWidgetStep : public QWidget, public ctkWorkf /// \brief Signal (emitted by the private implementation) indicating that the step's /// createUserInterface() method should be called. /// \sa createUserInterface() - void invokeCreateUserInterfaceCommand()const; + void invokeCreateUserInterfaceCommand(); /// \brief Signal (emitted by the private implementation) indicating that the step's /// createUserInterface() method has completed. /// \sa createUserInterface() - void createUserInterfaceComplete()const; + void createUserInterfaceComplete(); /// \brief Signal (emitted by the private implementation) indicating that the step's /// 'showUserInterface() method should be called. /// \sa showUserInterface() - void invokeShowUserInterfaceCommand()const; + void invokeShowUserInterfaceCommand(); /// \brief Signal (emitted by the private implementation) indicating that the step's /// showUserInterface() method has completed. /// \sa showUserInterface() - void showUserInterfaceComplete()const; + void showUserInterfaceComplete(); private: diff --git a/Libs/Widgets/ctkWorkflowWidgetStep_p.h b/Libs/Widgets/ctkWorkflowWidgetStep_p.h index 1766e18c56..4b554e3f78 100644 --- a/Libs/Widgets/ctkWorkflowWidgetStep_p.h +++ b/Libs/Widgets/ctkWorkflowWidgetStep_p.h @@ -62,13 +62,13 @@ class ctkWorkflowWidgetStepPrivate : public ctkWorkflowStepPrivate bool created; - void invokeShowUserInterfaceCommandInternal()const; + void invokeShowUserInterfaceCommandInternal(); - void showUserInterfaceCompleteInternal()const; + void showUserInterfaceCompleteInternal(); - void invokeCreateUserInterfaceCommandInternal()const; + void invokeCreateUserInterfaceCommandInternal(); - void createUserInterfaceCompleteInternal()const; + void createUserInterfaceCompleteInternal(); protected Q_SLOTS: @@ -79,13 +79,13 @@ protected Q_SLOTS: Q_SIGNALS: - void invokeShowUserInterfaceCommand()const; + void invokeShowUserInterfaceCommand(); - void showUserInterfaceComplete()const; + void showUserInterfaceComplete(); - void invokeCreateUserInterfaceCommand()const; + void invokeCreateUserInterfaceCommand(); - void createUserInterfaceComplete()const; + void createUserInterfaceComplete(); }; From 3349344b901dbbcc878fedd6d1458e0cf946071c Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Fri, 20 Mar 2026 17:43:30 -0500 Subject: [PATCH 09/32] BUG: Check QFile::open() return values instead of ignoring them Qt6 marks QFile::open() as [[nodiscard]]. Rather than suppressing the warning, check the return value and handle failures: - Production code: log warning and return early or throw exception - Test code: report error and return EXIT_FAILURE - ctkDICOMDatabase: use open() return directly instead of separate isOpen() Co-Authored-By: Claude Opus 4.6 --- .../Testing/Cpp/ctkUtilsCopyDirRecursivelyTest1.cpp | 6 +++++- Libs/Core/Testing/Cpp/ctkUtilsIsDirEmptyTest1.cpp | 6 +++++- Libs/Core/Testing/Cpp/ctkUtilsTest4.cpp | 6 +++++- Libs/DICOM/Core/ctkDICOMDatabase.cpp | 3 +-- Libs/PluginFramework/ctkPluginFramework.cpp | 6 +++++- Libs/PluginFramework/ctkPluginStorageSQL.cpp | 13 +++++++++++-- .../Cpp/ctkVTKErrorLogModelFileLoggingTest1.cpp | 6 +++++- .../Testing/Cpp/ctkErrorLogModelTestHelper.cpp | 6 +++++- 8 files changed, 42 insertions(+), 10 deletions(-) diff --git a/Libs/Core/Testing/Cpp/ctkUtilsCopyDirRecursivelyTest1.cpp b/Libs/Core/Testing/Cpp/ctkUtilsCopyDirRecursivelyTest1.cpp index a81d74be4a..423c149562 100644 --- a/Libs/Core/Testing/Cpp/ctkUtilsCopyDirRecursivelyTest1.cpp +++ b/Libs/Core/Testing/Cpp/ctkUtilsCopyDirRecursivelyTest1.cpp @@ -47,7 +47,11 @@ bool createFile(int line, const QDir& dir, const QString& relativePath, const QS newDir.cd(relativePath); QString filePath = QFileInfo(newDir, fileName).filePath(); QFile file(filePath); - file.open(QIODevice::Text | QIODevice::WriteOnly); + if (!file.open(QIODevice::Text | QIODevice::WriteOnly)) + { + std::cerr << "Failed to open file for writing: " << qPrintable(filePath) << std::endl; + return EXIT_FAILURE; + } QTextStream out(&file); out << "Generated by ctkUtilsCopyDirRecursivelyTest1" << ctk::endl; file.close(); diff --git a/Libs/Core/Testing/Cpp/ctkUtilsIsDirEmptyTest1.cpp b/Libs/Core/Testing/Cpp/ctkUtilsIsDirEmptyTest1.cpp index e464407e8c..6b9573f4be 100644 --- a/Libs/Core/Testing/Cpp/ctkUtilsIsDirEmptyTest1.cpp +++ b/Libs/Core/Testing/Cpp/ctkUtilsIsDirEmptyTest1.cpp @@ -51,7 +51,11 @@ int ctkUtilsIsDirEmptyTest1(int argc, char * argv [] ) // Create file QString filePath = tempDir.filePath("file.txt"); QFile file(filePath); - file.open(QIODevice::Text | QIODevice::WriteOnly); + if (!file.open(QIODevice::Text | QIODevice::WriteOnly)) + { + qWarning() << "Failed to open file for writing:" << filePath; + return EXIT_FAILURE; + } QTextStream out(&file); out << "Generated by ctkUtilsIsDirEmptyTest1" << ctk::endl; file.close(); diff --git a/Libs/Core/Testing/Cpp/ctkUtilsTest4.cpp b/Libs/Core/Testing/Cpp/ctkUtilsTest4.cpp index ba4c35f55a..cd8ecb795f 100644 --- a/Libs/Core/Testing/Cpp/ctkUtilsTest4.cpp +++ b/Libs/Core/Testing/Cpp/ctkUtilsTest4.cpp @@ -43,7 +43,11 @@ int createFile(int line, const QDir& dir, const QString& relativePath, const QSt newDir.cd(relativePath); QString filePath = QFileInfo(newDir, fileName).filePath(); QFile file(filePath); - file.open(QIODevice::Text | QIODevice::WriteOnly); + if (!file.open(QIODevice::Text | QIODevice::WriteOnly)) + { + std::cerr << "Failed to open file for writing: " << qPrintable(filePath) << std::endl; + return EXIT_FAILURE; + } QTextStream out(&file); out << "Generated by ctkUtilsTest4" << ctk::endl; file.close(); diff --git a/Libs/DICOM/Core/ctkDICOMDatabase.cpp b/Libs/DICOM/Core/ctkDICOMDatabase.cpp index 174d211c28..a40152bd23 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase.cpp +++ b/Libs/DICOM/Core/ctkDICOMDatabase.cpp @@ -258,8 +258,7 @@ QString ctkDICOMDatabasePrivate::readValueFromFile(const QString& fileName, cons bool ctkDICOMDatabasePrivate::executeScript(const QString script) { QFile scriptFile(script); - scriptFile.open(QIODevice::ReadOnly); - if ( !scriptFile.isOpen() ) + if ( !scriptFile.open(QIODevice::ReadOnly) ) { qDebug() << "Script file " << script << " could not be opened!\n"; return false; diff --git a/Libs/PluginFramework/ctkPluginFramework.cpp b/Libs/PluginFramework/ctkPluginFramework.cpp index 7312edc986..f652092786 100644 --- a/Libs/PluginFramework/ctkPluginFramework.cpp +++ b/Libs/PluginFramework/ctkPluginFramework.cpp @@ -215,7 +215,11 @@ QByteArray ctkPluginFramework::getResource(const QString& path) const resourcePath += QString("/") + path; QFile resourceFile(resourcePath); - resourceFile.open(QIODevice::ReadOnly); + if (!resourceFile.open(QIODevice::ReadOnly)) + { + qWarning() << "ctkPluginFramework: Failed to open resource:" << resourcePath; + return QByteArray(); + } return resourceFile.readAll(); } diff --git a/Libs/PluginFramework/ctkPluginStorageSQL.cpp b/Libs/PluginFramework/ctkPluginStorageSQL.cpp index 48e50134dd..139db1881f 100644 --- a/Libs/PluginFramework/ctkPluginStorageSQL.cpp +++ b/Libs/PluginFramework/ctkPluginStorageSQL.cpp @@ -439,7 +439,12 @@ void ctkPluginStorageSQL::insertArchive(QSharedPointer pa, } QFile manifestResource(resourcePrefix + "META-INF/MANIFEST.MF"); - manifestResource.open(QIODevice::ReadOnly); + if (!manifestResource.open(QIODevice::ReadOnly)) + { + ctkPluginDatabaseException exc( + QString("Failed to open MANIFEST.MF resource: %1").arg(manifestResource.fileName())); + throw exc; + } QByteArray manifest = manifestResource.readAll(); manifestResource.close(); @@ -478,7 +483,11 @@ void ctkPluginStorageSQL::insertArchive(QSharedPointer pa, if (QFileInfo(resourcePath).isDir()) continue; QFile resourceFile(resourcePath); - resourceFile.open(QIODevice::ReadOnly); + if (!resourceFile.open(QIODevice::ReadOnly)) + { + qWarning() << "ctkPluginStorageSQL: Failed to open resource:" << resourcePath; + continue; + } QByteArray resourceData = resourceFile.readAll(); resourceFile.close(); diff --git a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogModelFileLoggingTest1.cpp b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogModelFileLoggingTest1.cpp index 97094269a1..37234567e5 100644 --- a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogModelFileLoggingTest1.cpp +++ b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogModelFileLoggingTest1.cpp @@ -50,7 +50,11 @@ int ctkVTKErrorLogModelFileLoggingTest1(int argc, char * argv []) // Create log file QTemporaryFile logFile(QDir::tempPath() + "/ctkVTKErrorLogModelFileLoggingTest1.XXXXXX"); logFile.setAutoRemove(false); - logFile.open(); + if (!logFile.open()) + { + qWarning() << "Failed to open temporary log file"; + return EXIT_FAILURE; + } logFile.close(); QString logFilePath = logFile.fileName(); diff --git a/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp b/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp index 830a1b2464..e60bc329ae 100644 --- a/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp @@ -162,7 +162,11 @@ void appendToFile(const QString& fileName, const QString& text) { QMutexLocker locker(&AppendToFileMutex); QFile f(fileName); - f.open(QFile::Append); + if (!f.open(QFile::Append)) + { + qWarning() << "appendToFile: Failed to open" << fileName; + return; + } QTextStream s(&f); s << QDateTime::currentDateTime().toString() << " - " << text << "\n"; f.close(); From e3dcba50251b7b09a51e0f5f78b80e0a33c75c60 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 22 Mar 2026 16:29:27 -0500 Subject: [PATCH 10/32] STYLE: Add missing Q_OBJECT macro to QAbstractItemModel subclasses (clazy missing-qobject-macro) Add Q_OBJECT to ctkQtResourcesTreeModel and ctkDICOMItemTreeModel. Without it, qobject_cast<> and metaObject()->className() return incorrect results for these public API classes. 17 additional warnings in test helper classes were investigated and found to be intentional omissions (no signals/slots, adding Q_OBJECT would require .moc includes for no benefit). Co-Authored-By: Claude Opus 4.6 --- Applications/ctkPluginBrowser/ctkQtResourcesTreeModel.h | 1 + Libs/DICOM/Widgets/ctkDICOMItemTreeModel.h | 1 + 2 files changed, 2 insertions(+) diff --git a/Applications/ctkPluginBrowser/ctkQtResourcesTreeModel.h b/Applications/ctkPluginBrowser/ctkQtResourcesTreeModel.h index 49f5d8fcb3..6115a93388 100644 --- a/Applications/ctkPluginBrowser/ctkQtResourcesTreeModel.h +++ b/Applications/ctkPluginBrowser/ctkQtResourcesTreeModel.h @@ -29,6 +29,7 @@ class ctkQtResourceTreeItem; class ctkQtResourcesTreeModel : public QAbstractItemModel { + Q_OBJECT public: ctkQtResourcesTreeModel(QObject* parent = 0); diff --git a/Libs/DICOM/Widgets/ctkDICOMItemTreeModel.h b/Libs/DICOM/Widgets/ctkDICOMItemTreeModel.h index 48e3519ef9..dfd4e495ff 100644 --- a/Libs/DICOM/Widgets/ctkDICOMItemTreeModel.h +++ b/Libs/DICOM/Widgets/ctkDICOMItemTreeModel.h @@ -32,6 +32,7 @@ class ctkDICOMItemTreeModelPrivate; /// \ingroup DICOM_Widgets class CTK_DICOM_WIDGETS_EXPORT ctkDICOMItemTreeModel : public QAbstractItemModel { + Q_OBJECT public: typedef QAbstractItemModel Superclass; explicit ctkDICOMItemTreeModel(QObject* parent=0); From 8d0897a6cb75ea1f365a13b8c53503eb8ae50352 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sat, 28 Mar 2026 20:04:50 -0500 Subject: [PATCH 11/32] STYLE: Remove spurious return before void expression (clazy returning-void-expression) Two void setter functions used `return void_func()` which compiles because the returned type matches the function's void return type, but is misleading and triggers the returning-void-expression check. Removed the needless return keyword. Co-Authored-By: Claude Sonnet 4.6 --- Libs/Core/ctkErrorLogAbstractModel.cpp | 2 +- Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Libs/Core/ctkErrorLogAbstractModel.cpp b/Libs/Core/ctkErrorLogAbstractModel.cpp index 6d07327141..5a845e53d8 100644 --- a/Libs/Core/ctkErrorLogAbstractModel.cpp +++ b/Libs/Core/ctkErrorLogAbstractModel.cpp @@ -519,7 +519,7 @@ int ctkErrorLogAbstractModel::numberOfFilesToKeep()const void ctkErrorLogAbstractModel::setNumberOfFilesToKeep(int value) { Q_D(ctkErrorLogAbstractModel); - return d->FileLogger.setNumberOfFilesToKeep(value); + d->FileLogger.setNumberOfFilesToKeep(value); } // -------------------------------------------------------------------------- diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.cpp index 2541e2a356..e08cc91873 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.cpp @@ -177,7 +177,7 @@ bool ctkVTKDataSetArrayComboBox::noneEnabled()const // ---------------------------------------------------------------------------- void ctkVTKDataSetArrayComboBox::setNoneEnabled(bool noneEnabled) { - return this->dataSetModel()->setIncludeNullItem(noneEnabled); + this->dataSetModel()->setIncludeNullItem(noneEnabled); } // -------------------------------------------------------------------------- From 55133ee602b4805fdc16cd3cc5ec05e593ad82e3 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sat, 28 Mar 2026 19:44:54 -0500 Subject: [PATCH 12/32] STYLE: Remove incorrect emit on non-signal method (clazy incorrect-emit) ctkWorkflowWidgetStep.cpp: showUserInterfaceComplete() is a public method, not a signal. Remove the erroneous emit keyword; the method internally delegates to d->showUserInterfaceCompleteInternal() which emits the signal. Co-Authored-By: Claude Sonnet 4.6 --- Libs/Widgets/ctkWorkflowWidgetStep.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libs/Widgets/ctkWorkflowWidgetStep.cpp b/Libs/Widgets/ctkWorkflowWidgetStep.cpp index ac666d4d21..8941b60455 100644 --- a/Libs/Widgets/ctkWorkflowWidgetStep.cpp +++ b/Libs/Widgets/ctkWorkflowWidgetStep.cpp @@ -202,7 +202,7 @@ void ctkWorkflowWidgetStep::showUserInterface() d->created = true; } - emit showUserInterfaceComplete(); + showUserInterfaceComplete(); } //----------------------------------------------------------------------------- From 72fc09f9731cf5edcd942238ad63413c436180f6 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sat, 28 Mar 2026 19:30:06 -0500 Subject: [PATCH 13/32] COMP: Replace Q_ENUMS with Q_ENUM in ctkDICOMVisualBrowserWidget (clazy qenums) Q_ENUMS is deprecated since Qt 5.5. Replace the single Q_ENUMS macro listing three enums with individual Q_ENUM macros placed immediately after each enum definition, as required by Q_ENUM. Co-Authored-By: Claude Sonnet 4.6 --- Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.h b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.h index d3cc7bd37a..eb6c7bf2dd 100644 --- a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.h +++ b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.h @@ -76,7 +76,6 @@ class ctkFileDialog; class CTK_DICOM_WIDGETS_EXPORT ctkDICOMVisualBrowserWidget : public QWidget { Q_OBJECT; - Q_ENUMS(ImportDirectoryMode DateType ThumbnailSizePresetOption) public: /// Date filtering options @@ -90,6 +89,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMVisualBrowserWidget : public QWidget LastYear, CustomRange }; + Q_ENUM(DateType) /// Thumbnail size options enum ThumbnailSizePresetOption @@ -99,12 +99,14 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMVisualBrowserWidget : public QWidget Medium, Large }; + Q_ENUM(ThumbnailSizePresetOption) enum ImportDirectoryMode { ImportDirectoryCopy = 0, ImportDirectoryAddLink }; + Q_ENUM(ImportDirectoryMode) Q_PROPERTY(QString databaseDirectory READ databaseDirectory WRITE setDatabaseDirectory) Q_PROPERTY(QString databaseDirectorySettingsKey READ databaseDirectorySettingsKey WRITE setDatabaseDirectorySettingsKey) From d13f65bd69540698ede5ec1d9b91b95621f425eb Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sat, 28 Mar 2026 19:36:54 -0500 Subject: [PATCH 14/32] PERF: Use QString::arg() multi-arg overload instead of chaining (clazy qstring-arg) Replace chained .arg().arg() calls with the multi-arg overload to avoid creating unnecessary temporary QString allocations at each step. For integer arguments (__LINE__, entryIndex), convert explicitly via QString::number() since the multi-arg overload requires const QString&. Co-Authored-By: Claude Sonnet 4.6 --- Libs/Core/ctkCommandLineParser.cpp | 8 +++--- Libs/Core/ctkJobScheduler.cpp | 12 +++------ Libs/Core/ctkWorkflowStep.cpp | 2 +- Libs/DICOM/Core/ctkDICOMDatabase.cpp | 6 ++--- ...ICOMDisplayedFieldGeneratorDefaultRule.cpp | 2 +- Libs/DICOM/Core/ctkDICOMIndexer.cpp | 3 +-- Libs/DICOM/Core/ctkDICOMQueryJob.cpp | 22 +++------------- Libs/DICOM/Core/ctkDICOMRetrieve.cpp | 10 ++----- Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp | 26 +++---------------- Libs/DICOM/Core/ctkDICOMSeriesModel.cpp | 2 +- .../DICOM/Core/ctkDICOMStorageListenerJob.cpp | 3 +-- Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp | 5 +--- Libs/DICOM/Widgets/ctkDICOMBrowser.cpp | 12 +++------ Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp | 6 +---- .../Widgets/ctkDICOMVisualBrowserWidget.cpp | 5 ++-- .../ctkITKErrorLogModelFileLoggingTest1.cpp | 2 +- .../Cpp/ctkPluginFrameworkTestUtil.cpp | 4 +-- Libs/PluginFramework/ctkPluginStorageSQL.cpp | 8 +++--- Libs/PluginFramework/ctkPlugin_p.cpp | 6 ++--- .../Cpp/ctkVTKConnectionTestObjectDelete.cpp | 9 +++---- .../ctkVTKErrorLogModelFileLoggingTest1.cpp | 4 +-- Libs/Widgets/ctkLanguageComboBox.cpp | 5 ++-- Libs/Widgets/ctkPathListButtonsWidget.cpp | 2 +- Libs/Widgets/ctkQImageView.cpp | 15 +++-------- Libs/Widgets/ctkScreenshotDialog.cpp | 3 +-- Libs/Widgets/ctkWorkflowWidget.cpp | 4 +-- 26 files changed, 56 insertions(+), 130 deletions(-) diff --git a/Libs/Core/ctkCommandLineParser.cpp b/Libs/Core/ctkCommandLineParser.cpp index d34a6f1338..83f86452bc 100644 --- a/Libs/Core/ctkCommandLineParser.cpp +++ b/Libs/Core/ctkCommandLineParser.cpp @@ -237,7 +237,7 @@ QString CommandLineParserArgumentDescription::helpText(int fieldWidth, const cha QString shortAndLongArg; if (!this->ShortArg.isEmpty()) { - shortAndLongArg += QString(" %1%2").arg(this->ShortArgPrefix).arg(this->ShortArg); + shortAndLongArg += QString(" %1%2").arg(this->ShortArgPrefix, this->ShortArg); } if (!this->LongArg.isEmpty()) @@ -251,7 +251,7 @@ QString CommandLineParserArgumentDescription::helpText(int fieldWidth, const cha shortAndLongArg.append(", "); } - shortAndLongArg += QString("%1%2").arg(this->LongArgPrefix).arg(this->LongArg); + shortAndLongArg += QString("%1%2").arg(this->LongArgPrefix, this->LongArg); } if(!this->ArgHelp.isEmpty()) @@ -516,7 +516,7 @@ QHash ctkCommandLineParser::parseArguments(const QStringList& { this->Internal->ErrorString = QString( "Value(s) associated with argument %1 are incorrect. %2"). - arg(argument).arg(currentArgDesc->ExactMatchFailedMessage); + arg(argument, currentArgDesc->ExactMatchFailedMessage); if (this->Internal->Debug) { qDebug() << this->Internal->ErrorString; } if (ok) { *ok = false; } @@ -555,7 +555,7 @@ QHash ctkCommandLineParser::parseArguments(const QStringList& { this->Internal->ErrorString = QString( "Value(s) associated with argument %1 are incorrect. %2"). - arg(argument).arg(currentArgDesc->ExactMatchFailedMessage); + arg(argument, currentArgDesc->ExactMatchFailedMessage); if (this->Internal->Debug) { qDebug() << this->Internal->ErrorString; } if (ok) { *ok = false; } diff --git a/Libs/Core/ctkJobScheduler.cpp b/Libs/Core/ctkJobScheduler.cpp index 392cd23628..d3eb22024f 100644 --- a/Libs/Core/ctkJobScheduler.cpp +++ b/Libs/Core/ctkJobScheduler.cpp @@ -146,15 +146,13 @@ bool ctkJobSchedulerPrivate::insertJob(QSharedPointer job) { logger.debug(QString("ctkJobScheduler: job object %1 of type %2 in thread %3 " "not added to the job list since jobs are being stopped.\n") - .arg(job->jobUID()) - .arg(job->className()) + .arg(job->jobUID(), job->className()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); return false; } logger.debug(QString("ctkJobScheduler: creating job object %1 of type %2 in thread %3.\n") - .arg(job->jobUID()) - .arg(job->className()) + .arg(job->jobUID(), job->className()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); QMetaObject::Connection startedConnection = QObject::connect(job.data(), &ctkAbstractJob::started, q, [q, job](){ @@ -227,8 +225,7 @@ bool ctkJobSchedulerPrivate::insertJob(QSharedPointer job) bool ctkJobSchedulerPrivate::cleanJob(const QString &jobUID) { logger.debug(QString("ctkJobScheduler: deleting job object %1 in thread %2.\n") - .arg(jobUID) - .arg(QString::number(reinterpret_cast(QThread::currentThreadId()), 16))); + .arg(jobUID, QString::number(reinterpret_cast(QThread::currentThreadId()), 16))); { // The QWriteLocker is enclosed within brackets to restrict its scope and @@ -278,8 +275,7 @@ void ctkJobSchedulerPrivate::cleanJobs(const QStringList &jobUIDs) bool ctkJobSchedulerPrivate::removeJob(const QString& jobUID) { logger.debug(QString("ctkJobScheduler: deleting job object %1 in thread %2.\n") - .arg(jobUID) - .arg(QString::number(reinterpret_cast(QThread::currentThreadId()), 16))); + .arg(jobUID, QString::number(reinterpret_cast(QThread::currentThreadId()), 16))); { // The QWriteLocker is enclosed within brackets to restrict its scope and diff --git a/Libs/Core/ctkWorkflowStep.cpp b/Libs/Core/ctkWorkflowStep.cpp index 870d9b586a..16815b6b3c 100644 --- a/Libs/Core/ctkWorkflowStep.cpp +++ b/Libs/Core/ctkWorkflowStep.cpp @@ -160,7 +160,7 @@ void ctkWorkflowStep::setId(const QString& newId) if (d->Workflow && d->Workflow->hasStep(newId) && !this->id().isEmpty()) { qWarning() << QString("ctkWorkflowStep - Failed to change id from '%1' to '%2' - " - "Step already added to a workflow !").arg(this->id()).arg(newId); + "Step already added to a workflow !").arg(this->id(), newId); return; } d->Id = newId; diff --git a/Libs/DICOM/Core/ctkDICOMDatabase.cpp b/Libs/DICOM/Core/ctkDICOMDatabase.cpp index a40152bd23..907a9c51a0 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase.cpp +++ b/Libs/DICOM/Core/ctkDICOMDatabase.cpp @@ -167,7 +167,7 @@ bool ctkDICOMDatabasePrivate::loggedExec(QSqlQuery& query, const QString& queryS QString sqlError = query.lastError().text(); QString lastQuery = query.lastQuery(); logger.error(QString("SQL failed: \n%1 \nError: \n%2") - .arg(lastQuery).arg(sqlError)); + .arg(lastQuery, sqlError)); } return (success); @@ -183,7 +183,7 @@ bool ctkDICOMDatabasePrivate::loggedExecBatch(QSqlQuery& query) QString sqlError = query.lastError().text(); QString lastQuery = query.lastQuery(); logger.error(QString("SQL failed: \n%1 \nError: \n%2") - .arg(lastQuery).arg(sqlError)); + .arg(lastQuery, sqlError)); } return (success); } @@ -4161,7 +4161,7 @@ void ctkDICOMDatabase::setFormatForField(QString table, QString field, QString f //------------------------------------------------------------------------------ QString ctkDICOMDatabase::compositePatientID(const QString& patientID, const QString& patientsName, const QString& patientsBirthDate) { - return QString("%1~%2~%3").arg(patientID).arg(patientsBirthDate).arg(patientsName); + return QString("%1~%2~%3").arg(patientID, patientsBirthDate, patientsName); } //------------------------------------------------------------------------------ diff --git a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.cpp b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.cpp index 6a89104cff..f4f1ded978 100644 --- a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.cpp +++ b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.cpp @@ -119,7 +119,7 @@ void ctkDICOMDisplayedFieldGeneratorDefaultRule::getDisplayedFieldsForInstance( { QString rows = cachedTagsForInstance[dicomTagToString(DCM_Rows)]; QString columns = cachedTagsForInstance[dicomTagToString(DCM_Columns)]; - displayedFieldsForCurrentSeries["DisplayedSize"] = QString("%1x%2").arg(columns).arg(rows); + displayedFieldsForCurrentSeries["DisplayedSize"] = QString("%1x%2").arg(columns, rows); } } diff --git a/Libs/DICOM/Core/ctkDICOMIndexer.cpp b/Libs/DICOM/Core/ctkDICOMIndexer.cpp index 4c8d446531..24e03af93f 100644 --- a/Libs/DICOM/Core/ctkDICOMIndexer.cpp +++ b/Libs/DICOM/Core/ctkDICOMIndexer.cpp @@ -634,8 +634,7 @@ bool ctkDICOMIndexer::addDicomdir(const QString& directoryName, bool copyFile/*= } float elapsedTimeInSeconds = timeProbe.elapsed() / 1000.0; logger.info(QString("DICOM indexer has successfully processed DICOMDIR in %1 [%2s]") - .arg(directoryName) - .arg(QString::number(elapsedTimeInSeconds,'f', 2))); + .arg(directoryName, QString::number(elapsedTimeInSeconds,'f', 2))); this->addListOfFiles(listOfInstances, copyFile); } return success; diff --git a/Libs/DICOM/Core/ctkDICOMQueryJob.cpp b/Libs/DICOM/Core/ctkDICOMQueryJob.cpp index e9cb50bfc0..08340fc833 100644 --- a/Libs/DICOM/Core/ctkDICOMQueryJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMQueryJob.cpp @@ -114,9 +114,7 @@ QString ctkDICOMQueryJob::loggerReport(const QString& status) fullLogMsg = QString("ctkDICOMQueryJob: query job at patients level %1.\n" "JobUID: %2\n" "Server: %3\n") - .arg(status) - .arg(this->jobUID()) - .arg(this->server()->connectionName()); + .arg(status, this->jobUID(), this->server()->connectionName()); logMsg = QString("Query job at patients level %1.\n") .arg(status); break; @@ -125,10 +123,7 @@ QString ctkDICOMQueryJob::loggerReport(const QString& status) "JobUID: %2\n" "Server: %3\n" "PatientID: %4\n") - .arg(status) - .arg(this->jobUID()) - .arg(this->server()->connectionName()) - .arg(this->patientID()); + .arg(status, this->jobUID(), this->server()->connectionName(), this->patientID()); logMsg = QString("Query job at studies level %1.\n") .arg(status); break; @@ -138,11 +133,7 @@ QString ctkDICOMQueryJob::loggerReport(const QString& status) "Server: %3\n" "PatientID: %4\n" "StudyInstanceUID: %5\n") - .arg(status) - .arg(this->jobUID()) - .arg(this->server()->connectionName()) - .arg(this->patientID()) - .arg(this->studyInstanceUID()); + .arg(status, this->jobUID(), this->server()->connectionName(), this->patientID(), this->studyInstanceUID()); logMsg = QString("Query job at studies level %1.\n") .arg(status); break; @@ -153,12 +144,7 @@ QString ctkDICOMQueryJob::loggerReport(const QString& status) "PatientID: %4\n" "StudyInstanceUID: %5\n" "SeriesInstanceUID: %6\n") - .arg(status) - .arg(this->jobUID()) - .arg(this->server()->connectionName()) - .arg(this->patientID()) - .arg(this->studyInstanceUID()) - .arg(this->seriesInstanceUID()); + .arg(status, this->jobUID(), this->server()->connectionName(), this->patientID(), this->studyInstanceUID(), this->seriesInstanceUID()); logMsg = QString("Query job at instances level %1.\n") .arg(status); break; diff --git a/Libs/DICOM/Core/ctkDICOMRetrieve.cpp b/Libs/DICOM/Core/ctkDICOMRetrieve.cpp index c90478fbe4..459b2b2f32 100644 --- a/Libs/DICOM/Core/ctkDICOMRetrieve.cpp +++ b/Libs/DICOM/Core/ctkDICOMRetrieve.cpp @@ -580,10 +580,7 @@ bool ctkDICOMRetrievePrivate::move(const QString& patientID, "%2 images transferred, and\n" "%3 images transferred with warning, and\n" "%4 images transfers failed") - .arg(studyInstanceUID) - .arg(QString::number(static_cast((*it)->m_numberOfCompletedSubops))) - .arg(QString::number(static_cast((*it)->m_numberOfWarningSubops))) - .arg(QString::number(static_cast((*it)->m_numberOfFailedSubops))), + .arg(studyInstanceUID, QString::number(static_cast((*it)->m_numberOfCompletedSubops)), QString::number(static_cast((*it)->m_numberOfWarningSubops)), QString::number(static_cast((*it)->m_numberOfFailedSubops))), q->debug) if (this->Canceled) @@ -772,10 +769,7 @@ bool ctkDICOMRetrievePrivate::get(const QString& patientID, "%2 images transferred, and\n" "%3 images transferred with warning, and\n" "%4 images transfers failed") - .arg(studyInstanceUID) - .arg(QString::number(static_cast((*it)->m_numberOfCompletedSubops))) - .arg(QString::number(static_cast((*it)->m_numberOfWarningSubops))) - .arg(QString::number(static_cast((*it)->m_numberOfFailedSubops))), + .arg(studyInstanceUID, QString::number(static_cast((*it)->m_numberOfCompletedSubops)), QString::number(static_cast((*it)->m_numberOfWarningSubops)), QString::number(static_cast((*it)->m_numberOfFailedSubops))), q->debug) emit q->progress(100); diff --git a/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp b/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp index bc16767ff5..1157e0152f 100644 --- a/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp @@ -100,10 +100,7 @@ QString ctkDICOMRetrieveJob::loggerReport(const QString& status) "JobUID: %2\n" "Server: %3\n" "PatientID: %4\n") - .arg(status) - .arg(this->jobUID()) - .arg(this->server()->connectionName()) - .arg(this->patientID()); + .arg(status, this->jobUID(), this->server()->connectionName(), this->patientID()); logMsg = QString("Retrieve task at patients level %1.\n") .arg(status); break; @@ -113,11 +110,7 @@ QString ctkDICOMRetrieveJob::loggerReport(const QString& status) "Server: %3\n" "PatientID: %4\n" "StudyInstanceUID: %5\n") - .arg(status) - .arg(this->jobUID()) - .arg(this->server()->connectionName()) - .arg(this->patientID()) - .arg(this->studyInstanceUID()); + .arg(status, this->jobUID(), this->server()->connectionName(), this->patientID(), this->studyInstanceUID()); logMsg = QString("Retrieve task at studies level %1.\n") .arg(status); break; @@ -128,12 +121,7 @@ QString ctkDICOMRetrieveJob::loggerReport(const QString& status) "PatientID: %4\n" "StudyInstanceUID: %5\n" "SeriesInstanceUID: %6\n") - .arg(status) - .arg(this->jobUID()) - .arg(this->server()->connectionName()) - .arg(this->patientID()) - .arg(this->studyInstanceUID()) - .arg(this->seriesInstanceUID()); + .arg(status, this->jobUID(), this->server()->connectionName(), this->patientID(), this->studyInstanceUID(), this->seriesInstanceUID()); logMsg = QString("Retrieve task at series level %1.\n") .arg(status); break; @@ -145,13 +133,7 @@ QString ctkDICOMRetrieveJob::loggerReport(const QString& status) "StudyInstanceUID: %5\n" "SeriesInstanceUID: %6\n" "SOPInstanceUID: %7\n") - .arg(status) - .arg(this->jobUID()) - .arg(this->server()->connectionName()) - .arg(this->patientID()) - .arg(this->studyInstanceUID()) - .arg(this->seriesInstanceUID()) - .arg(this->sopInstanceUID()); + .arg(status, this->jobUID(), this->server()->connectionName(), this->patientID(), this->studyInstanceUID(), this->seriesInstanceUID(), this->sopInstanceUID()); logMsg = QString("Retrieve task at instances level %1.\n") .arg(status); break; diff --git a/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp b/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp index a056c5eb0a..e6b31fe169 100644 --- a/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp @@ -1119,7 +1119,7 @@ QVariant ctkDICOMSeriesModel::data(const QModelIndex& index, int role) const switch (role) { case Qt::DisplayRole: - return QString("Series %1: %2").arg(series.seriesNumber).arg(series.seriesDescription); + return QString("Series %1: %2").arg(series.seriesNumber, series.seriesDescription); case Qt::ToolTipRole: { diff --git a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp index c823ae54f2..a68df8eb03 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp @@ -77,8 +77,7 @@ QString ctkDICOMStorageListenerJob::loggerReport(const QString& status) { QString fullLogMsg = QString("ctkDICOMStorageListenerJob: listener job %1.\n" "JobUID: %2\n") - .arg(status) - .arg(this->jobUID()); + .arg(status, this->jobUID()); QString logMsg = QString("Listener job %1.\n") .arg(status); QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz"); diff --git a/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp index 206972e8d1..4516b44bf0 100644 --- a/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp @@ -684,10 +684,7 @@ void ctkDICOMAppWidget::onImportDirectory(QString directory) "%2 New Studies\n" "%3 New Series\n" "%4 New Instances\n") - .arg(QString::number(d->PatientsAddedDuringImport)) - .arg(QString::number(d->StudiesAddedDuringImport)) - .arg(QString::number(d->SeriesAddedDuringImport)) - .arg(QString::number(d->InstancesAddedDuringImport)); + .arg(QString::number(d->PatientsAddedDuringImport), QString::number(d->StudiesAddedDuringImport), QString::number(d->SeriesAddedDuringImport), QString::number(d->InstancesAddedDuringImport)); QMessageBox::information(this, tr("DICOM Directory Import"), message); } } diff --git a/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp b/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp index 9cb7bfbb2c..4435c69ea3 100644 --- a/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp @@ -831,9 +831,7 @@ void ctkDICOMBrowser::onRepairAction() "Study Description: %2\n" "Series Description: %3\n" "Do you want to remove the series from the DICOM database?" - ).arg(descriptions["PatientsName"]) - .arg(descriptions["StudyDescription"]) - .arg(descriptions["SeriesDescription"]) + ).arg(descriptions["PatientsName"], descriptions["StudyDescription"], descriptions["SeriesDescription"]) ); repairMessageBox->setDetailedText(unavailableFileNames); @@ -1467,8 +1465,7 @@ void ctkDICOMBrowser::exportSeries(QString dirPath, QStringList uids) //: %1 and %2 refers to source and destination file paths QString errorString = tr("Failed to copy\n\n%1\n\nto\n\n%2" "\n\nHalting export.") - .arg(filePath) - .arg(destinationFileName); + .arg(filePath, destinationFileName); ctkMessageBox copyErrorMessageBox(this); copyErrorMessageBox.setText(errorString); copyErrorMessageBox.setIcon(QMessageBox::Warning); @@ -1770,10 +1767,7 @@ void ctkDICOMBrowser::onIndexingComplete(int patientsAdded, int studiesAdded, in { //: Arguments correspond to the number of patients, studies, series and instancies QString message = tr("Import completed: added %1 patients, %2 studies, %3 series, %4 instances.") - .arg(QString::number(patientsAdded)) - .arg(QString::number(studiesAdded)) - .arg(QString::number(seriesAdded)) - .arg(QString::number(imagesAdded)); + .arg(QString::number(patientsAdded), QString::number(studiesAdded), QString::number(seriesAdded), QString::number(imagesAdded)); d->InformationMessageLabel->setText(message); d->InformationMessageFrame->show(); } diff --git a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp index f00ce0a2e2..19971c6bb5 100644 --- a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp @@ -1325,11 +1325,7 @@ void ctkDICOMJobListWidget::onShowCompletedButtonToggled(bool toggled) if (!toggled) { filterText = QString("^%1$|^%2$|^%3$|^%4$|^%5$") - .arg(tr("initialized")) - .arg(tr("queued")) - .arg(tr("in-progress")) - .arg(tr("user-stopped")) - .arg(tr("failed")); + .arg(tr("initialized"), tr("queued"), tr("in-progress"), tr("user-stopped"), tr("failed")); } d->showCompletedProxyModel->setFilterRegularExpression(filterText); } diff --git a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp index 139b51ad33..30fe2f9587 100644 --- a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp @@ -1988,7 +1988,7 @@ void ctkDICOMVisualBrowserWidget::setDatabaseDirectory(const QString& directory) if (d->DicomDatabase->schemaVersionLoaded() != d->DicomDatabase->schemaVersion()) { logger.warn(QString("Database version mismatch: version of selected database = %1, version required = %2 \n") - .arg(d->DicomDatabase->schemaVersionLoaded()).arg(d->DicomDatabase->schemaVersion())); + .arg(d->DicomDatabase->schemaVersionLoaded(), d->DicomDatabase->schemaVersion())); d->DicomDatabase->closeDatabase(); d->DatabaseDirectoryProblemFrame->show(); d->DatabaseDirectoryProblemLabel->setText( @@ -4082,8 +4082,7 @@ void ctkDICOMVisualBrowserWidget::exportSeriesToDirectory(const QString& dirPath //: %1 and %2 refers to source and destination file paths QString errorString = tr("Failed to copy\n\n%1\n\nto\n\n%2" "\n\nHalting export.") - .arg(filePath) - .arg(destinationFileName); + .arg(filePath, destinationFileName); ctkMessageBox copyErrorMessageBox(this); copyErrorMessageBox.setText(errorString); copyErrorMessageBox.setIcon(QMessageBox::Warning); diff --git a/Libs/ImageProcessing/ITK/Core/Testing/Cpp/ctkITKErrorLogModelFileLoggingTest1.cpp b/Libs/ImageProcessing/ITK/Core/Testing/Cpp/ctkITKErrorLogModelFileLoggingTest1.cpp index debcbda6a1..b5cdb77ccd 100644 --- a/Libs/ImageProcessing/ITK/Core/Testing/Cpp/ctkITKErrorLogModelFileLoggingTest1.cpp +++ b/Libs/ImageProcessing/ITK/Core/Testing/Cpp/ctkITKErrorLogModelFileLoggingTest1.cpp @@ -128,7 +128,7 @@ int ctkITKErrorLogModelFileLoggingTest1(int argc, char * argv []) { printErrorMessage( QString("Line %1 - Log entry %2 does NOT match expected regular expression.\n\tLogEntry: %3\n\tRegExp: %4"). - arg(__LINE__).arg(entryIndex).arg(logLines.at(entryIndex)).arg(regexp.pattern())); + arg(QString::number(__LINE__), QString::number(entryIndex), logLines.at(entryIndex), regexp.pattern())); return EXIT_FAILURE; } diff --git a/Libs/PluginFramework/Testing/Cpp/ctkPluginFrameworkTestUtil.cpp b/Libs/PluginFramework/Testing/Cpp/ctkPluginFrameworkTestUtil.cpp index c8d5cdf8ac..cfb76394e4 100644 --- a/Libs/PluginFramework/Testing/Cpp/ctkPluginFrameworkTestUtil.cpp +++ b/Libs/PluginFramework/Testing/Cpp/ctkPluginFrameworkTestUtil.cpp @@ -46,7 +46,7 @@ QSharedPointer ctkPluginFrameworkTestUtil::installPlugin( QFileInfo testDirInfo(testPluginDir); if (!testDirInfo.exists() || !testDirInfo.isDir()) { - throw ctkPluginException(QString("No plugin %1 in %2").arg(plugin).arg(testPluginDir)); + throw ctkPluginException(QString("No plugin %1 in %2").arg(plugin, testPluginDir)); } QStringList libFilter; @@ -61,6 +61,6 @@ QSharedPointer ctkPluginFrameworkTestUtil::installPlugin( } } - throw ctkPluginException(QString("No plugin %1 in %2").arg(plugin).arg(testPluginDir)); + throw ctkPluginException(QString("No plugin %1 in %2").arg(plugin, testPluginDir)); } } diff --git a/Libs/PluginFramework/ctkPluginStorageSQL.cpp b/Libs/PluginFramework/ctkPluginStorageSQL.cpp index 139db1881f..e33e129d08 100644 --- a/Libs/PluginFramework/ctkPluginStorageSQL.cpp +++ b/Libs/PluginFramework/ctkPluginStorageSQL.cpp @@ -99,7 +99,7 @@ QSqlDatabase ctkPluginStorageSQL::getConnection(bool create) const if (!database.open()) { close(); - throw ctkPluginDatabaseException(QString("Could not open database connection: %1 (%2)").arg(m_connectionNames.localData()).arg(database.lastError().text()), + throw ctkPluginDatabaseException(QString("Could not open database connection: %1 (%2)").arg(m_connectionNames.localData(), database.lastError().text()), ctkPluginDatabaseException::DB_SQL_ERROR); } @@ -433,8 +433,7 @@ void ctkPluginStorageSQL::insertArchive(QSharedPointer pa, pluginLoader.setFileName(pa->getLibLocation()); if (!pluginLoader.load()) { - ctkPluginException exc(QString("The plugin \"%1\" could not be loaded: %2").arg(pa->getLibLocation()) - .arg(pluginLoader.errorString())); + ctkPluginException exc(QString("The plugin \"%1\" could not be loaded: %2").arg(pa->getLibLocation(), pluginLoader.errorString())); throw exc; } @@ -759,8 +758,7 @@ void ctkPluginStorageSQL::executeQuery(QSqlQuery *query, const QString &statemen query->finish(); query->clear(); - throw ctkPluginDatabaseException(errorText.arg(stage == Prepare ? "prepare":"execute") - .arg(statement).arg(query->lastError().text()).arg(parameters), errorType); + throw ctkPluginDatabaseException(errorText.arg(stage == Prepare ? "prepare":"execute", statement, query->lastError().text(), parameters), errorType); } if (stage == Prepare) diff --git a/Libs/PluginFramework/ctkPlugin_p.cpp b/Libs/PluginFramework/ctkPlugin_p.cpp index 053e75aa59..d99e7d6d7e 100644 --- a/Libs/PluginFramework/ctkPlugin_p.cpp +++ b/Libs/PluginFramework/ctkPlugin_p.cpp @@ -706,7 +706,7 @@ void ctkPluginPrivate::startDependencies() // started if all its dependencies could be resolved. throw ctkPluginException( QString("Internal error: dependent plugin %1 inside version range %2 is not installed."). - arg(pr->name).arg(pr->pluginRange.toString())); + arg(pr->name, pr->pluginRange.toString())); } else { @@ -734,14 +734,14 @@ ctkPluginException* ctkPluginPrivate::start0() if (!pluginLoader.isLoaded()) { error_type = ctkPluginException::ACTIVATOR_ERROR; - throw ctkPluginException(QString("Loading plugin %1 failed: %2").arg(pluginLoader.fileName()).arg(pluginLoader.errorString()), + throw ctkPluginException(QString("Loading plugin %1 failed: %2").arg(pluginLoader.fileName(), pluginLoader.errorString()), ctkPluginException::ACTIVATOR_ERROR); } pluginActivator = qobject_cast(pluginLoader.instance()); if (!pluginActivator) { - throw ctkPluginException(QString("Creating ctkPluginActivator instance from %1 failed: %2").arg(pluginLoader.fileName()).arg(pluginLoader.errorString()), + throw ctkPluginException(QString("Creating ctkPluginActivator instance from %1 failed: %2").arg(pluginLoader.fileName(), pluginLoader.errorString()), ctkPluginException::ACTIVATOR_ERROR); } diff --git a/Libs/Visualization/VTK/Core/Testing/Cpp/ctkVTKConnectionTestObjectDelete.cpp b/Libs/Visualization/VTK/Core/Testing/Cpp/ctkVTKConnectionTestObjectDelete.cpp index ae3cbb9d5a..bc3500adcd 100644 --- a/Libs/Visualization/VTK/Core/Testing/Cpp/ctkVTKConnectionTestObjectDelete.cpp +++ b/Libs/Visualization/VTK/Core/Testing/Cpp/ctkVTKConnectionTestObjectDelete.cpp @@ -121,8 +121,7 @@ bool computeTimingAfterObjectDelete(bool observeDeletion, } timerLog->StopTimer(); - QString measurementName = QString("time_%1-%2-%3-%4").arg( - "connection-object-modified").arg(attribute).arg(connectionCount).arg(objectCount); + QString measurementName = QString("time_%1-%2-%3-%4").arg("connection-object-modified", attribute).arg(connectionCount).arg(objectCount); displayDartMeasurement(qPrintable(measurementName), timerLog->GetElapsedTime()); if (!check(__LINE__, "total_event_count", @@ -141,8 +140,7 @@ bool computeTimingAfterObjectDelete(bool observeDeletion, objects.clear(); timerLog->StopTimer(); - QString measurementName = QString("time_%1-%2-%3-%4").arg( - "connection-vtkobject-deleted").arg(attribute).arg(connectionCount).arg(objectCount); + QString measurementName = QString("time_%1-%2-%3-%4").arg("connection-vtkobject-deleted", attribute).arg(connectionCount).arg(objectCount); displayDartMeasurement(qPrintable(measurementName), timerLog->GetElapsedTime()); if (!check(__LINE__, "total_event_count", @@ -177,8 +175,7 @@ bool computeTimingAfterObjectDelete(bool observeDeletion, QCoreApplication::processEvents(); timerLog->StopTimer(); - QString measurementName = QString("time_%1-%2-%3-%4").arg( - "connection-qtobject-deleted").arg(attribute).arg(connectionCount).arg(objectCount); + QString measurementName = QString("time_%1-%2-%3-%4").arg("connection-qtobject-deleted", attribute).arg(connectionCount).arg(objectCount); displayDartMeasurement(qPrintable(measurementName), timerLog->GetElapsedTime()); if (!check(__LINE__, "total_event_count", diff --git a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogModelFileLoggingTest1.cpp b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogModelFileLoggingTest1.cpp index 37234567e5..c423b83e54 100644 --- a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogModelFileLoggingTest1.cpp +++ b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogModelFileLoggingTest1.cpp @@ -90,7 +90,7 @@ int ctkVTKErrorLogModelFileLoggingTest1(int argc, char * argv []) { printErrorMessage( QString("Line %1 - Log entry %2 does NOT match expected regular expression.\n\tLogEntry: %3\n\tRegExp: %4"). - arg(__LINE__).arg(entryIndex).arg(logLines.at(entryIndex)).arg(regexp.pattern())); + arg(__LINE__).arg(entryIndex).arg(logLines.at(entryIndex), regexp.pattern())); return EXIT_FAILURE; } } @@ -102,7 +102,7 @@ int ctkVTKErrorLogModelFileLoggingTest1(int argc, char * argv []) { printErrorMessage( QString("Line %1 - Log entry %2 does NOT match expected regular expression.\n\tLogEntry: %3\n\tRegExp: %4"). - arg(__LINE__).arg(entryIndex).arg(logLines.at(entryIndex)).arg(regexp.pattern())); + arg(__LINE__).arg(entryIndex).arg(logLines.at(entryIndex), regexp.pattern())); return EXIT_FAILURE; } } diff --git a/Libs/Widgets/ctkLanguageComboBox.cpp b/Libs/Widgets/ctkLanguageComboBox.cpp index 7274bbb2b4..be64210016 100644 --- a/Libs/Widgets/ctkLanguageComboBox.cpp +++ b/Libs/Widgets/ctkLanguageComboBox.cpp @@ -194,11 +194,10 @@ bool ctkLanguageComboBoxPrivate::languageItem(const QString& localeCode, { // There are multiple countries for the locale's language therefore include the country name. text = QString("%1 (%2)") - .arg(QLocale::languageToString(locale.language())) #if (QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)) - .arg(QLocale::territoryToString(locale.territory())); + .arg(QLocale::languageToString(locale.language()), QLocale::territoryToString(locale.territory())); #else - .arg(QLocale::countryToString(locale.country())); + .arg(QLocale::languageToString(locale.language()), QLocale::countryToString(locale.country())); #endif } else diff --git a/Libs/Widgets/ctkPathListButtonsWidget.cpp b/Libs/Widgets/ctkPathListButtonsWidget.cpp index e98bd7bfa9..3acf881823 100644 --- a/Libs/Widgets/ctkPathListButtonsWidget.cpp +++ b/Libs/Widgets/ctkPathListButtonsWidget.cpp @@ -122,7 +122,7 @@ void ctkPathListButtonsWidgetPrivate::on_EditButton_clicked() { QMessageBox::information(q, tr("Editing the path failed"), QString(tr("Failed to change path:\n\n%1\n\nto path\n\n%2\n\nPlease check your permissions.")) - .arg(currentPath).arg(paths.front())); + .arg(currentPath, paths.front())); } } } diff --git a/Libs/Widgets/ctkQImageView.cpp b/Libs/Widgets/ctkQImageView.cpp index 45dd5d0fa6..ae42ea2900 100644 --- a/Libs/Widgets/ctkQImageView.cpp +++ b/Libs/Widgets/ctkQImageView.cpp @@ -1083,8 +1083,7 @@ void ctkQImageView::update( bool zoomChanged, &intBound ); QString wlString = tr("W / L = %1 / %2") - .arg(QString::number(this->intensityWindow(), 'f', 3)) - .arg(QString::number(this->intensityLevel(), 'f', 3)); + .arg(QString::number(this->intensityWindow(), 'f', 3), QString::number(this->intensityLevel(), 'f', 3)); QRectF wlBound = painter.boundingRect( pointRect, textFlags, wlString ); QRectF wlRect( @@ -1096,9 +1095,7 @@ void ctkQImageView::update( bool zoomChanged, } QString spacingString = tr("Spacing = %1, %2, %3") - .arg(QString::number(this->xSpacing(), 'f', 3)) - .arg(QString::number(this->ySpacing(), 'f', 3)) - .arg(QString::number(this->sliceThickness(), 'f', 3)); + .arg(QString::number(this->xSpacing(), 'f', 3), QString::number(this->ySpacing(), 'f', 3), QString::number(this->sliceThickness(), 'f', 3)); QRectF spacingBound = painter.boundingRect( pointRect, textFlags, spacingString ); QRectF spacingRect( @@ -1109,9 +1106,7 @@ void ctkQImageView::update( bool zoomChanged, &spacingBound ); QString dimString = tr("Size = %1, %2, %3") - .arg(QString::number( d->ImageList[ d->SliceNumber ].width())) - .arg(QString::number(d->ImageList[d->SliceNumber].height())) - .arg(QString::number(d->ImageList.size())); + .arg(QString::number( d->ImageList[ d->SliceNumber ].width()), QString::number(d->ImageList[d->SliceNumber].height()), QString::number(d->ImageList.size())); QRectF dimBound = painter.boundingRect( pointRect, textFlags, dimString ); QRectF dimRect( @@ -1121,9 +1116,7 @@ void ctkQImageView::update( bool zoomChanged, painter.drawText( dimRect, textFlags, dimString, &dimBound ); QString rasString = tr("RAS = %1, %2, %3") - .arg(QString::number(this->xPosition() * this->xSpacing(), 'f', 3)) - .arg(QString::number(this->yPosition() * this->ySpacing(), 'f', 3)) - .arg(QString::number(this->slicePosition() * this->sliceSpacing(), 'f', 3)); + .arg(QString::number(this->xPosition() * this->xSpacing(), 'f', 3), QString::number(this->yPosition() * this->ySpacing(), 'f', 3), QString::number(this->slicePosition() * this->sliceSpacing(), 'f', 3)); QRectF rasBound = painter.boundingRect( pointRect, textFlags, rasString ); QRectF rasRect( diff --git a/Libs/Widgets/ctkScreenshotDialog.cpp b/Libs/Widgets/ctkScreenshotDialog.cpp index 922a1eb4ff..f53a8ef7b8 100644 --- a/Libs/Widgets/ctkScreenshotDialog.cpp +++ b/Libs/Widgets/ctkScreenshotDialog.cpp @@ -385,8 +385,7 @@ void ctkScreenshotDialog::instantScreenshot() d->HeightSpinBox->value()); } - QString filename = QString("%1/%2_%3.png").arg(d->DirectoryPathLineEdit->currentPath()) - .arg(d->ImageNameLineEdit->text()) + QString filename = QString("%1/%2_%3.png").arg(d->DirectoryPathLineEdit->currentPath(), d->ImageNameLineEdit->text()) .arg(d->ImageVersionNumberSpinBox->value()); // Check if file exists diff --git a/Libs/Widgets/ctkWorkflowWidget.cpp b/Libs/Widgets/ctkWorkflowWidget.cpp index f3d2678a48..946b68f199 100644 --- a/Libs/Widgets/ctkWorkflowWidget.cpp +++ b/Libs/Widgets/ctkWorkflowWidget.cpp @@ -338,9 +338,7 @@ ::parse(const QString& format, ctkWorkflowWidgetStep* step) //QRegularExpression splitBrackets("\\{([^}]+)\\}"); //QRegularExpression splitBrackets("(\\{[^{}]+\\}|\\([^\\(\\)]+\\)|\"[^\"]+\")"); static const QRegularExpression splitBrackets(QString("(%1|%2|%3|%4)") - .arg(textRegExp).arg(simpleTextRegExp) - .arg(toolTipRegExp) - .arg(iconRegExp)); + .arg(textRegExp, simpleTextRegExp, toolTipRegExp, iconRegExp)); QStringList brackets; QRegularExpressionMatchIterator matchIter = splitBrackets.globalMatch(format); From b1d7f71f2ea902671a6f3c944a975ee449e5ea3d Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Fri, 20 Mar 2026 09:06:32 -0500 Subject: [PATCH 15/32] STYLE: Use QFileInfo::exists(path) static overload Apply clazy-qfileinfo-exists fixes. The static QFileInfo::exists() avoids constructing a temporary QFileInfo object for a simple existence check. Co-Authored-By: Claude Opus 4.6 --- Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp | 2 +- Libs/PluginFramework/ctkPluginFrameworkLauncher.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp index 45198744b5..e2b256c775 100644 --- a/Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp @@ -186,7 +186,7 @@ ::addThumbnailWidget(const QModelIndex& imageIndex, "/thumbs/" + model->data(studyIndex ,ctkDICOMModel::UIDRole).toString() + "/" + model->data(seriesIndex ,ctkDICOMModel::UIDRole).toString() + "/" + model->data(imageIndex, ctkDICOMModel::UIDRole).toString() + ".png"; - if(!QFileInfo(thumbnailPath).exists()) + if(!QFileInfo::exists(thumbnailPath)) { return; } diff --git a/Libs/PluginFramework/ctkPluginFrameworkLauncher.cpp b/Libs/PluginFramework/ctkPluginFrameworkLauncher.cpp index 6f0b573a2d..a77a08ebf8 100644 --- a/Libs/PluginFramework/ctkPluginFrameworkLauncher.cpp +++ b/Libs/PluginFramework/ctkPluginFrameworkLauncher.cpp @@ -140,7 +140,7 @@ class ctkPluginFrameworkLauncherPrivate ctkProperties loadProperties(const QUrl& location) { ctkProperties result; - if (!location.isValid() || !QFileInfo(location.toLocalFile()).exists()) + if (!location.isValid() || !QFileInfo::exists(location.toLocalFile())) { return result; } From ae333f76aa0e365fb06c302446399d3f62dd77f3 Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Mon, 7 Jul 2025 09:12:30 -0500 Subject: [PATCH 16/32] COMP: Add QtTesting include directories to CMakeLists.txt Add missing include directory for QtTesting headers so that ctkVTKRenderViewEventTranslator and related files can find QtTesting headers without specifying full paths. Co-Authored-By: Claude Sonnet 4.6 --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 10b94f3c19..e4231ae6ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -882,6 +882,8 @@ set(CTK_LIB_QtTesting ${CTK_USE_QTTESTING}) if(CTK_USE_QTTESTING) list(APPEND CTK_LIBS QtTesting) list(APPEND target_directories "${CMAKE_CURRENT_SOURCE_DIR}/Libs/QtTesting^^CTK_LIB_QtTesting") + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/Libs/QtTesting) + include_directories(${CMAKE_CURRENT_BINARY_DIR}/Libs/QtTesting) endif() #message(STATUS target_directories:${target_directories}) From 8892b85720678a4f8db80f2a1ffea1047c6515bc Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Sun, 29 Mar 2026 07:58:03 -0500 Subject: [PATCH 17/32] COMP: Drop VTK 8 superbuild support Remove all VTK 8 CMake configuration from the superbuild: - Remove VTK 8 revision tag (v8.0.1) and version validation - Remove additional_vtk8_cmakevars and VTK8 module options (Module_vtkChartsCore, Module_vtkGUISupportQt, etc.) - Remove VTK8-only ExternalProject cache args (VTK_Group_Qt, VTK_QT_VERSION) that are not used by VTK 9's module system CTK_VTK_VERSION_MAJOR is retained but now only accepts "9". Co-Authored-By: Claude Opus 4.6 (1M context) --- CMakeExternals/VTK.cmake | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/CMakeExternals/VTK.cmake b/CMakeExternals/VTK.cmake index 83f1853039..90a3fd57c1 100644 --- a/CMakeExternals/VTK.cmake +++ b/CMakeExternals/VTK.cmake @@ -32,16 +32,12 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}) if(NOT DEFINED CTK_VTK_VERSION_MAJOR) set(CTK_VTK_VERSION_MAJOR "9") endif() - if(NOT CTK_VTK_VERSION_MAJOR MATCHES "^(8|9)$") - message(FATAL_ERROR "Expected value for CTK_VTK_VERSION_MAJOR is either '8' or '9'") + if(NOT CTK_VTK_VERSION_MAJOR MATCHES "^(9)$") + message(FATAL_ERROR "Expected value for CTK_VTK_VERSION_MAJOR is '9'") endif() ExternalProject_Message(${proj} "VTK[CTK_VTK_VERSION_MAJOR:${CTK_VTK_VERSION_MAJOR}]") - if(CTK_VTK_VERSION_MAJOR VERSION_EQUAL "8") - set(revision_tag v8.0.1) - elseif(CTK_VTK_VERSION_MAJOR VERSION_EQUAL "9") - set(revision_tag v9.5.2) - endif() + set(revision_tag v9.5.2) if(${proj}_REVISION_TAG) set(revision_tag ${${proj}_REVISION_TAG}) endif() @@ -59,7 +55,6 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}) endif() set(additional_vtk_cmakevars ) - set(additional_vtk8_cmakevars ) set(additional_vtk9_cmakevars ) if(MINGW) list(APPEND additional_vtk_cmakevars -DCMAKE_USE_PTHREADS:BOOL=OFF) @@ -107,16 +102,6 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}) message(FATAL_ERROR "Support for Qt${CTK_QT_VERSION} is not implemented") endif() - # VTK 8 - list(APPEND additional_vtk8_cmakevars - -DModule_vtkChartsCore:BOOL=ON - -DModule_vtkRenderingContext2D:BOOL=ON - -DModule_vtkRenderingContextOpenGL2:BOOL=ON - -DModule_vtkGUISupportQt:BOOL=ON - -DModule_vtkGUISupportQtOpenGL:BOOL=ON # OpenGL2 rendering backend - -DModule_vtkTestingRendering:BOOL=ON - ) - # VTK 9 list(APPEND additional_vtk9_cmakevars -DVTK_MODULE_ENABLE_VTK_ChartsCore:STRING=YES @@ -137,10 +122,6 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}) if(UNIX AND NOT APPLE) find_package(FontConfig QUIET) if(FONTCONFIG_FOUND) - # VTK8 - list(APPEND additional_vtk8_cmakevars - -DModule_vtkRenderingFreeTypeFontConfig:BOOL=ON - ) # VTK9 list(APPEND additional_vtk9_cmakevars -DVTK_MODULE_ENABLE_VTK_RenderingFreeTypeFontConfig:BOOL=ON @@ -176,8 +157,6 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}) -DVTK_WRAP_PYTHON:BOOL=${CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK} -DVTK_WRAP_JAVA:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=ON - -DVTK_Group_Qt:BOOL=ON - -DVTK_QT_VERSION:STRING=${CTK_QT_VERSION} -DVTK_LEGACY_REMOVE:BOOL=ON DEPENDS ${${proj}_DEPENDENCIES} From d4d1b8796b0f4ad542c619ce99b8264855865bdf Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Sun, 29 Mar 2026 08:11:34 -0500 Subject: [PATCH 18/32] COMP: Remove CMake conditional code for VTK versions older than 9 Remove all CMake code paths that supported VTK 8 and earlier: - Remove include(VTK_USE_FILE) paths (VTK8 pattern) - Remove manual VTK_LIBRARIES lists for VTK 5/6/7/8 - Remove VERSION_LESS "8.90" guards around QVTKOpenGLNativeWidget detection, export content, and vtk_module_autoinit() - Remove VTK8 Python/X11 library linking blocks Co-Authored-By: Claude Opus 4.6 (1M context) --- Libs/Visualization/VTK/Core/CMakeLists.txt | 191 +++++------------- Libs/Visualization/VTK/Widgets/CMakeLists.txt | 155 ++++---------- .../VTK/Widgets/Testing/Cpp/CMakeLists.txt | 8 +- 3 files changed, 89 insertions(+), 265 deletions(-) diff --git a/Libs/Visualization/VTK/Core/CMakeLists.txt b/Libs/Visualization/VTK/Core/CMakeLists.txt index aa14930c9c..20e9a6d9c9 100644 --- a/Libs/Visualization/VTK/Core/CMakeLists.txt +++ b/Libs/Visualization/VTK/Core/CMakeLists.txt @@ -4,54 +4,50 @@ project(CTKVisualizationVTKCore) # 3rd party dependencies # -if(${VTK_VERSION} VERSION_LESS "8.90") - include(${VTK_USE_FILE}) -else() - # VTK >= 8.90 defines VTK_MAJOR_VERSION - set(VTK_VERSION_MAJOR ${VTK_MAJOR_VERSION}) +# VTK >= 8.90 defines VTK_MAJOR_VERSION +set(VTK_VERSION_MAJOR ${VTK_MAJOR_VERSION}) - set(_test_components) - if(BUILD_TESTING) - list(APPEND _test_components - TestingRendering - CommonSystem - ) - endif() - - set(_python_components) - if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK) - list(APPEND _python_components - WrappingPythonCore - ) - endif() +set(_test_components) +if(BUILD_TESTING) + list(APPEND _test_components + TestingRendering + CommonSystem + ) +endif() - find_package(VTK - COMPONENTS - ChartsCore - CommonCore - CommonDataModel - FiltersCore - FiltersGeneral - FiltersModeling - FiltersSources - FiltersStatistics - IOLegacy - IOXML - InfovisCore - InfovisLayout - InteractionStyle - RenderingAnnotation - RenderingCore - RenderingFreeType - RenderingOpenGL2 - ViewsCore - ViewsInfovis - ViewsContext2D - ${_python_components} - ${_test_components} +set(_python_components) +if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK) + list(APPEND _python_components + WrappingPythonCore ) endif() +find_package(VTK + COMPONENTS + ChartsCore + CommonCore + CommonDataModel + FiltersCore + FiltersGeneral + FiltersModeling + FiltersSources + FiltersStatistics + IOLegacy + IOXML + InfovisCore + InfovisLayout + InteractionStyle + RenderingAnnotation + RenderingCore + RenderingFreeType + RenderingOpenGL2 + ViewsCore + ViewsInfovis + ViewsContext2D + ${_python_components} + ${_test_components} + ) + if(NOT DEFINED VTK_RENDERING_BACKEND) set(VTK_RENDERING_BACKEND "OpenGL") endif() @@ -104,54 +100,7 @@ if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_ endif() # Set VTK_LIBRARIES variable -if(${VTK_VERSION} VERSION_EQUAL 8.90 OR ${VTK_VERSION} VERSION_GREATER 8.90 ) - # VTK_LIBRARIES is automatically set based on selected components -elseif(${VTK_VERSION_MAJOR} GREATER 5) - set(VTK_LIBRARIES - # a few of these have to be specified explicitly to workaround - # underlinked libraries from the debian VTK package - # see Debian bug #747436 - vtkCommonCore - vtkCommonDataModel - vtkCommonSystem - vtkFiltersStatistics - vtkIOImage - vtkInteractionStyle - vtkRenderingAnnotation - vtkRenderingCore - ) - if(TARGET vtkRendering${VTK_RENDERING_BACKEND}) - list(APPEND VTK_LIBRARIES vtkRendering${VTK_RENDERING_BACKEND}) - endif() - if(TARGET vtkIOMPIImage) - list(APPEND VTK_LIBRARIES vtkIOMPIImage ) - endif() - if(TARGET vtkRenderingMatplotlib) - list(APPEND VTK_LIBRARIES vtkRenderingMatplotlib ) - endif() - if(TARGET vtkTestingRendering) - list(APPEND VTK_LIBRARIES vtkTestingRendering ) - endif() - # With VTK > 6.2.0 (commit 4f7460a5), vtkRenderingFreeTypeOpenGL has been removed. - if(TARGET vtkRenderingFreeTypeOpenGL) - list(APPEND VTK_LIBRARIES vtkRenderingFreeTypeOpenGL) - endif() - if(TARGET vtkRenderingFreeType ) - list(APPEND VTK_LIBRARIES vtkRenderingFreeType) - endif() - if (TARGET vtkRenderingFreeTypeFontConfig AND UNIX AND NOT APPLE) - list(APPEND VTK_LIBRARIES - vtkRenderingFreeTypeFontConfig - ) - endif() -else() - set(VTK_LIBRARIES - vtkCommon - vtkFiltering - vtkRendering - vtkHybrid - ) -endif() +# VTK_LIBRARIES is automatically set based on selected components if(CTK_LIB_Visualization/VTK/Widgets_USE_TRANSFER_FUNCTION_CHARTS) set(KIT_SRCS @@ -166,61 +115,15 @@ if(CTK_LIB_Visualization/VTK/Widgets_USE_TRANSFER_FUNCTION_CHARTS) vtkScalarsToColorsPreviewChart.cpp vtkScalarsToColorsPreviewChart.h ${KIT_SRCS}) - if(${VTK_VERSION} VERSION_EQUAL 8.90 OR ${VTK_VERSION} VERSION_GREATER 8.90 ) - # VTK_LIBRARIES is automatically set based on selected components - elseif(${VTK_VERSION_MAJOR} GREATER 5) - set(VTK_LIBRARIES - vtkChartsCore - ${VTK_LIBRARIES}) - else() - set(VTK_LIBRARIES - vtkCharts - ${VTK_LIBRARIES}) - endif() - - if(${VTK_VERSION} VERSION_LESS "8.90") - set(VTK_LIBRARIES - vtkViewsContext2D - ${VTK_LIBRARIES}) - if(TARGET vtkRenderingContext${VTK_RENDERING_BACKEND}) - list(APPEND VTK_LIBRARIES vtkRenderingContext${VTK_RENDERING_BACKEND}) - endif() - endif() - -endif() - -if(${VTK_VERSION} VERSION_LESS "8.90") - -if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK) - ctkFunctionExtractOptimizedLibrary(PYTHON_LIBRARIES PYTHON_LIBRARY) - list(APPEND VTK_LIBRARIES ${PYTHON_LIBRARY} ${PYTHONQT_LIBRARIES}) - if(${VTK_VERSION_MAJOR} GREATER 5) - list(APPEND VTK_LIBRARIES vtkWrappingPythonCore) - elseif(${VTK_VERSION_MAJOR}.${VTK_VERSION_MINOR} VERSION_GREATER 5.6) - list(APPEND VTK_LIBRARIES vtkPythonCore) - else() - list(APPEND VTK_LIBRARIES vtkCommonPythonD) - endif() -endif() - -if(Q_WS_X11) - # If the faster 'gold' linker is used, to avoid complaints about undefined symbol - # 'XGetWindowAttributes', 'XCreateWindow', ..., let's link against X11 libraries. - find_package(X11) - list(APPEND VTK_LIBRARIES ${X11_LIBRARIES}) -endif() + # VTK_LIBRARIES is automatically set based on selected components endif() # Custom export content -if(${VTK_VERSION} VERSION_LESS "8.90") - set(CTK_VTK_EXPORT_CUSTOM_CONTENT "") -else() - set(CTK_VTK_EXPORT_CUSTOM_CONTENT "#ifndef VTK_OVERRIDE +set(CTK_VTK_EXPORT_CUSTOM_CONTENT "#ifndef VTK_OVERRIDE #define VTK_OVERRIDE override; #endif ") -endif() # Target libraries - See CMake/ctkFunctionGetTargetLibraries.cmake # The following macro will read the target libraries from the file 'target_libraries.cmake' @@ -250,12 +153,10 @@ if(CTK_WRAP_PYTHONQT_LIGHT) ) endif() - if (NOT VTK_VERSION VERSION_LESS "8.90.0") - vtk_module_autoinit( - TARGETS ${PROJECT_NAME} - MODULES ${VTK_LIBRARIES} - ) - endif() + vtk_module_autoinit( + TARGETS ${PROJECT_NAME} + MODULES ${VTK_LIBRARIES} + ) # Plugins #if(CTK_BUILD_QTDESIGNER_PLUGINS) diff --git a/Libs/Visualization/VTK/Widgets/CMakeLists.txt b/Libs/Visualization/VTK/Widgets/CMakeLists.txt index bdfc0b9e9a..46bd851d82 100644 --- a/Libs/Visualization/VTK/Widgets/CMakeLists.txt +++ b/Libs/Visualization/VTK/Widgets/CMakeLists.txt @@ -4,47 +4,43 @@ project(CTKVisualizationVTKWidgets) # 3rd party dependencies # -if(${VTK_VERSION} VERSION_LESS "8.90") - include(${VTK_USE_FILE}) -else() - # VTK >= 8.90 defines VTK_MAJOR_VERSION - set(VTK_VERSION_MAJOR ${VTK_MAJOR_VERSION}) +# VTK >= 8.90 defines VTK_MAJOR_VERSION +set(VTK_VERSION_MAJOR ${VTK_MAJOR_VERSION}) - set(_test_components) - if(BUILD_TESTING) - list(APPEND _test_components - TestingRendering - ImagingGeneral - ) - endif() - - find_package(VTK COMPONENTS - ChartsCore - CommonCore - CommonDataModel - #Context2D - FiltersCore - FiltersGeneral - FiltersModeling - FiltersSources - GUISupportQt +set(_test_components) +if(BUILD_TESTING) + list(APPEND _test_components + TestingRendering ImagingGeneral - ImagingStatistics - IOLegacy - IOXML - InfovisCore - InfovisLayout - InteractionStyle - RenderingContextOpenGL2 - RenderingCore - RenderingFreeType - RenderingOpenGL2 - ViewsCore - ViewsInfovis - ${_test_components} - ) + ) endif() +find_package(VTK COMPONENTS + ChartsCore + CommonCore + CommonDataModel + #Context2D + FiltersCore + FiltersGeneral + FiltersModeling + FiltersSources + GUISupportQt + ImagingGeneral + ImagingStatistics + IOLegacy + IOXML + InfovisCore + InfovisLayout + InteractionStyle + RenderingContextOpenGL2 + RenderingCore + RenderingFreeType + RenderingOpenGL2 + ViewsCore + ViewsInfovis + ${_test_components} +) + # # See CTK/CMake/ctkMacroBuildLib.cmake for details # @@ -135,34 +131,7 @@ set(KIT_resources ) # Set VTK_LIBRARIES variable -if(${VTK_VERSION} VERSION_EQUAL 8.90 OR ${VTK_VERSION} VERSION_GREATER 8.90 ) - # VTK_LIBRARIES is automatically set based on selected components -elseif(${VTK_VERSION_MAJOR} GREATER 5) - set(VTK_LIBRARIES - vtkChartsCore - vtkCommonMath - vtkFiltersSources - vtkImagingGeneral - vtkImagingStatistics - vtkInteractionWidgets - vtkRenderingContext2D - vtkViewsContext2D - vtkGUISupportQt - ) - if(TARGET vtkRenderingContext${VTK_RENDERING_BACKEND}) - list(APPEND VTK_LIBRARIES vtkRenderingContext${VTK_RENDERING_BACKEND}) - endif() - if(TARGET vtkRenderingGL2PS${VTK_RENDERING_BACKEND}) - list(APPEND VTK_LIBRARIES vtkRenderingGL2PS${VTK_RENDERING_BACKEND}) - endif() - if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK) - set(VTK_LIBRARIES ${VTK_LIBRARIES} vtkWrappingPythonCore) - endif() -else() - set(VTK_LIBRARIES - QVTK - ) -endif() +# VTK_LIBRARIES is automatically set based on selected components if(CTK_LIB_Visualization/VTK/Widgets_USE_TRANSFER_FUNCTION_CHARTS) set(KIT_SRCS @@ -188,17 +157,7 @@ if(CTK_LIB_Visualization/VTK/Widgets_USE_TRANSFER_FUNCTION_CHARTS) Resources/UI/ctkVTKVolumePropertyWidget.ui Resources/UI/ctkVTKScalarsToColorsWidget.ui ${KIT_UI_FORMS}) - if(${VTK_VERSION} VERSION_EQUAL 8.90 OR ${VTK_VERSION} VERSION_GREATER 8.90 ) - # VTK_LIBRARIES is automatically set based on selected components - elseif(${VTK_VERSION_MAJOR} GREATER 5) - set(VTK_LIBRARIES - vtkChartsCore - ${VTK_LIBRARIES}) - else() - set(VTK_LIBRARIES - vtkCharts - ${VTK_LIBRARIES}) - endif() + # VTK_LIBRARIES is automatically set based on selected components endif() # Target libraries - See CMake/ctkFunctionGetTargetLibraries.cmake @@ -222,37 +181,13 @@ endif() # Prefer QVTKOpenGLWidget to QVTKWidget when using Qt5 set(_use_qvtkopenglwidget 1) -if(VTK_VERSION VERSION_LESS "8.90") - if(NOT VTK_RENDERING_BACKEND STREQUAL "OpenGL2") - set(_use_qvtkopenglwidget 0) - endif() -endif() if(_use_qvtkopenglwidget) add_definitions(-DCTK_USE_QVTKOPENGLWIDGET) endif() -# Detect if QVTKOpenGLNativeWidget.h is available -if(VTK_VERSION VERSION_LESS "8.90") - set(_has_QVTKOpenGLNativeWidget_h 0) - if(_use_qvtkopenglwidget) - set(_msg "Checking if QVTKOpenGLNativeWidget.h exists") - message(STATUS "${_msg}") - foreach(include_dir IN ITEMS ${vtkGUISupportQt_INCLUDE_DIRS}) - if(EXISTS "${include_dir}/QVTKOpenGLNativeWidget.h") - set(_has_QVTKOpenGLNativeWidget_h 1) - break() - endif() - endforeach() - if(_has_QVTKOpenGLNativeWidget_h) - message(STATUS "${_msg} - found") - else() - message(STATUS "${_msg} - not found") - endif() - endif() -else() - set(_has_QVTKOpenGLNativeWidget_h 1) -endif () +# QVTKOpenGLNativeWidget.h is always available with VTK >= 9 +set(_has_QVTKOpenGLNativeWidget_h 1) if(_has_QVTKOpenGLNativeWidget_h) @@ -260,14 +195,10 @@ if(_has_QVTKOpenGLNativeWidget_h) endif() # Custom export content -if(${VTK_VERSION} VERSION_LESS "8.90") - set(CTK_VTK_EXPORT_CUSTOM_CONTENT "") -else() - set(CTK_VTK_EXPORT_CUSTOM_CONTENT "#ifndef VTK_OVERRIDE +set(CTK_VTK_EXPORT_CUSTOM_CONTENT "#ifndef VTK_OVERRIDE #define VTK_OVERRIDE override; #endif ") -endif() ctkMacroBuildLib( NAME ${PROJECT_NAME} @@ -304,12 +235,10 @@ if(CTK_WRAP_PYTHONQT_LIGHT) ) endif() -if(NOT VTK_VERSION VERSION_LESS "8.90.0") - vtk_module_autoinit( - TARGETS ${PROJECT_NAME} - MODULES ${VTK_LIBRARIES} - ) -endif() +vtk_module_autoinit( + TARGETS ${PROJECT_NAME} + MODULES ${VTK_LIBRARIES} + ) # Plugins diff --git a/Libs/Visualization/VTK/Widgets/Testing/Cpp/CMakeLists.txt b/Libs/Visualization/VTK/Widgets/Testing/Cpp/CMakeLists.txt index 0a3afdcb79..2d6d6388ad 100644 --- a/Libs/Visualization/VTK/Widgets/Testing/Cpp/CMakeLists.txt +++ b/Libs/Visualization/VTK/Widgets/Testing/Cpp/CMakeLists.txt @@ -107,13 +107,7 @@ if(CTK_USE_QTTESTING) endif() ctk_add_executable_utf8(${KIT}CppTests ${Tests} ${Tests_RESOURCES}) -if(${VTK_VERSION} VERSION_EQUAL 8.90 OR ${VTK_VERSION} VERSION_GREATER 8.90 ) - set(VTK_CHARTS_LIB) -elseif(${VTK_VERSION_MAJOR} GREATER 5) - set(VTK_CHARTS_LIB vtkChartsCore) -else() - set(VTK_CHARTS_LIB vtkCharts) -endif() +set(VTK_CHARTS_LIB) # Configure CMake Qt automatic code generation set(uic_search_paths) From 0844e073ad8c08ea91bd98a4a064f42a1878288c Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Sun, 29 Mar 2026 08:11:40 -0500 Subject: [PATCH 19/32] COMP: Remove C++ preprocessor guards for VTK versions older than 9 Remove #if VTK_MAJOR_VERSION >= 9 guards in 6 source files, keeping only the VTK9 API calls (renderWindow(), setRenderWindow(), interactor()) and removing VTK8 fallbacks (GetRenderWindow(), SetRenderWindow()). Remove VTK8 fallback warnings for PBR, Metallic, and Roughness in ctkVTKSurfaceMaterialPropertyWidget. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../Testing/Cpp/ctkVTKMagnifyViewTest1.cpp | 8 -------- .../VTK/Widgets/ctkVTKAbstractView.cpp | 4 ---- .../VTK/Widgets/ctkVTKChartView.cpp | 13 ------------- ...ctkVTKDiscretizableColorTransferWidget.cpp | 19 ------------------- .../VTK/Widgets/ctkVTKMagnifyView.cpp | 12 ------------ .../ctkVTKSurfaceMaterialPropertyWidget.cpp | 18 ------------------ 6 files changed, 74 deletions(-) diff --git a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKMagnifyViewTest1.cpp b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKMagnifyViewTest1.cpp index 30ae27c92c..68ae8fd270 100644 --- a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKMagnifyViewTest1.cpp +++ b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKMagnifyViewTest1.cpp @@ -120,19 +120,11 @@ int ctkVTKMagnifyViewTest1(int argc, char * argv [] ) #if CTK_USE_QVTKOPENGLWIDGET vtkSmartPointer renderWindow = vtkSmartPointer::New(); -# if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) widget->setRenderWindow(renderWindow); -# else - widget->SetRenderWindow(renderWindow); -# endif #endif vtkNew renderer; -#if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) widget->renderWindow()->AddRenderer(renderer.GetPointer()); -#else - widget->GetRenderWindow()->AddRenderer(renderer.GetPointer()); -#endif double gray = static_cast(i) / (numVTKWidgets-1); renderer->SetBackground( gray, gray, gray); renderer->SetBackground2( 0., 0., 1.); diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.cpp index e2724da1d0..76b46320be 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.cpp @@ -122,11 +122,7 @@ void ctkVTKAbstractViewPrivate::setupRendering() } this->RenderWindow->SetMultiSamples(nSamples); this->RenderWindow->StereoCapableWindowOn(); -#if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) this->VTKWidget->setRenderWindow(this->RenderWindow); -#else - this->VTKWidget->SetRenderWindow(this->RenderWindow); -#endif } //--------------------------------------------------------------------------- diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKChartView.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKChartView.cpp index 6506410601..e1bd9ae0e0 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKChartView.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKChartView.cpp @@ -88,32 +88,19 @@ void ctkVTKChartViewPrivate::init() Q_Q(ctkVTKChartView); #ifdef CTK_USE_QVTKOPENGLWIDGET -# if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) q->setRenderWindow(this->RenderWindow); -# else - q->SetRenderWindow(this->RenderWindow); -# endif this->ContextView->SetRenderWindow(this->RenderWindow); #endif -#if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) this->ContextView->SetInteractor(q->interactor()); q->setRenderWindow(this->ContextView->GetRenderWindow()); -#else - this->ContextView->SetInteractor(q->GetInteractor()); - q->SetRenderWindow(this->ContextView->GetRenderWindow()); -#endif // low def for now (faster) //q->GetRenderWindow()->SetMultiSamples(0); //vtkOpenGLContextDevice2D::SafeDownCast(this->ContextView->GetContext()->GetDevice()) // ->SetStringRendererToQt(); #ifndef Q_WS_X11 -# if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) q->renderWindow()->SetLineSmoothing(true); -# else - q->GetRenderWindow()->SetLineSmoothing(true); -# endif #endif this->Chart->SetActionToButton(vtkChart::PAN, vtkContextMouseEvent::MIDDLE_BUTTON); this->Chart->SetActionToButton(vtkChart::SELECT, vtkContextMouseEvent::RIGHT_BUTTON); diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKDiscretizableColorTransferWidget.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKDiscretizableColorTransferWidget.cpp index 3071b2f035..edb76e363c 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKDiscretizableColorTransferWidget.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKDiscretizableColorTransferWidget.cpp @@ -166,24 +166,13 @@ void ctkVTKDiscretizableColorTransferWidgetPrivate::setupUi(QWidget* widget) #ifdef CTK_USE_QVTKOPENGLWIDGET vtkSmartPointer renwin = vtkSmartPointer::New(); -# if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) this->ScalarsToColorsView->setRenderWindow(renwin); -# else - this->ScalarsToColorsView->SetRenderWindow(renwin); -# endif #endif -#if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) this->scalarsToColorsContextView->SetRenderWindow( this->ScalarsToColorsView->renderWindow()); this->scalarsToColorsContextView->SetInteractor( this->ScalarsToColorsView->interactor()); -#else - this->scalarsToColorsContextView->SetRenderWindow( - this->ScalarsToColorsView->GetRenderWindow()); - this->scalarsToColorsContextView->SetInteractor( - this->ScalarsToColorsView->GetInteractor()); -#endif this->scalarsToColorsContextView->GetScene()->AddItem( this->scalarsToColorsContextItem.Get()); @@ -377,11 +366,7 @@ ctkVTKDiscretizableColorTransferWidgetPrivate::colorTransferFunctionModifiedCall QColor selected = QColor::fromRgbF(r, g, b); self->nanButton->setColor(selected); -#if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) self->ScalarsToColorsView->interactor()->Render(); -#else - self->ScalarsToColorsView->GetInteractor()->Render(); -#endif } // ---------------------------------------------------------------------------- @@ -759,11 +744,7 @@ void ctkVTKDiscretizableColorTransferWidget::onPaletteIndexChanged( Q_D(ctkVTKDiscretizableColorTransferWidget); d->addRangesInHistory(this->getColorTransferFunctionRange(), this->getVisibleRange()); this->copyColorTransferFunction(ctf); -#if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) d->ScalarsToColorsView->interactor()->Render(); -#else - d->ScalarsToColorsView->GetInteractor()->Render(); -#endif } // ---------------------------------------------------------------------------- diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp index e9f77b3600..8898d1b195 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp @@ -175,11 +175,7 @@ void ctkVTKMagnifyViewPrivate::connectRenderWindow(ctkVTKOpenGLNativeWidget * wi Q_ASSERT(widget); Q_ASSERT(this->ObserveRenderWindowEvents); -#if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) vtkRenderWindow * renderWindow = widget->renderWindow(); -#else - vtkRenderWindow * renderWindow = widget->GetRenderWindow(); -#endif if (renderWindow) { this->qvtkConnect(renderWindow, vtkCommand::EndEvent, @@ -192,11 +188,7 @@ void ctkVTKMagnifyViewPrivate::disconnectRenderWindow(ctkVTKOpenGLNativeWidget * { Q_ASSERT(widget); -#if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) vtkRenderWindow * renderWindow = widget->renderWindow(); -#else - vtkRenderWindow * renderWindow = widget->GetRenderWindow(); -#endif if (renderWindow) { this->qvtkDisconnect(renderWindow, vtkCommand::EndEvent, @@ -262,11 +254,7 @@ void ctkVTKMagnifyViewPrivate::updatePixmap() Q_Q(ctkVTKMagnifyView); // Retrieve buffer of given QVTKWidget from its render window -#if VTK_MAJOR_VERSION >= 9 || (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) vtkRenderWindow * renderWindow = this->EventHandler.Widget.data()->renderWindow(); -#else - vtkRenderWindow * renderWindow = this->EventHandler.Widget.data()->GetRenderWindow(); -#endif if (!renderWindow) { return; diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKSurfaceMaterialPropertyWidget.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKSurfaceMaterialPropertyWidget.cpp index 855642757e..6dd12a6494 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKSurfaceMaterialPropertyWidget.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKSurfaceMaterialPropertyWidget.cpp @@ -119,9 +119,7 @@ void ctkVTKSurfaceMaterialPropertyWidget::updateFromProperty() case VTK_FLAT: this->setInterpolationMode(InterpolationFlat); break; case VTK_GOURAUD: this->setInterpolationMode(InterpolationGouraud); break; case VTK_PHONG: this->setInterpolationMode(InterpolationPhong); break; -#if VTK_MAJOR_VERSION >= 9 case VTK_PBR: this->setInterpolationMode(InterpolationPBR); break; -#endif } this->setAmbient(d->Property->GetAmbient()); @@ -129,10 +127,8 @@ void ctkVTKSurfaceMaterialPropertyWidget::updateFromProperty() this->setSpecular(d->Property->GetSpecular()); this->setSpecularPower(d->Property->GetSpecularPower()); -#if VTK_MAJOR_VERSION >= 9 this->setMetallic(d->Property->GetMetallic()); this->setRoughness(d->Property->GetRoughness()); -#endif d->IsUpdatingGUI = false; } @@ -188,11 +184,7 @@ void ctkVTKSurfaceMaterialPropertyWidget::onInterpolationModeChanged( case InterpolationFlat: d->Property->SetInterpolationToFlat(); break; case InterpolationGouraud: d->Property->SetInterpolationToGouraud(); break; case InterpolationPhong: d->Property->SetInterpolationToPhong(); break; -#if VTK_MAJOR_VERSION >= 9 case InterpolationPBR: d->Property->SetInterpolationToPBR(); break; -#else - case InterpolationPBR: break; -#endif } } } @@ -252,7 +244,6 @@ void ctkVTKSurfaceMaterialPropertyWidget::onSpecularPowerChanged(double newSpecu // -------------------------------------------------------------------------- void ctkVTKSurfaceMaterialPropertyWidget::onMetallicChanged(double newMetallic) { -#if VTK_MAJOR_VERSION >= 9 Q_D(ctkVTKSurfaceMaterialPropertyWidget); this->Superclass::onMetallicChanged(newMetallic); if (d->Property.GetPointer() != 0) @@ -261,16 +252,11 @@ void ctkVTKSurfaceMaterialPropertyWidget::onMetallicChanged(double newMetallic) // up-to-date value then. d->Property->SetMetallic(this->metallic()); } -#else - Q_UNUSED(newMetallic); - qWarning() << Q_FUNC_INFO << " failed: metallic property is not supported with VTK < 9"; -#endif } // -------------------------------------------------------------------------- void ctkVTKSurfaceMaterialPropertyWidget::onRoughnessChanged(double newRoughness) { -#if VTK_MAJOR_VERSION >= 9 Q_D(ctkVTKSurfaceMaterialPropertyWidget); this->Superclass::onRoughnessChanged(newRoughness); if (d->Property.GetPointer() != 0) @@ -279,10 +265,6 @@ void ctkVTKSurfaceMaterialPropertyWidget::onRoughnessChanged(double newRoughness // up-to-date value then. d->Property->SetRoughness(this->roughness()); } -#else - Q_UNUSED(newRoughness); - qWarning() << Q_FUNC_INFO << " failed: roughness property is not supported with VTK < 9"; -#endif } // -------------------------------------------------------------------------- From 943d52bafc7e86babc8a78b5e72d5ef3f1f65345 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 22 Mar 2026 07:35:13 -0500 Subject: [PATCH 20/32] STYLE: Rename on_*_* slots to avoid connect-by-name pattern (clazy connect-by-name) Rename slots in ctkPathListButtonsWidgetPrivate that followed the on__ naming convention. These slots were already explicitly connected via connect() calls, not auto-connected via connectSlotsByName(), but the naming pattern is misleading and fragile since it could trigger unintended auto-connections if the object names in the .ui file ever matched. Co-Authored-By: Claude Opus 4.6 --- Libs/Widgets/ctkPathListButtonsWidget.cpp | 22 +++++++++++----------- Libs/Widgets/ctkPathListButtonsWidget_p.h | 10 +++++----- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Libs/Widgets/ctkPathListButtonsWidget.cpp b/Libs/Widgets/ctkPathListButtonsWidget.cpp index 3acf881823..4b484aae92 100644 --- a/Libs/Widgets/ctkPathListButtonsWidget.cpp +++ b/Libs/Widgets/ctkPathListButtonsWidget.cpp @@ -65,14 +65,14 @@ void ctkPathListButtonsWidgetPrivate::setupUi(QWidget * widget) { this->Ui_ctkPathListButtonsWidget::setupUi(widget); - connect(this->AddFilesButton, SIGNAL(clicked()), SLOT(on_AddFilesButton_clicked())); - connect(this->AddDirectoryButton, SIGNAL(clicked()), SLOT(on_AddDirButton_clicked())); - connect(this->RemoveButton, SIGNAL(clicked()), SLOT(on_RemoveButton_clicked())); - connect(this->EditButton, SIGNAL(clicked()), SLOT(on_EditButton_clicked())); + connect(this->AddFilesButton, SIGNAL(clicked()), SLOT(addFilesButtonClicked())); + connect(this->AddDirectoryButton, SIGNAL(clicked()), SLOT(addDirButtonClicked())); + connect(this->RemoveButton, SIGNAL(clicked()), SLOT(removeButtonClicked())); + connect(this->EditButton, SIGNAL(clicked()), SLOT(editButtonClicked())); } //----------------------------------------------------------------------------- -void ctkPathListButtonsWidgetPrivate::on_AddFilesButton_clicked() +void ctkPathListButtonsWidgetPrivate::addFilesButtonClicked() { if (!this->PathListWidget) return; @@ -81,7 +81,7 @@ void ctkPathListButtonsWidgetPrivate::on_AddFilesButton_clicked() } //----------------------------------------------------------------------------- -void ctkPathListButtonsWidgetPrivate::on_AddDirButton_clicked() +void ctkPathListButtonsWidgetPrivate::addDirButtonClicked() { if (!this->PathListWidget) return; @@ -90,7 +90,7 @@ void ctkPathListButtonsWidgetPrivate::on_AddDirButton_clicked() } //----------------------------------------------------------------------------- -void ctkPathListButtonsWidgetPrivate::on_RemoveButton_clicked() +void ctkPathListButtonsWidgetPrivate::removeButtonClicked() { if (!this->PathListWidget) return; @@ -98,7 +98,7 @@ void ctkPathListButtonsWidgetPrivate::on_RemoveButton_clicked() } //----------------------------------------------------------------------------- -void ctkPathListButtonsWidgetPrivate::on_EditButton_clicked() +void ctkPathListButtonsWidgetPrivate::editButtonClicked() { Q_Q(ctkPathListButtonsWidget); @@ -128,7 +128,7 @@ void ctkPathListButtonsWidgetPrivate::on_EditButton_clicked() } //----------------------------------------------------------------------------- -void ctkPathListButtonsWidgetPrivate::on_PathListWidget_selectionChanged(const QItemSelection &selected, +void ctkPathListButtonsWidgetPrivate::pathListWidgetSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { Q_UNUSED(selected) @@ -353,8 +353,8 @@ void ctkPathListButtonsWidget::init(ctkPathListWidget *pathListWidget) } connect(d->PathListWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - d, SLOT(on_PathListWidget_selectionChanged(QItemSelection,QItemSelection))); - connect(d->PathListWidget, SIGNAL(pathActivated(QString)), d, SLOT(on_EditButton_clicked())); + d, SLOT(pathListWidgetSelectionChanged(QItemSelection,QItemSelection))); + connect(d->PathListWidget, SIGNAL(pathActivated(QString)), d, SLOT(editButtonClicked())); } //----------------------------------------------------------------------------- diff --git a/Libs/Widgets/ctkPathListButtonsWidget_p.h b/Libs/Widgets/ctkPathListButtonsWidget_p.h index 7b3a65bfbb..d3a239c2d8 100644 --- a/Libs/Widgets/ctkPathListButtonsWidget_p.h +++ b/Libs/Widgets/ctkPathListButtonsWidget_p.h @@ -53,12 +53,12 @@ class ctkPathListButtonsWidgetPrivate : public QObject, public Ui_ctkPathListBut public Q_SLOTS: - void on_AddFilesButton_clicked(); - void on_AddDirButton_clicked(); - void on_RemoveButton_clicked(); - void on_EditButton_clicked(); + void addFilesButtonClicked(); + void addDirButtonClicked(); + void removeButtonClicked(); + void editButtonClicked(); - void on_PathListWidget_selectionChanged(const QItemSelection& selected, const QItemSelection& deselected); + void pathListWidgetSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected); public: From 3a1a594366ebbd933f724535dcb2c69301ed7f2b Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Fri, 20 Mar 2026 19:42:28 -0500 Subject: [PATCH 21/32] STYLE: Use const iterators to prevent implicit container detach (clazy strict-iterators) Replace begin()/end()/find() with cbegin()/constEnd()/constFind() where the result is assigned to a const_iterator. Mixing mutable and const iterators can silently detach shared containers, causing bugs and unnecessary copies. Co-Authored-By: Claude Opus 4.6 --- Libs/DICOM/Core/ctkDICOMDatabase.cpp | 6 +++--- Libs/DICOM/Widgets/ctkDICOMTableView.cpp | 4 ++-- Libs/PluginFramework/ctkPlugins.cpp | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Libs/DICOM/Core/ctkDICOMDatabase.cpp b/Libs/DICOM/Core/ctkDICOMDatabase.cpp index 907a9c51a0..da339b8d9f 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase.cpp +++ b/Libs/DICOM/Core/ctkDICOMDatabase.cpp @@ -3820,9 +3820,9 @@ bool ctkDICOMDatabase::cacheTags(const QStringList sopInstanceUIDs, const QStrin QSqlQuery insertTags(d->TagCacheDatabase); insertTags.prepare( "INSERT OR REPLACE INTO TagCache VALUES(?,?,?)" ); - QStringList::const_iterator sopInstanceUIDsIt = sopInstanceUIDs.begin(); - QStringList::const_iterator tagsIt = tags.begin(); - QStringList::const_iterator valuesIt = values.begin(); + QStringList::const_iterator sopInstanceUIDsIt = sopInstanceUIDs.cbegin(); + QStringList::const_iterator tagsIt = tags.cbegin(); + QStringList::const_iterator valuesIt = values.cbegin(); bool success = true; for (int i = 0; i::const_iterator filterIt = d->sqlWhereConditions.begin(); - while (filterIt != d->sqlWhereConditions.end()) + QHash::const_iterator filterIt = d->sqlWhereConditions.constBegin(); + while (filterIt != d->sqlWhereConditions.constEnd()) { if (!filterIt.value().empty()) { diff --git a/Libs/PluginFramework/ctkPlugins.cpp b/Libs/PluginFramework/ctkPlugins.cpp index f697767954..13d283df5e 100644 --- a/Libs/PluginFramework/ctkPlugins.cpp +++ b/Libs/PluginFramework/ctkPlugins.cpp @@ -64,8 +64,8 @@ QSharedPointer ctkPlugins::install(const QUrl& location, QIODevice* i { QMutexLocker lock(&objectLock); - QHash >::const_iterator it = plugins.find(location.toString()); - if (it != plugins.end()) + QHash >::const_iterator it = plugins.constFind(location.toString()); + if (it != plugins.constEnd()) { return it.value(); } From af9f3e2ee1b353403b3c85bbe57613846c33eaf8 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sat, 28 Mar 2026 20:02:02 -0500 Subject: [PATCH 22/32] BUG: Avoid virtual dispatch in ctkLayoutManager constructors (clazy virtual-call-ctor) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace this->setViewport(viewport) with direct d->Viewports[QString()] = viewport in the two constructors that accept a viewport parameter. setViewport() calls onViewportChanged() (virtual), which calls refresh() -> setupLayout(), which eventually reaches the pure virtual viewFromXML(). During construction the vtable *may not be fully built*, so virtual dispatch would call the base-class implementation only — and calling a pure virtual function is undefined behavior. The direct assignment has identical observable behavior during construction because: - The oldViewport cleanup branch in setViewport() is never taken (map is empty) - setupLayout() returns early when no layout has been set (which is always true during construction) Co-Authored-By: Claude Sonnet 4.6 --- Libs/Widgets/ctkLayoutManager.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Libs/Widgets/ctkLayoutManager.cpp b/Libs/Widgets/ctkLayoutManager.cpp index 112b59ff46..1808b28cbf 100644 --- a/Libs/Widgets/ctkLayoutManager.cpp +++ b/Libs/Widgets/ctkLayoutManager.cpp @@ -213,7 +213,13 @@ ctkLayoutManager::ctkLayoutManager(QWidget* viewport, QObject* parentObject) { Q_D(ctkLayoutManager); d->init(); - this->setViewport(viewport); + // Store viewport directly to avoid calling virtual setViewport() in constructor, + // which would indirectly reach the pure virtual viewFromXML() through the + // onViewportChanged() -> refresh() -> setupLayout() chain. + if (viewport) + { + d->Viewports[QString()] = viewport; + } } //----------------------------------------------------------------------------- @@ -224,7 +230,13 @@ ctkLayoutManager::ctkLayoutManager(ctkLayoutManagerPrivate* ptr, { Q_D(ctkLayoutManager); d->init(); - this->setViewport(viewport); + // Store viewport directly to avoid calling virtual setViewport() in constructor, + // which would indirectly reach the pure virtual viewFromXML() through the + // onViewportChanged() -> refresh() -> setupLayout() chain. + if (viewport) + { + d->Viewports[QString()] = viewport; + } } //----------------------------------------------------------------------------- From 14299a22d7c68983b871b2b983db8dbacb07bf15 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Fri, 20 Mar 2026 18:41:52 -0500 Subject: [PATCH 23/32] STYLE: Normalize SIGNAL/SLOT signatures (clazy connect-not-normalized) Remove extra spaces after commas and strip const/& qualifiers from type names inside SIGNAL(), SLOT() macros. Normalized signatures avoid unnecessary string allocations in QObject::connect(). Co-Authored-By: Claude Opus 4.6 --- .../ctkDICOMVisualBrowserMain.cpp | 4 +- Libs/Core/ctkErrorLogAbstractModel.cpp | 12 ++-- Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp | 4 +- Libs/DICOM/Widgets/ctkDICOMBrowser.cpp | 30 ++++----- .../Widgets/ctkDICOMDirectoryListWidget.cpp | 3 +- .../Widgets/ctkDICOMObjectListWidget.cpp | 4 +- Libs/DICOM/Widgets/ctkDICOMTableManager.cpp | 66 +++++++++---------- Libs/DICOM/Widgets/ctkDICOMTableView.cpp | 16 ++--- .../Widgets/ctkDICOMVisualBrowserWidget.cpp | 6 +- ...ctkVTKDiscretizableColorTransferWidget.cpp | 4 +- .../Widgets/ctkVTKScalarsToColorsComboBox.cpp | 4 +- .../ctkDoubleRangeSliderValueProxyTest.cpp | 4 +- 12 files changed, 78 insertions(+), 79 deletions(-) diff --git a/Applications/ctkDICOMVisualBrowser/ctkDICOMVisualBrowserMain.cpp b/Applications/ctkDICOMVisualBrowser/ctkDICOMVisualBrowserMain.cpp index 6879cc8227..caafa4b82d 100644 --- a/Applications/ctkDICOMVisualBrowser/ctkDICOMVisualBrowserMain.cpp +++ b/Applications/ctkDICOMVisualBrowser/ctkDICOMVisualBrowserMain.cpp @@ -110,8 +110,8 @@ int main(int argc, char** argv) DICOMVisualBrowser.setDatabaseDirectorySettingsKey("DatabaseDirectory"); DICOMVisualBrowser.setDatabaseDirectory(databaseDirectory); - QObject::connect(&directoryButton, SIGNAL(directoryChanged(const QString&)), - &DICOMVisualBrowser, SLOT(setDatabaseDirectory(const QString&))); + QObject::connect(&directoryButton, SIGNAL(directoryChanged(QString)), + &DICOMVisualBrowser, SLOT(setDatabaseDirectory(QString))); mainLayout.addWidget(&DICOMVisualBrowser); mainWidget.setLayout(&mainLayout); diff --git a/Libs/Core/ctkErrorLogAbstractModel.cpp b/Libs/Core/ctkErrorLogAbstractModel.cpp index 5a845e53d8..16c43e87c0 100644 --- a/Libs/Core/ctkErrorLogAbstractModel.cpp +++ b/Libs/Core/ctkErrorLogAbstractModel.cpp @@ -116,8 +116,8 @@ void ctkErrorLogAbstractModelPrivate::init(QAbstractItemModel* itemModel) this->ItemModel = itemModel; QObject::connect(q, - SIGNAL(entryPosted(QDateTime, QString, ctkErrorLogLevel::LogLevel, QString, ctkErrorLogContext, QString)), - q, SLOT(addEntry(QDateTime, QString, ctkErrorLogLevel::LogLevel, QString, ctkErrorLogContext, QString)), + SIGNAL(entryPosted(QDateTime,QString,ctkErrorLogLevel::LogLevel,QString,ctkErrorLogContext,QString)), + q, SLOT(addEntry(QDateTime,QString,ctkErrorLogLevel::LogLevel,QString,ctkErrorLogContext,QString)), this->AsynchronousLogging ? Qt::QueuedConnection : Qt::BlockingQueuedConnection); } @@ -483,12 +483,12 @@ void ctkErrorLogAbstractModel::setAsynchronousLogging(bool value) } QObject::disconnect(this, - SIGNAL(entryPosted(QDateTime, QString, ctkErrorLogLevel::LogLevel, QString, ctkErrorLogContext, QString)), - this, SLOT(addEntry(QDateTime, QString, ctkErrorLogLevel::LogLevel, QString, ctkErrorLogContext, QString))); + SIGNAL(entryPosted(QDateTime,QString,ctkErrorLogLevel::LogLevel,QString,ctkErrorLogContext,QString)), + this, SLOT(addEntry(QDateTime,QString,ctkErrorLogLevel::LogLevel,QString,ctkErrorLogContext,QString))); QObject::connect(this, - SIGNAL(entryPosted(QDateTime, QString, ctkErrorLogLevel::LogLevel, QString, ctkErrorLogContext, QString)), - this, SLOT(addEntry(QDateTime, QString, ctkErrorLogLevel::LogLevel, QString, ctkErrorLogContext, QString)), + SIGNAL(entryPosted(QDateTime,QString,ctkErrorLogLevel::LogLevel,QString,ctkErrorLogContext,QString)), + this, SLOT(addEntry(QDateTime,QString,ctkErrorLogLevel::LogLevel,QString,ctkErrorLogContext,QString)), value ? Qt::QueuedConnection : Qt::BlockingQueuedConnection); d->AsynchronousLogging = value; diff --git a/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp index 4516b44bf0..a3b7493365 100644 --- a/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp @@ -219,7 +219,7 @@ void ctkDICOMAppWidgetPrivate::showIndexerDialog() q->connect(DICOMIndexer.data(), SIGNAL(indexingComplete(int,int,int,int)), q, SLOT(setIndexingResult(int,int,int,int))); // reset the database to show new data - q->connect(DICOMIndexer.data(), SIGNAL(indexingComplete(int, int, int, int)), + q->connect(DICOMIndexer.data(), SIGNAL(indexingComplete(int,int,int,int)), &DICOMModel, SLOT(reset())); // stop indexing and reset the database if canceled q->connect(IndexerProgress, SIGNAL(canceled()), @@ -230,7 +230,7 @@ void ctkDICOMAppWidgetPrivate::showIndexerDialog() // allow users of this widget to know that the process has finished q->connect(IndexerProgress, SIGNAL(canceled()), q, SIGNAL(directoryImported())); - q->connect(DICOMIndexer.data(), SIGNAL(indexingComplete(int, int, int, int)), + q->connect(DICOMIndexer.data(), SIGNAL(indexingComplete(int,int,int,int)), q, SIGNAL(directoryImported())); } IndexerProgress->show(); diff --git a/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp b/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp index 4435c69ea3..2cd2225ed5 100644 --- a/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp @@ -278,28 +278,28 @@ void ctkDICOMBrowserPrivate::init() this->dicomTableManager->setDICOMDatabase(this->DICOMDatabase.data()); // TableView signals - q->connect(this->dicomTableManager, SIGNAL(patientsSelectionChanged(const QItemSelection&, const QItemSelection&)), + q->connect(this->dicomTableManager, SIGNAL(patientsSelectionChanged(QItemSelection,QItemSelection)), this->InformationMessageFrame, SLOT(hide())); - q->connect(this->dicomTableManager, SIGNAL(studiesSelectionChanged(const QItemSelection&, const QItemSelection&)), + q->connect(this->dicomTableManager, SIGNAL(studiesSelectionChanged(QItemSelection,QItemSelection)), this->InformationMessageFrame, SLOT(hide())); - q->connect(this->dicomTableManager, SIGNAL(seriesSelectionChanged(const QItemSelection&, const QItemSelection&)), + q->connect(this->dicomTableManager, SIGNAL(seriesSelectionChanged(QItemSelection,QItemSelection)), this->InformationMessageFrame, SLOT(hide())); - q->connect(this->dicomTableManager, SIGNAL(patientsSelectionChanged(const QItemSelection&, const QItemSelection&)), - q, SLOT(onModelSelected(const QItemSelection&, const QItemSelection&))); - q->connect(this->dicomTableManager, SIGNAL(studiesSelectionChanged(const QItemSelection&, const QItemSelection&)), - q, SLOT(onModelSelected(const QItemSelection&, const QItemSelection&))); - q->connect(this->dicomTableManager, SIGNAL(seriesSelectionChanged(const QItemSelection&, const QItemSelection&)), - q, SLOT(onModelSelected(const QItemSelection&, const QItemSelection&))); + q->connect(this->dicomTableManager, SIGNAL(patientsSelectionChanged(QItemSelection,QItemSelection)), + q, SLOT(onModelSelected(QItemSelection,QItemSelection))); + q->connect(this->dicomTableManager, SIGNAL(studiesSelectionChanged(QItemSelection,QItemSelection)), + q, SLOT(onModelSelected(QItemSelection,QItemSelection))); + q->connect(this->dicomTableManager, SIGNAL(seriesSelectionChanged(QItemSelection,QItemSelection)), + q, SLOT(onModelSelected(QItemSelection,QItemSelection))); // set up context menus for working on selected patients, studies, series - q->connect(this->dicomTableManager, SIGNAL(patientsRightClicked(const QPoint&)), - q, SLOT(onPatientsRightClicked(const QPoint&))); - q->connect(this->dicomTableManager, SIGNAL(studiesRightClicked(const QPoint&)), - q, SLOT(onStudiesRightClicked(const QPoint&))); - q->connect(this->dicomTableManager, SIGNAL(seriesRightClicked(const QPoint&)), - q, SLOT(onSeriesRightClicked(const QPoint&))); + q->connect(this->dicomTableManager, SIGNAL(patientsRightClicked(QPoint)), + q, SLOT(onPatientsRightClicked(QPoint))); + q->connect(this->dicomTableManager, SIGNAL(studiesRightClicked(QPoint)), + q, SLOT(onStudiesRightClicked(QPoint))); + q->connect(this->dicomTableManager, SIGNAL(seriesRightClicked(QPoint)), + q, SLOT(onSeriesRightClicked(QPoint))); // Initialize directoryMode widget QFormLayout *layout = new QFormLayout; diff --git a/Libs/DICOM/Widgets/ctkDICOMDirectoryListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMDirectoryListWidget.cpp index 24d5c30c46..31d3717709 100644 --- a/Libs/DICOM/Widgets/ctkDICOMDirectoryListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMDirectoryListWidget.cpp @@ -136,8 +136,7 @@ void ctkDICOMDirectoryListWidget::setDICOMDatabase(ctkDICOMDatabase* dicomDataba connect ( d->directoryListView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, - SLOT(directorySelectionChanged(const QItemSelection & , - const QItemSelection & ))); + SLOT(directorySelectionChanged(QItemSelection,QItemSelection))); } //---------------------------------------------------------------------------- diff --git a/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp index 73c75d4dfe..218f0670b5 100644 --- a/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp @@ -229,8 +229,8 @@ ctkDICOMObjectListWidget::ctkDICOMObjectListWidget(QWidget* _parent):Superclass( d->currentPathLabel->setTextInteractionFlags(Qt::TextSelectableByMouse); connect(d->fileSliderWidget, SIGNAL(valueChanged(double)), this, SLOT(updateWidget())); - connect(d->dcmObjectTreeView, SIGNAL(doubleClicked(const QModelIndex&)), - this, SLOT(itemDoubleClicked(const QModelIndex&))); + connect(d->dcmObjectTreeView, SIGNAL(doubleClicked(QModelIndex)), + this, SLOT(itemDoubleClicked(QModelIndex))); connect(d->copyPathPushButton , SIGNAL(clicked(bool)),this, SLOT(copyPath())); connect(d->expandAllPushButton, SIGNAL(clicked(bool)), d->dcmObjectTreeView, SLOT(expandAll())); diff --git a/Libs/DICOM/Widgets/ctkDICOMTableManager.cpp b/Libs/DICOM/Widgets/ctkDICOMTableManager.cpp index 7e7981c35d..918a197daa 100644 --- a/Libs/DICOM/Widgets/ctkDICOMTableManager.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMTableManager.cpp @@ -113,38 +113,38 @@ void ctkDICOMTableManagerPrivate::init() q, SLOT(showSeriesFilterActiveWarning(bool))); // For propagating patient selection changes - QObject::connect(this->patientsTable, SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), - q, SIGNAL(patientsSelectionChanged(const QItemSelection&, const QItemSelection&))); - QObject::connect(this->patientsTable, SIGNAL(selectionChanged(const QStringList&)), - q, SIGNAL(patientsSelectionChanged(const QStringList&))); + QObject::connect(this->patientsTable, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + q, SIGNAL(patientsSelectionChanged(QItemSelection,QItemSelection))); + QObject::connect(this->patientsTable, SIGNAL(selectionChanged(QStringList)), + q, SIGNAL(patientsSelectionChanged(QStringList))); // For propagating study selection changes - QObject::connect(this->studiesTable, SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), - q, SIGNAL(studiesSelectionChanged(const QItemSelection&, const QItemSelection&))); - QObject::connect(this->studiesTable, SIGNAL(selectionChanged(const QStringList&)), - q, SIGNAL(studiesSelectionChanged(const QStringList&))); + QObject::connect(this->studiesTable, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + q, SIGNAL(studiesSelectionChanged(QItemSelection,QItemSelection))); + QObject::connect(this->studiesTable, SIGNAL(selectionChanged(QStringList)), + q, SIGNAL(studiesSelectionChanged(QStringList))); // For propagating series selection changes - QObject::connect(this->seriesTable, SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), - q, SIGNAL(seriesSelectionChanged(const QItemSelection&, const QItemSelection&))); - QObject::connect(this->seriesTable, SIGNAL(selectionChanged(const QStringList&)), - q, SIGNAL(seriesSelectionChanged(const QStringList&))); - - QObject::connect( this->patientsTable, SIGNAL( doubleClicked( const QModelIndex& ) ), - q, SIGNAL( patientsDoubleClicked( const QModelIndex& ) ) ); - QObject::connect( this->studiesTable, SIGNAL( doubleClicked( const QModelIndex& ) ), - q, SIGNAL( studiesDoubleClicked( const QModelIndex& ) ) ); - QObject::connect(this->seriesTable, SIGNAL(doubleClicked(const QModelIndex&)), - q, SIGNAL(seriesDoubleClicked(const QModelIndex&))); + QObject::connect(this->seriesTable, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + q, SIGNAL(seriesSelectionChanged(QItemSelection,QItemSelection))); + QObject::connect(this->seriesTable, SIGNAL(selectionChanged(QStringList)), + q, SIGNAL(seriesSelectionChanged(QStringList))); + + QObject::connect(this->patientsTable, SIGNAL(doubleClicked(QModelIndex)), + q, SIGNAL(patientsDoubleClicked(QModelIndex))); + QObject::connect(this->studiesTable, SIGNAL(doubleClicked(QModelIndex)), + q, SIGNAL(studiesDoubleClicked(QModelIndex))); + QObject::connect(this->seriesTable, SIGNAL(doubleClicked(QModelIndex)), + q, SIGNAL(seriesDoubleClicked(QModelIndex))); // For propagating right clicks, the table takes care of translating to a global position - QObject::connect(this->patientsTable, SIGNAL(customContextMenuRequested(const QPoint&)), - q, SIGNAL(patientsRightClicked(const QPoint&))); - QObject::connect(this->studiesTable, SIGNAL(customContextMenuRequested(const QPoint&)), - q, SIGNAL(studiesRightClicked(const QPoint&))); + QObject::connect(this->patientsTable, SIGNAL(customContextMenuRequested(QPoint)), + q, SIGNAL(patientsRightClicked(QPoint))); + QObject::connect(this->studiesTable, SIGNAL(customContextMenuRequested(QPoint)), + q, SIGNAL(studiesRightClicked(QPoint))); - QObject::connect(this->seriesTable, SIGNAL(customContextMenuRequested(const QPoint&)), - q, SIGNAL(seriesRightClicked(const QPoint&))); + QObject::connect(this->seriesTable, SIGNAL(customContextMenuRequested(QPoint)), + q, SIGNAL(seriesRightClicked(QPoint))); q->setTableOrientation(this->tableSplitter->orientation()); } @@ -353,20 +353,20 @@ void ctkDICOMTableManager::setAutoSelectSeries(bool autoSelect) QAbstractItemView::SelectionMode selectionMode = static_cast(this->selectionMode()); if (selectionMode == QAbstractItemView::SingleSelection) { - QObject::connect( d->studiesTable, SIGNAL(selectionChanged(const QStringList&)), + QObject::connect( d->studiesTable, SIGNAL(selectionChanged(QStringList)), d->seriesTable, SLOT(selectFirst()) ); } else { - QObject::connect( d->studiesTable, SIGNAL(selectionChanged(const QStringList&)), + QObject::connect( d->studiesTable, SIGNAL(selectionChanged(QStringList)), d->seriesTable, SLOT(selectAll()) ); } } else { - QObject::disconnect( d->studiesTable, SIGNAL(selectionChanged(const QStringList&)), + QObject::disconnect( d->studiesTable, SIGNAL(selectionChanged(QStringList)), d->seriesTable, SLOT(selectAll()) ); - QObject::disconnect( d->studiesTable, SIGNAL(selectionChanged(const QStringList&)), + QObject::disconnect( d->studiesTable, SIGNAL(selectionChanged(QStringList)), d->seriesTable, SLOT(selectFirst()) ); // Remove selection to avoid loading any previously auto-selected series d->seriesTable->clearSelection(); @@ -398,18 +398,18 @@ void ctkDICOMTableManager::setSelectionMode(int mode) d->seriesTable->tableView()->setSelectionMode(selectionMode); // Re-connect the proper slots for studies - QObject::disconnect( d->patientsTable, SIGNAL(selectionChanged(const QStringList&)), + QObject::disconnect( d->patientsTable, SIGNAL(selectionChanged(QStringList)), d->studiesTable, SLOT(selectAll()) ); - QObject::disconnect( d->patientsTable, SIGNAL(selectionChanged(const QStringList&)), + QObject::disconnect( d->patientsTable, SIGNAL(selectionChanged(QStringList)), d->studiesTable, SLOT(selectFirst()) ); if (selectionMode == QAbstractItemView::SingleSelection) { - QObject::connect( d->patientsTable, SIGNAL(selectionChanged(const QStringList&)), + QObject::connect( d->patientsTable, SIGNAL(selectionChanged(QStringList)), d->studiesTable, SLOT(selectFirst()) ); } else { - QObject::connect( d->patientsTable, SIGNAL(selectionChanged(const QStringList&)), + QObject::connect( d->patientsTable, SIGNAL(selectionChanged(QStringList)), d->studiesTable, SLOT(selectAll()) ); } diff --git a/Libs/DICOM/Widgets/ctkDICOMTableView.cpp b/Libs/DICOM/Widgets/ctkDICOMTableView.cpp index a08d1156ba..cd554d8ea3 100644 --- a/Libs/DICOM/Widgets/ctkDICOMTableView.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMTableView.cpp @@ -174,21 +174,21 @@ void ctkDICOMTableViewPrivate::init() this->tblDicomDatabaseView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft); QObject::connect(this->tblDicomDatabaseView->selectionModel(), - SIGNAL(selectionChanged(const QItemSelection&,const QItemSelection&)), + SIGNAL(selectionChanged(QItemSelection,QItemSelection)), q, SLOT(onSelectionChanged())); QObject::connect(this->tblDicomDatabaseView->selectionModel(), - SIGNAL(selectionChanged(const QItemSelection&,const QItemSelection&)), - q, SIGNAL(selectionChanged(const QItemSelection&,const QItemSelection&))); + SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + q, SIGNAL(selectionChanged(QItemSelection,QItemSelection))); - QObject::connect(this->tblDicomDatabaseView, SIGNAL(doubleClicked(const QModelIndex&)), - q, SIGNAL(doubleClicked(const QModelIndex&))); + QObject::connect(this->tblDicomDatabaseView, SIGNAL(doubleClicked(QModelIndex)), + q, SIGNAL(doubleClicked(QModelIndex))); // enable right click menu, with mapping to global position (for use within the DICOM table manager) this->tblDicomDatabaseView->setContextMenuPolicy(Qt::CustomContextMenu); QObject::connect(this->tblDicomDatabaseView, - SIGNAL(customContextMenuRequested(const QPoint&)), - q, SLOT(onCustomContextMenuRequested(const QPoint&))); + SIGNAL(customContextMenuRequested(QPoint)), + q, SLOT(onCustomContextMenuRequested(QPoint))); QObject::connect(this->leSearchBox, SIGNAL(textChanged(QString)), q, SLOT(onFilterChanged(QString))); } @@ -436,7 +436,7 @@ void ctkDICOMTableView::setDicomDataBase(ctkDICOMDatabase *dicomDatabase) if (d->dicomDatabase) { //Create connections for new database - QObject::connect(d->dicomDatabase, SIGNAL(instanceAdded(const QString&)), this, SLOT(onInstanceAdded())); + QObject::connect(d->dicomDatabase, SIGNAL(instanceAdded(QString)), this, SLOT(onInstanceAdded())); QObject::connect(d->dicomDatabase, SIGNAL(databaseChanged()), this, SLOT(onDatabaseChanged())); QObject::connect(d->dicomDatabase, SIGNAL(opened()), this, SLOT(onDatabaseOpened())); QObject::connect(d->dicomDatabase, SIGNAL(closed()), this, SLOT(onDatabaseClosed())); diff --git a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp index 30fe2f9587..22f41a8eab 100644 --- a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp @@ -517,14 +517,14 @@ void ctkDICOMVisualBrowserWidgetPrivate::init() this->JobListWidget->setScheduler(this->Scheduler); this->connectScheduler(); - QObject::connect(this->JobListWidget, SIGNAL(patientSelected(QString, QString, QString)), - q, SLOT(patientSelectedOnJobList(QString, QString, QString))); + QObject::connect(this->JobListWidget, SIGNAL(patientSelected(QString,QString,QString)), + q, SLOT(patientSelectedOnJobList(QString,QString,QString))); QObject::connect(this->ProgressCancelButton, SIGNAL(clicked()), this->Indexer.data(), SLOT(cancel())); QObject::connect(this->Indexer.data(), SIGNAL(progress(int)), q, SLOT(onIndexingProgress(int))); QObject::connect(this->Indexer.data(), SIGNAL(progressStep(QString)), q, SLOT(onIndexingProgressStep(QString))); QObject::connect(this->Indexer.data(), SIGNAL(progressDetail(QString)), q, SLOT(onIndexingProgressDetail(QString))); - QObject::connect(this->Indexer.data(), SIGNAL(indexingComplete(int, int, int, int)), q, SLOT(onIndexingComplete(int, int, int, int))); + QObject::connect(this->Indexer.data(), SIGNAL(indexingComplete(int,int,int,int)), q, SLOT(onIndexingComplete(int,int,int,int))); } //---------------------------------------------------------------------------- diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKDiscretizableColorTransferWidget.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKDiscretizableColorTransferWidget.cpp index edb76e363c..0399eda2fe 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKDiscretizableColorTransferWidget.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKDiscretizableColorTransferWidget.cpp @@ -213,8 +213,8 @@ void ctkVTKDiscretizableColorTransferWidgetPrivate::setupUi(QWidget* widget) QObject::connect(invertColorTransferFunctionButton, SIGNAL(clicked()), q, SLOT(invertColorTransferFunction())); - QObject::connect(rangeSlider, SIGNAL(valuesChanged(double, double)), - q, SLOT(onRangeSliderValueChange(double, double))); + QObject::connect(rangeSlider, SIGNAL(valuesChanged(double,double)), + q, SLOT(onRangeSliderValueChange(double,double))); /// Option panel menu QWidget* nanColorWidget = new QWidget(optionButton); diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsComboBox.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsComboBox.cpp index f25636b84e..972490a1a3 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsComboBox.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsComboBox.cpp @@ -56,8 +56,8 @@ void ctkVTKScalarsToColorsComboBoxPrivate::init() Q_Q(ctkVTKScalarsToColorsComboBox); QObject::connect(q->model(), - SIGNAL(rowsAboutToBeRemoved(const QModelIndex&, int, int)), - q, SLOT(onRowsAboutToBeRemoved(const QModelIndex&, int, int))); + SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), + q, SLOT(onRowsAboutToBeRemoved(QModelIndex,int,int))); q->setIconSize(QSize(100, 20)); diff --git a/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderValueProxyTest.cpp b/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderValueProxyTest.cpp index 717622771f..32e94022e3 100644 --- a/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderValueProxyTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderValueProxyTest.cpp @@ -125,8 +125,8 @@ void ctkDoubleRangeSliderValueProxyTester::testSetValues() // Spy CustomSpy valuesSpy; - QObject::connect(&slider, SIGNAL(valuesChanged(double, double)), - &valuesSpy, SLOT(onValuesChanged(double, double))); + QObject::connect(&slider, SIGNAL(valuesChanged(double,double)), + &valuesSpy, SLOT(onValuesChanged(double,double))); // Test QFETCH(double, min); From bff126adb2402fa55b5113eef724f42786332dd7 Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Thu, 3 Jul 2025 19:59:07 -0500 Subject: [PATCH 24/32] ENH: Add `Q_OBJECT` macro to relevant classes and include `.moc` files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ensure QObject-derived classes properly use the `Q_OBJECT` macro for meta-object functionality and include corresponding `.moc` files to support Qt's meta-object compiler. Add missing Q_OBJECT to complete Qt inheritance The Q_OBJECT macro is mandatory for any class that: • Inherits from QObject • Uses signals or slots • Declares properties (Q_PROPERTY) • Needs qobject_cast, metaObject(), or other Qt RTTI features Without it: • Qt’s meta-object compiler (moc) won’t generate necessary code • You may encounter runtime errors or silently broken signals/slots • Clazy and Qt's build system may warn or fail Need to include full class definitions instead of forward definitions. Replace forward declarations that were common in Qt 5, but are now discouraged in Qt 6. Full declarations are required when the Q_OBJECT macro is included as recommended to respect the Qt inheritance expectations. --- Libs/Core/CMakeLists.txt | 2 - Libs/Core/ctkErrorLogFDMessageHandler.h | 1 + Libs/Core/ctkErrorLogStreamMessageHandler.h | 1 + Libs/Core/ctkJobScheduler.cpp | 1 - Libs/Core/ctkJobScheduler.h | 55 +++++++++ Libs/Core/ctkJobScheduler_p.h | 86 -------------- Libs/DICOM/Core/CMakeLists.txt | 9 -- Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp | 6 +- Libs/DICOM/Core/ctkDICOMRetrieve.cpp | 3 + Libs/DICOM/Core/ctkDICOMScheduler.cpp | 3 - Libs/DICOM/Core/ctkDICOMScheduler.h | 34 +++++- Libs/DICOM/Core/ctkDICOMScheduler_p.h | 76 ------------ Libs/DICOM/Core/ctkDICOMServer.cpp | 3 + Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp | 7 +- Libs/DICOM/Widgets/ctkDICOMListenerWidget.h | 3 +- .../Widgets/ctkDICOMObjectListWidget.cpp | 6 +- .../Widgets/ctkDICOMQueryResultsTabWidget.h | 2 +- .../Widgets/ctkDICOMServerNodeWidget2.cpp | 11 +- .../ITK/Core/ctkITKErrorLogMessageHandler.h | 1 + .../Python/Widgets/ctkPythonConsole.cpp | 6 +- .../VTK/Core/ctkVTKErrorLogMessageHandler.h | 1 + .../VTK/Widgets/ctkVTKAbstractMatrixWidget.h | 2 +- Libs/Widgets/ctkCheckBox.cpp | 6 +- Libs/Widgets/ctkCheckableComboBox.cpp | 6 +- Libs/Widgets/ctkCollapsibleGroupBox.cpp | 3 + Libs/Widgets/ctkConsole.cpp | 7 +- Libs/Widgets/ctkConsole.h | 5 +- Libs/Widgets/ctkDirectoryButton.cpp | 11 +- Libs/Widgets/ctkDoubleSlider.cpp | 3 + Libs/Widgets/ctkMatrixWidget.cpp | 4 + Libs/Widgets/ctkPathLineEdit.cpp | 5 +- Libs/Widgets/ctkPathListButtonsWidget.cpp | 112 +++++++++--------- 32 files changed, 219 insertions(+), 262 deletions(-) delete mode 100644 Libs/Core/ctkJobScheduler_p.h delete mode 100644 Libs/DICOM/Core/ctkDICOMScheduler_p.h diff --git a/Libs/Core/CMakeLists.txt b/Libs/Core/CMakeLists.txt index a16b50ecd6..cb953402e3 100644 --- a/Libs/Core/CMakeLists.txt +++ b/Libs/Core/CMakeLists.txt @@ -71,7 +71,6 @@ set(KIT_SRCS ctkHighPrecisionTimer.cpp ctkJobScheduler.cpp ctkJobScheduler.h - ctkJobScheduler_p.h ctkLinearValueProxy.cpp ctkLinearValueProxy.h ctkLogger.cpp @@ -110,7 +109,6 @@ set_source_files_properties( ctkAbstractJob.h ctkAbstractWorker.h ctkJobScheduler.h - ctkJobScheduler_p.h WRAP_EXCLUDE ) diff --git a/Libs/Core/ctkErrorLogFDMessageHandler.h b/Libs/Core/ctkErrorLogFDMessageHandler.h index 96372987fe..7cc0a78857 100644 --- a/Libs/Core/ctkErrorLogFDMessageHandler.h +++ b/Libs/Core/ctkErrorLogFDMessageHandler.h @@ -31,6 +31,7 @@ class ctkErrorLogFDMessageHandlerPrivate; /// \ingroup Core class CTK_CORE_EXPORT ctkErrorLogFDMessageHandler : public ctkErrorLogAbstractMessageHandler { + Q_OBJECT public: typedef ctkErrorLogAbstractMessageHandler Superclass; diff --git a/Libs/Core/ctkErrorLogStreamMessageHandler.h b/Libs/Core/ctkErrorLogStreamMessageHandler.h index 608c057c14..baa25c0484 100644 --- a/Libs/Core/ctkErrorLogStreamMessageHandler.h +++ b/Libs/Core/ctkErrorLogStreamMessageHandler.h @@ -32,6 +32,7 @@ class ctkErrorLogStreamMessageHandlerPrivate; class CTK_CORE_EXPORT ctkErrorLogStreamMessageHandler : public ctkErrorLogAbstractMessageHandler { + Q_OBJECT public: typedef ctkErrorLogAbstractMessageHandler Superclass; diff --git a/Libs/Core/ctkJobScheduler.cpp b/Libs/Core/ctkJobScheduler.cpp index d3eb22024f..ccdc469fc6 100644 --- a/Libs/Core/ctkJobScheduler.cpp +++ b/Libs/Core/ctkJobScheduler.cpp @@ -33,7 +33,6 @@ // CTK includes #include "ctkAbstractJob.h" #include "ctkJobScheduler.h" -#include "ctkJobScheduler_p.h" #include "ctkAbstractWorker.h" #include "ctkLogger.h" diff --git a/Libs/Core/ctkJobScheduler.h b/Libs/Core/ctkJobScheduler.h index 2ed8039fad..f71a91d4f9 100644 --- a/Libs/Core/ctkJobScheduler.h +++ b/Libs/Core/ctkJobScheduler.h @@ -28,15 +28,21 @@ #include #include #include +// Qt includes +#include +#include +#include class QThreadPool; // CTK includes #include "ctkCoreExport.h" class ctkAbstractJob; class ctkJobSchedulerPrivate; +class ctkAbstractWorker; //------------------------------------------------------------------------------ /// \ingroup Core +class ctkJobSchedulerPrivate; //Forward declaration needed within this file class CTK_CORE_EXPORT ctkJobScheduler : public QObject { Q_OBJECT @@ -137,4 +143,53 @@ public Q_SLOTS: Q_DISABLE_COPY(ctkJobScheduler) }; + +//------------------------------------------------------------------------------ +class CTK_CORE_EXPORT ctkJobSchedulerPrivate : public QObject +{ + Q_OBJECT + Q_DECLARE_PUBLIC(ctkJobScheduler) + +protected: + ctkJobScheduler* const q_ptr; + +public: + ctkJobSchedulerPrivate(ctkJobScheduler& object); + virtual ~ctkJobSchedulerPrivate(); + + /// Convenient setup methods + virtual void init(); + + virtual bool insertJob(QSharedPointer job); + virtual bool cleanJob(const QString& jobUID); + virtual void cleanJobs(const QStringList& jobUIDs); + virtual bool removeJob(const QString& jobUID); + virtual void removeJobs(const QStringList& jobUIDs); + virtual int getSameTypeJobsInThreadPoolQueueOrRunning(QSharedPointer job); + virtual QString generateUniqueJobUID(); + virtual void queueJobsInThreadPool(); + virtual void clearBactchedJobsLists(); + + QReadWriteLock QueueLock; + + int RetryDelay{100}; + int MaximumNumberOfRetry{3}; + bool FreezeJobsScheduling{false}; + + QSharedPointer ThreadPool; + QMap> JobsQueue; + QMap> JobsConnections; + QMap> Workers; + QMap RunningJobsByJobClass; + QList BatchedJobsStarted; + QList BatchedJobsUserStopped; + QList BatchedJobsFinished; + QList BatchedJobsAttemptFailed; + QList BatchedJobsFailed; + QList BatchedJobsProgress; + QSharedPointer ThrottleTimer; + int ThrottleTimeInterval{300}; + int MaximumBatchedSignalsForTimeInterval{20}; +}; + #endif // ctkJobScheduler_h diff --git a/Libs/Core/ctkJobScheduler_p.h b/Libs/Core/ctkJobScheduler_p.h deleted file mode 100644 index e3810c44a6..0000000000 --- a/Libs/Core/ctkJobScheduler_p.h +++ /dev/null @@ -1,86 +0,0 @@ -/*========================================================================= - - Library: CTK - - Copyright (c) Kitware Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0.txt - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -=========================================================================*/ - -#ifndef __ctkJobSchedulerPrivate_h -#define __ctkJobSchedulerPrivate_h - -// Qt includes -#include -#include -#include -class QThreadPool; - -// ctkCore includes -#include "ctkCoreExport.h" -class ctkAbstractJob; -class ctkAbstractWorker; - -// ctkDICOMCore includes -#include "ctkJobScheduler.h" - -//------------------------------------------------------------------------------ -class CTK_CORE_EXPORT ctkJobSchedulerPrivate : public QObject -{ - Q_OBJECT - Q_DECLARE_PUBLIC(ctkJobScheduler) - -protected: - ctkJobScheduler* const q_ptr; - -public: - ctkJobSchedulerPrivate(ctkJobScheduler& object); - virtual ~ctkJobSchedulerPrivate(); - - /// Convenient setup methods - virtual void init(); - - virtual bool insertJob(QSharedPointer job); - virtual bool cleanJob(const QString& jobUID); - virtual void cleanJobs(const QStringList& jobUIDs); - virtual bool removeJob(const QString& jobUID); - virtual void removeJobs(const QStringList& jobUIDs); - virtual int getSameTypeJobsInThreadPoolQueueOrRunning(QSharedPointer job); - virtual QString generateUniqueJobUID(); - virtual void queueJobsInThreadPool(); - virtual void clearBactchedJobsLists(); - - QReadWriteLock QueueLock; - - int RetryDelay{100}; - int MaximumNumberOfRetry{3}; - bool FreezeJobsScheduling{false}; - - QSharedPointer ThreadPool; - QMap> JobsQueue; - QMap> JobsConnections; - QMap> Workers; - QMap RunningJobsByJobClass; - QList BatchedJobsStarted; - QList BatchedJobsUserStopped; - QList BatchedJobsFinished; - QList BatchedJobsAttemptFailed; - QList BatchedJobsFailed; - QList BatchedJobsProgress; - QSharedPointer ThrottleTimer; - int ThrottleTimeInterval{300}; - int MaximumBatchedSignalsForTimeInterval{20}; -}; - -#endif diff --git a/Libs/DICOM/Core/CMakeLists.txt b/Libs/DICOM/Core/CMakeLists.txt index f3260b7b79..c670e954f1 100644 --- a/Libs/DICOM/Core/CMakeLists.txt +++ b/Libs/DICOM/Core/CMakeLists.txt @@ -68,7 +68,6 @@ set(KIT_SRCS ctkDICOMRetrieveWorker_p.h ctkDICOMScheduler.cpp ctkDICOMScheduler.h - ctkDICOMScheduler_p.h ctkDICOMSeriesFilterProxyModel.cpp ctkDICOMSeriesFilterProxyModel.h ctkDICOMSeriesModel.cpp @@ -147,8 +146,6 @@ set(KIT_MOC_SRCS ctkDICOMJobResponseSet.h ctkDICOMFilterProxyModel.h ctkDICOMModel.h - ctkDICOMPatientFilterProxyModel.h - ctkDICOMPatientModel.h ctkDICOMQuery.h ctkDICOMQueryJob.h ctkDICOMQueryJob_p.h @@ -160,12 +157,6 @@ set(KIT_MOC_SRCS ctkDICOMRetrieveWorker.h ctkDICOMRetrieveWorker_p.h ctkDICOMScheduler.h - ctkDICOMScheduler_p.h - ctkDICOMSeriesFilterProxyModel.h - ctkDICOMSeriesModel.h - ctkDICOMStudyFilterProxyModel.h - ctkDICOMStudyMergedFilterProxyModel.h - ctkDICOMStudyModel.h ctkDICOMServer.h ctkDICOMStorageListener.h ctkDICOMStorageListenerJob.h diff --git a/Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp b/Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp index 8f35da2066..2756d5df95 100644 --- a/Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp +++ b/Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp @@ -35,8 +35,8 @@ static ctkLogger logger("org.commontk.dicom.DICOMJobResponseSet"); //------------------------------------------------------------------------------ -class ctkDICOMJobResponseSetPrivate : public QObject -{ +class ctkDICOMJobResponseSetPrivate : public QObject { + Q_OBJECT Q_DECLARE_PUBLIC(ctkDICOMJobResponseSet); protected: @@ -296,3 +296,5 @@ QVariant ctkDICOMJobResponseSet::toVariant() { return QVariant::fromValue(ctkDICOMJobDetail(*this)); } + +#include "ctkDICOMJobResponseSet.moc" diff --git a/Libs/DICOM/Core/ctkDICOMRetrieve.cpp b/Libs/DICOM/Core/ctkDICOMRetrieve.cpp index 459b2b2f32..b69806a2fe 100644 --- a/Libs/DICOM/Core/ctkDICOMRetrieve.cpp +++ b/Libs/DICOM/Core/ctkDICOMRetrieve.cpp @@ -211,6 +211,7 @@ class ctkDICOMRetrieveSCUPrivate : public DcmSCU //------------------------------------------------------------------------------ class ctkDICOMRetrievePrivate: public QObject { + Q_OBJECT Q_DECLARE_PUBLIC( ctkDICOMRetrieve ); protected: @@ -1124,3 +1125,5 @@ void ctkDICOMRetrieve::releaseAssociation() Q_D(ctkDICOMRetrieve); d->releaseAssociation(); } + +#include "ctkDICOMRetrieve.moc" diff --git a/Libs/DICOM/Core/ctkDICOMScheduler.cpp b/Libs/DICOM/Core/ctkDICOMScheduler.cpp index 32cce1e90e..cf6ff84d47 100644 --- a/Libs/DICOM/Core/ctkDICOMScheduler.cpp +++ b/Libs/DICOM/Core/ctkDICOMScheduler.cpp @@ -23,7 +23,6 @@ // ctkCore includes #include -#include #include // ctkDICOMCore includes @@ -35,7 +34,6 @@ #include "ctkDICOMQueryJob.h" #include "ctkDICOMRetrieveJob.h" #include "ctkDICOMScheduler.h" -#include "ctkDICOMScheduler_p.h" #include "ctkDICOMServer.h" #include "ctkDICOMStorageListenerJob.h" #include "ctkDICOMUtil.h" @@ -1184,5 +1182,4 @@ void ctkDICOMScheduler::onJobFailed(ctkAbstractJob* job) ctkJobScheduler::onJobFailed(job); } -#include "moc_ctkDICOMScheduler_p.cpp" #include "moc_ctkDICOMScheduler.cpp" diff --git a/Libs/DICOM/Core/ctkDICOMScheduler.h b/Libs/DICOM/Core/ctkDICOMScheduler.h index ed5a389aa0..8b0eb7d40f 100644 --- a/Libs/DICOM/Core/ctkDICOMScheduler.h +++ b/Libs/DICOM/Core/ctkDICOMScheduler.h @@ -27,6 +27,7 @@ // Qt includes #include #include +#include // ctkCore includes #include @@ -37,12 +38,12 @@ #include "ctkDICOMDatabase.h" class ctkDICOMJob; class ctkDICOMIndexer; -class ctkDICOMSchedulerPrivate; class ctkDICOMServer; class ctkDICOMStorageListenerJob; struct ctkDICOMJobDetail; /// \ingroup DICOM_Core +class ctkDICOMSchedulerPrivate; // Forward decalaration needed within this file class CTK_DICOM_CORE_EXPORT ctkDICOMScheduler : public ctkJobScheduler { Q_OBJECT @@ -239,4 +240,35 @@ public Q_SLOTS: Q_DISABLE_COPY(ctkDICOMScheduler); }; +//------------------------------------------------------------------------------ +class ctkDICOMSchedulerPrivate : public ctkJobSchedulerPrivate +{ + Q_OBJECT + Q_DECLARE_PUBLIC(ctkDICOMScheduler); + +public: + ctkDICOMSchedulerPrivate(ctkDICOMScheduler& obj); + virtual ~ctkDICOMSchedulerPrivate(); + + bool isServerAllowed(ctkDICOMServer* server, const QStringList& allowedSeversForPatient); + ctkDICOMServer* getServerFromProxyServersByConnectionName(const QString&); + bool isJobDuplicate(ctkDICOMJob* job); + + QSharedPointer DicomDatabase; + QList> Servers; + QMap ServersConnections; + QMap Filters; + + int MaximumPatientsQuery{25}; + + dcmtk::log4cplus::SharedAppenderPtr Appender; +}; + +//------------------------------------------------------------------------------ +struct ThumbnailUID +{ + QString studyInstanceUID; + QString seriesInstanceUID; + QString SOPInstanceUID; +} ; #endif diff --git a/Libs/DICOM/Core/ctkDICOMScheduler_p.h b/Libs/DICOM/Core/ctkDICOMScheduler_p.h deleted file mode 100644 index 89aed8a9a3..0000000000 --- a/Libs/DICOM/Core/ctkDICOMScheduler_p.h +++ /dev/null @@ -1,76 +0,0 @@ -/*========================================================================= - - Library: CTK - - Copyright (c) Kitware Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0.txt - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - This file was originally developed by Davide Punzo, punzodavide@hotmail.it, - and development was supported by the Program for Intelligent Image-Guided Interventions (PI3). - -=========================================================================*/ - -#ifndef __ctkDICOMQueryJobPrivate_h -#define __ctkDICOMQueryJobPrivate_h - -// Qt includes -#include -#include -#include -#include -class QVariant; - -// ctkCore includes -#include -class ctkAbstractJob; -class ctkAbstractWorker; -class ctkDICOMDatabase; -class ctkDICOMServer; - -// ctkDICOMCore includes -#include "ctkDICOMScheduler.h" - -//------------------------------------------------------------------------------ -struct ThumbnailUID -{ - QString studyInstanceUID; - QString seriesInstanceUID; - QString SOPInstanceUID; -} ; - -//------------------------------------------------------------------------------ -class ctkDICOMSchedulerPrivate : public ctkJobSchedulerPrivate -{ - Q_OBJECT - Q_DECLARE_PUBLIC(ctkDICOMScheduler); - -public: - ctkDICOMSchedulerPrivate(ctkDICOMScheduler& obj); - virtual ~ctkDICOMSchedulerPrivate(); - - bool isServerAllowed(ctkDICOMServer* server, const QStringList& allowedSeversForPatient); - ctkDICOMServer* getServerFromProxyServersByConnectionName(const QString&); - bool isJobDuplicate(ctkDICOMJob* job); - - QSharedPointer DicomDatabase; - QList> Servers; - QMap ServersConnections; - QMap Filters; - - int MaximumPatientsQuery{25}; - - dcmtk::log4cplus::SharedAppenderPtr Appender; -}; - -#endif diff --git a/Libs/DICOM/Core/ctkDICOMServer.cpp b/Libs/DICOM/Core/ctkDICOMServer.cpp index 85fa7c4bcd..90c07d93d9 100644 --- a/Libs/DICOM/Core/ctkDICOMServer.cpp +++ b/Libs/DICOM/Core/ctkDICOMServer.cpp @@ -36,6 +36,7 @@ static ctkLogger logger("org.commontk.dicom.DICOMServer"); //------------------------------------------------------------------------------ class ctkDICOMServerPrivate : public QObject { + Q_OBJECT Q_DECLARE_PUBLIC(ctkDICOMServer); protected: @@ -291,3 +292,5 @@ ctkDICOMServer *ctkDICOMServer::clone() const return newServer; } + +#include "ctkDICOMServer.moc" diff --git a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp index 19971c6bb5..888ff8a8e3 100644 --- a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp @@ -40,8 +40,8 @@ static ctkLogger logger("org.commontk.DICOM.Widgets.DICOMJobListWidget"); //---------------------------------------------------------------------------- -class ProgressBarDelegate : public QStyledItemDelegate -{ +class ProgressBarDelegate : public QStyledItemDelegate { + Q_OBJECT public: using QStyledItemDelegate::QStyledItemDelegate; void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const @@ -79,6 +79,7 @@ class ProgressBarDelegate : public QStyledItemDelegate //---------------------------------------------------------------------------- class QCenteredItemModel : public QStandardItemModel { + Q_OBJECT public: using QStandardItemModel::QStandardItemModel; @@ -1362,3 +1363,5 @@ void ctkDICOMJobListWidget::onClearAllButtonClicked() QApplication::restoreOverrideCursor(); } + +#include "ctkDICOMJobListWidget.moc" diff --git a/Libs/DICOM/Widgets/ctkDICOMListenerWidget.h b/Libs/DICOM/Widgets/ctkDICOMListenerWidget.h index 0fdd723542..12f6f4ead9 100644 --- a/Libs/DICOM/Widgets/ctkDICOMListenerWidget.h +++ b/Libs/DICOM/Widgets/ctkDICOMListenerWidget.h @@ -29,8 +29,7 @@ class ctkDICOMListenerWidgetPrivate; /// \ingroup DICOM_Widgets -class CTK_DICOM_WIDGETS_EXPORT ctkDICOMListenerWidget : public QWidget -{ +class CTK_DICOM_WIDGETS_EXPORT ctkDICOMListenerWidget : public QWidget { Q_OBJECT public: typedef QWidget Superclass; diff --git a/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp index 218f0670b5..5025d39bf7 100644 --- a/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp @@ -38,8 +38,8 @@ #include static ctkLogger logger("org.commontk.DICOM.Widgets.ctkDICOMObjectListWidget"); -class qRecursiveTreeProxyFilter : public QSortFilterProxyModel -{ +class qRecursiveTreeProxyFilter : public QSortFilterProxyModel { + Q_OBJECT public: qRecursiveTreeProxyFilter(QObject *parent = NULL): QSortFilterProxyModel(parent) @@ -478,3 +478,5 @@ bool ctkDICOMObjectListWidget::isThumbnailVisible()const Q_D(const ctkDICOMObjectListWidget); return d->thumbnailVisible; } + +#include "ctkDICOMObjectListWidget.moc" diff --git a/Libs/DICOM/Widgets/ctkDICOMQueryResultsTabWidget.h b/Libs/DICOM/Widgets/ctkDICOMQueryResultsTabWidget.h index 53b7cd9021..a473c73e10 100644 --- a/Libs/DICOM/Widgets/ctkDICOMQueryResultsTabWidget.h +++ b/Libs/DICOM/Widgets/ctkDICOMQueryResultsTabWidget.h @@ -31,7 +31,7 @@ /// \ingroup DICOM_Widgets class CTK_DICOM_WIDGETS_EXPORT ctkDICOMQueryResultsTabWidget : public QTabWidget { - Q_OBJECT + Q_OBJECT public: typedef QTabWidget Superclass; explicit ctkDICOMQueryResultsTabWidget(QWidget* parent=0); diff --git a/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp b/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp index b633e4332e..bdb367b752 100644 --- a/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp @@ -62,8 +62,8 @@ QColor ctkDICOMServerNodeWidget2ServerSuccesColor(Qt::darkGreen); QColor ctkDICOMServerNodeWidget2ServerProgressColor(Qt::darkCyan); QColor ctkDICOMServerNodeWidget2ServerFailedColor(Qt::darkRed); -class QSelectionColorStyledItemDelegate : public QStyledItemDelegate -{ +class QSelectionColorStyledItemDelegate : public QStyledItemDelegate { + Q_OBJECT public: using QStyledItemDelegate::QStyledItemDelegate; void initStyleOption(QStyleOptionViewItem* option, const QModelIndex& index) const override @@ -90,6 +90,7 @@ class QSelectionColorStyledItemDelegate : public QStyledItemDelegate class QCheckStateStyledItemDelegate : public QStyledItemDelegate { + Q_OBJECT public: using QStyledItemDelegate::QStyledItemDelegate; void initStyleOption(QStyleOptionViewItem* option, const QModelIndex& index) const override @@ -1797,15 +1798,17 @@ void ctkDICOMServerNodeWidget2::stopAllJobs() } //---------------------------------------------------------------------------- -ctkCollapsibleGroupBox *ctkDICOMServerNodeWidget2::storageCollapsibleGroupBox() const +ctkCollapsibleGroupBox* ctkDICOMServerNodeWidget2::storageCollapsibleGroupBox() const { Q_D(const ctkDICOMServerNodeWidget2); return d->StorageCollapsibleGroupBox; } //---------------------------------------------------------------------------- -ctkCollapsibleGroupBox *ctkDICOMServerNodeWidget2::serversCollapsibleGroupBox() const +ctkCollapsibleGroupBox* ctkDICOMServerNodeWidget2::serversCollapsibleGroupBox() const { Q_D(const ctkDICOMServerNodeWidget2); return d->ServersCollapsibleGroupBox; } + +#include "ctkDICOMServerNodeWidget2.moc" diff --git a/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.h b/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.h index 8cdff8a964..1d35462b3e 100644 --- a/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.h +++ b/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.h @@ -35,6 +35,7 @@ class ctkITKErrorLogMessageHandlerPrivate; class CTK_IMAGEPROCESSING_ITK_CORE_EXPORT ctkITKErrorLogMessageHandler : public ctkErrorLogAbstractMessageHandler { + Q_OBJECT public: typedef ctkErrorLogAbstractMessageHandler Superclass; diff --git a/Libs/Scripting/Python/Widgets/ctkPythonConsole.cpp b/Libs/Scripting/Python/Widgets/ctkPythonConsole.cpp index e6f967b0ff..31cae1c423 100644 --- a/Libs/Scripting/Python/Widgets/ctkPythonConsole.cpp +++ b/Libs/Scripting/Python/Widgets/ctkPythonConsole.cpp @@ -508,8 +508,8 @@ void ctkPythonConsoleCompleter::updateCompletionModel(const QString& completion) // ctkPythonConsolePrivate //---------------------------------------------------------------------------- -class ctkPythonConsolePrivate : public ctkConsolePrivate -{ +class ctkPythonConsolePrivate : public ctkConsolePrivate { + Q_OBJECT Q_DECLARE_PUBLIC(ctkPythonConsole); public: ctkPythonConsolePrivate(ctkPythonConsole& object); @@ -728,3 +728,5 @@ void ctkPythonConsole::reset() this->Superclass::reset(); } + +#include "ctkPythonConsole.moc" diff --git a/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.h b/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.h index fc8758b65f..915b7bb5b3 100644 --- a/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.h +++ b/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.h @@ -35,6 +35,7 @@ class ctkVTKErrorLogMessageHandlerPrivate; class CTK_VISUALIZATION_VTK_CORE_EXPORT ctkVTKErrorLogMessageHandler : public ctkErrorLogAbstractMessageHandler { + Q_OBJECT public: typedef ctkErrorLogAbstractMessageHandler Superclass; diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKAbstractMatrixWidget.h b/Libs/Visualization/VTK/Widgets/ctkVTKAbstractMatrixWidget.h index a43b92c194..95e018bf6b 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKAbstractMatrixWidget.h +++ b/Libs/Visualization/VTK/Widgets/ctkVTKAbstractMatrixWidget.h @@ -35,7 +35,7 @@ class ctkVTKAbstractMatrixWidgetPrivate; /// of other classes (ctkVTKTransformWidget?) that don't want to expose /// setMatrix() publicly. class CTK_VISUALIZATION_VTK_WIDGETS_EXPORT ctkVTKAbstractMatrixWidget - : public ctkMatrixWidget + : public ctkMatrixWidget { Q_OBJECT public: diff --git a/Libs/Widgets/ctkCheckBox.cpp b/Libs/Widgets/ctkCheckBox.cpp index 878a5aa038..00a708e2e8 100644 --- a/Libs/Widgets/ctkCheckBox.cpp +++ b/Libs/Widgets/ctkCheckBox.cpp @@ -29,8 +29,8 @@ #include // ---------------------------------------------------------------------------- -class ctkCheckBoxStyle : public ctkProxyStyle -{ +class ctkCheckBoxStyle : public ctkProxyStyle { + Q_OBJECT public: typedef ctkProxyStyle Superclass; ctkCheckBoxStyle(QStyle* baseStyle, QObject* parent = 0); @@ -197,3 +197,5 @@ QSize ctkCheckBox::indicatorIconSize() const Q_D(const ctkCheckBox); return d->IconStyle->IndicatorSize; } + +#include "ctkCheckBox.moc" diff --git a/Libs/Widgets/ctkCheckableComboBox.cpp b/Libs/Widgets/ctkCheckableComboBox.cpp index 9749d25045..b6e0a08bea 100644 --- a/Libs/Widgets/ctkCheckableComboBox.cpp +++ b/Libs/Widgets/ctkCheckableComboBox.cpp @@ -40,8 +40,8 @@ #include // Similar to QComboBoxDelegate -class ctkComboBoxDelegate : public QItemDelegate -{ +class ctkComboBoxDelegate : public QItemDelegate { + Q_OBJECT public: ctkComboBoxDelegate(QObject *parent, QComboBox *cmb) : QItemDelegate(parent), ComboBox(cmb) @@ -432,3 +432,5 @@ void ctkCheckableComboBox::keyReleaseEvent(QKeyEvent *event) emit this->returnRelease(); } } + +#include "ctkCheckableComboBox.moc" diff --git a/Libs/Widgets/ctkCollapsibleGroupBox.cpp b/Libs/Widgets/ctkCollapsibleGroupBox.cpp index a9a4efb6c8..df374f7a56 100644 --- a/Libs/Widgets/ctkCollapsibleGroupBox.cpp +++ b/Libs/Widgets/ctkCollapsibleGroupBox.cpp @@ -35,6 +35,7 @@ //----------------------------------------------------------------------------- class ctkCollapsibleGroupBoxStyle:public ctkProxyStyle { + Q_OBJECT public: typedef ctkProxyStyle Superclass; ctkCollapsibleGroupBoxStyle(QStyle* style = 0, QObject* parent =0) @@ -330,3 +331,5 @@ bool ctkCollapsibleGroupBox::eventFilter(QObject* child, QEvent* e) } return this->QGroupBox::eventFilter(child, e); } + +#include "ctkCollapsibleGroupBox.moc" diff --git a/Libs/Widgets/ctkConsole.cpp b/Libs/Widgets/ctkConsole.cpp index 6b683dec5b..c0424c8995 100644 --- a/Libs/Widgets/ctkConsole.cpp +++ b/Libs/Widgets/ctkConsole.cpp @@ -1522,8 +1522,8 @@ QString ctkConsole::stdInRedirectCallBack(void * callData) namespace { -class InputEventLoop : public QEventLoop -{ +class InputEventLoop : public QEventLoop { + Q_OBJECT public: InputEventLoop(QApplication * app, QObject * parentObject = 0) : QEventLoop(parentObject), App(app){} @@ -1534,7 +1534,6 @@ class InputEventLoop : public QEventLoop } QApplication * App; }; - } //----------------------------------------------------------------------------- @@ -1576,3 +1575,5 @@ void ctkConsole::setMaxVisibleCompleterItems(int count) } this->completer()->setMaxVisibleItems(count); } + +#include "ctkConsole.moc" diff --git a/Libs/Widgets/ctkConsole.h b/Libs/Widgets/ctkConsole.h index 8ba4c2df54..ea1d335ccc 100644 --- a/Libs/Widgets/ctkConsole.h +++ b/Libs/Widgets/ctkConsole.h @@ -318,8 +318,8 @@ public Q_SLOTS: Q_DECLARE_OPERATORS_FOR_FLAGS(ctkConsole::EditorHints); //----------------------------------------------------------------------------- -class CTK_WIDGETS_EXPORT ctkConsoleCompleter : public QCompleter -{ +class CTK_WIDGETS_EXPORT ctkConsoleCompleter : public QCompleter { + Q_OBJECT public: /// Update the completion model given a string. The given string @@ -344,5 +344,4 @@ class CTK_WIDGETS_EXPORT ctkConsoleCompleter : public QCompleter QStringList AutocompletePreferenceList; }; - #endif diff --git a/Libs/Widgets/ctkDirectoryButton.cpp b/Libs/Widgets/ctkDirectoryButton.cpp index 5a68555f83..65f91170fe 100644 --- a/Libs/Widgets/ctkDirectoryButton.cpp +++ b/Libs/Widgets/ctkDirectoryButton.cpp @@ -249,12 +249,11 @@ void ctkDirectoryButton::setAcceptMode(QFileDialog::AcceptMode mode) d->AcceptMode = mode; } -//----------------------------------------------------------------------------- -QString ctkDirectoryButton::browse() -{ +namespace { // See https://bugreports.qt-project.org/browse/QTBUG-10244 class ExcludeReadOnlyFilterProxyModel : public QSortFilterProxyModel { + Q_OBJECT public: ExcludeReadOnlyFilterProxyModel(QPalette palette, QObject *parent) : QSortFilterProxyModel(parent) @@ -275,6 +274,10 @@ QString ctkDirectoryButton::browse() } QPalette Palette; }; +} +//----------------------------------------------------------------------------- +QString ctkDirectoryButton::browse() +{ Q_D(ctkDirectoryButton); // Use a ctkFileDialog (vs QFileDialog) for the AcceptSave mode so it does not @@ -346,3 +349,5 @@ Qt::TextElideMode ctkDirectoryButton::elideMode()const Q_D(const ctkDirectoryButton); return d->PushButton->elideMode(); } + +#include "ctkDirectoryButton.moc" diff --git a/Libs/Widgets/ctkDoubleSlider.cpp b/Libs/Widgets/ctkDoubleSlider.cpp index 50f4968f82..ec1398618d 100644 --- a/Libs/Widgets/ctkDoubleSlider.cpp +++ b/Libs/Widgets/ctkDoubleSlider.cpp @@ -40,6 +40,7 @@ //----------------------------------------------------------------------------- class ctkSlider: public QSlider { + Q_OBJECT public: ctkSlider(QWidget* parent); using QSlider::initStyleOption; @@ -680,3 +681,5 @@ void ctkDoubleSlider::onValueProxyModified() this->setValue(d->Slider->property("inputValue").toDouble()); this->blockSignals(wasBlockingSignals); } + +#include "ctkDoubleSlider.moc" diff --git a/Libs/Widgets/ctkMatrixWidget.cpp b/Libs/Widgets/ctkMatrixWidget.cpp index ba87582513..de2070b2a5 100644 --- a/Libs/Widgets/ctkMatrixWidget.cpp +++ b/Libs/Widgets/ctkMatrixWidget.cpp @@ -43,6 +43,7 @@ namespace //----------------------------------------------------------------------------- class ctkMatrixDoubleSpinBox : public ctkDoubleSpinBox { + Q_OBJECT public: ctkMatrixDoubleSpinBox(QWidget * parentWidget) : ctkDoubleSpinBox(parentWidget) @@ -68,6 +69,7 @@ namespace // Reimplemented to display the numbers with the matrix decimals. class ctkMatrixItemDelegate : public QStyledItemDelegate { + Q_OBJECT public: ctkMatrixItemDelegate(ctkMatrixWidget* matrixWidget) : QStyledItemDelegate(matrixWidget) @@ -525,3 +527,5 @@ QTableWidgetItem* ctkMatrixWidget::widgetItem(int i, int j) QTableWidgetItem* item = d->Table->item(i, j); return item; } + +#include "ctkMatrixWidget.moc" diff --git a/Libs/Widgets/ctkPathLineEdit.cpp b/Libs/Widgets/ctkPathLineEdit.cpp index 27a4d17a27..f837a9e0a1 100644 --- a/Libs/Widgets/ctkPathLineEdit.cpp +++ b/Libs/Widgets/ctkPathLineEdit.cpp @@ -87,8 +87,8 @@ static QFileSystemModel* globalFileSystemModelForDirectories() //----------------------------------------------------------------------------- /// Completer class with built-in file system model -class ctkFileCompleter : public QCompleter -{ +class ctkFileCompleter : public QCompleter { + Q_OBJECT public: ctkFileCompleter(QObject* o, bool showFiles); @@ -953,4 +953,5 @@ QSize ctkPathLineEdit::sizeHint()const } #include "moc_ctkPathLineEdit.cpp" + #include "ctkPathLineEdit.moc" diff --git a/Libs/Widgets/ctkPathListButtonsWidget.cpp b/Libs/Widgets/ctkPathListButtonsWidget.cpp index 4b484aae92..d374a1cee8 100644 --- a/Libs/Widgets/ctkPathListButtonsWidget.cpp +++ b/Libs/Widgets/ctkPathListButtonsWidget.cpp @@ -139,46 +139,12 @@ void ctkPathListButtonsWidgetPrivate::pathListWidgetSelectionChanged(const QItem this->RemoveButton->setEnabled(hasSelection); } -//----------------------------------------------------------------------------- -QStringList ctkPathListButtonsWidgetPrivate::openAddFilesDialog(bool multiple) -{ - Q_Q(ctkPathListButtonsWidget); - - if (!this->PathListWidget) return QStringList(); - - QString caption; - if (multiple) - { - caption = tr("Select one or more files"); - } - else - { - caption = tr("Select a file"); - } - - QFileDialog fileDialog(q, caption); - fileDialog.setOption(QFileDialog::ReadOnly, true); - - if (multiple) - { - fileDialog.setFileMode(QFileDialog::ExistingFiles); - } - else - { - fileDialog.setFileMode(QFileDialog::ExistingFile); - } - - QString currentPath = this->PathListWidget->currentPath(true); - currentPath = currentPath.left(currentPath.lastIndexOf('/') + 1); - if (!currentPath.isEmpty()) - { - fileDialog.setDirectory(currentPath); - } - +namespace { // We use a proxy model as a workaround for the broken QFileDialog::setFilter() method. // See for example https://bugreports.qt-project.org/browse/QTBUG-10244 class FileFilterProxyModel : public QSortFilterProxyModel { + Q_OBJECT public: FileFilterProxyModel(ctkPathListWidget::PathOptions fileOptions) : FileOptions(fileOptions) @@ -221,39 +187,59 @@ QStringList ctkPathListButtonsWidgetPrivate::openAddFilesDialog(bool multiple) private: ctkPathListWidget::PathOptions FileOptions; }; - - fileDialog.setProxyModel(new FileFilterProxyModel(this->PathListWidget->fileOptions())); - - if (fileDialog.exec() == QDialog::Accepted) - { - return fileDialog.selectedFiles(); - } - return QStringList(); } //----------------------------------------------------------------------------- -QStringList ctkPathListButtonsWidgetPrivate::openAddDirDialog() +QStringList ctkPathListButtonsWidgetPrivate::openAddFilesDialog(bool multiple) { Q_Q(ctkPathListButtonsWidget); if (!this->PathListWidget) return QStringList(); - QString caption = tr("Select a directory"); + QString caption; + if (multiple) + { + caption = tr("Select one or more files"); + } + else + { + caption = tr("Select a file"); + } + QFileDialog fileDialog(q, caption); + fileDialog.setOption(QFileDialog::ReadOnly); - fileDialog.setFileMode(QFileDialog::Directory); - fileDialog.setOption(QFileDialog::ShowDirsOnly); + if (multiple) + { + fileDialog.setFileMode(QFileDialog::ExistingFiles); + } + else + { + fileDialog.setFileMode(QFileDialog::ExistingFile); + } QString currentPath = this->PathListWidget->currentPath(true); + currentPath = currentPath.left(currentPath.lastIndexOf('/') + 1); if (!currentPath.isEmpty()) { fileDialog.setDirectory(currentPath); } + + fileDialog.setProxyModel(new FileFilterProxyModel(this->PathListWidget->fileOptions())); + + if (fileDialog.exec() == QDialog::Accepted) + { + return fileDialog.selectedFiles(); + } + return QStringList(); +} +namespace { // We use a proxy model as a workaround for the broken QFileDialog::setFilter() method. // See for example https://bugreports.qt-project.org/browse/QTBUG-10244 class DirFilterProxyModel : public QSortFilterProxyModel { + Q_OBJECT public: DirFilterProxyModel(ctkPathListWidget::PathOptions dirOptions) : DirOptions(dirOptions) @@ -274,17 +260,36 @@ QStringList ctkPathListButtonsWidgetPrivate::openAddDirDialog() } // Do not check for the Writable flag, since it makes navigation from // non-writable folders to writable sub-folders hard. -// if (DirOptions.testFlag(ctkPathListWidget::Writable) && -// !fileInfo.isWritable()) -// { -// return false; -// } + // if (DirOptions.testFlag(ctkPathListWidget::Writable) && + // !fileInfo.isWritable()) + // { + // return false; + // } return true; } private: ctkPathListWidget::PathOptions DirOptions; }; +} +//----------------------------------------------------------------------------- +QStringList ctkPathListButtonsWidgetPrivate::openAddDirDialog() +{ + Q_Q(ctkPathListButtonsWidget); + + if (!this->PathListWidget) return QStringList(); + + QString caption = tr("Select a directory"); + QFileDialog fileDialog(q, caption); + + fileDialog.setFileMode(QFileDialog::Directory); + fileDialog.setOption(QFileDialog::ShowDirsOnly); + + QString currentPath = this->PathListWidget->currentPath(true); + if (!currentPath.isEmpty()) + { + fileDialog.setDirectory(currentPath); + } fileDialog.setProxyModel(new DirFilterProxyModel(this->PathListWidget->directoryOptions())); @@ -714,3 +719,4 @@ QToolButton *ctkPathListButtonsWidget::buttonRemove() const Q_D(const ctkPathListButtonsWidget); return d->RemoveButton; } +#include "ctkPathListButtonsWidget.moc" From ff1828034c183c26ef3c625c341553e5eb7b1305 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sat, 28 Mar 2026 20:24:02 -0500 Subject: [PATCH 25/32] COMP: Add missing Q_OBJECT macro to QObject subclasses in tests (clazy missing-qobject-macro) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add Q_OBJECT macro and corresponding #include "*.moc" at end of each test file for QObject subclasses that were missing it. Classes without Q_OBJECT lack signals/slots, qobject_cast support, and Python scripting. Wrap same-named helpers in anonymous namespaces to prevent duplicate symbol linker errors across translation units. Deliberately skipped: LogMessageThread (shared via #include in 5+ TUs — adding Q_OBJECT would cause duplicate meta-object symbols at link time) and QCTK_DECLARE_TEST macro-generated class (would require macro change in ctkTestApplication.h plus .moc includes in all users). Co-Authored-By: Claude Sonnet 4.6 --- Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp | 3 +++ Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp | 5 +++++ Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp | 5 +++++ Libs/Widgets/Testing/Cpp/ctkHistogramTest1.cpp | 3 +++ Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp | 3 +++ Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp | 1 + Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest1.cpp | 3 +++ .../Testing/Cpp/ctkTransferFunctionRepresentationTest2.cpp | 3 +++ Libs/Widgets/Testing/Cpp/ctkTransferFunctionTest1.cpp | 3 +++ 9 files changed, 29 insertions(+) diff --git a/Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp b/Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp index 871cbcf022..d761338cbd 100644 --- a/Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp +++ b/Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp @@ -38,6 +38,7 @@ namespace // ---------------------------------------------------------------------------- class ctkQtMessageHandler : public QObject { + Q_OBJECT public: typedef ctkQtMessageHandler Self ; explicit ctkQtMessageHandler() @@ -194,3 +195,5 @@ int TestSoftAssert() return EXIT_SUCCESS; } + +#include "ctkLoggerTest1.moc" diff --git a/Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp b/Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp index 0cba00fddb..37a7830ec6 100644 --- a/Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp +++ b/Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp @@ -34,8 +34,10 @@ #include //----------------------------------------------------------------------------- +namespace { class QAbstractItemModelHelper : public QAbstractItemModel { + Q_OBJECT public: virtual QModelIndex index(int, int, const QModelIndex&) const { return QModelIndex(); } virtual QModelIndex parent(const QModelIndex&) const { return QModelIndex(); } @@ -43,6 +45,7 @@ class QAbstractItemModelHelper : public QAbstractItemModel virtual int columnCount(const QModelIndex&) const { return 0; } virtual QVariant data(const QModelIndex&, int) const { return QVariant(); } }; +} // namespace //----------------------------------------------------------------------------- int ctkModelTesterTest1(int argc, char * argv [] ) @@ -140,3 +143,5 @@ int ctkModelTesterTest1(int argc, char * argv [] ) return EXIT_SUCCESS; } + +#include "ctkModelTesterTest1.moc" diff --git a/Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp b/Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp index 1882834d9e..fad67ee4f4 100644 --- a/Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp +++ b/Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp @@ -32,8 +32,10 @@ #include //----------------------------------------------------------------------------- +namespace { class QAbstractItemModelHelper : public QAbstractItemModel { + Q_OBJECT public: virtual QModelIndex index(int, int, const QModelIndex&) const { return QModelIndex(); } virtual QModelIndex parent(const QModelIndex&) const { return QModelIndex(); } @@ -43,6 +45,7 @@ class QAbstractItemModelHelper : public QAbstractItemModel void emitInvalidHeaderDataChanged() { emit this->headerDataChanged(Qt::Vertical, 10, 10);} }; +} // namespace //----------------------------------------------------------------------------- int ctkModelTesterTest2(int argc, char * argv [] ) @@ -117,3 +120,5 @@ int ctkModelTesterTest2(int argc, char * argv [] ) return EXIT_SUCCESS; } + +#include "ctkModelTesterTest2.moc" diff --git a/Libs/Widgets/Testing/Cpp/ctkHistogramTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkHistogramTest1.cpp index a6894d1572..14cb1273dd 100644 --- a/Libs/Widgets/Testing/Cpp/ctkHistogramTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkHistogramTest1.cpp @@ -33,6 +33,7 @@ //----------------------------------------------------------------------------- class ctkDummyHistogram: public ctkHistogram { + Q_OBJECT public: ctkDummyHistogram(QObject* parent = 0):ctkHistogram(parent){} virtual ~ctkDummyHistogram(){} @@ -169,3 +170,5 @@ int ctkHistogramTest1(int argc, char * argv [] ) return EXIT_SUCCESS; } + +#include "ctkHistogramTest1.moc" diff --git a/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp index b7dea45a25..6a6a358a19 100644 --- a/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp @@ -88,6 +88,7 @@ namespace { class ctkNullViewFactory: public ctkLayoutViewFactory { + Q_OBJECT public: ctkNullViewFactory(QObject* parent = 0) : ctkLayoutViewFactory(parent) { @@ -347,3 +348,5 @@ int ctkLayoutManagerTest1(int argc, char * argv [] ) return app.exec(); } + +#include "ctkLayoutManagerTest1.moc" diff --git a/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp b/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp index 282d83da42..d145bb4195 100644 --- a/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp @@ -224,6 +224,7 @@ namespace //----------------------------------------------------------------------------- class ctkSettingsPanelForTest : public ctkSettingsPanel { + Q_OBJECT public: QVariant myDefaultPropertyValue(const QString& key) const { diff --git a/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest1.cpp index 9c1a025c38..5793430903 100644 --- a/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest1.cpp @@ -42,6 +42,7 @@ namespace //----------------------------------------------------------------------------- class ctkSettingsPanelForTest : public ctkSettingsPanel { + Q_OBJECT public: QVariant myDefaultPropertyValue(const QString& key) const { @@ -445,3 +446,5 @@ int TestStringList(ctkSettingsPanelForTest& settingsPanel) return EXIT_SUCCESS; } + +#include "ctkSettingsPanelTest1.moc" diff --git a/Libs/Widgets/Testing/Cpp/ctkTransferFunctionRepresentationTest2.cpp b/Libs/Widgets/Testing/Cpp/ctkTransferFunctionRepresentationTest2.cpp index 951ae9f62c..bcf2c9a242 100644 --- a/Libs/Widgets/Testing/Cpp/ctkTransferFunctionRepresentationTest2.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkTransferFunctionRepresentationTest2.cpp @@ -33,6 +33,7 @@ class ctkForcedTransferFunction: public ctkTransferFunction { + Q_OBJECT public: typedef ctkTransferFunction Superclass; ctkForcedTransferFunction(QObject* parent = 0) : Superclass(parent) @@ -105,3 +106,5 @@ int ctkTransferFunctionRepresentationTest2( int argc, char * argv []) return EXIT_SUCCESS; } + +#include "ctkTransferFunctionRepresentationTest2.moc" diff --git a/Libs/Widgets/Testing/Cpp/ctkTransferFunctionTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkTransferFunctionTest1.cpp index c53001b969..778504f58b 100644 --- a/Libs/Widgets/Testing/Cpp/ctkTransferFunctionTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkTransferFunctionTest1.cpp @@ -30,6 +30,7 @@ class ctkDummyTransferFunction: public ctkTransferFunction { + Q_OBJECT public: ctkDummyTransferFunction(QObject* parent = 0):ctkTransferFunction(parent){} virtual ~ctkDummyTransferFunction(){} @@ -195,3 +196,5 @@ int ctkTransferFunctionTest1(int argc, char * argv []) return EXIT_SUCCESS; } + +#include "ctkTransferFunctionTest1.moc" From 1b5ff1457b407734a7f6a61caa2faae9d8cbc5e7 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 29 Mar 2026 06:11:12 -0500 Subject: [PATCH 26/32] STYLE: Add QObject* parent parameter to constructors missing it (clazy ctor-missing-parent-argument) All QObject-derived classes that lacked a constructor accepting a parent argument have been updated: declarations get `QObject* parent = nullptr` (or `QWidget*`/`QState*` as appropriate for the base class), definitions pass `parent` to the base-class constructor in the initializer list. Includes: ctkAbstractJob, ctkAbstractWorker, error-log message handlers, workflow transitions, all DICOM Job/Worker subclasses, ctkDICOMIndexerPrivateWorker, ctkConsoleCompleter, ctkMenuComboBoxInternal, ctkPathListButtonsWidget inner proxy models, and ctkTestApplication. ctkDICOMJob.h is added to WRAP_EXCLUDE in the DICOM Core CMakeLists to prevent the PythonQt generator from attempting to instantiate the abstract class. Co-Authored-By: Claude Sonnet 4.6 --- Libs/Core/Testing/Cpp/ctkBooleanMapperTest.cpp | 4 +++- Libs/Core/Testing/Cpp/ctkCoreSettingsTest.cpp | 2 ++ Libs/Core/Testing/Cpp/ctkFileLoggerTest.cpp | 2 ++ Libs/Core/Testing/Cpp/ctkLinearValueProxyTest.cpp | 2 ++ Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp | 2 +- Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp | 1 + Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp | 1 + Libs/Core/Testing/Cpp/ctkUtilsTest.cpp | 2 ++ Libs/Core/ctkAbstractJob.cpp | 3 ++- Libs/Core/ctkAbstractJob.h | 2 +- Libs/Core/ctkAbstractWorker.cpp | 3 ++- Libs/Core/ctkAbstractWorker.h | 2 +- Libs/Core/ctkErrorLogFDMessageHandler.cpp | 4 ++-- Libs/Core/ctkErrorLogFDMessageHandler.h | 2 +- Libs/Core/ctkErrorLogStreamMessageHandler.cpp | 4 ++-- Libs/Core/ctkErrorLogStreamMessageHandler.h | 2 +- Libs/Core/ctkWorkflowStep.cpp | 5 +++-- Libs/Core/ctkWorkflowStep_p.h | 2 +- Libs/Core/ctkWorkflowTransitions.h | 15 +++++++++------ Libs/DICOM/Core/CMakeLists.txt | 1 + Libs/DICOM/Core/ctkDICOMEchoJob.cpp | 4 ++-- Libs/DICOM/Core/ctkDICOMEchoJob.h | 2 +- Libs/DICOM/Core/ctkDICOMEchoWorker.cpp | 4 ++-- Libs/DICOM/Core/ctkDICOMEchoWorker.h | 2 +- Libs/DICOM/Core/ctkDICOMIndexer.cpp | 5 +++-- Libs/DICOM/Core/ctkDICOMIndexer_p.h | 2 +- Libs/DICOM/Core/ctkDICOMInserterJob.cpp | 3 ++- Libs/DICOM/Core/ctkDICOMInserterJob.h | 2 +- Libs/DICOM/Core/ctkDICOMInserterWorker.cpp | 4 ++-- Libs/DICOM/Core/ctkDICOMInserterWorker.h | 2 +- Libs/DICOM/Core/ctkDICOMJob.cpp | 3 ++- Libs/DICOM/Core/ctkDICOMJob.h | 2 +- Libs/DICOM/Core/ctkDICOMQueryJob.cpp | 4 ++-- Libs/DICOM/Core/ctkDICOMQueryJob.h | 2 +- Libs/DICOM/Core/ctkDICOMQueryWorker.cpp | 4 ++-- Libs/DICOM/Core/ctkDICOMQueryWorker.h | 2 +- Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp | 4 ++-- Libs/DICOM/Core/ctkDICOMRetrieveJob.h | 2 +- Libs/DICOM/Core/ctkDICOMRetrieveWorker.cpp | 4 ++-- Libs/DICOM/Core/ctkDICOMRetrieveWorker.h | 2 +- Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp | 4 ++-- Libs/DICOM/Core/ctkDICOMStorageListenerJob.h | 2 +- Libs/DICOM/Core/ctkDICOMStorageListenerWorker.cpp | 4 ++-- Libs/DICOM/Core/ctkDICOMStorageListenerWorker.h | 2 +- Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp | 4 ++-- Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.h | 2 +- .../Core/ctkDICOMThumbnailGeneratorWorker.cpp | 4 ++-- .../DICOM/Core/ctkDICOMThumbnailGeneratorWorker.h | 2 +- .../Widgets/Testing/Cpp/ctkDICOMBrowserTest.cpp | 2 ++ ...kITKErrorLogMessageHandlerWithThreadsTest1.cpp | 2 +- .../ITK/Core/ctkITKErrorLogMessageHandler.cpp | 4 ++-- .../ITK/Core/ctkITKErrorLogMessageHandler.h | 2 +- .../VTK/Core/ctkVTKErrorLogMessageHandler.cpp | 4 ++-- .../VTK/Core/ctkVTKErrorLogMessageHandler.h | 2 +- ...kVTKErrorLogMessageHandlerWithThreadsTest1.cpp | 2 +- .../Testing/Cpp/ctkVTKPropertyWidgetTest.cpp | 2 ++ Libs/Widgets/Testing/Cpp/ctkConsoleTest.cpp | 2 ++ .../Testing/Cpp/ctkCoordinatesWidgetTest.cpp | 2 ++ .../Cpp/ctkCoordinatesWidgetValueProxyTest.cpp | 4 +++- .../Testing/Cpp/ctkDoubleRangeSliderTest.cpp | 2 ++ .../Cpp/ctkDoubleRangeSliderValueProxyTest.cpp | 4 +++- Libs/Widgets/Testing/Cpp/ctkDoubleSliderTest.cpp | 2 ++ .../Testing/Cpp/ctkDoubleSliderValueProxyTest.cpp | 2 ++ Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxTest.cpp | 2 ++ .../Cpp/ctkDoubleSpinBoxValueProxyTest.cpp | 2 ++ ...tkErrorLogFDMessageHandlerWithThreadsTest1.cpp | 2 +- .../Testing/Cpp/ctkErrorLogModelTestHelper.cpp | 4 ++-- ...tkErrorLogQtMessageHandlerWithThreadsTest1.cpp | 2 +- ...rorLogStreamMessageHandlerWithThreadsTest1.cpp | 2 +- .../Cpp/ctkExampleDerivedWorkflowWidgetStep.cpp | 4 ++-- .../Cpp/ctkExampleDerivedWorkflowWidgetStep.h | 2 +- .../Widgets/Testing/Cpp/ctkFlatProxyModelTest.cpp | 2 ++ Libs/Widgets/Testing/Cpp/ctkFontButtonTest.cpp | 2 ++ .../Testing/Cpp/ctkLanguageComboBoxTest.cpp | 2 ++ Libs/Widgets/Testing/Cpp/ctkMatrixWidgetTest.cpp | 2 ++ .../Cpp/ctkMessageBoxDontShowAgainTest.cpp | 2 ++ .../Widgets/Testing/Cpp/ctkPathListWidgetTest.cpp | 3 +++ .../Cpp/ctkPathListWidgetWithButtonsTest.cpp | 3 +++ Libs/Widgets/Testing/Cpp/ctkPushButtonTest.cpp | 3 +++ Libs/Widgets/Testing/Cpp/ctkRangeSliderTest.cpp | 2 ++ Libs/Widgets/Testing/Cpp/ctkRangeWidgetTest.cpp | 2 ++ .../Testing/Cpp/ctkRangeWidgetValueProxyTest.cpp | 4 +++- Libs/Widgets/Testing/Cpp/ctkSearchBoxTest.cpp | 3 +++ Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp | 3 +++ .../Widgets/Testing/Cpp/ctkSettingsPanelTest1.cpp | 1 + Libs/Widgets/Testing/Cpp/ctkSliderWidgetTest.cpp | 2 ++ .../Testing/Cpp/ctkSliderWidgetValueProxyTest.cpp | 3 +++ Libs/Widgets/ctkConsole.h | 2 ++ Libs/Widgets/ctkMenuComboBox.cpp | 3 ++- Libs/Widgets/ctkMenuComboBox_p.h | 2 +- Libs/Widgets/ctkPathListButtonsWidget.cpp | 10 ++++++---- Libs/Widgets/ctkTestApplication.cpp | 3 ++- Libs/Widgets/ctkTestApplication.h | 2 +- 93 files changed, 175 insertions(+), 88 deletions(-) diff --git a/Libs/Core/Testing/Cpp/ctkBooleanMapperTest.cpp b/Libs/Core/Testing/Cpp/ctkBooleanMapperTest.cpp index 69efc85406..15a188a0e4 100644 --- a/Libs/Core/Testing/Cpp/ctkBooleanMapperTest.cpp +++ b/Libs/Core/Testing/Cpp/ctkBooleanMapperTest.cpp @@ -32,7 +32,7 @@ class ctkObjectWithBoolProp: public QObject Q_OBJECT Q_PROPERTY(bool checked READ checked WRITE setChecked NOTIFY toggled); public: - ctkObjectWithBoolProp(){this->Checked = false;} + ctkObjectWithBoolProp(QObject* parent = nullptr) : QObject(parent) {this->Checked = false;} bool checked()const {return this->Checked;} public Q_SLOTS: @@ -52,6 +52,8 @@ public Q_SLOTS: class ctkBooleanMapperTester: public QObject { Q_OBJECT +public: + explicit ctkBooleanMapperTester(QObject* parent = nullptr) : QObject(parent) {} private Q_SLOTS: void testValue(); void testComplement(); diff --git a/Libs/Core/Testing/Cpp/ctkCoreSettingsTest.cpp b/Libs/Core/Testing/Cpp/ctkCoreSettingsTest.cpp index 0f228c2aa1..12ea2d5251 100644 --- a/Libs/Core/Testing/Cpp/ctkCoreSettingsTest.cpp +++ b/Libs/Core/Testing/Cpp/ctkCoreSettingsTest.cpp @@ -33,6 +33,8 @@ class ctkCoreSettingsTester: public QObject { Q_OBJECT +public: + explicit ctkCoreSettingsTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void initTestCase(); diff --git a/Libs/Core/Testing/Cpp/ctkFileLoggerTest.cpp b/Libs/Core/Testing/Cpp/ctkFileLoggerTest.cpp index 08df392b8c..7a247c8ca1 100644 --- a/Libs/Core/Testing/Cpp/ctkFileLoggerTest.cpp +++ b/Libs/Core/Testing/Cpp/ctkFileLoggerTest.cpp @@ -7,6 +7,8 @@ class ctkFileLoggerTester: public QObject { Q_OBJECT +public: + explicit ctkFileLoggerTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void initTestCase(); diff --git a/Libs/Core/Testing/Cpp/ctkLinearValueProxyTest.cpp b/Libs/Core/Testing/Cpp/ctkLinearValueProxyTest.cpp index 1627c31817..85beb175a9 100644 --- a/Libs/Core/Testing/Cpp/ctkLinearValueProxyTest.cpp +++ b/Libs/Core/Testing/Cpp/ctkLinearValueProxyTest.cpp @@ -29,6 +29,8 @@ class ctkLinearValueProxyTester: public QObject { Q_OBJECT +public: + explicit ctkLinearValueProxyTester(QObject* parent = nullptr) : QObject(parent) {} private Q_SLOTS: void testSimpleSetValue(); void testSimpleSetValue_data(); diff --git a/Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp b/Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp index d761338cbd..33b14fdf37 100644 --- a/Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp +++ b/Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp @@ -41,7 +41,7 @@ class ctkQtMessageHandler : public QObject Q_OBJECT public: typedef ctkQtMessageHandler Self ; - explicit ctkQtMessageHandler() + explicit ctkQtMessageHandler(QObject* parent = nullptr) : QObject(parent) { qInstallMessageHandler(ctkQtMessageHandler::messageHandler); Self::Handlers.push(this); diff --git a/Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp b/Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp index 37a7830ec6..8eae8378d8 100644 --- a/Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp +++ b/Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp @@ -39,6 +39,7 @@ class QAbstractItemModelHelper : public QAbstractItemModel { Q_OBJECT public: + explicit QAbstractItemModelHelper(QObject* parent = nullptr) : QAbstractItemModel(parent) {} virtual QModelIndex index(int, int, const QModelIndex&) const { return QModelIndex(); } virtual QModelIndex parent(const QModelIndex&) const { return QModelIndex(); } virtual int rowCount(const QModelIndex&) const { return 0; } diff --git a/Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp b/Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp index fad67ee4f4..8a4a6b2ee0 100644 --- a/Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp +++ b/Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp @@ -37,6 +37,7 @@ class QAbstractItemModelHelper : public QAbstractItemModel { Q_OBJECT public: + explicit QAbstractItemModelHelper(QObject* parent = nullptr) : QAbstractItemModel(parent) {} virtual QModelIndex index(int, int, const QModelIndex&) const { return QModelIndex(); } virtual QModelIndex parent(const QModelIndex&) const { return QModelIndex(); } virtual int rowCount(const QModelIndex&) const { return 0; } diff --git a/Libs/Core/Testing/Cpp/ctkUtilsTest.cpp b/Libs/Core/Testing/Cpp/ctkUtilsTest.cpp index 6aab2bf364..4f7e0a632c 100644 --- a/Libs/Core/Testing/Cpp/ctkUtilsTest.cpp +++ b/Libs/Core/Testing/Cpp/ctkUtilsTest.cpp @@ -37,6 +37,8 @@ class ctkUtilsTester: public QObject { Q_OBJECT +public: + explicit ctkUtilsTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void initTestCase(); diff --git a/Libs/Core/ctkAbstractJob.cpp b/Libs/Core/ctkAbstractJob.cpp index 79da019d2d..d4e6c9660a 100644 --- a/Libs/Core/ctkAbstractJob.cpp +++ b/Libs/Core/ctkAbstractJob.cpp @@ -27,7 +27,8 @@ #include // -------------------------------------------------------------------------- -ctkAbstractJob::ctkAbstractJob() +ctkAbstractJob::ctkAbstractJob(QObject* parent) + : QObject(parent) { this->Status = JobStatus::Initialized; this->Persistent = false; diff --git a/Libs/Core/ctkAbstractJob.h b/Libs/Core/ctkAbstractJob.h index 88a1288643..75068ed3b1 100644 --- a/Libs/Core/ctkAbstractJob.h +++ b/Libs/Core/ctkAbstractJob.h @@ -58,7 +58,7 @@ class CTK_CORE_EXPORT ctkAbstractJob : public QObject Q_PROPERTY(bool destroyAfterUse READ destroyAfterUse WRITE setDestroyAfterUse); public: - explicit ctkAbstractJob(); + explicit ctkAbstractJob(QObject* parent = nullptr); virtual ~ctkAbstractJob(); ///@{ diff --git a/Libs/Core/ctkAbstractWorker.cpp b/Libs/Core/ctkAbstractWorker.cpp index 211b70d87b..c2a7dbb8b6 100644 --- a/Libs/Core/ctkAbstractWorker.cpp +++ b/Libs/Core/ctkAbstractWorker.cpp @@ -31,7 +31,8 @@ #include "ctkAbstractWorker.h" // -------------------------------------------------------------------------- -ctkAbstractWorker::ctkAbstractWorker() +ctkAbstractWorker::ctkAbstractWorker(QObject* parent) + : QObject(parent) { this->setAutoDelete(false); } diff --git a/Libs/Core/ctkAbstractWorker.h b/Libs/Core/ctkAbstractWorker.h index 4da9bd53c6..fe74ac1381 100644 --- a/Libs/Core/ctkAbstractWorker.h +++ b/Libs/Core/ctkAbstractWorker.h @@ -42,7 +42,7 @@ class CTK_CORE_EXPORT ctkAbstractWorker : public QObject, public QRunnable Q_OBJECT public: - explicit ctkAbstractWorker(); + explicit ctkAbstractWorker(QObject* parent = nullptr); virtual ~ctkAbstractWorker(); /// Execute worker. This method is run by the QThreadPool and is thread safe diff --git a/Libs/Core/ctkErrorLogFDMessageHandler.cpp b/Libs/Core/ctkErrorLogFDMessageHandler.cpp index d7a24c127c..a7ed5603a5 100644 --- a/Libs/Core/ctkErrorLogFDMessageHandler.cpp +++ b/Libs/Core/ctkErrorLogFDMessageHandler.cpp @@ -254,8 +254,8 @@ ctkErrorLogFDMessageHandlerPrivate::~ctkErrorLogFDMessageHandlerPrivate() QString ctkErrorLogFDMessageHandler::HandlerName = QLatin1String("FD"); // -------------------------------------------------------------------------- -ctkErrorLogFDMessageHandler::ctkErrorLogFDMessageHandler() : - Superclass(), d_ptr(new ctkErrorLogFDMessageHandlerPrivate()) +ctkErrorLogFDMessageHandler::ctkErrorLogFDMessageHandler(QObject* parent) : + Superclass(parent), d_ptr(new ctkErrorLogFDMessageHandlerPrivate()) { Q_D(ctkErrorLogFDMessageHandler); d->StdOutFDHandler = new ctkFDHandler(this, ctkErrorLogLevel::Info, ctkErrorLogTerminalOutput::StandardOutput); diff --git a/Libs/Core/ctkErrorLogFDMessageHandler.h b/Libs/Core/ctkErrorLogFDMessageHandler.h index 7cc0a78857..71274912f4 100644 --- a/Libs/Core/ctkErrorLogFDMessageHandler.h +++ b/Libs/Core/ctkErrorLogFDMessageHandler.h @@ -35,7 +35,7 @@ class CTK_CORE_EXPORT ctkErrorLogFDMessageHandler : public ctkErrorLogAbstractMe public: typedef ctkErrorLogAbstractMessageHandler Superclass; - ctkErrorLogFDMessageHandler(); + ctkErrorLogFDMessageHandler(QObject* parent = nullptr); virtual ~ctkErrorLogFDMessageHandler(); static QString HandlerName; diff --git a/Libs/Core/ctkErrorLogStreamMessageHandler.cpp b/Libs/Core/ctkErrorLogStreamMessageHandler.cpp index 444bbecf4c..cad4dffd24 100644 --- a/Libs/Core/ctkErrorLogStreamMessageHandler.cpp +++ b/Libs/Core/ctkErrorLogStreamMessageHandler.cpp @@ -213,8 +213,8 @@ ctkErrorLogStreamMessageHandlerPrivate::~ctkErrorLogStreamMessageHandlerPrivate( QString ctkErrorLogStreamMessageHandler::HandlerName = QLatin1String("Stream"); // -------------------------------------------------------------------------- -ctkErrorLogStreamMessageHandler::ctkErrorLogStreamMessageHandler() : - Superclass(), d_ptr(new ctkErrorLogStreamMessageHandlerPrivate()) +ctkErrorLogStreamMessageHandler::ctkErrorLogStreamMessageHandler(QObject* parent) : + Superclass(parent), d_ptr(new ctkErrorLogStreamMessageHandlerPrivate()) { Q_D(ctkErrorLogStreamMessageHandler); d->CoutStreamHandler = new ctkStreamHandler(this, ctkErrorLogLevel::Info, std::cout); diff --git a/Libs/Core/ctkErrorLogStreamMessageHandler.h b/Libs/Core/ctkErrorLogStreamMessageHandler.h index baa25c0484..1607e86268 100644 --- a/Libs/Core/ctkErrorLogStreamMessageHandler.h +++ b/Libs/Core/ctkErrorLogStreamMessageHandler.h @@ -36,7 +36,7 @@ class CTK_CORE_EXPORT ctkErrorLogStreamMessageHandler public: typedef ctkErrorLogAbstractMessageHandler Superclass; - ctkErrorLogStreamMessageHandler(); + ctkErrorLogStreamMessageHandler(QObject* parent = nullptr); virtual ~ctkErrorLogStreamMessageHandler(); static QString HandlerName; diff --git a/Libs/Core/ctkWorkflowStep.cpp b/Libs/Core/ctkWorkflowStep.cpp index 16815b6b3c..1d6ec5f34d 100644 --- a/Libs/Core/ctkWorkflowStep.cpp +++ b/Libs/Core/ctkWorkflowStep.cpp @@ -36,8 +36,9 @@ // ctkWorkflowStepPrivate methods // -------------------------------------------------------------------------- -ctkWorkflowStepPrivate::ctkWorkflowStepPrivate(ctkWorkflowStep& object) - :q_ptr(&object) +ctkWorkflowStepPrivate::ctkWorkflowStepPrivate(ctkWorkflowStep& object, QObject* parent) + : QObject(parent) + , q_ptr(&object) { qRegisterMetaType("ctkWorkflowStep*"); this->Workflow = 0; diff --git a/Libs/Core/ctkWorkflowStep_p.h b/Libs/Core/ctkWorkflowStep_p.h index 53e402b37d..a990e5cba7 100644 --- a/Libs/Core/ctkWorkflowStep_p.h +++ b/Libs/Core/ctkWorkflowStep_p.h @@ -48,7 +48,7 @@ class CTK_CORE_EXPORT ctkWorkflowStepPrivate: public QObject public: ctkWorkflowStep* q_ptr; - ctkWorkflowStepPrivate(ctkWorkflowStep& object); + ctkWorkflowStepPrivate(ctkWorkflowStep& object, QObject* parent = nullptr); ~ctkWorkflowStepPrivate(); protected: diff --git a/Libs/Core/ctkWorkflowTransitions.h b/Libs/Core/ctkWorkflowTransitions.h index 19367f1f48..7cc0694043 100644 --- a/Libs/Core/ctkWorkflowTransitions.h +++ b/Libs/Core/ctkWorkflowTransitions.h @@ -74,8 +74,9 @@ class CTK_CORE_EXPORT ctkWorkflowIntrastepTransition : public QAbstractTransitio ValidationFailedTransition }; - ctkWorkflowIntrastepTransition(IntrastepTransitionType newTransitionType) - : TransitionType(newTransitionType){} + ctkWorkflowIntrastepTransition(IntrastepTransitionType newTransitionType, + QState* sourceState = nullptr) + : QAbstractTransition(sourceState), TransitionType(newTransitionType){} IntrastepTransitionType transitionType() {return this->TransitionType;} @@ -143,10 +144,12 @@ class CTK_CORE_EXPORT ctkWorkflowInterstepTransition : public QAbstractTransitio TransitionToPreviousStartingStepAfterSuccessfulGoToFinishStep }; Q_ENUM(InterstepTransitionType) - ctkWorkflowInterstepTransition(InterstepTransitionType newTransitionType) - : TransitionType(newTransitionType){} - ctkWorkflowInterstepTransition(InterstepTransitionType newTransitionType, const QString& newId) - : TransitionType(newTransitionType), + ctkWorkflowInterstepTransition(InterstepTransitionType newTransitionType, + QState* sourceState = nullptr) + : QAbstractTransition(sourceState), TransitionType(newTransitionType){} + ctkWorkflowInterstepTransition(InterstepTransitionType newTransitionType, const QString& newId, + QState* sourceState = nullptr) + : QAbstractTransition(sourceState), TransitionType(newTransitionType), Id(newId) {} InterstepTransitionType transitionType() {return this->TransitionType;} diff --git a/Libs/DICOM/Core/CMakeLists.txt b/Libs/DICOM/Core/CMakeLists.txt index c670e954f1..8d3c540a61 100644 --- a/Libs/DICOM/Core/CMakeLists.txt +++ b/Libs/DICOM/Core/CMakeLists.txt @@ -121,6 +121,7 @@ set(KIT_SRCS set_source_files_properties( ctkDICOMAbstractThumbnailGenerator.h ctkDICOMDisplayedFieldGeneratorAbstractRule.h + ctkDICOMJob.h WRAP_EXCLUDE ) diff --git a/Libs/DICOM/Core/ctkDICOMEchoJob.cpp b/Libs/DICOM/Core/ctkDICOMEchoJob.cpp index 2006d664e3..53d46604d8 100644 --- a/Libs/DICOM/Core/ctkDICOMEchoJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMEchoJob.cpp @@ -56,8 +56,8 @@ ctkDICOMEchoJobPrivate::~ctkDICOMEchoJobPrivate() // ctkDICOMEchoJob methods //------------------------------------------------------------------------------ -ctkDICOMEchoJob::ctkDICOMEchoJob() - : d_ptr(new ctkDICOMEchoJobPrivate(this)) +ctkDICOMEchoJob::ctkDICOMEchoJob(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMEchoJobPrivate(this)) { } diff --git a/Libs/DICOM/Core/ctkDICOMEchoJob.h b/Libs/DICOM/Core/ctkDICOMEchoJob.h index 8c5e1188e4..609263ee7f 100644 --- a/Libs/DICOM/Core/ctkDICOMEchoJob.h +++ b/Libs/DICOM/Core/ctkDICOMEchoJob.h @@ -44,7 +44,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMEchoJob : public ctkDICOMJob public: typedef ctkDICOMJob Superclass; - explicit ctkDICOMEchoJob(); + explicit ctkDICOMEchoJob(QObject* parent = nullptr); virtual ~ctkDICOMEchoJob(); ///@{ diff --git a/Libs/DICOM/Core/ctkDICOMEchoWorker.cpp b/Libs/DICOM/Core/ctkDICOMEchoWorker.cpp index b6287907be..82507e69d4 100644 --- a/Libs/DICOM/Core/ctkDICOMEchoWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMEchoWorker.cpp @@ -79,8 +79,8 @@ void ctkDICOMEchoWorkerPrivate::setRetrieveParameters() // ctkDICOMEchoWorker methods //------------------------------------------------------------------------------ -ctkDICOMEchoWorker::ctkDICOMEchoWorker() - : d_ptr(new ctkDICOMEchoWorkerPrivate(this)) +ctkDICOMEchoWorker::ctkDICOMEchoWorker(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMEchoWorkerPrivate(this)) { } diff --git a/Libs/DICOM/Core/ctkDICOMEchoWorker.h b/Libs/DICOM/Core/ctkDICOMEchoWorker.h index 183e88ba3b..e831d14e36 100644 --- a/Libs/DICOM/Core/ctkDICOMEchoWorker.h +++ b/Libs/DICOM/Core/ctkDICOMEchoWorker.h @@ -41,7 +41,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMEchoWorker : public ctkAbstractWorker public: typedef ctkAbstractWorker Superclass; - explicit ctkDICOMEchoWorker(); + explicit ctkDICOMEchoWorker(QObject* parent = nullptr); virtual ~ctkDICOMEchoWorker(); /// Execute worker. This method is run by the QThreadPool and is thread safe diff --git a/Libs/DICOM/Core/ctkDICOMIndexer.cpp b/Libs/DICOM/Core/ctkDICOMIndexer.cpp index 24e03af93f..d60e82ea43 100644 --- a/Libs/DICOM/Core/ctkDICOMIndexer.cpp +++ b/Libs/DICOM/Core/ctkDICOMIndexer.cpp @@ -68,8 +68,9 @@ static int REQUEST_RESULTS_CACHE_MAXIMUM_SIZE = 5000; //------------------------------------------------------------------------------ -ctkDICOMIndexerPrivateWorker::ctkDICOMIndexerPrivateWorker(DICOMIndexingQueue* queue) -: RequestQueue(queue) +ctkDICOMIndexerPrivateWorker::ctkDICOMIndexerPrivateWorker(DICOMIndexingQueue* queue, QObject* parent) +: QObject(parent) +, RequestQueue(queue) , TimePercentageIndexing(95.0) , RemainingRequestCount(0) , CompletedRequestCount(0) diff --git a/Libs/DICOM/Core/ctkDICOMIndexer_p.h b/Libs/DICOM/Core/ctkDICOMIndexer_p.h index 731b49682f..5d187aca37 100644 --- a/Libs/DICOM/Core/ctkDICOMIndexer_p.h +++ b/Libs/DICOM/Core/ctkDICOMIndexer_p.h @@ -215,7 +215,7 @@ class ctkDICOMIndexerPrivateWorker : public QObject Q_OBJECT public: - ctkDICOMIndexerPrivateWorker(DICOMIndexingQueue* queue); + ctkDICOMIndexerPrivateWorker(DICOMIndexingQueue* queue, QObject* parent = nullptr); virtual ~ctkDICOMIndexerPrivateWorker(); public Q_SLOTS: diff --git a/Libs/DICOM/Core/ctkDICOMInserterJob.cpp b/Libs/DICOM/Core/ctkDICOMInserterJob.cpp index a5704c10b4..afecdc8441 100644 --- a/Libs/DICOM/Core/ctkDICOMInserterJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMInserterJob.cpp @@ -32,7 +32,8 @@ static ctkLogger logger ("org.commontk.dicom.DICOMInserterJob"); // ctkDICOMInserterJob methods //------------------------------------------------------------------------------ -ctkDICOMInserterJob::ctkDICOMInserterJob() +ctkDICOMInserterJob::ctkDICOMInserterJob(QObject* parent) + : Superclass(parent) { this->MaximumConcurrentJobsPerType = 1; } diff --git a/Libs/DICOM/Core/ctkDICOMInserterJob.h b/Libs/DICOM/Core/ctkDICOMInserterJob.h index cb6c9b8c3d..24fbc9e645 100644 --- a/Libs/DICOM/Core/ctkDICOMInserterJob.h +++ b/Libs/DICOM/Core/ctkDICOMInserterJob.h @@ -46,7 +46,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMInserterJob : public ctkDICOMJob public: typedef ctkDICOMJob Superclass; - explicit ctkDICOMInserterJob(); + explicit ctkDICOMInserterJob(QObject* parent = nullptr); virtual ~ctkDICOMInserterJob(); /// Logger report string formatting for specific task diff --git a/Libs/DICOM/Core/ctkDICOMInserterWorker.cpp b/Libs/DICOM/Core/ctkDICOMInserterWorker.cpp index 1c80dbb572..df8f2ed16c 100644 --- a/Libs/DICOM/Core/ctkDICOMInserterWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMInserterWorker.cpp @@ -71,8 +71,8 @@ void ctkDICOMInserterWorkerPrivate::setInserterParameters() // ctkDICOMInserterWorker methods //------------------------------------------------------------------------------ -ctkDICOMInserterWorker::ctkDICOMInserterWorker() - : d_ptr(new ctkDICOMInserterWorkerPrivate(this)) +ctkDICOMInserterWorker::ctkDICOMInserterWorker(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMInserterWorkerPrivate(this)) { } diff --git a/Libs/DICOM/Core/ctkDICOMInserterWorker.h b/Libs/DICOM/Core/ctkDICOMInserterWorker.h index 29d9736844..9ea845e5fd 100644 --- a/Libs/DICOM/Core/ctkDICOMInserterWorker.h +++ b/Libs/DICOM/Core/ctkDICOMInserterWorker.h @@ -41,7 +41,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMInserterWorker : public ctkAbstractWorker public: typedef ctkAbstractWorker Superclass; - explicit ctkDICOMInserterWorker(); + explicit ctkDICOMInserterWorker(QObject* parent = nullptr); virtual ~ctkDICOMInserterWorker(); /// Execute worker. This method is run by the QThreadPool and is thread safe diff --git a/Libs/DICOM/Core/ctkDICOMJob.cpp b/Libs/DICOM/Core/ctkDICOMJob.cpp index 6bab33a7c0..67f43d7b9c 100644 --- a/Libs/DICOM/Core/ctkDICOMJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMJob.cpp @@ -34,7 +34,8 @@ static ctkLogger logger ("org.commontk.dicom.DICOMJob"); // ctkDICOMJob methods //------------------------------------------------------------------------------ -ctkDICOMJob::ctkDICOMJob() +ctkDICOMJob::ctkDICOMJob(QObject* parent) + : Superclass(parent) { this->DICOMLevel = DICOMLevels::None; } diff --git a/Libs/DICOM/Core/ctkDICOMJob.h b/Libs/DICOM/Core/ctkDICOMJob.h index 25785739ab..30208aeed3 100644 --- a/Libs/DICOM/Core/ctkDICOMJob.h +++ b/Libs/DICOM/Core/ctkDICOMJob.h @@ -49,7 +49,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMJob : public ctkAbstractJob public: typedef ctkAbstractJob Superclass; - explicit ctkDICOMJob(); + explicit ctkDICOMJob(QObject* parent = nullptr); virtual ~ctkDICOMJob(); enum DICOMLevels diff --git a/Libs/DICOM/Core/ctkDICOMQueryJob.cpp b/Libs/DICOM/Core/ctkDICOMQueryJob.cpp index 08340fc833..93b4799575 100644 --- a/Libs/DICOM/Core/ctkDICOMQueryJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMQueryJob.cpp @@ -57,8 +57,8 @@ ctkDICOMQueryJobPrivate::~ctkDICOMQueryJobPrivate() // ctkDICOMQueryJob methods //------------------------------------------------------------------------------ -ctkDICOMQueryJob::ctkDICOMQueryJob() - : d_ptr(new ctkDICOMQueryJobPrivate(this)) +ctkDICOMQueryJob::ctkDICOMQueryJob(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMQueryJobPrivate(this)) { } diff --git a/Libs/DICOM/Core/ctkDICOMQueryJob.h b/Libs/DICOM/Core/ctkDICOMQueryJob.h index c3d5566941..bb651ac953 100644 --- a/Libs/DICOM/Core/ctkDICOMQueryJob.h +++ b/Libs/DICOM/Core/ctkDICOMQueryJob.h @@ -47,7 +47,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMQueryJob : public ctkDICOMJob public: typedef ctkDICOMJob Superclass; - explicit ctkDICOMQueryJob(); + explicit ctkDICOMQueryJob(QObject* parent = nullptr); virtual ~ctkDICOMQueryJob(); ///@{ diff --git a/Libs/DICOM/Core/ctkDICOMQueryWorker.cpp b/Libs/DICOM/Core/ctkDICOMQueryWorker.cpp index 31de0665d6..b266f6b05c 100644 --- a/Libs/DICOM/Core/ctkDICOMQueryWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMQueryWorker.cpp @@ -80,8 +80,8 @@ void ctkDICOMQueryWorkerPrivate::setQueryParameters() // ctkDICOMQueryWorker methods //------------------------------------------------------------------------------ -ctkDICOMQueryWorker::ctkDICOMQueryWorker() - : d_ptr(new ctkDICOMQueryWorkerPrivate(this)) +ctkDICOMQueryWorker::ctkDICOMQueryWorker(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMQueryWorkerPrivate(this)) { } diff --git a/Libs/DICOM/Core/ctkDICOMQueryWorker.h b/Libs/DICOM/Core/ctkDICOMQueryWorker.h index d9edde7121..dd30f84346 100644 --- a/Libs/DICOM/Core/ctkDICOMQueryWorker.h +++ b/Libs/DICOM/Core/ctkDICOMQueryWorker.h @@ -42,7 +42,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMQueryWorker : public ctkAbstractWorker public: typedef ctkAbstractWorker Superclass; - explicit ctkDICOMQueryWorker(); + explicit ctkDICOMQueryWorker(QObject* parent = nullptr); virtual ~ctkDICOMQueryWorker(); /// Execute worker. This method is run by the QThreadPool and is thread safe diff --git a/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp b/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp index 1157e0152f..9cd661b4c1 100644 --- a/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp @@ -56,8 +56,8 @@ ctkDICOMRetrieveJobPrivate::~ctkDICOMRetrieveJobPrivate() // ctkDICOMRetrieveJob methods //------------------------------------------------------------------------------ -ctkDICOMRetrieveJob::ctkDICOMRetrieveJob() - : d_ptr(new ctkDICOMRetrieveJobPrivate(this)) +ctkDICOMRetrieveJob::ctkDICOMRetrieveJob(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMRetrieveJobPrivate(this)) { } diff --git a/Libs/DICOM/Core/ctkDICOMRetrieveJob.h b/Libs/DICOM/Core/ctkDICOMRetrieveJob.h index 661705458c..dcf5ae2227 100644 --- a/Libs/DICOM/Core/ctkDICOMRetrieveJob.h +++ b/Libs/DICOM/Core/ctkDICOMRetrieveJob.h @@ -44,7 +44,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMRetrieveJob : public ctkDICOMJob public: typedef ctkDICOMJob Superclass; - explicit ctkDICOMRetrieveJob(); + explicit ctkDICOMRetrieveJob(QObject* parent = nullptr); virtual ~ctkDICOMRetrieveJob(); ///@{ diff --git a/Libs/DICOM/Core/ctkDICOMRetrieveWorker.cpp b/Libs/DICOM/Core/ctkDICOMRetrieveWorker.cpp index d0bdd92b27..99042f52f7 100644 --- a/Libs/DICOM/Core/ctkDICOMRetrieveWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMRetrieveWorker.cpp @@ -100,8 +100,8 @@ void ctkDICOMRetrieveWorkerPrivate::setRetrieveParameters() // ctkDICOMRetrieveWorker methods //------------------------------------------------------------------------------ -ctkDICOMRetrieveWorker::ctkDICOMRetrieveWorker() - : d_ptr(new ctkDICOMRetrieveWorkerPrivate(this)) +ctkDICOMRetrieveWorker::ctkDICOMRetrieveWorker(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMRetrieveWorkerPrivate(this)) { } diff --git a/Libs/DICOM/Core/ctkDICOMRetrieveWorker.h b/Libs/DICOM/Core/ctkDICOMRetrieveWorker.h index 68ba2ef129..15e3be356a 100644 --- a/Libs/DICOM/Core/ctkDICOMRetrieveWorker.h +++ b/Libs/DICOM/Core/ctkDICOMRetrieveWorker.h @@ -41,7 +41,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMRetrieveWorker : public ctkAbstractWorker public: typedef ctkAbstractWorker Superclass; - explicit ctkDICOMRetrieveWorker(); + explicit ctkDICOMRetrieveWorker(QObject* parent = nullptr); virtual ~ctkDICOMRetrieveWorker(); /// Execute worker. This method is run by the QThreadPool and is thread safe diff --git a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp index a68df8eb03..719a27fed7 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp @@ -49,8 +49,8 @@ ctkDICOMStorageListenerJobPrivate::~ctkDICOMStorageListenerJobPrivate() = defaul // ctkDICOMStorageListenerJob methods //------------------------------------------------------------------------------ -ctkDICOMStorageListenerJob::ctkDICOMStorageListenerJob() - : d_ptr(new ctkDICOMStorageListenerJobPrivate(this)) +ctkDICOMStorageListenerJob::ctkDICOMStorageListenerJob(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMStorageListenerJobPrivate(this)) { this->Persistent = true; } diff --git a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.h b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.h index c880bf26f9..5f27b15b5c 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.h +++ b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.h @@ -47,7 +47,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMStorageListenerJob : public ctkDICOMJob public: typedef ctkDICOMJob Superclass; - explicit ctkDICOMStorageListenerJob(); + explicit ctkDICOMStorageListenerJob(QObject* parent = nullptr); virtual ~ctkDICOMStorageListenerJob(); ///@{ diff --git a/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.cpp b/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.cpp index 939bcf69c5..857e36a23f 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.cpp @@ -92,8 +92,8 @@ void ctkDICOMStorageListenerWorkerPrivate::init() // ctkDICOMStorageListenerWorker methods //------------------------------------------------------------------------------ -ctkDICOMStorageListenerWorker::ctkDICOMStorageListenerWorker() - : d_ptr(new ctkDICOMStorageListenerWorkerPrivate(this)) +ctkDICOMStorageListenerWorker::ctkDICOMStorageListenerWorker(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMStorageListenerWorkerPrivate(this)) { Q_D(ctkDICOMStorageListenerWorker); d->init(); diff --git a/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.h b/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.h index c380d350fc..b094f17b5e 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.h +++ b/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.h @@ -42,7 +42,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMStorageListenerWorker : public ctkAbstractWo public: typedef ctkAbstractWorker Superclass; - explicit ctkDICOMStorageListenerWorker(); + explicit ctkDICOMStorageListenerWorker(QObject* parent = nullptr); virtual ~ctkDICOMStorageListenerWorker(); /// Execute worker. This method is run by the QThreadPool and is thread safe diff --git a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp index 8fac1c2903..55833f5b33 100644 --- a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp @@ -60,8 +60,8 @@ CTK_SET_CPP(ctkDICOMThumbnailGeneratorJob, QColor, setBackgroundColor, Backgroun // ctkDICOMThumbnailGeneratorJob methods //------------------------------------------------------------------------------ -ctkDICOMThumbnailGeneratorJob::ctkDICOMThumbnailGeneratorJob() - : d_ptr(new ctkDICOMThumbnailGeneratorJobPrivate(this)) +ctkDICOMThumbnailGeneratorJob::ctkDICOMThumbnailGeneratorJob(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMThumbnailGeneratorJobPrivate(this)) { } diff --git a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.h b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.h index b99243fa4d..7661b42f49 100644 --- a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.h +++ b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.h @@ -48,7 +48,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMThumbnailGeneratorJob : public ctkDICOMJob public: typedef ctkDICOMJob Superclass; - explicit ctkDICOMThumbnailGeneratorJob(); + explicit ctkDICOMThumbnailGeneratorJob(QObject* parent = nullptr); virtual ~ctkDICOMThumbnailGeneratorJob(); ///@{ diff --git a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp index c087fba81e..c37c2a72ed 100644 --- a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp @@ -49,8 +49,8 @@ ctkDICOMThumbnailGeneratorWorkerPrivate::~ctkDICOMThumbnailGeneratorWorkerPrivat // ctkDICOMThumbnailGeneratorWorker methods //------------------------------------------------------------------------------ -ctkDICOMThumbnailGeneratorWorker::ctkDICOMThumbnailGeneratorWorker() - : d_ptr(new ctkDICOMThumbnailGeneratorWorkerPrivate(this)) +ctkDICOMThumbnailGeneratorWorker::ctkDICOMThumbnailGeneratorWorker(QObject* parent) + : Superclass(parent), d_ptr(new ctkDICOMThumbnailGeneratorWorkerPrivate(this)) { } diff --git a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.h b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.h index a009729fd3..572d9de3be 100644 --- a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.h +++ b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.h @@ -41,7 +41,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMThumbnailGeneratorWorker : public ctkAbstrac public: typedef ctkAbstractWorker Superclass; - explicit ctkDICOMThumbnailGeneratorWorker(); + explicit ctkDICOMThumbnailGeneratorWorker(QObject* parent = nullptr); virtual ~ctkDICOMThumbnailGeneratorWorker(); /// Execute worker. This method is run by the QThreadPool and is thread safe diff --git a/Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMBrowserTest.cpp b/Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMBrowserTest.cpp index 855bbe1c0d..855afe6650 100644 --- a/Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMBrowserTest.cpp +++ b/Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMBrowserTest.cpp @@ -34,6 +34,8 @@ class ctkDICOMBrowserTester: public QObject { Q_OBJECT +public: + explicit ctkDICOMBrowserTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void initTestCase(); diff --git a/Libs/ImageProcessing/ITK/Core/Testing/Cpp/ctkITKErrorLogMessageHandlerWithThreadsTest1.cpp b/Libs/ImageProcessing/ITK/Core/Testing/Cpp/ctkITKErrorLogMessageHandlerWithThreadsTest1.cpp index ca57b14ed5..3c08ed94f0 100644 --- a/Libs/ImageProcessing/ITK/Core/Testing/Cpp/ctkITKErrorLogMessageHandlerWithThreadsTest1.cpp +++ b/Libs/ImageProcessing/ITK/Core/Testing/Cpp/ctkITKErrorLogMessageHandlerWithThreadsTest1.cpp @@ -42,7 +42,7 @@ namespace class LogVTKMessageThread : public LogMessageThread { public: - LogVTKMessageThread(int id, int maxIteration) : LogMessageThread(id, maxIteration){} + LogVTKMessageThread(int id, int maxIteration, QObject* parent = nullptr) : LogMessageThread(id, maxIteration, parent){} virtual void logMessage(const QDateTime& dateTime, int threadId, int counterIdx) { diff --git a/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.cpp b/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.cpp index 5d866cdd92..8e8269585f 100644 --- a/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.cpp +++ b/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.cpp @@ -203,8 +203,8 @@ ctkITKErrorLogMessageHandlerPrivate::~ctkITKErrorLogMessageHandlerPrivate() QString ctkITKErrorLogMessageHandler::HandlerName = QLatin1String("ITK"); //---------------------------------------------------------------------------- -ctkITKErrorLogMessageHandler::ctkITKErrorLogMessageHandler() : - Superclass(), d_ptr(new ctkITKErrorLogMessageHandlerPrivate(*this)) +ctkITKErrorLogMessageHandler::ctkITKErrorLogMessageHandler(QObject* parent) : + Superclass(parent), d_ptr(new ctkITKErrorLogMessageHandlerPrivate(*this)) { } diff --git a/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.h b/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.h index 1d35462b3e..60000a5053 100644 --- a/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.h +++ b/Libs/ImageProcessing/ITK/Core/ctkITKErrorLogMessageHandler.h @@ -39,7 +39,7 @@ class CTK_IMAGEPROCESSING_ITK_CORE_EXPORT ctkITKErrorLogMessageHandler : public: typedef ctkErrorLogAbstractMessageHandler Superclass; - ctkITKErrorLogMessageHandler(); + ctkITKErrorLogMessageHandler(QObject* parent = nullptr); virtual ~ctkITKErrorLogMessageHandler(); static QString HandlerName; diff --git a/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.cpp b/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.cpp index dabb9d438e..0f547b68c5 100644 --- a/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.cpp +++ b/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.cpp @@ -202,8 +202,8 @@ ctkVTKErrorLogMessageHandlerPrivate::~ctkVTKErrorLogMessageHandlerPrivate() QString ctkVTKErrorLogMessageHandler::HandlerName = QLatin1String("VTK"); //---------------------------------------------------------------------------- -ctkVTKErrorLogMessageHandler::ctkVTKErrorLogMessageHandler() : - Superclass(), d_ptr(new ctkVTKErrorLogMessageHandlerPrivate(*this)) +ctkVTKErrorLogMessageHandler::ctkVTKErrorLogMessageHandler(QObject* parent) : + Superclass(parent), d_ptr(new ctkVTKErrorLogMessageHandlerPrivate(*this)) { } diff --git a/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.h b/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.h index 915b7bb5b3..623d1ac2b3 100644 --- a/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.h +++ b/Libs/Visualization/VTK/Core/ctkVTKErrorLogMessageHandler.h @@ -39,7 +39,7 @@ class CTK_VISUALIZATION_VTK_CORE_EXPORT ctkVTKErrorLogMessageHandler : public: typedef ctkErrorLogAbstractMessageHandler Superclass; - ctkVTKErrorLogMessageHandler(); + ctkVTKErrorLogMessageHandler(QObject* parent = nullptr); virtual ~ctkVTKErrorLogMessageHandler(); static QString HandlerName; diff --git a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogMessageHandlerWithThreadsTest1.cpp b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogMessageHandlerWithThreadsTest1.cpp index 984ec64270..0aa8a3b149 100644 --- a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogMessageHandlerWithThreadsTest1.cpp +++ b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKErrorLogMessageHandlerWithThreadsTest1.cpp @@ -42,7 +42,7 @@ namespace class LogVTKMessageThread : public LogMessageThread { public: - LogVTKMessageThread(int id, int maxIteration) : LogMessageThread(id, maxIteration){} + LogVTKMessageThread(int id, int maxIteration, QObject* parent = nullptr) : LogMessageThread(id, maxIteration, parent){} virtual void logMessage(const QDateTime& dateTime, int threadId, int counterIdx) { diff --git a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKPropertyWidgetTest.cpp b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKPropertyWidgetTest.cpp index c2335213f1..2fa0ad3fda 100644 --- a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKPropertyWidgetTest.cpp +++ b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKPropertyWidgetTest.cpp @@ -36,6 +36,8 @@ class ctkVTKPropertyWidgetTester: public QObject { Q_OBJECT +public: + explicit ctkVTKPropertyWidgetTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testGUIEvents(); void testVTKProperty(); diff --git a/Libs/Widgets/Testing/Cpp/ctkConsoleTest.cpp b/Libs/Widgets/Testing/Cpp/ctkConsoleTest.cpp index df5ccabdce..794215ef34 100644 --- a/Libs/Widgets/Testing/Cpp/ctkConsoleTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkConsoleTest.cpp @@ -32,6 +32,8 @@ class ctkConsoleTester: public QObject { Q_OBJECT +public: + explicit ctkConsoleTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testShow(); diff --git a/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetTest.cpp b/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetTest.cpp index c955affdc2..2c35d0e271 100644 --- a/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetTest.cpp @@ -36,6 +36,8 @@ class ctkCoordinatesWidgetTester: public QObject { Q_OBJECT +public: + explicit ctkCoordinatesWidgetTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testDefaults(); diff --git a/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetValueProxyTest.cpp b/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetValueProxyTest.cpp index 4036cda7ea..405a3c7ca7 100644 --- a/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetValueProxyTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetValueProxyTest.cpp @@ -34,7 +34,7 @@ class Spy : public QObject Q_OBJECT public: - explicit Spy() + explicit Spy(QObject* parent = nullptr) : QObject(parent) { AcknowledgedSignals = 0; } @@ -77,6 +77,8 @@ public slots: class ctkCoordinatesWidgetValueProxyTester: public QObject { Q_OBJECT +public: + explicit ctkCoordinatesWidgetValueProxyTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testSetValue(); diff --git a/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderTest.cpp b/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderTest.cpp index eab2e3255f..5f4db4200d 100644 --- a/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderTest.cpp @@ -30,6 +30,8 @@ class ctkDoubleRangeSliderTester: public QObject { Q_OBJECT +public: + explicit ctkDoubleRangeSliderTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testUI(); diff --git a/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderValueProxyTest.cpp b/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderValueProxyTest.cpp index 32e94022e3..f504a265e8 100644 --- a/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderValueProxyTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkDoubleRangeSliderValueProxyTest.cpp @@ -48,7 +48,7 @@ class CustomSpy : public QObject { Q_OBJECT public: - CustomSpy() + explicit CustomSpy(QObject* parent = nullptr) : QObject(parent) { this->AcknowledgedSignals = 0; } @@ -83,6 +83,8 @@ public slots: class ctkDoubleRangeSliderValueProxyTester: public QObject { Q_OBJECT +public: + explicit ctkDoubleRangeSliderValueProxyTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testSetValues(); diff --git a/Libs/Widgets/Testing/Cpp/ctkDoubleSliderTest.cpp b/Libs/Widgets/Testing/Cpp/ctkDoubleSliderTest.cpp index 20aed16517..54e6a95c77 100644 --- a/Libs/Widgets/Testing/Cpp/ctkDoubleSliderTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkDoubleSliderTest.cpp @@ -30,6 +30,8 @@ class ctkDoubleSliderTester: public QObject { Q_OBJECT +public: + explicit ctkDoubleSliderTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testUI(); diff --git a/Libs/Widgets/Testing/Cpp/ctkDoubleSliderValueProxyTest.cpp b/Libs/Widgets/Testing/Cpp/ctkDoubleSliderValueProxyTest.cpp index 33cd48cd56..3c0cb93191 100644 --- a/Libs/Widgets/Testing/Cpp/ctkDoubleSliderValueProxyTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkDoubleSliderValueProxyTest.cpp @@ -49,6 +49,8 @@ void getSpyReport(QSignalSpy& spy, double expectedValue) class ctkDoubleSliderValueProxyTester: public QObject { Q_OBJECT +public: + explicit ctkDoubleSliderValueProxyTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testSetValueProxy(); diff --git a/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxTest.cpp b/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxTest.cpp index e644d3686d..a2a052ee0b 100644 --- a/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxTest.cpp @@ -38,6 +38,8 @@ class ctkDoubleSpinBoxTester: public QObject { Q_OBJECT +public: + explicit ctkDoubleSpinBoxTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testUI(); diff --git a/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxValueProxyTest.cpp b/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxValueProxyTest.cpp index 3221dbdbfd..c7c81eba9a 100644 --- a/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxValueProxyTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxValueProxyTest.cpp @@ -59,6 +59,8 @@ void getSpyReport(QSignalSpy& spy, QString expectedValue) class ctkDoubleSpinBoxValueProxyTester: public QObject { Q_OBJECT +public: + explicit ctkDoubleSpinBoxValueProxyTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testSetValue(); diff --git a/Libs/Widgets/Testing/Cpp/ctkErrorLogFDMessageHandlerWithThreadsTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkErrorLogFDMessageHandlerWithThreadsTest1.cpp index 80394d8d62..540f3379e3 100644 --- a/Libs/Widgets/Testing/Cpp/ctkErrorLogFDMessageHandlerWithThreadsTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkErrorLogFDMessageHandlerWithThreadsTest1.cpp @@ -39,7 +39,7 @@ namespace class LogFDMessageThread : public LogMessageThread { public: - LogFDMessageThread(int id, int maxIteration) : LogMessageThread(id, maxIteration){} + LogFDMessageThread(int id, int maxIteration, QObject* parent = nullptr) : LogMessageThread(id, maxIteration, parent){} virtual void logMessage(const QDateTime& dateTime, int threadId, int counterIdx) { diff --git a/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp b/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp index e60bc329ae..bdfe388603 100644 --- a/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp @@ -194,8 +194,8 @@ QStringList readFile(const QString& filePath) class LogMessageThread : public QThread { public: - LogMessageThread(int id, int maxIteration) : - Id(id), MaxIteration(maxIteration), Counter(0){} + LogMessageThread(int id, int maxIteration, QObject* parent = nullptr) : + QThread(parent), Id(id), MaxIteration(maxIteration), Counter(0){} protected: void run(); diff --git a/Libs/Widgets/Testing/Cpp/ctkErrorLogQtMessageHandlerWithThreadsTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkErrorLogQtMessageHandlerWithThreadsTest1.cpp index ba9d2ac061..a3ae3f4c55 100644 --- a/Libs/Widgets/Testing/Cpp/ctkErrorLogQtMessageHandlerWithThreadsTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkErrorLogQtMessageHandlerWithThreadsTest1.cpp @@ -39,7 +39,7 @@ namespace class LogQtMessageThread : public LogMessageThread { public: - LogQtMessageThread(int id, int maxIteration) : LogMessageThread(id, maxIteration){} + LogQtMessageThread(int id, int maxIteration, QObject* parent = nullptr) : LogMessageThread(id, maxIteration, parent){} virtual void logMessage(const QDateTime& dateTime, int threadId, int counterIdx) { diff --git a/Libs/Widgets/Testing/Cpp/ctkErrorLogStreamMessageHandlerWithThreadsTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkErrorLogStreamMessageHandlerWithThreadsTest1.cpp index 933c79260d..ba88b6469c 100644 --- a/Libs/Widgets/Testing/Cpp/ctkErrorLogStreamMessageHandlerWithThreadsTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkErrorLogStreamMessageHandlerWithThreadsTest1.cpp @@ -39,7 +39,7 @@ namespace class LogStreamMessageThread : public LogMessageThread { public: - LogStreamMessageThread(int id, int maxIteration) : LogMessageThread(id, maxIteration){} + LogStreamMessageThread(int id, int maxIteration, QObject* parent = nullptr) : LogMessageThread(id, maxIteration, parent){} virtual void logMessage(const QDateTime& dateTime, int threadId, int counterIdx) { diff --git a/Libs/Widgets/Testing/Cpp/ctkExampleDerivedWorkflowWidgetStep.cpp b/Libs/Widgets/Testing/Cpp/ctkExampleDerivedWorkflowWidgetStep.cpp index c74cd1c3a4..f6fdfd2f58 100644 --- a/Libs/Widgets/Testing/Cpp/ctkExampleDerivedWorkflowWidgetStep.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkExampleDerivedWorkflowWidgetStep.cpp @@ -68,8 +68,8 @@ ctkExampleDerivedWorkflowWidgetStepPrivate::ctkExampleDerivedWorkflowWidgetStepP // ctkExampleDerivedWorkflowWidgetStep methods //----------------------------------------------------------------------------- -ctkExampleDerivedWorkflowWidgetStep::ctkExampleDerivedWorkflowWidgetStep(const QString& newId) : - Superclass(newId) +ctkExampleDerivedWorkflowWidgetStep::ctkExampleDerivedWorkflowWidgetStep(const QString& newId, QWidget* parent) : + Superclass(newId, parent) , d_ptr(new ctkExampleDerivedWorkflowWidgetStepPrivate) { } diff --git a/Libs/Widgets/Testing/Cpp/ctkExampleDerivedWorkflowWidgetStep.h b/Libs/Widgets/Testing/Cpp/ctkExampleDerivedWorkflowWidgetStep.h index e5937943b3..9db800ff73 100644 --- a/Libs/Widgets/Testing/Cpp/ctkExampleDerivedWorkflowWidgetStep.h +++ b/Libs/Widgets/Testing/Cpp/ctkExampleDerivedWorkflowWidgetStep.h @@ -42,7 +42,7 @@ class ctkExampleDerivedWorkflowWidgetStep : public ctkWorkflowWidgetStep Q_OBJECT public: typedef ctkWorkflowWidgetStep Superclass; - explicit ctkExampleDerivedWorkflowWidgetStep(const QString& newId); + explicit ctkExampleDerivedWorkflowWidgetStep(const QString& newId, QWidget* parent = nullptr); virtual ~ctkExampleDerivedWorkflowWidgetStep(); /// diff --git a/Libs/Widgets/Testing/Cpp/ctkFlatProxyModelTest.cpp b/Libs/Widgets/Testing/Cpp/ctkFlatProxyModelTest.cpp index d4c1ed3aff..92a8a1fb6a 100644 --- a/Libs/Widgets/Testing/Cpp/ctkFlatProxyModelTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkFlatProxyModelTest.cpp @@ -36,6 +36,8 @@ class ctkFlatProxyModelTester: public QObject { Q_OBJECT +public: + explicit ctkFlatProxyModelTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testModel(); void testModel_data(); diff --git a/Libs/Widgets/Testing/Cpp/ctkFontButtonTest.cpp b/Libs/Widgets/Testing/Cpp/ctkFontButtonTest.cpp index bc1876bd15..f42fe942dd 100644 --- a/Libs/Widgets/Testing/Cpp/ctkFontButtonTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkFontButtonTest.cpp @@ -36,6 +36,8 @@ class ctkFontButtonTester: public QObject { Q_OBJECT +public: + explicit ctkFontButtonTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testDefaults(); diff --git a/Libs/Widgets/Testing/Cpp/ctkLanguageComboBoxTest.cpp b/Libs/Widgets/Testing/Cpp/ctkLanguageComboBoxTest.cpp index 62778442ae..8cbfecb917 100644 --- a/Libs/Widgets/Testing/Cpp/ctkLanguageComboBoxTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkLanguageComboBoxTest.cpp @@ -36,6 +36,8 @@ class ctkLanguageComboBoxTester: public QObject { Q_OBJECT +public: + explicit ctkLanguageComboBoxTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testDefaults(); diff --git a/Libs/Widgets/Testing/Cpp/ctkMatrixWidgetTest.cpp b/Libs/Widgets/Testing/Cpp/ctkMatrixWidgetTest.cpp index 0b508b5fa7..ed430b0e10 100644 --- a/Libs/Widgets/Testing/Cpp/ctkMatrixWidgetTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkMatrixWidgetTest.cpp @@ -31,6 +31,8 @@ class ctkMatrixWidgetTester: public QObject { Q_OBJECT +public: + explicit ctkMatrixWidgetTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testUI(); diff --git a/Libs/Widgets/Testing/Cpp/ctkMessageBoxDontShowAgainTest.cpp b/Libs/Widgets/Testing/Cpp/ctkMessageBoxDontShowAgainTest.cpp index 044c4b0cc3..c877991596 100644 --- a/Libs/Widgets/Testing/Cpp/ctkMessageBoxDontShowAgainTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkMessageBoxDontShowAgainTest.cpp @@ -40,6 +40,8 @@ Q_DECLARE_METATYPE(QMessageBox::ButtonRole); class ctkMessageBoxDontShowAgainTester: public QObject { Q_OBJECT +public: + explicit ctkMessageBoxDontShowAgainTester(QObject* parent = nullptr) : QObject(parent) {} void testExecMessageBox(ctkMessageBox& messageBox); private Q_SLOTS: diff --git a/Libs/Widgets/Testing/Cpp/ctkPathListWidgetTest.cpp b/Libs/Widgets/Testing/Cpp/ctkPathListWidgetTest.cpp index 2056f42bfd..bbe826468b 100644 --- a/Libs/Widgets/Testing/Cpp/ctkPathListWidgetTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkPathListWidgetTest.cpp @@ -37,6 +37,9 @@ class ctkPathListWidgetTester : public QObject { Q_OBJECT +public: + explicit ctkPathListWidgetTester(QObject* parent = nullptr) : QObject(parent) {} + private slots: void testDefaults(); diff --git a/Libs/Widgets/Testing/Cpp/ctkPathListWidgetWithButtonsTest.cpp b/Libs/Widgets/Testing/Cpp/ctkPathListWidgetWithButtonsTest.cpp index 4507d5baf5..2c7b226c0b 100644 --- a/Libs/Widgets/Testing/Cpp/ctkPathListWidgetWithButtonsTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkPathListWidgetWithButtonsTest.cpp @@ -41,6 +41,9 @@ class ctkPathListWidgetWithButtonsTester : public QObject { Q_OBJECT +public: + explicit ctkPathListWidgetWithButtonsTester(QObject* parent = nullptr) : QObject(parent) {} + private slots: void testButtons(); diff --git a/Libs/Widgets/Testing/Cpp/ctkPushButtonTest.cpp b/Libs/Widgets/Testing/Cpp/ctkPushButtonTest.cpp index b9def0c4b4..a4a2cd7716 100644 --- a/Libs/Widgets/Testing/Cpp/ctkPushButtonTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkPushButtonTest.cpp @@ -34,6 +34,9 @@ class ctkPushButtonTester : public QObject { Q_OBJECT +public: + explicit ctkPushButtonTester(QObject* parent = nullptr) : QObject(parent) {} + private slots: void testDefaults(); diff --git a/Libs/Widgets/Testing/Cpp/ctkRangeSliderTest.cpp b/Libs/Widgets/Testing/Cpp/ctkRangeSliderTest.cpp index 9c23edf6ae..2f86b56b25 100644 --- a/Libs/Widgets/Testing/Cpp/ctkRangeSliderTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkRangeSliderTest.cpp @@ -33,6 +33,8 @@ class ctkRangeSliderTester: public QObject { Q_OBJECT +public: + explicit ctkRangeSliderTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testGUIEvents(); void testTooltips(); diff --git a/Libs/Widgets/Testing/Cpp/ctkRangeWidgetTest.cpp b/Libs/Widgets/Testing/Cpp/ctkRangeWidgetTest.cpp index 9015f0fea7..641fa28ecd 100644 --- a/Libs/Widgets/Testing/Cpp/ctkRangeWidgetTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkRangeWidgetTest.cpp @@ -33,6 +33,8 @@ class ctkRangeWidgetTester: public QObject { Q_OBJECT +public: + explicit ctkRangeWidgetTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testUI(); diff --git a/Libs/Widgets/Testing/Cpp/ctkRangeWidgetValueProxyTest.cpp b/Libs/Widgets/Testing/Cpp/ctkRangeWidgetValueProxyTest.cpp index f2572f9ea7..b945de9bff 100644 --- a/Libs/Widgets/Testing/Cpp/ctkRangeWidgetValueProxyTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkRangeWidgetValueProxyTest.cpp @@ -46,7 +46,7 @@ class CustomSpy : public QObject { Q_OBJECT public: - CustomSpy() + explicit CustomSpy(QObject* parent = nullptr) : QObject(parent) { this->AcknowledgedSignals = 0; } @@ -86,6 +86,8 @@ public slots: class ctkRangeWidgetValueProxyTester: public QObject { Q_OBJECT +public: + explicit ctkRangeWidgetValueProxyTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testSetValues(); diff --git a/Libs/Widgets/Testing/Cpp/ctkSearchBoxTest.cpp b/Libs/Widgets/Testing/Cpp/ctkSearchBoxTest.cpp index 24c47b63ae..bb423bb2b4 100644 --- a/Libs/Widgets/Testing/Cpp/ctkSearchBoxTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkSearchBoxTest.cpp @@ -31,6 +31,9 @@ class ctkSearchBoxTester : public QObject { Q_OBJECT +public: + explicit ctkSearchBoxTester(QObject* parent = nullptr) : QObject(parent) {} + private slots: void testSignals(); diff --git a/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp b/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp index d145bb4195..350851b590 100644 --- a/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp @@ -38,6 +38,8 @@ class ctkSettingsPanelTester: public QObject { Q_OBJECT +public: + explicit ctkSettingsPanelTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testChangeProperty(); @@ -226,6 +228,7 @@ class ctkSettingsPanelForTest : public ctkSettingsPanel { Q_OBJECT public: + explicit ctkSettingsPanelForTest(QWidget* parent = nullptr) : ctkSettingsPanel(parent) {} QVariant myDefaultPropertyValue(const QString& key) const { return this->defaultPropertyValue(key); diff --git a/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest1.cpp index 5793430903..1eecfcb1d5 100644 --- a/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest1.cpp @@ -44,6 +44,7 @@ class ctkSettingsPanelForTest : public ctkSettingsPanel { Q_OBJECT public: + explicit ctkSettingsPanelForTest(QWidget* parent = nullptr) : ctkSettingsPanel(parent) {} QVariant myDefaultPropertyValue(const QString& key) const { return this->defaultPropertyValue(key); diff --git a/Libs/Widgets/Testing/Cpp/ctkSliderWidgetTest.cpp b/Libs/Widgets/Testing/Cpp/ctkSliderWidgetTest.cpp index bf95aa745b..97de9dae6a 100644 --- a/Libs/Widgets/Testing/Cpp/ctkSliderWidgetTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkSliderWidgetTest.cpp @@ -37,6 +37,8 @@ class ctkSliderWidgetTester: public QObject { Q_OBJECT +public: + explicit ctkSliderWidgetTester(QObject* parent = nullptr) : QObject(parent) {} private slots: void testUI(); diff --git a/Libs/Widgets/Testing/Cpp/ctkSliderWidgetValueProxyTest.cpp b/Libs/Widgets/Testing/Cpp/ctkSliderWidgetValueProxyTest.cpp index 2f9efbaceb..fd3382996e 100644 --- a/Libs/Widgets/Testing/Cpp/ctkSliderWidgetValueProxyTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkSliderWidgetValueProxyTest.cpp @@ -52,6 +52,9 @@ class ctkSliderWidgetValueProxyTester: public QObject { Q_OBJECT +public: + explicit ctkSliderWidgetValueProxyTester(QObject* parent = nullptr) : QObject(parent) {} + private slots: void testSetValue(); void testSetValue_data(); diff --git a/Libs/Widgets/ctkConsole.h b/Libs/Widgets/ctkConsole.h index ea1d335ccc..7c5c0865bc 100644 --- a/Libs/Widgets/ctkConsole.h +++ b/Libs/Widgets/ctkConsole.h @@ -322,6 +322,8 @@ class CTK_WIDGETS_EXPORT ctkConsoleCompleter : public QCompleter { Q_OBJECT public: + explicit ctkConsoleCompleter(QObject* parent = nullptr) : QCompleter(parent) {} + /// Update the completion model given a string. The given string /// is the current console text between the cursor and the start of /// the line. diff --git a/Libs/Widgets/ctkMenuComboBox.cpp b/Libs/Widgets/ctkMenuComboBox.cpp index 08d5ea0c55..90fc65147e 100644 --- a/Libs/Widgets/ctkMenuComboBox.cpp +++ b/Libs/Widgets/ctkMenuComboBox.cpp @@ -36,7 +36,8 @@ #include "ctkMenuComboBox_p.h" // ------------------------------------------------------------------------- -ctkMenuComboBoxInternal::ctkMenuComboBoxInternal() +ctkMenuComboBoxInternal::ctkMenuComboBoxInternal(QWidget* parent) + : Superclass(parent) { } // ------------------------------------------------------------------------- diff --git a/Libs/Widgets/ctkMenuComboBox_p.h b/Libs/Widgets/ctkMenuComboBox_p.h index ccebe72612..76384c763b 100644 --- a/Libs/Widgets/ctkMenuComboBox_p.h +++ b/Libs/Widgets/ctkMenuComboBox_p.h @@ -38,7 +38,7 @@ class ctkMenuComboBoxInternal: public QComboBox /// Superclass typedef typedef QComboBox Superclass; - ctkMenuComboBoxInternal(); + ctkMenuComboBoxInternal(QWidget* parent = nullptr); virtual ~ctkMenuComboBoxInternal(); virtual void showPopup(); diff --git a/Libs/Widgets/ctkPathListButtonsWidget.cpp b/Libs/Widgets/ctkPathListButtonsWidget.cpp index d374a1cee8..9533e1e2bb 100644 --- a/Libs/Widgets/ctkPathListButtonsWidget.cpp +++ b/Libs/Widgets/ctkPathListButtonsWidget.cpp @@ -146,8 +146,9 @@ namespace { { Q_OBJECT public: - FileFilterProxyModel(ctkPathListWidget::PathOptions fileOptions) - : FileOptions(fileOptions) + FileFilterProxyModel(ctkPathListWidget::PathOptions fileOptions, + QObject* parent = nullptr) + : QSortFilterProxyModel(parent), FileOptions(fileOptions) {} protected: @@ -241,8 +242,9 @@ namespace { { Q_OBJECT public: - DirFilterProxyModel(ctkPathListWidget::PathOptions dirOptions) - : DirOptions(dirOptions) + DirFilterProxyModel(ctkPathListWidget::PathOptions dirOptions, + QObject* parent = nullptr) + : QSortFilterProxyModel(parent), DirOptions(dirOptions) {} protected: diff --git a/Libs/Widgets/ctkTestApplication.cpp b/Libs/Widgets/ctkTestApplication.cpp index d6b6229875..6f04d82b88 100644 --- a/Libs/Widgets/ctkTestApplication.cpp +++ b/Libs/Widgets/ctkTestApplication.cpp @@ -52,7 +52,8 @@ int ctkTestApplication::Error = 0; //----------------------------------------------------------------------------- -ctkTestApplication::ctkTestApplication(int _argc, char** _argv) +ctkTestApplication::ctkTestApplication(int _argc, char** _argv, QObject* parent) + : QObject(parent) { qInstallMessageHandler(ctkTestApplication::messageHandler); // CMake generated driver removes argv[0], diff --git a/Libs/Widgets/ctkTestApplication.h b/Libs/Widgets/ctkTestApplication.h index 5b92147185..f7b2890a0b 100644 --- a/Libs/Widgets/ctkTestApplication.h +++ b/Libs/Widgets/ctkTestApplication.h @@ -85,7 +85,7 @@ class CTK_WIDGETS_EXPORT ctkTestApplication : public QObject Q_OBJECT public: - ctkTestApplication(int _argc, char** _argv); + ctkTestApplication(int _argc, char** _argv, QObject* parent = nullptr); ~ctkTestApplication(); /// This function could be overloaded to implement test that required From b59674f7ab8442666af709b270290908bb1229b4 Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Mon, 7 Jul 2025 08:19:50 -0500 Subject: [PATCH 27/32] COMP: Need full definitions not forward declarations --- Libs/Widgets/ctkPathLineEdit.cpp | 148 +++++------------------------ Libs/Widgets/ctkPathLineEdit.h | 98 ++++++++++++++++++- Libs/Widgets/ctkPathListWidget.cpp | 46 --------- Libs/Widgets/ctkPathListWidget.h | 53 ++++++++++- 4 files changed, 169 insertions(+), 176 deletions(-) diff --git a/Libs/Widgets/ctkPathLineEdit.cpp b/Libs/Widgets/ctkPathLineEdit.cpp index f837a9e0a1..3ba1f4118a 100644 --- a/Libs/Widgets/ctkPathLineEdit.cpp +++ b/Libs/Widgets/ctkPathLineEdit.cpp @@ -21,18 +21,13 @@ // Qt includes #include #include -#include -#include -#include #include -#include #include #include #include #include #include #include -#include // CTK includes #include "ctkPathLineEdit.h" @@ -51,74 +46,39 @@ namespace // hide private implementation details { - -//----------------------------------------------------------------------------- -static QFileSystemModel* globalFileSystemModelForFiles() -{ - static QFileSystemModel* m = NULL; - if (!m) + //----------------------------------------------------------------------------- + static QFileSystemModel* globalFileSystemModelForFiles() { - m = new QFileSystemModel(); + static QFileSystemModel* m = NULL; + if (!m) + { + m = new QFileSystemModel(); #if (QT_VERSION >= QT_VERSION_CHECK(5,14,0)) - // Prevent slow browsing of network drives - m->setOption(QFileSystemModel::DontUseCustomDirectoryIcons); + // Prevent slow browsing of network drives + m->setOption(QFileSystemModel::DontUseCustomDirectoryIcons); #endif - m->setRootPath(""); + m->setRootPath(""); + } + return m; } - return m; -} -//----------------------------------------------------------------------------- -static QFileSystemModel* globalFileSystemModelForDirectories() -{ - static QFileSystemModel* m = NULL; - if (!m) + //----------------------------------------------------------------------------- + static QFileSystemModel* globalFileSystemModelForDirectories() { - m = new QFileSystemModel(); + static QFileSystemModel* m = NULL; + if (!m) + { + m = new QFileSystemModel(); #if (QT_VERSION >= QT_VERSION_CHECK(5,14,0)) - // Prevent slow browsing of network drives - m->setOption(QFileSystemModel::DontUseCustomDirectoryIcons); + // Prevent slow browsing of network drives + m->setOption(QFileSystemModel::DontUseCustomDirectoryIcons); #endif - m->setFilter(QDir::AllDirs | QDir::Drives | QDir::NoDotAndDotDot); - m->setRootPath(""); + m->setFilter(QDir::AllDirs | QDir::Drives | QDir::NoDotAndDotDot); + m->setRootPath(""); + } + return m; } - return m; -} - -//----------------------------------------------------------------------------- -/// Completer class with built-in file system model -class ctkFileCompleter : public QCompleter { - Q_OBJECT -public: - ctkFileCompleter(QObject* o, bool showFiles); - - // Ensure auto-completed file always uses forward-slash as separator - QString pathFromIndex(const QModelIndex& idx) const override; - - // Helper function for getting the current model casted to QFileSystemModel - QFileSystemModel* fileSystemModel() const; - - // Adds path to the file system model. - // This also automatically adds all children to the model. - void addPathToIndex(const QString& path); - - // Switch between showing files or folders only - void setShowFiles(bool show); - bool showFiles(); - - // Set name filter. If filters is empty then all folder/file names are displayed - // and the global shared file system models are used. If name filters are set then - // a custom custom file system is created for the widget. - void setNameFilters(const QStringList& filters); - - // Since nameFilters() function may be relevant when more work will be done, - // it is commented to quiet the "-Wunused-function" warning. - // - // QStringList nameFilters() const; - -protected: - QFileSystemModel* CustomFileSystemModel; -}; +} // end of anonymous namespace //----------------------------------------------------------------------------- ctkFileCompleter::ctkFileCompleter(QObject* o, bool showFiles) @@ -167,8 +127,7 @@ bool ctkFileCompleter::showFiles() } //----------------------------------------------------------------------------- -void ctkFileCompleter::setNameFilters(const QStringList& filters) -{ +void ctkFileCompleter::setNameFilters(const QStringList& filters) { if (filters.empty()) { // no name filter set use the global file system models @@ -244,59 +203,6 @@ void ctkFileCompleter::addPathToIndex(const QString& path) } } -} // end of anonymous namespace - -//----------------------------------------------------------------------------- -class ctkPathLineEditPrivate -{ - Q_DECLARE_PUBLIC(ctkPathLineEdit); - Q_GADGET - -protected: - ctkPathLineEdit* const q_ptr; - -public: - ctkPathLineEditPrivate(ctkPathLineEdit& object); - void init(); - QSize recomputeSizeHint(QSize& sh)const; - void updateFilter(); - - void adjustPathLineEditSize(); - - void _q_recomputeCompleterPopupSize(); - - void createPathLineEditWidget(bool useComboBox); - QString settingKey()const; - - QLineEdit* LineEdit; - QComboBox* ComboBox; - QToolButton* BrowseButton; //!< "..." button - - int MinimumContentsLength; - ctkPathLineEdit::SizeAdjustPolicy SizeAdjustPolicy; - - QString Label; //!< used in file dialogs - QStringList NameFilters; //!< Regular expression (in wildcard mode) used to help the user to complete the line - QDir::Filters Filters; //!< Type of path (file, dir...) -#ifdef USE_QFILEDIALOG_OPTIONS - QFileDialog::Options DialogOptions; -#else - ctkPathLineEdit::Options DialogOptions; -#endif - - bool HasValidInput; //!< boolean that stores the old state of valid input - QString SettingKey; - - static QString sCurrentDirectory; //!< Content the last value of the current directory - static int sMaxHistory; //!< Size of the history, if the history is full and a new value is added, the oldest value is dropped - - mutable QSize SizeHint; - mutable QSize MinimumSizeHint; - - ctkFileCompleter* Completer; - QRegularExpressionValidator* Validator; -}; - QString ctkPathLineEditPrivate::sCurrentDirectory = ""; int ctkPathLineEditPrivate::sMaxHistory = 5; @@ -951,7 +857,3 @@ QSize ctkPathLineEdit::sizeHint()const Q_D(const ctkPathLineEdit); return d->recomputeSizeHint(d->SizeHint); } - -#include "moc_ctkPathLineEdit.cpp" - -#include "ctkPathLineEdit.moc" diff --git a/Libs/Widgets/ctkPathLineEdit.h b/Libs/Widgets/ctkPathLineEdit.h index 5b0416dbb4..3e2d4f2ca6 100644 --- a/Libs/Widgets/ctkPathLineEdit.h +++ b/Libs/Widgets/ctkPathLineEdit.h @@ -48,16 +48,22 @@ MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. // Qt includes #include #include -class QComboBox; +#include +#include +#include +#include +#include + +class QRegularExpressionValidator; + // CTK includes #include "ctkWidgetsExport.h" -class ctkPathLineEditPrivate; /// \ingroup Widgets /// \brief Advanced line edit to select a file or directory. /// \sa ctkDirectoryButton, ctkPathListWidget -/// +class ctkPathLineEditPrivate; //Forward declaration needed within file class CTK_WIDGETS_EXPORT ctkPathLineEdit: public QWidget { Q_OBJECT @@ -285,6 +291,92 @@ protected Q_SLOTS: Q_PRIVATE_SLOT(d_ptr, void _q_recomputeCompleterPopupSize()) }; +//----------------------------------------------------------------------------- +/// Completer class with built-in file system model +class ctkFileCompleter : public QCompleter { + Q_OBJECT +public: + ctkFileCompleter(QObject* o, bool showFiles); + + // Ensure auto-completed file always uses forward-slash as separator + QString pathFromIndex(const QModelIndex& idx) const override; + + // Helper function for getting the current model casted to QFileSystemModel + QFileSystemModel* fileSystemModel() const; + + // Adds path to the file system model. + // This also automatically adds all children to the model. + void addPathToIndex(const QString& path); + + // Switch between showing files or folders only + void setShowFiles(bool show); + bool showFiles(); + + // Set name filter. If filters is empty then all folder/file names are displayed + // and the global shared file system models are used. If name filters are set then + // a custom custom file system is created for the widget. + void setNameFilters(const QStringList& filters); + + // Since nameFilters() function may be relevant when more work will be done, + // it is commented to quiet the "-Wunused-function" warning. + // + // QStringList nameFilters() const; + +protected: + QFileSystemModel* CustomFileSystemModel; +}; + +//----------------------------------------------------------------------------- +class ctkPathLineEditPrivate +{ + Q_DECLARE_PUBLIC(ctkPathLineEdit); + +protected: + ctkPathLineEdit* const q_ptr; + +public: + ctkPathLineEditPrivate(ctkPathLineEdit& object); + void init(); + QSize recomputeSizeHint(QSize& sh)const; + void updateFilter(); + + void adjustPathLineEditSize(); + + void _q_recomputeCompleterPopupSize(); + + void createPathLineEditWidget(bool useComboBox); + QString settingKey()const; + + QLineEdit* LineEdit; + QComboBox* ComboBox; + QToolButton* BrowseButton; //!< "..." button + + int MinimumContentsLength; + ctkPathLineEdit::SizeAdjustPolicy SizeAdjustPolicy; + + QString Label; //!< used in file dialogs + QStringList NameFilters; //!< Regular expression (in wildcard mode) used to help the user to complete the line + QDir::Filters Filters; //!< Type of path (file, dir...) +#ifdef USE_QFILEDIALOG_OPTIONS + QFileDialog::Options DialogOptions; +#else + ctkPathLineEdit::Options DialogOptions; +#endif + + bool HasValidInput; //!< boolean that stores the old state of valid input + QString SettingKey; + + static QString sCurrentDirectory; //!< Content the last value of the current directory + static int sMaxHistory; //!< Size of the history, if the history is full and a new value is added, the oldest value is dropped + + mutable QSize SizeHint; + mutable QSize MinimumSizeHint; + + ctkFileCompleter* Completer; + QRegularExpressionValidator* Validator; +}; + + Q_DECLARE_OPERATORS_FOR_FLAGS(ctkPathLineEdit::Filters) #ifndef USE_QFILEDIALOG_OPTIONS Q_DECLARE_OPERATORS_FOR_FLAGS(ctkPathLineEdit::Options); diff --git a/Libs/Widgets/ctkPathListWidget.cpp b/Libs/Widgets/ctkPathListWidget.cpp index 7e037d2219..c726f089ac 100644 --- a/Libs/Widgets/ctkPathListWidget.cpp +++ b/Libs/Widgets/ctkPathListWidget.cpp @@ -31,52 +31,6 @@ // QtGUI includes #include "ctkPathListWidget.h" -// -------------------------------------------------------------------------- -// ctkPathListWidgetPrivate - -//----------------------------------------------------------------------------- -class ctkPathListWidgetPrivate -{ - Q_DECLARE_PUBLIC(ctkPathListWidget) - Q_GADGET - -protected: - ctkPathListWidget* const q_ptr; - -public: - - enum PathType { - Unknown, - File, - Directory - }; - - ctkPathListWidgetPrivate(ctkPathListWidget& object); - - void _q_emitPathClicked(const QModelIndex &index); - void _q_emitPathDoubleClicked(const QModelIndex &index); - void _q_emitPathActivated(const QModelIndex &index); - void _q_emitCurrentPathChanged(const QModelIndex ¤t, const QModelIndex &previous); - - bool addPath(const QString& path); - bool removePath(const QString& path); - - void fileOptionsChanged(); - void directoryOptionsChanged(); - - PathType pathType(const QString& absolutePath) const; - - bool isValidPath(const QString& absoluteFilePath, PathType pathType) const; - bool isValidFile(const QString& absoluteFilePath) const; - bool isValidDir(const QString& absoluteDirPath) const; - - QStandardItemModel PathListModel; - ctkPathListWidget::Mode Mode; - ctkPathListWidget::PathOptions FileOptions; - ctkPathListWidget::PathOptions DirectoryOptions; - QIcon FileIcon; - QIcon DirectoryIcon; -}; // -------------------------------------------------------------------------- // ctkPathListWidgetPrivate methods diff --git a/Libs/Widgets/ctkPathListWidget.h b/Libs/Widgets/ctkPathListWidget.h index 6e580789ca..dd8d3b96db 100644 --- a/Libs/Widgets/ctkPathListWidget.h +++ b/Libs/Widgets/ctkPathListWidget.h @@ -26,14 +26,11 @@ // Qt includes #include +#include // QtGUI includes #include "ctkWidgetsExport.h" -class ctkPathListWidgetPrivate; - -class QStandardItem; - /// \ingroup Widgets /// /// \brief The ctkPathListWidget lists files and/or directories. @@ -44,6 +41,7 @@ class QStandardItem; /// by setting file and directory options. /// \sa ctkPathLineEdit, ctkDirectoryButton /// +class ctkPathListWidgetPrivate; // Forward declaration within this file class CTK_WIDGETS_EXPORT ctkPathListWidget : public QListView { Q_OBJECT @@ -317,6 +315,53 @@ public Q_SLOTS: Q_PRIVATE_SLOT(d_func(), void _q_emitCurrentPathChanged(const QModelIndex &previous, const QModelIndex ¤t)) }; + +// -------------------------------------------------------------------------- +// ctkPathListWidgetPrivate + +//----------------------------------------------------------------------------- +class ctkPathListWidgetPrivate +{ + Q_DECLARE_PUBLIC(ctkPathListWidget) + +protected: + ctkPathListWidget* const q_ptr; + +public: + + enum PathType { + Unknown, + File, + Directory + }; + + ctkPathListWidgetPrivate(ctkPathListWidget& object); + + void _q_emitPathClicked(const QModelIndex &index); + void _q_emitPathDoubleClicked(const QModelIndex &index); + void _q_emitPathActivated(const QModelIndex &index); + void _q_emitCurrentPathChanged(const QModelIndex ¤t, const QModelIndex &previous); + + bool addPath(const QString& path); + bool removePath(const QString& path); + + void fileOptionsChanged(); + void directoryOptionsChanged(); + + PathType pathType(const QString& absolutePath) const; + + bool isValidPath(const QString& absoluteFilePath, PathType pathType) const; + bool isValidFile(const QString& absoluteFilePath) const; + bool isValidDir(const QString& absoluteDirPath) const; + + QStandardItemModel PathListModel; + ctkPathListWidget::Mode Mode; + ctkPathListWidget::PathOptions FileOptions; + ctkPathListWidget::PathOptions DirectoryOptions; + QIcon FileIcon; + QIcon DirectoryIcon; +}; + Q_DECLARE_OPERATORS_FOR_FLAGS(ctkPathListWidget::PathOptions) #endif From 0591b0de49baab1dd8719bfa7d8d2b911fb12f93 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sat, 21 Mar 2026 10:50:05 -0500 Subject: [PATCH 28/32] PERF: Replace non-POD global statics with lazy initialization (clazy non-pod-global-static) Replace file-scope static ctkLogger instances with Q_GLOBAL_STATIC_WITH_ARGS to avoid running constructors at library load time (56 files). Convert static QString/QStringList globals to function-local statics for lazy initialization. Convert ctkDICOMModalities namespace variables from static-in-header to inline functions returning const references, eliminating per-TU copies. Skipped singleton initializer patterns (CTK_SINGLETON_DECLARE_INITIALIZER) and QScopedPointer holders which are deliberate design choices. Co-Authored-By: Claude Opus 4.6 --- .../ctkCmdLineModuleObjectTreeWalker.cpp | 50 ++-- Libs/Core/ctkJobScheduler.cpp | 27 +- .../ctkDICOMAbstractThumbnailGenerator.cpp | 3 +- Libs/DICOM/Core/ctkDICOMDatabase.cpp | 245 ++++++++++-------- .../Core/ctkDICOMDisplayedFieldGenerator.cpp | 3 +- Libs/DICOM/Core/ctkDICOMEchoJob.cpp | 3 +- Libs/DICOM/Core/ctkDICOMEchoWorker.cpp | 5 +- Libs/DICOM/Core/ctkDICOMFilterProxyModel.cpp | 3 +- Libs/DICOM/Core/ctkDICOMIndexer.cpp | 35 +-- Libs/DICOM/Core/ctkDICOMInserterJob.cpp | 3 +- Libs/DICOM/Core/ctkDICOMInserterWorker.cpp | 5 +- Libs/DICOM/Core/ctkDICOMJob.cpp | 3 +- Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp | 3 +- Libs/DICOM/Core/ctkDICOMModalities.h | 210 ++++++++------- Libs/DICOM/Core/ctkDICOMModel.cpp | 13 +- Libs/DICOM/Core/ctkDICOMPatientModel.cpp | 23 +- Libs/DICOM/Core/ctkDICOMQueryJob.cpp | 3 +- Libs/DICOM/Core/ctkDICOMQueryWorker.cpp | 7 +- Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp | 3 +- Libs/DICOM/Core/ctkDICOMRetrieveWorker.cpp | 13 +- Libs/DICOM/Core/ctkDICOMScheduler.cpp | 17 +- Libs/DICOM/Core/ctkDICOMSeriesModel.cpp | 11 +- Libs/DICOM/Core/ctkDICOMServer.cpp | 3 +- .../DICOM/Core/ctkDICOMStorageListenerJob.cpp | 3 +- .../Core/ctkDICOMStorageListenerWorker.cpp | 5 +- Libs/DICOM/Core/ctkDICOMStudyModel.cpp | 9 +- Libs/DICOM/Core/ctkDICOMTester.cpp | 3 +- .../Core/ctkDICOMThumbnailGeneratorJob.cpp | 3 +- .../Core/ctkDICOMThumbnailGeneratorWorker.cpp | 5 +- Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp | 2 +- Libs/DICOM/Widgets/ctkDICOMImage.cpp | 4 +- Libs/DICOM/Widgets/ctkDICOMItemView.cpp | 8 +- Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp | 6 +- .../Widgets/ctkDICOMObjectListWidget.cpp | 2 +- .../Widgets/ctkDICOMQueryRetrieveWidget.cpp | 18 +- Libs/DICOM/Widgets/ctkDICOMQueryWidget.cpp | 2 +- .../Widgets/ctkDICOMServerNodeWidget2.cpp | 24 +- .../Widgets/ctkDICOMThumbnailListWidget.cpp | 6 +- .../Widgets/ctkDICOMVisualBrowserWidget.cpp | 74 +++--- Libs/PluginFramework/ctkBasicLocation.cpp | 18 +- Libs/PluginFramework/ctkLocationManager.cpp | 102 +++++--- .../ctkPluginFrameworkDebug.cpp | 28 +- .../ctkPluginFrameworkLauncher.cpp | 8 +- .../VTK/Core/ctkVTKScalarsToColorsUtils.cpp | 3 +- .../VTK/Widgets/ctkVTKAbstractView.cpp | 6 +- .../VTK/Widgets/ctkVTKChartView.cpp | 2 +- .../Widgets/ctkVTKColorTransferFunction.cpp | 8 +- .../VTK/Widgets/ctkVTKHistogram.cpp | 8 +- .../VTK/Widgets/ctkVTKMagnifyView.cpp | 2 +- .../VTK/Widgets/ctkVTKScalarsToColorsView.cpp | 2 +- .../Widgets/ctkVTKScalarsToColorsWidget.cpp | 2 +- .../VTK/Widgets/ctkVTKThresholdWidget.cpp | 2 +- .../VTK/Widgets/ctkVTKThumbnailView.cpp | 8 +- .../Widgets/ctkVTKVolumePropertyWidget.cpp | 2 +- Libs/Widgets/ctkCrosshairLabel.cpp | 2 +- Libs/Widgets/ctkFlowLayout.cpp | 2 +- Libs/Widgets/ctkMaterialPropertyWidget.cpp | 2 +- Libs/Widgets/ctkModalityWidget.cpp | 14 +- Libs/Widgets/ctkSettingsDialog.cpp | 2 +- Libs/Widgets/ctkSettingsPanel.cpp | 4 +- Libs/Widgets/ctkThumbnailLabel.cpp | 2 +- Libs/Widgets/ctkThumbnailListWidget.cpp | 4 +- 62 files changed, 614 insertions(+), 484 deletions(-) diff --git a/Libs/CommandLineModules/Frontend/QtGui/ctkCmdLineModuleObjectTreeWalker.cpp b/Libs/CommandLineModules/Frontend/QtGui/ctkCmdLineModuleObjectTreeWalker.cpp index 2a42d8e6b9..e9f9608e88 100644 --- a/Libs/CommandLineModules/Frontend/QtGui/ctkCmdLineModuleObjectTreeWalker.cpp +++ b/Libs/CommandLineModules/Frontend/QtGui/ctkCmdLineModuleObjectTreeWalker.cpp @@ -27,10 +27,26 @@ namespace { -static QString PREFIX_EXECUTABLE = "executable:"; -static QString PREFIX_PARAMETER_GROUP = "paramGroup:"; -static QString PREFIX_PARAMETER_CONTAINER = "paramContainer:"; -static QString PREFIX_PARAMETER = "parameter:"; +static const QString& PREFIX_EXECUTABLE() +{ + static const QString s = QStringLiteral("executable:"); + return s; +} +static const QString& PREFIX_PARAMETER_GROUP() +{ + static const QString s = QStringLiteral("paramGroup:"); + return s; +} +static const QString& PREFIX_PARAMETER_CONTAINER() +{ + static const QString s = QStringLiteral("paramContainer:"); + return s; +} +static const QString& PREFIX_PARAMETER() +{ + static const QString s = QStringLiteral("parameter:"); + return s; +} } @@ -93,10 +109,10 @@ QString ctkCmdLineModuleObjectTreeWalker::name() const if (CurrentObject == 0) return QString(); switch(CurrentToken) { - case Executable: return CurrentObject->objectName().mid(PREFIX_EXECUTABLE.size()); - case ParameterGroup: return CurrentObject->objectName().mid(PREFIX_PARAMETER_GROUP.size()); - case ParameterContainer: return CurrentObject->objectName().mid(PREFIX_PARAMETER_CONTAINER.size()); - case Parameter: return CurrentObject->objectName().mid(PREFIX_PARAMETER.size()); + case Executable: return CurrentObject->objectName().mid(PREFIX_EXECUTABLE().size()); + case ParameterGroup: return CurrentObject->objectName().mid(PREFIX_PARAMETER_GROUP().size()); + case ParameterContainer: return CurrentObject->objectName().mid(PREFIX_PARAMETER_CONTAINER().size()); + case Parameter: return CurrentObject->objectName().mid(PREFIX_PARAMETER().size()); default: return QString(); } } @@ -107,7 +123,7 @@ QString ctkCmdLineModuleObjectTreeWalker::label() const if (CurrentObject == 0) return QString(); switch(CurrentToken) { - case Executable: return CurrentObject->objectName().mid(PREFIX_EXECUTABLE.size()); + case Executable: return CurrentObject->objectName().mid(PREFIX_EXECUTABLE().size()); case ParameterGroup: return property("title").toString(); case ParameterContainer: return property("name").toString(); case Parameter: return property("label").toString(); @@ -276,10 +292,10 @@ QVariant ctkCmdLineModuleObjectTreeWalker::prefixedProperty(const QString& propN QString prefixedName; switch(CurrentToken) { - case ctkCmdLineModuleObjectTreeWalker::Executable: prefixedName = PREFIX_EXECUTABLE + propName; break; - case ctkCmdLineModuleObjectTreeWalker::ParameterGroup: prefixedName = PREFIX_PARAMETER_GROUP + propName; break; - case ctkCmdLineModuleObjectTreeWalker::ParameterContainer: prefixedName = PREFIX_PARAMETER_CONTAINER + propName; break; - case ctkCmdLineModuleObjectTreeWalker::Parameter: prefixedName = PREFIX_PARAMETER + propName; break; + case ctkCmdLineModuleObjectTreeWalker::Executable: prefixedName = PREFIX_EXECUTABLE() + propName; break; + case ctkCmdLineModuleObjectTreeWalker::ParameterGroup: prefixedName = PREFIX_PARAMETER_GROUP() + propName; break; + case ctkCmdLineModuleObjectTreeWalker::ParameterContainer: prefixedName = PREFIX_PARAMETER_CONTAINER() + propName; break; + case ctkCmdLineModuleObjectTreeWalker::Parameter: prefixedName = PREFIX_PARAMETER() + propName; break; default: ; } @@ -292,10 +308,10 @@ ctkCmdLineModuleObjectTreeWalker::token(QObject* obj) { if (obj == 0) return ctkCmdLineModuleObjectTreeWalker::NoToken; QString name = obj->objectName(); - if (name.startsWith(PREFIX_EXECUTABLE)) return ctkCmdLineModuleObjectTreeWalker::Executable; - if (name.startsWith(PREFIX_PARAMETER_GROUP)) return ctkCmdLineModuleObjectTreeWalker::ParameterGroup; - if (name.startsWith(PREFIX_PARAMETER_CONTAINER)) return ctkCmdLineModuleObjectTreeWalker::ParameterContainer; - if (name.startsWith(PREFIX_PARAMETER)) return ctkCmdLineModuleObjectTreeWalker::Parameter; + if (name.startsWith(PREFIX_EXECUTABLE())) return ctkCmdLineModuleObjectTreeWalker::Executable; + if (name.startsWith(PREFIX_PARAMETER_GROUP())) return ctkCmdLineModuleObjectTreeWalker::ParameterGroup; + if (name.startsWith(PREFIX_PARAMETER_CONTAINER())) return ctkCmdLineModuleObjectTreeWalker::ParameterContainer; + if (name.startsWith(PREFIX_PARAMETER())) return ctkCmdLineModuleObjectTreeWalker::Parameter; return ctkCmdLineModuleObjectTreeWalker::NoToken; } diff --git a/Libs/Core/ctkJobScheduler.cpp b/Libs/Core/ctkJobScheduler.cpp index ccdc469fc6..f8b83fb0b9 100644 --- a/Libs/Core/ctkJobScheduler.cpp +++ b/Libs/Core/ctkJobScheduler.cpp @@ -35,8 +35,9 @@ #include "ctkJobScheduler.h" #include "ctkAbstractWorker.h" #include "ctkLogger.h" +#include -static ctkLogger logger("org.commontk.core.AbstractScheduler"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.core.AbstractScheduler")) // -------------------------------------------------------------------------- // ctkJobSchedulerPrivate methods @@ -114,7 +115,7 @@ void ctkJobSchedulerPrivate::queueJobsInThreadPool() return; } - logger.debug(QString("ctkDICOMScheduler: creating worker for job %1 in thread %2.\n") + logger->debug(QString("ctkDICOMScheduler: creating worker for job %1 in thread %2.\n") .arg(job->jobUID()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); @@ -143,14 +144,14 @@ bool ctkJobSchedulerPrivate::insertJob(QSharedPointer job) if (this->FreezeJobsScheduling) { - logger.debug(QString("ctkJobScheduler: job object %1 of type %2 in thread %3 " + logger->debug(QString("ctkJobScheduler: job object %1 of type %2 in thread %3 " "not added to the job list since jobs are being stopped.\n") .arg(job->jobUID(), job->className()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); return false; } - logger.debug(QString("ctkJobScheduler: creating job object %1 of type %2 in thread %3.\n") + logger->debug(QString("ctkJobScheduler: creating job object %1 of type %2 in thread %3.\n") .arg(job->jobUID(), job->className()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); @@ -185,7 +186,7 @@ bool ctkJobSchedulerPrivate::insertJob(QSharedPointer job) emit q->jobInitialized(job->toVariant()); - logger.debug(QString("ctkDICOMScheduler: creating worker for job %1 in thread %2.\n") + logger->debug(QString("ctkDICOMScheduler: creating worker for job %1 in thread %2.\n") .arg(job->jobUID()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); @@ -203,7 +204,7 @@ bool ctkJobSchedulerPrivate::insertJob(QSharedPointer job) return false; } - logger.debug(QString("ctkDICOMScheduler: creating worker for job %1 in thread %2.\n") + logger->debug(QString("ctkDICOMScheduler: creating worker for job %1 in thread %2.\n") .arg(job->jobUID()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); @@ -223,7 +224,7 @@ bool ctkJobSchedulerPrivate::insertJob(QSharedPointer job) //------------------------------------------------------------------------------ bool ctkJobSchedulerPrivate::cleanJob(const QString &jobUID) { - logger.debug(QString("ctkJobScheduler: deleting job object %1 in thread %2.\n") + logger->debug(QString("ctkJobScheduler: deleting job object %1 in thread %2.\n") .arg(jobUID, QString::number(reinterpret_cast(QThread::currentThreadId()), 16))); { @@ -273,7 +274,7 @@ void ctkJobSchedulerPrivate::cleanJobs(const QStringList &jobUIDs) //------------------------------------------------------------------------------ bool ctkJobSchedulerPrivate::removeJob(const QString& jobUID) { - logger.debug(QString("ctkJobScheduler: deleting job object %1 in thread %2.\n") + logger->debug(QString("ctkJobScheduler: deleting job object %1 in thread %2.\n") .arg(jobUID, QString::number(reinterpret_cast(QThread::currentThreadId()), 16))); { @@ -806,7 +807,7 @@ void ctkJobScheduler::onJobStarted(ctkAbstractJob* job) return; } - logger.debug(job->loggerReport(tr("started"))); + logger->debug(job->loggerReport(tr("started"))); d->BatchedJobsStarted.append(job->toVariant()); if (!d->ThrottleTimer->isActive()) @@ -824,7 +825,7 @@ void ctkJobScheduler::onJobUserStopped(ctkAbstractJob* job) return; } - logger.debug(job->loggerReport(tr("user stopped"))); + logger->debug(job->loggerReport(tr("user stopped"))); QString jobUID = job->jobUID(); this->deleteWorker(jobUID); @@ -853,7 +854,7 @@ void ctkJobScheduler::onJobFinished(ctkAbstractJob* job) return; } - logger.debug(job->loggerReport(tr("finished"))); + logger->debug(job->loggerReport(tr("finished"))); QString jobUID = job->jobUID(); this->deleteWorker(jobUID); @@ -882,7 +883,7 @@ void ctkJobScheduler::onJobAttemptFailed(ctkAbstractJob* job) return; } - logger.debug(job->loggerReport(tr("attempt failed"))); + logger->debug(job->loggerReport(tr("attempt failed"))); QString jobUID = job->jobUID(); this->deleteWorker(jobUID); @@ -911,7 +912,7 @@ void ctkJobScheduler::onJobFailed(ctkAbstractJob* job) return; } - logger.debug(job->loggerReport(tr("failed"))); + logger->debug(job->loggerReport(tr("failed"))); QString jobUID = job->jobUID(); this->deleteWorker(jobUID); diff --git a/Libs/DICOM/Core/ctkDICOMAbstractThumbnailGenerator.cpp b/Libs/DICOM/Core/ctkDICOMAbstractThumbnailGenerator.cpp index 9fa9764c29..6cf912dbd2 100644 --- a/Libs/DICOM/Core/ctkDICOMAbstractThumbnailGenerator.cpp +++ b/Libs/DICOM/Core/ctkDICOMAbstractThumbnailGenerator.cpp @@ -22,8 +22,9 @@ // ctkDICOMCore includes #include "ctkDICOMAbstractThumbnailGenerator.h" #include "ctkLogger.h" +#include -static ctkLogger logger ( "org.commontk.dicom.DICOMAbstractThumbnailGenerator" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMAbstractThumbnailGenerator")) struct Node; //------------------------------------------------------------------------------ diff --git a/Libs/DICOM/Core/ctkDICOMDatabase.cpp b/Libs/DICOM/Core/ctkDICOMDatabase.cpp index da339b8d9f..025312d830 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase.cpp +++ b/Libs/DICOM/Core/ctkDICOMDatabase.cpp @@ -39,6 +39,7 @@ #include "ctkDICOMJobResponseSet.h" #include "ctkLogger.h" +#include #include "ctkUtils.h" // DCMTK includes @@ -58,17 +59,33 @@ #include /* for DcmRLEEncoderRegistration */ //------------------------------------------------------------------------------ -static ctkLogger logger("org.commontk.dicom.DICOMDatabase" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMDatabase")) //------------------------------------------------------------------------------ /// Flag for tag cache to avoid repeated searches for tags that do no exist -static QString TagNotInInstance("__TAG_NOT_IN_INSTANCE__"); +static const QString& TagNotInInstance() +{ + static const QString s = QStringLiteral("__TAG_NOT_IN_INSTANCE__"); + return s; +} /// Flag for tag cache indicating that the value really is the empty string -static QString ValueIsEmptyString("__VALUE_IS_EMPTY_STRING__"); +static const QString& ValueIsEmptyString() +{ + static const QString s = QStringLiteral("__VALUE_IS_EMPTY_STRING__"); + return s; +} /// Tag exists in the instance and non-empty but its value is not stored (e.g., because it is too long) -static QString ValueIsNotStored("__VALUE_IS_NOT_STORED__"); +static const QString& ValueIsNotStored() +{ + static const QString s = QStringLiteral("__VALUE_IS_NOT_STORED__"); + return s; +} /// Separator character for table and field names to be used in display rules manager -static QString TableFieldSeparator(":"); +static const QString& TableFieldSeparator() +{ + static const QString s = QStringLiteral(":"); + return s; +} //------------------------------------------------------------------------------ // ctkDICOMDatabasePrivate methods @@ -137,7 +154,7 @@ int ctkDICOMDatabasePrivate::rowCount(const QString& tableName) } else { - logger.error("SQLITE ERROR: " + numberOfItemsQuery.lastError().driverText()); + logger->error("SQLITE ERROR: " + numberOfItemsQuery.lastError().driverText()); } return numberOfItems; } @@ -166,7 +183,7 @@ bool ctkDICOMDatabasePrivate::loggedExec(QSqlQuery& query, const QString& queryS { QString sqlError = query.lastError().text(); QString lastQuery = query.lastQuery(); - logger.error(QString("SQL failed: \n%1 \nError: \n%2") + logger->error(QString("SQL failed: \n%1 \nError: \n%2") .arg(lastQuery, sqlError)); } @@ -182,7 +199,7 @@ bool ctkDICOMDatabasePrivate::loggedExecBatch(QSqlQuery& query) { QString sqlError = query.lastError().text(); QString lastQuery = query.lastQuery(); - logger.error(QString("SQL failed: \n%1 \nError: \n%2") + logger->error(QString("SQL failed: \n%1 \nError: \n%2") .arg(lastQuery, sqlError)); } return (success); @@ -223,7 +240,7 @@ QString ctkDICOMDatabasePrivate::readValueFromFile(const QString& fileName, cons dataset.InitializeFromFile(fileName); if (!dataset.IsInitialized()) { - logger.error("File " + fileName + " could not be initialized."); + logger->error("File " + fileName + " could not be initialized."); return ""; } @@ -236,11 +253,11 @@ QString ctkDICOMDatabasePrivate::readValueFromFile(const QString& fileName, cons { if (dataset.TagExists(tagKey)) { - value = ValueIsNotStored; + value = ValueIsNotStored(); } else { - value = TagNotInInstance; + value = TagNotInInstance(); } } else @@ -332,8 +349,8 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertPatient( { // patient found dbPatientID = checkPatientExistsQuery.value(checkPatientExistsQuery.record().indexOf("UID")).toInt(); - logger.debug("Found patient in the database as UID: " + QString::number(dbPatientID)); - logger.debug("New patient ID cache item: " + compositeID + "->" + QString::number(dbPatientID)); + logger->debug("Found patient in the database as UID: " + QString::number(dbPatientID)); + logger->debug("New patient ID cache item: " + compositeID + "->" + QString::number(dbPatientID)); } else { @@ -363,7 +380,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertPatient( } dbPatientID = insertPatientStatement.lastInsertId().toInt(); - logger.debug("New patient inserted: database item ID = " + QString().setNum(dbPatientID)); + logger->debug("New patient inserted: database item ID = " + QString().setNum(dbPatientID)); } this->InsertedPatientsCompositeIDCache[compositeID] = dbPatientID; @@ -385,8 +402,8 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertConnectionName( if (connectionNameFound) { // connection name found - logger.debug("Found connection name in the patient database as UID: " + QString::number(dbPatientID)); - logger.debug("New connection name ID cache item: " + QString::number(dbPatientID) + "->" + connectionName); + logger->debug("Found connection name in the patient database as UID: " + QString::number(dbPatientID)); + logger->debug("New connection name ID cache item: " + QString::number(dbPatientID) + "->" + connectionName); } else if (!denyList.contains(connectionName)) { @@ -403,7 +420,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertConnectionName( { return ctkDICOMDatabase::InsertResult::Failed; } - logger.debug("New connection name inserted: patient database item ID = " + QString().setNum(dbPatientID)); + logger->debug("New connection name inserted: patient database item ID = " + QString().setNum(dbPatientID)); } if (this->InsertedConnectionsIDCache.contains(dbPatientID)) @@ -454,7 +471,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertStudy( } if (!checkStudyExistsQuery.next()) { - logger.debug("Need to insert new study: " + studyInstanceUID); + logger->debug("Need to insert new study: " + studyInstanceUID); QString studyID(dataset.GetElementAsString(DCM_StudyID) ); QString studyDate(dataset.GetElementAsString(DCM_StudyDate) ); @@ -485,7 +502,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertStudy( insertStudyStatement.addBindValue(QDateTime::currentDateTime()); if (!insertStudyStatement.exec()) { - logger.error("Error executing statement: " + insertStudyStatement.lastQuery() + " Error: " + insertStudyStatement.lastError().text() ); + logger->error("Error executing statement: " + insertStudyStatement.lastQuery() + " Error: " + insertStudyStatement.lastError().text() ); return ctkDICOMDatabase::InsertResult::Failed; } else @@ -497,7 +514,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertStudy( } else { - logger.debug("Used existing study: " + studyInstanceUID); + logger->debug("Used existing study: " + studyInstanceUID); this->InsertedStudyUIDsCache.insert(studyInstanceUID); return ctkDICOMDatabase::InsertResult::NotInserted; } @@ -511,14 +528,14 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertSeries( QSqlQuery checkSeriesExistsQuery(this->Database); checkSeriesExistsQuery.prepare( "SELECT * FROM Series WHERE SeriesInstanceUID = ?" ); checkSeriesExistsQuery.bindValue( 0, seriesInstanceUID ); - logger.debug("Statement: " + checkSeriesExistsQuery.lastQuery() ); + logger->debug("Statement: " + checkSeriesExistsQuery.lastQuery() ); if (!loggedExec(checkSeriesExistsQuery)) { return ctkDICOMDatabase::InsertResult::Failed; } if (!checkSeriesExistsQuery.next()) { - logger.debug("Need to insert new series: " + seriesInstanceUID); + logger->debug("Need to insert new series: " + seriesInstanceUID); QString seriesDate(dataset.GetElementAsString(DCM_SeriesDate) ); QString seriesTime(dataset.GetElementAsString(DCM_SeriesTime) ); @@ -555,7 +572,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertSeries( insertSeriesStatement.addBindValue(QDateTime::currentDateTime()); if (!insertSeriesStatement.exec()) { - logger.error("Error executing statement: " + logger->error("Error executing statement: " + insertSeriesStatement.lastQuery() + " Error: " + insertSeriesStatement.lastError().text()); return ctkDICOMDatabase::InsertResult::Failed; @@ -569,7 +586,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertSeries( } else { - logger.debug("Used existing series: " + seriesInstanceUID); + logger->debug("Used existing series: " + seriesInstanceUID); this->InsertedSeriesUIDsCache.insert(seriesInstanceUID); return ctkDICOMDatabase::InsertResult::NotInserted; } @@ -624,11 +641,11 @@ void ctkDICOMDatabasePrivate::precacheTags(const ctkDICOMItem& dataset, const QS { if (dataset.TagExists(tagKey)) { - value = ValueIsNotStored; + value = ValueIsNotStored(); } else { - value = TagNotInInstance; + value = TagNotInInstance(); } } else @@ -653,7 +670,7 @@ bool ctkDICOMDatabasePrivate::removeImage(const QString& sopInstanceUID) bool success = deleteFile.exec(); if (!success) { - logger.error("SQLITE ERROR deleting old image row: " + deleteFile.lastError().driverText()); + logger->error("SQLITE ERROR deleting old image row: " + deleteFile.lastError().driverText()); } return success; } @@ -711,10 +728,10 @@ bool ctkDICOMDatabasePrivate::storeDatasetFile(const ctkDICOMItem& dataset, cons if (originalFilePath.isEmpty()) { - logger.debug("Saving file: " + storedFilePath); + logger->debug("Saving file: " + storedFilePath); if (!dataset.SaveToFile(storedFilePath)) { - logger.error("Error saving file: " + storedFilePath); + logger->error("Error saving file: " + storedFilePath); return false; } } @@ -735,7 +752,7 @@ bool ctkDICOMDatabasePrivate::storeDatasetFile(const ctkDICOMItem& dataset, cons copySuccess = QFile::copy(originalFilePath, storedFilePath); if (!copySuccess) { - logger.error("Failed to copy file from: " + originalFilePath + " to: " + storedFilePath); + logger->error("Failed to copy file from: " + originalFilePath + " to: " + storedFilePath); return false; } } @@ -749,7 +766,7 @@ bool ctkDICOMDatabasePrivate::storeDatasetFile(const ctkDICOMItem& dataset, cons if (!sourceFile.open(QIODevice::ReadOnly) || !destFile.open(QIODevice::WriteOnly)) { - logger.error("Failed to copy file from: " + originalFilePath + " to: " + storedFilePath); + logger->error("Failed to copy file from: " + originalFilePath + " to: " + storedFilePath); return false; } @@ -764,7 +781,7 @@ bool ctkDICOMDatabasePrivate::storeDatasetFile(const ctkDICOMItem& dataset, cons delete[] buffer; sourceFile.close(); destFile.close(); - logger.error("Failed to write to: " + storedFilePath); + logger->error("Failed to write to: " + storedFilePath); return false; } } @@ -775,7 +792,7 @@ bool ctkDICOMDatabasePrivate::storeDatasetFile(const ctkDICOMItem& dataset, cons if (bytesRead < 0) { - logger.error("Failed to read from: " + originalFilePath); + logger->error("Failed to read from: " + originalFilePath); return false; } @@ -784,7 +801,7 @@ bool ctkDICOMDatabasePrivate::storeDatasetFile(const ctkDICOMItem& dataset, cons if (copySuccess) { - logger.debug("Copy file from: " + originalFilePath + " to: " + storedFilePath); + logger->debug("Copy file from: " + originalFilePath + " to: " + storedFilePath); } } @@ -805,7 +822,7 @@ bool ctkDICOMDatabasePrivate::indexingStatusForFile(const QString& filePath, con bool success = fileExistsQuery.exec(); if (!success) { - logger.error("SQLITE ERROR: " + fileExistsQuery.lastError().driverText()); + logger->error("SQLITE ERROR: " + fileExistsQuery.lastError().driverText()); return false; } bool foundSOPInstanceUID = fileExistsQuery.next(); @@ -862,7 +879,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertPatientStudySeries } else { - logger.debug("Insert new patient if not already in database: " + patientID + " " + patientsName); + logger->debug("Insert new patient if not already in database: " + patientID + " " + patientsName); ctkDICOMDatabase::InsertResult patientMetadataInsertOperationResult = this->insertPatient(dataset, patientID, patientsName, dbPatientID); if (patientMetadataInsertOperationResult == ctkDICOMDatabase::InsertResult::Inserted) @@ -885,7 +902,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertPatientStudySeries } if (connections.count() == 0 || !connections.contains(connectionName)) { - logger.debug("Insert new connection name if not already in database: " + connectionName); + logger->debug("Insert new connection name if not already in database: " + connectionName); ctkDICOMDatabase::InsertResult connectionMetadataInsertOperationResult = this->insertConnectionName(dbPatientID, connectionName); if (connectionMetadataInsertOperationResult == ctkDICOMDatabase::InsertResult::Inserted) @@ -899,7 +916,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertPatientStudySeries } } - logger.debug("Going to insert this instance with dbPatientID: " + QString::number(dbPatientID)); + logger->debug("Going to insert this instance with dbPatientID: " + QString::number(dbPatientID)); // Insert new study if needed QString studyInstanceUID(dataset.GetElementAsString(DCM_StudyInstanceUID)); @@ -909,7 +926,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertPatientStudySeries this->insertStudy(dataset, dbPatientID); if (studyMetadataInsertOperationResult == ctkDICOMDatabase::InsertResult::Inserted) { - logger.debug("Study Added"); + logger->debug("Study Added"); databaseWasChanged = true; // let users of this class track when things happen emit q->studyAdded(studyInstanceUID); @@ -927,7 +944,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertPatientStudySeries this->insertSeries(dataset, studyInstanceUID); if (seriesMetadataInsertOperationResult == ctkDICOMDatabase::InsertResult::Inserted) { - logger.debug("Series Added"); + logger->debug("Series Added"); databaseWasChanged = true; emit q->seriesAdded(seriesInstanceUID); } @@ -960,7 +977,7 @@ bool ctkDICOMDatabasePrivate::uidsForDataSet(QString& patientsName, QString& pat { // Use study instance uid as patient id if patient id is empty - can happen on anonymized datasets // see: http://www.na-mic.org/Bug/view.php?id=2040 - logger.warn(QString("Patient ID is empty, using studyInstanceUID (%1) as patient ID").arg(studyInstanceUID)); + logger->warn(QString("Patient ID is empty, using studyInstanceUID (%1) as patient ID").arg(studyInstanceUID)); patientID = studyInstanceUID; } if (patientsName.isEmpty() && !patientID.isEmpty()) @@ -972,7 +989,7 @@ bool ctkDICOMDatabasePrivate::uidsForDataSet(QString& patientsName, QString& pat // We accept the dataset without seriesInstanceUID, as query/retrieve result may not contain it if (patientsName.isEmpty() || studyInstanceUID.isEmpty() || patientID.isEmpty()) { - logger.error("Required information (patient name, patient ID, study instance UID) is missing from dataset"); + logger->error("Required information (patient name, patient ID, study instance UID) is missing from dataset"); return false; } // Valid data set @@ -1005,13 +1022,13 @@ void ctkDICOMDatabasePrivate::insert(const ctkDICOMItem& dataset, const QString& { if (datasetUpToDate) { - logger.debug("File " + databaseFilename + " already added"); + logger->debug("File " + databaseFilename + " already added"); return; } // File is updated, delete record and re-index if (!this->removeImage(sopInstanceUID)) { - logger.debug("File " + filePath + " cannot be added, failed to update existing values in the database"); + logger->debug("File " + filePath + " cannot be added, failed to update existing values in the database"); return; } } @@ -1030,7 +1047,7 @@ void ctkDICOMDatabasePrivate::insert(const ctkDICOMItem& dataset, const QString& { if (!this->storeDatasetFile(dataset, filePath, studyInstanceUID, seriesInstanceUID, sopInstanceUID, storedFilePath)) { - logger.error("Error saving file: " + filePath); + logger->error("Error saving file: " + filePath); return; } } @@ -1077,7 +1094,7 @@ void ctkDICOMDatabasePrivate::insert(const ctkDICOMItem& dataset, const QString& if (!insertImageStatement.exec()) { - logger.error("Error executing statement: " + logger->error("Error executing statement: " + insertImageStatement.lastQuery() + " Error: " + insertImageStatement.lastError().text()); } @@ -1123,12 +1140,12 @@ QString ctkDICOMDatabasePrivate::getDisplayPatientFieldsKey(const QString& patie displayPatientsQuery.bindValue(":patientsName", patientsName); if (!displayPatientsQuery.exec()) { - logger.error("SQLITE ERROR: " + displayPatientsQuery.lastError().driverText()); + logger->error("SQLITE ERROR: " + displayPatientsQuery.lastError().driverText()); return QString(); } if (displayPatientsQuery.size() > 1) { - logger.warn("Multiple patients found with PatientsName=" + patientsName + " and PatientID=" + patientID); + logger->warn("Multiple patients found with PatientsName=" + patientsName + " and PatientID=" + patientID); } if (displayPatientsQuery.next()) { @@ -1142,7 +1159,7 @@ QString ctkDICOMDatabasePrivate::getDisplayPatientFieldsKey(const QString& patie return compositeID; } - logger.error("Failed to find patient with PatientsName=" + patientsName + " and PatientID=" + patientID); + logger->error("Failed to find patient with PatientsName=" + patientsName + " and PatientID=" + patientID); return QString(); } @@ -1164,12 +1181,12 @@ QString ctkDICOMDatabasePrivate::getDisplayStudyFieldsKey(QString studyInstanceU displayStudiesQuery.bindValue(":studyInstanceUID", studyInstanceUID); if (!displayStudiesQuery.exec()) { - logger.error("SQLITE ERROR: " + displayStudiesQuery.lastError().driverText()); + logger->error("SQLITE ERROR: " + displayStudiesQuery.lastError().driverText()); return QString(); } if (displayStudiesQuery.size() > 1) { - logger.warn("Multiple studies found with StudyInstanceUID=" + studyInstanceUID); + logger->warn("Multiple studies found with StudyInstanceUID=" + studyInstanceUID); } if (displayStudiesQuery.next()) { @@ -1183,7 +1200,7 @@ QString ctkDICOMDatabasePrivate::getDisplayStudyFieldsKey(QString studyInstanceU return studyInstanceUID; } - logger.error("Failed to find study with StudyInstanceUID=" + studyInstanceUID); + logger->error("Failed to find study with StudyInstanceUID=" + studyInstanceUID); return QString(); } @@ -1205,12 +1222,12 @@ QString ctkDICOMDatabasePrivate::getDisplaySeriesFieldsKey(QString seriesInstanc displaySeriesQuery.bindValue(":seriesInstanceUID", seriesInstanceUID); if (!displaySeriesQuery.exec()) { - logger.error("SQLITE ERROR: " + displaySeriesQuery.lastError().driverText()); + logger->error("SQLITE ERROR: " + displaySeriesQuery.lastError().driverText()); return QString(); } if (displaySeriesQuery.size() > 1) { - logger.warn("Multiple series found with SeriesInstanceUID=" + seriesInstanceUID); + logger->warn("Multiple series found with SeriesInstanceUID=" + seriesInstanceUID); } if (displaySeriesQuery.next()) { @@ -1224,7 +1241,7 @@ QString ctkDICOMDatabasePrivate::getDisplaySeriesFieldsKey(QString seriesInstanc return seriesInstanceUID; } - logger.error("in getDisplaySeriesFieldsKey: Failed to find series with SeriesInstanceUID=" + seriesInstanceUID); + logger->error("in getDisplaySeriesFieldsKey: Failed to find series with SeriesInstanceUID=" + seriesInstanceUID); return QString(); } @@ -1248,7 +1265,7 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMap currentPatient = it.value(); if (currentPatient["PatientID"].isEmpty() || currentPatient["PatientsName"].isEmpty()) { - logger.error("Unable to locate the patient due to missing values for PatientsName and/or PatientID. " + logger->error("Unable to locate the patient due to missing values for PatientsName and/or PatientID. " "If this error recurs, please manually remove the patient from the database, ensuring to" " address the missing PatientsName/PatientID."); continue; @@ -1260,7 +1277,7 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMaperror("SQLITE ERROR: " + displayPatientsQuery.lastError().driverText()); return false; } if (displayPatientsQuery.next()) @@ -1301,7 +1318,7 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMaperror("Failed to find patient with PatientsName=" + currentPatient["PatientsName"] + " and PatientID=" + currentPatient["PatientID"]); continue; } } // For each patient in displayedFieldsVectorPatient @@ -1320,7 +1337,7 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMaperror("SQLITE ERROR: " + displayStudiesQuery.lastError().driverText()); return false; } if (displayStudiesQuery.next()) @@ -1360,7 +1377,7 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMaperror("SQLITE ERROR: " + displaySeriesQuery.lastError().driverText()); return false; } if (displaySeriesQuery.next()) @@ -1411,7 +1428,7 @@ bool ctkDICOMDatabasePrivate::applyDisplayedFieldsChanges( QMapwarn(QString("SEG thumbnail generation is not available")); return false; } else @@ -2614,7 +2631,7 @@ QString ctkDICOMDatabase::instanceValue(QString sopInstanceUID, QString tag) tag = tag.toUpper(); // Read from cache, if available QString value = this->cachedTag(sopInstanceUID, tag); - if (value == TagNotInInstance || value == ValueIsEmptyString || value == ValueIsNotStored) + if (value == TagNotInInstance() || value == ValueIsEmptyString() || value == ValueIsNotStored()) { return ""; } @@ -2671,7 +2688,7 @@ QString ctkDICOMDatabase::fileValue(const QString fileName, QString tag) // The instance is available in the database, look for the value tag = tag.toUpper(); QString value = this->cachedTag(sopInstanceUID, tag); - if (value == TagNotInInstance || value == ValueIsEmptyString || value == ValueIsNotStored) + if (value == TagNotInInstance() || value == ValueIsEmptyString() || value == ValueIsNotStored()) { return ""; } @@ -2762,9 +2779,9 @@ QMap ctkDICOMDatabase::instanceValues(const QStringList& sopIn // Only include non-empty values that are not special markers if (!value.isEmpty() && - value != TagNotInInstance && - value != ValueIsEmptyString && - value != ValueIsNotStored) + value != TagNotInInstance() && + value != ValueIsEmptyString() && + value != ValueIsNotStored()) { result[sopInstanceUID] = value; } @@ -2780,11 +2797,11 @@ bool ctkDICOMDatabase::instanceValueExists(const QString sopInstanceUID, const Q Q_D(ctkDICOMDatabase); QString upperTag = tag.toUpper(); QString value = this->cachedTag(sopInstanceUID, upperTag); - if (value == TagNotInInstance || value == ValueIsEmptyString) + if (value == TagNotInInstance() || value == ValueIsEmptyString()) { return false; } - if (value == ValueIsNotStored || !value.isEmpty()) + if (value == ValueIsNotStored() || !value.isEmpty()) { return true; } @@ -2796,7 +2813,7 @@ bool ctkDICOMDatabase::instanceValueExists(const QString sopInstanceUID, const Q return false; } value = d->readValueFromFile(filePath, sopInstanceUID, upperTag); - return (value != TagNotInInstance && value != ValueIsEmptyString); + return (value != TagNotInInstance() && value != ValueIsEmptyString()); } //------------------------------------------------------------------------------ @@ -2820,18 +2837,18 @@ bool ctkDICOMDatabase::fileValueExists(const QString fileName, QString tag) QString sopInstanceUID = this->instanceForFile(fileName); QString value = this->cachedTag(sopInstanceUID, tag); - if (value == TagNotInInstance || value == ValueIsEmptyString) + if (value == TagNotInInstance() || value == ValueIsEmptyString()) { return false; } - if (value == ValueIsNotStored || !value.isEmpty()) + if (value == ValueIsNotStored() || !value.isEmpty()) { return true; } // Read value from file value = d->readValueFromFile(fileName, sopInstanceUID, tag); - return (value != TagNotInInstance && value != ValueIsEmptyString); + return (value != TagNotInInstance() && value != ValueIsEmptyString()); } //------------------------------------------------------------------------------ @@ -2909,7 +2926,7 @@ void ctkDICOMDatabase::insert( const QString& filePath, bool storeFile, bool gen /// first we check if the file is already in the database if (fileExistsAndUpToDate(filePath)) { - logger.debug( "File " + filePath + " already added."); + logger->debug( "File " + filePath + " already added."); return; } @@ -2922,7 +2939,7 @@ void ctkDICOMDatabase::insert( const QString& filePath, bool storeFile, bool gen } else { - logger.warn(QString("Could not read DICOM file:") + filePath); + logger->warn(QString("Could not read DICOM file:") + filePath); } } @@ -2974,7 +2991,7 @@ void ctkDICOMDatabase::insert(const QList& ind // File is updated, delete record and re-index if (!d->removeImage(sopInstanceUID)) { - logger.error("Failed to insert file into database (cannot update pre-existing item): " + filePath); + logger->error("Failed to insert file into database (cannot update pre-existing item): " + filePath); continue; } } @@ -2983,7 +3000,7 @@ void ctkDICOMDatabase::insert(const QList& ind QString patientsName, patientID, studyInstanceUID, seriesInstanceUID; if (!d->uidsForDataSet(dataset, patientsName, patientID, studyInstanceUID, seriesInstanceUID)) { - logger.error("Failed to insert file into database (required fields missing): " + filePath); + logger->error("Failed to insert file into database (required fields missing): " + filePath); continue; } @@ -3017,11 +3034,11 @@ void ctkDICOMDatabase::insert(const QList& ind { if (dataset.TagExists(tagKey)) { - value = ValueIsNotStored; + value = ValueIsNotStored(); } else { - value = TagNotInInstance; + value = TagNotInInstance(); } } else @@ -3031,7 +3048,7 @@ void ctkDICOMDatabase::insert(const QList& ind insertTags.bindValue(1, tag); if (value.isEmpty()) { - insertTags.bindValue(2, TagNotInInstance); + insertTags.bindValue(2, TagNotInInstance()); } else { @@ -3186,19 +3203,19 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabase::insert(const QListerror("ctkDICOMDatabase::insert: dataset has no patientID"); continue; } if (patientName.isEmpty()) { - logger.error("ctkDICOMDatabase::insert: dataset has no patientName"); + logger->error("ctkDICOMDatabase::insert: dataset has no patientName"); continue; } if (studyInstanceUID.isEmpty() && jobType != ctkDICOMJobResponseSet::JobType::QueryPatients) { - logger.error("ctkDICOMDatabase::insert: dataset has no studyInstanceUID"); + logger->error("ctkDICOMDatabase::insert: dataset has no studyInstanceUID"); continue; } @@ -3249,7 +3266,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabase::insert(const QListremoveImage(sopInstanceUID)) { - logger.error("Failed to insert file into database (cannot update pre-existing item): " + filePath); + logger->error("Failed to insert file into database (cannot update pre-existing item): " + filePath); continue; } } @@ -3320,7 +3337,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabase::insert(const QListerror("Error executing statement: " + insertImageStatement.lastQuery() + " Error: " + insertImageStatement.lastError().text()); insertFailed = true; @@ -3471,7 +3488,7 @@ bool ctkDICOMDatabase::removeSeries(const QString& seriesInstanceUID, bool clear bool success = fileExistsQuery.exec(); if (!success) { - logger.error("SQLITE ERROR: " + fileExistsQuery.lastError().driverText()); + logger->error("SQLITE ERROR: " + fileExistsQuery.lastError().driverText()); return false; } @@ -3493,12 +3510,12 @@ bool ctkDICOMDatabase::removeSeries(const QString& seriesInstanceUID, bool clear QSqlQuery fileRemove(d->Database); fileRemove.prepare("DELETE FROM Images WHERE SeriesInstanceUID == :seriesID"); fileRemove.bindValue(":seriesID", seriesInstanceUID); - logger.debug("SQLITE: removing seriesInstanceUID " + seriesInstanceUID); + logger->debug("SQLITE: removing seriesInstanceUID " + seriesInstanceUID); success = fileRemove.exec(); if (!success) { - logger.error("SQLITE ERROR: could not remove seriesInstanceUID " + seriesInstanceUID); - logger.error("SQLITE ERROR: " + fileRemove.lastError().driverText()); + logger->error("SQLITE ERROR: could not remove seriesInstanceUID " + seriesInstanceUID); + logger->error("SQLITE ERROR: " + fileRemove.lastError().driverText()); } if (!removeTagCacheSOPInstanceUIDs.isEmpty()) @@ -3536,7 +3553,7 @@ bool ctkDICOMDatabase::removeSeries(const QString& seriesInstanceUID, bool clear } else { - logger.warn("Failed to remove file " + absPath); + logger->warn("Failed to remove file " + absPath); } } } @@ -3546,7 +3563,7 @@ bool ctkDICOMDatabase::removeSeries(const QString& seriesInstanceUID, bool clear { if (!thumbnailFile.remove()) { - logger.warn("Failed to remove thumbnail " + thumbnailFile.fileName()); + logger->warn("Failed to remove thumbnail " + thumbnailFile.fileName()); } QString fileFolder = QFileInfo(thumbnailFile).absoluteDir().path(); if (foldersToRemove.isEmpty() || foldersToRemove.last() != fileFolder) @@ -3604,7 +3621,7 @@ bool ctkDICOMDatabase::removeStudy(const QString& studyInstanceUID, bool cleanup bool success = seriesForStudy.exec(); if (!success) { - logger.error("SQLITE ERROR: " + seriesForStudy.lastError().driverText()); + logger->error("SQLITE ERROR: " + seriesForStudy.lastError().driverText()); return false; } bool result = true; @@ -3639,7 +3656,7 @@ bool ctkDICOMDatabase::removePatient(const QString& patientUID, bool cleanup/*=t bool success = studiesForPatient.exec(); if (!success) { - logger.error("SQLITE ERROR: " + studiesForPatient.lastError().driverText()); + logger->error("SQLITE ERROR: " + studiesForPatient.lastError().driverText()); return false; } bool result = true; @@ -3749,7 +3766,7 @@ QString ctkDICOMDatabase::cachedTag(const QString sopInstanceUID, const QString result = selectValue.value(0).toString(); if (result == QString("")) { - result = ValueIsEmptyString; + result = ValueIsEmptyString(); } } return( result ); @@ -3778,7 +3795,7 @@ void ctkDICOMDatabase::getCachedTags(const QString sopInstanceUID, QMaperror("Failed to cache tags: number of inputs do not match"); return false; } @@ -3831,7 +3848,7 @@ bool ctkDICOMDatabase::cacheTags(const QStringList sopInstanceUIDs, const QStrin if (valuesIt->isEmpty()) { // replace empty strings with special flag string - insertTags.bindValue(2, TagNotInInstance); + insertTags.bindValue(2, TagNotInInstance()); } else { @@ -3865,7 +3882,7 @@ void ctkDICOMDatabase::removeCachedTags(const QString sopInstanceUID) bool success = deleteFile.exec(); if (!success) { - logger.error("SQLITE ERROR deleting tag cache row: " + deleteFile.lastError().driverText()); + logger->error("SQLITE ERROR deleting tag cache row: " + deleteFile.lastError().driverText()); } } @@ -3914,7 +3931,7 @@ void ctkDICOMDatabase::updateDisplayedFields() QString compositeId = d->getDisplayPatientFieldsKey(patientID, patientsName, patientsBirthDate, displayedFieldsMapPatient); if (compositeId.isEmpty()) { - logger.error("Failed to find patient for SOP Instance UID = " + sopInstanceUID); + logger->error("Failed to find patient for SOP Instance UID = " + sopInstanceUID); continue; } QMap displayedFieldsForCurrentPatient = displayedFieldsMapPatient[compositeId]; @@ -3924,7 +3941,7 @@ void ctkDICOMDatabase::updateDisplayedFields() cachedTags[ctkDICOMItem::TagKeyStripped(DCM_StudyInstanceUID)], displayedFieldsMapStudy ); if (displayedFieldsKeyForCurrentStudy.isEmpty()) { - logger.error("Failed to find study for SOP Instance UID = " + sopInstanceUID); + logger->error("Failed to find study for SOP Instance UID = " + sopInstanceUID); continue; } QMap displayedFieldsForCurrentStudy = displayedFieldsMapStudy[ displayedFieldsKeyForCurrentStudy ]; @@ -3934,7 +3951,7 @@ void ctkDICOMDatabase::updateDisplayedFields() QString displayedFieldsKeyForCurrentSeries = d->getDisplaySeriesFieldsKey(seriesInstanceUID, displayedFieldsMapSeries); if (displayedFieldsKeyForCurrentSeries.isEmpty()) { - logger.error("Failed to find series for SOP Instance UID = " + sopInstanceUID); + logger->error("Failed to find series for SOP Instance UID = " + sopInstanceUID); continue; } QMap displayedFieldsForCurrentSeries = displayedFieldsMapSeries[ displayedFieldsKeyForCurrentSeries ]; @@ -3993,7 +4010,7 @@ QString ctkDICOMDatabase::displayedNameForField(QString table, QString field) co query.addBindValue(field); if (!query.exec()) { - logger.error("SQLITE ERROR: " + query.lastError().driverText()); + logger->error("SQLITE ERROR: " + query.lastError().driverText()); return QString(); } @@ -4008,7 +4025,7 @@ void ctkDICOMDatabase::setDisplayedNameForField(QString table, QString field, QS if (!this->isOpen()) { - logger.warn("Database needs to be open to set column display properties"); + logger->warn("Database needs to be open to set column display properties"); return; } @@ -4019,7 +4036,7 @@ void ctkDICOMDatabase::setDisplayedNameForField(QString table, QString field, QS query.addBindValue(field); if (!d->loggedExec(query)) { - logger.error("SQLITE ERROR: " + query.lastError().driverText()); + logger->error("SQLITE ERROR: " + query.lastError().driverText()); return; } @@ -4037,7 +4054,7 @@ bool ctkDICOMDatabase::visibilityForField(QString table, QString field) const query.addBindValue(field); if (!query.exec()) { - logger.error("SQLITE ERROR: " + query.lastError().driverText()); + logger->error("SQLITE ERROR: " + query.lastError().driverText()); return false; } @@ -4052,7 +4069,7 @@ void ctkDICOMDatabase::setVisibilityForField(QString table, QString field, bool if (!this->isOpen()) { - logger.warn("Database needs to be open to set column display properties"); + logger->warn("Database needs to be open to set column display properties"); return; } @@ -4063,7 +4080,7 @@ void ctkDICOMDatabase::setVisibilityForField(QString table, QString field, bool query.addBindValue(field); if (!d->loggedExec(query)) { - logger.error("SQLITE ERROR: " + query.lastError().driverText()); + logger->error("SQLITE ERROR: " + query.lastError().driverText()); return; } @@ -4081,7 +4098,7 @@ int ctkDICOMDatabase::weightForField(QString table, QString field) const query.addBindValue(field); if (!query.exec()) { - logger.error("SQLITE ERROR: " + query.lastError().driverText()); + logger->error("SQLITE ERROR: " + query.lastError().driverText()); return INT_MAX; } @@ -4096,7 +4113,7 @@ void ctkDICOMDatabase::setWeightForField(QString table, QString field, int weigh if (!this->isOpen()) { - logger.warn("Database needs to be open to set column display properties"); + logger->warn("Database needs to be open to set column display properties"); return; } @@ -4107,7 +4124,7 @@ void ctkDICOMDatabase::setWeightForField(QString table, QString field, int weigh query.addBindValue(field); if (!d->loggedExec(query)) { - logger.error("SQLITE ERROR: " + query.lastError().driverText()); + logger->error("SQLITE ERROR: " + query.lastError().driverText()); return; } @@ -4125,7 +4142,7 @@ QString ctkDICOMDatabase::formatForField(QString table, QString field) const query.addBindValue(field); if (!query.exec()) { - logger.error("SQLITE ERROR: " + query.lastError().driverText()); + logger->error("SQLITE ERROR: " + query.lastError().driverText()); return QString(); } @@ -4140,7 +4157,7 @@ void ctkDICOMDatabase::setFormatForField(QString table, QString field, QString f if (!this->isOpen()) { - logger.warn("Database needs to be open to set column display properties"); + logger->warn("Database needs to be open to set column display properties"); return; } @@ -4151,7 +4168,7 @@ void ctkDICOMDatabase::setFormatForField(QString table, QString field, QString f query.addBindValue(field); if (!d->loggedExec(query)) { - logger.error("SQLITE ERROR: " + query.lastError().driverText()); + logger->error("SQLITE ERROR: " + query.lastError().driverText()); return; } diff --git a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGenerator.cpp b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGenerator.cpp index 8d94fd7a79..03e2f0117a 100644 --- a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGenerator.cpp +++ b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGenerator.cpp @@ -23,6 +23,7 @@ // ctkDICOM includes #include "ctkLogger.h" +#include #include "ctkDICOMDatabase.h" #include "ctkDICOMDisplayedFieldGenerator.h" #include "ctkDICOMDisplayedFieldGenerator_p.h" @@ -30,7 +31,7 @@ #include "ctkDICOMDisplayedFieldGeneratorRuleFactory.h" //------------------------------------------------------------------------------ -static ctkLogger logger("org.commontk.dicom.DICOMDisplayedFieldGenerator" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMDisplayedFieldGenerator")) //------------------------------------------------------------------------------ diff --git a/Libs/DICOM/Core/ctkDICOMEchoJob.cpp b/Libs/DICOM/Core/ctkDICOMEchoJob.cpp index 53d46604d8..b784e4d709 100644 --- a/Libs/DICOM/Core/ctkDICOMEchoJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMEchoJob.cpp @@ -23,6 +23,7 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMJobResponseSet.h" // For ctkDICOMJobDetail @@ -30,7 +31,7 @@ #include "ctkDICOMEchoWorker.h" #include "ctkDICOMServer.h" -static ctkLogger logger ( "org.commontk.dicom.DICOMEchoJob" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMEchoJob")) //------------------------------------------------------------------------------ // ctkDICOMEchoJobPrivate methods diff --git a/Libs/DICOM/Core/ctkDICOMEchoWorker.cpp b/Libs/DICOM/Core/ctkDICOMEchoWorker.cpp index 82507e69d4..46814c2c0d 100644 --- a/Libs/DICOM/Core/ctkDICOMEchoWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMEchoWorker.cpp @@ -23,6 +23,7 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMEchoWorker_p.h" @@ -33,7 +34,7 @@ // DCMTK includes #include -static ctkLogger logger ("org.commontk.dicom.DICOMRetrieveWorker"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMRetrieveWorker")) //------------------------------------------------------------------------------ // ctkDICOMEchoWorkerPrivate methods @@ -127,7 +128,7 @@ void ctkDICOMEchoWorker::run() echoJob->setStatus(ctkAbstractJob::JobStatus::Running); - logger.debug(QString("ctkDICOMEchoWorker : running job %1 in thread %2.\n") + logger->debug(QString("ctkDICOMEchoWorker : running job %1 in thread %2.\n") .arg(echoJob->jobUID()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); diff --git a/Libs/DICOM/Core/ctkDICOMFilterProxyModel.cpp b/Libs/DICOM/Core/ctkDICOMFilterProxyModel.cpp index 4176084c4f..87d628e1d6 100644 --- a/Libs/DICOM/Core/ctkDICOMFilterProxyModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMFilterProxyModel.cpp @@ -27,7 +27,8 @@ //logger #include -static ctkLogger logger("org.commontk.DICOM.Core.ctkDICOMFilterProxyModel"); +#include +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Core.ctkDICOMFilterProxyModel")) //---------------------------------------------------------------------------- diff --git a/Libs/DICOM/Core/ctkDICOMIndexer.cpp b/Libs/DICOM/Core/ctkDICOMIndexer.cpp index d60e82ea43..9326d32c6b 100644 --- a/Libs/DICOM/Core/ctkDICOMIndexer.cpp +++ b/Libs/DICOM/Core/ctkDICOMIndexer.cpp @@ -36,6 +36,7 @@ // ctkDICOM includes #include "ctkLogger.h" +#include #include "ctkDICOMIndexer.h" #include "ctkDICOMIndexer_p.h" #include "ctkDICOMDatabase.h" @@ -54,7 +55,7 @@ //------------------------------------------------------------------------------ -static ctkLogger logger("org.commontk.dicom.DICOMIndexer" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMIndexer")) /// How many files to parse before inserting results into the database. /// Increasing cache size increases maximum memory usage, very low cache size @@ -139,7 +140,7 @@ void ctkDICOMIndexerPrivateWorker::start() imagesCountAfter = database.imagesCount(); double elapsedTimeInSeconds = timeProbe.elapsed() / 1000.0; - logger.info(QString("DICOM indexer has updated display fields for %1 files [%2s]") + logger->info(QString("DICOM indexer has updated display fields for %1 files [%2s]") .arg(imagesCountAfter-imagesCountBefore).arg(QString::number(elapsedTimeInSeconds, 'f', 2))); // restart if new requests has been queued during displayed fields update @@ -225,7 +226,7 @@ void ctkDICOMIndexerPrivateWorker::processIndexingRequest(DICOMIndexingQueue::In } else { - logger.warn(QString("Could not read DICOM file:") + filePath); + logger->warn(QString("Could not read DICOM file:") + filePath); } if (this->RequestQueue->isStopRequested()) @@ -236,7 +237,7 @@ void ctkDICOMIndexerPrivateWorker::processIndexingRequest(DICOMIndexingQueue::In if (alreadyAddedFileCount > 0) { - logger.debug( + logger->debug( QString("Skipped %1 files that were already in the database: %2...") .arg(alreadyAddedFileCount) .arg(alreadyAddedFiles.join(", ")) @@ -251,7 +252,7 @@ void ctkDICOMIndexerPrivateWorker::processIndexingRequest(DICOMIndexingQueue::In } float elapsedTimeInSeconds = timeProbe.elapsed() / 1000.0; - logger.info(QString("DICOM indexer has successfully processed %1 files [%2s]") + logger->info(QString("DICOM indexer has successfully processed %1 files [%2s]") .arg(currentFileIndex).arg(QString::number(elapsedTimeInSeconds, 'f', 2))); } @@ -280,7 +281,7 @@ void ctkDICOMIndexerPrivateWorker::writeIndexingResultsToDatabase(ctkDICOMDataba this->NumberOfInstancesInserted = 0; float elapsedTimeInSeconds = timeProbe.elapsed() / 1000.0; - logger.info(QString("DICOM indexer has successfully inserted %1 files [%2s]") + logger->info(QString("DICOM indexer has successfully inserted %1 files [%2s]") .arg(indexingResults.count()).arg(QString::number(elapsedTimeInSeconds, 'f', 2))); } @@ -560,10 +561,10 @@ bool ctkDICOMIndexer::addDicomdir(const QString& directoryName, bool copyFile/*= { while ((patientRecord = rootRecord->nextSub(patientRecord)) != NULL) { - logger.debug( "Reading new Patient:" ); + logger->debug( "Reading new Patient:" ); if (patientRecord->findAndGetOFString(DCM_PatientName, patientsName).bad()) { - logger.warn( + logger->warn( QString("DICOMDIR file at %1 is invalid: patient name not found. " "All records belonging to this patient will be ignored.") .arg(directoryName) @@ -571,13 +572,13 @@ bool ctkDICOMIndexer::addDicomdir(const QString& directoryName, bool copyFile/*= success = false; continue; } - logger.debug( "Patient's Name: " + QString(patientsName.c_str()) ); + logger->debug( "Patient's Name: " + QString(patientsName.c_str()) ); while ((studyRecord = patientRecord->nextSub(studyRecord)) != NULL) { - logger.debug( "Reading new Study:" ); + logger->debug( "Reading new Study:" ); if (studyRecord->findAndGetOFString(DCM_StudyInstanceUID, studyInstanceUID).bad()) { - logger.warn( + logger->warn( QString("DICOMDIR file at %1 is invalid: study instance UID not found for patient %2. " "All records belonging to this study will be ignored.") .arg(directoryName) @@ -586,14 +587,14 @@ bool ctkDICOMIndexer::addDicomdir(const QString& directoryName, bool copyFile/*= success = false; continue; } - logger.debug( "Study instance UID: " + QString(studyInstanceUID.c_str()) ); + logger->debug( "Study instance UID: " + QString(studyInstanceUID.c_str()) ); while ((seriesRecord = studyRecord->nextSub(seriesRecord)) != NULL) { - logger.debug( "Reading new Series:" ); + logger->debug( "Reading new Series:" ); if (seriesRecord->findAndGetOFString(DCM_SeriesInstanceUID, seriesInstanceUID).bad()) { - logger.warn( + logger->warn( QString("DICOMDIR file at %1 is invalid: series instance UID not found for patient %2, study %3. " "All records belonging to this series will be ignored.") .arg(directoryName) @@ -603,14 +604,14 @@ bool ctkDICOMIndexer::addDicomdir(const QString& directoryName, bool copyFile/*= success = false; continue; } - logger.debug( "Series instance UID: " + QString(seriesInstanceUID.c_str()) ); + logger->debug( "Series instance UID: " + QString(seriesInstanceUID.c_str()) ); while ((fileRecord = seriesRecord->nextSub(fileRecord)) != NULL) { if (fileRecord->findAndGetOFStringArray(DCM_ReferencedSOPInstanceUIDInFile, sopInstanceUID).bad() || fileRecord->findAndGetOFStringArray(DCM_ReferencedFileID,referencedFileName).bad()) { - logger.warn( + logger->warn( QString("DICOMDIR file at %1 is invalid: " "referenced SOP instance UID or file name is invalid for patient %2, study %3, series %4. " "This file will be ignored.") @@ -634,7 +635,7 @@ bool ctkDICOMIndexer::addDicomdir(const QString& directoryName, bool copyFile/*= } } float elapsedTimeInSeconds = timeProbe.elapsed() / 1000.0; - logger.info(QString("DICOM indexer has successfully processed DICOMDIR in %1 [%2s]") + logger->info(QString("DICOM indexer has successfully processed DICOMDIR in %1 [%2s]") .arg(directoryName, QString::number(elapsedTimeInSeconds,'f', 2))); this->addListOfFiles(listOfInstances, copyFile); } diff --git a/Libs/DICOM/Core/ctkDICOMInserterJob.cpp b/Libs/DICOM/Core/ctkDICOMInserterJob.cpp index afecdc8441..db649f9319 100644 --- a/Libs/DICOM/Core/ctkDICOMInserterJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMInserterJob.cpp @@ -25,8 +25,9 @@ #include "ctkDICOMInserterJob.h" #include "ctkDICOMInserterWorker.h" #include "ctkLogger.h" +#include -static ctkLogger logger ("org.commontk.dicom.DICOMInserterJob"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMInserterJob")) //------------------------------------------------------------------------------ // ctkDICOMInserterJob methods diff --git a/Libs/DICOM/Core/ctkDICOMInserterWorker.cpp b/Libs/DICOM/Core/ctkDICOMInserterWorker.cpp index df8f2ed16c..2ed28cffa1 100644 --- a/Libs/DICOM/Core/ctkDICOMInserterWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMInserterWorker.cpp @@ -26,6 +26,7 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMInserterJob.h" @@ -35,7 +36,7 @@ // DCMTK includes #include -static ctkLogger logger ("org.commontk.dicom.DICOMInserterWorker"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMInserterWorker")) //------------------------------------------------------------------------------ // ctkDICOMInserterWorkerPrivate methods @@ -114,7 +115,7 @@ void ctkDICOMInserterWorker::run() inserterJob->setStatus(ctkAbstractJob::JobStatus::Running); - logger.debug(QString("ctkDICOMInserterWorker : running job %1 in thread %2.\n") + logger->debug(QString("ctkDICOMInserterWorker : running job %1 in thread %2.\n") .arg(inserterJob->jobUID()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); diff --git a/Libs/DICOM/Core/ctkDICOMJob.cpp b/Libs/DICOM/Core/ctkDICOMJob.cpp index 67f43d7b9c..5b86786a4d 100644 --- a/Libs/DICOM/Core/ctkDICOMJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMJob.cpp @@ -23,12 +23,13 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMJob.h" #include "ctkDICOMJobResponseSet.h" -static ctkLogger logger ("org.commontk.dicom.DICOMJob"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMJob")) //------------------------------------------------------------------------------ // ctkDICOMJob methods diff --git a/Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp b/Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp index 2756d5df95..a02e27f139 100644 --- a/Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp +++ b/Libs/DICOM/Core/ctkDICOMJobResponseSet.cpp @@ -23,6 +23,7 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMItem.h" @@ -32,7 +33,7 @@ // DCMTK includes #include -static ctkLogger logger("org.commontk.dicom.DICOMJobResponseSet"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMJobResponseSet")) //------------------------------------------------------------------------------ class ctkDICOMJobResponseSetPrivate : public QObject { diff --git a/Libs/DICOM/Core/ctkDICOMModalities.h b/Libs/DICOM/Core/ctkDICOMModalities.h index d20375d591..d141c05b0c 100644 --- a/Libs/DICOM/Core/ctkDICOMModalities.h +++ b/Libs/DICOM/Core/ctkDICOMModalities.h @@ -38,110 +38,122 @@ namespace ctkDICOMModalities { /// Complete list of all current (non-retired) DICOM modality codes - static const QStringList AllModalities = { - "Any", // Special filter value for "all modalities" - "AR", // Autorefraction - "ASMT", // Content Assessment Results - "AU", // Audio - "BDUS", // Bone Densitometry (ultrasound) - "BI", // Biomagnetic imaging - "BMD", // Bone Densitometry (X-Ray) - "CR", // Computed Radiography - "CT", // Computed Tomography - "DG", // Diaphanography - "DOC", // Document - "DX", // Digital Radiography - "ECG", // Electrocardiography - "EPS", // Cardiac Electrophysiology - "ES", // Endoscopy - "FID", // Fiducials - "GM", // General Microscopy - "HC", // Hard Copy - "HD", // Hemodynamic Waveform - "IO", // Intra-Oral Radiography - "IOL", // Intraocular Lens Data - "IVOCT", // Intravascular Optical Coherence Tomography - "IVUS", // Intravascular Ultrasound - "KER", // Keratometry - "KO", // Key Object Selection - "LEN", // Lensometry - "LS", // Laser surface scan - "MG", // Mammography - "MR", // Magnetic Resonance - "NM", // Nuclear Medicine - "OAM", // Ophthalmic Axial Measurements - "OCT", // Optical Coherence Tomography (non-Ophthalmic) - "OP", // Ophthalmic Photography - "OPM", // Ophthalmic Mapping - "OPT", // Ophthalmic Tomography - "OPV", // Ophthalmic Visual Field - "OSS", // Optical Surface Scan - "OT", // Other - "PLAN", // Plan - "PR", // Presentation State - "PT", // Positron emission tomography (PET) - "PX", // Panoramic X-Ray - "REG", // Registration - "RESP", // Respiratory Waveform - "RF", // Radio Fluoroscopy - "RG", // Radiographic imaging (conventional film/screen) - "RTDOSE", // Radiotherapy Dose - "RTIMAGE", // Radiotherapy Image - "RTPLAN", // Radiotherapy Plan - "RTRECORD", // RT Treatment Record - "RTSTRUCT", // Radiotherapy Structure Set - "RWV", // Real World Value Map - "SEG", // Segmentation - "SM", // Slide Microscopy - "SMR", // Stereometric Relationship - "SR", // SR Document - "SRF", // Subjective Refraction - "STAIN", // Automated Slide Stainer - "TG", // Thermography - "US", // Ultrasound - "VA", // Visual Acuity - "XA", // X-Ray Angiography - "XC" // External-camera Photography - }; + inline const QStringList& AllModalities() + { + static const QStringList list = { + "Any", // Special filter value for "all modalities" + "AR", // Autorefraction + "ASMT", // Content Assessment Results + "AU", // Audio + "BDUS", // Bone Densitometry (ultrasound) + "BI", // Biomagnetic imaging + "BMD", // Bone Densitometry (X-Ray) + "CR", // Computed Radiography + "CT", // Computed Tomography + "DG", // Diaphanography + "DOC", // Document + "DX", // Digital Radiography + "ECG", // Electrocardiography + "EPS", // Cardiac Electrophysiology + "ES", // Endoscopy + "FID", // Fiducials + "GM", // General Microscopy + "HC", // Hard Copy + "HD", // Hemodynamic Waveform + "IO", // Intra-Oral Radiography + "IOL", // Intraocular Lens Data + "IVOCT", // Intravascular Optical Coherence Tomography + "IVUS", // Intravascular Ultrasound + "KER", // Keratometry + "KO", // Key Object Selection + "LEN", // Lensometry + "LS", // Laser surface scan + "MG", // Mammography + "MR", // Magnetic Resonance + "NM", // Nuclear Medicine + "OAM", // Ophthalmic Axial Measurements + "OCT", // Optical Coherence Tomography (non-Ophthalmic) + "OP", // Ophthalmic Photography + "OPM", // Ophthalmic Mapping + "OPT", // Ophthalmic Tomography + "OPV", // Ophthalmic Visual Field + "OSS", // Optical Surface Scan + "OT", // Other + "PLAN", // Plan + "PR", // Presentation State + "PT", // Positron emission tomography (PET) + "PX", // Panoramic X-Ray + "REG", // Registration + "RESP", // Respiratory Waveform + "RF", // Radio Fluoroscopy + "RG", // Radiographic imaging (conventional film/screen) + "RTDOSE", // Radiotherapy Dose + "RTIMAGE", // Radiotherapy Image + "RTPLAN", // Radiotherapy Plan + "RTRECORD", // RT Treatment Record + "RTSTRUCT", // Radiotherapy Structure Set + "RWV", // Real World Value Map + "SEG", // Segmentation + "SM", // Slide Microscopy + "SMR", // Stereometric Relationship + "SR", // SR Document + "SRF", // Subjective Refraction + "STAIN", // Automated Slide Stainer + "TG", // Thermography + "US", // Ultrasound + "VA", // Visual Acuity + "XA", // X-Ray Angiography + "XC" // External-camera Photography + }; + return list; + } /// Modalities that should be excluded from thumbnail generation /// because they do not have meaningful image thumbnails - static const QStringList ExcludedFromThumbnailGeneration = { - "SEG", // Segmentation - "SR", // Structured Report - "RTSTRUCT", // Radiotherapy Structure Set - "RTPLAN", // Radiotherapy Plan - "RTDOSE", // Radiotherapy Dose - "RTRECORD", // RT Treatment Record - "PR", // Presentation State - "DOC", // Document - "REG", // Registration - "PLAN", // Plan - "FID", // Fiducials - "KO", // Key Object Selection - "RWV", // Real World Value Map - "AU", // Audio - "ECG", // Electrocardiography - "EPS", // Cardiac Electrophysiology - "HD", // Hemodynamic Waveform - "RESP" // Respiratory Waveform - }; + inline const QStringList& ExcludedFromThumbnailGeneration() + { + static const QStringList list = { + "SEG", // Segmentation + "SR", // Structured Report + "RTSTRUCT", // Radiotherapy Structure Set + "RTPLAN", // Radiotherapy Plan + "RTDOSE", // Radiotherapy Dose + "RTRECORD", // RT Treatment Record + "PR", // Presentation State + "DOC", // Document + "REG", // Registration + "PLAN", // Plan + "FID", // Fiducials + "KO", // Key Object Selection + "RWV", // Real World Value Map + "AU", // Audio + "ECG", // Electrocardiography + "EPS", // Cardiac Electrophysiology + "HD", // Hemodynamic Waveform + "RESP" // Respiratory Waveform + }; + return list; + } /// Common imaging modalities typically used for filtering in UI - static const QStringList CommonImagingModalities = { - "CR", // Computed Radiography - "CT", // Computed Tomography - "DX", // Digital Radiography - "MG", // Mammography - "MR", // Magnetic Resonance - "NM", // Nuclear Medicine - "PT", // Positron emission tomography - "RF", // Radio Fluoroscopy - "SEG", // Segmentation - "SR", // Structured Report - "US", // Ultrasound - "XA" // X-Ray Angiography - }; + inline const QStringList& CommonImagingModalities() + { + static const QStringList list = { + "CR", // Computed Radiography + "CT", // Computed Tomography + "DX", // Digital Radiography + "MG", // Mammography + "MR", // Magnetic Resonance + "NM", // Nuclear Medicine + "PT", // Positron emission tomography + "RF", // Radio Fluoroscopy + "SEG", // Segmentation + "SR", // Structured Report + "US", // Ultrasound + "XA" // X-Ray Angiography + }; + return list; + } } #endif // __ctkDICOMModalities_h diff --git a/Libs/DICOM/Core/ctkDICOMModel.cpp b/Libs/DICOM/Core/ctkDICOMModel.cpp index b03a60e517..9a200af40f 100644 --- a/Libs/DICOM/Core/ctkDICOMModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMModel.cpp @@ -38,8 +38,9 @@ // ctkDICOMCore includes #include "ctkDICOMModel.h" #include "ctkLogger.h" +#include -static ctkLogger logger ( "org.commontk.dicom.DICOMModel" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMModel")) struct Node; Q_DECLARE_METATYPE(Qt::CheckState); @@ -303,7 +304,7 @@ QString ctkDICOMModelPrivate::generateQuery(const QString& fields, const QString { res += QString(" ORDER BY ") + this->Sort; } - logger.debug ( "ctkDICOMModelPrivate::generateQuery: query is: " + res ); + logger->debug ( "ctkDICOMModelPrivate::generateQuery: query is: " + res ); return res; } @@ -324,7 +325,7 @@ void ctkDICOMModelPrivate::updateQueries(Node* node)const condition.append("PatientsName LIKE \"%" + this->SearchParameters["Name"].toString() + "%\""); } query = this->generateQuery("UID as UID, PatientsName as Name, PatientsAge as Age, PatientsBirthDate as Date, PatientID as \"Subject ID\"","Patients", condition); - logger.debug ( "ctkDICOMModelPrivate::updateQueries for Root: query is: " + query ); + logger->debug ( "ctkDICOMModelPrivate::updateQueries for Root: query is: " + query ); break; case ctkDICOMModel::PatientType: //query = QString("SELECT FROM Studies WHERE PatientsUID='%1'").arg(node->UID); @@ -343,7 +344,7 @@ void ctkDICOMModelPrivate::updateQueries(Node* node)const + "\' AND \'" + QDate::fromString(this->SearchParameters["EndDate"].toString(), "yyyyMMdd").toString("yyyy-MM-dd") + "\' ) AND "); } query = this->generateQuery("StudyInstanceUID as UID, StudyDescription as Name, ModalitiesInStudy as Scan, StudyDate as Date, AccessionNumber as Number, InstitutionName as Institution, ReferringPhysician as Referrer, PerformingPhysiciansName as Performer", "Studies", condition + QString("PatientsUID='%1'").arg(node->UID)); - logger.debug ( "ctkDICOMModelPrivate::updateQueries for Patient: query is: " + query ); + logger->debug ( "ctkDICOMModelPrivate::updateQueries for Patient: query is: " + query ); break; case ctkDICOMModel::StudyType: //query = QString("SELECT SeriesInstanceUID as UID, SeriesDescription as Name, BodyPartExamined as Scan, SeriesDate as Date, AcquisitionNumber as Number FROM Series WHERE StudyInstanceUID='%1'").arg(node->UID); @@ -352,7 +353,7 @@ void ctkDICOMModelPrivate::updateQueries(Node* node)const condition.append("SeriesDescription LIKE \"%" + this->SearchParameters["Series"].toString() + "%\"" + " AND "); } query = this->generateQuery("SeriesInstanceUID as UID, SeriesDescription as Name, Modality as Age, SeriesNumber as Scan, BodyPartExamined as \"Subject ID\", SeriesDate as Date, AcquisitionNumber as Number","Series",condition + QString("StudyInstanceUID='%1'").arg(node->UID)); - logger.debug ( "ctkDICOMModelPrivate::updateQueries for Study: query is: " + query ); + logger->debug ( "ctkDICOMModelPrivate::updateQueries for Study: query is: " + query ); break; case ctkDICOMModel::SeriesType: if(this->SearchParameters["ID"].toString() != "") @@ -361,7 +362,7 @@ void ctkDICOMModelPrivate::updateQueries(Node* node)const } //query = QString("SELECT Filename as UID, Filename as Name, SeriesInstanceUID as Date FROM Images WHERE SeriesInstanceUID='%1'").arg(node->UID); query = this->generateQuery("SOPInstanceUID as UID, Filename as Name, SeriesInstanceUID as Date", "Images", condition + QString("SeriesInstanceUID='%1'").arg(node->UID)); - logger.debug ( "ctkDICOMModelPrivate::updateQueries for Series: query is: " + query ); + logger->debug ( "ctkDICOMModelPrivate::updateQueries for Series: query is: " + query ); break; case ctkDICOMModel::ImageType: break; diff --git a/Libs/DICOM/Core/ctkDICOMPatientModel.cpp b/Libs/DICOM/Core/ctkDICOMPatientModel.cpp index 3527d0a242..86d88d5657 100644 --- a/Libs/DICOM/Core/ctkDICOMPatientModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMPatientModel.cpp @@ -28,6 +28,7 @@ // CTK includes #include +#include // ctkDICOMCore includes #include "ctkDICOMPatientModel.h" @@ -41,7 +42,7 @@ #include "ctkDICOMJobResponseSet.h" #include "ctkDICOMJob.h" -static ctkLogger logger("org.commontk.DICOM.Core.ctkDICOMPatientModel"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Core.ctkDICOMPatientModel")) //------------------------------------------------------------------------------ // Helper function for setDicomDatabase/setScheduler @@ -143,7 +144,7 @@ ctkDICOMPatientModelPrivate::ctkDICOMPatientModelPrivate(ctkDICOMPatientModel& o this->IsUpdating = false; this->QueryInProgress = false; - this->ModalityFilter = ctkDICOMModalities::AllModalities; + this->ModalityFilter = ctkDICOMModalities::AllModalities(); } //------------------------------------------------------------------------------ @@ -193,7 +194,7 @@ void ctkDICOMPatientModelPrivate::populatePatients() if (!this->DicomDatabase) { - logger.error("populatePatients: No database set"); + logger->error("populatePatients: No database set"); return; } @@ -500,7 +501,7 @@ ctkDICOMStudyModel* ctkDICOMPatientModelPrivate::createStudyModel(const QString& if (!this->DicomDatabase) { - logger.warn("createStudyModel: No database set"); + logger->warn("createStudyModel: No database set"); return nullptr; } @@ -1540,7 +1541,7 @@ bool ctkDICOMPatientModel::queryStudies(const QString &patientID) Q_D(ctkDICOMPatientModel); if (!d->Scheduler) { - logger.warn("queryStudies: No scheduler set"); + logger->warn("queryStudies: No scheduler set"); return false; } QString patientUID; @@ -1760,20 +1761,20 @@ void ctkDICOMPatientModel::updateAllowedServersFromDB(const QString& patientUID) if (!d->DicomDatabase) { - logger.error("updateAllowedServersFromDB: No database set"); + logger->error("updateAllowedServersFromDB: No database set"); return; } if (!d->Scheduler) { - logger.error("updateAllowedServersFromDB: No scheduler set"); + logger->error("updateAllowedServersFromDB: No scheduler set"); return; } int patientIndex = d->PatientUIDToIndex.value(patientUID, -1); if (patientIndex < 0 || patientIndex >= d->Patients.count()) { - logger.error("updateAllowedServersFromDB: Invalid patient item"); + logger->error("updateAllowedServersFromDB: Invalid patient item"); return; } @@ -1829,20 +1830,20 @@ void ctkDICOMPatientModel::saveAllowedServersToDB(const QString& patientUID, con if (!d->DicomDatabase) { - logger.error("saveAllowedServersToDB: No database set"); + logger->error("saveAllowedServersToDB: No database set"); return; } if (!d->Scheduler) { - logger.error("saveAllowedServersToDB: No scheduler set"); + logger->error("saveAllowedServersToDB: No scheduler set"); return; } int patientIndex = d->PatientUIDToIndex.value(patientUID, -1); if (patientIndex < 0 || patientIndex >= d->Patients.count()) { - logger.error("saveAllowedServersToDB: Invalid patient item"); + logger->error("saveAllowedServersToDB: Invalid patient item"); return; } diff --git a/Libs/DICOM/Core/ctkDICOMQueryJob.cpp b/Libs/DICOM/Core/ctkDICOMQueryJob.cpp index 93b4799575..8bdf651d53 100644 --- a/Libs/DICOM/Core/ctkDICOMQueryJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMQueryJob.cpp @@ -23,6 +23,7 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMJobResponseSet.h" // For ctkDICOMJobDetail @@ -30,7 +31,7 @@ #include "ctkDICOMQueryWorker.h" #include "ctkDICOMServer.h" -static ctkLogger logger ( "org.commontk.dicom.DICOMQueryJob" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMQueryJob")) //------------------------------------------------------------------------------ // ctkDICOMQueryJobPrivate methods diff --git a/Libs/DICOM/Core/ctkDICOMQueryWorker.cpp b/Libs/DICOM/Core/ctkDICOMQueryWorker.cpp index b266f6b05c..cb8d670e0d 100644 --- a/Libs/DICOM/Core/ctkDICOMQueryWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMQueryWorker.cpp @@ -23,6 +23,7 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMQueryWorker_p.h" @@ -33,7 +34,7 @@ // DCMTK includes #include -static ctkLogger logger ("org.commontk.dicom.DICOMQueryWorker"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMQueryWorker")) //------------------------------------------------------------------------------ // ctkDICOMQueryWorkerPrivate methods @@ -126,14 +127,14 @@ void ctkDICOMQueryWorker::run() queryJob->setStatus(ctkAbstractJob::JobStatus::Running); - logger.debug(QString("ctkDICOMQueryWorker : running job %1 in thread %2.\n") + logger->debug(QString("ctkDICOMQueryWorker : running job %1 in thread %2.\n") .arg(queryJob->jobUID()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); switch (queryJob->dicomLevel()) { case ctkDICOMJob::DICOMLevels::None: - logger.warn("ctkDICOMQueryWorker : DICOMLevels was not set."); + logger->warn("ctkDICOMQueryWorker : DICOMLevels was not set."); this->Job->setStatus(ctkAbstractJob::JobStatus::Finished); return; case ctkDICOMJob::DICOMLevels::Patients: diff --git a/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp b/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp index 9cd661b4c1..b04d7955d6 100644 --- a/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMRetrieveJob.cpp @@ -23,6 +23,7 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMJobResponseSet.h" // For ctkDICOMJobDetail @@ -30,7 +31,7 @@ #include "ctkDICOMRetrieveWorker.h" #include "ctkDICOMServer.h" -static ctkLogger logger ( "org.commontk.dicom.DICOMRetrieveJob" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMRetrieveJob")) //------------------------------------------------------------------------------ // ctkDICOMRetrieveJobPrivate methods diff --git a/Libs/DICOM/Core/ctkDICOMRetrieveWorker.cpp b/Libs/DICOM/Core/ctkDICOMRetrieveWorker.cpp index 99042f52f7..8d438766a1 100644 --- a/Libs/DICOM/Core/ctkDICOMRetrieveWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMRetrieveWorker.cpp @@ -23,6 +23,7 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMJobResponseSet.h" @@ -34,7 +35,7 @@ // DCMTK includes #include -static ctkLogger logger ("org.commontk.dicom.DICOMRetrieveWorker"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMRetrieveWorker")) //------------------------------------------------------------------------------ // ctkDICOMRetrieveWorkerPrivate methods @@ -148,7 +149,7 @@ void ctkDICOMRetrieveWorker::run() retrieveJob->setStatus(ctkAbstractJob::JobStatus::Running); - logger.debug(QString("ctkDICOMRetrieveWorker : running job %1 in thread %2.\n") + logger->debug(QString("ctkDICOMRetrieveWorker : running job %1 in thread %2.\n") .arg(retrieveJob->jobUID()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); @@ -158,11 +159,11 @@ void ctkDICOMRetrieveWorker::run() switch(retrieveJob->dicomLevel()) { case ctkDICOMJob::DICOMLevels::None: - logger.warn("ctkDICOMRetrieveWorker : DICOMLevels was not set."); + logger->warn("ctkDICOMRetrieveWorker : DICOMLevels was not set."); this->Job->setStatus(ctkAbstractJob::JobStatus::Finished); return; case ctkDICOMJob::DICOMLevels::Patients: - logger.warn("ctkDICOMRetrieveWorker : get operation for a full patient is not implemented."); + logger->warn("ctkDICOMRetrieveWorker : get operation for a full patient is not implemented."); this->Job->setStatus(ctkAbstractJob::JobStatus::Finished); return; case ctkDICOMJob::DICOMLevels::Studies: @@ -198,11 +199,11 @@ void ctkDICOMRetrieveWorker::run() switch(retrieveJob->dicomLevel()) { case ctkDICOMJob::DICOMLevels::None: - logger.warn("ctkDICOMRetrieveWorker : DICOMLevels was not set."); + logger->warn("ctkDICOMRetrieveWorker : DICOMLevels was not set."); this->Job->setStatus(ctkAbstractJob::JobStatus::Finished); return; case ctkDICOMJob::DICOMLevels::Patients: - logger.warn("ctkDICOMRetrieveTask : move operation for a full patient is not implemented."); + logger->warn("ctkDICOMRetrieveTask : move operation for a full patient is not implemented."); retrieveJob->setStatus(ctkAbstractJob::JobStatus::Finished); return; case ctkDICOMJob::DICOMLevels::Studies: diff --git a/Libs/DICOM/Core/ctkDICOMScheduler.cpp b/Libs/DICOM/Core/ctkDICOMScheduler.cpp index cf6ff84d47..887351a0b3 100644 --- a/Libs/DICOM/Core/ctkDICOMScheduler.cpp +++ b/Libs/DICOM/Core/ctkDICOMScheduler.cpp @@ -23,6 +23,7 @@ // ctkCore includes #include +#include #include // ctkDICOMCore includes @@ -44,7 +45,7 @@ #include #include "dcmtk/oflog/spi/logevent.h" -static ctkLogger logger ( "org.commontk.dicom.DICOMScheduler" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMScheduler")) //------------------------------------------------------------------------------ // JobAppender class (custom DCMTK Appender) @@ -479,7 +480,7 @@ void ctkDICOMScheduler::generateThumbnail(const QString &originalFilePath, Q_D(ctkDICOMScheduler); // Do not generate thumbnails for modalities that do not have meaningful image thumbnails - if (ctkDICOMModalities::ExcludedFromThumbnailGeneration.contains(modality)) + if (ctkDICOMModalities::ExcludedFromThumbnailGeneration().contains(modality)) { // Do not generate thumbnails for excluded modalities // To Do: refactor the ctkDICOMThumbnailGenerator to handle properly these cases @@ -824,7 +825,7 @@ void ctkDICOMScheduler::waitForFinishByDICOMUIDs(const QStringList& patientIDs, if (numberOfInputLists == 0) { - logger.warn("ctkDICOMScheduler::waitForFinishByDICOMUIDs failed: all the provided lists with UIDs are empty."); + logger->warn("ctkDICOMScheduler::waitForFinishByDICOMUIDs failed: all the provided lists with UIDs are empty."); return; } @@ -900,7 +901,7 @@ QList> ctkDICOMScheduler::getJobsByDICOMUIDs(cons if (numberOfInputLists == 0) { - logger.warn("ctkDICOMScheduler::getJobsByDICOMUIDs failed: all the provided lists with UIDs are empty."); + logger->warn("ctkDICOMScheduler::getJobsByDICOMUIDs failed: all the provided lists with UIDs are empty."); return jobs; } @@ -918,7 +919,7 @@ QList> ctkDICOMScheduler::getJobsByDICOMUIDs(cons ctkDICOMJob* dicomJob = qobject_cast(job.data()); if (!dicomJob) { - logger.debug("ctkDICOMScheduler::getJobsByDICOMUIDs: unexpected type of job."); + logger->debug("ctkDICOMScheduler::getJobsByDICOMUIDs: unexpected type of job."); continue; } @@ -965,7 +966,7 @@ void ctkDICOMScheduler::stopJobsByDICOMUIDs(const QStringList& patientIDs, if (numberOfInputLists == 0) { - logger.debug("ctkDICOMScheduler::stopJobsByDICOMUIDs: all the provided lists with UIDs are empty."); + logger->debug("ctkDICOMScheduler::stopJobsByDICOMUIDs: all the provided lists with UIDs are empty."); return; } @@ -985,7 +986,7 @@ void ctkDICOMScheduler::stopJobsByDICOMUIDs(const QStringList& patientIDs, ctkDICOMJob* dicomJob = qobject_cast(job.data()); if (!dicomJob) { - logger.debug("ctkDICOMScheduler::stopJobsByDICOMUIDs: unexpected type of job."); + logger->debug("ctkDICOMScheduler::stopJobsByDICOMUIDs: unexpected type of job."); continue; } @@ -1027,7 +1028,7 @@ void ctkDICOMScheduler::raiseJobsPriorityForSeries(const QStringList& selectedSe ctkDICOMJob* dicomJob = qobject_cast(job.data()); if (!dicomJob) { - logger.debug("ctkDICOMScheduler::raiseJobsPriorityForSeries: unexpected type of job."); + logger->debug("ctkDICOMScheduler::raiseJobsPriorityForSeries: unexpected type of job."); continue; } diff --git a/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp b/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp index e6b31fe169..46f83851cf 100644 --- a/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp @@ -30,6 +30,7 @@ // CTK includes #include +#include // ctkDICOMCore includes #include "ctkDICOMModalities.h" @@ -39,7 +40,7 @@ #include "ctkDICOMJobResponseSet.h" #include "ctkDICOMJob.h" -static ctkLogger logger("org.commontk.DICOM.Core.DICOMSeriesModel"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Core.DICOMSeriesModel")) //---------------------------------------------------------------------------- static void skipDelete(QObject* obj) @@ -132,7 +133,7 @@ ctkDICOMSeriesModelPrivate::ctkDICOMSeriesModelPrivate(ctkDICOMSeriesModel& obj) this->Scheduler = nullptr; this->PatientID = ""; this->StudyFilter = ""; - this->ModalityFilter = ctkDICOMModalities::AllModalities; + this->ModalityFilter = ctkDICOMModalities::AllModalities(); this->SeriesDescriptionFilter = ""; } @@ -163,7 +164,7 @@ void ctkDICOMSeriesModelPrivate::populateSeriesData() if (!this->DicomDatabase) { - logger.error("populateSeriesData: No database set"); + logger->error("populateSeriesData: No database set"); return; } @@ -594,7 +595,7 @@ void ctkDICOMSeriesModel::setDicomDatabase(QSharedPointer data Q_D(ctkDICOMSeriesModel); if (!database.data()) { - logger.error("setDicomDatabase: Invalid (null) database pointer"); + logger->error("setDicomDatabase: Invalid (null) database pointer"); return; } if (d->DicomDatabase == database) @@ -1045,7 +1046,7 @@ void ctkDICOMSeriesModel::forceRetrieveSeries(const QString &seriesInstanceUID) ctkDICOMSeriesModelPrivate::SeriesData& seriesData = d->SeriesList[linearIndex]; if (d->AllowedServers.isEmpty()) { - logger.warn("ctkDICOMSeriesModel::forceRetrieveSeries: No allowed servers specified, cannot retrieve series."); + logger->warn("ctkDICOMSeriesModel::forceRetrieveSeries: No allowed servers specified, cannot retrieve series."); seriesData.operationStatus = ctkDICOMSeriesModel::Failed; } else diff --git a/Libs/DICOM/Core/ctkDICOMServer.cpp b/Libs/DICOM/Core/ctkDICOMServer.cpp index 90c07d93d9..f193ca9eda 100644 --- a/Libs/DICOM/Core/ctkDICOMServer.cpp +++ b/Libs/DICOM/Core/ctkDICOMServer.cpp @@ -27,11 +27,12 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMServer.h" -static ctkLogger logger("org.commontk.dicom.DICOMServer"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMServer")) //------------------------------------------------------------------------------ class ctkDICOMServerPrivate : public QObject diff --git a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp index 719a27fed7..58e99d9c76 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp @@ -23,12 +23,13 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMStorageListenerJob_p.h" #include "ctkDICOMStorageListenerWorker.h" -static ctkLogger logger ( "org.commontk.dicom.DICOMStorageListenerJob" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMStorageListenerJob")) //------------------------------------------------------------------------------ // ctkDICOMStorageListenerJobPrivate methods diff --git a/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.cpp b/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.cpp index 857e36a23f..4570935450 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMStorageListenerWorker.cpp @@ -26,6 +26,7 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMJobResponseSet.h" @@ -36,7 +37,7 @@ // DCMTK includes #include -static ctkLogger logger ("org.commontk.dicom.DICOMStorageListenerWorker"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMStorageListenerWorker")) //------------------------------------------------------------------------------ // ctkDICOMStorageListenerWorkerPrivate methods @@ -141,7 +142,7 @@ void ctkDICOMStorageListenerWorker::run() storageListenerJob->setStatus(ctkAbstractJob::JobStatus::Running); emit storageListenerJob->started(); - logger.debug(QString("ctkDICOMStorageListenerWorker : running job %1 in thread %2.\n") + logger->debug(QString("ctkDICOMStorageListenerWorker : running job %1 in thread %2.\n") .arg(storageListenerJob->jobUID()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); diff --git a/Libs/DICOM/Core/ctkDICOMStudyModel.cpp b/Libs/DICOM/Core/ctkDICOMStudyModel.cpp index 89b542d20c..a2c6127960 100644 --- a/Libs/DICOM/Core/ctkDICOMStudyModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMStudyModel.cpp @@ -28,6 +28,7 @@ // CTK includes #include +#include // ctkDICOMCore includes #include "ctkDICOMStudyModel.h" @@ -39,7 +40,7 @@ #include "ctkDICOMJobResponseSet.h" #include "ctkDICOMJob.h" -static ctkLogger logger("org.commontk.DICOM.Core.ctkDICOMStudyModel"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Core.ctkDICOMStudyModel")) //------------------------------------------------------------------------------ // Helper function for setDicomDatabase/setScheduler @@ -141,7 +142,7 @@ ctkDICOMStudyModelPrivate::ctkDICOMStudyModelPrivate(ctkDICOMStudyModel& obj) this->NumberOfOpenedStudies = 2; this->ThumbnailSize = 128; this->IsUpdating = false; - this->ModalityFilter = ctkDICOMModalities::AllModalities; + this->ModalityFilter = ctkDICOMModalities::AllModalities(); } //------------------------------------------------------------------------------ @@ -198,7 +199,7 @@ void ctkDICOMStudyModelPrivate::populateStudies() if (!this->DicomDatabase) { - logger.error("populateStudies: No database set"); + logger->error("populateStudies: No database set"); return; } @@ -604,7 +605,7 @@ ctkDICOMSeriesModel* ctkDICOMStudyModelPrivate::createSeriesModel(const QString& if (!this->DicomDatabase) { - logger.warn("createSeriesModel: No database set"); + logger->warn("createSeriesModel: No database set"); return nullptr; } diff --git a/Libs/DICOM/Core/ctkDICOMTester.cpp b/Libs/DICOM/Core/ctkDICOMTester.cpp index 899f0d8eea..f1783124cd 100644 --- a/Libs/DICOM/Core/ctkDICOMTester.cpp +++ b/Libs/DICOM/Core/ctkDICOMTester.cpp @@ -28,9 +28,10 @@ // ctkDICOM includes #include "ctkDICOMTester.h" #include "ctkLogger.h" +#include //------------------------------------------------------------------------------ -static ctkLogger logger("org.commontk.dicom.DICOMTester" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMTester")) //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ diff --git a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp index 55833f5b33..5c069afb3b 100644 --- a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp @@ -23,13 +23,14 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMJobResponseSet.h" // For ctkDICOMJobDetail #include "ctkDICOMThumbnailGeneratorJob_p.h" #include "ctkDICOMThumbnailGeneratorWorker.h" -static ctkLogger logger ( "org.commontk.dicom.DICOMThumbnailGeneratorJob" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMThumbnailGeneratorJob")) //------------------------------------------------------------------------------ // ctkDICOMThumbnailGeneratorJobPrivate methods diff --git a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp index c37c2a72ed..8e0c014d5b 100644 --- a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp @@ -23,6 +23,7 @@ // ctkCore includes #include +#include // ctkDICOMCore includes #include "ctkDICOMThumbnailGenerator.h" @@ -30,7 +31,7 @@ #include "ctkDICOMThumbnailGeneratorJob.h" #include "ctkDICOMScheduler.h" -static ctkLogger logger ("org.commontk.dicom.DICOMRetrieveWorker"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMRetrieveWorker")) //------------------------------------------------------------------------------ // ctkDICOMThumbnailGeneratorWorkerPrivate methods @@ -97,7 +98,7 @@ void ctkDICOMThumbnailGeneratorWorker::run() thumbnailGeneratorJob->setStatus(ctkAbstractJob::JobStatus::Running); - logger.debug(QString("ctkDICOMThumbnailGeneratorWorker : running job %1 in thread %2.\n") + logger->debug(QString("ctkDICOMThumbnailGeneratorWorker : running job %1 in thread %2.\n") .arg(thumbnailGeneratorJob->jobUID()) .arg(QString::number(reinterpret_cast(QThread::currentThreadId())), 16)); diff --git a/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp index a3b7493365..f25dcfa086 100644 --- a/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp @@ -61,7 +61,7 @@ //logger #include -static ctkLogger logger("org.commontk.DICOM.Widgets.ctkDICOMAppWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Widgets.ctkDICOMAppWidget")) Q_DECLARE_METATYPE(QPersistentModelIndex); diff --git a/Libs/DICOM/Widgets/ctkDICOMImage.cpp b/Libs/DICOM/Widgets/ctkDICOMImage.cpp index 6dd6a02d78..d083936abc 100644 --- a/Libs/DICOM/Widgets/ctkDICOMImage.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMImage.cpp @@ -31,7 +31,7 @@ #include #include -static ctkLogger logger ( "org.commontk.dicom.DICOMImage" ); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.dicom.DICOMImage")) struct Node; //------------------------------------------------------------------------------ @@ -129,7 +129,7 @@ QImage ctkDICOMImage::frame(int frame) const if (!image.loadFromData( buffer )) { - logger.error("QImage couldn't created"); + logger->error("QImage couldn't created"); } } } diff --git a/Libs/DICOM/Widgets/ctkDICOMItemView.cpp b/Libs/DICOM/Widgets/ctkDICOMItemView.cpp index 586d37c5c0..abfd6fff85 100644 --- a/Libs/DICOM/Widgets/ctkDICOMItemView.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMItemView.cpp @@ -47,7 +47,7 @@ #include #include -static ctkLogger logger("org.commontk.DICOM.Widgets.ctkDICOMItemView"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Widgets.ctkDICOMItemView")) //-------------------------------------------------------------------------- class ctkDICOMItemViewPrivate @@ -272,7 +272,7 @@ void ctkDICOMItemView::addImage( DicomImage & dcmImage, bool defaultIntensity ) EI_Status result = dcmImage.getStatus(); if (result != EIS_Normal) { - logger.error(QString("Rendering of DICOM image failed for thumbnail failed: ") + DicomImage::getString(result)); + logger->error(QString("Rendering of DICOM image failed for thumbnail failed: ") + DicomImage::getString(result)); return; } // Select first window defined in image. If none, compute min/max window as best guess. @@ -328,7 +328,7 @@ void ctkDICOMItemView::addImage( DicomImage & dcmImage, bool defaultIntensity ) { if (!image.loadFromData( buffer )) { - logger.error("QImage couldn't created"); + logger->error("QImage couldn't created"); } } this->addImage(image); @@ -424,7 +424,7 @@ void ctkDICOMItemView::displayImage(int imageIndex){ } else { - logger.debug("out of index"); + logger->debug("out of index"); } } } diff --git a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp index 888ff8a8e3..c0cba78bf2 100644 --- a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp @@ -37,7 +37,7 @@ #include "ctkDICOMJobListWidget.h" #include "ui_ctkDICOMJobListWidget.h" -static ctkLogger logger("org.commontk.DICOM.Widgets.DICOMJobListWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Widgets.DICOMJobListWidget")) //---------------------------------------------------------------------------- class ProgressBarDelegate : public QStyledItemDelegate { @@ -151,7 +151,7 @@ QString QCenteredItemModel::getJobTypeAsString(QString jobClass, ctkDICOMJob::DI switch (dicomLevel) { case ctkDICOMJob::DICOMLevels::None: - logger.warn("ctkDICOMScheduler : DICOMLevels was not set."); + logger->warn("ctkDICOMScheduler : DICOMLevels was not set."); return ""; case ctkDICOMJob::DICOMLevels::Patients: return ctkDICOMJobListWidget::tr("Query patients"); @@ -168,7 +168,7 @@ QString QCenteredItemModel::getJobTypeAsString(QString jobClass, ctkDICOMJob::DI switch (dicomLevel) { case ctkDICOMJob::DICOMLevels::None: - logger.warn("ctkDICOMScheduler : DICOMLevels was not set."); + logger->warn("ctkDICOMScheduler : DICOMLevels was not set."); return ""; case ctkDICOMJob::DICOMLevels::Patients: return ctkDICOMJobListWidget::tr("Retrieve patients"); diff --git a/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp index 5025d39bf7..44a8bcf071 100644 --- a/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp @@ -36,7 +36,7 @@ //CTK includes #include #include -static ctkLogger logger("org.commontk.DICOM.Widgets.ctkDICOMObjectListWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Widgets.ctkDICOMObjectListWidget")) class qRecursiveTreeProxyFilter : public QSortFilterProxyModel { Q_OBJECT diff --git a/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp index 37eb991781..3928aa2fa6 100644 --- a/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp @@ -44,7 +44,7 @@ #include "ctkDICOMQueryRetrieveWidget.h" #include "ui_ctkDICOMQueryRetrieveWidget.h" -static ctkLogger logger("org.commontk.DICOM.Widgets.ctkDICOMQueryRetrieveWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Widgets.ctkDICOMQueryRetrieveWidget")) //---------------------------------------------------------------------------- class ctkDICOMQueryRetrieveWidgetPrivate: public Ui_ctkDICOMQueryRetrieveWidget @@ -188,7 +188,7 @@ void ctkDICOMQueryRetrieveWidget::query() catch (const std::exception& e) { Q_UNUSED(e); - logger.error("Database error: " + d->QueryResultDatabase.lastError()); + logger->error("Database error: " + d->QueryResultDatabase.lastError()); d->QueryResultDatabase.closeDatabase(); return; } @@ -258,7 +258,7 @@ void ctkDICOMQueryRetrieveWidget::query() catch (const std::exception& e) { Q_UNUSED(e); - logger.error ( "Query error: " + parameters["Name"].toString() ); + logger->error ( "Query error: " + parameters["Name"].toString() ); progress.setLabelText("Query error: " + parameters["Name"].toString()); delete query; } @@ -354,7 +354,7 @@ void ctkDICOMQueryRetrieveWidget::retrieve() ctkDICOMQuery* currentQuery = (queryIt == d->QueriesByStudyUID.end() ? nullptr : *queryIt); if (!currentQuery) { - logger.warn("Retrieve of series " + seriesUID + " failed. No query found for study " + studyUID + "."); + logger->warn("Retrieve of series " + seriesUID + " failed. No query found for study " + studyUID + "."); continue; } @@ -365,8 +365,8 @@ void ctkDICOMQueryRetrieveWidget::retrieve() retrieve->setHost( currentQuery->host() ); // TODO: check the model item to see if it is checked // for now, assume all studies queried and shown to the user will be retrieved - logger.debug("About to retrieve " + seriesUID + " from " + currentQuery->host()); - logger.info ( "Starting to retrieve" ); + logger->debug("About to retrieve " + seriesUID + " from " + currentQuery->host()); + logger->info ( "Starting to retrieve" ); if(d->UseProgressDialog) { @@ -402,7 +402,7 @@ void ctkDICOMQueryRetrieveWidget::retrieve() catch (const std::exception& e) { Q_UNUSED(e); - logger.error ( "Retrieve failed" ); + logger->error ( "Retrieve failed" ); if(d->UseProgressDialog) { if ( QMessageBox::question ( this, @@ -426,7 +426,7 @@ void ctkDICOMQueryRetrieveWidget::retrieve() this, SLOT(updateRetrieveProgress(int))); disconnect(&progress, SIGNAL(canceled()), retrieve, SLOT(cancel())); } - logger.info ( "Retrieve success" ); + logger->info ( "Retrieve success" ); } if (retrieve->dicomDatabase()) @@ -505,7 +505,7 @@ void ctkDICOMQueryRetrieveWidget::updateRetrieveProgress(int value) d->ProgressDialog->resize(targetWidth, d->ProgressDialog->height()); } d->ProgressDialog->setValue( value ); - logger.error(QString("setting value to %1").arg(value) ); + logger->error(QString("setting value to %1").arg(value) ); QApplication::processEvents(); } diff --git a/Libs/DICOM/Widgets/ctkDICOMQueryWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMQueryWidget.cpp index 809b1b2d9c..5f9d858269 100644 --- a/Libs/DICOM/Widgets/ctkDICOMQueryWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMQueryWidget.cpp @@ -30,7 +30,7 @@ //logger #include -static ctkLogger logger("org.commontk.DICOM.Widgets.ctkDICOMQueryWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Widgets.ctkDICOMQueryWidget")) //---------------------------------------------------------------------------- diff --git a/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp b/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp index bdb367b752..3954ef0060 100644 --- a/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp @@ -54,7 +54,7 @@ #include "ctkDICOMServerNodeWidget2.h" #include "ui_ctkDICOMServerNodeWidget2.h" -static ctkLogger logger("org.commontk.DICOM.Widgets.DICOMServerNodeWidget2"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Widgets.DICOMServerNodeWidget2")) QColor ctkDICOMServerNodeWidget2DefaultColor(Qt::white); QColor ctkDICOMServerNodeWidget2DarkModeDefaultColor(50, 50, 50); QColor ctkDICOMServerNodeWidget2ModifiedColor(Qt::darkYellow); @@ -579,7 +579,7 @@ int ctkDICOMServerNodeWidget2Private::addServerNode(const QMapgetServerNodeRowFromConnectionName(node["Name"].toString()) != -1) { - logger.warn("addServerNode failed: the server has a duplicate. The connection name has to be unique \n"); + logger->warn("addServerNode failed: the server has a duplicate. The connection name has to be unique \n"); return -1; } @@ -699,7 +699,7 @@ int ctkDICOMServerNodeWidget2Private::addServerNode(ctkDICOMServer* server) if (this->getServerNodeRowFromConnectionName(server->connectionName()) != -1) { - logger.debug("addServerNode failed: the server has a duplicate. The connection name has to be unique \n"); + logger->debug("addServerNode failed: the server has a duplicate. The connection name has to be unique \n"); return -1; } @@ -1665,7 +1665,7 @@ int ctkDICOMServerNodeWidget2::serversCount() Q_D(ctkDICOMServerNodeWidget2); if (!d->Scheduler) { - logger.error("serversCount failed, no task pool has been set. \n"); + logger->error("serversCount failed, no task pool has been set. \n"); return -1; } @@ -1678,7 +1678,7 @@ ctkDICOMServer* ctkDICOMServerNodeWidget2::server(int id) Q_D(ctkDICOMServerNodeWidget2); if (!d->Scheduler) { - logger.error("server failed, no task pool has been set. \n"); + logger->error("server failed, no task pool has been set. \n"); return nullptr; } @@ -1691,7 +1691,7 @@ ctkDICOMServer* ctkDICOMServerNodeWidget2::server(const QString& connectionName) Q_D(ctkDICOMServerNodeWidget2); if (!d->Scheduler) { - logger.error("server failed, no task pool has been set. \n"); + logger->error("server failed, no task pool has been set. \n"); return nullptr; } @@ -1704,7 +1704,7 @@ int ctkDICOMServerNodeWidget2::addServer(ctkDICOMServer* server) Q_D(ctkDICOMServerNodeWidget2); if (!d->Scheduler) { - logger.error("addServer failed, no task pool has been set. \n"); + logger->error("addServer failed, no task pool has been set. \n"); return -1; } @@ -1719,7 +1719,7 @@ void ctkDICOMServerNodeWidget2::removeServer(const QString& connectionName) Q_D(ctkDICOMServerNodeWidget2); if (!d->Scheduler) { - logger.error("removeServer failed, no task pool has been set. \n"); + logger->error("removeServer failed, no task pool has been set. \n"); return; } @@ -1732,7 +1732,7 @@ void ctkDICOMServerNodeWidget2::removeServer(int id) Q_D(ctkDICOMServerNodeWidget2); if (!d->Scheduler) { - logger.error("removeServer failed, no task pool has been set. \n"); + logger->error("removeServer failed, no task pool has been set. \n"); return; } @@ -1748,7 +1748,7 @@ void ctkDICOMServerNodeWidget2::removeAllServers() Q_D(ctkDICOMServerNodeWidget2); if (!d->Scheduler) { - logger.error("removeAllServers failed, no task pool has been set. \n"); + logger->error("removeAllServers failed, no task pool has been set. \n"); return; } @@ -1763,7 +1763,7 @@ QString ctkDICOMServerNodeWidget2::getServerNameFromIndex(int id) Q_D(ctkDICOMServerNodeWidget2); if (!d->Scheduler) { - logger.error("getServerNameFromIndex failed, no task pool has been set. \n"); + logger->error("getServerNameFromIndex failed, no task pool has been set. \n"); return ""; } @@ -1776,7 +1776,7 @@ int ctkDICOMServerNodeWidget2::getServerIndexFromName(const QString& connectionN Q_D(ctkDICOMServerNodeWidget2); if (!d->Scheduler) { - logger.error("getServerIndexFromName failed, no task pool has been set. \n"); + logger->error("getServerIndexFromName failed, no task pool has been set. \n"); return -1; } diff --git a/Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp index e2b256c775..aa1b216bef 100644 --- a/Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp @@ -53,7 +53,7 @@ // DCMTK includes #include -static ctkLogger logger("org.commontk.DICOM.Widgets.DICOMThumbnailListWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Widgets.DICOMThumbnailListWidget")) Q_DECLARE_METATYPE(QPersistentModelIndex); @@ -157,7 +157,7 @@ ::addSeriesThumbnails(const QModelIndex &index) model->fetchMore(seriesIndex); const int imageCount = model->rowCount(seriesIndex); - logger.debug(QString("Thumbs: %1").arg(imageCount)); + logger->debug(QString("Thumbs: %1").arg(imageCount)); for (int i = 0 ; i < imageCount ; i++ ) { QModelIndex imageIndex = ctk::modelChildIndex(model, seriesIndex, i, 0); @@ -195,7 +195,7 @@ ::addThumbnailWidget(const QModelIndex& imageIndex, QString widgetLabel = text; widget->setText( widgetLabel ); QPixmap pix(thumbnailPath); - logger.debug("Setting pixmap to " + thumbnailPath); + logger->debug("Setting pixmap to " + thumbnailPath); if(this->ThumbnailSize.isValid()) { widget->setFixedSize(this->ThumbnailSize); diff --git a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp index 22f41a8eab..8ab9e82411 100644 --- a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp @@ -76,7 +76,7 @@ #include "ctkDICOMVisualBrowserWidget.h" #include "ui_ctkDICOMVisualBrowserWidget.h" -static ctkLogger logger("org.commontk.DICOM.Widgets.DICOMVisualBrowserWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.DICOM.Widgets.DICOMVisualBrowserWidget")) QColor ctkDICOMVisualBrowserWidgetDefaultColor(Qt::white); QColor ctkDICOMVisualBrowserWidgetDarkModeDefaultColor(50, 50, 50); @@ -235,7 +235,7 @@ ctkDICOMVisualBrowserWidgetPrivate::ctkDICOMVisualBrowserWidgetPrivate(ctkDICOMV this->CustomDateRangeWidget = nullptr; this->FilteringStartDateEdit = nullptr; this->FilteringEndDateEdit = nullptr; - this->FilteringModalities = ctkDICOMModalities::AllModalities; + this->FilteringModalities = ctkDICOMModalities::AllModalities(); this->PatientsAddedDuringImport = 0; this->StudiesAddedDuringImport = 0; @@ -324,8 +324,8 @@ void ctkDICOMVisualBrowserWidgetPrivate::init() // To Do: add an option to disable styling this->FilteringModalityCheckableComboBox->setStyleSheet("combobox-popup: 0;"); - QStringList allModalities = ctkDICOMModalities::AllModalities; - QStringList commonModalities = ctkDICOMModalities::CommonImagingModalities; + QStringList allModalities = ctkDICOMModalities::AllModalities(); + QStringList commonModalities = ctkDICOMModalities::CommonImagingModalities(); QSet otherModalitiesSet = QSet(allModalities.begin(), allModalities.end()); otherModalitiesSet.subtract(QSet(commonModalities.begin(), commonModalities.end())); @@ -574,19 +574,19 @@ void ctkDICOMVisualBrowserWidgetPrivate::importDirectory(QString directory, ctkD { if (!this->DicomDatabase) { - logger.error("importDirectory failed, no DICOM Database has been set. \n"); + logger->error("importDirectory failed, no DICOM Database has been set. \n"); return; } if (!this->Scheduler || !this->Indexer) { - logger.error("importDirectory failed, no task pool has been set. \n"); + logger->error("importDirectory failed, no task pool has been set. \n"); return; } if (!QDir(directory).exists()) { - logger.error(QString("importDirectory failed, input directory %1 does not exist. \n").arg(directory)); + logger->error(QString("importDirectory failed, input directory %1 does not exist. \n").arg(directory)); return; } // Start background indexing @@ -598,13 +598,13 @@ void ctkDICOMVisualBrowserWidgetPrivate::importFiles(const QStringList& files, c { if (!this->DicomDatabase) { - logger.error("importFiles failed, no DICOM Database has been set. \n"); + logger->error("importFiles failed, no DICOM Database has been set. \n"); return; } if (!this->Scheduler || !this->Indexer) { - logger.error("importFiles failed, no task pool has been set. \n"); + logger->error("importFiles failed, no task pool has been set. \n"); return; } @@ -666,7 +666,7 @@ void ctkDICOMVisualBrowserWidgetPrivate::updateModalityCheckableComboBox() bool shouldCheckAllCommon = this->PreviousFilteringModalities.contains("Any") && !this->FilteringModalities.contains("Any"); - bool shouldUncheckAll = this->PreviousFilteringModalities == ctkDICOMModalities::CommonImagingModalities; + bool shouldUncheckAll = this->PreviousFilteringModalities == ctkDICOMModalities::CommonImagingModalities(); bool shouldCheckAll = !this->PreviousFilteringModalities.contains("Any") && this->FilteringModalities.contains("Any"); if (shouldUncheckAll) @@ -692,7 +692,7 @@ void ctkDICOMVisualBrowserWidgetPrivate::updateModalityCheckableComboBox() } else if (shouldCheckAllCommon) { - this->FilteringModalities = ctkDICOMModalities::CommonImagingModalities; + this->FilteringModalities = ctkDICOMModalities::CommonImagingModalities(); } // First, uncheck all items @@ -764,13 +764,13 @@ QString ctkDICOMVisualBrowserWidgetPrivate::createPatients(bool queryRetrieve, if (!this->DicomDatabase) { - logger.error("createPatients failed, no DICOM database has been set. \n"); + logger->error("createPatients failed, no DICOM database has been set. \n"); return QString(); } if (!this->PatientModel) { - logger.error("createPatients failed, no PatientModel has been set. \n"); + logger->error("createPatients failed, no PatientModel has been set. \n"); return QString(); } @@ -885,7 +885,7 @@ QString ctkDICOMVisualBrowserWidgetPrivate::createPatients(bool queryRetrieve, "The server settings section is below.\n" "Check also the allowed servers at patient level." ); - logger.warn(warningText); + logger->warn(warningText); this->WarningPushButton->setText(warningText); this->WarningPushButton->show(); q->openServerSettingsSection(); @@ -921,8 +921,8 @@ void ctkDICOMVisualBrowserWidgetPrivate::resetFilters() this->FilteringDate = ctkDICOMVisualBrowserWidget::Any; this->FilteringDateComboBox->setCurrentIndex(static_cast(this->FilteringDate)); this->PatientModel->setDateFilter(static_cast(this->FilteringDate)); - this->PreviousFilteringModalities = ctkDICOMModalities::AllModalities; - this->FilteringModalities = ctkDICOMModalities::AllModalities; + this->PreviousFilteringModalities = ctkDICOMModalities::AllModalities(); + this->FilteringModalities = ctkDICOMModalities::AllModalities(); this->updateModalityCheckableComboBox(); @@ -950,13 +950,13 @@ void ctkDICOMVisualBrowserWidgetPrivate::updateFiltersWarnings() { if (!this->DicomDatabase) { - logger.error("updateFiltersWarnings failed, no DICOM database has been set. \n"); + logger->error("updateFiltersWarnings failed, no DICOM database has been set. \n"); return; } if (!this->PatientModel) { - logger.error("updateFiltersWarnings failed, no PatientModel has been set. \n"); + logger->error("updateFiltersWarnings failed, no PatientModel has been set. \n"); return; } @@ -1234,7 +1234,7 @@ QStringList ctkDICOMVisualBrowserWidgetPrivate::filterPatientList(const QStringL QStringList filteredPatientList; if (!this->DicomDatabase) { - logger.error("filterPatientList failed, no DICOM Database has been set. \n"); + logger->error("filterPatientList failed, no DICOM Database has been set. \n"); return filteredPatientList; } @@ -1270,7 +1270,7 @@ QStringList ctkDICOMVisualBrowserWidgetPrivate::filterStudyList(const QStringLis QStringList filteredStudyList; if (!this->DicomDatabase) { - logger.error("filterStudyList failed, no DICOM Database has been set. \n"); + logger->error("filterStudyList failed, no DICOM Database has been set. \n"); return filteredStudyList; } @@ -1322,7 +1322,7 @@ QStringList ctkDICOMVisualBrowserWidgetPrivate::filterSeriesList(const QStringLi QStringList filteredSeriesList; if (!this->DicomDatabase) { - logger.error("filterSeriesList failed, no DICOM Database has been set. \n"); + logger->error("filterSeriesList failed, no DICOM Database has been set. \n"); return filteredSeriesList; } @@ -1609,7 +1609,7 @@ void ctkDICOMVisualBrowserWidget::setTagsToPrecache(const QStringList& tags) Q_D(ctkDICOMVisualBrowserWidget); if (!d->DicomDatabase) { - logger.error("setTagsToPrecache failed, no DICOM Database has been set. \n"); + logger->error("setTagsToPrecache failed, no DICOM Database has been set. \n"); return; } @@ -1622,7 +1622,7 @@ const QStringList ctkDICOMVisualBrowserWidget::tagsToPrecache() Q_D(ctkDICOMVisualBrowserWidget); if (!d->DicomDatabase) { - logger.error("Get tagsToPrecache failed, no DICOM Database has been set. \n"); + logger->error("Get tagsToPrecache failed, no DICOM Database has been set. \n"); return QStringList(); } @@ -1926,7 +1926,7 @@ void ctkDICOMVisualBrowserWidget::setDatabaseDirectory(const QString& directory) Q_D(ctkDICOMVisualBrowserWidget); if (!d->DicomDatabase) { - logger.error("setDatabaseDirectory failed, no DICOM database has been set. \n"); + logger->error("setDatabaseDirectory failed, no DICOM database has been set. \n"); return; } @@ -1942,7 +1942,7 @@ void ctkDICOMVisualBrowserWidget::setDatabaseDirectory(const QString& directory) if (!QDir(absDirectory).exists() || (!ctk::isDirEmpty(QDir(absDirectory)) && !QFile(databaseFileName).exists())) { - logger.warn("Database folder does not contain ctkDICOM.sql file: " + absDirectory + "\n"); + logger->warn("Database folder does not contain ctkDICOM.sql file: " + absDirectory + "\n"); d->DatabaseDirectoryProblemFrame->show(); d->DatabaseDirectoryProblemLabel->setText( //: %1 is the folder path @@ -1969,7 +1969,7 @@ void ctkDICOMVisualBrowserWidget::setDatabaseDirectory(const QString& directory) } if (!databaseOpenSuccess || d->DicomDatabase->schemaVersionLoaded().isEmpty()) { - logger.warn(tr("Database error: %1 \n").arg(d->DicomDatabase->lastError())); + logger->warn(tr("Database error: %1 \n").arg(d->DicomDatabase->lastError())); d->DicomDatabase->closeDatabase(); d->DatabaseDirectoryProblemFrame->show(); d->DatabaseDirectoryProblemLabel->setText( @@ -1987,7 +1987,7 @@ void ctkDICOMVisualBrowserWidget::setDatabaseDirectory(const QString& directory) { if (d->DicomDatabase->schemaVersionLoaded() != d->DicomDatabase->schemaVersion()) { - logger.warn(QString("Database version mismatch: version of selected database = %1, version required = %2 \n") + logger->warn(QString("Database version mismatch: version of selected database = %1, version required = %2 \n") .arg(d->DicomDatabase->schemaVersionLoaded(), d->DicomDatabase->schemaVersion())); d->DicomDatabase->closeDatabase(); d->DatabaseDirectoryProblemFrame->show(); @@ -2069,7 +2069,7 @@ void ctkDICOMVisualBrowserWidget::waitForImportFinished() Q_D(ctkDICOMVisualBrowserWidget); if (!d->Scheduler || !d->Indexer) { - logger.error("waitForImportFinished failed, no task pool has been set. \n"); + logger->error("waitForImportFinished failed, no task pool has been set. \n"); return; } d->Indexer->waitForImportFinished(); @@ -2457,7 +2457,7 @@ void ctkDICOMVisualBrowserWidget::onQueryPatients() if (!d->DicomDatabase) { - logger.error("onQueryPatients failed, no DICOM database has been set. \n"); + logger->error("onQueryPatients failed, no DICOM database has been set. \n"); return; } @@ -2480,7 +2480,7 @@ void ctkDICOMVisualBrowserWidget::onQueryPatients() d->SearchPushButton->setIcon(QIcon(":/Icons/query_failed.svg")); QString warningText = tr("No server is configured for query/retrieve operations.\n" "The server settings section is below."); - logger.warn(warningText); + logger->warn(warningText); d->WarningPushButton->setText(warningText); d->WarningPushButton->show(); this->openServerSettingsSection(); @@ -2493,7 +2493,7 @@ void ctkDICOMVisualBrowserWidget::onQueryPatients() d->SearchPushButton->setIcon(QIcon(":/Icons/query_failed.svg")); QString warningText = tr("No filters are set and no patients are found in the local database.\n" "Please specify at least one filter to query the servers."); - logger.warn(warningText); + logger->warn(warningText); d->WarningPushButton->setText(warningText); d->WarningPushButton->show(); return; @@ -3551,13 +3551,13 @@ void ctkDICOMVisualBrowserWidget::onLoadSeries(const QStringList& seriesInstance if (!d->Scheduler) { - logger.error("onLoadSeries failed, no scheduler has been set. \n"); + logger->error("onLoadSeries failed, no scheduler has been set. \n"); return; } if (!d->DicomDatabase) { - logger.error("onLoadSeries failed, no DicomDatabase has been set. \n"); + logger->error("onLoadSeries failed, no DicomDatabase has been set. \n"); return; } @@ -3769,13 +3769,13 @@ void ctkDICOMVisualBrowserWidget::forceRetrieveSeries(const QStringList& seriesI if (!d->Scheduler) { - logger.error("forceRetrieveSeries failed, no scheduler has been set. \n"); + logger->error("forceRetrieveSeries failed, no scheduler has been set. \n"); return; } if (!d->DicomDatabase) { - logger.error("forceRetrieveSeries failed, no DicomDatabase has been set. \n"); + logger->error("forceRetrieveSeries failed, no DicomDatabase has been set. \n"); return; } @@ -3966,7 +3966,7 @@ void ctkDICOMVisualBrowserWidget::exportSeriesToDirectory(const QString& dirPath Q_D(ctkDICOMVisualBrowserWidget); if (!d->DicomDatabase) { - logger.error("exportSeries failed, no DICOM database has been set. \n"); + logger->error("exportSeries failed, no DICOM database has been set. \n"); return; } @@ -4265,7 +4265,7 @@ bool ctkDICOMVisualBrowserWidget::confirmDeleteSelectedUIDs(const QStringList& u Q_D(ctkDICOMVisualBrowserWidget); if (!d->DicomDatabase) { - logger.error("confirmDeleteSelectedUIDs failed, no DICOM database has been set. \n"); + logger->error("confirmDeleteSelectedUIDs failed, no DICOM database has been set. \n"); return false; } diff --git a/Libs/PluginFramework/ctkBasicLocation.cpp b/Libs/PluginFramework/ctkBasicLocation.cpp index db969193b7..ef2e9ec152 100644 --- a/Libs/PluginFramework/ctkBasicLocation.cpp +++ b/Libs/PluginFramework/ctkBasicLocation.cpp @@ -37,8 +37,16 @@ #include #include -static const QString PROP_OSGI_LOCKING = "blueberry.locking"; -static const QString DEFAULT_LOCK_FILENAME = ".metadata/.lock"; +static const QString& PROP_OSGI_LOCKING() +{ + static const QString s = QStringLiteral("blueberry.locking"); + return s; +} +static const QString& DEFAULT_LOCK_FILENAME() +{ + static const QString s = QStringLiteral(".metadata/.lock"); + return s; +} //---------------------------------------------------------------------------- @@ -254,7 +262,7 @@ bool ctkBasicLocation::set_unlocked(const QUrl& value_, bool lock, const QString } else { - file = QFileInfo(QDir(value.toLocalFile()), DEFAULT_LOCK_FILENAME); + file = QFileInfo(QDir(value.toLocalFile()), DEFAULT_LOCK_FILENAME()); } } lock = lock && !this->m_isReadOnly; @@ -394,7 +402,7 @@ void ctkBasicLocation::setLocker_unlocked(const QFileInfo& lock) { if (this->m_locker != NULL) return; - QString lockMode = ctkPluginFrameworkProperties::getProperty(PROP_OSGI_LOCKING).toString(); + QString lockMode = ctkPluginFrameworkProperties::getProperty(PROP_OSGI_LOCKING()).toString(); this->m_locker = this->createLocker_unlocked(lock, lockMode); } @@ -405,7 +413,7 @@ ctkBasicLocation::Locker* ctkBasicLocation::createLocker_unlocked(const QFileInf QString lockMode = lockMode_; if (lockMode.isEmpty()) { - lockMode = ctkPluginFrameworkProperties::getProperty(PROP_OSGI_LOCKING).toString(); + lockMode = ctkPluginFrameworkProperties::getProperty(PROP_OSGI_LOCKING()).toString(); } if (lockMode == "none") diff --git a/Libs/PluginFramework/ctkLocationManager.cpp b/Libs/PluginFramework/ctkLocationManager.cpp index 3f57196968..8ccbfa8c88 100644 --- a/Libs/PluginFramework/ctkLocationManager.cpp +++ b/Libs/PluginFramework/ctkLocationManager.cpp @@ -37,22 +37,66 @@ namespace { // Constants for configuration location discovery -static const QString CTK = "commontk"; -static const QString PRODUCT_SITE_MARKER = ".commontkproduct"; -static const QString PRODUCT_SITE_ID = "id"; -static const QString PRODUCT_SITE_VERSION = "version"; +static const QString& CTK() +{ + static const QString s = QStringLiteral("commontk"); + return s; +} +static const QString& PRODUCT_SITE_MARKER() +{ + static const QString s = QStringLiteral(".commontkproduct"); + return s; +} +static const QString& PRODUCT_SITE_ID() +{ + static const QString s = QStringLiteral("id"); + return s; +} +static const QString& PRODUCT_SITE_VERSION() +{ + static const QString s = QStringLiteral("version"); + return s; +} -static const QString CONFIG_DIR = "configuration"; +static const QString& CONFIG_DIR() +{ + static const QString s = QStringLiteral("configuration"); + return s; +} // Data mode constants for user, configuration and data locations. -static const QString NONE = "@none"; -static const QString NO_DEFAULT = "@noDefault"; -static const QString USER_HOME = "@user.home"; -static const QString USER_DIR = "@user.dir"; +static const QString& NONE() +{ + static const QString s = QStringLiteral("@none"); + return s; +} +static const QString& NO_DEFAULT() +{ + static const QString s = QStringLiteral("@noDefault"); + return s; +} +static const QString& USER_HOME() +{ + static const QString s = QStringLiteral("@user.home"); + return s; +} +static const QString& USER_DIR() +{ + static const QString s = QStringLiteral("@user.dir"); + return s; +} // Placeholder for hashcode of installation directory -static const QString INSTALL_HASH_PLACEHOLDER = "@install.hash"; +static const QString& INSTALL_HASH_PLACEHOLDER() +{ + static const QString s = QStringLiteral("@install.hash"); + return s; +} -static const QString INSTANCE_DATA_AREA_PREFIX = ".metadata/.plugins/"; +static const QString& INSTANCE_DATA_AREA_PREFIX() +{ + static const QString s = QStringLiteral(".metadata/.plugins/"); + return s; +} static QScopedPointer installLocation; static QScopedPointer configurationLocation; @@ -117,32 +161,32 @@ ctkBasicLocation* BuildLocation(const QString& property, const QUrl& defaultLoca dataAreaPrefix); } QString trimmedLocation = location.trimmed(); - if (trimmedLocation.compare(NONE, Qt::CaseInsensitive) == 0) + if (trimmedLocation.compare(NONE(), Qt::CaseInsensitive) == 0) { return NULL; } - if (trimmedLocation.compare(NO_DEFAULT, Qt::CaseInsensitive) == 0) + if (trimmedLocation.compare(NO_DEFAULT(), Qt::CaseInsensitive) == 0) { return new ctkBasicLocation(property, QUrl(), readOnly, dataAreaPrefix); } - if (trimmedLocation.startsWith(USER_HOME)) + if (trimmedLocation.startsWith(USER_HOME())) { - QString base = SubstituteVar(location, USER_HOME, ctkPluginFrameworkLauncher::PROP_USER_HOME); + QString base = SubstituteVar(location, USER_HOME(), ctkPluginFrameworkLauncher::PROP_USER_HOME); location = QFileInfo(QDir(base), userDefaultAppendage).absoluteFilePath(); } - else if (trimmedLocation.startsWith(USER_DIR)) + else if (trimmedLocation.startsWith(USER_DIR())) { - QString base = SubstituteVar(location, USER_DIR, ctkPluginFrameworkLauncher::PROP_USER_DIR); + QString base = SubstituteVar(location, USER_DIR(), ctkPluginFrameworkLauncher::PROP_USER_DIR); location = QFileInfo(QDir(base), userDefaultAppendage).absoluteFilePath(); } - int idx = location.indexOf(INSTALL_HASH_PLACEHOLDER); + int idx = location.indexOf(INSTALL_HASH_PLACEHOLDER()); if (idx == 0) { - throw ctkRuntimeException("The location cannot start with '" + INSTALL_HASH_PLACEHOLDER + "': " + location); + throw ctkRuntimeException("The location cannot start with '" + INSTALL_HASH_PLACEHOLDER() + "': " + location); } else if (idx > 0) { - location = location.left(idx) + GetInstallDirHash() + location.mid(idx + INSTALL_HASH_PLACEHOLDER.size()); + location = location.left(idx) + GetInstallDirHash() + location.mid(idx + INSTALL_HASH_PLACEHOLDER().size()); } QUrl url = BuildUrl(location, true); ctkBasicLocation* result = NULL; @@ -218,7 +262,7 @@ static QString ComputeDefaultConfigurationLocation() if (installURL.isValid() && installURL.scheme() == "file") { QDir installDir(installURL.toLocalFile()); - QFileInfo defaultConfigDir(installDir, CONFIG_DIR); + QFileInfo defaultConfigDir(installDir, CONFIG_DIR()); if (!defaultConfigDir.exists()) { installDir.mkpath(defaultConfigDir.absoluteFilePath()); @@ -229,7 +273,7 @@ static QString ComputeDefaultConfigurationLocation() } } // We can't write in the CTK install dir so try for some place in the user's home dir - return ComputeDefaultUserAreaLocation(CONFIG_DIR); + return ComputeDefaultUserAreaLocation(CONFIG_DIR()); } //---------------------------------------------------------------------------- @@ -280,18 +324,18 @@ static QString ComputeDefaultUserAreaLocation(const QString& pathAppendage) QFileInfo installDir(installURL.toLocalFile()); QString installDirHash = GetInstallDirHash(); - QString appName = "." + CTK; - QFileInfo ctkProduct(QDir(installDir.absoluteFilePath()), PRODUCT_SITE_MARKER); + QString appName = "." + CTK(); + QFileInfo ctkProduct(QDir(installDir.absoluteFilePath()), PRODUCT_SITE_MARKER()); if (ctkProduct.exists()) { QSettings props(ctkProduct.absoluteFilePath(), QSettings::IniFormat); - QString appId = props.value(PRODUCT_SITE_ID).toString(); + QString appId = props.value(PRODUCT_SITE_ID()).toString(); if (appId.trimmed().isEmpty()) { - appId = CTK; + appId = CTK(); } - QString appVersion = props.value(PRODUCT_SITE_VERSION).toString(); + QString appVersion = props.value(PRODUCT_SITE_VERSION()).toString(); if (appVersion.trimmed().isEmpty()) { appVersion = ""; @@ -366,13 +410,13 @@ void ctkLocationManager::initializeLocations() } userLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_USER_AREA, defaultLocation, "", false, false, QString())); - temp.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_INSTANCE_AREA_DEFAULT, QUrl(), "", false, false, INSTANCE_DATA_AREA_PREFIX)); + temp.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_INSTANCE_AREA_DEFAULT, QUrl(), "", false, false, INSTANCE_DATA_AREA_PREFIX())); defaultLocation = temp ? temp->getUrl() : QUrl(); if (!defaultLocation.isValid()) { defaultLocation = BuildUrl(QFileInfo(QDir(ctkPluginFrameworkProperties::getProperty(ctkPluginFrameworkLauncher::PROP_USER_DIR).toString()), "workspace").absoluteFilePath(), true); } - instanceLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_INSTANCE_AREA, defaultLocation, "", false, false, INSTANCE_DATA_AREA_PREFIX)); + instanceLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_INSTANCE_AREA, defaultLocation, "", false, false, INSTANCE_DATA_AREA_PREFIX())); //mungeConfigurationLocation(); diff --git a/Libs/PluginFramework/ctkPluginFrameworkDebug.cpp b/Libs/PluginFramework/ctkPluginFrameworkDebug.cpp index 101968372e..4cbe6039c8 100644 --- a/Libs/PluginFramework/ctkPluginFrameworkDebug.cpp +++ b/Libs/PluginFramework/ctkPluginFrameworkDebug.cpp @@ -25,18 +25,22 @@ #include "ctkPluginFrameworkDebugOptions_p.h" #include "ctkPluginFrameworkProperties_p.h" -static QString CTK_OSGI = "org.commontk.pluginfw"; - -QString ctkPluginFrameworkDebug::OPTION_DEBUG_GENERAL = CTK_OSGI + "/debug"; -QString ctkPluginFrameworkDebug::OPTION_DEBUG_FRAMEWORK = CTK_OSGI + "/debug/framework"; -QString ctkPluginFrameworkDebug::OPTION_DEBUG_ERRORS = CTK_OSGI + "/debug/errors"; -QString ctkPluginFrameworkDebug::OPTION_DEBUG_HOOKS = CTK_OSGI + "/debug/hooks"; -QString ctkPluginFrameworkDebug::OPTION_DEBUG_LAZY_ACTIVATION = CTK_OSGI + "/debug/lazy_activation"; -QString ctkPluginFrameworkDebug::OPTION_DEBUG_LDAP = CTK_OSGI + "/debug/ldap"; -QString ctkPluginFrameworkDebug::OPTION_DEBUG_SERVICE_REFERENCE = CTK_OSGI + "/debug/service_reference"; -QString ctkPluginFrameworkDebug::OPTION_DEBUG_STARTLEVEL = CTK_OSGI + "/debug/startlevel"; -QString ctkPluginFrameworkDebug::OPTION_DEBUG_URL = CTK_OSGI + "/debug/url"; -QString ctkPluginFrameworkDebug::OPTION_DEBUG_RESOLVE = CTK_OSGI + "/debug/resolve"; +static const QString& CTK_OSGI() +{ + static const QString s = QStringLiteral("org.commontk.pluginfw"); + return s; +} + +QString ctkPluginFrameworkDebug::OPTION_DEBUG_GENERAL = CTK_OSGI() + "/debug"; +QString ctkPluginFrameworkDebug::OPTION_DEBUG_FRAMEWORK = CTK_OSGI() + "/debug/framework"; +QString ctkPluginFrameworkDebug::OPTION_DEBUG_ERRORS = CTK_OSGI() + "/debug/errors"; +QString ctkPluginFrameworkDebug::OPTION_DEBUG_HOOKS = CTK_OSGI() + "/debug/hooks"; +QString ctkPluginFrameworkDebug::OPTION_DEBUG_LAZY_ACTIVATION = CTK_OSGI() + "/debug/lazy_activation"; +QString ctkPluginFrameworkDebug::OPTION_DEBUG_LDAP = CTK_OSGI() + "/debug/ldap"; +QString ctkPluginFrameworkDebug::OPTION_DEBUG_SERVICE_REFERENCE = CTK_OSGI() + "/debug/service_reference"; +QString ctkPluginFrameworkDebug::OPTION_DEBUG_STARTLEVEL = CTK_OSGI() + "/debug/startlevel"; +QString ctkPluginFrameworkDebug::OPTION_DEBUG_URL = CTK_OSGI() + "/debug/url"; +QString ctkPluginFrameworkDebug::OPTION_DEBUG_RESOLVE = CTK_OSGI() + "/debug/resolve"; //---------------------------------------------------------------------------- ctkPluginFrameworkDebug::ctkPluginFrameworkDebug() diff --git a/Libs/PluginFramework/ctkPluginFrameworkLauncher.cpp b/Libs/PluginFramework/ctkPluginFrameworkLauncher.cpp index a77a08ebf8..b02ee99beb 100644 --- a/Libs/PluginFramework/ctkPluginFrameworkLauncher.cpp +++ b/Libs/PluginFramework/ctkPluginFrameworkLauncher.cpp @@ -82,7 +82,11 @@ const QString ctkPluginFrameworkLauncher::PROP_APPLICATION_LAUNCHDEFAULT = "ctk. const QString ctkPluginFrameworkLauncher::PROP_OSGI_RELAUNCH = "ctk.pluginfw.relaunch"; -static const QString PROP_FORCED_RESTART = "ctk.forcedRestart"; +static const QString& PROP_FORCED_RESTART() +{ + static const QString s = QStringLiteral("ctk.forcedRestart"); + return s; +} class ctkPluginFrameworkLauncherPrivate { @@ -108,7 +112,7 @@ class ctkPluginFrameworkLauncherPrivate //---------------------------------------------------------------------------- bool isForcedRestart() const { - return ctkPluginFrameworkProperties::getProperty(PROP_FORCED_RESTART).toBool(); + return ctkPluginFrameworkProperties::getProperty(PROP_FORCED_RESTART()).toBool(); } //---------------------------------------------------------------------------- diff --git a/Libs/Visualization/VTK/Core/ctkVTKScalarsToColorsUtils.cpp b/Libs/Visualization/VTK/Core/ctkVTKScalarsToColorsUtils.cpp index 66a2cdd224..fb057e20b0 100644 --- a/Libs/Visualization/VTK/Core/ctkVTKScalarsToColorsUtils.cpp +++ b/Libs/Visualization/VTK/Core/ctkVTKScalarsToColorsUtils.cpp @@ -28,8 +28,7 @@ #include // ---------------------------------------------------------------------------- -static ctkLogger logger( - "org.commontk.visualization.vtk.core.ctkVTKScalarsToColorsUtils"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.visualization.vtk.core.ctkVTKScalarsToColorsUtils")) // ---------------------------------------------------------------------------- void ctk::remapColorScale( diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.cpp index 76b46320be..d13756f42d 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.cpp @@ -37,7 +37,7 @@ #include //-------------------------------------------------------------------------- -static ctkLogger logger("org.commontk.visualization.vtk.widgets.ctkVTKAbstractView"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.visualization.vtk.widgets.ctkVTKAbstractView")) //-------------------------------------------------------------------------- int ctkVTKAbstractViewPrivate::MultiSamples = 0; // Default for static var //-------------------------------------------------------------------------- @@ -179,7 +179,7 @@ void ctkVTKAbstractView::scheduleRender() { Q_D(ctkVTKAbstractView); - //logger.trace(QString("scheduleRender - RenderEnabled: %1 - Request render elapsed: %2ms"). + //logger->trace(QString("scheduleRender - RenderEnabled: %1 - Request render elapsed: %2ms"). // arg(d->RenderEnabled ? "true" : "false") // .arg(d->RequestTime.elapsed())); @@ -250,7 +250,7 @@ void ctkVTKAbstractView::forceRender() d->RequestTime = QTime(); #endif - //logger.trace(QString("forceRender - RenderEnabled: %1") + //logger->trace(QString("forceRender - RenderEnabled: %1") // .arg(d->RenderEnabled ? "true" : "false")); if (!d->RenderEnabled || !this->isVisible()) diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKChartView.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKChartView.cpp index e1bd9ae0e0..821af5de93 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKChartView.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKChartView.cpp @@ -41,7 +41,7 @@ #include //---------------------------------------------------------------------------- -static ctkLogger logger("org.commontk.visualization.vtk.widgets.ctkVTKChartView"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.visualization.vtk.widgets.ctkVTKChartView")) //---------------------------------------------------------------------------- class ctkVTKChartViewPrivate diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKColorTransferFunction.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKColorTransferFunction.cpp index ba06b55ee1..824f6fceff 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKColorTransferFunction.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKColorTransferFunction.cpp @@ -31,7 +31,7 @@ #include //-------------------------------------------------------------------------- -static ctkLogger logger("org.commontk.libs.visualization.core.ctkVTKColorTransferFunction"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.libs.visualization.core.ctkVTKColorTransferFunction")) //-------------------------------------------------------------------------- //----------------------------------------------------------------------------- @@ -92,7 +92,7 @@ void ctkVTKColorTransferFunction::range(qreal& minRange, qreal& maxRange)const if (d->ColorTransferFunction.GetPointer() == 0) { //Q_ASSERT(d->ColorTransferFunction.GetPointer()); - logger.warn("no ColorTransferFunction"); + logger->warn("no ColorTransferFunction"); minRange = 1.; maxRange = 0.; return; @@ -110,7 +110,7 @@ QVariant ctkVTKColorTransferFunction::minValue()const if (d->ColorTransferFunction.GetPointer() == 0) { //Q_ASSERT(d->ColorTransferFunction.GetPointer()); - logger.warn("no ColorTransferFunction"); + logger->warn("no ColorTransferFunction"); return -1; } double rgb[3]; @@ -138,7 +138,7 @@ QVariant ctkVTKColorTransferFunction::maxValue()const if (d->ColorTransferFunction.GetPointer() == 0) { //Q_ASSERT(d->ColorTransferFunction.GetPointer()); - logger.warn("no ColorTransferFunction"); + logger->warn("no ColorTransferFunction"); return -1; } double rgb[3]; diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKHistogram.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKHistogram.cpp index 0830d4c5ba..6a5670b15a 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKHistogram.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKHistogram.cpp @@ -36,7 +36,7 @@ #include //-------------------------------------------------------------------------- -static ctkLogger logger("org.commontk.libs.visualization.core.ctkVTKHistogram"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.libs.visualization.core.ctkVTKHistogram")) //-------------------------------------------------------------------------- //----------------------------------------------------------------------------- @@ -116,14 +116,14 @@ void ctkVTKHistogram::setRange(qreal minRange, qreal maxRange) Q_D(const ctkVTKHistogram); if (d->DataArray.GetPointer() == 0) { - logger.warn("no data array. range will be reset when setting array."); + logger->warn("no data array. range will be reset when setting array."); minRange = 1.; // set incorrect values maxRange = 0.; return; } if (minRange >= maxRange) { - logger.warn("minRange >= maxRange"); + logger->warn("minRange >= maxRange"); qreal pivot = minRange; minRange = maxRange; maxRange = pivot; @@ -144,7 +144,7 @@ void ctkVTKHistogram::range(qreal& minRange, qreal& maxRange)const Q_D(const ctkVTKHistogram); if (d->DataArray.GetPointer() == 0) { - logger.warn("no dataArray"); + logger->warn("no dataArray"); minRange = 1.; // set incorrect values maxRange = 0.; return; diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp index 8898d1b195..598bd47656 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKMagnifyView.cpp @@ -40,7 +40,7 @@ #include //-------------------------------------------------------------------------- -static ctkLogger logger("org.commontk.visualization.vtk.widgets.ctkVTKMagnifyView"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.visualization.vtk.widgets.ctkVTKMagnifyView")) //-------------------------------------------------------------------------- // -------------------------------------------------------------------------- diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsView.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsView.cpp index 7ea541d813..e49dc6a2fb 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsView.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsView.cpp @@ -44,7 +44,7 @@ #include // For VTK_VERSION_CHECK //---------------------------------------------------------------------------- -static ctkLogger logger("org.commontk.visualization.vtk.widgets.ctkVTKScalarsToColorsView"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.visualization.vtk.widgets.ctkVTKScalarsToColorsView")) //---------------------------------------------------------------------------- class ctkVTKScalarsToColorsViewPrivate diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsWidget.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsWidget.cpp index 8354f54f53..58c8a61823 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsWidget.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsWidget.cpp @@ -45,7 +45,7 @@ #include //---------------------------------------------------------------------------- -static ctkLogger logger("org.commontk.visualization.vtk.widgets.ctkVTKScalarsToColorsWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.visualization.vtk.widgets.ctkVTKScalarsToColorsWidget")) //---------------------------------------------------------------------------- class ctkVTKScalarsToColorsWidgetPrivate: diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKThresholdWidget.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKThresholdWidget.cpp index 9136a0e42f..1e03c4deac 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKThresholdWidget.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKThresholdWidget.cpp @@ -34,7 +34,7 @@ #include // for pow //---------------------------------------------------------------------------- -static ctkLogger logger("org.commontk.visualization.vtk.widgets.ctkVTKThresholdWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.visualization.vtk.widgets.ctkVTKThresholdWidget")) //---------------------------------------------------------------------------- class ctkVTKThresholdWidgetPrivate: diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKThumbnailView.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKThumbnailView.cpp index 9bc8bfbe49..0a1026afb0 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKThumbnailView.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKThumbnailView.cpp @@ -41,7 +41,7 @@ #include //-------------------------------------------------------------------------- -static ctkLogger logger("org.slicer.libs.qmrmlwidgets.ctkVTKThumbnailView"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.slicer.libs.qmrmlwidgets.ctkVTKThumbnailView")) //-------------------------------------------------------------------------- #define DEGREES2RADIANS 0.0174532925 @@ -340,7 +340,7 @@ void ctkVTKThumbnailViewPrivate::resetCamera() if (!ren || !cam) { - logger.error("Trying to reset non-existent camera"); + logger->error("Trying to reset non-existent camera"); return; } @@ -349,7 +349,7 @@ void ctkVTKThumbnailViewPrivate::resetCamera() if (!vtkMath::AreBoundsInitialized(bounds)) { - logger.error("Cannot reset camera!"); + logger->error("Cannot reset camera!"); return; } ren->InvokeEvent(vtkCommand::ResetCameraEvent, ren); @@ -395,7 +395,7 @@ void ctkVTKThumbnailViewPrivate::resetCamera() double* vup = cam->GetViewUp(); if ( fabs(vtkMath::Dot(vup,vn)) > 0.999 ) { - logger.warn("Resetting view-up since view plane normal is parallel"); + logger->warn("Resetting view-up since view plane normal is parallel"); cam->SetViewUp(-vup[2], vup[0], vup[1]); } diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.cpp index 33cada4a3c..0941ef8c42 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.cpp @@ -44,7 +44,7 @@ #include //---------------------------------------------------------------------------- -static ctkLogger logger("org.commontk.visualization.vtk.widgets.ctkVTKVolumePropertyWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.visualization.vtk.widgets.ctkVTKVolumePropertyWidget")) //---------------------------------------------------------------------------- class ctkVTKVolumePropertyWidgetPrivate: diff --git a/Libs/Widgets/ctkCrosshairLabel.cpp b/Libs/Widgets/ctkCrosshairLabel.cpp index 2869c0a0b8..a01d769abe 100644 --- a/Libs/Widgets/ctkCrosshairLabel.cpp +++ b/Libs/Widgets/ctkCrosshairLabel.cpp @@ -33,7 +33,7 @@ #include //-------------------------------------------------------------------------- -static ctkLogger logger("org.commontk.visualization.vtk.widgets.ctkCrosshairLabel"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.visualization.vtk.widgets.ctkCrosshairLabel")) //-------------------------------------------------------------------------- //----------------------------------------------------------------------------- diff --git a/Libs/Widgets/ctkFlowLayout.cpp b/Libs/Widgets/ctkFlowLayout.cpp index 77fa7f7187..d4e4788324 100644 --- a/Libs/Widgets/ctkFlowLayout.cpp +++ b/Libs/Widgets/ctkFlowLayout.cpp @@ -30,7 +30,7 @@ // STD includes #include -static ctkLogger logger("org.commontk.libs.widgets.ctkFlowLayout"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.libs.widgets.ctkFlowLayout")) //----------------------------------------------------------------------------- class ctkFlowLayoutPrivate diff --git a/Libs/Widgets/ctkMaterialPropertyWidget.cpp b/Libs/Widgets/ctkMaterialPropertyWidget.cpp index 0a017031ad..cbd0a42e95 100644 --- a/Libs/Widgets/ctkMaterialPropertyWidget.cpp +++ b/Libs/Widgets/ctkMaterialPropertyWidget.cpp @@ -29,7 +29,7 @@ #include "ui_ctkMaterialPropertyWidget.h" #include "ctkLogger.h" -static ctkLogger logger("org.commontk.libs.widgets.ctkMaterialPropertyWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.libs.widgets.ctkMaterialPropertyWidget")) //----------------------------------------------------------------------------- class ctkMaterialPropertyWidgetPrivate: public Ui_ctkMaterialPropertyWidget diff --git a/Libs/Widgets/ctkModalityWidget.cpp b/Libs/Widgets/ctkModalityWidget.cpp index ab79c68fb3..d1bad5ad16 100644 --- a/Libs/Widgets/ctkModalityWidget.cpp +++ b/Libs/Widgets/ctkModalityWidget.cpp @@ -31,11 +31,15 @@ // STD includes #include -static ctkLogger logger("org.commontk.libs.widgets.ctkModalityWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.libs.widgets.ctkModalityWidget")) namespace { - QStringList sDefaultVisibleModalities; + const QStringList& sDefaultVisibleModalities() + { + static const QStringList list = {"CT", "MR", "US", "CR", "XA", "NM", "PT"}; + return list; + } } //----------------------------------------------------------------------------- @@ -60,10 +64,6 @@ class ctkModalityWidgetPrivate: public Ui_ctkModalityWidget ctkModalityWidgetPrivate::ctkModalityWidgetPrivate(ctkModalityWidget& object) :q_ptr(&object) { - if (sDefaultVisibleModalities.isEmpty()) - { - sDefaultVisibleModalities << "CT" << "MR" << "US" << "CR" << "XA" << "NM" << "PT"; - } } // -------------------------------------------------------------------------- @@ -126,7 +126,7 @@ void ctkModalityWidgetPrivate::init() delete layout; q->setLayout(flowLayout); - q->setVisibleModalities(sDefaultVisibleModalities); + q->setVisibleModalities(sDefaultVisibleModalities()); QSize sizeHint = flowLayout->sizeHint(); double area = sizeHint.width() * sizeHint.height(); area = sqrt(area); diff --git a/Libs/Widgets/ctkSettingsDialog.cpp b/Libs/Widgets/ctkSettingsDialog.cpp index f34337541b..7ca1a133db 100644 --- a/Libs/Widgets/ctkSettingsDialog.cpp +++ b/Libs/Widgets/ctkSettingsDialog.cpp @@ -31,7 +31,7 @@ #include "ui_ctkSettingsDialog.h" #include "ctkLogger.h" -static ctkLogger logger("org.commontk.libs.widgets.ctkSettingsDialog"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.libs.widgets.ctkSettingsDialog")) //----------------------------------------------------------------------------- class ctkSettingsDialogPrivate: public Ui_ctkSettingsDialog diff --git a/Libs/Widgets/ctkSettingsPanel.cpp b/Libs/Widgets/ctkSettingsPanel.cpp index d46e19d3c6..82ef1bcf4f 100644 --- a/Libs/Widgets/ctkSettingsPanel.cpp +++ b/Libs/Widgets/ctkSettingsPanel.cpp @@ -28,7 +28,7 @@ #include "ctkSettingsPanel.h" #include "ctkLogger.h" -static ctkLogger logger("org.commontk.libs.widgets.ctkSettingsPanel"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.libs.widgets.ctkSettingsPanel")) namespace { @@ -281,7 +281,7 @@ void ctkSettingsPanel::setSetting(const QString& key, const QVariant& newVal) d->Properties[key].setValue(newVal); if (settings->status() != QSettings::NoError) { - logger.warn( QString("Error #%1 while writing setting \"%2\"") + logger->warn( QString("Error #%1 while writing setting \"%2\"") .arg(static_cast(settings->status())) .arg(key)); } diff --git a/Libs/Widgets/ctkThumbnailLabel.cpp b/Libs/Widgets/ctkThumbnailLabel.cpp index 22a4c48309..b1a3c9e2b9 100644 --- a/Libs/Widgets/ctkThumbnailLabel.cpp +++ b/Libs/Widgets/ctkThumbnailLabel.cpp @@ -25,7 +25,7 @@ // ctkCore includes #include "ctkLogger.h" -static ctkLogger logger("org.commontk.Widgets.ctkThumbnailLabel"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.Widgets.ctkThumbnailLabel")) // ctkWidgets includes #include "ctkThumbnailLabel.h" diff --git a/Libs/Widgets/ctkThumbnailListWidget.cpp b/Libs/Widgets/ctkThumbnailListWidget.cpp index 3138707261..82e68e32bf 100644 --- a/Libs/Widgets/ctkThumbnailListWidget.cpp +++ b/Libs/Widgets/ctkThumbnailListWidget.cpp @@ -45,7 +45,7 @@ // STD includes #include -static ctkLogger logger("org.commontk.Widgets.ctkThumbnailListWidget"); +Q_GLOBAL_STATIC_WITH_ARGS(ctkLogger, logger, ("org.commontk.Widgets.ctkThumbnailListWidget")) //---------------------------------------------------------------------------- // ctkThumbnailListWidgetPrivate methods @@ -209,7 +209,7 @@ void ctkThumbnailListWidget::setCurrentThumbnail(int index) int count = d->ScrollAreaContentWidget->layout()->count(); - logger.debug("Select thumbnail " + QVariant(index).toString() + " of " + QVariant(count).toString()); + logger->debug("Select thumbnail " + QVariant(index).toString() + " of " + QVariant(count).toString()); if(index >= count)return; From 3bdec9d33248a76ad7b20c62db86db8dca10fb9e Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 22 Mar 2026 16:39:43 -0500 Subject: [PATCH 29/32] STYLE: Wrap location manager globals in Q_GLOBAL_STATIC (clazy non-pod-global-static) Replace five file-scope QScopedPointer statics with a single Q_GLOBAL_STATIC-managed struct. This avoids non-trivial constructors/destructors running at library load/unload time, deferring initialization to first use instead. Six additional warnings in test files and three singleton initializer patterns (CTK_SINGLETON_DECLARE_INITIALIZER) were investigated and deliberately skipped. Co-Authored-By: Claude Opus 4.6 --- Libs/PluginFramework/ctkLocationManager.cpp | 40 +++++++++++---------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/Libs/PluginFramework/ctkLocationManager.cpp b/Libs/PluginFramework/ctkLocationManager.cpp index 8ccbfa8c88..9dd7fa3c99 100644 --- a/Libs/PluginFramework/ctkLocationManager.cpp +++ b/Libs/PluginFramework/ctkLocationManager.cpp @@ -98,11 +98,15 @@ static const QString& INSTANCE_DATA_AREA_PREFIX() return s; } -static QScopedPointer installLocation; -static QScopedPointer configurationLocation; -static QScopedPointer userLocation; -static QScopedPointer instanceLocation; -static QScopedPointer ctkHomeLocation; +struct LocationManagerData +{ + QScopedPointer installLocation; + QScopedPointer configurationLocation; + QScopedPointer userLocation; + QScopedPointer instanceLocation; + QScopedPointer ctkHomeLocation; +}; +Q_GLOBAL_STATIC(LocationManagerData, locationData) static bool CanWrite(const QUrl& location); static bool CanWrite(const QFileInfo& location); @@ -235,7 +239,7 @@ static QUrl ComputeSharedConfigurationLocation() // absolute return sharedConfigurationURL; } - QUrl installURL = installLocation->getUrl(); + QUrl installURL = locationData()->installLocation->getUrl(); if (sharedConfigurationURL.scheme() != installURL.scheme()) { // different protocol @@ -398,7 +402,7 @@ void ctkLocationManager::initializeLocations() } // do install location initialization first since others may depend on it // assumes that the property is already set - installLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_INSTALL_AREA, QUrl(), "", true, false, QString())); + locationData()->installLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_INSTALL_AREA, QUrl(), "", true, false, QString())); // TODO not sure what the data area prefix should be here for the user area QScopedPointer temp(BuildLocation(ctkPluginFrameworkLauncher::PROP_USER_AREA_DEFAULT, @@ -408,7 +412,7 @@ void ctkLocationManager::initializeLocations() { defaultLocation = BuildUrl(QFileInfo(QDir(ctkPluginFrameworkProperties::getProperty(ctkPluginFrameworkLauncher::PROP_USER_HOME).toString()), "user").absoluteFilePath(), true); } - userLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_USER_AREA, defaultLocation, "", false, false, QString())); + locationData()->userLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_USER_AREA, defaultLocation, "", false, false, QString())); temp.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_INSTANCE_AREA_DEFAULT, QUrl(), "", false, false, INSTANCE_DATA_AREA_PREFIX())); defaultLocation = temp ? temp->getUrl() : QUrl(); @@ -416,7 +420,7 @@ void ctkLocationManager::initializeLocations() { defaultLocation = BuildUrl(QFileInfo(QDir(ctkPluginFrameworkProperties::getProperty(ctkPluginFrameworkLauncher::PROP_USER_DIR).toString()), "workspace").absoluteFilePath(), true); } - instanceLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_INSTANCE_AREA, defaultLocation, "", false, false, INSTANCE_DATA_AREA_PREFIX())); + locationData()->instanceLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_INSTANCE_AREA, defaultLocation, "", false, false, INSTANCE_DATA_AREA_PREFIX())); //mungeConfigurationLocation(); @@ -428,15 +432,15 @@ void ctkLocationManager::initializeLocations() // only compute the default if the configuration area property is not set defaultLocation = BuildUrl(ComputeDefaultConfigurationLocation(), true); } - configurationLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_CONFIG_AREA, defaultLocation, "", false, false, QString())); + locationData()->configurationLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_CONFIG_AREA, defaultLocation, "", false, false, QString())); // get the parent location based on the system property. This will have been set on the // way in either by the caller/user or by main. There will be no parent location if we are not // cascaded. QUrl parentLocation = ComputeSharedConfigurationLocation(); - if (parentLocation.isValid() && parentLocation != configurationLocation->getUrl()) + if (parentLocation.isValid() && parentLocation != locationData()->configurationLocation->getUrl()) { ctkBasicLocation* parent = new ctkBasicLocation(QString(), parentLocation, true, QString()); - configurationLocation->setParent(parent); + locationData()->configurationLocation->setParent(parent); } //initializeDerivedConfigurationLocations(); @@ -455,7 +459,7 @@ void ctkLocationManager::initializeLocations() ctkPluginFrameworkProperties::setProperty(ctkPluginFrameworkLauncher::PROP_HOME_LOCATION_AREA, ctkPluginFrameworkProperties::getProperty(ctkPluginFrameworkLauncher::PROP_INSTALL_AREA)); } - ctkHomeLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_HOME_LOCATION_AREA, QUrl(), "", true, true, QString())); + locationData()->ctkHomeLocation.reset(BuildLocation(ctkPluginFrameworkLauncher::PROP_HOME_LOCATION_AREA, QUrl(), "", true, true, QString())); isInitialized = true; } @@ -463,29 +467,29 @@ void ctkLocationManager::initializeLocations() //---------------------------------------------------------------------------- ctkBasicLocation* ctkLocationManager::getUserLocation() { - return userLocation.data(); + return locationData()->userLocation.data(); } //---------------------------------------------------------------------------- ctkBasicLocation* ctkLocationManager::getConfigurationLocation() { - return configurationLocation.data(); + return locationData()->configurationLocation.data(); } //---------------------------------------------------------------------------- ctkBasicLocation* ctkLocationManager::getInstallLocation() { - return installLocation.data(); + return locationData()->installLocation.data(); } //---------------------------------------------------------------------------- ctkBasicLocation* ctkLocationManager::getInstanceLocation() { - return instanceLocation.data(); + return locationData()->instanceLocation.data(); } //---------------------------------------------------------------------------- ctkBasicLocation* ctkLocationManager::getCTKHomeLocation() { - return ctkHomeLocation.data(); + return locationData()->ctkHomeLocation.data(); } From ed74a5ef6942767129d7b6f1fab8ddc29c6e017e Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 22 Mar 2026 18:26:00 -0500 Subject: [PATCH 30/32] PERF: Pass non-trivial types by const-ref instead of by value (clazy function-args-by-ref) Change function parameters of non-trivially-copyable types (QString, QStringList, QVariant, QDateTime, QDomElement, QModelIndex, QModelIndexList, QMultiMap, ctkServiceReference, ctkDICOMPersonName, etc.) from pass-by-value to pass-by-const-reference. This avoids unnecessary copy construction and reference count bumps on implicitly shared Qt types. Also fix the PythonQt wrapper generator regex for detecting pure virtual methods: the character class was missing '&', ',', ':', '<', '>' so it could not match through const-ref parameters or template types, causing it to incorrectly generate instantiation code for abstract classes. Co-Authored-By: Claude Opus 4.6 --- CMake/ctkWrapPythonQt.py | 2 +- Libs/Core/ctkAbstractJob.cpp | 4 +- Libs/Core/ctkAbstractJob.h | 4 +- Libs/Core/ctkJobScheduler.cpp | 2 +- Libs/Core/ctkJobScheduler.h | 2 +- Libs/Core/ctkLogger.cpp | 2 +- Libs/Core/ctkLogger.h | 2 +- Libs/Core/ctkWorkflow_p.h | 6 +- Libs/DICOM/Core/ctkDICOMDatabase.cpp | 141 +++++++++--------- Libs/DICOM/Core/ctkDICOMDatabase.h | 116 +++++++------- Libs/DICOM/Core/ctkDICOMDatabase_p.h | 8 +- ...DICOMDisplayedFieldGeneratorAbstractRule.h | 6 +- ...ICOMDisplayedFieldGeneratorDefaultRule.cpp | 12 +- ...kDICOMDisplayedFieldGeneratorDefaultRule.h | 4 +- ...ratorRadiotherapySeriesDescriptionRule.cpp | 13 +- ...neratorRadiotherapySeriesDescriptionRule.h | 2 +- Libs/DICOM/Core/ctkDICOMIndexer.cpp | 4 +- Libs/DICOM/Core/ctkDICOMIndexer.h | 4 +- Libs/DICOM/Core/ctkDICOMItem.cpp | 12 +- Libs/DICOM/Core/ctkDICOMItem.h | 12 +- Libs/DICOM/Core/ctkDICOMScheduler.cpp | 4 +- Libs/DICOM/Core/ctkDICOMScheduler.h | 2 +- .../ctkDICOMStudyMergedFilterProxyModel.cpp | 2 +- .../ctkDICOMStudyMergedFilterProxyModel.h | 12 +- .../Core/ctkDICOMThumbnailGeneratorJob.cpp | 6 +- .../Core/ctkDICOMThumbnailGeneratorJob.h | 6 +- Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp | 4 +- Libs/DICOM/Widgets/ctkDICOMAppWidget.h | 4 +- Libs/DICOM/Widgets/ctkDICOMBrowser.cpp | 18 +-- Libs/DICOM/Widgets/ctkDICOMBrowser.h | 14 +- Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp | 24 +-- Libs/DICOM/Widgets/ctkDICOMJobListWidget.h | 8 +- .../Widgets/ctkDICOMObjectListWidget.cpp | 8 +- Libs/DICOM/Widgets/ctkDICOMObjectListWidget.h | 2 +- .../Widgets/ctkDICOMServerNodeWidget2.cpp | 4 +- Libs/DICOM/Widgets/ctkDICOMStudyListView.cpp | 12 +- Libs/DICOM/Widgets/ctkDICOMStudyListView.h | 16 +- Libs/DICOM/Widgets/ctkDICOMTableView.cpp | 12 +- Libs/DICOM/Widgets/ctkDICOMTableView.h | 12 +- .../Widgets/ctkDICOMVisualBrowserWidget.cpp | 4 +- .../ctkEAScenario2TestSuite.cpp | 2 +- .../ctkEAScenario2TestSuite_p.h | 2 +- .../ctkEAScenario3TestSuite.cpp | 2 +- .../ctkEAScenario3TestSuite_p.h | 2 +- .../ctkEAScenario4TestSuite.cpp | 2 +- .../ctkEAScenario4TestSuite_p.h | 2 +- .../ctkPluginFrameworkTestSuite.cpp | 2 +- .../ctkPluginFrameworkTestSuite_p.h | 2 +- Libs/PluginFramework/ctkLDAPExpr.cpp | 4 +- .../ctkPluginAbstractTracked_p.h | 6 +- Libs/PluginFramework/ctkTrackedPlugin.tpp | 6 +- Libs/PluginFramework/ctkTrackedPlugin_p.h | 6 +- Libs/PluginFramework/ctkTrackedService.tpp | 6 +- Libs/PluginFramework/ctkTrackedService_p.h | 6 +- .../Testing/Cpp/ctkVTKMagnifyViewTest2.cpp | 12 +- .../Testing/Cpp/ctkCoordinatesWidgetTest.cpp | 4 +- .../ctkCoordinatesWidgetValueProxyTest.cpp | 2 +- .../Testing/Cpp/ctkCrosshairLabelTest2.cpp | 12 +- .../Cpp/ctkDoubleSpinBoxValueProxyTest.cpp | 2 +- .../Cpp/ctkErrorLogModelTestHelper.cpp | 2 +- .../Testing/Cpp/ctkLayoutManagerTest1.cpp | 2 +- .../Testing/Cpp/ctkWorkflowWidgetTest1.cpp | 2 +- .../Testing/Cpp/ctkWorkflowWidgetTest2.cpp | 2 +- Libs/Widgets/ctkComboBox.cpp | 2 +- Libs/Widgets/ctkComboBox.h | 2 +- Libs/Widgets/ctkCoordinatesWidget.cpp | 2 +- Libs/Widgets/ctkCoordinatesWidget.h | 2 +- Libs/Widgets/ctkDateRangeWidget.cpp | 6 +- Libs/Widgets/ctkDateRangeWidget.h | 6 +- Libs/Widgets/ctkDirectoryButton.cpp | 2 +- Libs/Widgets/ctkLayoutFactory.cpp | 8 +- Libs/Widgets/ctkLayoutFactory.h | 8 +- Libs/Widgets/ctkLayoutManager.cpp | 18 +-- Libs/Widgets/ctkLayoutManager.h | 20 +-- Libs/Widgets/ctkLayoutViewFactory.cpp | 16 +- Libs/Widgets/ctkLayoutViewFactory.h | 18 +-- .../ctkWorkflowAbstractPagedWidget.cpp | 4 +- Libs/Widgets/ctkWorkflowAbstractPagedWidget.h | 4 +- 78 files changed, 371 insertions(+), 369 deletions(-) diff --git a/CMake/ctkWrapPythonQt.py b/CMake/ctkWrapPythonQt.py index 477e294759..fbb254e7fb 100644 --- a/CMake/ctkWrapPythonQt.py +++ b/CMake/ctkWrapPythonQt.py @@ -112,7 +112,7 @@ def ctk_wrap_pythonqt(target, namespace, output_dir, input_files, extra_verbose) # Skip wrapping if object has a virtual pure method # "x3b" is the unicode for semicolon - regex = r"virtual[\w\n\s\*\(\)]+\=[\s\n]*(0|NULL|nullptr)[\s\n]*\x3b" + regex = r"virtual[\w\n\s\*\&\(\),:<>]+\=[\s\n]*(0|NULL|nullptr)[\s\n]*\x3b" res = re.search(regex, content, re.MULTILINE) if res is not None: if extra_verbose: diff --git a/Libs/Core/ctkAbstractJob.cpp b/Libs/Core/ctkAbstractJob.cpp index d4e6c9660a..120be083a0 100644 --- a/Libs/Core/ctkAbstractJob.cpp +++ b/Libs/Core/ctkAbstractJob.cpp @@ -208,7 +208,7 @@ QString ctkAbstractJob::runningThreadID() const } //---------------------------------------------------------------------------- -void ctkAbstractJob::setRunningThreadID(QString runningThreadID) +void ctkAbstractJob::setRunningThreadID(const QString& runningThreadID) { this->RunningThreadID = runningThreadID; } @@ -220,7 +220,7 @@ QString ctkAbstractJob::log() const } //---------------------------------------------------------------------------- -void ctkAbstractJob::addLog(QString log) +void ctkAbstractJob::addLog(const QString& log) { this->Log += log; } diff --git a/Libs/Core/ctkAbstractJob.h b/Libs/Core/ctkAbstractJob.h index 75068ed3b1..419bb0cc01 100644 --- a/Libs/Core/ctkAbstractJob.h +++ b/Libs/Core/ctkAbstractJob.h @@ -153,13 +153,13 @@ class CTK_CORE_EXPORT ctkAbstractJob : public QObject ///@{ /// Running ThreadID QString runningThreadID() const; - void setRunningThreadID(QString runningThreadID); + void setRunningThreadID(const QString& runningThreadID); ///@} ///@{ /// Logged Text QString log() const; - void addLog(QString log); + void addLog(const QString& log); ///@} /// Generate worker for job diff --git a/Libs/Core/ctkJobScheduler.cpp b/Libs/Core/ctkJobScheduler.cpp index f8b83fb0b9..5c4133d9ee 100644 --- a/Libs/Core/ctkJobScheduler.cpp +++ b/Libs/Core/ctkJobScheduler.cpp @@ -933,7 +933,7 @@ void ctkJobScheduler::onJobFailed(ctkAbstractJob* job) } //---------------------------------------------------------------------------- -void ctkJobScheduler::onProgressJobDetail(QVariant data) +void ctkJobScheduler::onProgressJobDetail(const QVariant& data) { Q_D(ctkJobScheduler); diff --git a/Libs/Core/ctkJobScheduler.h b/Libs/Core/ctkJobScheduler.h index f71a91d4f9..fc3ac1b721 100644 --- a/Libs/Core/ctkJobScheduler.h +++ b/Libs/Core/ctkJobScheduler.h @@ -131,7 +131,7 @@ public Q_SLOTS: virtual void onJobFinished(ctkAbstractJob*); virtual void onJobAttemptFailed(ctkAbstractJob*); virtual void onJobFailed(ctkAbstractJob*); - virtual void onProgressJobDetail(QVariant); + virtual void onProgressJobDetail(const QVariant&); virtual void emitThrottledSignals(); protected: diff --git a/Libs/Core/ctkLogger.cpp b/Libs/Core/ctkLogger.cpp index 1330f01258..24a799dee3 100644 --- a/Libs/Core/ctkLogger.cpp +++ b/Libs/Core/ctkLogger.cpp @@ -37,7 +37,7 @@ class ctkLoggerPrivate }; //----------------------------------------------------------------------------- -ctkLogger::ctkLogger(QString name, QObject* _parent) +ctkLogger::ctkLogger(const QString& name, QObject* _parent) : Superclass(_parent) , d_ptr(new ctkLoggerPrivate) { diff --git a/Libs/Core/ctkLogger.h b/Libs/Core/ctkLogger.h index 2ceaec0c9c..adb7e9d2f0 100644 --- a/Libs/Core/ctkLogger.h +++ b/Libs/Core/ctkLogger.h @@ -40,7 +40,7 @@ class CTK_CORE_EXPORT ctkLogger : public QObject typedef QObject Superclass; /// Default level is ctkErrorLogLevel::LogLevel::Warning - explicit ctkLogger(QString name, QObject* parent = 0); + explicit ctkLogger(const QString& name, QObject* parent = 0); virtual ~ctkLogger(); Q_INVOKABLE void trace(const QString& s); diff --git a/Libs/Core/ctkWorkflow_p.h b/Libs/Core/ctkWorkflow_p.h index 4dfd93c002..b68ce27ac0 100644 --- a/Libs/Core/ctkWorkflow_p.h +++ b/Libs/Core/ctkWorkflow_p.h @@ -62,13 +62,13 @@ struct forwardAndBackwardSteps return this->BackwardBranchIds; } - void appendForwardStep(ctkWorkflowStep* step, QString id) + void appendForwardStep(ctkWorkflowStep* step, const QString& id) { this->ForwardSteps.append(step); this->ForwardBranchIds.append(id); } - void appendBackwardStep(ctkWorkflowStep* step, QString id) + void appendBackwardStep(ctkWorkflowStep* step, const QString& id) { this->BackwardSteps.append(step); this->BackwardBranchIds.append(id); @@ -86,7 +86,7 @@ struct forwardAndBackwardSteps } } - ctkWorkflowStep* forwardStep(QString branchId) + ctkWorkflowStep* forwardStep(const QString& branchId) { int index = this->ForwardBranchIds.indexOf(branchId); if (index != -1) diff --git a/Libs/DICOM/Core/ctkDICOMDatabase.cpp b/Libs/DICOM/Core/ctkDICOMDatabase.cpp index 025312d830..46e69a7c20 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase.cpp +++ b/Libs/DICOM/Core/ctkDICOMDatabase.cpp @@ -114,7 +114,7 @@ void ctkDICOMDatabasePrivate::resetLastInsertedValues() } //------------------------------------------------------------------------------ -void ctkDICOMDatabasePrivate::init(QString databaseFilename) +void ctkDICOMDatabasePrivate::init(const QString& databaseFilename) { Q_Q(ctkDICOMDatabase); @@ -272,7 +272,7 @@ QString ctkDICOMDatabasePrivate::readValueFromFile(const QString& fileName, cons } //------------------------------------------------------------------------------ -bool ctkDICOMDatabasePrivate::executeScript(const QString script) +bool ctkDICOMDatabasePrivate::executeScript(const QString& script) { QFile scriptFile(script); if ( !scriptFile.open(QIODevice::ReadOnly) ) @@ -307,7 +307,7 @@ bool ctkDICOMDatabasePrivate::executeScript(const QString script) } //------------------------------------------------------------------------------ -QStringList ctkDICOMDatabasePrivate::filenames(QString table) +QStringList ctkDICOMDatabasePrivate::filenames(const QString& table) { /// get all filenames from the database QSqlQuery allFilesQuery(this->Database); @@ -625,7 +625,7 @@ bool ctkDICOMDatabasePrivate::openTagCacheDatabase() } //------------------------------------------------------------------------------ -void ctkDICOMDatabasePrivate::precacheTags(const ctkDICOMItem& dataset, const QString sopInstanceUID) +void ctkDICOMDatabasePrivate::precacheTags(const ctkDICOMItem& dataset, const QString& sopInstanceUID) { Q_Q(ctkDICOMDatabase); @@ -1502,7 +1502,7 @@ CTK_SET_CPP(ctkDICOMDatabase, bool, setUseSystemFileCopy, UseSystemFileCopy); //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -ctkDICOMDatabase::ctkDICOMDatabase(QString databaseFile) +ctkDICOMDatabase::ctkDICOMDatabase(const QString& databaseFile) : d_ptr(new ctkDICOMDatabasePrivate(*this)) { Q_D(ctkDICOMDatabase); @@ -1691,7 +1691,7 @@ QString ctkDICOMDatabase::schemaVersionLoaded() } //------------------------------------------------------------------------------ -void ctkDICOMDatabase::setSchemaVersion(QString schemaVersion) +void ctkDICOMDatabase::setSchemaVersion(const QString& schemaVersion) { Q_D(ctkDICOMDatabase); d->SchemaVersion = schemaVersion; @@ -1834,7 +1834,7 @@ QStringList ctkDICOMDatabase::patients() } //------------------------------------------------------------------------------ -QStringList ctkDICOMDatabase::studiesForPatient(QString dbPatientID) +QStringList ctkDICOMDatabase::studiesForPatient(const QString& dbPatientID) { Q_D(ctkDICOMDatabase); QStringList result; @@ -1853,7 +1853,7 @@ QStringList ctkDICOMDatabase::studiesForPatient(QString dbPatientID) } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::studyForSeries(QString seriesUID) +QString ctkDICOMDatabase::studyForSeries(const QString& seriesUID) { Q_D(ctkDICOMDatabase); QString result; @@ -1872,7 +1872,7 @@ QString ctkDICOMDatabase::studyForSeries(QString seriesUID) } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::patientForStudy(QString studyUID) +QString ctkDICOMDatabase::patientForStudy(const QString& studyUID) { Q_D(ctkDICOMDatabase); QString result; @@ -1891,7 +1891,7 @@ QString ctkDICOMDatabase::patientForStudy(QString studyUID) } //------------------------------------------------------------------------------ -QHash ctkDICOMDatabase::descriptionsForFile(QString fileName) +QHash ctkDICOMDatabase::descriptionsForFile(const QString& fileName) { Q_D(ctkDICOMDatabase); @@ -1935,7 +1935,7 @@ QHash ctkDICOMDatabase::descriptionsForFile(QString fileName) } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::descriptionForSeries(const QString seriesUID) +QString ctkDICOMDatabase::descriptionForSeries(const QString& seriesUID) { Q_D(ctkDICOMDatabase); @@ -1955,7 +1955,7 @@ QString ctkDICOMDatabase::descriptionForSeries(const QString seriesUID) } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::descriptionForStudy(const QString studyUID) +QString ctkDICOMDatabase::descriptionForStudy(const QString& studyUID) { Q_D(ctkDICOMDatabase); @@ -1975,7 +1975,7 @@ QString ctkDICOMDatabase::descriptionForStudy(const QString studyUID) } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::nameForPatient(const QString patientUID) +QString ctkDICOMDatabase::nameForPatient(const QString& patientUID) { Q_D(ctkDICOMDatabase); @@ -1995,7 +1995,7 @@ QString ctkDICOMDatabase::nameForPatient(const QString patientUID) } //------------------------------------------------------------------------------ -QMap ctkDICOMDatabase::connectionsInformationForPatient(const QString patientUID) +QMap ctkDICOMDatabase::connectionsInformationForPatient(const QString& patientUID) { Q_D(ctkDICOMDatabase); @@ -2027,16 +2027,16 @@ QMap ctkDICOMDatabase::connectionsInformationForPatient(co } //------------------------------------------------------------------------------ -bool ctkDICOMDatabase::updateConnectionsForPatient(const QString patientUID, - const QStringList allowList, - const QStringList denyList) +bool ctkDICOMDatabase::updateConnectionsForPatient(const QString& patientUID, + const QStringList& allowList, + const QStringList& denyList) { Q_D(ctkDICOMDatabase); return d->updateConnections(patientUID, allowList, denyList); } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::displayedNameForPatient(const QString patientUID) +QString ctkDICOMDatabase::displayedNameForPatient(const QString& patientUID) { Q_D(ctkDICOMDatabase); @@ -2058,7 +2058,7 @@ QString ctkDICOMDatabase::displayedNameForPatient(const QString patientUID) } //------------------------------------------------------------------------------ -QDateTime ctkDICOMDatabase::insertDateTimeForPatient(const QString patientUID) +QDateTime ctkDICOMDatabase::insertDateTimeForPatient(const QString& patientUID) { Q_D(ctkDICOMDatabase); QDateTime result; @@ -2077,7 +2077,7 @@ QDateTime ctkDICOMDatabase::insertDateTimeForPatient(const QString patientUID) } //------------------------------------------------------------------------------ -QDateTime ctkDICOMDatabase::insertDateTimeForStudy(const QString studyInstanceUID) +QDateTime ctkDICOMDatabase::insertDateTimeForStudy(const QString& studyInstanceUID) { Q_D(ctkDICOMDatabase); QDateTime result; @@ -2096,7 +2096,7 @@ QDateTime ctkDICOMDatabase::insertDateTimeForStudy(const QString studyInstanceUI } //------------------------------------------------------------------------------ -QDateTime ctkDICOMDatabase::insertDateTimeForSeries(const QString seriesInstanceUID) +QDateTime ctkDICOMDatabase::insertDateTimeForSeries(const QString& seriesInstanceUID) { Q_D(ctkDICOMDatabase); QDateTime result; @@ -2115,7 +2115,7 @@ QDateTime ctkDICOMDatabase::insertDateTimeForSeries(const QString seriesInstance } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::fieldForPatient(const QString field, const QString patientUID) +QString ctkDICOMDatabase::fieldForPatient(const QString& field, const QString& patientUID) { Q_D(ctkDICOMDatabase); @@ -2138,7 +2138,7 @@ QString ctkDICOMDatabase::fieldForPatient(const QString field, const QString pat } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::fieldForStudy(const QString field, const QString studyInstanceUID) +QString ctkDICOMDatabase::fieldForStudy(const QString& field, const QString& studyInstanceUID) { Q_D(ctkDICOMDatabase); @@ -2161,7 +2161,7 @@ QString ctkDICOMDatabase::fieldForStudy(const QString field, const QString study } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::fieldForSeries(const QString field, const QString seriesInstanceUID) +QString ctkDICOMDatabase::fieldForSeries(const QString& field, const QString& seriesInstanceUID) { Q_D(ctkDICOMDatabase); @@ -2241,7 +2241,7 @@ QStringList ctkDICOMDatabase::seriesFieldNames() const } //------------------------------------------------------------------------------ -QStringList ctkDICOMDatabase::seriesForStudy(QString studyUID) +QStringList ctkDICOMDatabase::seriesForStudy(const QString& studyUID) { Q_D(ctkDICOMDatabase); @@ -2261,7 +2261,7 @@ QStringList ctkDICOMDatabase::seriesForStudy(QString studyUID) } //------------------------------------------------------------------------------ -QStringList ctkDICOMDatabase::instancesForSeries(const QString seriesUID, int hits/*=-1*/) +QStringList ctkDICOMDatabase::instancesForSeries(const QString& seriesUID, int hits/*=-1*/) { Q_D(ctkDICOMDatabase); @@ -2286,7 +2286,7 @@ QStringList ctkDICOMDatabase::instancesForSeries(const QString seriesUID, int hi } //------------------------------------------------------------------------------ -QStringList ctkDICOMDatabase::filesForSeries(QString seriesUID, int hits/*=-1*/) +QStringList ctkDICOMDatabase::filesForSeries(const QString& seriesUID, int hits/*=-1*/) { Q_D(ctkDICOMDatabase); @@ -2313,7 +2313,7 @@ QStringList ctkDICOMDatabase::filesForSeries(QString seriesUID, int hits/*=-1*/) } //------------------------------------------------------------------------------ -QStringList ctkDICOMDatabase::urlsForSeries(QString seriesUID, int hits/*=-1*/) +QStringList ctkDICOMDatabase::urlsForSeries(const QString& seriesUID, int hits/*=-1*/) { Q_D(ctkDICOMDatabase); @@ -2339,7 +2339,7 @@ QStringList ctkDICOMDatabase::urlsForSeries(QString seriesUID, int hits/*=-1*/) } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::fileForInstance(QString sopInstanceUID) +QString ctkDICOMDatabase::fileForInstance(const QString& sopInstanceUID) { Q_D(ctkDICOMDatabase); @@ -2359,7 +2359,7 @@ QString ctkDICOMDatabase::fileForInstance(QString sopInstanceUID) } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::urlForInstance(QString sopInstanceUID) +QString ctkDICOMDatabase::urlForInstance(const QString& sopInstanceUID) { Q_D(ctkDICOMDatabase); @@ -2379,7 +2379,7 @@ QString ctkDICOMDatabase::urlForInstance(QString sopInstanceUID) } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::seriesForFile(QString fileName) +QString ctkDICOMDatabase::seriesForFile(const QString& fileName) { Q_D(ctkDICOMDatabase); @@ -2399,7 +2399,7 @@ QString ctkDICOMDatabase::seriesForFile(QString fileName) } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::instanceForFile(QString fileName) +QString ctkDICOMDatabase::instanceForFile(const QString& fileName) { Q_D(ctkDICOMDatabase); QString result; @@ -2418,7 +2418,7 @@ QString ctkDICOMDatabase::instanceForFile(QString fileName) } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::instanceForURL(QString url) +QString ctkDICOMDatabase::instanceForURL(const QString& url) { Q_D(ctkDICOMDatabase); @@ -2438,7 +2438,7 @@ QString ctkDICOMDatabase::instanceForURL(QString url) } //------------------------------------------------------------------------------ -QDateTime ctkDICOMDatabase::insertDateTimeForInstance(QString sopInstanceUID) +QDateTime ctkDICOMDatabase::insertDateTimeForInstance(const QString& sopInstanceUID) { Q_D(ctkDICOMDatabase); QDateTime result; @@ -2562,7 +2562,7 @@ QStringList ctkDICOMDatabase::allFiles() } //------------------------------------------------------------------------------ -void ctkDICOMDatabase::loadInstanceHeader(QString sopInstanceUID) +void ctkDICOMDatabase::loadInstanceHeader(const QString& sopInstanceUID) { Q_D(ctkDICOMDatabase); QSqlQuery query(d->Database); @@ -2580,7 +2580,7 @@ void ctkDICOMDatabase::loadInstanceHeader(QString sopInstanceUID) } //------------------------------------------------------------------------------ -void ctkDICOMDatabase::loadFileHeader(QString fileName) +void ctkDICOMDatabase::loadFileHeader(const QString& fileName) { Q_D(ctkDICOMDatabase); d->LoadedHeader.clear(); @@ -2614,7 +2614,7 @@ QStringList ctkDICOMDatabase::headerKeys () } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::headerValue (QString key) +QString ctkDICOMDatabase::headerValue (const QString& key) { Q_D(ctkDICOMDatabase); return (d->LoadedHeader[key]); @@ -2625,12 +2625,12 @@ QString ctkDICOMDatabase::headerValue (QString key) // //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::instanceValue(QString sopInstanceUID, QString tag) +QString ctkDICOMDatabase::instanceValue(const QString& sopInstanceUID, const QString& tag) { Q_D(ctkDICOMDatabase); - tag = tag.toUpper(); + QString upperTag = tag.toUpper(); // Read from cache, if available - QString value = this->cachedTag(sopInstanceUID, tag); + QString value = this->cachedTag(sopInstanceUID, upperTag); if (value == TagNotInInstance() || value == ValueIsEmptyString() || value == ValueIsNotStored()) { return ""; @@ -2646,19 +2646,19 @@ QString ctkDICOMDatabase::instanceValue(QString sopInstanceUID, QString tag) { return ""; } - value = d->readValueFromFile(filePath, sopInstanceUID, tag); + value = d->readValueFromFile(filePath, sopInstanceUID, upperTag); return value; } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::instanceValue(const QString sopInstanceUID, const unsigned short group, const unsigned short element) +QString ctkDICOMDatabase::instanceValue(const QString& sopInstanceUID, const unsigned short group, const unsigned short element) { QString tag = this->groupElementToTag(group,element); return instanceValue(sopInstanceUID, tag); } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::fileValue(const QString fileName, QString tag) +QString ctkDICOMDatabase::fileValue(const QString& fileName, const QString& tag) { Q_D(ctkDICOMDatabase); @@ -2667,6 +2667,8 @@ QString ctkDICOMDatabase::fileValue(const QString fileName, QString tag) return ""; } + QString upperTag = tag.toUpper(); + // Read value from the database, if the instance is found there // First, try treating argument as filePath @@ -2686,8 +2688,7 @@ QString ctkDICOMDatabase::fileValue(const QString fileName, QString tag) if (!sopInstanceUID.isEmpty()) { // The instance is available in the database, look for the value - tag = tag.toUpper(); - QString value = this->cachedTag(sopInstanceUID, tag); + QString value = this->cachedTag(sopInstanceUID, upperTag); if (value == TagNotInInstance() || value == ValueIsEmptyString() || value == ValueIsNotStored()) { return ""; @@ -2705,12 +2706,12 @@ QString ctkDICOMDatabase::fileValue(const QString fileName, QString tag) // local file is not available return ""; } - QString value = d->readValueFromFile(fileName, sopInstanceUID, tag); + QString value = d->readValueFromFile(fileName, sopInstanceUID, upperTag); return value; } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::fileValue(const QString fileName, const unsigned short group, const unsigned short element) +QString ctkDICOMDatabase::fileValue(const QString& fileName, const unsigned short group, const unsigned short element) { QString tag = this->groupElementToTag(group, element); return this->fileValue(fileName, tag); @@ -2792,7 +2793,7 @@ QMap ctkDICOMDatabase::instanceValues(const QStringList& sopIn } //------------------------------------------------------------------------------ -bool ctkDICOMDatabase::instanceValueExists(const QString sopInstanceUID, const QString tag) +bool ctkDICOMDatabase::instanceValueExists(const QString& sopInstanceUID, const QString& tag) { Q_D(ctkDICOMDatabase); QString upperTag = tag.toUpper(); @@ -2817,14 +2818,14 @@ bool ctkDICOMDatabase::instanceValueExists(const QString sopInstanceUID, const Q } //------------------------------------------------------------------------------ -bool ctkDICOMDatabase::instanceValueExists(const QString sopInstanceUID, const unsigned short group, const unsigned short element) +bool ctkDICOMDatabase::instanceValueExists(const QString& sopInstanceUID, const unsigned short group, const unsigned short element) { QString tag = this->groupElementToTag(group, element); return this->instanceValueExists(sopInstanceUID, tag); } //------------------------------------------------------------------------------ -bool ctkDICOMDatabase::fileValueExists(const QString fileName, QString tag) +bool ctkDICOMDatabase::fileValueExists(const QString& fileName, const QString& tag) { Q_D(ctkDICOMDatabase); @@ -2833,10 +2834,10 @@ bool ctkDICOMDatabase::fileValueExists(const QString fileName, QString tag) return false; } - tag = tag.toUpper(); + QString upperTag = tag.toUpper(); QString sopInstanceUID = this->instanceForFile(fileName); - QString value = this->cachedTag(sopInstanceUID, tag); + QString value = this->cachedTag(sopInstanceUID, upperTag); if (value == TagNotInInstance() || value == ValueIsEmptyString()) { return false; @@ -2847,19 +2848,19 @@ bool ctkDICOMDatabase::fileValueExists(const QString fileName, QString tag) } // Read value from file - value = d->readValueFromFile(fileName, sopInstanceUID, tag); + value = d->readValueFromFile(fileName, sopInstanceUID, upperTag); return (value != TagNotInInstance() && value != ValueIsEmptyString()); } //------------------------------------------------------------------------------ -bool ctkDICOMDatabase::fileValueExists(const QString fileName, const unsigned short group, const unsigned short element) +bool ctkDICOMDatabase::fileValueExists(const QString& fileName, const unsigned short group, const unsigned short element) { QString tag = this->groupElementToTag(group, element); return this->fileValueExists(fileName, tag); } //------------------------------------------------------------------------------ -bool ctkDICOMDatabase::tagToGroupElement(const QString tag, unsigned short& group, unsigned short& element) +bool ctkDICOMDatabase::tagToGroupElement(const QString& tag, unsigned short& group, unsigned short& element) { QStringList groupElement = tag.split(","); bool groupOK, elementOK; @@ -3380,7 +3381,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabase::insert(const QListTagsToPrecache == tags) @@ -3399,7 +3400,7 @@ const QStringList ctkDICOMDatabase::tagsToPrecache() } //------------------------------------------------------------------------------ -void ctkDICOMDatabase::setTagsToExcludeFromStorage(const QStringList tags) +void ctkDICOMDatabase::setTagsToExcludeFromStorage(const QStringList& tags) { Q_D(ctkDICOMDatabase); QStringList upperTags; @@ -3745,7 +3746,7 @@ bool ctkDICOMDatabase::initializeTagCache() } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::cachedTag(const QString sopInstanceUID, const QString tag) +QString ctkDICOMDatabase::cachedTag(const QString& sopInstanceUID, const QString& tag) { Q_D(ctkDICOMDatabase); if ( !this->tagCacheExists() ) @@ -3773,7 +3774,7 @@ QString ctkDICOMDatabase::cachedTag(const QString sopInstanceUID, const QString } //------------------------------------------------------------------------------ -void ctkDICOMDatabase::getCachedTags(const QString sopInstanceUID, QMap &cachedTags) +void ctkDICOMDatabase::getCachedTags(const QString& sopInstanceUID, QMap &cachedTags) { Q_D(ctkDICOMDatabase); cachedTags.clear(); @@ -3804,7 +3805,7 @@ void ctkDICOMDatabase::getCachedTags(const QString sopInstanceUID, QMaptagCacheExists()) @@ -4000,7 +4001,7 @@ void ctkDICOMDatabase::updateDisplayedFields() } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::displayedNameForField(QString table, QString field) const +QString ctkDICOMDatabase::displayedNameForField(const QString& table, const QString& field) const { Q_D(const ctkDICOMDatabase); @@ -4019,7 +4020,7 @@ QString ctkDICOMDatabase::displayedNameForField(QString table, QString field) co } //------------------------------------------------------------------------------ -void ctkDICOMDatabase::setDisplayedNameForField(QString table, QString field, QString displayedName) +void ctkDICOMDatabase::setDisplayedNameForField(const QString& table, const QString& field, const QString& displayedName) { Q_D(ctkDICOMDatabase); @@ -4044,7 +4045,7 @@ void ctkDICOMDatabase::setDisplayedNameForField(QString table, QString field, QS } //------------------------------------------------------------------------------ -bool ctkDICOMDatabase::visibilityForField(QString table, QString field) const +bool ctkDICOMDatabase::visibilityForField(const QString& table, const QString& field) const { Q_D(const ctkDICOMDatabase); @@ -4063,7 +4064,7 @@ bool ctkDICOMDatabase::visibilityForField(QString table, QString field) const } //------------------------------------------------------------------------------ -void ctkDICOMDatabase::setVisibilityForField(QString table, QString field, bool visibility) +void ctkDICOMDatabase::setVisibilityForField(const QString& table, const QString& field, bool visibility) { Q_D(ctkDICOMDatabase); @@ -4088,7 +4089,7 @@ void ctkDICOMDatabase::setVisibilityForField(QString table, QString field, bool } //------------------------------------------------------------------------------ -int ctkDICOMDatabase::weightForField(QString table, QString field) const +int ctkDICOMDatabase::weightForField(const QString& table, const QString& field) const { Q_D(const ctkDICOMDatabase); @@ -4107,7 +4108,7 @@ int ctkDICOMDatabase::weightForField(QString table, QString field) const } //------------------------------------------------------------------------------ -void ctkDICOMDatabase::setWeightForField(QString table, QString field, int weight) +void ctkDICOMDatabase::setWeightForField(const QString& table, const QString& field, int weight) { Q_D(ctkDICOMDatabase); @@ -4132,7 +4133,7 @@ void ctkDICOMDatabase::setWeightForField(QString table, QString field, int weigh } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::formatForField(QString table, QString field) const +QString ctkDICOMDatabase::formatForField(const QString& table, const QString& field) const { Q_D(const ctkDICOMDatabase); @@ -4151,7 +4152,7 @@ QString ctkDICOMDatabase::formatForField(QString table, QString field) const } //------------------------------------------------------------------------------ -void ctkDICOMDatabase::setFormatForField(QString table, QString field, QString format) +void ctkDICOMDatabase::setFormatForField(const QString& table, const QString& field, const QString& format) { Q_D(ctkDICOMDatabase); diff --git a/Libs/DICOM/Core/ctkDICOMDatabase.h b/Libs/DICOM/Core/ctkDICOMDatabase.h index 8638ce1ff8..29edf495bd 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase.h +++ b/Libs/DICOM/Core/ctkDICOMDatabase.h @@ -83,7 +83,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject }; explicit ctkDICOMDatabase(QObject *parent = 0); - explicit ctkDICOMDatabase(QString databaseFile); + explicit ctkDICOMDatabase(const QString& databaseFile); virtual ~ctkDICOMDatabase(); const QSqlDatabase& database() const; @@ -164,55 +164,55 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject Q_INVOKABLE QString schemaVersionLoaded(); /// Set schema version externally in case a non-standard schema is used - Q_INVOKABLE void setSchemaVersion(QString schemaVersion); + Q_INVOKABLE void setSchemaVersion(const QString& schemaVersion); /// \brief database accessors Q_INVOKABLE QStringList patients(); - Q_INVOKABLE QStringList studiesForPatient(const QString patientUID); - Q_INVOKABLE QStringList seriesForStudy(const QString studyUID); + Q_INVOKABLE QStringList studiesForPatient(const QString& patientUID); + Q_INVOKABLE QStringList seriesForStudy(const QString& studyUID); /// Since a series may consists of many hundreds of instances, this method may be slow. /// If hits > 0 is specified then returned instances will be limited to that number. /// This is useful for retrieving first file, for example for getting access to fields within that file /// using instanceValue() method. - Q_INVOKABLE QStringList instancesForSeries(const QString seriesUID, int hits = -1); - Q_INVOKABLE QString studyForSeries(QString seriesUID); - Q_INVOKABLE QString patientForStudy(QString studyUID); + Q_INVOKABLE QStringList instancesForSeries(const QString& seriesUID, int hits = -1); + Q_INVOKABLE QString studyForSeries(const QString& seriesUID); + Q_INVOKABLE QString patientForStudy(const QString& studyUID); /// Since a series may consists of many hundreds of files, this method may be slow. /// If hits > 0 is specified then returned filenames will be limited to that number. /// This is useful for retrieving first file, for example for getting access to fields within that file /// using fileValue() method. - Q_INVOKABLE QStringList filesForSeries(const QString seriesUID, int hits=-1); - Q_INVOKABLE QStringList urlsForSeries(const QString seriesUID, int hits=-1); - - Q_INVOKABLE QHash descriptionsForFile(QString fileName); - Q_INVOKABLE QString descriptionForSeries(const QString seriesUID); - Q_INVOKABLE QString descriptionForStudy(const QString studyUID); - Q_INVOKABLE QString nameForPatient(const QString patientUID); - Q_INVOKABLE QString displayedNameForPatient(const QString patientUID); - Q_INVOKABLE QDateTime insertDateTimeForPatient(const QString patientUID); - Q_INVOKABLE QDateTime insertDateTimeForStudy(const QString studyInstanceUID); - Q_INVOKABLE QDateTime insertDateTimeForSeries(const QString seriesInstanceUID); - Q_INVOKABLE QString fieldForPatient(const QString field, const QString patientUID); - Q_INVOKABLE QString fieldForStudy(const QString field, const QString studyInstanceUID); - Q_INVOKABLE QString fieldForSeries(const QString field, const QString seriesInstanceUID); + Q_INVOKABLE QStringList filesForSeries(const QString& seriesUID, int hits=-1); + Q_INVOKABLE QStringList urlsForSeries(const QString& seriesUID, int hits=-1); + + Q_INVOKABLE QHash descriptionsForFile(const QString& fileName); + Q_INVOKABLE QString descriptionForSeries(const QString& seriesUID); + Q_INVOKABLE QString descriptionForStudy(const QString& studyUID); + Q_INVOKABLE QString nameForPatient(const QString& patientUID); + Q_INVOKABLE QString displayedNameForPatient(const QString& patientUID); + Q_INVOKABLE QDateTime insertDateTimeForPatient(const QString& patientUID); + Q_INVOKABLE QDateTime insertDateTimeForStudy(const QString& studyInstanceUID); + Q_INVOKABLE QDateTime insertDateTimeForSeries(const QString& seriesInstanceUID); + Q_INVOKABLE QString fieldForPatient(const QString& field, const QString& patientUID); + Q_INVOKABLE QString fieldForStudy(const QString& field, const QString& studyInstanceUID); + Q_INVOKABLE QString fieldForSeries(const QString& field, const QString& seriesInstanceUID); /// Provide lists of allow and deny servers associated with the patient. - Q_INVOKABLE QMap connectionsInformationForPatient(const QString patientUID); + Q_INVOKABLE QMap connectionsInformationForPatient(const QString& patientUID); /// Set the allow and deny servers for the patient - Q_INVOKABLE bool updateConnectionsForPatient(const QString patientUID, - const QStringList allowList, - const QStringList denyList); + Q_INVOKABLE bool updateConnectionsForPatient(const QString& patientUID, + const QStringList& allowList, + const QStringList& denyList); QStringList patientFieldNames() const; QStringList studyFieldNames() const; QStringList seriesFieldNames() const; - Q_INVOKABLE QString fileForInstance(const QString sopInstanceUID); - Q_INVOKABLE QString urlForInstance(const QString sopInstanceUID); - Q_INVOKABLE QString instanceForURL(const QString url); - Q_INVOKABLE QString seriesForFile(QString fileName); - Q_INVOKABLE QString instanceForFile(const QString fileName); - Q_INVOKABLE QDateTime insertDateTimeForInstance(const QString fileName); + Q_INVOKABLE QString fileForInstance(const QString& sopInstanceUID); + Q_INVOKABLE QString urlForInstance(const QString& sopInstanceUID); + Q_INVOKABLE QString instanceForURL(const QString& url); + Q_INVOKABLE QString seriesForFile(const QString& fileName); + Q_INVOKABLE QString instanceForFile(const QString& fileName); + Q_INVOKABLE QDateTime insertDateTimeForInstance(const QString& fileName); Q_INVOKABLE QString thumbnailPathForInstance(const QString& studyInstanceUID, const QString& seriesInstanceUID, const QString& sopInstanceUID); @@ -236,10 +236,10 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject /// (corresponding file will be found via the database) /// @param fileName Full path to a dicom file to load. /// @param key A group,element tag in zero-filled hex - Q_INVOKABLE void loadInstanceHeader(const QString sopInstanceUID); - Q_INVOKABLE void loadFileHeader(const QString fileName); + Q_INVOKABLE void loadInstanceHeader(const QString& sopInstanceUID); + Q_INVOKABLE void loadFileHeader(const QString& fileName); Q_INVOKABLE QStringList headerKeys(); - Q_INVOKABLE QString headerValue(const QString key); + Q_INVOKABLE QString headerValue(const QString& key); /// \brief Application-defined tags of interest /// This list of tags is added to the internal tag cache during import @@ -250,7 +250,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject /// be able to use the cache rather than re-reading the file. /// @param tags should be a list of ascii hex group/element tags /// like "0008,0008" as in the instanceValue and fileValue calls - void setTagsToPrecache(const QStringList tags); + void setTagsToPrecache(const QStringList& tags); const QStringList tagsToPrecache(); /// \brief Tags that must not be stored in the tag cache. @@ -258,7 +258,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject /// or if content of this field is usually very large. /// Presence of non-empty tag can still be checked using instanceValueExists or fileValueExists. /// By default, only PixelData tag is excluded from storage. - void setTagsToExcludeFromStorage(const QStringList tags); + void setTagsToExcludeFromStorage(const QStringList& tags); const QStringList tagsToExcludeFromStorage(); /// Insert into the database if not already existing. @@ -368,10 +368,10 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject /// @param group The group portion of the tag as an integer /// @param element The element portion of the tag as an integer /// @Returns empty string if element is missing or excluded from storage. - Q_INVOKABLE QString instanceValue (const QString sopInstanceUID, const QString tag); - Q_INVOKABLE QString instanceValue (const QString sopInstanceUID, const unsigned short group, const unsigned short element); - Q_INVOKABLE QString fileValue (const QString fileName, const QString tag); - Q_INVOKABLE QString fileValue (const QString fileName, const unsigned short group, const unsigned short element); + Q_INVOKABLE QString instanceValue (const QString& sopInstanceUID, const QString& tag); + Q_INVOKABLE QString instanceValue (const QString& sopInstanceUID, const unsigned short group, const unsigned short element); + Q_INVOKABLE QString fileValue (const QString& fileName, const QString& tag); + Q_INVOKABLE QString fileValue (const QString& fileName, const unsigned short group, const unsigned short element); /// \brief Efficiently retrieve tag values for multiple instances in a single query /// @param sopInstanceUIDs List of instance UIDs to query @@ -380,7 +380,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject Q_INVOKABLE QMap instanceValues(const QStringList& sopInstanceUIDs, const QString& tag); /// Convert between string and (unsigned short int, unsigned short int) representation of a DICOM tag. - Q_INVOKABLE bool tagToGroupElement (const QString tag, unsigned short& group, unsigned short& element); + Q_INVOKABLE bool tagToGroupElement (const QString& tag, unsigned short& group, unsigned short& element); Q_INVOKABLE QString groupElementToTag (const unsigned short& group, const unsigned short& element); /// \brief Check if an element with the given attribute tag exists in the dataset and has a non-empty value. @@ -390,10 +390,10 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject /// @param group The group portion of the tag as an integer /// @param element The element portion of the tag as an integer /// @Returns true if tag exists and has non-empty value. Returns true even if the value is excluded from storage in the database. - Q_INVOKABLE bool instanceValueExists(const QString sopInstanceUID, const QString tag); - Q_INVOKABLE bool instanceValueExists(const QString sopInstanceUID, const unsigned short group, const unsigned short element); - Q_INVOKABLE bool fileValueExists(const QString fileName, const QString tag); - Q_INVOKABLE bool fileValueExists(const QString fileName, const unsigned short group, const unsigned short element); + Q_INVOKABLE bool instanceValueExists(const QString& sopInstanceUID, const QString& tag); + Q_INVOKABLE bool instanceValueExists(const QString& sopInstanceUID, const unsigned short group, const unsigned short element); + Q_INVOKABLE bool fileValueExists(const QString& fileName, const QString& tag); + Q_INVOKABLE bool fileValueExists(const QString& fileName, const unsigned short group, const unsigned short element); /// \brief Store values of previously requested instance elements /// These are meant to be internal methods used by the instanceValue and fileValue @@ -409,38 +409,38 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject /// Create a tagCache in the current database. Delete the existing one if it exists. Q_INVOKABLE bool initializeTagCache (); /// Return the value of a cached tag - Q_INVOKABLE QString cachedTag (const QString sopInstanceUID, const QString tag); + Q_INVOKABLE QString cachedTag (const QString& sopInstanceUID, const QString& tag); /// Return the list of all cached tags and values for the specified sopInstanceUID. Returns with empty string if the tag is not present in the cache. - Q_INVOKABLE void getCachedTags(const QString sopInstanceUID, QMap &cachedTags); + Q_INVOKABLE void getCachedTags(const QString& sopInstanceUID, QMap &cachedTags); /// Insert an instance tag's value into to the cache - Q_INVOKABLE bool cacheTag (const QString sopInstanceUID, const QString tag, const QString value); + Q_INVOKABLE bool cacheTag (const QString& sopInstanceUID, const QString& tag, const QString& value); /// Insert lists of tags into the cache as a batch query operation - Q_INVOKABLE bool cacheTags (const QStringList sopInstanceUIDs, const QStringList tags, const QStringList values); + Q_INVOKABLE bool cacheTags (const QStringList& sopInstanceUIDs, const QStringList& tags, const QStringList& values); /// Remove all tags corresponding to a SOP instance UID - Q_INVOKABLE void removeCachedTags(const QString sopInstanceUID); + Q_INVOKABLE void removeCachedTags(const QString& sopInstanceUID); /// Get displayed name of a given field - Q_INVOKABLE QString displayedNameForField(QString table, QString field) const; + Q_INVOKABLE QString displayedNameForField(const QString& table, const QString& field) const; /// Set displayed name of a given field - Q_INVOKABLE void setDisplayedNameForField(QString table, QString field, QString displayedName); + Q_INVOKABLE void setDisplayedNameForField(const QString& table, const QString& field, const QString& displayedName); /// Get visibility of a given field - Q_INVOKABLE bool visibilityForField(QString table, QString field) const; + Q_INVOKABLE bool visibilityForField(const QString& table, const QString& field) const; /// Set visibility of a given field - Q_INVOKABLE void setVisibilityForField(QString table, QString field, bool visibility); + Q_INVOKABLE void setVisibilityForField(const QString& table, const QString& field, bool visibility); /// Get weight of a given field. /// Weight specifies the order of the field columns in the table. Smaller values are positioned towards the left ("heaviest sinks down") - Q_INVOKABLE int weightForField(QString table, QString field) const; + Q_INVOKABLE int weightForField(const QString& table, const QString& field) const; /// Set weight of a given field /// Weight specifies the order of the field columns in the table. Smaller values are positioned towards the left ("heaviest sinks down") - Q_INVOKABLE void setWeightForField(QString table, QString field, int weight); + Q_INVOKABLE void setWeightForField(const QString& table, const QString& field, int weight); /// Get format of a given field /// It contains a json document with the following fields: /// - resizeMode: column resize mode. Accepted values are: "interactive" (default), "stretch", or "resizeToContents". /// - sort: default sort order. Accepted values are: empty (default), "ascending" or "descending". /// Only one column (or none) should have non-empty sort order in each table. - Q_INVOKABLE QString formatForField(QString table, QString field) const; + Q_INVOKABLE QString formatForField(const QString& table, const QString& field) const; /// Set format of a given field - Q_INVOKABLE void setFormatForField(QString table, QString field, QString format); + Q_INVOKABLE void setFormatForField(const QString& table, const QString& field, const QString& format); /// There is no patient UID in DICOM, so we need to use use this composite ID to uniquely identify a patient with a string. /// Used when inserting a patient (InsertedPatientsCompositeIDCache) and in the display field update process. diff --git a/Libs/DICOM/Core/ctkDICOMDatabase_p.h b/Libs/DICOM/Core/ctkDICOMDatabase_p.h index 2f4bb1cbdf..f20dbee636 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase_p.h +++ b/Libs/DICOM/Core/ctkDICOMDatabase_p.h @@ -46,9 +46,9 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabasePrivate public: ctkDICOMDatabasePrivate(ctkDICOMDatabase&); ~ctkDICOMDatabasePrivate(); - void init(QString databaseFile); + void init(const QString& databaseFile); void registerCompressionLibraries(); - bool executeScript(const QString script); + bool executeScript(const QString& script); /// Run a query and prints debug output of status bool loggedExec(QSqlQuery& query); @@ -108,7 +108,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabasePrivate QString getDisplaySeriesFieldsKey(QString seriesInstanceUID, QMap > &displayedFieldsMapSeries); /// Get all Filename values from table - QStringList filenames(QString table); + QStringList filenames(const QString& table); int rowCount(const QString& tableName); @@ -174,7 +174,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabasePrivate QStringList TagsToPrecache; QStringList TagsToExcludeFromStorage; bool openTagCacheDatabase(); - void precacheTags(const ctkDICOMItem& dataset, const QString sopInstanceUID); + void precacheTags(const ctkDICOMItem& dataset, const QString& sopInstanceUID); /// Insert metadata ctkDICOMDatabase::InsertResult insertPatientStudySeries(const ctkDICOMItem& dataset, diff --git a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorAbstractRule.h b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorAbstractRule.h index 1b91f9aa2d..8a439c705c 100644 --- a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorAbstractRule.h +++ b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorAbstractRule.h @@ -126,9 +126,9 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDisplayedFieldGeneratorAbstractRule /// Used when merging the original database content with the displayed fields generated by the rules. /// Example: SeriesDescription -> Unnamed Series virtual void registerEmptyFieldNames( - QMultiMap emptyFieldsSeries, - QMultiMap emptyFieldsStudies, - QMultiMap emptyFieldsPatients) + const QMultiMap& emptyFieldsSeries, + const QMultiMap& emptyFieldsStudies, + const QMultiMap& emptyFieldsPatients) { Q_UNUSED(emptyFieldsSeries); Q_UNUSED(emptyFieldsStudies); diff --git a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.cpp b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.cpp index f4f1ded978..8c553acc05 100644 --- a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.cpp +++ b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.cpp @@ -82,14 +82,14 @@ QStringList ctkDICOMDisplayedFieldGeneratorDefaultRule::getRequiredDICOMTags() //------------------------------------------------------------------------------ void ctkDICOMDisplayedFieldGeneratorDefaultRule::registerEmptyFieldNames( - QMultiMap emptyFieldsDisplaySeries, - QMultiMap emptyFieldsDisplayStudies, - QMultiMap emptyFieldsDisplayPatients ) + const QMultiMap& emptyFieldsDisplaySeries, + const QMultiMap& emptyFieldsDisplayStudies, + const QMultiMap& emptyFieldsDisplayPatients ) { - Q_UNUSED(emptyFieldsDisplaySeries); Q_UNUSED(emptyFieldsDisplayStudies); Q_UNUSED(emptyFieldsDisplayPatients); - emptyFieldsDisplaySeries.insert("SeriesDescription", EMPTY_SERIES_DESCRIPTION); + QMultiMap localSeries = emptyFieldsDisplaySeries; + localSeries.insert("SeriesDescription", EMPTY_SERIES_DESCRIPTION); } //------------------------------------------------------------------------------ @@ -153,7 +153,7 @@ void ctkDICOMDisplayedFieldGeneratorDefaultRule::mergeDisplayedFieldsForInstance } //------------------------------------------------------------------------------ -QString ctkDICOMDisplayedFieldGeneratorDefaultRule::humanReadablePatientName(QString dicomPatientName) +QString ctkDICOMDisplayedFieldGeneratorDefaultRule::humanReadablePatientName(const QString& dicomPatientName) { OFString dicomName(dicomPatientName.toUtf8().constData()); OFString formattedName; diff --git a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.h b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.h index 9af1d22d1e..1dca3235f9 100644 --- a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.h +++ b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorDefaultRule.h @@ -46,7 +46,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDisplayedFieldGeneratorDefaultRule : public /// Register placeholder strings that still mean that a given field can be considered empty. /// Used when merging the original database content with the displayed fields generated by the rules. /// Example: SeriesDescription -> Unnamed Series - void registerEmptyFieldNames(QMultiMap emptyFieldsSeries, QMultiMap emptyFieldstudies, QMultiMap emptyFieldsPatients) override; + void registerEmptyFieldNames(const QMultiMap& emptyFieldsSeries, const QMultiMap& emptyFieldstudies, const QMultiMap& emptyFieldsPatients) override; /// Generate displayed fields for a certain instance based on its cached tags /// The way these generated fields will be used is defined by \sa mergeDisplayedFieldsForInstance @@ -62,7 +62,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDisplayedFieldGeneratorDefaultRule : public const QMultiMap &emptyFieldsSeries, const QMultiMap &emptyFieldsStudy, const QMultiMap &emptyFieldsPatient ) override; protected: - QString humanReadablePatientName(QString dicomPatientName); + QString humanReadablePatientName(const QString& dicomPatientName); }; #endif diff --git a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDescriptionRule.cpp b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDescriptionRule.cpp index 7b1bf24544..48d23e50c1 100644 --- a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDescriptionRule.cpp +++ b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDescriptionRule.cpp @@ -68,16 +68,17 @@ QStringList ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDescriptionRule::ge //------------------------------------------------------------------------------ void ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDescriptionRule::registerEmptyFieldNames( - QMultiMap emptyFieldsDisplaySeries, - QMultiMap emptyFieldsDisplayStudies, - QMultiMap emptyFieldsDisplayPatients ) + const QMultiMap& emptyFieldsDisplaySeries, + const QMultiMap& emptyFieldsDisplayStudies, + const QMultiMap& emptyFieldsDisplayPatients ) { Q_UNUSED(emptyFieldsDisplayStudies); Q_UNUSED(emptyFieldsDisplayPatients); - emptyFieldsDisplaySeries.insert("SeriesDescription", this->EmptySeriesDescriptionRtPlan); - emptyFieldsDisplaySeries.insert("SeriesDescription", this->EmptySeriesDescriptionRtStruct); - emptyFieldsDisplaySeries.insert("SeriesDescription", this->EmptySeriesDescriptionRtImage); + QMultiMap localSeries = emptyFieldsDisplaySeries; + localSeries.insert("SeriesDescription", this->EmptySeriesDescriptionRtPlan); + localSeries.insert("SeriesDescription", this->EmptySeriesDescriptionRtStruct); + localSeries.insert("SeriesDescription", this->EmptySeriesDescriptionRtImage); } //------------------------------------------------------------------------------ diff --git a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDescriptionRule.h b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDescriptionRule.h index a9d947aa4b..3bdf50c3ba 100644 --- a/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDescriptionRule.h +++ b/Libs/DICOM/Core/ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDescriptionRule.h @@ -50,7 +50,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDisplayedFieldGeneratorRadiotherapySeriesDes /// Register placeholder strings that still mean that a given field can be considered empty. /// Used when merging the original database content with the displayed fields generated by the rules. /// Example: SeriesDescription -> Unnamed Series - void registerEmptyFieldNames(QMultiMap emptyFieldsSeries, QMultiMap emptyFieldsStudies, QMultiMap emptyFieldsPatients) override; + void registerEmptyFieldNames(const QMultiMap& emptyFieldsSeries, const QMultiMap& emptyFieldsStudies, const QMultiMap& emptyFieldsPatients) override; /// Generate displayed fields for a certain instance based on its cached tags /// The way these generated fields will be used is defined by \sa mergeDisplayedFieldsForInstance diff --git a/Libs/DICOM/Core/ctkDICOMIndexer.cpp b/Libs/DICOM/Core/ctkDICOMIndexer.cpp index 9326d32c6b..7ef4b866e2 100644 --- a/Libs/DICOM/Core/ctkDICOMIndexer.cpp +++ b/Libs/DICOM/Core/ctkDICOMIndexer.cpp @@ -443,14 +443,14 @@ ctkDICOMDatabase* ctkDICOMIndexer::database() } //------------------------------------------------------------------------------ - void ctkDICOMIndexer::addFile(ctkDICOMDatabase* db, const QString filePath, bool copyFile/*=false*/) + void ctkDICOMIndexer::addFile(ctkDICOMDatabase* db, const QString& filePath, bool copyFile/*=false*/) { this->setDatabase(db); this->addFile(filePath, copyFile); } //------------------------------------------------------------------------------ -void ctkDICOMIndexer::addFile(const QString filePath, bool copyFile/*=false*/) +void ctkDICOMIndexer::addFile(const QString& filePath, bool copyFile/*=false*/) { Q_D(ctkDICOMIndexer); DICOMIndexingQueue::IndexingRequest request; diff --git a/Libs/DICOM/Core/ctkDICOMIndexer.h b/Libs/DICOM/Core/ctkDICOMIndexer.h index a53f1c0256..dece790ea3 100644 --- a/Libs/DICOM/Core/ctkDICOMIndexer.h +++ b/Libs/DICOM/Core/ctkDICOMIndexer.h @@ -111,9 +111,9 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMIndexer : public QObject /// Scan the file using Dcmtk and populate the database with all the /// DICOM fields accordingly. /// - Q_INVOKABLE void addFile(const QString filePath, bool copyFile = false); + Q_INVOKABLE void addFile(const QString& filePath, bool copyFile = false); /// Kept for backward compatibility - Q_INVOKABLE void addFile(ctkDICOMDatabase* db, const QString filePath, bool copyFile = false); + Q_INVOKABLE void addFile(ctkDICOMDatabase* db, const QString& filePath, bool copyFile = false); /// /// \brief Wait for all the indexing operations to complete diff --git a/Libs/DICOM/Core/ctkDICOMItem.cpp b/Libs/DICOM/Core/ctkDICOMItem.cpp index d099c009bb..3b8e16a6ce 100644 --- a/Libs/DICOM/Core/ctkDICOMItem.cpp +++ b/Libs/DICOM/Core/ctkDICOMItem.cpp @@ -729,7 +729,7 @@ int ctkDICOMItem::GetElementAsUnsignedShort( const DcmTag& tag, unsigned long po return i; } -bool ctkDICOMItem::SetElementAsString( const DcmTag& tag, QString string ) +bool ctkDICOMItem::SetElementAsString( const DcmTag& tag, const QString& string ) { Q_D(ctkDICOMItem); this->EnsureDcmDataSetIsInitialized(); @@ -737,7 +737,7 @@ bool ctkDICOMItem::SetElementAsString( const DcmTag& tag, QString string ) return CheckCondition( d->m_DcmItem->putAndInsertString( tag, string.toLatin1().data() ) ); } -bool ctkDICOMItem::SetElementAsStringList( const DcmTag& /*tag*/, QStringList /*stringList*/ ) +bool ctkDICOMItem::SetElementAsStringList( const DcmTag& /*tag*/, const QStringList& /*stringList*/ ) { this->EnsureDcmDataSetIsInitialized(); // TODO: Find out how this can be implemented with DcmDataset methods; there is no method for @@ -745,7 +745,7 @@ bool ctkDICOMItem::SetElementAsStringList( const DcmTag& /*tag*/, QStringList /* return false; } -bool ctkDICOMItem::SetElementAsPersonName( const DcmTag& tag, ctkDICOMPersonName personName ) +bool ctkDICOMItem::SetElementAsPersonName( const DcmTag& tag, const ctkDICOMPersonName& personName ) { Q_D(ctkDICOMItem); this->EnsureDcmDataSetIsInitialized(); @@ -764,7 +764,7 @@ bool ctkDICOMItem::SetElementAsPersonName( const DcmTag& tag, ctkDICOMPersonName return false; } -bool ctkDICOMItem::SetElementAsPersonNameList( const DcmTag& tag, ctkDICOMPersonNameList personNameList ) +bool ctkDICOMItem::SetElementAsPersonNameList( const DcmTag& tag, const ctkDICOMPersonNameList& personNameList ) { Q_UNUSED(tag); Q_UNUSED(personNameList); @@ -804,7 +804,7 @@ bool ctkDICOMItem::SetElementAsTime( const DcmTag& tag, QTime time ) return false; } -bool ctkDICOMItem::SetElementAsDateTime( const DcmTag& tag, QDateTime dateTime ) +bool ctkDICOMItem::SetElementAsDateTime( const DcmTag& tag, const QDateTime& dateTime ) { Q_D(ctkDICOMItem); this->EnsureDcmDataSetIsInitialized(); @@ -1037,7 +1037,7 @@ QString ctkDICOMItem::GetStoredSerialization() -void ctkDICOMItem::SetStoredSerialization(QString serializedDataset) +void ctkDICOMItem::SetStoredSerialization(const QString& serializedDataset) { Q_UNUSED(serializedDataset); throw std::runtime_error("No serialization implemented for this object!"); diff --git a/Libs/DICOM/Core/ctkDICOMItem.h b/Libs/DICOM/Core/ctkDICOMItem.h index 9a42b73bd1..1aa3897a8f 100644 --- a/Libs/DICOM/Core/ctkDICOMItem.h +++ b/Libs/DICOM/Core/ctkDICOMItem.h @@ -205,13 +205,13 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMItem /// /// \brief Set-methods for for all subtypes of DcmByteString /// - bool SetElementAsString( const DcmTag& tag, QString string ); - bool SetElementAsStringList( const DcmTag& tag, QStringList stringList ); //> Currently not implemented - bool SetElementAsPersonName( const DcmTag& tag, ctkDICOMPersonName personName ); - bool SetElementAsPersonNameList( const DcmTag& tag, ctkDICOMPersonNameList personNameList ); //> Currently not implemented + bool SetElementAsString( const DcmTag& tag, const QString& string ); + bool SetElementAsStringList( const DcmTag& tag, const QStringList& stringList ); //> Currently not implemented + bool SetElementAsPersonName( const DcmTag& tag, const ctkDICOMPersonName& personName ); + bool SetElementAsPersonNameList( const DcmTag& tag, const ctkDICOMPersonNameList& personNameList ); //> Currently not implemented bool SetElementAsDate( const DcmTag& tag, QDate date ); bool SetElementAsTime( const DcmTag& tag, QTime time ); - bool SetElementAsDateTime( const DcmTag& tag, QDateTime dateTime ); + bool SetElementAsDateTime( const DcmTag& tag, const QDateTime& dateTime ); bool SetElementAsInteger( const DcmTag& tag, long value, unsigned long pos = 0 ); // type IS bool SetElementAsSignedShort( const DcmTag& tag, int value, unsigned long pos = 0 ); // type SS bool SetElementAsUnsignedShort( const DcmTag& tag, int value, unsigned long pos = 0 ); // type US @@ -276,7 +276,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMItem /// You can override this method in a subclass to store a serialized /// version of the object to some storage mechanism, eg a database /// - virtual void SetStoredSerialization(QString serializedDataset); + virtual void SetStoredSerialization(const QString& serializedDataset); QScopedPointer d_ptr; diff --git a/Libs/DICOM/Core/ctkDICOMScheduler.cpp b/Libs/DICOM/Core/ctkDICOMScheduler.cpp index 887351a0b3..df46f903ae 100644 --- a/Libs/DICOM/Core/ctkDICOMScheduler.cpp +++ b/Libs/DICOM/Core/ctkDICOMScheduler.cpp @@ -62,7 +62,7 @@ class ctkDICOMJobsAppender : public dcmtk::log4cplus::Appender { return this->MessagesPerThread; } - QString messageByThreadID(QString threadID) + QString messageByThreadID(const QString& threadID) { if (!this->MessagesPerThread.contains(threadID)) { @@ -878,7 +878,7 @@ QList> ctkDICOMScheduler::getJobsByDICOMUIDs(cons const QStringList &studyInstanceUIDs, const QStringList &seriesInstanceUIDs, const QStringList &sopInstanceUIDs, - QList statusFilters) + const QList& statusFilters) { Q_D(ctkDICOMScheduler); diff --git a/Libs/DICOM/Core/ctkDICOMScheduler.h b/Libs/DICOM/Core/ctkDICOMScheduler.h index 8b0eb7d40f..64e22f52d6 100644 --- a/Libs/DICOM/Core/ctkDICOMScheduler.h +++ b/Libs/DICOM/Core/ctkDICOMScheduler.h @@ -198,7 +198,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMScheduler : public ctkJobScheduler const QStringList& studyInstanceUIDs = {}, const QStringList& seriesInstanceUIDs = {}, const QStringList& sopInstanceUIDs = {}, - QList statusFilters = + const QList& statusFilters = { ctkAbstractJob::JobStatus::Initialized, ctkAbstractJob::JobStatus::Queued, diff --git a/Libs/DICOM/Core/ctkDICOMStudyMergedFilterProxyModel.cpp b/Libs/DICOM/Core/ctkDICOMStudyMergedFilterProxyModel.cpp index f81adce355..23194c3b4f 100644 --- a/Libs/DICOM/Core/ctkDICOMStudyMergedFilterProxyModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMStudyMergedFilterProxyModel.cpp @@ -220,7 +220,7 @@ void ctkDICOMStudyMergedFilterProxyModel::clearSourceProxyFilterModels() } //------------------------------------------------------------------------------ -void ctkDICOMStudyMergedFilterProxyModel::refreshStudies(QList models) +void ctkDICOMStudyMergedFilterProxyModel::refreshStudies(const QList& models) { this->beginResetModel(); diff --git a/Libs/DICOM/Core/ctkDICOMStudyMergedFilterProxyModel.h b/Libs/DICOM/Core/ctkDICOMStudyMergedFilterProxyModel.h index 94b846011d..e516c8bbe4 100644 --- a/Libs/DICOM/Core/ctkDICOMStudyMergedFilterProxyModel.h +++ b/Libs/DICOM/Core/ctkDICOMStudyMergedFilterProxyModel.h @@ -52,27 +52,27 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMStudyMergedFilterProxyModel : public QAbstra virtual ~ctkDICOMStudyMergedFilterProxyModel(); /// Set the list of source proxy models to merge - Q_INVOKABLE void setSourceProxyFilterModels(const QList& models); + Q_INVOKABLE void setSourceProxyFilterModels(const QList& models); /// Clear all source models Q_INVOKABLE void clearSourceProxyFilterModels(); /// Refresh studies by rebuilding the merged rows - Q_INVOKABLE void refreshStudies(QList models = QList()); + Q_INVOKABLE void refreshStudies(const QList& models = QList()); /// Get the list of source filter proxy models - Q_INVOKABLE QList sourceProxyFilterModels() const; - Q_INVOKABLE QList sourceModels() const; + Q_INVOKABLE QList sourceProxyFilterModels() const; + Q_INVOKABLE QList sourceModels() const; /// Reimplemented from QAbstractListModel Q_INVOKABLE int rowCount(const QModelIndex& parent = QModelIndex()) const override; Q_INVOKABLE QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; /// Map from merged index to source model and source index - Q_INVOKABLE QPair mapToSource(const QModelIndex& proxyIndex) const; + Q_INVOKABLE QPair mapToSource(const QModelIndex& proxyIndex) const; /// Map from source model and source index to merged index - Q_INVOKABLE QModelIndex mapFromSource(const QPair& sourceInfo) const; + Q_INVOKABLE QModelIndex mapFromSource(const QPair& sourceInfo) const; protected slots: void onSourceDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight, const QVector& roles); diff --git a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp index 5c069afb3b..a0d84e2155 100644 --- a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.cpp @@ -49,11 +49,11 @@ ctkDICOMThumbnailGeneratorJobPrivate::~ctkDICOMThumbnailGeneratorJobPrivate() //------------------------------------------------------------------------------ CTK_GET_CPP(ctkDICOMThumbnailGeneratorJob, QString, databaseFilename, DatabaseFilename); -CTK_SET_CPP(ctkDICOMThumbnailGeneratorJob, QString, setDatabaseFilename, DatabaseFilename); +CTK_SET_CPP(ctkDICOMThumbnailGeneratorJob, const QString&, setDatabaseFilename, DatabaseFilename); CTK_GET_CPP(ctkDICOMThumbnailGeneratorJob, QString, dicomFilePath, DicomFilePath); -CTK_SET_CPP(ctkDICOMThumbnailGeneratorJob, QString, setDicomFilePath, DicomFilePath); +CTK_SET_CPP(ctkDICOMThumbnailGeneratorJob, const QString&, setDicomFilePath, DicomFilePath); CTK_GET_CPP(ctkDICOMThumbnailGeneratorJob, QString, modality, Modality); -CTK_SET_CPP(ctkDICOMThumbnailGeneratorJob, QString, setModality, Modality); +CTK_SET_CPP(ctkDICOMThumbnailGeneratorJob, const QString&, setModality, Modality); CTK_GET_CPP(ctkDICOMThumbnailGeneratorJob, QColor, backgroundColor, BackgroundColor); CTK_SET_CPP(ctkDICOMThumbnailGeneratorJob, QColor, setBackgroundColor, BackgroundColor); diff --git a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.h b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.h index 7661b42f49..fcd7af4de5 100644 --- a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.h +++ b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorJob.h @@ -53,19 +53,19 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMThumbnailGeneratorJob : public ctkDICOMJob ///@{ /// Database Filename - void setDatabaseFilename(QString databaseFilename); + void setDatabaseFilename(const QString& databaseFilename); QString databaseFilename() const; ///}@ ///@{ /// Dicom file path - void setDicomFilePath(QString dicomFilePath); + void setDicomFilePath(const QString& dicomFilePath); QString dicomFilePath() const; ///@} ///@{ /// Modality - void setModality(QString modality); + void setModality(const QString& modality); QString modality() const; ///@} diff --git a/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp index f25dcfa086..8010b5ffcf 100644 --- a/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp @@ -459,7 +459,7 @@ bool ctkDICOMAppWidget::searchWidgetPopUpMode(){ } //------------------------------------------------------------------------------ -void ctkDICOMAppWidget::setTagsToPrecache( const QStringList tags) +void ctkDICOMAppWidget::setTagsToPrecache( const QStringList& tags) { Q_D(ctkDICOMAppWidget); d->DICOMDatabase->setTagsToPrecache(tags); @@ -659,7 +659,7 @@ void ctkDICOMAppWidget::setIndexingResult(int patientsAdded, int studiesAdded, i } //---------------------------------------------------------------------------- -void ctkDICOMAppWidget::onImportDirectory(QString directory) +void ctkDICOMAppWidget::onImportDirectory(const QString& directory) { Q_D(ctkDICOMAppWidget); if (QDir(directory).exists()) diff --git a/Libs/DICOM/Widgets/ctkDICOMAppWidget.h b/Libs/DICOM/Widgets/ctkDICOMAppWidget.h index 8192974ef8..503f0c28df 100644 --- a/Libs/DICOM/Widgets/ctkDICOMAppWidget.h +++ b/Libs/DICOM/Widgets/ctkDICOMAppWidget.h @@ -54,7 +54,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMAppWidget : public QWidget /// delegate to the corresponding routines of the internal /// instance of the database. /// @see ctkDICOMDatabase - void setTagsToPrecache(const QStringList tags); + void setTagsToPrecache(const QStringList& tags); const QStringList tagsToPrecache(); /// Updates schema of loaded database to match the one @@ -96,7 +96,7 @@ public Q_SLOTS: /// Import a directory - this is used when the user selects a directory /// from the Import Dialog, but can also be used externally to trigger /// an import (i.e. for testing or to support drag-and-drop) - void onImportDirectory(QString directory); + void onImportDirectory(const QString& directory); /// Save number of added patients, studies, series, images void setIndexingResult(int, int, int, int); diff --git a/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp b/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp index 2cd2225ed5..5ce6fb550b 100644 --- a/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp @@ -78,7 +78,7 @@ class ctkDICOMBrowserPrivate: public Ui_ctkDICOMBrowser void init(); - void importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode); + void importDirectory(const QString& directory, ctkDICOMBrowser::ImportDirectoryMode mode); void importFiles(const QStringList& files, ctkDICOMBrowser::ImportDirectoryMode mode); @@ -691,7 +691,7 @@ void ctkDICOMBrowser::setDatabaseDirectorySettingsKey(const QString& key) } //------------------------------------------------------------------------------ -void ctkDICOMBrowser::setTagsToPrecache( const QStringList tags) +void ctkDICOMBrowser::setTagsToPrecache( const QStringList& tags) { Q_D(ctkDICOMBrowser); d->DICOMDatabase->setTagsToPrecache(tags); @@ -867,7 +867,7 @@ void ctkDICOMBrowser::onRepairAction() } //---------------------------------------------------------------------------- -void ctkDICOMBrowser::onImportDirectoriesSelected(QStringList directories) +void ctkDICOMBrowser::onImportDirectoriesSelected(const QStringList& directories) { Q_D(ctkDICOMBrowser); this->importDirectories(directories, this->importDirectoryMode()); @@ -904,7 +904,7 @@ void ctkDICOMBrowser::importFiles(const QStringList& files, ctkDICOMBrowser::Imp } //---------------------------------------------------------------------------- -void ctkDICOMBrowser::importDirectories(QStringList directories, ctkDICOMBrowser::ImportDirectoryMode mode) +void ctkDICOMBrowser::importDirectories(const QStringList& directories, ctkDICOMBrowser::ImportDirectoryMode mode) { Q_D(ctkDICOMBrowser); if (!d->DICOMDatabase || !d->DICOMIndexer) @@ -919,14 +919,14 @@ void ctkDICOMBrowser::importDirectories(QStringList directories, ctkDICOMBrowser } //---------------------------------------------------------------------------- -void ctkDICOMBrowser::importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode) +void ctkDICOMBrowser::importDirectory(const QString& directory, ctkDICOMBrowser::ImportDirectoryMode mode) { Q_D(ctkDICOMBrowser); d->importDirectory(directory, mode); } //---------------------------------------------------------------------------- -void ctkDICOMBrowser::onImportDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode) +void ctkDICOMBrowser::onImportDirectory(const QString& directory, ctkDICOMBrowser::ImportDirectoryMode mode) { this->importDirectory(directory, mode); } @@ -939,7 +939,7 @@ void ctkDICOMBrowser::waitForImportFinished() } //---------------------------------------------------------------------------- -void ctkDICOMBrowserPrivate::importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode) +void ctkDICOMBrowserPrivate::importDirectory(const QString& directory, ctkDICOMBrowser::ImportDirectoryMode mode) { if (!QDir(directory).exists()) { @@ -1040,7 +1040,7 @@ void ctkDICOMBrowser::onModelSelected(const QItemSelection &item1, const QItemSe } //---------------------------------------------------------------------------- -bool ctkDICOMBrowser::confirmDeleteSelectedUIDs(QStringList uids) +bool ctkDICOMBrowser::confirmDeleteSelectedUIDs(const QStringList& uids) { Q_D(ctkDICOMBrowser); @@ -1351,7 +1351,7 @@ void ctkDICOMBrowser::onSeriesRightClicked(const QPoint &point) } //---------------------------------------------------------------------------- -void ctkDICOMBrowser::exportSeries(QString dirPath, QStringList uids) +void ctkDICOMBrowser::exportSeries(const QString& dirPath, const QStringList& uids) { Q_D(ctkDICOMBrowser); diff --git a/Libs/DICOM/Widgets/ctkDICOMBrowser.h b/Libs/DICOM/Widgets/ctkDICOMBrowser.h index d555409a24..67e5ad4b80 100644 --- a/Libs/DICOM/Widgets/ctkDICOMBrowser.h +++ b/Libs/DICOM/Widgets/ctkDICOMBrowser.h @@ -105,7 +105,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMBrowser : public QWidget /// delegate to the corresponding routines of the internal /// instance of the database. /// @see ctkDICOMDatabase - void setTagsToPrecache(const QStringList tags); + void setTagsToPrecache(const QStringList& tags); const QStringList tagsToPrecache(); Q_INVOKABLE ctkDICOMDatabase* database(); @@ -191,14 +191,14 @@ public Q_SLOTS: /// By default, \a mode is ImportDirectoryMode::ImportDirectoryAddLink is set. /// /// \sa importDirectory(QString directory, int mode) - void importDirectories(QStringList directories, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink); + void importDirectories(const QStringList& directories, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink); /// \brief Import a directory /// /// This can be used to externally trigger an import (i.e. for testing or to support drag-and-drop) /// /// By default, \a mode is ImportDirectoryMode::ImportDirectoryAddLink is set. - void importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink); + void importDirectory(const QString& directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink); /// \brief Import a list of files /// @@ -214,7 +214,7 @@ public Q_SLOTS: void waitForImportFinished(); /// \deprecated importDirectory() should be used - void onImportDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink); + void onImportDirectory(const QString& directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink); /// slots to capture status updates from the database during an /// import operation @@ -268,7 +268,7 @@ public Q_SLOTS: /// empty, uses the UID. /// Returns true if the user confirms the delete, false otherwise. /// Remembers if the user doesn't want to show the confirmation again. - bool confirmDeleteSelectedUIDs(QStringList uids); + bool confirmDeleteSelectedUIDs(const QStringList& uids); protected Q_SLOTS: /// \brief Import directories @@ -277,7 +277,7 @@ protected Q_SLOTS: /// directories from the Import Dialog. /// /// \sa importDirectories(QString directory, int mode) - void onImportDirectoriesSelected(QStringList directories); + void onImportDirectoriesSelected(const QStringList& directories); void onImportDirectoryComboBoxCurrentIndexChanged(int index); @@ -294,7 +294,7 @@ protected Q_SLOTS: /// Called to export the series associated with the selected UIDs /// \sa exportSelectedStudies, exportSelectedPatients - void exportSeries(QString dirPath, QStringList uids); + void exportSeries(const QString& dirPath, const QStringList& uids); /// Called to export the studies associated with the selected UIDs /// \sa exportSelectedSeries, exportSelectedPatients diff --git a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp index c0cba78bf2..66fe0e4646 100644 --- a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp @@ -115,18 +115,18 @@ class QCenteredItemModel : public QStandardItemModel }; Q_ENUM(Columns); QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - QString getJobTypeAsString(QString jobClass, ctkDICOMJob::DICOMLevels dicomLevel); + QString getJobTypeAsString(const QString& jobClass, ctkDICOMJob::DICOMLevels dicomLevel); void addJob(const ctkDICOMJobDetail &td, ctkDICOMDatabase* database); void updateJobStatus(const ctkDICOMJobDetail &td, const JobStatus &status); void updateProgressBar(const ctkDICOMJobDetail &td, ctkDICOMDatabase* database); void setProgressBar(int row, const ctkDICOMJobDetail &td, ctkDICOMDatabase* database); - QStringList clearJobsByType(QString type); + QStringList clearJobsByType(const QString& type); QStringList clearCompletedJobs(); QStringList clearFailedJobs(); QStringList clearUserStoppedJobs(); QStringList clearQueuedJobs(); void removeRowsByJobUIDs(QStringList jobUIDs); - static Columns getColumnIndexFromString(QString columnString); + static Columns getColumnIndexFromString(const QString& columnString); static QString getColumnStringFromIndex(Columns columnIndex); }; @@ -144,7 +144,7 @@ QVariant QCenteredItemModel::data(const QModelIndex &index, int role) const } //---------------------------------------------------------------------------- -QString QCenteredItemModel::getJobTypeAsString(QString jobClass, ctkDICOMJob::DICOMLevels dicomLevel) +QString QCenteredItemModel::getJobTypeAsString(const QString& jobClass, ctkDICOMJob::DICOMLevels dicomLevel) { if (jobClass == "ctkDICOMQueryJob") { @@ -437,7 +437,7 @@ void QCenteredItemModel::setProgressBar(int row, const ctkDICOMJobDetail &td, ct } //---------------------------------------------------------------------------- -QStringList QCenteredItemModel::clearJobsByType(QString type) +QStringList QCenteredItemModel::clearJobsByType(const QString& type) { #if (QT_VERSION >= QT_VERSION_CHECK(5,15,0)) QList list = this->findItems(type, Qt::MatchRegularExpression, Columns::Status); @@ -502,7 +502,7 @@ void QCenteredItemModel::removeRowsByJobUIDs(QStringList jobUIDs) } //---------------------------------------------------------------------------- -QCenteredItemModel::Columns QCenteredItemModel::getColumnIndexFromString(QString columnString) +QCenteredItemModel::Columns QCenteredItemModel::getColumnIndexFromString(const QString& columnString) { if (columnString == ctkDICOMJobListWidget::tr("Type")) { @@ -643,7 +643,7 @@ class ctkDICOMJobListWidgetPrivate: public Ui_ctkDICOMJobListWidget void init(); void disconnectScheduler(); void connectScheduler(); - void setFilterKeyColumn(QString); + void setFilterKeyColumn(const QString&); void updateJobsDetailsWidget(); void retryJobs(); @@ -819,7 +819,7 @@ void ctkDICOMJobListWidgetPrivate::connectScheduler() } //---------------------------------------------------------------------------- -void ctkDICOMJobListWidgetPrivate::setFilterKeyColumn(QString text) +void ctkDICOMJobListWidgetPrivate::setFilterKeyColumn(const QString& text) { int columnIndex = QCenteredItemModel::getColumnIndexFromString(text); this->proxyModel->setFilterKeyColumn(columnIndex); @@ -1070,7 +1070,7 @@ void ctkDICOMJobListWidget::setScheduler(QSharedPointer sched } //---------------------------------------------------------------------------- -void ctkDICOMJobListWidget::onJobInitialized(QVariant data) +void ctkDICOMJobListWidget::onJobInitialized(const QVariant& data) { Q_D(ctkDICOMJobListWidget); ctkDICOMJobDetail td = data.value(); @@ -1092,7 +1092,7 @@ void ctkDICOMJobListWidget::onJobInitialized(QVariant data) } //---------------------------------------------------------------------------- -void ctkDICOMJobListWidget::onJobQueued(QVariant data) +void ctkDICOMJobListWidget::onJobQueued(const QVariant& data) { Q_D(ctkDICOMJobListWidget); ctkDICOMJobDetail td = data.value(); @@ -1208,14 +1208,14 @@ void ctkDICOMJobListWidget::onJobUserStopped(QList datas) } //---------------------------------------------------------------------------- -void ctkDICOMJobListWidget::onFilterTextChanged(QString text) +void ctkDICOMJobListWidget::onFilterTextChanged(const QString& text) { Q_D(ctkDICOMJobListWidget); d->proxyModel->setFilterRegularExpression(text); } //---------------------------------------------------------------------------- -void ctkDICOMJobListWidget::onFilterColumnChanged(QString text) +void ctkDICOMJobListWidget::onFilterColumnChanged(const QString& text) { Q_D(ctkDICOMJobListWidget); d->setFilterKeyColumn(text); diff --git a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.h b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.h index af03e21fbd..aa59accf50 100644 --- a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.h +++ b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.h @@ -55,8 +55,8 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMJobListWidget : public QWidget void setScheduler(QSharedPointer scheduler); public Q_SLOTS: - void onJobInitialized(QVariant); - void onJobQueued(QVariant); + void onJobInitialized(const QVariant&); + void onJobQueued(const QVariant&); void onJobStarted(QList); void onJobAttemptFailed(QList); void onJobFailed(QList); @@ -64,8 +64,8 @@ public Q_SLOTS: void onJobFinished(QList); void onProgressJobDetail(QList); - void onFilterTextChanged(QString); - void onFilterColumnChanged(QString); + void onFilterTextChanged(const QString&); + void onFilterColumnChanged(const QString&); void onJobsViewSelectionChanged(); void onSelectAllButtonClicked(); diff --git a/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp index 44a8bcf071..f5d41a66dd 100644 --- a/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp @@ -64,7 +64,7 @@ class qRecursiveTreeProxyFilter : public QSortFilterProxyModel { } private: - bool filterAcceptsIndex(const QModelIndex index) const + bool filterAcceptsIndex(const QModelIndex& index) const { // Accept item if its tag, attribute, or value text matches QRegularExpression re = filterRegularExpression(); @@ -102,7 +102,7 @@ class ctkDICOMObjectListWidgetPrivate: public Ui_ctkDICOMObjectListWidget ~ctkDICOMObjectListWidgetPrivate(); void populateDICOMObjectTreeView(const QString& fileName); void setPathLabel(const QString& currentFile); - QString dicomObjectModelAsString(QAbstractItemModel* dicomObjectModel, QModelIndex parent = QModelIndex(), int indent = 0, QString rowPrefix = QString()); + QString dicomObjectModelAsString(QAbstractItemModel* dicomObjectModel, const QModelIndex& parent = QModelIndex(), int indent = 0, const QString& rowPrefix = QString()); void setFilterExpressionInModel(qRecursiveTreeProxyFilter* filterModel, const QString& expr); QString endOfLine; @@ -167,7 +167,7 @@ void ctkDICOMObjectListWidgetPrivate::setPathLabel(const QString& currentFile) } // -------------------------------------------------------------------------- -QString ctkDICOMObjectListWidgetPrivate::dicomObjectModelAsString(QAbstractItemModel* aDicomObjectModel, QModelIndex parent /*=QModelIndex()*/, int indent /*=0*/, QString rowPrefix /*=QString()*/) +QString ctkDICOMObjectListWidgetPrivate::dicomObjectModelAsString(QAbstractItemModel* aDicomObjectModel, const QModelIndex& parent /*=QModelIndex()*/, int indent /*=0*/, const QString& rowPrefix /*=QString()*/) { QString dump; QString indentString(indent, '\t'); // add tab characters, (indent) number of times @@ -300,7 +300,7 @@ QStringList ctkDICOMObjectListWidget::fileList() } // -------------------------------------------------------------------------- -void ctkDICOMObjectListWidget::openLookupUrl(QString tag) +void ctkDICOMObjectListWidget::openLookupUrl(const QString& tag) { QString lookupUrl = "http://dicomlookup.com/lookup.asp?sw=Tnumber&q=" + tag; QUrl url(lookupUrl); diff --git a/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.h b/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.h index b7bd501451..d005a62b9e 100644 --- a/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.h +++ b/Libs/DICOM/Widgets/ctkDICOMObjectListWidget.h @@ -57,7 +57,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMObjectListWidget : public QWidget QString metadataAsText(bool allFiles = false); /// Open DICOM tag definition in a web browser - void openLookupUrl(QString tag); + void openLookupUrl(const QString& tag); bool isThumbnailVisible()const; diff --git a/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp b/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp index 3954ef0060..57509098ad 100644 --- a/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMServerNodeWidget2.cpp @@ -271,7 +271,7 @@ class ctkDICOMServerNodeWidget2Private : public Ui_ctkDICOMServerNodeWidget2 const QString& status); void settingsModified(); - void restoreFocus(QModelIndexList selectedIndexes, + void restoreFocus(const QModelIndexList& selectedIndexes, int horizontalScrollBarValue, int verticalScrollBarValue, bool resetServerStatus = true); @@ -933,7 +933,7 @@ void ctkDICOMServerNodeWidget2Private::settingsModified() } //---------------------------------------------------------------------------- -void ctkDICOMServerNodeWidget2Private::restoreFocus(QModelIndexList selectedIndexes, +void ctkDICOMServerNodeWidget2Private::restoreFocus(const QModelIndexList& selectedIndexes, int horizontalScrollBarValue, int verticalScrollBarValue, bool resetServerStatus) diff --git a/Libs/DICOM/Widgets/ctkDICOMStudyListView.cpp b/Libs/DICOM/Widgets/ctkDICOMStudyListView.cpp index 9ec6775916..c99bf01de2 100644 --- a/Libs/DICOM/Widgets/ctkDICOMStudyListView.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMStudyListView.cpp @@ -951,7 +951,7 @@ void ctkDICOMStudyListView::clean() } //------------------------------------------------------------------------------ -void ctkDICOMStudyListView::refreshStudiesModels(QList models) +void ctkDICOMStudyListView::refreshStudiesModels(const QList& models) { Q_D(ctkDICOMStudyListView); QAbstractItemModel* model = this->model(); @@ -2027,7 +2027,7 @@ void ctkDICOMStudyListView::selectAllSeries(QItemSelectionModel::SelectionFlags } //------------------------------------------------------------------------------ -void ctkDICOMStudyListView::selectAllSeriesByPatient(QString patientUID, +void ctkDICOMStudyListView::selectAllSeriesByPatient(const QString& patientUID, QItemSelectionModel::SelectionFlags selectionMode) { Q_D(ctkDICOMStudyListView); @@ -2073,7 +2073,7 @@ void ctkDICOMStudyListView::selectSeriesInstanceUIDs(const QStringList &seriesIn } //------------------------------------------------------------------------------ -QStringList ctkDICOMStudyListView::selectedStudiesInstanceUIDsByPatient(QString patientUID) const +QStringList ctkDICOMStudyListView::selectedStudiesInstanceUIDsByPatient(const QString& patientUID) const { if (!this->model()) { @@ -2108,7 +2108,7 @@ QStringList ctkDICOMStudyListView::selectedStudiesInstanceUIDsByPatient(QString } //------------------------------------------------------------------------------ -QStringList ctkDICOMStudyListView::selectedSeriesInstanceUIDsByPatient(QString patientUID) const +QStringList ctkDICOMStudyListView::selectedSeriesInstanceUIDsByPatient(const QString& patientUID) const { if (!this->model()) { @@ -2179,13 +2179,13 @@ QStringList ctkDICOMStudyListView::selectedSeriesInstanceUIDs() const } //------------------------------------------------------------------------------ -int ctkDICOMStudyListView::numberOfStudiesSelectedByPatient(QString patientUID) const +int ctkDICOMStudyListView::numberOfStudiesSelectedByPatient(const QString& patientUID) const { return this->selectedStudiesInstanceUIDsByPatient(patientUID).count(); } //------------------------------------------------------------------------------ -int ctkDICOMStudyListView::numberOfSeriesSelectedByPatient(QString patientUID) const +int ctkDICOMStudyListView::numberOfSeriesSelectedByPatient(const QString& patientUID) const { return this->selectedSeriesInstanceUIDsByPatient(patientUID).count(); } diff --git a/Libs/DICOM/Widgets/ctkDICOMStudyListView.h b/Libs/DICOM/Widgets/ctkDICOMStudyListView.h index 427c6ccdc8..3382be076e 100644 --- a/Libs/DICOM/Widgets/ctkDICOMStudyListView.h +++ b/Libs/DICOM/Widgets/ctkDICOMStudyListView.h @@ -73,7 +73,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMStudyListView : public QListView Q_INVOKABLE QStringList selectedStudyInstanceUIDs() const; /// Get selected studies for a patient - Q_INVOKABLE QStringList selectedStudiesInstanceUIDsByPatient(QString patientUID) const; + Q_INVOKABLE QStringList selectedStudiesInstanceUIDsByPatient(const QString& patientUID) const; /// Get current study instance UID Q_INVOKABLE QString currentStudyInstanceUID() const; @@ -83,10 +83,10 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMStudyListView : public QListView QItemSelectionModel::SelectionFlag flag = QItemSelectionModel::Select); /// Return the numer of selected series for a patient - Q_INVOKABLE int numberOfStudiesSelectedByPatient(QString patientUID) const; + Q_INVOKABLE int numberOfStudiesSelectedByPatient(const QString& patientUID) const; /// Get selected series for a patient - Q_INVOKABLE QStringList selectedSeriesInstanceUIDsByPatient(QString patientUID) const; + Q_INVOKABLE QStringList selectedSeriesInstanceUIDsByPatient(const QString& patientUID) const; /// Get selected series for a study Q_INVOKABLE QStringList selectedSeriesInstanceUIDsByStudy(const QModelIndex& studyIndex) const; @@ -98,7 +98,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMStudyListView : public QListView Q_INVOKABLE void selectAllSeries(QItemSelectionModel::SelectionFlags selectionMode = QItemSelectionModel::Select); /// Select select all series for a patient - Q_INVOKABLE void selectAllSeriesByPatient(QString patientUID, + Q_INVOKABLE void selectAllSeriesByPatient(const QString& patientUID, QItemSelectionModel::SelectionFlags selectionMode = QItemSelectionModel::Select); /// Toggle select all series for a study @@ -109,7 +109,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMStudyListView : public QListView Q_INVOKABLE void selectSeriesInstanceUIDs(const QStringList& seriesInstanceUIDs); /// Return the numer of selected series for a patient - Q_INVOKABLE int numberOfSeriesSelectedByPatient(QString patientUID) const; + Q_INVOKABLE int numberOfSeriesSelectedByPatient(const QString& patientUID) const; /// Return the numer of selected series for a study Q_INVOKABLE int numberOfSeriesSelectedByStudy(const QModelIndex& studyIndex) const; @@ -196,7 +196,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMStudyListView : public QListView Q_INVOKABLE void clean(); /// Refresh all studies models - Q_INVOKABLE void refreshStudiesModels(QList models = QList()); + Q_INVOKABLE void refreshStudiesModels(const QList& models = QList()); ///@} /// \name Series view management @@ -205,12 +205,12 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMStudyListView : public QListView /// The view is owned and managed by this study list view Q_INVOKABLE ctkDICOMSeriesTableView* createSeriesViewForStudy(const QModelIndex& studyIndex); Q_INVOKABLE ctkDICOMSeriesTableView* createSeriesViewForStudy(const QString& studyInstanceUID); - Q_INVOKABLE QMap createAllSeriesView(); + Q_INVOKABLE QMap createAllSeriesView(); /// Get a series table view for the given study Q_INVOKABLE ctkDICOMSeriesTableView* getSeriesViewForStudy(const QModelIndex& studyIndex); Q_INVOKABLE ctkDICOMSeriesTableView* getSeriesViewForStudy(const QString& studyInstanceUID); - Q_INVOKABLE QMap getAllSeriesView(); + Q_INVOKABLE QMap getAllSeriesView(); /// Remove and cleanup series view for a study Q_INVOKABLE void removeSeriesViewForStudy(const QModelIndex& studyIndex); diff --git a/Libs/DICOM/Widgets/ctkDICOMTableView.cpp b/Libs/DICOM/Widgets/ctkDICOMTableView.cpp index cd554d8ea3..9d57568879 100644 --- a/Libs/DICOM/Widgets/ctkDICOMTableView.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMTableView.cpp @@ -387,7 +387,7 @@ ctkDICOMTableView::ctkDICOMTableView(QWidget *parent) } //---------------------------------------------------------------------------- -ctkDICOMTableView::ctkDICOMTableView(QString queryTableName, QWidget *parent) +ctkDICOMTableView::ctkDICOMTableView(const QString& queryTableName, QWidget *parent) : Superclass(parent) , d_ptr(new ctkDICOMTableViewPrivate(*this)) { @@ -397,7 +397,7 @@ ctkDICOMTableView::ctkDICOMTableView(QString queryTableName, QWidget *parent) } //------------------------------------------------------------------------------ -ctkDICOMTableView::ctkDICOMTableView (ctkDICOMDatabase* dicomDataBase, QString queryTableName, QWidget* parent) +ctkDICOMTableView::ctkDICOMTableView (ctkDICOMDatabase* dicomDataBase, const QString& queryTableName, QWidget* parent) : Superclass(parent) , d_ptr(new ctkDICOMTableViewPrivate(*this)) { @@ -777,7 +777,7 @@ bool ctkDICOMTableView::removeSqlEqualWhereCondition(const QString& column) } //------------------------------------------------------------------------------ -void ctkDICOMTableView::addSqlGreaterWhereCondition(const QString& column, const QVariant value) +void ctkDICOMTableView::addSqlGreaterWhereCondition(const QString& column, const QVariant& value) { Q_D(ctkDICOMTableView); d->sqlGreaterWhereConditions[column] = value; @@ -791,7 +791,7 @@ bool ctkDICOMTableView::removeSqlGreaterWhereCondition(const QString& column) } //------------------------------------------------------------------------------ -void ctkDICOMTableView::addSqlLessWhereCondition(const QString& column, const QVariant value) +void ctkDICOMTableView::addSqlLessWhereCondition(const QString& column, const QVariant& value) { Q_D(ctkDICOMTableView); d->sqlLessWhereConditions[column] = value; @@ -805,7 +805,7 @@ bool ctkDICOMTableView::removeSqlLessWhereCondition(const QString& column) } //------------------------------------------------------------------------------ -void ctkDICOMTableView::addSqlGreaterEqualWhereCondition(const QString& column, const QVariant value) +void ctkDICOMTableView::addSqlGreaterEqualWhereCondition(const QString& column, const QVariant& value) { Q_D(ctkDICOMTableView); d->sqlGreaterEqualWhereConditions[column] = value; @@ -819,7 +819,7 @@ bool ctkDICOMTableView::removeSqlGreaterEqualWhereCondition(const QString& colum } //------------------------------------------------------------------------------ -void ctkDICOMTableView::addSqlLessEqualWhereCondition(const QString& column, const QVariant value) +void ctkDICOMTableView::addSqlLessEqualWhereCondition(const QString& column, const QVariant& value) { Q_D(ctkDICOMTableView); d->sqlLessEqualWhereConditions[column] = value; diff --git a/Libs/DICOM/Widgets/ctkDICOMTableView.h b/Libs/DICOM/Widgets/ctkDICOMTableView.h index 48e4362f89..2d31776bca 100644 --- a/Libs/DICOM/Widgets/ctkDICOMTableView.h +++ b/Libs/DICOM/Widgets/ctkDICOMTableView.h @@ -64,7 +64,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMTableView : public QWidget * @param parent the parent widget * @param queryTableName the name of the table of the ctkDICOMDatabase which shall be displayed */ - explicit ctkDICOMTableView(QString queryTableName, QWidget* parent = 0); + explicit ctkDICOMTableView(const QString& queryTableName, QWidget* parent = 0); /** * ctor with tablename and database as parameter @@ -72,7 +72,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMTableView : public QWidget * @param parent the parent widget * @param queryTableName the name of the table of the ctkDICOMDatabase which shall be displayed */ - explicit ctkDICOMTableView (ctkDICOMDatabase* dicomDataBase, QString queryTableName, QWidget* parent = 0); + explicit ctkDICOMTableView (ctkDICOMDatabase* dicomDataBase, const QString& queryTableName, QWidget* parent = 0); virtual ~ctkDICOMTableView(); @@ -159,7 +159,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMTableView : public QWidget * @param column Name of the column which is filtered using the operator * @param value Value that the filtered values must be greater than */ - Q_INVOKABLE void addSqlGreaterWhereCondition(const QString& column, const QVariant value); + Q_INVOKABLE void addSqlGreaterWhereCondition(const QString& column, const QVariant& value); /** * @brief Remove all 'greater' WHERE conditions from a given column. \sa removeSqlGreaterWhereCondition @@ -172,7 +172,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMTableView : public QWidget * @param column Name of the column which is filtered using the operator * @param value Value that the filtered values must be less than */ - Q_INVOKABLE void addSqlLessWhereCondition(const QString& column, const QVariant value); + Q_INVOKABLE void addSqlLessWhereCondition(const QString& column, const QVariant& value); /** * @brief Remove all 'less' WHERE conditions from a given column. \sa removeSqlLessWhereCondition @@ -185,7 +185,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMTableView : public QWidget * @param column Name of the column which is filtered using the operator * @param value Value that the filtered values must be greater than or equal to */ - Q_INVOKABLE void addSqlGreaterEqualWhereCondition(const QString& column, const QVariant value); + Q_INVOKABLE void addSqlGreaterEqualWhereCondition(const QString& column, const QVariant& value); /** * @brief Remove all 'greater or equal' WHERE conditions from a given column. \sa removeSqlGreaterEqualWhereCondition @@ -198,7 +198,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMTableView : public QWidget * @param column Name of the column which is filtered using the operator * @param value Value that the filtered values must be less than or equal to */ - Q_INVOKABLE void addSqlLessEqualWhereCondition(const QString& column, const QVariant value); + Q_INVOKABLE void addSqlLessEqualWhereCondition(const QString& column, const QVariant& value); /** * @brief Remove all 'less or equal' WHERE conditions from a given column. \sa removeSqlLessEqualWhereCondition diff --git a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp index 8ab9e82411..c3a98afecb 100644 --- a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp @@ -101,7 +101,7 @@ class ctkDICOMVisualBrowserWidgetPrivate : public Ui_ctkDICOMVisualBrowserWidget void init(); void disconnectScheduler(); void connectScheduler(); - void importDirectory(QString directory, ctkDICOMVisualBrowserWidget::ImportDirectoryMode mode); + void importDirectory(const QString& directory, ctkDICOMVisualBrowserWidget::ImportDirectoryMode mode); void importFiles(const QStringList& files, ctkDICOMVisualBrowserWidget::ImportDirectoryMode mode); void importOldSettings(); void showUpdateSchemaDialog(); @@ -570,7 +570,7 @@ void ctkDICOMVisualBrowserWidgetPrivate::connectScheduler() } //---------------------------------------------------------------------------- -void ctkDICOMVisualBrowserWidgetPrivate::importDirectory(QString directory, ctkDICOMVisualBrowserWidget::ImportDirectoryMode mode) +void ctkDICOMVisualBrowserWidgetPrivate::importDirectory(const QString& directory, ctkDICOMVisualBrowserWidget::ImportDirectoryMode mode) { if (!this->DicomDatabase) { diff --git a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario2TestSuite.cpp b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario2TestSuite.cpp index 42d29b544a..bd9365460d 100644 --- a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario2TestSuite.cpp +++ b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario2TestSuite.cpp @@ -129,7 +129,7 @@ void ctkEAScenario2EventConsumer::handleEvent(const ctkEvent& event) //---------------------------------------------------------------------------- ctkEAScenario2EventPublisher::ctkEAScenario2EventPublisher(ctkPluginContext* context, - const QString& name, const QStringList topics, + const QString& name, const QStringList& topics, int id, int numOfMessage) : eventAdmin(0), context(context), messageTosend(numOfMessage), topicsToSend(topics) diff --git a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario2TestSuite_p.h b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario2TestSuite_p.h index d6f788dee4..9008dd7952 100644 --- a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario2TestSuite_p.h +++ b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario2TestSuite_p.h @@ -110,7 +110,7 @@ class ctkEAScenario2EventPublisher : public QObject public: ctkEAScenario2EventPublisher(ctkPluginContext* context, - const QString& name, const QStringList topics, + const QString& name, const QStringList& topics, int id, int numOfMessage); void runTest(); diff --git a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario3TestSuite.cpp b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario3TestSuite.cpp index 0a2f92cab0..64c9b87ae5 100644 --- a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario3TestSuite.cpp +++ b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario3TestSuite.cpp @@ -30,7 +30,7 @@ //---------------------------------------------------------------------------- ctkEAScenario3EventConsumer::ctkEAScenario3EventConsumer( - ctkPluginContext* pluginContext, const QStringList topics, + ctkPluginContext* pluginContext, const QStringList& topics, int numSyncMsg, int numAsyncMsg) : context(pluginContext), topicsToConsume(topics), asynchMessages(0), synchMessages(0), numSyncMessages(numSyncMsg), numAsyncMessages(numAsyncMsg), error(false), exc("") diff --git a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario3TestSuite_p.h b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario3TestSuite_p.h index d03d416596..4939b25429 100644 --- a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario3TestSuite_p.h +++ b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario3TestSuite_p.h @@ -87,7 +87,7 @@ class ctkEAScenario3EventConsumer : public QObject, public ctkEventHandler * name of the Consumer * @param id */ - ctkEAScenario3EventConsumer(ctkPluginContext* pluginContext, const QStringList topics, + ctkEAScenario3EventConsumer(ctkPluginContext* pluginContext, const QStringList& topics, int numSyncMsg, int numAsyncMsg); void runTest(); diff --git a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario4TestSuite.cpp b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario4TestSuite.cpp index fb889b56da..e0a931d7a5 100644 --- a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario4TestSuite.cpp +++ b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario4TestSuite.cpp @@ -30,7 +30,7 @@ //---------------------------------------------------------------------------- ctkEAScenario4EventConsumer::ctkEAScenario4EventConsumer( - ctkPluginContext* pluginContext, const QStringList topics, + ctkPluginContext* pluginContext, const QStringList& topics, int numSyncMsg, int numAsyncMsg, const QString& filter) : context(pluginContext), topicsToConsume(topics), filterToConsume(filter), asynchMessages(0), synchMessages(0), numSyncMessages(numSyncMsg), diff --git a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario4TestSuite_p.h b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario4TestSuite_p.h index 9005ea8a71..e74e2d4952 100644 --- a/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario4TestSuite_p.h +++ b/Libs/PluginFramework/Testing/org.commontk.eventadmintest/ctkEAScenario4TestSuite_p.h @@ -90,7 +90,7 @@ class ctkEAScenario4EventConsumer : public QObject, public ctkEventHandler * name of the Consumer * @param id */ - ctkEAScenario4EventConsumer(ctkPluginContext* pluginContext, const QStringList topics, + ctkEAScenario4EventConsumer(ctkPluginContext* pluginContext, const QStringList& topics, int numSyncMsg, int numAsyncMsg, const QString& filter); void runTest(); diff --git a/Libs/PluginFramework/Testing/org.commontk.pluginfwtest/ctkPluginFrameworkTestSuite.cpp b/Libs/PluginFramework/Testing/org.commontk.pluginfwtest/ctkPluginFrameworkTestSuite.cpp index f6c62643dd..bd5b84de87 100644 --- a/Libs/PluginFramework/Testing/org.commontk.pluginfwtest/ctkPluginFrameworkTestSuite.cpp +++ b/Libs/PluginFramework/Testing/org.commontk.pluginfwtest/ctkPluginFrameworkTestSuite.cpp @@ -745,7 +745,7 @@ bool ctkPluginFrameworkTestSuite::checkListenerEvents( // reset the events bool ctkPluginFrameworkTestSuite::checkSyncListenerEvents( bool pexp, ctkPluginEvent::Type ptype, QSharedPointer pX, - ctkServiceReference servX) + const ctkServiceReference& servX) { Q_UNUSED(servX) diff --git a/Libs/PluginFramework/Testing/org.commontk.pluginfwtest/ctkPluginFrameworkTestSuite_p.h b/Libs/PluginFramework/Testing/org.commontk.pluginfwtest/ctkPluginFrameworkTestSuite_p.h index 26258c1ad7..f8053e5f1f 100644 --- a/Libs/PluginFramework/Testing/org.commontk.pluginfwtest/ctkPluginFrameworkTestSuite_p.h +++ b/Libs/PluginFramework/Testing/org.commontk.pluginfwtest/ctkPluginFrameworkTestSuite_p.h @@ -94,7 +94,7 @@ private Q_SLOTS: // reset the events bool checkSyncListenerEvents( bool pexp, ctkPluginEvent::Type ptype, QSharedPointer pX, - ctkServiceReference servX); + const ctkServiceReference& servX); // Check that the expected events have reached the listeners and // reset the events diff --git a/Libs/PluginFramework/ctkLDAPExpr.cpp b/Libs/PluginFramework/ctkLDAPExpr.cpp index 6949ace61f..2af3af7048 100644 --- a/Libs/PluginFramework/ctkLDAPExpr.cpp +++ b/Libs/PluginFramework/ctkLDAPExpr.cpp @@ -98,12 +98,12 @@ class ctkLDAPExprData : public QSharedData { public: - ctkLDAPExprData( int op, QList args ) + ctkLDAPExprData( int op, const QList& args ) : m_operator(op), m_args(args) { } - ctkLDAPExprData( int op, QString attrName, QString attrValue ) + ctkLDAPExprData( int op, const QString& attrName, const QString& attrValue ) : m_operator(op), m_attrName(attrName), m_attrValue(attrValue) { } diff --git a/Libs/PluginFramework/ctkPluginAbstractTracked_p.h b/Libs/PluginFramework/ctkPluginAbstractTracked_p.h index 051e77d2ee..feb947eb39 100644 --- a/Libs/PluginFramework/ctkPluginAbstractTracked_p.h +++ b/Libs/PluginFramework/ctkPluginAbstractTracked_p.h @@ -187,7 +187,7 @@ class ctkPluginAbstractTracked : public QMutex * @return Customized object for the tracked item or null if * the item is not to be tracked. */ - virtual T customizerAdding(S item, const R& related) = 0; + virtual T customizerAdding(const S& item, const R& related) = 0; /** * Call the specific customizer modified method. This method must not be @@ -197,7 +197,7 @@ class ctkPluginAbstractTracked : public QMutex * @param related Action related object. * @param object Customized object for the tracked item. */ - virtual void customizerModified(S item, const R& related, + virtual void customizerModified(const S& item, const R& related, T object) = 0; /** @@ -208,7 +208,7 @@ class ctkPluginAbstractTracked : public QMutex * @param related Action related object. * @param object Customized object for the tracked item. */ - virtual void customizerRemoved(S item, const R& related, + virtual void customizerRemoved(const S& item, const R& related, T object) = 0; /** diff --git a/Libs/PluginFramework/ctkTrackedPlugin.tpp b/Libs/PluginFramework/ctkTrackedPlugin.tpp index bfe3b99113..0968f3477d 100644 --- a/Libs/PluginFramework/ctkTrackedPlugin.tpp +++ b/Libs/PluginFramework/ctkTrackedPlugin.tpp @@ -68,7 +68,7 @@ void ctkTrackedPlugin::pluginChanged(const ctkPluginEvent& event) //---------------------------------------------------------------------------- template -T ctkTrackedPlugin::customizerAdding(QSharedPointer item, +T ctkTrackedPlugin::customizerAdding(const QSharedPointer& item, const ctkPluginEvent& related) { return customizer->addingPlugin(item, related); @@ -76,7 +76,7 @@ T ctkTrackedPlugin::customizerAdding(QSharedPointer item, //---------------------------------------------------------------------------- template -void ctkTrackedPlugin::customizerModified(QSharedPointer item, +void ctkTrackedPlugin::customizerModified(const QSharedPointer& item, const ctkPluginEvent& related, T object) { @@ -85,7 +85,7 @@ void ctkTrackedPlugin::customizerModified(QSharedPointer item, //---------------------------------------------------------------------------- template -void ctkTrackedPlugin::customizerRemoved(QSharedPointer item, +void ctkTrackedPlugin::customizerRemoved(const QSharedPointer& item, const ctkPluginEvent& related, T object) { diff --git a/Libs/PluginFramework/ctkTrackedPlugin_p.h b/Libs/PluginFramework/ctkTrackedPlugin_p.h index 9087b945b8..3725957e48 100644 --- a/Libs/PluginFramework/ctkTrackedPlugin_p.h +++ b/Libs/PluginFramework/ctkTrackedPlugin_p.h @@ -68,7 +68,7 @@ class ctkTrackedPlugin : public ctkTrackedPluginListener, * @return Customized object for the tracked item or null * if the item is not to be tracked. */ - T customizerAdding(QSharedPointer item, + T customizerAdding(const QSharedPointer& item, const ctkPluginEvent& related); /** @@ -79,7 +79,7 @@ class ctkTrackedPlugin : public ctkTrackedPluginListener, * @param related Action related object. * @param object Customized object for the tracked item. */ - void customizerModified(QSharedPointer item, + void customizerModified(const QSharedPointer& item, const ctkPluginEvent& related, T object); /** @@ -90,7 +90,7 @@ class ctkTrackedPlugin : public ctkTrackedPluginListener, * @param related Action related object. * @param object Customized object for the tracked item. */ - void customizerRemoved(QSharedPointer item, + void customizerRemoved(const QSharedPointer& item, const ctkPluginEvent& related, T object); }; diff --git a/Libs/PluginFramework/ctkTrackedService.tpp b/Libs/PluginFramework/ctkTrackedService.tpp index 638060ab2c..a6826648c8 100644 --- a/Libs/PluginFramework/ctkTrackedService.tpp +++ b/Libs/PluginFramework/ctkTrackedService.tpp @@ -105,7 +105,7 @@ void ctkTrackedService::modified() //---------------------------------------------------------------------------- template -T ctkTrackedService::customizerAdding(ctkServiceReference item, +T ctkTrackedService::customizerAdding(const ctkServiceReference& item, const ctkServiceEvent& related) { Q_UNUSED(related) @@ -114,7 +114,7 @@ T ctkTrackedService::customizerAdding(ctkServiceReference item, //---------------------------------------------------------------------------- template -void ctkTrackedService::customizerModified(ctkServiceReference item, +void ctkTrackedService::customizerModified(const ctkServiceReference& item, const ctkServiceEvent& related, T object) { @@ -124,7 +124,7 @@ void ctkTrackedService::customizerModified(ctkServiceReference item, //---------------------------------------------------------------------------- template -void ctkTrackedService::customizerRemoved(ctkServiceReference item, +void ctkTrackedService::customizerRemoved(const ctkServiceReference& item, const ctkServiceEvent& related, T object) { diff --git a/Libs/PluginFramework/ctkTrackedService_p.h b/Libs/PluginFramework/ctkTrackedService_p.h index 517b4b0015..46ba4544ee 100644 --- a/Libs/PluginFramework/ctkTrackedService_p.h +++ b/Libs/PluginFramework/ctkTrackedService_p.h @@ -72,7 +72,7 @@ class ctkTrackedService : public ctkTrackedServiceListener, * @return Customized object for the tracked item or null * if the item is not to be tracked. */ - T customizerAdding(ctkServiceReference item, const ctkServiceEvent& related); + T customizerAdding(const ctkServiceReference& item, const ctkServiceEvent& related); /** * Call the specific customizer modified method. This method must not be @@ -82,7 +82,7 @@ class ctkTrackedService : public ctkTrackedServiceListener, * @param related Action related object. * @param object Customized object for the tracked item. */ - void customizerModified(ctkServiceReference item, + void customizerModified(const ctkServiceReference& item, const ctkServiceEvent& related, T object) ; /** @@ -93,7 +93,7 @@ class ctkTrackedService : public ctkTrackedServiceListener, * @param related Action related object. * @param object Customized object for the tracked item. */ - void customizerRemoved(ctkServiceReference item, + void customizerRemoved(const ctkServiceReference& item, const ctkServiceEvent& related, T object) ; }; diff --git a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKMagnifyViewTest2.cpp b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKMagnifyViewTest2.cpp index 376fd68118..dc15d551bb 100644 --- a/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKMagnifyViewTest2.cpp +++ b/Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKMagnifyViewTest2.cpp @@ -46,8 +46,8 @@ #include //----------------------------------------------------------------------------- -bool imageCompare(ctkVTKMagnifyView * magnify, QString baselineDirectory, - QString baselineFilename) +bool imageCompare(ctkVTKMagnifyView * magnify, const QString& baselineDirectory, + const QString& baselineFilename) { QImage output = ctk::grabWidget(magnify); QImage baseline(baselineDirectory + "/" + baselineFilename); @@ -56,8 +56,8 @@ bool imageCompare(ctkVTKMagnifyView * magnify, QString baselineDirectory, //----------------------------------------------------------------------------- // (Used to create baselines, not during testing). -void imageSave(ctkVTKMagnifyView * magnify, QString baselineDirectory, - QString baselineFilename) +void imageSave(ctkVTKMagnifyView * magnify, const QString& baselineDirectory, + const QString& baselineFilename) { QImage output = ctk::grabWidget(magnify); output.save(baselineDirectory + "/" + baselineFilename); @@ -66,8 +66,8 @@ void imageSave(ctkVTKMagnifyView * magnify, QString baselineDirectory, //----------------------------------------------------------------------------- bool runBaselineTest(int time, QApplication& app, ctkVTKMagnifyView * magnify, QWidget * underWidget, bool shouldBeUnder, - QString baselineDirectory, QString testName, - QString testNumber, QString errorMessage) + const QString& baselineDirectory, const QString& testName, + const QString& testNumber, const QString& errorMessage) { QTimer::singleShot(time, &app, SLOT(quit())); if (app.exec() == EXIT_FAILURE) diff --git a/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetTest.cpp b/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetTest.cpp index 2c35d0e271..8df1b97cac 100644 --- a/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetTest.cpp @@ -55,7 +55,7 @@ private slots: private: void testDecimals(ctkCoordinatesWidget* coordinatesWidget, int decimals); - void testDecimals(ctkCoordinatesWidget* coordinatesWidget, QString displayedValues); + void testDecimals(ctkCoordinatesWidget* coordinatesWidget, const QString& displayedValues); }; // ---------------------------------------------------------------------------- @@ -126,7 +126,7 @@ ::testDecimals(ctkCoordinatesWidget* coordinatesWidget, int decimals) // ---------------------------------------------------------------------------- void ctkCoordinatesWidgetTester ::testDecimals(ctkCoordinatesWidget* coordinatesWidget, - QString expectedDisplayedText) + const QString& expectedDisplayedText) { QStringList displayedText; QList spinBoxes = diff --git a/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetValueProxyTest.cpp b/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetValueProxyTest.cpp index 405a3c7ca7..860d895d32 100644 --- a/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetValueProxyTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkCoordinatesWidgetValueProxyTest.cpp @@ -39,7 +39,7 @@ class Spy : public QObject AcknowledgedSignals = 0; } - void getSpyReport(QString coordinatesString) + void getSpyReport(const QString& coordinatesString) { QCOMPARE(AcknowledgedSignals, 1); AcknowledgedSignals = 0; diff --git a/Libs/Widgets/Testing/Cpp/ctkCrosshairLabelTest2.cpp b/Libs/Widgets/Testing/Cpp/ctkCrosshairLabelTest2.cpp index 71cb84a7fd..56cd3ff2fb 100644 --- a/Libs/Widgets/Testing/Cpp/ctkCrosshairLabelTest2.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkCrosshairLabelTest2.cpp @@ -36,8 +36,8 @@ #include //----------------------------------------------------------------------------- -bool imageCompare(ctkCrosshairLabel& crosshair, QString baselineDirectory, - QString baselineFilename) +bool imageCompare(ctkCrosshairLabel& crosshair, const QString& baselineDirectory, + const QString& baselineFilename) { QImage output = ctk::grabWidget(&crosshair); QImage baseline(baselineDirectory + "/" + baselineFilename); @@ -47,8 +47,8 @@ bool imageCompare(ctkCrosshairLabel& crosshair, QString baselineDirectory, //----------------------------------------------------------------------------- // (Used to create baselines, not during testing). -void imageSave(ctkCrosshairLabel& crosshair, QString baselineDirectory, - QString baselineFilename) +void imageSave(ctkCrosshairLabel& crosshair, const QString& baselineDirectory, + const QString& baselineFilename) { QImage output = ctk::grabWidget(&crosshair); output.save(baselineDirectory + "/" + baselineFilename); @@ -56,8 +56,8 @@ void imageSave(ctkCrosshairLabel& crosshair, QString baselineDirectory, //----------------------------------------------------------------------------- bool runBaselineTest(ctkCrosshairLabel& crosshair, - QString baselineDirectory, QString baselineFilename, - QString errorMessage) + const QString& baselineDirectory, const QString& baselineFilename, + const QString& errorMessage) { QApplication::processEvents(); if (!imageCompare(crosshair, baselineDirectory, baselineFilename)) diff --git a/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxValueProxyTest.cpp b/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxValueProxyTest.cpp index c7c81eba9a..90e5e318cf 100644 --- a/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxValueProxyTest.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkDoubleSpinBoxValueProxyTest.cpp @@ -45,7 +45,7 @@ void getSpyReport(QSignalSpy& spy, double expectedValue) } //----------------------------------------------------------------------------- -void getSpyReport(QSignalSpy& spy, QString expectedValue) +void getSpyReport(QSignalSpy& spy, const QString& expectedValue) { QCOMPARE(spy.count(), 1); diff --git a/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp b/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp index bdfe388603..c9b87bf47b 100644 --- a/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkErrorLogModelTestHelper.cpp @@ -131,7 +131,7 @@ QString checkBoolean(int line, const char* valueName, bool current, bool expecte } //----------------------------------------------------------------------------- -QString checkString(int line, const char* valueName, QString current, QString expected) +QString checkString(int line, const char* valueName, const QString& current, const QString& expected) { if (current != expected) { diff --git a/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp index 6a6a358a19..8484f2bbb7 100644 --- a/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkLayoutManagerTest1.cpp @@ -94,7 +94,7 @@ class ctkNullViewFactory: public ctkLayoutViewFactory { this->setUseCachedViews(true); } - virtual QWidget* createViewFromXML(QDomElement layoutElement){ + virtual QWidget* createViewFromXML(const QDomElement& layoutElement){ Q_UNUSED(layoutElement); return 0; } diff --git a/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest1.cpp b/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest1.cpp index e78c367bca..47eb7a0124 100644 --- a/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest1.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest1.cpp @@ -154,7 +154,7 @@ struct derivedTestData ctkExampleDerivedWorkflowWidgetStep* stepToChangeLineEdit; QString lineEditText; - derivedTestData(QPushButton* newButtonToClick, ctkExampleDerivedWorkflowWidgetStep* newCurrentStep, ctkExampleDerivedWorkflowWidgetStep* newHiddenStep, ctkExampleDerivedWorkflowWidgetStep* newStepToChangeLineEdit=0, QString newLineEditText="") + derivedTestData(QPushButton* newButtonToClick, ctkExampleDerivedWorkflowWidgetStep* newCurrentStep, ctkExampleDerivedWorkflowWidgetStep* newHiddenStep, ctkExampleDerivedWorkflowWidgetStep* newStepToChangeLineEdit=0, const QString& newLineEditText="") { this->buttonToClick = newButtonToClick; this->currentStep = newCurrentStep; diff --git a/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest2.cpp b/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest2.cpp index 53c99c2350..62f177c0b8 100644 --- a/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest2.cpp +++ b/Libs/Widgets/Testing/Cpp/ctkWorkflowWidgetTest2.cpp @@ -155,7 +155,7 @@ struct signalSlotTestData ctkExampleWorkflowWidgetStepUsingSignalsAndSlots* qObjectToChangeLineEdit; QString lineEditText; - signalSlotTestData(QPushButton* newButtonToClick, ctkWorkflowWidgetStep* newCurrentStep, ctkExampleWorkflowWidgetStepUsingSignalsAndSlots* newCurrentQObject, ctkWorkflowWidgetStep* newHiddenStep, ctkExampleWorkflowWidgetStepUsingSignalsAndSlots* newHiddenQObject, ctkExampleWorkflowWidgetStepUsingSignalsAndSlots* newQObjectToChangeLineEdit=0, QString newLineEditText="") + signalSlotTestData(QPushButton* newButtonToClick, ctkWorkflowWidgetStep* newCurrentStep, ctkExampleWorkflowWidgetStepUsingSignalsAndSlots* newCurrentQObject, ctkWorkflowWidgetStep* newHiddenStep, ctkExampleWorkflowWidgetStepUsingSignalsAndSlots* newHiddenQObject, ctkExampleWorkflowWidgetStepUsingSignalsAndSlots* newQObjectToChangeLineEdit=0, const QString& newLineEditText="") { this->buttonToClick = newButtonToClick; this->currentStep = newCurrentStep; diff --git a/Libs/Widgets/ctkComboBox.cpp b/Libs/Widgets/ctkComboBox.cpp index cc0c394785..437356854b 100644 --- a/Libs/Widgets/ctkComboBox.cpp +++ b/Libs/Widgets/ctkComboBox.cpp @@ -392,7 +392,7 @@ QString ctkComboBox::currentUserDataAsString()const } // ------------------------------------------------------------------------- -void ctkComboBox::setCurrentUserDataAsString(QString userData) +void ctkComboBox::setCurrentUserDataAsString(const QString& userData) { for (int index=0; indexcount(); ++index) { diff --git a/Libs/Widgets/ctkComboBox.h b/Libs/Widgets/ctkComboBox.h index a66164b0ab..a5beec1239 100644 --- a/Libs/Widgets/ctkComboBox.h +++ b/Libs/Widgets/ctkComboBox.h @@ -110,7 +110,7 @@ class CTK_WIDGETS_EXPORT ctkComboBox : public QComboBox public slots: /// Set current item based on user data - void setCurrentUserDataAsString(QString userData); + void setCurrentUserDataAsString(const QString& userData); protected: /// Reimplemented for internal reasons diff --git a/Libs/Widgets/ctkCoordinatesWidget.cpp b/Libs/Widgets/ctkCoordinatesWidget.cpp index 586820e942..5eb43724ad 100644 --- a/Libs/Widgets/ctkCoordinatesWidget.cpp +++ b/Libs/Widgets/ctkCoordinatesWidget.cpp @@ -453,7 +453,7 @@ double ctkCoordinatesWidget::singleStep() const } //------------------------------------------------------------------------------ -void ctkCoordinatesWidget::setCoordinatesAsString(QString _pos) +void ctkCoordinatesWidget::setCoordinatesAsString(const QString& _pos) { Q_D(ctkCoordinatesWidget); QStringList posList = _pos.split(','); diff --git a/Libs/Widgets/ctkCoordinatesWidget.h b/Libs/Widgets/ctkCoordinatesWidget.h index eefd7f72b0..7c0dbbf7a4 100644 --- a/Libs/Widgets/ctkCoordinatesWidget.h +++ b/Libs/Widgets/ctkCoordinatesWidget.h @@ -128,7 +128,7 @@ class CTK_WIDGETS_EXPORT ctkCoordinatesWidget : public QWidget /// Set/Get the coordinates. Use commas to separate elements, spaces are /// allowed: e.g. "0,0.0, 0." - void setCoordinatesAsString(QString pos); + void setCoordinatesAsString(const QString& pos); QString coordinatesAsString()const; /// Set/Get the coordinates diff --git a/Libs/Widgets/ctkDateRangeWidget.cpp b/Libs/Widgets/ctkDateRangeWidget.cpp index 50dd88fcc4..913bba4812 100644 --- a/Libs/Widgets/ctkDateRangeWidget.cpp +++ b/Libs/Widgets/ctkDateRangeWidget.cpp @@ -165,7 +165,7 @@ QDateTime ctkDateRangeWidget::endDateTime()const } // -------------------------------------------------------------------------- -void ctkDateRangeWidget::setStartDateTime(QDateTime dateTime) +void ctkDateRangeWidget::setStartDateTime(const QDateTime& dateTime) { Q_D(ctkDateRangeWidget); d->StartDate->setDateTime(dateTime); @@ -173,7 +173,7 @@ void ctkDateRangeWidget::setStartDateTime(QDateTime dateTime) } // -------------------------------------------------------------------------- -void ctkDateRangeWidget::setEndDateTime(QDateTime dateTime) +void ctkDateRangeWidget::setEndDateTime(const QDateTime& dateTime) { Q_D(ctkDateRangeWidget); d->EndDate->setDateTime(dateTime); @@ -181,7 +181,7 @@ void ctkDateRangeWidget::setEndDateTime(QDateTime dateTime) } // -------------------------------------------------------------------------- -void ctkDateRangeWidget::setDateTimeRange(QDateTime startDateTime, QDateTime endDateTime) +void ctkDateRangeWidget::setDateTimeRange(const QDateTime& startDateTime, const QDateTime& endDateTime) { Q_D(ctkDateRangeWidget); d->StartDate->setDateTime(startDateTime.isValid() ? diff --git a/Libs/Widgets/ctkDateRangeWidget.h b/Libs/Widgets/ctkDateRangeWidget.h index 62f0a440d6..6a0a1f65e7 100644 --- a/Libs/Widgets/ctkDateRangeWidget.h +++ b/Libs/Widgets/ctkDateRangeWidget.h @@ -82,14 +82,14 @@ public Q_SLOTS: /// Set the start date. /// If the date is null or invalid, it will be automatically converted into /// a valid date (14 September 1752) - void setStartDateTime(QDateTime start); + void setStartDateTime(const QDateTime& start); /// Set the end date. /// If the date is null or invalid, it will be automatically converted into /// a valid date (31 December, 7999 and a time of 23:59:59 and 999 milliseconds) - void setEndDateTime(QDateTime end); + void setEndDateTime(const QDateTime& end); /// /// Utility function that set the start and end values at once - void setDateTimeRange(QDateTime start, QDateTime end); + void setDateTimeRange(const QDateTime& start, const QDateTime& end); void setDateRange(QDate start, QDate end); /// diff --git a/Libs/Widgets/ctkDirectoryButton.cpp b/Libs/Widgets/ctkDirectoryButton.cpp index 65f91170fe..5fbb9457f5 100644 --- a/Libs/Widgets/ctkDirectoryButton.cpp +++ b/Libs/Widgets/ctkDirectoryButton.cpp @@ -255,7 +255,7 @@ namespace { { Q_OBJECT public: - ExcludeReadOnlyFilterProxyModel(QPalette palette, QObject *parent) + ExcludeReadOnlyFilterProxyModel(const QPalette& palette, QObject *parent) : QSortFilterProxyModel(parent) , Palette(palette) { diff --git a/Libs/Widgets/ctkLayoutFactory.cpp b/Libs/Widgets/ctkLayoutFactory.cpp index 983405891f..da5a10eea9 100644 --- a/Libs/Widgets/ctkLayoutFactory.cpp +++ b/Libs/Widgets/ctkLayoutFactory.cpp @@ -115,7 +115,7 @@ void ctkLayoutFactory::setupLayout() } //----------------------------------------------------------------------------- -QWidget* ctkLayoutFactory::viewFromXML(QDomElement viewElement) +QWidget* ctkLayoutFactory::viewFromXML(const QDomElement& viewElement) { Q_D(ctkLayoutFactory); QWidget* res = 0; @@ -133,7 +133,7 @@ QWidget* ctkLayoutFactory::viewFromXML(QDomElement viewElement) } //----------------------------------------------------------------------------- -QList ctkLayoutFactory::viewsFromXML(QDomElement viewElement) +QList ctkLayoutFactory::viewsFromXML(const QDomElement& viewElement) { QWidgetList res; QList factories = this->viewFactories(viewElement); @@ -153,7 +153,7 @@ QList ctkLayoutFactory::viewsFromXML(QDomElement viewElement) } //----------------------------------------------------------------------------- -void ctkLayoutFactory::setupView(QDomElement viewElement, QWidget* view) +void ctkLayoutFactory::setupView(const QDomElement& viewElement, QWidget* view) { Q_D(ctkLayoutFactory); ctkLayoutViewFactory* factory = d->ViewFactory[view]; @@ -169,7 +169,7 @@ void ctkLayoutFactory::setupView(QDomElement viewElement, QWidget* view) } //----------------------------------------------------------------------------- -QList ctkLayoutFactory::viewFactories(QDomElement viewElement)const +QList ctkLayoutFactory::viewFactories(const QDomElement& viewElement)const { Q_D(const ctkLayoutFactory); QList res; diff --git a/Libs/Widgets/ctkLayoutFactory.h b/Libs/Widgets/ctkLayoutFactory.h index 6f024a85d4..2c76f66421 100644 --- a/Libs/Widgets/ctkLayoutFactory.h +++ b/Libs/Widgets/ctkLayoutFactory.h @@ -68,16 +68,16 @@ class CTK_WIDGETS_EXPORT ctkLayoutFactory: public ctkLayoutManager virtual void setupLayout(); /// Find the layoutElement factory and call viewFromXML() on it. /// \sa viewsFromXML(), setupView() - virtual QWidget* viewFromXML(QDomElement layoutElement); + virtual QWidget* viewFromXML(const QDomElement& layoutElement); /// Find the layoutElement factory and call viewsFromXML() on it. /// \sa viewFromXML(), setupView() - virtual QList viewsFromXML(QDomElement layoutElement); + virtual QList viewsFromXML(const QDomElement& layoutElement); /// Find the layoutElement factory and setupView() on it. /// \sa viewFromXML(), viewsFromXML() - virtual void setupView(QDomElement layoutElement, QWidget* view); + virtual void setupView(const QDomElement& layoutElement, QWidget* view); /// Return all the registered factories that can handle the layoutElement. - QList viewFactories(QDomElement viewElement)const; + QList viewFactories(const QDomElement& viewElement)const; private: Q_DECLARE_PRIVATE(ctkLayoutFactory); diff --git a/Libs/Widgets/ctkLayoutManager.cpp b/Libs/Widgets/ctkLayoutManager.cpp index 1808b28cbf..a0efe5acf8 100644 --- a/Libs/Widgets/ctkLayoutManager.cpp +++ b/Libs/Widgets/ctkLayoutManager.cpp @@ -490,7 +490,7 @@ const QDomDocument ctkLayoutManager::layout()const } //----------------------------------------------------------------------------- -QLayoutItem* ctkLayoutManager::processElement(QDomElement element) +QLayoutItem* ctkLayoutManager::processElement(const QDomElement& element) { Q_ASSERT(!element.isNull()); if (element.tagName() == "layout") @@ -505,7 +505,7 @@ QLayoutItem* ctkLayoutManager::processElement(QDomElement element) } //----------------------------------------------------------------------------- -QLayoutItem* ctkLayoutManager::processLayoutElement(QDomElement layoutElement) +QLayoutItem* ctkLayoutManager::processLayoutElement(const QDomElement& layoutElement) { Q_D(ctkLayoutManager); Q_ASSERT(layoutElement.tagName() == "layout"); @@ -563,7 +563,7 @@ QLayoutItem* ctkLayoutManager::processLayoutElement(QDomElement layoutElement) } //----------------------------------------------------------------------------- -QLayoutItem* ctkLayoutManager::layoutFromXML(QDomElement layoutElement) +QLayoutItem* ctkLayoutManager::layoutFromXML(const QDomElement& layoutElement) { Q_ASSERT(layoutElement.tagName() == "layout"); QString type = layoutElement.attribute("type", "horizontal"); @@ -596,7 +596,7 @@ QLayoutItem* ctkLayoutManager::layoutFromXML(QDomElement layoutElement) } //----------------------------------------------------------------------------- -void ctkLayoutManager::processItemElement(QDomElement itemElement, QLayoutItem* layoutItem) +void ctkLayoutManager::processItemElement(const QDomElement& itemElement, QLayoutItem* layoutItem) { Q_ASSERT(itemElement.tagName() == "item"); Q_ASSERT(itemElement.childNodes().count() == 1); @@ -621,7 +621,7 @@ void ctkLayoutManager::processItemElement(QDomElement itemElement, QLayoutItem* } //----------------------------------------------------------------------------- -void ctkLayoutManager::addChildItemToLayout(QDomElement itemElement, QLayoutItem* childItem, QLayoutItem* layoutItem) +void ctkLayoutManager::addChildItemToLayout(const QDomElement& itemElement, QLayoutItem* childItem, QLayoutItem* layoutItem) { Q_D(ctkLayoutManager); Q_ASSERT(childItem); @@ -668,7 +668,7 @@ void ctkLayoutManager::addChildItemToLayout(QDomElement itemElement, QLayoutItem } //----------------------------------------------------------------------------- -QWidgetItem* ctkLayoutManager::widgetItemFromXML(QDomElement viewElement) +QWidgetItem* ctkLayoutManager::widgetItemFromXML(const QDomElement& viewElement) { //Q_ASSERT(viewElement.tagName() == "view"); QWidget* view = this->viewFromXML(viewElement); @@ -681,7 +681,7 @@ QWidgetItem* ctkLayoutManager::widgetItemFromXML(QDomElement viewElement) } //----------------------------------------------------------------------------- -void ctkLayoutManager::setupView(QDomElement viewElement, QWidget* view) +void ctkLayoutManager::setupView(const QDomElement& viewElement, QWidget* view) { Q_UNUSED(viewElement); Q_D(ctkLayoutManager); @@ -694,7 +694,7 @@ void ctkLayoutManager::setupView(QDomElement viewElement, QWidget* view) } //----------------------------------------------------------------------------- -QList ctkLayoutManager::widgetItemsFromXML(QDomElement viewElement) +QList ctkLayoutManager::widgetItemsFromXML(const QDomElement& viewElement) { ///Q_ASSERT(viewElement.tagName() == "view"); QList res; @@ -709,7 +709,7 @@ QList ctkLayoutManager::widgetItemsFromXML(QDomElement viewElement } //----------------------------------------------------------------------------- -QList ctkLayoutManager::viewsFromXML(QDomElement viewElement) +QList ctkLayoutManager::viewsFromXML(const QDomElement& viewElement) { QList res; res << this->viewFromXML(viewElement); diff --git a/Libs/Widgets/ctkLayoutManager.h b/Libs/Widgets/ctkLayoutManager.h index 9e46340fb6..74208c5215 100644 --- a/Libs/Widgets/ctkLayoutManager.h +++ b/Libs/Widgets/ctkLayoutManager.h @@ -160,37 +160,37 @@ public Q_SLOTS: /// Create the QLayoutItem for an XML element (e.g. "layout", "view"...) /// and its nested elements. /// \sa processLayoutElement() - virtual QLayoutItem* processElement(QDomElement element); + virtual QLayoutItem* processElement(const QDomElement& element); /// Create the QLayoutItem for a "layout" XML element and its nested elements. /// \sa processElement(), layoutFromXML(), processItemElement(), addChildItemToLayout() - virtual QLayoutItem* processLayoutElement(QDomElement layoutElement); + virtual QLayoutItem* processLayoutElement(const QDomElement& layoutElement); /// Create the QLayoutItem for a "layout" XML element. /// \sa processLayoutElement() - virtual QLayoutItem* layoutFromXML(QDomElement layoutElement); + virtual QLayoutItem* layoutFromXML(const QDomElement& layoutElement); /// Create the QLayoutItem(s) of the "item" XML element. /// \sa processItemElement() - void processItemElement(QDomElement layoutElement, QLayoutItem* layoutItem); + void processItemElement(const QDomElement& layoutElement, QLayoutItem* layoutItem); /// Insert a child item into a layout. /// \sa processLayoutElement() - virtual void addChildItemToLayout(QDomElement itemElement, QLayoutItem* childItem, QLayoutItem* layoutItem); + virtual void addChildItemToLayout(const QDomElement& itemElement, QLayoutItem* childItem, QLayoutItem* layoutItem); /// Utility method that creates, setups and wraps into a QWidgetItem the widget /// of a view XML element. /// \sa widgetsItemsFromXML(), viewFromXML() - QWidgetItem* widgetItemFromXML(QDomElement layoutElement); + QWidgetItem* widgetItemFromXML(const QDomElement& layoutElement); /// Method is called each time a view is made visible into a layout. /// This method can be reimplemented. Sets the widget visibility to true /// by default. /// \sa viewsFromXML() - virtual void setupView(QDomElement layoutElement, QWidget* view); + virtual void setupView(const QDomElement& layoutElement, QWidget* view); /// Create, setup and wrap into QWidgetItems the widgets of a view XML /// element. - QList widgetItemsFromXML(QDomElement layoutElement); + QList widgetItemsFromXML(const QDomElement& layoutElement); /// Virtual method that returns a widget from a "view" layout element. /// You are ensured that the tagName of the element is "view". /// The XML element can contain an arbitrary number of XML attributes. /// Create the widget if needed or reuse it from a previous call. /// \sa viewsFromXML(), setupView() - virtual QWidget* viewFromXML(QDomElement layoutElement) = 0; + virtual QWidget* viewFromXML(const QDomElement& layoutElement) = 0; /// Virtual method that returns a list of widgets from a "view" layout /// element. /// If the parent "item" element has a "multiple=true" XML attribute, @@ -200,7 +200,7 @@ public Q_SLOTS: /// layout (e.g. boxlayout). /// This method can be reimplemented. Returns viewFromXML() by default. /// \sa viewFromXML(), - virtual QList viewsFromXML(QDomElement layoutElement); + virtual QList viewsFromXML(const QDomElement& layoutElement); private: Q_DECLARE_PRIVATE(ctkLayoutManager); diff --git a/Libs/Widgets/ctkLayoutViewFactory.cpp b/Libs/Widgets/ctkLayoutViewFactory.cpp index c67af2a31e..9349e52c07 100644 --- a/Libs/Widgets/ctkLayoutViewFactory.cpp +++ b/Libs/Widgets/ctkLayoutViewFactory.cpp @@ -86,7 +86,7 @@ QStringList ctkLayoutViewFactory::supportedElementNames()const } //----------------------------------------------------------------------------- -bool ctkLayoutViewFactory::isElementSupported(QDomElement layoutElement)const +bool ctkLayoutViewFactory::isElementSupported(const QDomElement& layoutElement)const { return this->supportedElementNames().contains(layoutElement.tagName()); } @@ -119,7 +119,7 @@ void ctkLayoutViewFactory::endSetupLayout() } //----------------------------------------------------------------------------- -void ctkLayoutViewFactory::setupView(QDomElement viewElement, QWidget* view) +void ctkLayoutViewFactory::setupView(const QDomElement& viewElement, QWidget* view) { Q_ASSERT(view); view->setVisible(true); @@ -142,7 +142,7 @@ void ctkLayoutViewFactory::setupView(QDomElement viewElement, QWidget* view) } //----------------------------------------------------------------------------- -QWidget* ctkLayoutViewFactory::viewFromXML(QDomElement layoutElement) +QWidget* ctkLayoutViewFactory::viewFromXML(const QDomElement& layoutElement) { Q_D(ctkLayoutViewFactory); QWidgetList views = this->registeredViews(layoutElement); @@ -165,14 +165,14 @@ QWidget* ctkLayoutViewFactory::viewFromXML(QDomElement layoutElement) } //----------------------------------------------------------------------------- -QWidget* ctkLayoutViewFactory::createViewFromXML(QDomElement layoutElement) +QWidget* ctkLayoutViewFactory::createViewFromXML(const QDomElement& layoutElement) { Q_UNUSED(layoutElement); return 0; } //----------------------------------------------------------------------------- -QList ctkLayoutViewFactory::viewsFromXML(QDomElement layoutElement) +QList ctkLayoutViewFactory::viewsFromXML(const QDomElement& layoutElement) { Q_D(ctkLayoutViewFactory); QWidgetList views = this->registeredViews(layoutElement); @@ -198,7 +198,7 @@ QList ctkLayoutViewFactory::viewsFromXML(QDomElement layoutElement) } //----------------------------------------------------------------------------- -QList ctkLayoutViewFactory::createViewsFromXML(QDomElement layoutElement) +QList ctkLayoutViewFactory::createViewsFromXML(const QDomElement& layoutElement) { QWidgetList views; QWidget* view = this->createViewFromXML(layoutElement); @@ -238,7 +238,7 @@ ::registeredViews(const QDomElement& layoutElement)const } //----------------------------------------------------------------------------- -void ctkLayoutViewFactory::registerView(QDomElement layoutElement, QWidget* view) +void ctkLayoutViewFactory::registerView(const QDomElement& layoutElement, QWidget* view) { Q_D(ctkLayoutViewFactory); QDomElement viewElement = this->layoutElement(view); @@ -257,7 +257,7 @@ void ctkLayoutViewFactory::registerView(QDomElement layoutElement, QWidget* view } //----------------------------------------------------------------------------- -void ctkLayoutViewFactory::unregisterView(QDomElement layoutElement, QWidget* view) +void ctkLayoutViewFactory::unregisterView(const QDomElement& layoutElement, QWidget* view) { Q_D(ctkLayoutViewFactory); ctkLayoutViewFactoryPrivate::ViewFactory itemToRemove(layoutElement, view); diff --git a/Libs/Widgets/ctkLayoutViewFactory.h b/Libs/Widgets/ctkLayoutViewFactory.h index 01fd869af9..20ae4e4565 100644 --- a/Libs/Widgets/ctkLayoutViewFactory.h +++ b/Libs/Widgets/ctkLayoutViewFactory.h @@ -65,7 +65,7 @@ class CTK_WIDGETS_EXPORT ctkLayoutViewFactory: public QObject /// factory. By default, returns true if the layout element name is /// contained in supportedElementNames(). /// \sa supportedElementNames() - virtual bool isElementSupported(QDomElement layoutElement)const; + virtual bool isElementSupported(const QDomElement& layoutElement)const; /// Return the useCachedViews property value. /// \sa useCachedViews @@ -85,7 +85,7 @@ class CTK_WIDGETS_EXPORT ctkLayoutViewFactory: public QObject /// This method can be reimplemented. Sets the widget visibility to true /// and register the view by default. /// \sa viewsFromXML() - virtual void setupView(QDomElement layoutElement, QWidget* view); + virtual void setupView(const QDomElement& layoutElement, QWidget* view); /// Virtual method that returns a widget from a "view" layout element. /// You are ensured that the tagName of the element is one of the element /// from the supportedElementNames() list. @@ -94,7 +94,7 @@ class CTK_WIDGETS_EXPORT ctkLayoutViewFactory: public QObject /// a new view using createViewFromXML(). Must be reimplemented. /// \sa viewsFromXML(), setupView(), registeredViews(), useCachedView, /// createViewFromXML() - virtual QWidget* viewFromXML(QDomElement layoutElement); + virtual QWidget* viewFromXML(const QDomElement& layoutElement); /// Virtual method that returns a list of widgets from a "view" layout /// element. /// If the parent "item" element has a "multiple=true" XML attribute, @@ -105,7 +105,7 @@ class CTK_WIDGETS_EXPORT ctkLayoutViewFactory: public QObject /// Returns previously registered or cached views if any, otherwise create /// new views using createViewsFromXML(). /// \sa viewFromXML(), registeredViews(), - virtual QList viewsFromXML(QDomElement layoutElement); + virtual QList viewsFromXML(const QDomElement& layoutElement); /// Return all the widgets that have been registered. /// Used internally for testing. @@ -116,11 +116,11 @@ class CTK_WIDGETS_EXPORT ctkLayoutViewFactory: public QObject /// Create a new view from a layoutElement. Returns 0 by default /// \sa viewFromXML - virtual QWidget* createViewFromXML(QDomElement layoutElement); + virtual QWidget* createViewFromXML(const QDomElement& layoutElement); /// Create new views from a layoutElement. Returns createViewFromXML() /// by default. /// \sa viewsFromXML(), createViewFromXML() - virtual QList createViewsFromXML(QDomElement layoutElement); + virtual QList createViewsFromXML(const QDomElement& layoutElement); /// Return the list of widgets that have already been created by /// view(s)FromXML(). @@ -129,11 +129,11 @@ class CTK_WIDGETS_EXPORT ctkLayoutViewFactory: public QObject /// Save the view to reuse it later on (in view(s)FromXML() ). /// \sa registerView(), registeredViews() - virtual void registerView(QDomElement layoutElement, QWidget* view); + virtual void registerView(const QDomElement& layoutElement, QWidget* view); /// Forget about the view. The view is not being deleted. /// \sa registerView(), registeredViews() - virtual void unregisterView(QDomElement layoutElement, QWidget* view); + virtual void unregisterView(const QDomElement& layoutElement, QWidget* view); /// Forget about the view. The view is not being deleted. /// \sa registerView(), unregisterView() @@ -179,7 +179,7 @@ class ctkTemplateLayoutViewFactory: public ctkLayoutViewFactory { this->setUseCachedViews(true); } - virtual QWidget* createViewFromXML(QDomElement layoutElement){ + virtual QWidget* createViewFromXML(const QDomElement& layoutElement){ Q_UNUSED(layoutElement); return new T; } diff --git a/Libs/Widgets/ctkWorkflowAbstractPagedWidget.cpp b/Libs/Widgets/ctkWorkflowAbstractPagedWidget.cpp index 4791ad481d..47afe0ff4c 100644 --- a/Libs/Widgets/ctkWorkflowAbstractPagedWidget.cpp +++ b/Libs/Widgets/ctkWorkflowAbstractPagedWidget.cpp @@ -134,7 +134,7 @@ void ctkWorkflowAbstractPagedWidget::associateStepWithPage(ctkWorkflowStep* step } // -------------------------------------------------------------------------- -void ctkWorkflowAbstractPagedWidget::associateStepWithLabel(ctkWorkflowStep* step, QString label) +void ctkWorkflowAbstractPagedWidget::associateStepWithLabel(ctkWorkflowStep* step, const QString& label) { Q_D(ctkWorkflowAbstractPagedWidget); @@ -145,7 +145,7 @@ void ctkWorkflowAbstractPagedWidget::associateStepWithLabel(ctkWorkflowStep* ste } // -------------------------------------------------------------------------- -void ctkWorkflowAbstractPagedWidget::associateStepWithPage(ctkWorkflowStep* step, int index, QString label) +void ctkWorkflowAbstractPagedWidget::associateStepWithPage(ctkWorkflowStep* step, int index, const QString& label) { this->associateStepWithPage(step, index); this->associateStepWithLabel(step, label); diff --git a/Libs/Widgets/ctkWorkflowAbstractPagedWidget.h b/Libs/Widgets/ctkWorkflowAbstractPagedWidget.h index ec616d3d54..ce2c996f8d 100644 --- a/Libs/Widgets/ctkWorkflowAbstractPagedWidget.h +++ b/Libs/Widgets/ctkWorkflowAbstractPagedWidget.h @@ -48,13 +48,13 @@ class CTK_WIDGETS_EXPORT ctkWorkflowAbstractPagedWidget : public ctkWorkflowWidg virtual ~ctkWorkflowAbstractPagedWidget(); /// Optionally specify the label to be displayed on the page shown for the given step. - Q_INVOKABLE virtual void associateStepWithLabel(ctkWorkflowStep* step, QString label); + Q_INVOKABLE virtual void associateStepWithLabel(ctkWorkflowStep* step, const QString& label); /// Dictate that a step be displayed on a particular page index, to override the default setting /// to display each encountered step on a new page. A label can also be provided for the step's /// page. Q_INVOKABLE virtual void associateStepWithPage(ctkWorkflowStep* step, int index); - Q_INVOKABLE virtual void associateStepWithPage(ctkWorkflowStep* step, int index, QString label); + Q_INVOKABLE virtual void associateStepWithPage(ctkWorkflowStep* step, int index, const QString& label); /// Get the workflow group box associated with a particular step using ctkWorkflowWidget::workflowGroupBox; From 146f5ec33e4cd5d7ba8523bd90176a406dc4b595 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sat, 28 Mar 2026 20:55:46 -0500 Subject: [PATCH 31/32] PERF: Pass trivially-copyable types by value instead of const-ref (clazy function-args-by-value) Change function parameters from `const T&` to `T` for trivially-copyable types with sizeof <= 16 bytes: bool, int, unsigned short, enum types (QThread::Priority, QtMsgType, ctkErrorLogLevel::LogLevel, etc.), QFlags types (ctkErrorLogTerminalOutput::TerminalOutputs, etc.), QPoint, QSize, QRect, QDate, QPointF, Qt::Alignment, Qt::TextElideMode, Qt::Orientation, Qt::ScrollBarPolicy, QBoxLayout::Direction, and other small enums/flags. These types are trivially copyable and fit in CPU registers on all platforms, so passing by value is more efficient than by-const-reference. Updated both header declarations and cpp definitions for public/protected methods. Private-only methods (in *Private classes) updated in .cpp only. Signals were not changed. The `ctkDICOMQuery::done(const bool& error)` signal was explicitly left unchanged. Slicer downstream impact: ctkVTKRenderView::lookFromAxis() signature changes from `const ctkAxesWidget::Axis&` to `ctkAxesWidget::Axis`. Any Slicer code calling this method will still compile since passing by value accepts both lvalues and rvalues. No virtual override chains were broken. Co-Authored-By: Claude Sonnet 4.6 --- Libs/Core/ctkAbstractFactory.h | 2 +- Libs/Core/ctkAbstractFactory.tpp | 2 +- Libs/Core/ctkAbstractJob.cpp | 2 +- Libs/Core/ctkAbstractJob.h | 2 +- Libs/Core/ctkAbstractWorker.cpp | 2 +- Libs/Core/ctkAbstractWorker.h | 2 +- Libs/Core/ctkErrorLogAbstractModel.cpp | 4 +-- Libs/Core/ctkErrorLogAbstractModel.h | 4 +-- Libs/Core/ctkJobScheduler.cpp | 8 ++--- Libs/Core/ctkJobScheduler.h | 8 ++--- Libs/Core/ctkLogger.cpp | 2 +- Libs/Core/ctkLogger.h | 2 +- Libs/Core/ctkWorkflow.cpp | 4 +-- Libs/Core/ctkWorkflow_p.h | 4 +-- Libs/DICOM/Core/ctkDICOMDatabase.cpp | 6 ++-- Libs/DICOM/Core/ctkDICOMDatabase.h | 2 +- Libs/DICOM/Core/ctkDICOMDatabase_p.h | 4 +-- Libs/DICOM/Core/ctkDICOMEcho.cpp | 4 +-- Libs/DICOM/Core/ctkDICOMEcho.h | 4 +-- Libs/DICOM/Core/ctkDICOMJob.cpp | 2 +- Libs/DICOM/Core/ctkDICOMJob.h | 2 +- Libs/DICOM/Core/ctkDICOMPatientModel.cpp | 2 +- Libs/DICOM/Core/ctkDICOMPatientModel.h | 2 +- Libs/DICOM/Core/ctkDICOMQuery.cpp | 6 ++-- Libs/DICOM/Core/ctkDICOMQuery.h | 6 ++-- Libs/DICOM/Core/ctkDICOMQueryJob.cpp | 2 +- Libs/DICOM/Core/ctkDICOMQueryJob.h | 2 +- Libs/DICOM/Core/ctkDICOMSeriesModel.cpp | 2 +- Libs/DICOM/Core/ctkDICOMSeriesModel.h | 2 +- Libs/DICOM/Core/ctkDICOMServer.cpp | 12 +++---- Libs/DICOM/Core/ctkDICOMServer.h | 12 +++---- Libs/DICOM/Core/ctkDICOMStorageListener.cpp | 4 +-- Libs/DICOM/Core/ctkDICOMStorageListener.h | 4 +-- .../DICOM/Core/ctkDICOMStorageListenerJob.cpp | 4 +-- Libs/DICOM/Core/ctkDICOMStorageListenerJob.h | 4 +-- Libs/DICOM/Core/ctkDICOMStudyModel.cpp | 2 +- Libs/DICOM/Core/ctkDICOMStudyModel.h | 2 +- Libs/DICOM/Widgets/ctkDICOMBrowser.cpp | 6 ++-- Libs/DICOM/Widgets/ctkDICOMBrowser.h | 6 ++-- Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp | 4 +-- .../DICOM/Widgets/ctkDICOMPatientDelegate.cpp | 20 +++++------ Libs/DICOM/Widgets/ctkDICOMPatientDelegate.h | 20 +++++------ Libs/DICOM/Widgets/ctkDICOMPatientView.cpp | 2 +- Libs/DICOM/Widgets/ctkDICOMPatientView.h | 2 +- Libs/DICOM/Widgets/ctkDICOMSeriesDelegate.cpp | 30 ++++++++-------- Libs/DICOM/Widgets/ctkDICOMSeriesDelegate.h | 30 ++++++++-------- .../DICOM/Widgets/ctkDICOMSeriesTableView.cpp | 2 +- Libs/DICOM/Widgets/ctkDICOMSeriesTableView.h | 2 +- Libs/DICOM/Widgets/ctkDICOMStudyDelegate.cpp | 36 +++++++++---------- Libs/DICOM/Widgets/ctkDICOMStudyDelegate.h | 36 +++++++++---------- Libs/DICOM/Widgets/ctkDICOMStudyListView.cpp | 4 +-- Libs/DICOM/Widgets/ctkDICOMStudyListView.h | 4 +-- Libs/DICOM/Widgets/ctkDICOMTableManager.cpp | 2 +- Libs/DICOM/Widgets/ctkDICOMTableManager.h | 2 +- Libs/DICOM/Widgets/ctkDICOMTableView.cpp | 2 +- Libs/DICOM/Widgets/ctkDICOMTableView.h | 2 +- .../Widgets/ctkDICOMVisualBrowserWidget.cpp | 10 +++--- .../Widgets/ctkDICOMVisualBrowserWidget.h | 10 +++--- .../Widgets/ctkVTKDataSetArrayComboBox.cpp | 2 +- .../VTK/Widgets/ctkVTKDataSetArrayComboBox.h | 2 +- .../VTK/Widgets/ctkVTKDataSetModel.cpp | 6 ++-- .../VTK/Widgets/ctkVTKDataSetModel.h | 2 +- .../VTK/Widgets/ctkVTKRenderView.cpp | 6 ++-- .../VTK/Widgets/ctkVTKRenderView.h | 6 ++-- .../VTK/Widgets/ctkVTKWidgetsUtils.cpp | 2 +- .../VTK/Widgets/ctkVTKWidgetsUtils.h | 2 +- Libs/Widgets/ctkBasePopupWidget.cpp | 2 +- Libs/Widgets/ctkBasePopupWidget_p.h | 2 +- Libs/Widgets/ctkCheckBox.cpp | 2 +- Libs/Widgets/ctkCheckBox.h | 2 +- Libs/Widgets/ctkColorPickerButton.cpp | 2 +- Libs/Widgets/ctkColorPickerButton.h | 2 +- Libs/Widgets/ctkComboBox.cpp | 2 +- Libs/Widgets/ctkComboBox.h | 2 +- Libs/Widgets/ctkConsole.cpp | 6 ++-- Libs/Widgets/ctkConsole.h | 6 ++-- Libs/Widgets/ctkCrosshairLabel.cpp | 2 +- Libs/Widgets/ctkCrosshairLabel.h | 2 +- Libs/Widgets/ctkDirectoryButton.cpp | 2 +- Libs/Widgets/ctkDirectoryButton.h | 2 +- Libs/Widgets/ctkFlowLayout.cpp | 4 +-- Libs/Widgets/ctkPathLineEdit.cpp | 4 +-- Libs/Widgets/ctkPathLineEdit.h | 4 +-- Libs/Widgets/ctkPathListWidget.cpp | 4 +-- Libs/Widgets/ctkPathListWidget.h | 4 +-- Libs/Widgets/ctkPixmapIconEngine.cpp | 8 ++--- Libs/Widgets/ctkPixmapIconEngine.h | 6 ++-- Libs/Widgets/ctkRangeSlider.cpp | 4 +-- Libs/Widgets/ctkThumbnailLabel.cpp | 6 ++-- Libs/Widgets/ctkThumbnailLabel.h | 6 ++-- .../ctkTransferFunctionRepresentation.cpp | 2 +- .../ctkTransferFunctionRepresentation.h | 6 ++-- Libs/Widgets/ctkWorkflowButtonBoxWidget.cpp | 2 +- Libs/Widgets/ctkWorkflowButtonBoxWidget.h | 2 +- 94 files changed, 249 insertions(+), 249 deletions(-) diff --git a/Libs/Core/ctkAbstractFactory.h b/Libs/Core/ctkAbstractFactory.h index b8c809961e..5d8279c68f 100644 --- a/Libs/Core/ctkAbstractFactory.h +++ b/Libs/Core/ctkAbstractFactory.h @@ -141,7 +141,7 @@ class ctkAbstractFactory protected: - void displayStatusMessage(const QtMsgType& type, const QString& description, + void displayStatusMessage(QtMsgType type, const QString& description, const QString& status, bool display); /// \brief Call the load method associated with the item. diff --git a/Libs/Core/ctkAbstractFactory.tpp b/Libs/Core/ctkAbstractFactory.tpp index 965cea9747..6e7e380bfc 100644 --- a/Libs/Core/ctkAbstractFactory.tpp +++ b/Libs/Core/ctkAbstractFactory.tpp @@ -291,7 +291,7 @@ QStringList ctkAbstractFactory::itemKeys() const //---------------------------------------------------------------------------- template void ctkAbstractFactory::displayStatusMessage( - const QtMsgType& type, const QString& description, const QString& status, bool display) + QtMsgType type, const QString& description, const QString& status, bool display) { QString msg = QString("%1 [%2]").arg(description + " ", -70, QChar('.')).arg(status); if (display) diff --git a/Libs/Core/ctkAbstractJob.cpp b/Libs/Core/ctkAbstractJob.cpp index 120be083a0..6e7b0d8b2c 100644 --- a/Libs/Core/ctkAbstractJob.cpp +++ b/Libs/Core/ctkAbstractJob.cpp @@ -178,7 +178,7 @@ QThread::Priority ctkAbstractJob::priority() const } //---------------------------------------------------------------------------- -void ctkAbstractJob::setPriority(const QThread::Priority &priority) +void ctkAbstractJob::setPriority(QThread::Priority priority) { this->Priority = priority; } diff --git a/Libs/Core/ctkAbstractJob.h b/Libs/Core/ctkAbstractJob.h index 419bb0cc01..48ea4c5b63 100644 --- a/Libs/Core/ctkAbstractJob.h +++ b/Libs/Core/ctkAbstractJob.h @@ -132,7 +132,7 @@ class CTK_CORE_EXPORT ctkAbstractJob : public QObject ///@{ /// Priority QThread::Priority priority() const; - void setPriority(const QThread::Priority& priority); + void setPriority(QThread::Priority priority); ///@} ///@{ diff --git a/Libs/Core/ctkAbstractWorker.cpp b/Libs/Core/ctkAbstractWorker.cpp index c2a7dbb8b6..04becf1f12 100644 --- a/Libs/Core/ctkAbstractWorker.cpp +++ b/Libs/Core/ctkAbstractWorker.cpp @@ -110,7 +110,7 @@ void ctkAbstractWorker::startNextJob() } //---------------------------------------------------------------------------- -void ctkAbstractWorker::onJobCanceled(const bool& wasCanceled) +void ctkAbstractWorker::onJobCanceled(bool wasCanceled) { if (!this->Job) { diff --git a/Libs/Core/ctkAbstractWorker.h b/Libs/Core/ctkAbstractWorker.h index fe74ac1381..27357f0104 100644 --- a/Libs/Core/ctkAbstractWorker.h +++ b/Libs/Core/ctkAbstractWorker.h @@ -72,7 +72,7 @@ class CTK_CORE_EXPORT ctkAbstractWorker : public QObject, public QRunnable public slots: /// These slots are thread safe virtual void startNextJob(); - virtual void onJobCanceled(const bool& wasCanceled); + virtual void onJobCanceled(bool wasCanceled); protected: QSharedPointer Job; diff --git a/Libs/Core/ctkErrorLogAbstractModel.cpp b/Libs/Core/ctkErrorLogAbstractModel.cpp index 16c43e87c0..b4eb7223f4 100644 --- a/Libs/Core/ctkErrorLogAbstractModel.cpp +++ b/Libs/Core/ctkErrorLogAbstractModel.cpp @@ -264,7 +264,7 @@ ctkErrorLogTerminalOutput::TerminalOutputs ctkErrorLogAbstractModel::terminalOut //------------------------------------------------------------------------------ void ctkErrorLogAbstractModel::setTerminalOutputs( - const ctkErrorLogTerminalOutput::TerminalOutputs& terminalOutput) + ctkErrorLogTerminalOutput::TerminalOutputs terminalOutput) { Q_D(ctkErrorLogAbstractModel); d->StdErrTerminalOutput.setEnabled(terminalOutput & ctkErrorLogTerminalOutput::StandardOutput); @@ -370,7 +370,7 @@ void ctkErrorLogAbstractModel::clear() } //------------------------------------------------------------------------------ -void ctkErrorLogAbstractModel::filterEntry(const ctkErrorLogLevel::LogLevels& logLevel, +void ctkErrorLogAbstractModel::filterEntry(ctkErrorLogLevel::LogLevels logLevel, bool disableFilter) { Q_D(ctkErrorLogAbstractModel); diff --git a/Libs/Core/ctkErrorLogAbstractModel.h b/Libs/Core/ctkErrorLogAbstractModel.h index 65ebe123ab..cd5c50b7ab 100644 --- a/Libs/Core/ctkErrorLogAbstractModel.h +++ b/Libs/Core/ctkErrorLogAbstractModel.h @@ -99,11 +99,11 @@ class CTK_CORE_EXPORT ctkErrorLogAbstractModel : public QSortFilterProxyModel /// Set terminal output mode /// \sa terminalOutputs() /// \sa TerminalOutput - void setTerminalOutputs(const ctkErrorLogTerminalOutput::TerminalOutputs& terminalOutput); + void setTerminalOutputs(ctkErrorLogTerminalOutput::TerminalOutputs terminalOutput); ctkErrorLogLevel::LogLevels logLevelFilter()const; - void filterEntry(const ctkErrorLogLevel::LogLevels& logLevel = ctkErrorLogLevel::Unknown, bool disableFilter = false); + void filterEntry(ctkErrorLogLevel::LogLevels logLevel = ctkErrorLogLevel::Unknown, bool disableFilter = false); bool logEntryGrouping()const; void setLogEntryGrouping(bool value); diff --git a/Libs/Core/ctkJobScheduler.cpp b/Libs/Core/ctkJobScheduler.cpp index 5c4133d9ee..72ccb62731 100644 --- a/Libs/Core/ctkJobScheduler.cpp +++ b/Libs/Core/ctkJobScheduler.cpp @@ -406,11 +406,11 @@ ctkJobScheduler::~ctkJobScheduler() } //------------------------------------------------------------------------------ -CTK_SET_CPP(ctkJobScheduler, const bool&, setFreezeJobsScheduling, FreezeJobsScheduling); +CTK_SET_CPP(ctkJobScheduler, bool, setFreezeJobsScheduling, FreezeJobsScheduling); CTK_GET_CPP(ctkJobScheduler, bool, freezeJobsScheduling, FreezeJobsScheduling) -CTK_SET_CPP(ctkJobScheduler, const int&, setMaximumNumberOfRetry, MaximumNumberOfRetry); +CTK_SET_CPP(ctkJobScheduler, int, setMaximumNumberOfRetry, MaximumNumberOfRetry); CTK_GET_CPP(ctkJobScheduler, int, maximumNumberOfRetry, MaximumNumberOfRetry) -CTK_SET_CPP(ctkJobScheduler, const int&, setRetryDelay, RetryDelay); +CTK_SET_CPP(ctkJobScheduler, int, setRetryDelay, RetryDelay); CTK_GET_CPP(ctkJobScheduler, int, retryDelay, RetryDelay) //---------------------------------------------------------------------------- @@ -778,7 +778,7 @@ int ctkJobScheduler::maximumThreadCount() const } //---------------------------------------------------------------------------- -void ctkJobScheduler::setMaximumThreadCount(const int& maximumThreadCount) +void ctkJobScheduler::setMaximumThreadCount(int maximumThreadCount) { Q_D(ctkJobScheduler); d->ThreadPool->setMaxThreadCount(maximumThreadCount); diff --git a/Libs/Core/ctkJobScheduler.h b/Libs/Core/ctkJobScheduler.h index fc3ac1b721..32788cb003 100644 --- a/Libs/Core/ctkJobScheduler.h +++ b/Libs/Core/ctkJobScheduler.h @@ -84,28 +84,28 @@ class CTK_CORE_EXPORT ctkJobScheduler : public QObject /// if set to true, new jobs will not be queued /// default: false bool freezeJobsScheduling() const; - void setFreezeJobsScheduling(const bool& freezeJobsScheduling); + void setFreezeJobsScheduling(bool freezeJobsScheduling); ///@} ///@{ /// Maximum number of concurrent QThreads spawned by the threadPool in the Job pool /// default: 20 int maximumThreadCount() const; - void setMaximumThreadCount(const int& maximumThreadCount); + void setMaximumThreadCount(int maximumThreadCount); ///@} ///@{ /// Maximum number of retries that the Job pool will try on each failed Job /// default: 3 int maximumNumberOfRetry() const; - void setMaximumNumberOfRetry(const int& maximumNumberOfRetry); + void setMaximumNumberOfRetry(int maximumNumberOfRetry); ///@} ///@{ /// Retry delay in millisec /// default: 100 msec int retryDelay() const; - void setRetryDelay(const int& retryDelay); + void setRetryDelay(int retryDelay); ///@} /// Return the threadPool. diff --git a/Libs/Core/ctkLogger.cpp b/Libs/Core/ctkLogger.cpp index 24a799dee3..01b2a68ba3 100644 --- a/Libs/Core/ctkLogger.cpp +++ b/Libs/Core/ctkLogger.cpp @@ -108,7 +108,7 @@ void ctkLogger::fatal(const QString& s) } //----------------------------------------------------------------------------- -void ctkLogger::setLogLevel(const ctkErrorLogLevel::LogLevel& level) +void ctkLogger::setLogLevel(ctkErrorLogLevel::LogLevel level) { Q_D(ctkLogger); d->LogLevel = level; diff --git a/Libs/Core/ctkLogger.h b/Libs/Core/ctkLogger.h index adb7e9d2f0..be9318b663 100644 --- a/Libs/Core/ctkLogger.h +++ b/Libs/Core/ctkLogger.h @@ -50,7 +50,7 @@ class CTK_CORE_EXPORT ctkLogger : public QObject Q_INVOKABLE void error(const QString& s); Q_INVOKABLE void fatal(const QString& s); - void setLogLevel(const ctkErrorLogLevel::LogLevel& level); + void setLogLevel(ctkErrorLogLevel::LogLevel level); ctkErrorLogLevel::LogLevel logLevel() const; protected: diff --git a/Libs/Core/ctkWorkflow.cpp b/Libs/Core/ctkWorkflow.cpp index 9ef3c4868c..9dd76b8dc0 100644 --- a/Libs/Core/ctkWorkflow.cpp +++ b/Libs/Core/ctkWorkflow.cpp @@ -345,7 +345,7 @@ void ctkWorkflowPrivate::validateInternal(ctkWorkflowStep* step) void ctkWorkflowPrivate::onEntryInternal( ctkWorkflowStep* step, ctkWorkflowStep* comingFrom, - const ctkWorkflowInterstepTransition::InterstepTransitionType& transitionType) + ctkWorkflowInterstepTransition::InterstepTransitionType transitionType) { Q_ASSERT(step); @@ -433,7 +433,7 @@ void ctkWorkflowPrivate::processingAfterOnEntry() void ctkWorkflowPrivate::onExitInternal( ctkWorkflowStep* step, ctkWorkflowStep* goingTo, - const ctkWorkflowInterstepTransition::InterstepTransitionType& transitionType) + ctkWorkflowInterstepTransition::InterstepTransitionType transitionType) { Q_ASSERT(step); diff --git a/Libs/Core/ctkWorkflow_p.h b/Libs/Core/ctkWorkflow_p.h index b68ce27ac0..bfb11470b6 100644 --- a/Libs/Core/ctkWorkflow_p.h +++ b/Libs/Core/ctkWorkflow_p.h @@ -211,14 +211,14 @@ class ctkWorkflowPrivate : public QObject /// Does some sanity checks and then either calls onEntry() or emits the invokeOnEntryCommand(), /// depending on whether the user indicates that there is an onEntryCommand. void onEntryInternal(ctkWorkflowStep* step, ctkWorkflowStep* comingFrom, - const ctkWorkflowInterstepTransition::InterstepTransitionType& transitionType); + ctkWorkflowInterstepTransition::InterstepTransitionType transitionType); /// \brief Performs computation required when exiting this step. /// /// Does some sanity checks and then either calls onExit() or emits the invokeOnExitCommand(), /// depending on whether the user indicates that there is an onExitCommand. void onExitInternal(ctkWorkflowStep* step, ctkWorkflowStep* goingTo, - const ctkWorkflowInterstepTransition::InterstepTransitionType& transitionType); + ctkWorkflowInterstepTransition::InterstepTransitionType transitionType); /// Get the step in the workflow with a given id. ctkWorkflowStep* stepFromId(const QString& id)const; diff --git a/Libs/DICOM/Core/ctkDICOMDatabase.cpp b/Libs/DICOM/Core/ctkDICOMDatabase.cpp index 46e69a7c20..9b6e639cfd 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase.cpp +++ b/Libs/DICOM/Core/ctkDICOMDatabase.cpp @@ -390,7 +390,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertPatient( //------------------------------------------------------------------------------ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertConnectionName( - const int& dbPatientID, const QString& connectionName) + int dbPatientID, const QString& connectionName) { Q_Q(ctkDICOMDatabase); // check if connection name is already stored @@ -459,7 +459,7 @@ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::updateConnections( //------------------------------------------------------------------------------ ctkDICOMDatabase::InsertResult ctkDICOMDatabasePrivate::insertStudy( - const ctkDICOMItem& dataset, const int& dbPatientID) + const ctkDICOMItem& dataset, int dbPatientID) { QString studyInstanceUID(dataset.GetElementAsString(DCM_StudyInstanceUID) ); QSqlQuery checkStudyExistsQuery(this->Database); @@ -2875,7 +2875,7 @@ bool ctkDICOMDatabase::tagToGroupElement(const QString& tag, unsigned short& gro } //------------------------------------------------------------------------------ -QString ctkDICOMDatabase::groupElementToTag(const unsigned short& group, const unsigned short& element) +QString ctkDICOMDatabase::groupElementToTag(unsigned short group, unsigned short element) { QString groupElement = QString("%1,%2").arg(group,4,16,QLatin1Char('0')).arg(element,4,16,QLatin1Char('0')); return groupElement.toUpper(); diff --git a/Libs/DICOM/Core/ctkDICOMDatabase.h b/Libs/DICOM/Core/ctkDICOMDatabase.h index 29edf495bd..73d34e3a92 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase.h +++ b/Libs/DICOM/Core/ctkDICOMDatabase.h @@ -381,7 +381,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabase : public QObject /// Convert between string and (unsigned short int, unsigned short int) representation of a DICOM tag. Q_INVOKABLE bool tagToGroupElement (const QString& tag, unsigned short& group, unsigned short& element); - Q_INVOKABLE QString groupElementToTag (const unsigned short& group, const unsigned short& element); + Q_INVOKABLE QString groupElementToTag (unsigned short group, unsigned short element); /// \brief Check if an element with the given attribute tag exists in the dataset and has a non-empty value. /// @param sopInstanceUID A string with the uid for a given instance diff --git a/Libs/DICOM/Core/ctkDICOMDatabase_p.h b/Libs/DICOM/Core/ctkDICOMDatabase_p.h index f20dbee636..d659de1050 100644 --- a/Libs/DICOM/Core/ctkDICOMDatabase_p.h +++ b/Libs/DICOM/Core/ctkDICOMDatabase_p.h @@ -185,10 +185,10 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMDatabasePrivate const QString& patientID, const QString& patientsName, int& databasePatientID); - ctkDICOMDatabase::InsertResult insertConnectionName(const int& dbPatientID, + ctkDICOMDatabase::InsertResult insertConnectionName(int dbPatientID, const QString& connectionName); ctkDICOMDatabase::InsertResult insertStudy(const ctkDICOMItem& dataset, - const int& dbPatientID); + int dbPatientID); ctkDICOMDatabase::InsertResult insertSeries(const ctkDICOMItem& dataset, const QString& studyInstanceUID); diff --git a/Libs/DICOM/Core/ctkDICOMEcho.cpp b/Libs/DICOM/Core/ctkDICOMEcho.cpp index e9bd798fc6..882bda9c35 100644 --- a/Libs/DICOM/Core/ctkDICOMEcho.cpp +++ b/Libs/DICOM/Core/ctkDICOMEcho.cpp @@ -148,13 +148,13 @@ CTK_SET_CPP(ctkDICOMEcho, const QString&, setCalledAETitle, CalledAETitle); CTK_GET_CPP(ctkDICOMEcho, QString, calledAETitle, CalledAETitle) CTK_SET_CPP(ctkDICOMEcho, const QString&, setHost, Host); CTK_GET_CPP(ctkDICOMEcho, QString, host, Host) -CTK_SET_CPP(ctkDICOMEcho, const int&, setPort, Port); +CTK_SET_CPP(ctkDICOMEcho, int, setPort, Port); CTK_GET_CPP(ctkDICOMEcho, int, port, Port) CTK_SET_CPP(ctkDICOMEcho, const QString&, setJobUID, JobUID); CTK_GET_CPP(ctkDICOMEcho, QString, jobUID, JobUID) //----------------------------------------------------------------------------- -void ctkDICOMEcho::setConnectionTimeout(const int& timeout) +void ctkDICOMEcho::setConnectionTimeout(int timeout) { Q_D(ctkDICOMEcho); d->SCU->setACSETimeout(timeout); diff --git a/Libs/DICOM/Core/ctkDICOMEcho.h b/Libs/DICOM/Core/ctkDICOMEcho.h index cb201cc81e..5dfd30836f 100644 --- a/Libs/DICOM/Core/ctkDICOMEcho.h +++ b/Libs/DICOM/Core/ctkDICOMEcho.h @@ -77,13 +77,13 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMEcho : public QObject /// Specify a port for the packet headers. /// \a port ranges from 0 to 65535. /// 80 by default. - void setPort(const int& port); + void setPort(int port); int port() const; ///@} ///@{ /// Connection timeout, default 3 sec. - void setConnectionTimeout(const int& timeout); + void setConnectionTimeout(int timeout); int connectionTimeout() const; ///@} diff --git a/Libs/DICOM/Core/ctkDICOMJob.cpp b/Libs/DICOM/Core/ctkDICOMJob.cpp index 5b86786a4d..9e579a47f4 100644 --- a/Libs/DICOM/Core/ctkDICOMJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMJob.cpp @@ -45,7 +45,7 @@ ctkDICOMJob::ctkDICOMJob(QObject* parent) ctkDICOMJob::~ctkDICOMJob() = default; //------------------------------------------------------------------------------ -void ctkDICOMJob::setDICOMLevel(const DICOMLevels& dicomLevel) +void ctkDICOMJob::setDICOMLevel(DICOMLevels dicomLevel) { this->DICOMLevel = dicomLevel; } diff --git a/Libs/DICOM/Core/ctkDICOMJob.h b/Libs/DICOM/Core/ctkDICOMJob.h index 30208aeed3..2f2edd0b54 100644 --- a/Libs/DICOM/Core/ctkDICOMJob.h +++ b/Libs/DICOM/Core/ctkDICOMJob.h @@ -64,7 +64,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMJob : public ctkAbstractJob ///@{ /// DICOM Level - void setDICOMLevel(const DICOMLevels& dicomLevel); + void setDICOMLevel(DICOMLevels dicomLevel); DICOMLevels dicomLevel() const; ///@} diff --git a/Libs/DICOM/Core/ctkDICOMPatientModel.cpp b/Libs/DICOM/Core/ctkDICOMPatientModel.cpp index 86d88d5657..3a7732920c 100644 --- a/Libs/DICOM/Core/ctkDICOMPatientModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMPatientModel.cpp @@ -1073,7 +1073,7 @@ void ctkDICOMPatientModel::setDateFilter(DateType dateType) } //------------------------------------------------------------------------------ -void ctkDICOMPatientModel::setCustomDateRange(const QDate& startDate, const QDate& endDate) +void ctkDICOMPatientModel::setCustomDateRange(QDate startDate, QDate endDate) { Q_D(ctkDICOMPatientModel); if (d->CustomStartDate == startDate && d->CustomEndDate == endDate) diff --git a/Libs/DICOM/Core/ctkDICOMPatientModel.h b/Libs/DICOM/Core/ctkDICOMPatientModel.h index d02559d8d2..13a993f153 100644 --- a/Libs/DICOM/Core/ctkDICOMPatientModel.h +++ b/Libs/DICOM/Core/ctkDICOMPatientModel.h @@ -161,7 +161,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMPatientModel : public QAbstractListModel void setDateFilter(DateType dateType); /// Set custom date range filter (when dateFilter is CustomRange) - void setCustomDateRange(const QDate& startDate, const QDate& endDate); + void setCustomDateRange(QDate startDate, QDate endDate); QDate customStartDate() const; QDate customEndDate() const; diff --git a/Libs/DICOM/Core/ctkDICOMQuery.cpp b/Libs/DICOM/Core/ctkDICOMQuery.cpp index e0acd1e1e5..a1465fa749 100644 --- a/Libs/DICOM/Core/ctkDICOMQuery.cpp +++ b/Libs/DICOM/Core/ctkDICOMQuery.cpp @@ -240,15 +240,15 @@ CTK_SET_CPP(ctkDICOMQuery, const QString&, setCalledAETitle, CalledAETitle); CTK_GET_CPP(ctkDICOMQuery, QString, calledAETitle, CalledAETitle) CTK_SET_CPP(ctkDICOMQuery, const QString&, setHost, Host); CTK_GET_CPP(ctkDICOMQuery, QString, host, Host) -CTK_SET_CPP(ctkDICOMQuery, const int&, setPort, Port); +CTK_SET_CPP(ctkDICOMQuery, int, setPort, Port); CTK_GET_CPP(ctkDICOMQuery, int, port, Port) -CTK_SET_CPP(ctkDICOMQuery, const int&, setMaximumPatientsQuery, MaximumPatientsQuery); +CTK_SET_CPP(ctkDICOMQuery, int, setMaximumPatientsQuery, MaximumPatientsQuery); CTK_GET_CPP(ctkDICOMQuery, int, maximumPatientsQuery, MaximumPatientsQuery); CTK_SET_CPP(ctkDICOMQuery, const QString&, setJobUID, JobUID); CTK_GET_CPP(ctkDICOMQuery, QString, jobUID, JobUID) //----------------------------------------------------------------------------- -void ctkDICOMQuery::setConnectionTimeout(const int& timeout) +void ctkDICOMQuery::setConnectionTimeout(int timeout) { Q_D(ctkDICOMQuery); d->SCU->setACSETimeout(timeout); diff --git a/Libs/DICOM/Core/ctkDICOMQuery.h b/Libs/DICOM/Core/ctkDICOMQuery.h index 07ed6a436e..aa6afdd43e 100644 --- a/Libs/DICOM/Core/ctkDICOMQuery.h +++ b/Libs/DICOM/Core/ctkDICOMQuery.h @@ -80,20 +80,20 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMQuery : public QObject /// Specify a port for the packet headers. /// \a port ranges from 0 to 65535. /// 0 by default. - void setPort(const int& port); + void setPort(int port); int port() const; ///@} ///@{ /// connection timeout, default 10 sec. - void setConnectionTimeout(const int& timeout); + void setConnectionTimeout(int timeout); int connectionTimeout() const; ///@} ///@{ /// maximum number of responses allowed in one query /// when query is at Patient level. Default is 25. - void setMaximumPatientsQuery(const int& maximumPatientsQuery); + void setMaximumPatientsQuery(int maximumPatientsQuery); int maximumPatientsQuery() const; ///@} diff --git a/Libs/DICOM/Core/ctkDICOMQueryJob.cpp b/Libs/DICOM/Core/ctkDICOMQueryJob.cpp index 8bdf651d53..dc9b1231da 100644 --- a/Libs/DICOM/Core/ctkDICOMQueryJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMQueryJob.cpp @@ -73,7 +73,7 @@ ctkDICOMQueryJob::ctkDICOMQueryJob(ctkDICOMQueryJobPrivate* pimpl) } //------------------------------------------------------------------------------ -CTK_SET_CPP(ctkDICOMQueryJob, const int&, setMaximumPatientsQuery, MaximumPatientsQuery); +CTK_SET_CPP(ctkDICOMQueryJob, int, setMaximumPatientsQuery, MaximumPatientsQuery); CTK_GET_CPP(ctkDICOMQueryJob, int, maximumPatientsQuery, MaximumPatientsQuery) //---------------------------------------------------------------------------- diff --git a/Libs/DICOM/Core/ctkDICOMQueryJob.h b/Libs/DICOM/Core/ctkDICOMQueryJob.h index bb651ac953..263a56c0f1 100644 --- a/Libs/DICOM/Core/ctkDICOMQueryJob.h +++ b/Libs/DICOM/Core/ctkDICOMQueryJob.h @@ -74,7 +74,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMQueryJob : public ctkDICOMJob ///@{ /// maximum number of responses allowed in one query /// when query is at Patient level. Default is 25. - void setMaximumPatientsQuery(const int& maximumPatientsQuery); + void setMaximumPatientsQuery(int maximumPatientsQuery); int maximumPatientsQuery() const; ///@} diff --git a/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp b/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp index 46f83851cf..45d2fc898a 100644 --- a/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMSeriesModel.cpp @@ -1505,7 +1505,7 @@ QHash ctkDICOMSeriesModel::roleNames() const } //------------------------------------------------------------------------------ -void ctkDICOMSeriesModel::updateGUIFromScheduler(const QVariant& data, const bool& studyIsCollapsed) +void ctkDICOMSeriesModel::updateGUIFromScheduler(const QVariant& data, bool studyIsCollapsed) { Q_D(ctkDICOMSeriesModel); if (d->IsUpdating) diff --git a/Libs/DICOM/Core/ctkDICOMSeriesModel.h b/Libs/DICOM/Core/ctkDICOMSeriesModel.h index 01e30a1de9..542fa7d3f8 100644 --- a/Libs/DICOM/Core/ctkDICOMSeriesModel.h +++ b/Libs/DICOM/Core/ctkDICOMSeriesModel.h @@ -210,7 +210,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMSeriesModel : public QAbstractTableModel public slots: /// Update GUI from scheduler progress - void updateGUIFromScheduler(const QVariant&, const bool&); + void updateGUIFromScheduler(const QVariant&, bool); void onJobStarted(const QVariant& data); void onJobFinished(const QVariant& data); void onJobFailed(const QVariant& data); diff --git a/Libs/DICOM/Core/ctkDICOMServer.cpp b/Libs/DICOM/Core/ctkDICOMServer.cpp index f193ca9eda..ff1c92280f 100644 --- a/Libs/DICOM/Core/ctkDICOMServer.cpp +++ b/Libs/DICOM/Core/ctkDICOMServer.cpp @@ -125,7 +125,7 @@ void ctkDICOMServer::setConnectionName(const QString& connectionName) } //------------------------------------------------------------------------------ -void ctkDICOMServer::setQueryRetrieveEnabled(const bool& queryRetrieveEnabled) +void ctkDICOMServer::setQueryRetrieveEnabled(bool queryRetrieveEnabled) { Q_D(ctkDICOMServer); d->QueryRetrieveEnabled = queryRetrieveEnabled; @@ -133,7 +133,7 @@ void ctkDICOMServer::setQueryRetrieveEnabled(const bool& queryRetrieveEnabled) } //------------------------------------------------------------------------------ -void ctkDICOMServer::setStorageEnabled(const bool& storageEnabled) +void ctkDICOMServer::setStorageEnabled(bool storageEnabled) { Q_D(ctkDICOMServer); d->StorageEnabled = storageEnabled; @@ -141,7 +141,7 @@ void ctkDICOMServer::setStorageEnabled(const bool& storageEnabled) } //------------------------------------------------------------------------------ -void ctkDICOMServer::setTrustedEnabled(const bool& trustedEnabled) +void ctkDICOMServer::setTrustedEnabled(bool trustedEnabled) { Q_D(ctkDICOMServer); d->TrustedEnabled = trustedEnabled; @@ -173,7 +173,7 @@ void ctkDICOMServer::setHost(const QString& host) } //------------------------------------------------------------------------------ -void ctkDICOMServer::setPort(const int& port) +void ctkDICOMServer::setPort(int port) { Q_D(ctkDICOMServer); d->Port = port; @@ -240,7 +240,7 @@ void ctkDICOMServer::setMoveDestinationAETitle(const QString& moveDestinationAET } //------------------------------------------------------------------------------ -void ctkDICOMServer::setKeepAssociationOpen(const bool& keepAssociationOpen) +void ctkDICOMServer::setKeepAssociationOpen(bool keepAssociationOpen) { Q_D(ctkDICOMServer); d->KeepAssociationOpen = keepAssociationOpen; @@ -248,7 +248,7 @@ void ctkDICOMServer::setKeepAssociationOpen(const bool& keepAssociationOpen) } //------------------------------------------------------------------------------ -void ctkDICOMServer::setConnectionTimeout(const int& timeout) +void ctkDICOMServer::setConnectionTimeout(int timeout) { Q_D(ctkDICOMServer); d->ConnectionTimeout = timeout; diff --git a/Libs/DICOM/Core/ctkDICOMServer.h b/Libs/DICOM/Core/ctkDICOMServer.h index 8d4739d9a5..c07da917ea 100644 --- a/Libs/DICOM/Core/ctkDICOMServer.h +++ b/Libs/DICOM/Core/ctkDICOMServer.h @@ -61,21 +61,21 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMServer : public QObject ///@{ /// Query/Retrieve operations /// true as default - void setQueryRetrieveEnabled(const bool& queryRetrieveEnabled); + void setQueryRetrieveEnabled(bool queryRetrieveEnabled); bool queryRetrieveEnabled() const; ///}@ ///@{ /// Storage operations /// true as default - void setStorageEnabled(const bool& storageEnabled); + void setStorageEnabled(bool storageEnabled); bool storageEnabled() const; ///}@ ///@{ /// Trusted server /// true as default - void setTrustedEnabled(const bool& trustedEnabled); + void setTrustedEnabled(bool trustedEnabled); bool trustedEnabled() const; ///}@ @@ -102,7 +102,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMServer : public QObject ///@{ /// [0, 65365] port on peer host /// 80 as default - void setPort(const int& port); + void setPort(int port); int port() const; ///}@ @@ -133,13 +133,13 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMServer : public QObject ///@{ /// prefer to keep using the existing association to peer host when doing /// multiple requests (default true) - void setKeepAssociationOpen(const bool& keepOpen); + void setKeepAssociationOpen(bool keepOpen); bool keepAssociationOpen() const; ///}@ ///@{ /// connection timeout in seconds, default 10 s. - void setConnectionTimeout(const int& timeout); + void setConnectionTimeout(int timeout); int connectionTimeout() const; ///}@ diff --git a/Libs/DICOM/Core/ctkDICOMStorageListener.cpp b/Libs/DICOM/Core/ctkDICOMStorageListener.cpp index 0a3a2d0de6..563061564b 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListener.cpp +++ b/Libs/DICOM/Core/ctkDICOMStorageListener.cpp @@ -275,7 +275,7 @@ ctkDICOMStorageListener::~ctkDICOMStorageListener() //------------------------------------------------------------------------------ CTK_SET_CPP(ctkDICOMStorageListener, const QString&, setAETitle, AETitle); CTK_GET_CPP(ctkDICOMStorageListener, QString, AETitle, AETitle) -CTK_SET_CPP(ctkDICOMStorageListener, const int&, setPort, Port); +CTK_SET_CPP(ctkDICOMStorageListener, int, setPort, Port); CTK_GET_CPP(ctkDICOMStorageListener, int, port, Port) CTK_SET_CPP(ctkDICOMStorageListener, const QString&, setJobUID, JobUID); CTK_GET_CPP(ctkDICOMStorageListener, QString, jobUID, JobUID) @@ -336,7 +336,7 @@ bool ctkDICOMStorageListener::initializeSCU() } //----------------------------------------------------------------------------- -void ctkDICOMStorageListener::setConnectionTimeout(const int& timeout) +void ctkDICOMStorageListener::setConnectionTimeout(int timeout) { Q_D(ctkDICOMStorageListener); d->SCU.setACSETimeout(timeout); diff --git a/Libs/DICOM/Core/ctkDICOMStorageListener.h b/Libs/DICOM/Core/ctkDICOMStorageListener.h index 4e7c727d6d..fe9ce8fdd1 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListener.h +++ b/Libs/DICOM/Core/ctkDICOMStorageListener.h @@ -58,14 +58,14 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMStorageListener : public QObject ///@{ /// Storage port /// 11112 by default - void setPort(const int& port); + void setPort(int port); int port() const; ///@} ///@{ /// Connection timeout /// 1 sec by default - void setConnectionTimeout(const int& timeout); + void setConnectionTimeout(int timeout); int connectionTimeout() const; ///@} diff --git a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp index 58e99d9c76..44da6b32fe 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp +++ b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.cpp @@ -66,9 +66,9 @@ ctkDICOMStorageListenerJob::ctkDICOMStorageListenerJob(ctkDICOMStorageListenerJo ctkDICOMStorageListenerJob::~ctkDICOMStorageListenerJob() = default; //------------------------------------------------------------------------------ -CTK_SET_CPP(ctkDICOMStorageListenerJob, const int&, setPort, Port); +CTK_SET_CPP(ctkDICOMStorageListenerJob, int, setPort, Port); CTK_GET_CPP(ctkDICOMStorageListenerJob, int, port, Port) -CTK_SET_CPP(ctkDICOMStorageListenerJob, const int&, setConnectionTimeout, ConnectionTimeout); +CTK_SET_CPP(ctkDICOMStorageListenerJob, int, setConnectionTimeout, ConnectionTimeout); CTK_GET_CPP(ctkDICOMStorageListenerJob, int, connectionTimeout, ConnectionTimeout) CTK_SET_CPP(ctkDICOMStorageListenerJob, const QString&, setAETitle, AETitle); CTK_GET_CPP(ctkDICOMStorageListenerJob, QString, AETitle, AETitle) diff --git a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.h b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.h index 5f27b15b5c..ca9839d027 100644 --- a/Libs/DICOM/Core/ctkDICOMStorageListenerJob.h +++ b/Libs/DICOM/Core/ctkDICOMStorageListenerJob.h @@ -52,7 +52,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMStorageListenerJob : public ctkDICOMJob ///@{ /// Port, default: 11112 - void setPort(const int& port); + void setPort(int port); int port() const; ///@} @@ -64,7 +64,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMStorageListenerJob : public ctkDICOMJob ///@{ /// Connection timeout, default 1 sec. - void setConnectionTimeout(const int& timeout); + void setConnectionTimeout(int timeout); int connectionTimeout() const; ///@} diff --git a/Libs/DICOM/Core/ctkDICOMStudyModel.cpp b/Libs/DICOM/Core/ctkDICOMStudyModel.cpp index a2c6127960..8186c9b9d7 100644 --- a/Libs/DICOM/Core/ctkDICOMStudyModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMStudyModel.cpp @@ -1151,7 +1151,7 @@ void ctkDICOMStudyModel::setDateFilter(DateType dateType) } //------------------------------------------------------------------------------ -void ctkDICOMStudyModel::setCustomDateRange(const QDate& startDate, const QDate& endDate) +void ctkDICOMStudyModel::setCustomDateRange(QDate startDate, QDate endDate) { Q_D(ctkDICOMStudyModel); diff --git a/Libs/DICOM/Core/ctkDICOMStudyModel.h b/Libs/DICOM/Core/ctkDICOMStudyModel.h index 67ee3692bb..967bb00112 100644 --- a/Libs/DICOM/Core/ctkDICOMStudyModel.h +++ b/Libs/DICOM/Core/ctkDICOMStudyModel.h @@ -159,7 +159,7 @@ class CTK_DICOM_CORE_EXPORT ctkDICOMStudyModel : public QAbstractListModel void setDateFilter(DateType dateType); /// Set custom date range filter (when dateFilter is CustomRange) - void setCustomDateRange(const QDate& startDate, const QDate& endDate); + void setCustomDateRange(QDate startDate, QDate endDate); QDate customStartDate() const; QDate customEndDate() const; diff --git a/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp b/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp index 5ce6fb550b..3352e56a35 100644 --- a/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp @@ -1120,7 +1120,7 @@ bool ctkDICOMBrowser::confirmDeleteSelectedUIDs(const QStringList& uids) } //---------------------------------------------------------------------------- -void ctkDICOMBrowser::onPatientsRightClicked(const QPoint &point) +void ctkDICOMBrowser::onPatientsRightClicked(QPoint point) { Q_D(ctkDICOMBrowser); @@ -1194,7 +1194,7 @@ void ctkDICOMBrowser::onPatientsRightClicked(const QPoint &point) } //---------------------------------------------------------------------------- -void ctkDICOMBrowser::onStudiesRightClicked(const QPoint &point) +void ctkDICOMBrowser::onStudiesRightClicked(QPoint point) { Q_D(ctkDICOMBrowser); @@ -1272,7 +1272,7 @@ void ctkDICOMBrowser::onStudiesRightClicked(const QPoint &point) } //---------------------------------------------------------------------------- -void ctkDICOMBrowser::onSeriesRightClicked(const QPoint &point) +void ctkDICOMBrowser::onSeriesRightClicked(QPoint point) { Q_D(ctkDICOMBrowser); diff --git a/Libs/DICOM/Widgets/ctkDICOMBrowser.h b/Libs/DICOM/Widgets/ctkDICOMBrowser.h index 67e5ad4b80..7aa7190294 100644 --- a/Libs/DICOM/Widgets/ctkDICOMBrowser.h +++ b/Libs/DICOM/Widgets/ctkDICOMBrowser.h @@ -284,13 +284,13 @@ protected Q_SLOTS: void onModelSelected(const QItemSelection&, const QItemSelection&); /// Called when a right mouse click is made in the patients table - void onPatientsRightClicked(const QPoint &point); + void onPatientsRightClicked(QPoint point); /// Called when a right mouse click is made in the studies table - void onStudiesRightClicked(const QPoint &point); + void onStudiesRightClicked(QPoint point); /// Called when a right mouse click is made in the series table - void onSeriesRightClicked(const QPoint &point); + void onSeriesRightClicked(QPoint point); /// Called to export the series associated with the selected UIDs /// \sa exportSelectedStudies, exportSelectedPatients diff --git a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp index 66fe0e4646..5284132aca 100644 --- a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp @@ -117,7 +117,7 @@ class QCenteredItemModel : public QStandardItemModel QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QString getJobTypeAsString(const QString& jobClass, ctkDICOMJob::DICOMLevels dicomLevel); void addJob(const ctkDICOMJobDetail &td, ctkDICOMDatabase* database); - void updateJobStatus(const ctkDICOMJobDetail &td, const JobStatus &status); + void updateJobStatus(const ctkDICOMJobDetail &td, JobStatus status); void updateProgressBar(const ctkDICOMJobDetail &td, ctkDICOMDatabase* database); void setProgressBar(int row, const ctkDICOMJobDetail &td, ctkDICOMDatabase* database); QStringList clearJobsByType(const QString& type); @@ -288,7 +288,7 @@ void QCenteredItemModel::addJob(const ctkDICOMJobDetail &td, } //---------------------------------------------------------------------------- -void QCenteredItemModel::updateJobStatus(const ctkDICOMJobDetail &td, const JobStatus &status) +void QCenteredItemModel::updateJobStatus(const ctkDICOMJobDetail &td, JobStatus status) { QList list = this->findItems(td.JobUID, Qt::MatchExactly, Columns::JobUID); if (list.empty()) diff --git a/Libs/DICOM/Widgets/ctkDICOMPatientDelegate.cpp b/Libs/DICOM/Widgets/ctkDICOMPatientDelegate.cpp index f0665b3b99..4e95ccc9bb 100644 --- a/Libs/DICOM/Widgets/ctkDICOMPatientDelegate.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMPatientDelegate.cpp @@ -155,7 +155,7 @@ void ctkDICOMPatientDelegate::paintTabMode(QPainter* painter, const QStyleOption } //------------------------------------------------------------------------------ -void ctkDICOMPatientDelegate::paintPatientsTabs(QPainter *painter, const QRect &rect, +void ctkDICOMPatientDelegate::paintPatientsTabs(QPainter *painter, QRect rect, const QStyleOptionViewItem &option, const QModelIndex &index) const { @@ -265,7 +265,7 @@ void ctkDICOMPatientDelegate::paintPatientsTabs(QPainter *painter, const QRect & } //------------------------------------------------------------------------------ -void ctkDICOMPatientDelegate::paintPatientHeader(QPainter *painter, const QRect &rect, +void ctkDICOMPatientDelegate::paintPatientHeader(QPainter *painter, QRect rect, const QStyleOptionViewItem &option, const QModelIndex &index) const { @@ -631,7 +631,7 @@ ctkDICOMPatientView::DisplayMode ctkDICOMPatientDelegate::getDisplayMode(const Q } //------------------------------------------------------------------------------ -QRect ctkDICOMPatientDelegate::patientsRect(const QRect &itemRect, +QRect ctkDICOMPatientDelegate::patientsRect(QRect itemRect, const QStyleOptionViewItem& option, const QModelIndex& index) const { @@ -667,7 +667,7 @@ QRect ctkDICOMPatientDelegate::patientsRect(const QRect &itemRect, } //------------------------------------------------------------------------------ -QRect ctkDICOMPatientDelegate::patientHeaderRect(const QRect& patientsRect, +QRect ctkDICOMPatientDelegate::patientHeaderRect(QRect patientsRect, const QStyleOptionViewItem& option) const { Q_D(const ctkDICOMPatientDelegate); @@ -761,7 +761,7 @@ int ctkDICOMPatientDelegate::patientHeaderHeight() const } //------------------------------------------------------------------------------ -QRect ctkDICOMPatientDelegate::contextMenuButtonRect(const QRect& itemRect, const QStyleOptionViewItem& option) const +QRect ctkDICOMPatientDelegate::contextMenuButtonRect(QRect itemRect, const QStyleOptionViewItem& option) const { Q_D(const ctkDICOMPatientDelegate); @@ -789,14 +789,14 @@ QRect ctkDICOMPatientDelegate::contextMenuButtonRect(const QRect& itemRect, cons } //------------------------------------------------------------------------------ -bool ctkDICOMPatientDelegate::isContextMenuButtonAt(const QPoint& pos, const QRect& itemRect, const QStyleOptionViewItem& option) const +bool ctkDICOMPatientDelegate::isContextMenuButtonAt(QPoint pos, QRect itemRect, const QStyleOptionViewItem& option) const { QRect buttonRect = this->contextMenuButtonRect(itemRect, option); return buttonRect.contains(pos); } //------------------------------------------------------------------------------ -QRect ctkDICOMPatientDelegate::selectAllIconRect(const QRect& itemRect, const QStyleOptionViewItem& option) const +QRect ctkDICOMPatientDelegate::selectAllIconRect(QRect itemRect, const QStyleOptionViewItem& option) const { Q_D(const ctkDICOMPatientDelegate); @@ -810,7 +810,7 @@ QRect ctkDICOMPatientDelegate::selectAllIconRect(const QRect& itemRect, const QS } //------------------------------------------------------------------------------ -bool ctkDICOMPatientDelegate::isSelectAllIconAt(const QPoint& pos, const QRect& itemRect, const QStyleOptionViewItem& option) const +bool ctkDICOMPatientDelegate::isSelectAllIconAt(QPoint pos, QRect itemRect, const QStyleOptionViewItem& option) const { QRect iconRect = this->selectAllIconRect(itemRect, option); return iconRect.contains(pos); @@ -818,7 +818,7 @@ bool ctkDICOMPatientDelegate::isSelectAllIconAt(const QPoint& pos, const QRect& //------------------------------------------------------------------------------ void ctkDICOMPatientDelegate::paintContextMenuButton(QPainter* painter, - const QRect& itemRect, + QRect itemRect, const QModelIndex& index, const QStyleOptionViewItem& option) const { @@ -898,7 +898,7 @@ void ctkDICOMPatientDelegate::paintContextMenuButton(QPainter* painter, //------------------------------------------------------------------------------ void ctkDICOMPatientDelegate::paintSelectAllIcon(QPainter* painter, - const QRect& itemRect, + QRect itemRect, const QModelIndex& index, const QStyleOptionViewItem& option) const { diff --git a/Libs/DICOM/Widgets/ctkDICOMPatientDelegate.h b/Libs/DICOM/Widgets/ctkDICOMPatientDelegate.h index 80001df8b6..04ed1b4e88 100644 --- a/Libs/DICOM/Widgets/ctkDICOMPatientDelegate.h +++ b/Libs/DICOM/Widgets/ctkDICOMPatientDelegate.h @@ -95,24 +95,24 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMPatientDelegate : public QStyledItemDeleg Q_INVOKABLE ctkDICOMPatientView::DisplayMode getDisplayMode(const QStyleOptionViewItem& option) const; /// Get the study area rect within the item rect - Q_INVOKABLE QRect patientsRect(const QRect& itemRect, const QStyleOptionViewItem& option, + Q_INVOKABLE QRect patientsRect(QRect itemRect, const QStyleOptionViewItem& option, const QModelIndex& index) const; /// Get the patient header rect within the item rect - Q_INVOKABLE QRect patientHeaderRect(const QRect& patientsRect, + Q_INVOKABLE QRect patientHeaderRect(QRect patientsRect, const QStyleOptionViewItem& option) const; /// Get the context menu button rect (3-dots) within the patient item - Q_INVOKABLE QRect contextMenuButtonRect(const QRect& itemRect, const QStyleOptionViewItem& option) const; + Q_INVOKABLE QRect contextMenuButtonRect(QRect itemRect, const QStyleOptionViewItem& option) const; /// Check if a point is within the context menu button area - Q_INVOKABLE bool isContextMenuButtonAt(const QPoint& pos, const QRect& itemRect, const QStyleOptionViewItem& option) const; + Q_INVOKABLE bool isContextMenuButtonAt(QPoint pos, QRect itemRect, const QStyleOptionViewItem& option) const; /// Get the select all icon rect within the patient item - Q_INVOKABLE QRect selectAllIconRect(const QRect& itemRect, const QStyleOptionViewItem& option) const; + Q_INVOKABLE QRect selectAllIconRect(QRect itemRect, const QStyleOptionViewItem& option) const; /// Check if a point is within the select all icon area - Q_INVOKABLE bool isSelectAllIconAt(const QPoint& pos, const QRect& itemRect, const QStyleOptionViewItem& option) const; + Q_INVOKABLE bool isSelectAllIconAt(QPoint pos, QRect itemRect, const QStyleOptionViewItem& option) const; Q_SIGNALS: /// Emitted when spacing changes @@ -136,19 +136,19 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMPatientDelegate : public QStyledItemDeleg /// Paint for TabMode void paintTabMode(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; - void paintPatientsTabs(QPainter* painter, const QRect& rect, const QStyleOptionViewItem& option, + void paintPatientsTabs(QPainter* painter, QRect rect, const QStyleOptionViewItem& option, const QModelIndex& index) const; - void paintPatientHeader(QPainter* painter, const QRect &rect, + void paintPatientHeader(QPainter* painter, QRect rect, const QStyleOptionViewItem& option, const QModelIndex& index) const; /// Paint for ListMode void paintListMode(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; /// Paint the context menu button (3 dots) - void paintContextMenuButton(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; + void paintContextMenuButton(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; /// Paint the select all icon - void paintSelectAllIcon(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; + void paintSelectAllIcon(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; private: Q_DECLARE_PRIVATE(ctkDICOMPatientDelegate); diff --git a/Libs/DICOM/Widgets/ctkDICOMPatientView.cpp b/Libs/DICOM/Widgets/ctkDICOMPatientView.cpp index 0ede76152b..f52d64a79e 100644 --- a/Libs/DICOM/Widgets/ctkDICOMPatientView.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMPatientView.cpp @@ -2160,7 +2160,7 @@ void ctkDICOMPatientView::onStudiesSelectionChanged(const QStringList &selectedS } //------------------------------------------------------------------------------ -void ctkDICOMPatientView::onPatientContextMenuRequested(const QPoint& globalPos, const QModelIndex& clickedPatientIndex) +void ctkDICOMPatientView::onPatientContextMenuRequested(QPoint globalPos, const QModelIndex& clickedPatientIndex) { Q_D(ctkDICOMPatientView); diff --git a/Libs/DICOM/Widgets/ctkDICOMPatientView.h b/Libs/DICOM/Widgets/ctkDICOMPatientView.h index fe0c6bd13f..93659fb101 100644 --- a/Libs/DICOM/Widgets/ctkDICOMPatientView.h +++ b/Libs/DICOM/Widgets/ctkDICOMPatientView.h @@ -184,7 +184,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMPatientView : public QListView public slots: /// Called when context menu is requested from the delegate - void onPatientContextMenuRequested(const QPoint& globalPos, const QModelIndex& clickedPatientIndex); + void onPatientContextMenuRequested(QPoint globalPos, const QModelIndex& clickedPatientIndex); /// Called when select all icon is clicked from the delegate void onSelectAllIconClicked(const QModelIndex& patientIndex); diff --git a/Libs/DICOM/Widgets/ctkDICOMSeriesDelegate.cpp b/Libs/DICOM/Widgets/ctkDICOMSeriesDelegate.cpp index 614acc7512..36b9acf100 100644 --- a/Libs/DICOM/Widgets/ctkDICOMSeriesDelegate.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMSeriesDelegate.cpp @@ -183,7 +183,7 @@ QSize ctkDICOMSeriesDelegate::sizeHint(const QStyleOptionViewItem& option, const } //------------------------------------------------------------------------------ -void ctkDICOMSeriesDelegate::paintThumbnail(QPainter* painter, const QRect& rect, const QModelIndex& index) const +void ctkDICOMSeriesDelegate::paintThumbnail(QPainter* painter, QRect rect, const QModelIndex& index) const { Q_D(const ctkDICOMSeriesDelegate); @@ -279,7 +279,7 @@ void ctkDICOMSeriesDelegate::paintThumbnail(QPainter* painter, const QRect& rect } //------------------------------------------------------------------------------ -void ctkDICOMSeriesDelegate::paintText(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const +void ctkDICOMSeriesDelegate::paintText(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const { Q_D(const ctkDICOMSeriesDelegate); @@ -470,7 +470,7 @@ void ctkDICOMSeriesDelegate::paintText(QPainter* painter, const QRect& rect, con } //------------------------------------------------------------------------------ -void ctkDICOMSeriesDelegate::paintThumbnailOverlay(QPainter* painter, const QRect& rect, const QModelIndex& index) const +void ctkDICOMSeriesDelegate::paintThumbnailOverlay(QPainter* painter, QRect rect, const QModelIndex& index) const { Q_D(const ctkDICOMSeriesDelegate); // Only paint modality overlay on thumbnail if thumbnail has been generated @@ -522,7 +522,7 @@ void ctkDICOMSeriesDelegate::paintThumbnailOverlay(QPainter* painter, const QRec } //------------------------------------------------------------------------------ -void ctkDICOMSeriesDelegate::paintSelection(QPainter* painter, const QRect& rect, const QStyleOptionViewItem& option) const +void ctkDICOMSeriesDelegate::paintSelection(QPainter* painter, QRect rect, const QStyleOptionViewItem& option) const { Q_D(const ctkDICOMSeriesDelegate); @@ -571,14 +571,14 @@ void ctkDICOMSeriesDelegate::paintSelection(QPainter* painter, const QRect& rect } //------------------------------------------------------------------------------ -QRect ctkDICOMSeriesDelegate::selectionRect(const QRect& itemRect) const +QRect ctkDICOMSeriesDelegate::selectionRect(QRect itemRect) const { Q_D(const ctkDICOMSeriesDelegate); return itemRect.marginsRemoved(QMargins(d->Spacing, d->Spacing, d->Spacing, d->Spacing)); } //------------------------------------------------------------------------------ -QRect ctkDICOMSeriesDelegate::thumbnailRect(const QRect& itemRect, const QModelIndex& index) const +QRect ctkDICOMSeriesDelegate::thumbnailRect(QRect itemRect, const QModelIndex& index) const { Q_D(const ctkDICOMSeriesDelegate); // Query the model for thumbnail size using the role @@ -606,7 +606,7 @@ QRect ctkDICOMSeriesDelegate::thumbnailRect(const QRect& itemRect, const QModelI } //------------------------------------------------------------------------------ -QRect ctkDICOMSeriesDelegate::progressBarRect(const QRect& itemRect, const QModelIndex& index) const +QRect ctkDICOMSeriesDelegate::progressBarRect(QRect itemRect, const QModelIndex& index) const { Q_D(const ctkDICOMSeriesDelegate); QRect thumbRect = this->thumbnailRect(itemRect, index); @@ -622,7 +622,7 @@ QRect ctkDICOMSeriesDelegate::progressBarRect(const QRect& itemRect, const QMode } //------------------------------------------------------------------------------ -QRect ctkDICOMSeriesDelegate::textRect(const QRect& itemRect, const QModelIndex& index) const +QRect ctkDICOMSeriesDelegate::textRect(QRect itemRect, const QModelIndex& index) const { Q_D(const ctkDICOMSeriesDelegate); QRect progressBarRect = this->progressBarRect(itemRect, index); @@ -676,7 +676,7 @@ int ctkDICOMSeriesDelegate::cornerRadius() const } //------------------------------------------------------------------------------ -void ctkDICOMSeriesDelegate::paintContextMenuButton(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const +void ctkDICOMSeriesDelegate::paintContextMenuButton(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const { Q_D(const ctkDICOMSeriesDelegate); @@ -752,7 +752,7 @@ void ctkDICOMSeriesDelegate::paintContextMenuButton(QPainter* painter, const QRe } //------------------------------------------------------------------------------ -QRect ctkDICOMSeriesDelegate::contextMenuButtonRect(const QRect& itemRect, const QModelIndex& index) const +QRect ctkDICOMSeriesDelegate::contextMenuButtonRect(QRect itemRect, const QModelIndex& index) const { Q_D(const ctkDICOMSeriesDelegate); QRect thumbRect = this->thumbnailRect(itemRect, index); @@ -763,14 +763,14 @@ QRect ctkDICOMSeriesDelegate::contextMenuButtonRect(const QRect& itemRect, const } //------------------------------------------------------------------------------ -bool ctkDICOMSeriesDelegate::isContextMenuButtonAt(const QPoint& pos, const QRect& itemRect, const QModelIndex& index) const +bool ctkDICOMSeriesDelegate::isContextMenuButtonAt(QPoint pos, QRect itemRect, const QModelIndex& index) const { QRect buttonRect = this->contextMenuButtonRect(itemRect, index); return buttonRect.contains(pos); } //------------------------------------------------------------------------------ -QRect ctkDICOMSeriesDelegate::statusButtonRect(const QRect &itemRect, const QModelIndex &index) const +QRect ctkDICOMSeriesDelegate::statusButtonRect(QRect itemRect, const QModelIndex &index) const { Q_D(const ctkDICOMSeriesDelegate); QRect thumbRect = this->thumbnailRect(itemRect, index); @@ -781,14 +781,14 @@ QRect ctkDICOMSeriesDelegate::statusButtonRect(const QRect &itemRect, const QMod } //------------------------------------------------------------------------------ -bool ctkDICOMSeriesDelegate::isStatusButtonAt(const QPoint &pos, const QRect &itemRect, const QModelIndex &index) const +bool ctkDICOMSeriesDelegate::isStatusButtonAt(QPoint pos, QRect itemRect, const QModelIndex &index) const { QRect buttonRect = this->statusButtonRect(itemRect, index); return buttonRect.contains(pos); } //------------------------------------------------------------------------------ -void ctkDICOMSeriesDelegate::paintStatusButton(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const +void ctkDICOMSeriesDelegate::paintStatusButton(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const { Q_D(const ctkDICOMSeriesDelegate); @@ -909,7 +909,7 @@ void ctkDICOMSeriesDelegate::paintStatusButton(QPainter* painter, const QRect& r } //------------------------------------------------------------------------------ -void ctkDICOMSeriesDelegate::paintProgressBar(QPainter* painter, const QRect& rect, const QModelIndex& index) const +void ctkDICOMSeriesDelegate::paintProgressBar(QPainter* painter, QRect rect, const QModelIndex& index) const { Q_D(const ctkDICOMSeriesDelegate); diff --git a/Libs/DICOM/Widgets/ctkDICOMSeriesDelegate.h b/Libs/DICOM/Widgets/ctkDICOMSeriesDelegate.h index 2dd815110f..389215bd02 100644 --- a/Libs/DICOM/Widgets/ctkDICOMSeriesDelegate.h +++ b/Libs/DICOM/Widgets/ctkDICOMSeriesDelegate.h @@ -71,16 +71,16 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMSeriesDelegate : public QStyledItemDelega int cornerRadius() const; /// Check if a point is within the context menu button area - bool isContextMenuButtonAt(const QPoint& pos, const QRect& itemRect, const QModelIndex& index) const; + bool isContextMenuButtonAt(QPoint pos, QRect itemRect, const QModelIndex& index) const; /// Get the context menu button rect - QRect contextMenuButtonRect(const QRect& itemRect, const QModelIndex& index) const; + QRect contextMenuButtonRect(QRect itemRect, const QModelIndex& index) const; /// Check if a point is within the status button area - bool isStatusButtonAt(const QPoint& pos, const QRect& itemRect, const QModelIndex& index) const; + bool isStatusButtonAt(QPoint pos, QRect itemRect, const QModelIndex& index) const; /// Get the status button rect - QRect statusButtonRect(const QRect& itemRect, const QModelIndex& index) const; + QRect statusButtonRect(QRect itemRect, const QModelIndex& index) const; Q_SIGNALS: /// Emitted when spacing changes @@ -91,37 +91,37 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMSeriesDelegate : public QStyledItemDelega protected: /// Paint the thumbnail area - void paintThumbnail(QPainter* painter, const QRect& rect, const QModelIndex& index) const; + void paintThumbnail(QPainter* painter, QRect rect, const QModelIndex& index) const; /// Paint the text information - void paintText(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; + void paintText(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; /// Paint overlay information on thumbnail - void paintThumbnailOverlay(QPainter* painter, const QRect& rect, const QModelIndex& index) const; + void paintThumbnailOverlay(QPainter* painter, QRect rect, const QModelIndex& index) const; /// Paint cloud/downloading status button in top-right corner of thumbnail - void paintStatusButton(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; + void paintStatusButton(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; /// Paint progress bar below thumbnail when downloading - void paintProgressBar(QPainter* painter, const QRect& rect, const QModelIndex& index) const; + void paintProgressBar(QPainter* painter, QRect rect, const QModelIndex& index) const; /// Paint the selection state - void paintSelection(QPainter* painter, const QRect& rect, const QStyleOptionViewItem& option) const; + void paintSelection(QPainter* painter, QRect rect, const QStyleOptionViewItem& option) const; /// Paint the context menu button (3 dots) when hovering or when context menu is active - void paintContextMenuButton(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; + void paintContextMenuButton(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; /// Get the selection highlight rect (contentRect minus selection margins) - QRect selectionRect(const QRect& itemRect) const; + QRect selectionRect(QRect itemRect) const; /// Get the thumbnail rect within the item rect - QRect thumbnailRect(const QRect& itemRect, const QModelIndex& index) const; + QRect thumbnailRect(QRect itemRect, const QModelIndex& index) const; /// Get the progress bar rect within the item rect - QRect progressBarRect(const QRect& itemRect, const QModelIndex& index) const; + QRect progressBarRect(QRect itemRect, const QModelIndex& index) const; /// Get the text rect within the item rect - QRect textRect(const QRect& itemRect, const QModelIndex& index) const; + QRect textRect(QRect itemRect, const QModelIndex& index) const; private: Q_DECLARE_PRIVATE(ctkDICOMSeriesDelegate); diff --git a/Libs/DICOM/Widgets/ctkDICOMSeriesTableView.cpp b/Libs/DICOM/Widgets/ctkDICOMSeriesTableView.cpp index 1a900bfcdd..179b8e3eb2 100644 --- a/Libs/DICOM/Widgets/ctkDICOMSeriesTableView.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMSeriesTableView.cpp @@ -831,7 +831,7 @@ void ctkDICOMSeriesTableView::onSeriesSelectionChanged() } //------------------------------------------------------------------------------ -void ctkDICOMSeriesTableView::onDelegateContextMenuRequested(const QPoint& globalPos, const QModelIndex& index) +void ctkDICOMSeriesTableView::onDelegateContextMenuRequested(QPoint globalPos, const QModelIndex& index) { Q_D(ctkDICOMSeriesTableView); diff --git a/Libs/DICOM/Widgets/ctkDICOMSeriesTableView.h b/Libs/DICOM/Widgets/ctkDICOMSeriesTableView.h index 4567007b35..067eca961f 100644 --- a/Libs/DICOM/Widgets/ctkDICOMSeriesTableView.h +++ b/Libs/DICOM/Widgets/ctkDICOMSeriesTableView.h @@ -177,7 +177,7 @@ protected slots: void onModelReset(); /// Called when delegate requests context menu - void onDelegateContextMenuRequested(const QPoint& globalPos, const QModelIndex& index); + void onDelegateContextMenuRequested(QPoint globalPos, const QModelIndex& index); signals: /// Emitted when the mouse enters the study list view diff --git a/Libs/DICOM/Widgets/ctkDICOMStudyDelegate.cpp b/Libs/DICOM/Widgets/ctkDICOMStudyDelegate.cpp index fb91f0f12c..69aa2472ff 100644 --- a/Libs/DICOM/Widgets/ctkDICOMStudyDelegate.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMStudyDelegate.cpp @@ -228,7 +228,7 @@ int ctkDICOMStudyDelegate::expandedHeight() const //------------------------------------------------------------------------------ void ctkDICOMStudyDelegate::paintStudyHeader(QPainter* painter, - const QRect& rect, + QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option, int numberOfSeriesSelected) const @@ -259,7 +259,7 @@ void ctkDICOMStudyDelegate::paintStudyHeader(QPainter* painter, } //------------------------------------------------------------------------------ -void ctkDICOMStudyDelegate::paintCollapseIndicator(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const +void ctkDICOMStudyDelegate::paintCollapseIndicator(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const { Q_D(const ctkDICOMStudyDelegate); @@ -320,7 +320,7 @@ void ctkDICOMStudyDelegate::paintCollapseIndicator(QPainter* painter, const QRec } //------------------------------------------------------------------------------ -void ctkDICOMStudyDelegate::paintStudyInfo(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const +void ctkDICOMStudyDelegate::paintStudyInfo(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const { Q_D(const ctkDICOMStudyDelegate); painter->save(); @@ -424,7 +424,7 @@ void ctkDICOMStudyDelegate::paintStudyInfo(QPainter* painter, const QRect& rect, } //------------------------------------------------------------------------------ -void ctkDICOMStudyDelegate::paintSeriesInfo(QPainter* painter, const QRect& rect, const QModelIndex& index, int numberOfSeriesSelected) const +void ctkDICOMStudyDelegate::paintSeriesInfo(QPainter* painter, QRect rect, const QModelIndex& index, int numberOfSeriesSelected) const { painter->save(); @@ -470,7 +470,7 @@ void ctkDICOMStudyDelegate::paintSeriesInfo(QPainter* painter, const QRect& rect //------------------------------------------------------------------------------ void ctkDICOMStudyDelegate::paintSelectAllIcon(QPainter* painter, - const QRect& rect, + QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const { @@ -540,7 +540,7 @@ void ctkDICOMStudyDelegate::paintSelectAllIcon(QPainter* painter, //------------------------------------------------------------------------------ void ctkDICOMStudyDelegate::paintCardBackground(QPainter* painter, - const QRect& rect, + QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const { @@ -600,21 +600,21 @@ void ctkDICOMStudyDelegate::paintCardBackground(QPainter* painter, } //------------------------------------------------------------------------------ -QRect ctkDICOMStudyDelegate::studyCardRect(const QRect& itemRect) const +QRect ctkDICOMStudyDelegate::studyCardRect(QRect itemRect) const { Q_D(const ctkDICOMStudyDelegate); return QRect(itemRect.left() + d->Spacing * 0.5, itemRect.top() + d->Spacing * 0.5, itemRect.width() - d->Spacing * 2, itemRect.height() - d->Spacing); } //------------------------------------------------------------------------------ -QRect ctkDICOMStudyDelegate::studyHeaderRect(const QRect& itemRect) const +QRect ctkDICOMStudyDelegate::studyHeaderRect(QRect itemRect) const { Q_D(const ctkDICOMStudyDelegate); return QRect(itemRect.left() + d->Spacing * 0.5, itemRect.top() + d->Spacing * 0.5, itemRect.width() - d->Spacing, d->CollapsedHeight); } //------------------------------------------------------------------------------ -QRect ctkDICOMStudyDelegate::collapseIndicatorRect(const QRect& headerRect) const +QRect ctkDICOMStudyDelegate::collapseIndicatorRect(QRect headerRect) const { Q_D(const ctkDICOMStudyDelegate); return QRect(headerRect.left() + d->Spacing, @@ -623,7 +623,7 @@ QRect ctkDICOMStudyDelegate::collapseIndicatorRect(const QRect& headerRect) cons } //------------------------------------------------------------------------------ -QRect ctkDICOMStudyDelegate::studyInfoRect(const QRect& headerRect) const +QRect ctkDICOMStudyDelegate::studyInfoRect(QRect headerRect) const { Q_D(const ctkDICOMStudyDelegate); QRect collapseRect = this->collapseIndicatorRect(headerRect); @@ -637,7 +637,7 @@ QRect ctkDICOMStudyDelegate::studyInfoRect(const QRect& headerRect) const } //------------------------------------------------------------------------------ -QRect ctkDICOMStudyDelegate::seriesInfoRect(const QRect& headerRect) const +QRect ctkDICOMStudyDelegate::seriesInfoRect(QRect headerRect) const { Q_D(const ctkDICOMStudyDelegate); return QRect(headerRect.right() - d->seriesInfoWidth - d->Spacing - d->IconSize * 2, @@ -646,7 +646,7 @@ QRect ctkDICOMStudyDelegate::seriesInfoRect(const QRect& headerRect) const } //------------------------------------------------------------------------------ -QRect ctkDICOMStudyDelegate::seriesAreaRect(const QRect& itemRect, const QModelIndex& index) const +QRect ctkDICOMStudyDelegate::seriesAreaRect(QRect itemRect, const QModelIndex& index) const { Q_D(const ctkDICOMStudyDelegate); if (this->isStudyCollapsed(index)) @@ -669,7 +669,7 @@ QRect ctkDICOMStudyDelegate::seriesAreaRect(const QRect& itemRect, const QModelI } //------------------------------------------------------------------------------ -QRect ctkDICOMStudyDelegate::selectAllIconRect(const QRect& headerRect) const +QRect ctkDICOMStudyDelegate::selectAllIconRect(QRect headerRect) const { Q_D(const ctkDICOMStudyDelegate); return QRect(headerRect.right() - d->Spacing * 10 - d->IconSize * 2, @@ -825,7 +825,7 @@ QString ctkDICOMStudyDelegate::formatStudyTime(const QString& time) const } //------------------------------------------------------------------------------ -QRect ctkDICOMStudyDelegate::contextMenuButtonRect(const QRect& headerRect) const +QRect ctkDICOMStudyDelegate::contextMenuButtonRect(QRect headerRect) const { Q_D(const ctkDICOMStudyDelegate); return QRect(headerRect.right() - d->Spacing * 9 - d->IconSize, @@ -835,7 +835,7 @@ QRect ctkDICOMStudyDelegate::contextMenuButtonRect(const QRect& headerRect) cons } //------------------------------------------------------------------------------ -QRect ctkDICOMStudyDelegate::operationStatusButtonRect(const QRect& headerRect) const +QRect ctkDICOMStudyDelegate::operationStatusButtonRect(QRect headerRect) const { Q_D(const ctkDICOMStudyDelegate); return QRect(headerRect.right() - d->Spacing * 8, @@ -845,7 +845,7 @@ QRect ctkDICOMStudyDelegate::operationStatusButtonRect(const QRect& headerRect) } //------------------------------------------------------------------------------ -bool ctkDICOMStudyDelegate::isContextMenuButtonAt(const QPoint& pos, const QRect& itemRect) const +bool ctkDICOMStudyDelegate::isContextMenuButtonAt(QPoint pos, QRect itemRect) const { QRect headerRect = this->studyHeaderRect(itemRect); QRect buttonRect = this->contextMenuButtonRect(headerRect); @@ -854,7 +854,7 @@ bool ctkDICOMStudyDelegate::isContextMenuButtonAt(const QPoint& pos, const QRect //------------------------------------------------------------------------------ void ctkDICOMStudyDelegate::paintContextMenuButton(QPainter* painter, - const QRect& rect, + QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const { @@ -924,7 +924,7 @@ void ctkDICOMStudyDelegate::paintContextMenuButton(QPainter* painter, //------------------------------------------------------------------------------ void ctkDICOMStudyDelegate::paintOperationStatusButton(QPainter* painter, - const QRect& rect, + QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const { diff --git a/Libs/DICOM/Widgets/ctkDICOMStudyDelegate.h b/Libs/DICOM/Widgets/ctkDICOMStudyDelegate.h index f08759ae06..f8a02cb64a 100644 --- a/Libs/DICOM/Widgets/ctkDICOMStudyDelegate.h +++ b/Libs/DICOM/Widgets/ctkDICOMStudyDelegate.h @@ -88,37 +88,37 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMStudyDelegate : public QStyledItemDelegat Q_INVOKABLE bool isStudyCollapsed(const QModelIndex& index) const; /// Get the series area rect within the item rect (when expanded) - Q_INVOKABLE QRect seriesAreaRect(const QRect& itemRect, const QModelIndex& index) const; + Q_INVOKABLE QRect seriesAreaRect(QRect itemRect, const QModelIndex& index) const; /// Calculate the required height for the series area based on series count, grid columns, and thumbnail size Q_INVOKABLE int calculateSeriesAreaHeight(const QModelIndex& studyIndex) const; /// Get the study header rect within the item rect - Q_INVOKABLE QRect studyCardRect(const QRect& itemRect) const; + Q_INVOKABLE QRect studyCardRect(QRect itemRect) const; /// Get the study header rect within the item rect - Q_INVOKABLE QRect studyHeaderRect(const QRect& itemRect) const; + Q_INVOKABLE QRect studyHeaderRect(QRect itemRect) const; /// Get the study info rect within the header rect - Q_INVOKABLE QRect studyInfoRect(const QRect& headerRect) const; + Q_INVOKABLE QRect studyInfoRect(QRect headerRect) const; /// Get the collapse indicator rect within the header rect - Q_INVOKABLE QRect collapseIndicatorRect(const QRect& headerRect) const; + Q_INVOKABLE QRect collapseIndicatorRect(QRect headerRect) const; /// Get the series info rect within the header rect - Q_INVOKABLE QRect seriesInfoRect(const QRect& headerRect) const; + Q_INVOKABLE QRect seriesInfoRect(QRect headerRect) const; /// Get the select all icon rect within the header rect - Q_INVOKABLE QRect selectAllIconRect(const QRect& headerRect) const; + Q_INVOKABLE QRect selectAllIconRect(QRect headerRect) const; /// Get the context menu button rect within the header rect - Q_INVOKABLE QRect contextMenuButtonRect(const QRect& headerRect) const; + Q_INVOKABLE QRect contextMenuButtonRect(QRect headerRect) const; /// Get the operation status button rect within the header rect - Q_INVOKABLE QRect operationStatusButtonRect(const QRect& headerRect) const; + Q_INVOKABLE QRect operationStatusButtonRect(QRect headerRect) const; /// Check if a point is within the context menu button area - Q_INVOKABLE bool isContextMenuButtonAt(const QPoint& pos, const QRect& itemRect) const; + Q_INVOKABLE bool isContextMenuButtonAt(QPoint pos, QRect itemRect) const; Q_SIGNALS: /// Emitted when spacing changes @@ -136,41 +136,41 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMStudyDelegate : public QStyledItemDelegat protected: /// Paint the study header area void paintStudyHeader(QPainter* painter, - const QRect& rect, + QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option, int numberOfSeriesSelected) const; /// Paint the collapse/expand indicator - void paintCollapseIndicator(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; + void paintCollapseIndicator(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; /// Paint the study information (description, date, modalities) - void paintStudyInfo(QPainter* painter, const QRect& rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; + void paintStudyInfo(QPainter* painter, QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; /// Paint the series count and status - void paintSeriesInfo(QPainter* painter, const QRect& rect, const QModelIndex& index, int numberOfSeriesSelected) const; + void paintSeriesInfo(QPainter* painter, QRect rect, const QModelIndex& index, int numberOfSeriesSelected) const; /// Paint the series count and status void paintSelectAllIcon(QPainter* painter, - const QRect& rect, + QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; /// Paint the context menu button (3 dots) when hovering void paintContextMenuButton(QPainter* painter, - const QRect& rect, + QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; /// Paint the operation status button (progress, error, etc.) void paintOperationStatusButton(QPainter* painter, - const QRect& rect, + QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; /// Paint the card background container void paintCardBackground(QPainter* painter, - const QRect& rect, + QRect rect, const QModelIndex& index, const QStyleOptionViewItem& option) const; diff --git a/Libs/DICOM/Widgets/ctkDICOMStudyListView.cpp b/Libs/DICOM/Widgets/ctkDICOMStudyListView.cpp index c99bf01de2..7b83907496 100644 --- a/Libs/DICOM/Widgets/ctkDICOMStudyListView.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMStudyListView.cpp @@ -1737,7 +1737,7 @@ void ctkDICOMStudyListView::onSeriesSelectionChanged(const QString& studyInstanc } //------------------------------------------------------------------------------ -void ctkDICOMStudyListView::onSeriesContextMenuRequested(const QPoint& globalPos, const QStringList& selectedSeriesInstanceUIDs) +void ctkDICOMStudyListView::onSeriesContextMenuRequested(QPoint globalPos, const QStringList& selectedSeriesInstanceUIDs) { Q_D(ctkDICOMStudyListView); Q_UNUSED(selectedSeriesInstanceUIDs); @@ -1765,7 +1765,7 @@ void ctkDICOMStudyListView::onSeriesContextMenuRequested(const QPoint& globalPos } //------------------------------------------------------------------------------ -void ctkDICOMStudyListView::onStudyContextMenuRequested(const QPoint& globalPos, const QModelIndex& studyIndex) +void ctkDICOMStudyListView::onStudyContextMenuRequested(QPoint globalPos, const QModelIndex& studyIndex) { Q_D(ctkDICOMStudyListView); diff --git a/Libs/DICOM/Widgets/ctkDICOMStudyListView.h b/Libs/DICOM/Widgets/ctkDICOMStudyListView.h index 3382be076e..e84b65ea6b 100644 --- a/Libs/DICOM/Widgets/ctkDICOMStudyListView.h +++ b/Libs/DICOM/Widgets/ctkDICOMStudyListView.h @@ -229,7 +229,7 @@ public slots: void setStudyCollapsed(const QString& studyInstanceUID, bool collapsed); /// Called when study context menu is requested from delegate (3-dot button click) - void onStudyContextMenuRequested(const QPoint& globalPos, const QModelIndex& studyIndex); + void onStudyContextMenuRequested(QPoint globalPos, const QModelIndex& studyIndex); /// Called when scroll bar value changes void onScrollBarValueChanged(int value); @@ -285,7 +285,7 @@ protected slots: void onModelReset(); /// Called when series context menu is requested - void onSeriesContextMenuRequested(const QPoint& globalPos, const QStringList& selectedSeriesInstanceUIDs); + void onSeriesContextMenuRequested(QPoint globalPos, const QStringList& selectedSeriesInstanceUIDs); /// Called when series grid columns change (requires study item size hint update) void onSeriesGridColumnsChanged(const QString& studyInstanceUID); diff --git a/Libs/DICOM/Widgets/ctkDICOMTableManager.cpp b/Libs/DICOM/Widgets/ctkDICOMTableManager.cpp index 918a197daa..839a70942a 100644 --- a/Libs/DICOM/Widgets/ctkDICOMTableManager.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMTableManager.cpp @@ -216,7 +216,7 @@ void ctkDICOMTableManager::setDICOMDatabase(ctkDICOMDatabase* db) } //------------------------------------------------------------------------------ -void ctkDICOMTableManager::setTableOrientation(const Qt::Orientation &o) +void ctkDICOMTableManager::setTableOrientation(Qt::Orientation o) { Q_D(ctkDICOMTableManager); d->tableSplitter->setOrientation(o); diff --git a/Libs/DICOM/Widgets/ctkDICOMTableManager.h b/Libs/DICOM/Widgets/ctkDICOMTableManager.h index cccd549aa6..2879eb1675 100644 --- a/Libs/DICOM/Widgets/ctkDICOMTableManager.h +++ b/Libs/DICOM/Widgets/ctkDICOMTableManager.h @@ -74,7 +74,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMTableManager : public QWidget */ Q_INVOKABLE void setDICOMDatabase(ctkDICOMDatabase* db); - void setTableOrientation(const Qt::Orientation&); + void setTableOrientation(Qt::Orientation); Qt::Orientation tableOrientation(); /** diff --git a/Libs/DICOM/Widgets/ctkDICOMTableView.cpp b/Libs/DICOM/Widgets/ctkDICOMTableView.cpp index 9d57568879..2841744b2d 100644 --- a/Libs/DICOM/Widgets/ctkDICOMTableView.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMTableView.cpp @@ -918,7 +918,7 @@ bool ctkDICOMTableView::filterActive() } //------------------------------------------------------------------------------ -void ctkDICOMTableView::onCustomContextMenuRequested(const QPoint &point) +void ctkDICOMTableView::onCustomContextMenuRequested(QPoint point) { Q_D(ctkDICOMTableView); diff --git a/Libs/DICOM/Widgets/ctkDICOMTableView.h b/Libs/DICOM/Widgets/ctkDICOMTableView.h index 2d31776bca..da90f065d7 100644 --- a/Libs/DICOM/Widgets/ctkDICOMTableView.h +++ b/Libs/DICOM/Widgets/ctkDICOMTableView.h @@ -285,7 +285,7 @@ public Q_SLOTS: * @param point the local point to translate to global * Emits customContextMenuRequested with the global point */ - void onCustomContextMenuRequested(const QPoint &point); + void onCustomContextMenuRequested(QPoint point); /** * @brief Select all items in the view diff --git a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp index c3a98afecb..0d9e338c62 100644 --- a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.cpp @@ -2402,7 +2402,7 @@ void ctkDICOMVisualBrowserWidget::onFilteringDateComboBoxChanged(int index) } //------------------------------------------------------------------------------ -void ctkDICOMVisualBrowserWidget::onFilteringStartDateChanged(const QDate& date) +void ctkDICOMVisualBrowserWidget::onFilteringStartDateChanged(QDate date) { Q_D(ctkDICOMVisualBrowserWidget); d->FilteringStartDate = date; @@ -2424,7 +2424,7 @@ void ctkDICOMVisualBrowserWidget::onFilteringStartDateChanged(const QDate& date) } //------------------------------------------------------------------------------ -void ctkDICOMVisualBrowserWidget::onFilteringEndDateChanged(const QDate& date) +void ctkDICOMVisualBrowserWidget::onFilteringEndDateChanged(QDate date) { Q_D(ctkDICOMVisualBrowserWidget); d->FilteringEndDate = date; @@ -2951,7 +2951,7 @@ void ctkDICOMVisualBrowserWidget::onStudyReadyToOpen(const QString& studyInstanc } //------------------------------------------------------------------------------ -void ctkDICOMVisualBrowserWidget::showPatientContextMenu(const QPoint& globalPos, const QStringList& selectedPatientUIDs) +void ctkDICOMVisualBrowserWidget::showPatientContextMenu(QPoint globalPos, const QStringList& selectedPatientUIDs) { if (selectedPatientUIDs.isEmpty()) { @@ -3056,7 +3056,7 @@ void ctkDICOMVisualBrowserWidget::showPatientContextMenu(const QPoint& globalPos } //------------------------------------------------------------------------------ -void ctkDICOMVisualBrowserWidget::showStudyContextMenu(const QPoint& globalPos, const QStringList& selectedStudyInstanceUIDs) +void ctkDICOMVisualBrowserWidget::showStudyContextMenu(QPoint globalPos, const QStringList& selectedStudyInstanceUIDs) { Q_D(ctkDICOMVisualBrowserWidget); @@ -3170,7 +3170,7 @@ void ctkDICOMVisualBrowserWidget::showStudyContextMenu(const QPoint& globalPos, } //------------------------------------------------------------------------------ -void ctkDICOMVisualBrowserWidget::showSeriesContextMenu(const QPoint& globalPos, const QStringList& selectedSeriesInstanceUIDs) +void ctkDICOMVisualBrowserWidget::showSeriesContextMenu(QPoint globalPos, const QStringList& selectedSeriesInstanceUIDs) { Q_D(ctkDICOMVisualBrowserWidget); diff --git a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.h b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.h index eb6c7bf2dd..38eb28fda4 100644 --- a/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.h +++ b/Libs/DICOM/Widgets/ctkDICOMVisualBrowserWidget.h @@ -397,8 +397,8 @@ public Q_SLOTS: void onFilteringSeriesDescriptionChanged(); void onFilteringModalityCheckableComboBoxChanged(); void onFilteringDateComboBoxChanged(int); - void onFilteringStartDateChanged(const QDate& date); - void onFilteringEndDateChanged(const QDate& date); + void onFilteringStartDateChanged(QDate date); + void onFilteringEndDateChanged(QDate date); ///@} /// start query/retrieve and show patients @@ -489,11 +489,11 @@ protected Q_SLOTS: ///@} /// Called when context menu is requested for patient(s) - void showPatientContextMenu(const QPoint& globalPos, const QStringList& selectedPatientUIDs); + void showPatientContextMenu(QPoint globalPos, const QStringList& selectedPatientUIDs); /// Called when a right mouse click is made in the studies table - void showStudyContextMenu(const QPoint& globalPos, const QStringList& selectedStudyInstanceUIDs); + void showStudyContextMenu(QPoint globalPos, const QStringList& selectedStudyInstanceUIDs); /// Called when a right mouse click is made in the series table - void showSeriesContextMenu(const QPoint& globalPos, const QStringList& selectedSeriesInstanceUIDs); + void showSeriesContextMenu(QPoint globalPos, const QStringList& selectedSeriesInstanceUIDs); /// Called when a series is double-clicked void onSeriesDoubleClicked(const QString& seriesInstanceUID); diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.cpp index e08cc91873..81f246564b 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.cpp @@ -163,7 +163,7 @@ ctkVTKDataSetModel::AttributeTypes ctkVTKDataSetArrayComboBox::attributeTypes()c } // -------------------------------------------------------------------------- -void ctkVTKDataSetArrayComboBox::setAttributeTypes(const ctkVTKDataSetModel::AttributeTypes& attributeTypes) +void ctkVTKDataSetArrayComboBox::setAttributeTypes(ctkVTKDataSetModel::AttributeTypes attributeTypes) { this->dataSetModel()->setAttributeTypes(attributeTypes); } diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.h b/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.h index a9930df7c8..3af86b359c 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.h +++ b/Libs/Visualization/VTK/Widgets/ctkVTKDataSetArrayComboBox.h @@ -60,7 +60,7 @@ class CTK_VISUALIZATION_VTK_WIDGETS_EXPORT ctkVTKDataSetArrayComboBox int currentArrayLocation()const; ctkVTKDataSetModel::AttributeTypes attributeTypes()const; - void setAttributeTypes(const ctkVTKDataSetModel::AttributeTypes& attributeTypes); + void setAttributeTypes(ctkVTKDataSetModel::AttributeTypes attributeTypes); /// Set/Get NoneEnabled flags /// An additional empty item is added into the list, where the user can select. diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKDataSetModel.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKDataSetModel.cpp index d41da0931f..38ae733ab4 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKDataSetModel.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKDataSetModel.cpp @@ -43,7 +43,7 @@ class ctkVTKDataSetModelPrivate void init(); //void listenAbstractArrayModifiedEvent(); - static QList attributeArrayToInsert(const ctkVTKDataSetModel::AttributeTypes& attributeType, + static QList attributeArrayToInsert(ctkVTKDataSetModel::AttributeTypes attributeType, vtkDataSetAttributes * dataSetAttributes); vtkSmartPointer DataSet; @@ -100,7 +100,7 @@ void ctkVTKDataSetModelPrivate::listenAbstractArrayModifiedEvent() //------------------------------------------------------------------------------ QList ctkVTKDataSetModelPrivate::attributeArrayToInsert( - const ctkVTKDataSetModel::AttributeTypes& attributeType, + ctkVTKDataSetModel::AttributeTypes attributeType, vtkDataSetAttributes * dataSetAttributes) { QList attributeArraysToInsert; @@ -192,7 +192,7 @@ ctkVTKDataSetModel::AttributeTypes ctkVTKDataSetModel::attributeTypes()const } //------------------------------------------------------------------------------ -void ctkVTKDataSetModel::setAttributeTypes(const AttributeTypes& attributeTypes) +void ctkVTKDataSetModel::setAttributeTypes(AttributeTypes attributeTypes) { Q_D(ctkVTKDataSetModel); if (d->AttributeType == attributeTypes) diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKDataSetModel.h b/Libs/Visualization/VTK/Widgets/ctkVTKDataSetModel.h index 99f8d2cbdb..9892af1fa0 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKDataSetModel.h +++ b/Libs/Visualization/VTK/Widgets/ctkVTKDataSetModel.h @@ -90,7 +90,7 @@ class CTK_VISUALIZATION_VTK_WIDGETS_EXPORT ctkVTKDataSetModel vtkDataSet* dataSet()const; AttributeTypes attributeTypes()const; - void setAttributeTypes(const AttributeTypes& attributeTypes); + void setAttributeTypes(AttributeTypes attributeTypes); bool includeNullItem()const; void setIncludeNullItem(bool includeNullItem); diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKRenderView.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKRenderView.cpp index db43e35062..49e62164c8 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKRenderView.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKRenderView.cpp @@ -507,18 +507,18 @@ void ctkVTKRenderView::resetFocalPoint() } //---------------------------------------------------------------------------- -void ctkVTKRenderView::lookFromAxis(const ctkAxesWidget::Axis& axis, double fov) +void ctkVTKRenderView::lookFromAxis(ctkAxesWidget::Axis axis, double fov) { Q_UNUSED(fov); // The FOV parameter is not used anymore. It was not a good idea to force changing // the camera distance from the focal point when the user only requested a view direction // change. - qWarning() << "This function is deprecated. Use lookFromAxis(const ctkAxesWidget::Axis& axis) instead"; + qWarning() << "This function is deprecated. Use lookFromAxis(ctkAxesWidget::Axis axis) instead"; this->lookFromAxis(axis); } //---------------------------------------------------------------------------- -void ctkVTKRenderView::lookFromAxis(const ctkAxesWidget::Axis& axis) +void ctkVTKRenderView::lookFromAxis(ctkAxesWidget::Axis axis) { Q_D(ctkVTKRenderView); Q_ASSERT(d->Renderer); diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKRenderView.h b/Libs/Visualization/VTK/Widgets/ctkVTKRenderView.h index 6416a3051b..45d9832c58 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKRenderView.h +++ b/Libs/Visualization/VTK/Widgets/ctkVTKRenderView.h @@ -120,14 +120,14 @@ public Q_SLOTS: /// \brief Change camera to look from a given axis to the focal point /// Translate/Rotate the camera to look from a given axis - void lookFromAxis(const ctkAxesWidget::Axis& axis); + void lookFromAxis(ctkAxesWidget::Axis axis); /// \deprecated /// \brief Change camera to look from a given axis to the focal point. /// Translate/Rotate the camera to look from a given axis. /// \param fov is not used (it is kept for backward compatibility of the API) - /// \sa lookFromAxis(const ctkAxesWidget::Axis&) - void lookFromAxis(const ctkAxesWidget::Axis& axis, double fov); + /// \sa lookFromAxis(ctkAxesWidget::Axis) + void lookFromAxis(ctkAxesWidget::Axis axis, double fov); public: diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.cpp b/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.cpp index b29893ae03..d4c4585481 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.cpp +++ b/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.cpp @@ -193,7 +193,7 @@ bool ctk::qImageToVTKImageData(const QImage& inputQImage, vtkImageData* outputVT //---------------------------------------------------------------------------- QImage ctk::scalarsToColorsImage(vtkScalarsToColors* scalarsToColors, - const QSize& size) + QSize size) { if (!scalarsToColors || scalarsToColors->GetNumberOfAvailableColors() <= 0) diff --git a/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.h b/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.h index 05c870cd40..df0bc30912 100644 --- a/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.h +++ b/Libs/Visualization/VTK/Widgets/ctkVTKWidgetsUtils.h @@ -61,7 +61,7 @@ bool CTK_VISUALIZATION_VTK_WIDGETS_EXPORT qImageToVTKImageData(const QImage& ima /// Convert a vtkScalarsToColors into a QImage /// If size is empty, it will use the large icon size of the application style QImage CTK_VISUALIZATION_VTK_WIDGETS_EXPORT scalarsToColorsImage( - vtkScalarsToColors* scalarsToColors, const QSize& size = QSize()); + vtkScalarsToColors* scalarsToColors, QSize size = QSize()); /// /// \ingroup Visualization_VTK_Widgets diff --git a/Libs/Widgets/ctkBasePopupWidget.cpp b/Libs/Widgets/ctkBasePopupWidget.cpp index 24c1bea6b0..8e81577e96 100644 --- a/Libs/Widgets/ctkBasePopupWidget.cpp +++ b/Libs/Widgets/ctkBasePopupWidget.cpp @@ -312,7 +312,7 @@ QRect ctkBasePopupWidgetPrivate::baseGeometry()const } // ------------------------------------------------------------------------- -QPoint ctkBasePopupWidgetPrivate::mapToGlobal(const QPoint& baseWidgetPoint)const +QPoint ctkBasePopupWidgetPrivate::mapToGlobal(QPoint baseWidgetPoint)const { QPoint mappedPoint = baseWidgetPoint; if (!this->BaseWidget.isNull() && this->BaseWidget->parentWidget()) diff --git a/Libs/Widgets/ctkBasePopupWidget_p.h b/Libs/Widgets/ctkBasePopupWidget_p.h index 5b6fe47480..cb182737ae 100644 --- a/Libs/Widgets/ctkBasePopupWidget_p.h +++ b/Libs/Widgets/ctkBasePopupWidget_p.h @@ -76,7 +76,7 @@ class CTK_WIDGETS_EXPORT ctkBasePopupWidgetPrivate QRect desiredOpenGeometry()const; QRect desiredOpenGeometry(QRect baseGeometry)const; QRect baseGeometry()const; - QPoint mapToGlobal(const QPoint& baseWidgetPoint)const; + QPoint mapToGlobal(QPoint baseWidgetPoint)const; QPropertyAnimation* currentAnimation()const; diff --git a/Libs/Widgets/ctkCheckBox.cpp b/Libs/Widgets/ctkCheckBox.cpp index 00a708e2e8..944d629ae9 100644 --- a/Libs/Widgets/ctkCheckBox.cpp +++ b/Libs/Widgets/ctkCheckBox.cpp @@ -184,7 +184,7 @@ QIcon ctkCheckBox::indicatorIcon() const } // ---------------------------------------------------------------------------- -void ctkCheckBox::setIndicatorIconSize(const QSize& newSize) +void ctkCheckBox::setIndicatorIconSize(QSize newSize) { Q_D(ctkCheckBox); d->IconStyle->IndicatorSize = newSize; diff --git a/Libs/Widgets/ctkCheckBox.h b/Libs/Widgets/ctkCheckBox.h index 3e6996b664..34f82bed6f 100644 --- a/Libs/Widgets/ctkCheckBox.h +++ b/Libs/Widgets/ctkCheckBox.h @@ -53,7 +53,7 @@ class CTK_WIDGETS_EXPORT ctkCheckBox : public QCheckBox /// Resize the indicator icon to Qsize. /// If newSize is bigger than the indicator icon's maximum size, /// The icon will get the icon's maximum size and not newSize. - void setIndicatorIconSize(const QSize& newSize); + void setIndicatorIconSize(QSize newSize); QSize indicatorIconSize() const; protected: diff --git a/Libs/Widgets/ctkColorPickerButton.cpp b/Libs/Widgets/ctkColorPickerButton.cpp index 1041583ff9..dc8a301bb5 100644 --- a/Libs/Widgets/ctkColorPickerButton.cpp +++ b/Libs/Widgets/ctkColorPickerButton.cpp @@ -199,7 +199,7 @@ bool ctkColorPickerButton::displayColorName()const } //----------------------------------------------------------------------------- -void ctkColorPickerButton::setDialogOptions(const ColorDialogOptions& options) +void ctkColorPickerButton::setDialogOptions(ColorDialogOptions options) { Q_D(ctkColorPickerButton); d->DialogOptions = options; diff --git a/Libs/Widgets/ctkColorPickerButton.h b/Libs/Widgets/ctkColorPickerButton.h index 795ff7628f..4c92c5130f 100644 --- a/Libs/Widgets/ctkColorPickerButton.h +++ b/Libs/Widgets/ctkColorPickerButton.h @@ -101,7 +101,7 @@ class CTK_WIDGETS_EXPORT ctkColorPickerButton : public QPushButton /// /// Set the color dialog options to configure the color dialog. /// \sa QColorDialog::setOptions QColorDialog::ColorDialogOption - void setDialogOptions(const ColorDialogOptions& options); + void setDialogOptions(ColorDialogOptions options); const ColorDialogOptions& dialogOptions() const; /// diff --git a/Libs/Widgets/ctkComboBox.cpp b/Libs/Widgets/ctkComboBox.cpp index 437356854b..45d37aad2a 100644 --- a/Libs/Widgets/ctkComboBox.cpp +++ b/Libs/Widgets/ctkComboBox.cpp @@ -240,7 +240,7 @@ void ctkComboBox::forceDefault(bool newForceDefault) } // ------------------------------------------------------------------------- -void ctkComboBox::setElideMode(const Qt::TextElideMode& newMode) +void ctkComboBox::setElideMode(Qt::TextElideMode newMode) { Q_D(ctkComboBox); d->ElideMode = newMode; diff --git a/Libs/Widgets/ctkComboBox.h b/Libs/Widgets/ctkComboBox.h index a5beec1239..15ce2dbef9 100644 --- a/Libs/Widgets/ctkComboBox.h +++ b/Libs/Widgets/ctkComboBox.h @@ -75,7 +75,7 @@ class CTK_WIDGETS_EXPORT ctkComboBox : public QComboBox /// setElideMode can elide the text displayed on the combobox. /// Qt::ElideNone by default (same behavior as QComboBox) - void setElideMode(const Qt::TextElideMode& newMode); + void setElideMode(Qt::TextElideMode newMode); Qt::TextElideMode elideMode()const; /// \tbd turn into flags ? diff --git a/Libs/Widgets/ctkConsole.cpp b/Libs/Widgets/ctkConsole.cpp index c0424c8995..f4f4d93b0b 100644 --- a/Libs/Widgets/ctkConsole.cpp +++ b/Libs/Widgets/ctkConsole.cpp @@ -1253,7 +1253,7 @@ CTK_SET_CPP(ctkConsole, const QString&, setPs2, Ps2); //----------------------------------------------------------------------------- CTK_GET_CPP(ctkConsole, ctkConsole::EditorHints, editorHints, EditorHints); -CTK_SET_CPP(ctkConsole, const ctkConsole::EditorHints&, setEditorHints, EditorHints); +CTK_SET_CPP(ctkConsole, ctkConsole::EditorHints, setEditorHints, EditorHints); //----------------------------------------------------------------------------- int ctkConsole::cursorPosition() const @@ -1295,7 +1295,7 @@ Qt::ScrollBarPolicy ctkConsole::scrollBarPolicy()const } //----------------------------------------------------------------------------- -void ctkConsole::setScrollBarPolicy(const Qt::ScrollBarPolicy& newScrollBarPolicy) +void ctkConsole::setScrollBarPolicy(Qt::ScrollBarPolicy newScrollBarPolicy) { Q_D(ctkConsole); d->setVerticalScrollBarPolicy(newScrollBarPolicy); @@ -1325,7 +1325,7 @@ void ctkConsole::addCompleterShortcut(const QKeySequence& key) CTK_GET_CPP(ctkConsole, ctkConsole::RunFileOptions, runFileOptions, RunFileOptions); //----------------------------------------------------------------------------- -void ctkConsole::setRunFileOptions(const RunFileOptions& newOptions) +void ctkConsole::setRunFileOptions(RunFileOptions newOptions) { Q_D(ctkConsole); d->RunFileButton->setVisible(newOptions.testFlag(ctkConsole::RunFileButton)); diff --git a/Libs/Widgets/ctkConsole.h b/Libs/Widgets/ctkConsole.h index 7c5c0865bc..35f9c8ddef 100644 --- a/Libs/Widgets/ctkConsole.h +++ b/Libs/Widgets/ctkConsole.h @@ -168,12 +168,12 @@ class CTK_WIDGETS_EXPORT ctkConsole : public QWidget EditorHints editorHints()const; /// \sa editorHints() - void setEditorHints(const EditorHints& newEditorHints); + void setEditorHints(EditorHints newEditorHints); Qt::ScrollBarPolicy scrollBarPolicy()const; /// \sa scrollBarPolicy() - void setScrollBarPolicy(const Qt::ScrollBarPolicy& newScrollBarPolicy); + void setScrollBarPolicy(Qt::ScrollBarPolicy newScrollBarPolicy); /// Returns the string used as primary prompt virtual QString ps1() const; @@ -226,7 +226,7 @@ class CTK_WIDGETS_EXPORT ctkConsole : public QWidget /// Set which options to run file are enabled. /// Default is RunFileShortcut. /// \sa runFileOptions() - void setRunFileOptions(const RunFileOptions& newOptions); + void setRunFileOptions(RunFileOptions newOptions); /// Get the current command buffer (text on current input line, not yet executed) /// \sa setCommandBuffer() diff --git a/Libs/Widgets/ctkCrosshairLabel.cpp b/Libs/Widgets/ctkCrosshairLabel.cpp index a01d769abe..b044fbeb62 100644 --- a/Libs/Widgets/ctkCrosshairLabel.cpp +++ b/Libs/Widgets/ctkCrosshairLabel.cpp @@ -256,7 +256,7 @@ CTK_GET_CPP(ctkCrosshairLabel, ctkCrosshairLabel::CrosshairTypes, crosshairType, CrosshairType) // -------------------------------------------------------------------------- -void ctkCrosshairLabel::setCrosshairType(const CrosshairTypes& newType) +void ctkCrosshairLabel::setCrosshairType(CrosshairTypes newType) { Q_D(ctkCrosshairLabel); if (newType == d->CrosshairType) diff --git a/Libs/Widgets/ctkCrosshairLabel.h b/Libs/Widgets/ctkCrosshairLabel.h index e9cc59c216..35cedb623f 100644 --- a/Libs/Widgets/ctkCrosshairLabel.h +++ b/Libs/Widgets/ctkCrosshairLabel.h @@ -94,7 +94,7 @@ class CTK_WIDGETS_EXPORT ctkCrosshairLabel : public QLabel /// Set/get the crosshair type. Default SimpleCrosshair. CrosshairTypes crosshairType() const; - void setCrosshairType(const CrosshairTypes& newType); + void setCrosshairType(CrosshairTypes newType); /// Set/get color to set the widget to when not magnifying or when label /// size is larger than pixmap size. Default is the color from the widget's diff --git a/Libs/Widgets/ctkDirectoryButton.cpp b/Libs/Widgets/ctkDirectoryButton.cpp index 5fbb9457f5..0e796f38c9 100644 --- a/Libs/Widgets/ctkDirectoryButton.cpp +++ b/Libs/Widgets/ctkDirectoryButton.cpp @@ -217,7 +217,7 @@ QIcon ctkDirectoryButton::icon()const #ifdef USE_QFILEDIALOG_OPTIONS void ctkDirectoryButton::setOptions(const QFileDialog::Options& dialogOptions) #else -void ctkDirectoryButton::setOptions(const Options& dialogOptions) +void ctkDirectoryButton::setOptions(Options dialogOptions) #endif { Q_D(ctkDirectoryButton); diff --git a/Libs/Widgets/ctkDirectoryButton.h b/Libs/Widgets/ctkDirectoryButton.h index 2d92dfb36d..51edce4a64 100644 --- a/Libs/Widgets/ctkDirectoryButton.h +++ b/Libs/Widgets/ctkDirectoryButton.h @@ -145,7 +145,7 @@ class CTK_WIDGETS_EXPORT ctkDirectoryButton: public QWidget void setOptions(const QFileDialog::Options& options); const QFileDialog::Options& options()const; #else - void setOptions(const Options& options); + void setOptions(Options options); const Options& options()const; #endif diff --git a/Libs/Widgets/ctkFlowLayout.cpp b/Libs/Widgets/ctkFlowLayout.cpp index d4e4788324..48da6078d8 100644 --- a/Libs/Widgets/ctkFlowLayout.cpp +++ b/Libs/Widgets/ctkFlowLayout.cpp @@ -43,7 +43,7 @@ class ctkFlowLayoutPrivate void init(); void deleteAll(); - int doLayout(const QRect &rect, bool testOnly) const; + int doLayout(QRect rect, bool testOnly) const; int smartSpacing(QStyle::PixelMetric pm) const; QSize maxSizeHint(int* visibleItemsCount = 0)const; @@ -109,7 +109,7 @@ QSize ctkFlowLayoutPrivate::maxSizeHint(int *visibleItemsCount)const } // -------------------------------------------------------------------------- -int ctkFlowLayoutPrivate::doLayout(const QRect& rect, bool testOnly)const +int ctkFlowLayoutPrivate::doLayout(QRect rect, bool testOnly)const { Q_Q(const ctkFlowLayout); QMargins margins = q->contentsMargins(); diff --git a/Libs/Widgets/ctkPathLineEdit.cpp b/Libs/Widgets/ctkPathLineEdit.cpp index 3ba1f4118a..8686f63427 100644 --- a/Libs/Widgets/ctkPathLineEdit.cpp +++ b/Libs/Widgets/ctkPathLineEdit.cpp @@ -507,7 +507,7 @@ const QStringList& ctkPathLineEdit::nameFilters()const } //----------------------------------------------------------------------------- -void ctkPathLineEdit::setFilters(const Filters &filters) +void ctkPathLineEdit::setFilters(Filters filters) { Q_D(ctkPathLineEdit); d->Filters = QFlags(static_cast(filters)); @@ -525,7 +525,7 @@ ctkPathLineEdit::Filters ctkPathLineEdit::filters()const #ifdef USE_QFILEDIALOG_OPTIONS void ctkPathLineEdit::setOptions(const QFileDialog::Options& dialogOptions) #else -void ctkPathLineEdit::setOptions(const Options& dialogOptions) +void ctkPathLineEdit::setOptions(Options dialogOptions) #endif { Q_D(ctkPathLineEdit); diff --git a/Libs/Widgets/ctkPathLineEdit.h b/Libs/Widgets/ctkPathLineEdit.h index 3e2d4f2ca6..7110882eac 100644 --- a/Libs/Widgets/ctkPathLineEdit.h +++ b/Libs/Widgets/ctkPathLineEdit.h @@ -197,7 +197,7 @@ class CTK_WIDGETS_EXPORT ctkPathLineEdit: public QWidget void setNameFilters(const QStringList &nameFilters); const QStringList& nameFilters()const; - void setFilters(const Filters& filters); + void setFilters(Filters filters); Filters filters()const; /// Options of the file dialog pop up. @@ -206,7 +206,7 @@ class CTK_WIDGETS_EXPORT ctkPathLineEdit: public QWidget void setOptions(const QFileDialog::Options& options); const QFileDialog::Options& options()const; #else - void setOptions(const Options& options); + void setOptions(Options options); const Options& options()const; #endif diff --git a/Libs/Widgets/ctkPathListWidget.cpp b/Libs/Widgets/ctkPathListWidget.cpp index c726f089ac..f82bb4733b 100644 --- a/Libs/Widgets/ctkPathListWidget.cpp +++ b/Libs/Widgets/ctkPathListWidget.cpp @@ -561,14 +561,14 @@ QStandardItem *ctkPathListWidget::item(const QString &absolutePath) const } // -------------------------------------------------------------------------- -QString ctkPathListWidget::pathAt(const QPoint& point) const +QString ctkPathListWidget::pathAt(QPoint point) const { Q_D(const ctkPathListWidget); return d->PathListModel.data(indexAt(point), AbsolutePathRole).toString(); } // -------------------------------------------------------------------------- -QStandardItem* ctkPathListWidget::itemAt(const QPoint &point) const +QStandardItem* ctkPathListWidget::itemAt(QPoint point) const { Q_D(const ctkPathListWidget); QModelIndex index = this->indexAt(point); diff --git a/Libs/Widgets/ctkPathListWidget.h b/Libs/Widgets/ctkPathListWidget.h index dd8d3b96db..c9351f791a 100644 --- a/Libs/Widgets/ctkPathListWidget.h +++ b/Libs/Widgets/ctkPathListWidget.h @@ -190,11 +190,11 @@ class CTK_WIDGETS_EXPORT ctkPathListWidget : public QListView /// \return The absolute path for the entry located at the point \a point (in the /// widget coordinate system) or a null QString if no entry could be found for \a point. - QString pathAt(const QPoint& point) const; + QString pathAt(QPoint point) const; /// \return The item for the entry located at the point \a point (in the widget /// coordinate system) or NULL if no ite could be found for \a point. - QStandardItem* itemAt(const QPoint& point) const; + QStandardItem* itemAt(QPoint point) const; /// \see pathAt(const QPoint&) QString pathAt(int x, int y) const { return pathAt(QPoint(x, y)); } diff --git a/Libs/Widgets/ctkPixmapIconEngine.cpp b/Libs/Widgets/ctkPixmapIconEngine.cpp index c852ecf02b..eb0b6bdbbf 100644 --- a/Libs/Widgets/ctkPixmapIconEngine.cpp +++ b/Libs/Widgets/ctkPixmapIconEngine.cpp @@ -51,10 +51,10 @@ void ctkPixmapIconEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mod painter->drawPixmap(rect, pixmap(pixmapSize, mode, state)); } -static inline int area(const QSize &s) { return s.width() * s.height(); } +static inline int area(QSize s) { return s.width() * s.height(); } // returns the smallest of the two that is still larger than or equal to size. -static ctkPixmapIconEngineEntry *bestSizeMatch( const QSize &size, ctkPixmapIconEngineEntry *pa, ctkPixmapIconEngineEntry *pb) +static ctkPixmapIconEngineEntry *bestSizeMatch( QSize size, ctkPixmapIconEngineEntry *pa, ctkPixmapIconEngineEntry *pb) { int s = area(size); if (pa->size == QSize() && pa->pixmap.isNull()) { @@ -77,7 +77,7 @@ static ctkPixmapIconEngineEntry *bestSizeMatch( const QSize &size, ctkPixmapIcon return pb; } -ctkPixmapIconEngineEntry *ctkPixmapIconEngine::tryMatch(const QSize &size, QIcon::Mode mode, QIcon::State state) +ctkPixmapIconEngineEntry *ctkPixmapIconEngine::tryMatch(QSize size, QIcon::Mode mode, QIcon::State state) { ctkPixmapIconEngineEntry *pe = 0; for (int i = 0; i < pixmaps.count(); ++i) @@ -91,7 +91,7 @@ ctkPixmapIconEngineEntry *ctkPixmapIconEngine::tryMatch(const QSize &size, QIcon } -ctkPixmapIconEngineEntry *ctkPixmapIconEngine::bestMatch(const QSize &size, QIcon::Mode mode, QIcon::State state, bool sizeOnly) +ctkPixmapIconEngineEntry *ctkPixmapIconEngine::bestMatch(QSize size, QIcon::Mode mode, QIcon::State state, bool sizeOnly) { ctkPixmapIconEngineEntry *pe = tryMatch(size, mode, state); while (!pe){ diff --git a/Libs/Widgets/ctkPixmapIconEngine.h b/Libs/Widgets/ctkPixmapIconEngine.h index dfc816604f..24c1f99c09 100644 --- a/Libs/Widgets/ctkPixmapIconEngine.h +++ b/Libs/Widgets/ctkPixmapIconEngine.h @@ -37,7 +37,7 @@ struct ctkPixmapIconEngineEntry ctkPixmapIconEngineEntry():mode(QIcon::Normal), state(QIcon::Off){} ctkPixmapIconEngineEntry(const QPixmap &pm, QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off) :pixmap(pm), size(pm.size()), mode(m), state(s){} - ctkPixmapIconEngineEntry(const QString &file, const QSize &sz = QSize(), QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off) + ctkPixmapIconEngineEntry(const QString &file, QSize sz = QSize(), QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off) :fileName(file), size(sz), mode(m), state(s){} QPixmap pixmap; QString fileName; @@ -57,7 +57,7 @@ class CTK_WIDGETS_EXPORT ctkPixmapIconEngine ~ctkPixmapIconEngine(); void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state); QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state); - ctkPixmapIconEngineEntry *bestMatch(const QSize &size, QIcon::Mode mode, QIcon::State state, bool sizeOnly); + ctkPixmapIconEngineEntry *bestMatch(QSize size, QIcon::Mode mode, QIcon::State state, bool sizeOnly); QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state); void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state); void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state); @@ -70,7 +70,7 @@ class CTK_WIDGETS_EXPORT ctkPixmapIconEngine void virtual_hook(int id, void *data); private: - ctkPixmapIconEngineEntry *tryMatch(const QSize &size, QIcon::Mode mode, QIcon::State state); + ctkPixmapIconEngineEntry *tryMatch(QSize size, QIcon::Mode mode, QIcon::State state); QVector pixmaps; friend class QIconThemeEngine; diff --git a/Libs/Widgets/ctkRangeSlider.cpp b/Libs/Widgets/ctkRangeSlider.cpp index 09706ee36a..5f9d6a3fcf 100644 --- a/Libs/Widgets/ctkRangeSlider.cpp +++ b/Libs/Widgets/ctkRangeSlider.cpp @@ -53,7 +53,7 @@ class ctkRangeSliderPrivate /// If a handle is selected, handleRect is set to the handle rect. /// otherwise return NoHandle and handleRect is set to the combined rect of /// the min and max handles - Handle handleAtPos(const QPoint& pos, QRect& handleRect)const; + Handle handleAtPos(QPoint pos, QRect& handleRect)const; /// Copied verbatim from QSliderPrivate class (see QSlider.cpp) int pixelPosToRangeValue(int pos) const; @@ -127,7 +127,7 @@ void ctkRangeSliderPrivate::init() } // -------------------------------------------------------------------------- -ctkRangeSliderPrivate::Handle ctkRangeSliderPrivate::handleAtPos(const QPoint& pos, QRect& handleRect)const +ctkRangeSliderPrivate::Handle ctkRangeSliderPrivate::handleAtPos(QPoint pos, QRect& handleRect)const { Q_Q(const ctkRangeSlider); diff --git a/Libs/Widgets/ctkThumbnailLabel.cpp b/Libs/Widgets/ctkThumbnailLabel.cpp index b1a3c9e2b9..e41c32f667 100644 --- a/Libs/Widgets/ctkThumbnailLabel.cpp +++ b/Libs/Widgets/ctkThumbnailLabel.cpp @@ -203,7 +203,7 @@ QString ctkThumbnailLabel::text()const } //---------------------------------------------------------------------------- -void ctkThumbnailLabel::setTextPosition(const Qt::Alignment& position) +void ctkThumbnailLabel::setTextPosition(Qt::Alignment position) { Q_D(ctkThumbnailLabel); d->TextPosition = position; @@ -264,7 +264,7 @@ Qt::Alignment ctkThumbnailLabel::textPosition()const } //---------------------------------------------------------------------------- -void ctkThumbnailLabel::setOperationStatus(const OperationStatus &status) +void ctkThumbnailLabel::setOperationStatus(OperationStatus status) { Q_D(ctkThumbnailLabel); d->Status = status; @@ -301,7 +301,7 @@ int ctkThumbnailLabel::operationProgress() const } //---------------------------------------------------------------------------- -void ctkThumbnailLabel::setOperationProgress(const int &progress) +void ctkThumbnailLabel::setOperationProgress(int progress) { Q_D(ctkThumbnailLabel); d->OperationProgressBar->setValue(progress); diff --git a/Libs/Widgets/ctkThumbnailLabel.h b/Libs/Widgets/ctkThumbnailLabel.h index 414917e110..9f67fd846a 100644 --- a/Libs/Widgets/ctkThumbnailLabel.h +++ b/Libs/Widgets/ctkThumbnailLabel.h @@ -84,7 +84,7 @@ class CTK_WIDGETS_EXPORT ctkThumbnailLabel : public QWidget void setText(const QString& text); QString text()const; - void setTextPosition(const Qt::Alignment& alignment); + void setTextPosition(Qt::Alignment alignment); Qt::Alignment textPosition()const; enum OperationStatus{ @@ -95,13 +95,13 @@ class CTK_WIDGETS_EXPORT ctkThumbnailLabel : public QWidget }; Q_ENUM(OperationStatus) - void setOperationStatus(const OperationStatus& status); + void setOperationStatus(OperationStatus status); OperationStatus operationStatus()const; void setStatusIcon(const QIcon& icon); QIcon statusIcon()const; - void setOperationProgress(const int& progress); + void setOperationProgress(int progress); int operationProgress()const; void setPixmap(const QPixmap& pixmap); diff --git a/Libs/Widgets/ctkTransferFunctionRepresentation.cpp b/Libs/Widgets/ctkTransferFunctionRepresentation.cpp index 0e4f9d2fce..5c49a32442 100644 --- a/Libs/Widgets/ctkTransferFunctionRepresentation.cpp +++ b/Libs/Widgets/ctkTransferFunctionRepresentation.cpp @@ -451,7 +451,7 @@ qreal ctkTransferFunctionRepresentation::computeRangeYOffset(const QVariant rang } //----------------------------------------------------------------------------- -qreal ctkTransferFunctionRepresentation::posX(const qreal& x)const +qreal ctkTransferFunctionRepresentation::posX(qreal x)const { return x; } diff --git a/Libs/Widgets/ctkTransferFunctionRepresentation.h b/Libs/Widgets/ctkTransferFunctionRepresentation.h index bdee790363..f7f430acfd 100644 --- a/Libs/Widgets/ctkTransferFunctionRepresentation.h +++ b/Libs/Widgets/ctkTransferFunctionRepresentation.h @@ -60,7 +60,7 @@ class CTK_WIDGETS_EXPORT ctkTransferFunctionRepresentation: public QObject inline qreal posY(const ctkPoint& point)const; inline QColor color(const ctkPoint& point) const; - qreal posX(const qreal& tfX)const; + qreal posX(qreal tfX)const; qreal posY(const QVariant& tfV)const; QColor color(const QVariant& tfV) const; @@ -71,7 +71,7 @@ class CTK_WIDGETS_EXPORT ctkTransferFunctionRepresentation: public QObject Q_INVOKABLE qreal mapYToScene(qreal posY)const; Q_INVOKABLE qreal mapXFromScene(qreal ScenePosX)const; Q_INVOKABLE qreal mapYFromScene(qreal ScenePosY)const; - inline QPointF mapPointFromScene(const QPointF& point)const; + inline QPointF mapPointFromScene(QPointF point)const; QList bezierParams(ctkControlPoint* start, ctkControlPoint* end) const; QList nonLinearPoints(ctkControlPoint* start, ctkControlPoint* end) const; @@ -128,7 +128,7 @@ QColor ctkTransferFunctionRepresentation::color(const ctkPoint& point) const return this->color(point.Value); } -QPointF ctkTransferFunctionRepresentation::mapPointFromScene(const QPointF& point)const +QPointF ctkTransferFunctionRepresentation::mapPointFromScene(QPointF point)const { return QPointF(this->mapXFromScene(point.x()), this->mapYFromScene(point.y())); diff --git a/Libs/Widgets/ctkWorkflowButtonBoxWidget.cpp b/Libs/Widgets/ctkWorkflowButtonBoxWidget.cpp index 3b36ae5004..8a574fdc98 100644 --- a/Libs/Widgets/ctkWorkflowButtonBoxWidget.cpp +++ b/Libs/Widgets/ctkWorkflowButtonBoxWidget.cpp @@ -376,7 +376,7 @@ QList ctkWorkflowButtonBoxWidget::goToButtons()const } //----------------------------------------------------------------------------- -void ctkWorkflowButtonBoxWidget::setDirection(const QBoxLayout::Direction& newDirection) +void ctkWorkflowButtonBoxWidget::setDirection(QBoxLayout::Direction newDirection) { if (QBoxLayout* layout = qobject_cast(this->layout())) { diff --git a/Libs/Widgets/ctkWorkflowButtonBoxWidget.h b/Libs/Widgets/ctkWorkflowButtonBoxWidget.h index de6be76e24..30fb5372e3 100644 --- a/Libs/Widgets/ctkWorkflowButtonBoxWidget.h +++ b/Libs/Widgets/ctkWorkflowButtonBoxWidget.h @@ -131,7 +131,7 @@ class CTK_WIDGETS_EXPORT ctkWorkflowButtonBoxWidget : public QWidget /// Sets the direction of the QBoxLayout that manages this widget (default is /// QBoxLayout::LeftToRight) QBoxLayout::Direction direction()const; - void setDirection(const QBoxLayout::Direction& newDirection); + void setDirection(QBoxLayout::Direction newDirection); /// Return the hideGoToButtons property value. /// \sa hideGoToButtons From 5c33c7ab1d97bb2ae8684ec6324549d8e22851e7 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 22 Mar 2026 09:49:46 -0500 Subject: [PATCH 32/32] STYLE: Add missing emit keyword on signal calls (clazy incorrect-emit) Add the `emit` keyword before signal calls that were missing it, for readability and to satisfy clazy's incorrect-emit check. Refactored LOG_AND_EMIT_* macros in ctkDICOMQuery.cpp and ctkDICOMRetrieve.cpp so that `emit` is visible at call sites rather than hidden inside the macro. Fixed an actual bug in ctkDICOMServer.cpp where `emit setTrustedEnabled()` was incorrectly emitting the setter name instead of the signal `trustedEnabledChanged()`. CTK_SET_CPP_EMIT macro call sites are false positives (the macro already includes emit) and were left unchanged. Co-Authored-By: Claude Opus 4.6 --- Libs/DICOM/Core/ctkDICOMQuery.cpp | 90 +++++++++---------- Libs/DICOM/Core/ctkDICOMRetrieve.cpp | 30 +++---- Libs/DICOM/Core/ctkDICOMStudyModel.cpp | 2 +- .../Core/ctkDICOMThumbnailGeneratorWorker.cpp | 2 +- Libs/DICOM/Widgets/ctkDICOMBrowser.cpp | 2 +- Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp | 2 +- Libs/Widgets/ctkMatrixWidget.cpp | 4 +- 7 files changed, 66 insertions(+), 66 deletions(-) diff --git a/Libs/DICOM/Core/ctkDICOMQuery.cpp b/Libs/DICOM/Core/ctkDICOMQuery.cpp index a1465fa749..ed490547d7 100644 --- a/Libs/DICOM/Core/ctkDICOMQuery.cpp +++ b/Libs/DICOM/Core/ctkDICOMQuery.cpp @@ -56,22 +56,22 @@ // logging is filtered by threadID and reported in the GUI per job. dcmtk::log4cplus::Logger rootLogQuery = dcmtk::log4cplus::Logger::getRoot(); -#define LOG_AND_EMIT_DEBUG(debugStr, signal) \ +#define LOG_AND_EMIT_DEBUG(debugStr, emitSignal) \ { \ DCMTK_LOG4CPLUS_DEBUG_STR(rootLogQuery, debugStr.toStdString().c_str()); \ - emit signal(debugStr); \ + emitSignal(debugStr); \ } \ -#define LOG_AND_EMIT_WARN(warnStr, signal) \ +#define LOG_AND_EMIT_WARN(warnStr, emitSignal) \ { \ DCMTK_LOG4CPLUS_WARN_STR(rootLogQuery, warnStr.toStdString().c_str()); \ - emit signal(warnStr); \ + emitSignal(warnStr); \ } \ -#define LOG_AND_EMIT_ERROR(errorStr, signal) \ +#define LOG_AND_EMIT_ERROR(errorStr, emitSignal) \ { \ DCMTK_LOG4CPLUS_ERROR_STR(rootLogQuery, errorStr.toStdString().c_str()); \ - emit signal(errorStr); \ + emitSignal(errorStr); \ } \ //------------------------------------------------------------------------------ @@ -103,7 +103,7 @@ class ctkDICOMQuerySCUPrivate : public DcmSCU return EC_IllegalCall; } - LOG_AND_EMIT_DEBUG(QString("FIND RESPONSE"), this->query->debug); + LOG_AND_EMIT_DEBUG(QString("FIND RESPONSE"), emit this->query->debug); return this->DcmSCU::handleFINDResponse(presID, response, waitForNextResponse); }; }; @@ -316,11 +316,11 @@ bool ctkDICOMQuery::query(ctkDICOMDatabase& database) Q_D(ctkDICOMQuery); if (database.database().isOpen()) { - LOG_AND_EMIT_DEBUG(QString("DB open in Query"), debug); + LOG_AND_EMIT_DEBUG(QString("DB open in Query"), emit debug); } else { - LOG_AND_EMIT_WARN(QString("DB not open in Query"), warn); + LOG_AND_EMIT_WARN(QString("DB not open in Query"), emit warn); } emit progress(0); @@ -374,11 +374,11 @@ bool ctkDICOMQuery::query(ctkDICOMDatabase& database) presentationContext = d->SCU->findPresentationContextID(UID_FINDStudyRootQueryRetrieveInformationModel, ""); if (presentationContext == 0) { - LOG_AND_EMIT_ERROR(QString("Failed to find acceptable presentation context"), error); + LOG_AND_EMIT_ERROR(QString("Failed to find acceptable presentation context"), emit error); } else { - LOG_AND_EMIT_DEBUG(QString("Found useful presentation context"), debug) + LOG_AND_EMIT_DEBUG(QString("Found useful presentation context"), emit debug) } emit progress(40); @@ -391,13 +391,13 @@ bool ctkDICOMQuery::query(ctkDICOMDatabase& database) OFCondition status = d->SCU->sendFINDRequest(presentationContext, d->QueryDcmDataset.data(), &responses); if (!status.good()) { - LOG_AND_EMIT_ERROR(QString("Find failed"), error); + LOG_AND_EMIT_ERROR(QString("Find failed"), emit error); d->releaseAssociation(); emit done(false); return false; } - LOG_AND_EMIT_DEBUG(QString("Find succeeded"), debug) + LOG_AND_EMIT_DEBUG(QString("Find succeeded"), emit debug) emit progress(50); if (d->Canceled) @@ -453,7 +453,7 @@ bool ctkDICOMQuery::query(ctkDICOMDatabase& database) studyDataset->findAndGetElement(DCM_PatientName, patientName); studyDataset->findAndGetElement(DCM_PatientID, patientID); - LOG_AND_EMIT_DEBUG(QString("Starting Series C-FIND for Study: %1").arg(studyInstanceUID), debug) + LOG_AND_EMIT_DEBUG(QString("Starting Series C-FIND for Study: %1").arg(studyInstanceUID), emit debug) emit progress(50 + (progressRatio * i++)); if (d->Canceled) { @@ -482,7 +482,7 @@ bool ctkDICOMQuery::query(ctkDICOMDatabase& database) } } - LOG_AND_EMIT_DEBUG(QString("Find succeeded at Series level for Study: %1").arg(studyInstanceUID), debug) + LOG_AND_EMIT_DEBUG(QString("Find succeeded at Series level for Study: %1").arg(studyInstanceUID), emit debug) emit progress(50 + (progressRatio * i++)); if (d->Canceled) { @@ -492,7 +492,7 @@ bool ctkDICOMQuery::query(ctkDICOMDatabase& database) } else { - LOG_AND_EMIT_ERROR(QString("Find at Series level failed for Study: %1").arg(studyInstanceUID), error) + LOG_AND_EMIT_ERROR(QString("Find at Series level failed for Study: %1").arg(studyInstanceUID), emit error) } emit progress(50 + (progressRatio * i++)); if (d->Canceled) @@ -555,11 +555,11 @@ bool ctkDICOMQuery::queryPatients() presentationContext = d->SCU->findPresentationContextID(UID_FINDStudyRootQueryRetrieveInformationModel, ""); if (presentationContext == 0) { - LOG_AND_EMIT_ERROR(QString("Failed to find acceptable presentation context"), error) + LOG_AND_EMIT_ERROR(QString("Failed to find acceptable presentation context"), emit error) } else { - LOG_AND_EMIT_DEBUG(QString("Found useful presentation context"), debug) + LOG_AND_EMIT_DEBUG(QString("Found useful presentation context"), emit debug) } emit progress(40); if (d->Canceled) @@ -568,7 +568,7 @@ bool ctkDICOMQuery::queryPatients() return false; } - LOG_AND_EMIT_DEBUG(QString("Starting patients C-FIND"), debug) + LOG_AND_EMIT_DEBUG(QString("Starting patients C-FIND"), emit debug) emit progress(50); if (d->Canceled) { @@ -594,7 +594,7 @@ bool ctkDICOMQuery::queryPatients() if (contResponses > d->MaximumPatientsQuery) { LOG_AND_EMIT_WARN(QString("The number of responses of the query task at patients level " - "surpassed the maximum value of permitted results (i.e. %1).").arg(d->MaximumPatientsQuery), warn) + "surpassed the maximum value of permitted results (i.e. %1).").arg(d->MaximumPatientsQuery), emit warn) break; } DcmDataset *dataset = (*it)->m_dataset; @@ -608,17 +608,17 @@ bool ctkDICOMQuery::queryPatients() if (contResponses == 0) { - LOG_AND_EMIT_WARN(QString("The patients query provided no results. Please refine your filters."), warn) + LOG_AND_EMIT_WARN(QString("The patients query provided no results. Please refine your filters."), emit warn) } JobResponseSet->setDatasets(datasetsMap); d->JobResponseSets.append(JobResponseSet); - LOG_AND_EMIT_DEBUG(QString("Find succeeded at patient level"), debug) + LOG_AND_EMIT_DEBUG(QString("Find succeeded at patient level"), emit debug) } else { - LOG_AND_EMIT_ERROR(QString("Find at patient level failed"), error) + LOG_AND_EMIT_ERROR(QString("Find at patient level failed"), emit error) } emit progress(100); @@ -694,11 +694,11 @@ bool ctkDICOMQuery::queryStudies(const QString& patientID) presentationContext = d->SCU->findPresentationContextID(UID_FINDStudyRootQueryRetrieveInformationModel, ""); if (presentationContext == 0) { - LOG_AND_EMIT_ERROR(QString("Failed to find acceptable presentation context"), error); + LOG_AND_EMIT_ERROR(QString("Failed to find acceptable presentation context"), emit error); } else { - LOG_AND_EMIT_DEBUG(QString("Found useful presentation context"), debug); + LOG_AND_EMIT_DEBUG(QString("Found useful presentation context"), emit debug); } emit progress(40); if (d->Canceled) @@ -707,7 +707,7 @@ bool ctkDICOMQuery::queryStudies(const QString& patientID) return false; } - LOG_AND_EMIT_DEBUG(QString("Starting studies C-FIND for patient: %1").arg(patientID), debug) + LOG_AND_EMIT_DEBUG(QString("Starting studies C-FIND for patient: %1").arg(patientID), emit debug) emit progress(50); if (d->Canceled) { @@ -744,11 +744,11 @@ bool ctkDICOMQuery::queryStudies(const QString& patientID) JobResponseSet->setDatasets(datasetsMap); d->JobResponseSets.append(JobResponseSet); - LOG_AND_EMIT_DEBUG(QString("Find succeeded at study level for patient: %1").arg(patientID), debug) + LOG_AND_EMIT_DEBUG(QString("Find succeeded at study level for patient: %1").arg(patientID), emit debug) } else { - LOG_AND_EMIT_ERROR(QString("Find at study level failed for patient: %1").arg(patientID), error) + LOG_AND_EMIT_ERROR(QString("Find at study level failed for patient: %1").arg(patientID), emit error) } emit progress(100); @@ -820,11 +820,11 @@ bool ctkDICOMQuery::querySeries(const QString& patientID, presentationContext = d->SCU->findPresentationContextID(UID_FINDStudyRootQueryRetrieveInformationModel, ""); if (presentationContext == 0) { - LOG_AND_EMIT_ERROR(QString("Failed to find acceptable presentation context"), error); + LOG_AND_EMIT_ERROR(QString("Failed to find acceptable presentation context"), emit error); } else { - LOG_AND_EMIT_DEBUG(QString("Found useful presentation context"), debug); + LOG_AND_EMIT_DEBUG(QString("Found useful presentation context"), emit debug); } emit progress(40); if (d->Canceled) @@ -833,7 +833,7 @@ bool ctkDICOMQuery::querySeries(const QString& patientID, return false; } - LOG_AND_EMIT_DEBUG(QString("Starting series C-FIND for study: %1").arg(studyInstanceUID), debug) + LOG_AND_EMIT_DEBUG(QString("Starting series C-FIND for study: %1").arg(studyInstanceUID), emit debug) emit progress(50); if (d->Canceled) { @@ -890,11 +890,11 @@ bool ctkDICOMQuery::querySeries(const QString& patientID, JobResponseSet->setDatasets(datasetsMap); d->JobResponseSets.append(JobResponseSet); - LOG_AND_EMIT_DEBUG(QString("Find succeeded at series level for study: %1").arg(studyInstanceUID), debug) + LOG_AND_EMIT_DEBUG(QString("Find succeeded at series level for study: %1").arg(studyInstanceUID), emit debug) } else { - LOG_AND_EMIT_ERROR(QString("Find at series level failed for study: %1").arg(studyInstanceUID), error) + LOG_AND_EMIT_ERROR(QString("Find at series level failed for study: %1").arg(studyInstanceUID), emit error) } emit progress(100); @@ -964,11 +964,11 @@ bool ctkDICOMQuery::queryInstances(const QString& patientID, d->PresentationContext = d->SCU->findPresentationContextID(UID_FINDStudyRootQueryRetrieveInformationModel, ""); if (d->PresentationContext == 0) { - LOG_AND_EMIT_ERROR(QString("Failed to find acceptable presentation context"), error) + LOG_AND_EMIT_ERROR(QString("Failed to find acceptable presentation context"), emit error) } else { - LOG_AND_EMIT_DEBUG(QString("Found useful presentation context"), debug) + LOG_AND_EMIT_DEBUG(QString("Found useful presentation context"), emit debug) } emit progress(40); if (d->Canceled) @@ -977,7 +977,7 @@ bool ctkDICOMQuery::queryInstances(const QString& patientID, return false; } - LOG_AND_EMIT_DEBUG(QString("Starting sop instances C-FIND for series: %1").arg(seriesInstanceUID), debug) + LOG_AND_EMIT_DEBUG(QString("Starting sop instances C-FIND for series: %1").arg(seriesInstanceUID), emit debug) emit progress(50); if (d->Canceled) { @@ -1033,11 +1033,11 @@ bool ctkDICOMQuery::queryInstances(const QString& patientID, } } - LOG_AND_EMIT_DEBUG(QString("Find succeeded at sop instance level for series: %1").arg(seriesInstanceUID), debug) + LOG_AND_EMIT_DEBUG(QString("Find succeeded at sop instance level for series: %1").arg(seriesInstanceUID), emit debug) } else { - LOG_AND_EMIT_ERROR(QString("Find at sop instance level failed for series: %1").arg(seriesInstanceUID), error) + LOG_AND_EMIT_ERROR(QString("Find at sop instance level failed for series: %1").arg(seriesInstanceUID), emit error) } JobResponseSet->setDatasets(datasetsMap); @@ -1085,7 +1085,7 @@ bool ctkDICOMQuery::initializeSCU() d->SCU->setPeerHostName(OFString(this->host().toStdString().c_str())); d->SCU->setPeerPort(this->port()); - LOG_AND_EMIT_DEBUG(QString("Setting Transfer Syntaxes"), debug) + LOG_AND_EMIT_DEBUG(QString("Setting Transfer Syntaxes"), emit debug) emit progress(10); if (d->Canceled) { @@ -1100,11 +1100,11 @@ bool ctkDICOMQuery::initializeSCU() d->SCU->addPresentationContext(UID_FINDStudyRootQueryRetrieveInformationModel, transferSyntaxes); if (!d->SCU->initNetwork().good()) { - LOG_AND_EMIT_ERROR(QString("Error initializing the network"), error) + LOG_AND_EMIT_ERROR(QString("Error initializing the network"), emit error) return false; } - LOG_AND_EMIT_DEBUG(QString("Negotiating Association"), debug) + LOG_AND_EMIT_DEBUG(QString("Negotiating Association"), emit debug) emit progress(20); if (d->Canceled) { @@ -1114,7 +1114,7 @@ bool ctkDICOMQuery::initializeSCU() OFCondition result = d->SCU->negotiateAssociation(); if (result.bad()) { - LOG_AND_EMIT_ERROR(QString("Error negotiating the association: %1").arg(result.text()), error) + LOG_AND_EMIT_ERROR(QString("Error negotiating the association: %1").arg(result.text()), emit error) return false; } @@ -1168,7 +1168,7 @@ QString ctkDICOMQuery::applyFilters(QMap filters) } modalitySearch.chop(1); // remove final backslash - LOG_AND_EMIT_DEBUG(QString("modalityInStudySearch %1").arg(modalitySearch), debug) + LOG_AND_EMIT_DEBUG(QString("modalityInStudySearch %1").arg(modalitySearch), emit debug) d->QueryDcmDataset->putAndInsertString(DCM_ModalitiesInStudy, modalitySearch.toLatin1().data()); } // Remember Series Description for later series query if we go through the keys now @@ -1179,7 +1179,7 @@ QString ctkDICOMQuery::applyFilters(QMap filters) } else { - LOG_AND_EMIT_DEBUG(QString("Ignoring unknown search key: %1").arg(key), debug) + LOG_AND_EMIT_DEBUG(QString("Ignoring unknown search key: %1").arg(key), emit debug) } } @@ -1191,7 +1191,7 @@ QString ctkDICOMQuery::applyFilters(QMap filters) filters["EndDate"].toString(); d->QueryDcmDataset->putAndInsertString (DCM_StudyDate, dateRange.toLatin1().data()); - LOG_AND_EMIT_DEBUG(QString("Query on study date: %1").arg(dateRange), debug) + LOG_AND_EMIT_DEBUG(QString("Query on study date: %1").arg(dateRange), emit debug) } emit progress(30); diff --git a/Libs/DICOM/Core/ctkDICOMRetrieve.cpp b/Libs/DICOM/Core/ctkDICOMRetrieve.cpp index b69806a2fe..62ea37da3a 100644 --- a/Libs/DICOM/Core/ctkDICOMRetrieve.cpp +++ b/Libs/DICOM/Core/ctkDICOMRetrieve.cpp @@ -53,19 +53,19 @@ dcmtk::log4cplus::Logger rootLogRetrieve = dcmtk::log4cplus::Logger::getRoot(); #define LOG_AND_EMIT_DEBUG(debugStr, signal) \ { \ DCMTK_LOG4CPLUS_DEBUG_STR(rootLogRetrieve, debugStr.toStdString().c_str()); \ - emit signal(debugStr); \ + signal(debugStr); \ } \ #define LOG_AND_EMIT_WARN(warnStr, signal) \ { \ DCMTK_LOG4CPLUS_WARN_STR(rootLogRetrieve, warnStr.toStdString().c_str()); \ - emit signal(warnStr); \ + signal(warnStr); \ } \ #define LOG_AND_EMIT_ERROR(errorStr, signal) \ { \ DCMTK_LOG4CPLUS_ERROR_STR(rootLogRetrieve, errorStr.toStdString().c_str()); \ - emit signal(errorStr); \ + signal(errorStr); \ } \ //------------------------------------------------------------------------------ @@ -1006,11 +1006,11 @@ bool ctkDICOMRetrieve::moveStudy(const QString& studyInstanceUID, if (studyInstanceUID.isEmpty()) { - LOG_AND_EMIT_ERROR(QString("Cannot receive study: Study Instance UID empty."), error) + LOG_AND_EMIT_ERROR(QString("Cannot receive study: Study Instance UID empty."), emit error) return false; } - LOG_AND_EMIT_DEBUG(QString("Starting moveStudy"), debug) + LOG_AND_EMIT_DEBUG(QString("Starting moveStudy"), emit debug) return d->move(patientID, studyInstanceUID, "", "", ctkDICOMRetrieve::RetrieveStudy); } @@ -1022,11 +1022,11 @@ bool ctkDICOMRetrieve::getStudy(const QString& studyInstanceUID, if (studyInstanceUID.isEmpty()) { - LOG_AND_EMIT_ERROR(QString("Cannot receive study: Study Instance UID empty."), error) + LOG_AND_EMIT_ERROR(QString("Cannot receive study: Study Instance UID empty."), emit error) return false; } - LOG_AND_EMIT_DEBUG(QString("Starting getStudy"), debug) + LOG_AND_EMIT_DEBUG(QString("Starting getStudy"), emit debug) return d->get(patientID, studyInstanceUID, "", "", ctkDICOMRetrieve::RetrieveStudy); } @@ -1040,11 +1040,11 @@ bool ctkDICOMRetrieve::moveSeries(const QString& studyInstanceUID, if (studyInstanceUID.isEmpty() || seriesInstanceUID.isEmpty()) { - LOG_AND_EMIT_ERROR(QString("Cannot receive series: Study or Series Instance UID empty."), error) + LOG_AND_EMIT_ERROR(QString("Cannot receive series: Study or Series Instance UID empty."), emit error) return false; } - LOG_AND_EMIT_DEBUG(QString("Starting moveSeries"), debug) + LOG_AND_EMIT_DEBUG(QString("Starting moveSeries"), emit debug) return d->move(patientID, studyInstanceUID, seriesInstanceUID, "", ctkDICOMRetrieve::RetrieveSeries); } @@ -1058,11 +1058,11 @@ bool ctkDICOMRetrieve::getSeries(const QString& studyInstanceUID, if (studyInstanceUID.isEmpty() || seriesInstanceUID.isEmpty()) { - LOG_AND_EMIT_ERROR(QString("Cannot receive series: Study or Series Instance UID empty."), error) + LOG_AND_EMIT_ERROR(QString("Cannot receive series: Study or Series Instance UID empty."), emit error) return false; } - LOG_AND_EMIT_DEBUG(QString("Starting getSeries"), debug) + LOG_AND_EMIT_DEBUG(QString("Starting getSeries"), emit debug) return d->get(patientID, studyInstanceUID, seriesInstanceUID, "", ctkDICOMRetrieve::RetrieveSeries); } @@ -1078,11 +1078,11 @@ bool ctkDICOMRetrieve::moveSOPInstance(const QString& studyInstanceUID, seriesInstanceUID.isEmpty() || SOPInstanceUID.isEmpty()) { - LOG_AND_EMIT_ERROR(QString("Cannot receive SOPInstance: Study, Series or SOP Instance UID empty."), error) + LOG_AND_EMIT_ERROR(QString("Cannot receive SOPInstance: Study, Series or SOP Instance UID empty."), emit error) return false; } - LOG_AND_EMIT_DEBUG(QString("Starting moveSOPInstance"), debug) + LOG_AND_EMIT_DEBUG(QString("Starting moveSOPInstance"), emit debug) return d->move(patientID, studyInstanceUID, seriesInstanceUID, SOPInstanceUID, ctkDICOMRetrieve::RetrieveSOPInstance); } @@ -1098,11 +1098,11 @@ bool ctkDICOMRetrieve::getSOPInstance(const QString& studyInstanceUID, seriesInstanceUID.isEmpty() || SOPInstanceUID.isEmpty()) { - LOG_AND_EMIT_ERROR(QString("Cannot receive SOPInstance: Study, Series or SOP Instance UID empty."), error) + LOG_AND_EMIT_ERROR(QString("Cannot receive SOPInstance: Study, Series or SOP Instance UID empty."), emit error) return false; } - LOG_AND_EMIT_DEBUG(QString("Starting getSOPInstance"), debug) + LOG_AND_EMIT_DEBUG(QString("Starting getSOPInstance"), emit debug) return d->get(patientID, studyInstanceUID, seriesInstanceUID, SOPInstanceUID, ctkDICOMRetrieve::RetrieveSOPInstance); } diff --git a/Libs/DICOM/Core/ctkDICOMStudyModel.cpp b/Libs/DICOM/Core/ctkDICOMStudyModel.cpp index 8186c9b9d7..03d0a2724f 100644 --- a/Libs/DICOM/Core/ctkDICOMStudyModel.cpp +++ b/Libs/DICOM/Core/ctkDICOMStudyModel.cpp @@ -580,7 +580,7 @@ void ctkDICOMStudyModelPrivate::updateFilteredSeriesCounts() study.isQueryResult = isQueryResult; } - q->emit dataChanged(topLeft, bottomRight, QVector() << q->FilteredSeriesCountRole << q->IsVisibleRole); + emit q->dataChanged(topLeft, bottomRight, QVector() << q->FilteredSeriesCountRole << q->IsVisibleRole); } //------------------------------------------------------------------------------ diff --git a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp index 8e0c014d5b..4657dbcaf5 100644 --- a/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp +++ b/Libs/DICOM/Core/ctkDICOMThumbnailGeneratorWorker.cpp @@ -131,7 +131,7 @@ void ctkDICOMThumbnailGeneratorWorker::run() jobResponseSet->setSOPInstanceUID(thumbnailGeneratorJob->sopInstanceUID()); jobResponseSet->setJobUID(thumbnailGeneratorJob->jobUID()); - thumbnailGeneratorJob->progressJobDetail(jobResponseSet->toVariant()); + emit thumbnailGeneratorJob->progressJobDetail(jobResponseSet->toVariant()); thumbnailGeneratorJob->setStatus(ctkAbstractJob::JobStatus::Finished); } diff --git a/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp b/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp index 3352e56a35..ee610bb171 100644 --- a/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMBrowser.cpp @@ -863,7 +863,7 @@ void ctkDICOMBrowser::onRepairAction() repairMessageBox->deleteLater(); // Force refresh of table views - d->DICOMDatabase->databaseChanged(); + emit d->DICOMDatabase->databaseChanged(); } //---------------------------------------------------------------------------- diff --git a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp index 5284132aca..19b397f612 100644 --- a/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp +++ b/Libs/DICOM/Widgets/ctkDICOMJobListWidget.cpp @@ -972,7 +972,7 @@ void ctkDICOMJobListWidgetPrivate::updateJobsDetailsWidget() if (count == 0) { - q->patientSelected(patientID, patientName, patientBirthDate); + emit q->patientSelected(patientID, patientName, patientBirthDate); } count++; } diff --git a/Libs/Widgets/ctkMatrixWidget.cpp b/Libs/Widgets/ctkMatrixWidget.cpp index de2070b2a5..0ff04bfd55 100644 --- a/Libs/Widgets/ctkMatrixWidget.cpp +++ b/Libs/Widgets/ctkMatrixWidget.cpp @@ -391,7 +391,7 @@ void ctkMatrixWidget::setDecimals(int decimals) } d->Decimals = qMax(0, decimals); this->update(); - this->emit decimalsChanged(d->Decimals); + emit decimalsChanged(d->Decimals); } // -------------------------------------------------------------------------- @@ -516,7 +516,7 @@ void ctkMatrixWidget::setValues(const QVector & vector) this->blockSignals(blocked); if (modified) { - this->emit matrixChanged(); + emit matrixChanged(); } }