1 /*============================================================================
3 The Medical Imaging Interaction Toolkit (MITK)
5 Copyright (c) German Cancer Research Center (DKFZ)
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
11 ============================================================================*/
13 #include <QmitkDataStorageInspectorProviderBase.h>
14 #include <mitkExceptionMacro.h>
16 #include <usGetModuleContext.h>
17 #include <usModuleContext.h>
18 #include <usPrototypeServiceFactory.h>
20 #include <QmitkStyleManager.h>
24 template<class TInspector>
25 class QmitkDataStorageInspectorProviderBase<TInspector>::Impl
28 Impl(const std::string& id, const std::string& displayName, const std::string& desc, const QByteArray& svg) : m_Ranking(0), m_ID(id), m_DisplayName(displayName), m_Desc(desc), m_SVG(svg)
32 Impl(const Impl &other) = default;
34 void SetRanking(int ranking)
39 int GetRanking() const
44 us::ServiceRegistration<mitk::IDataStorageInspectorProvider> m_Reg;
47 std::string m_DisplayName;
52 template<class TInspector>
53 QmitkDataStorageInspectorProviderBase<TInspector>::QmitkDataStorageInspectorProviderBase(const std::string& id) : QmitkDataStorageInspectorProviderBase(id, id)
57 template<class TInspector>
58 QmitkDataStorageInspectorProviderBase<TInspector>::QmitkDataStorageInspectorProviderBase(const std::string& id, const std::string& displayName, const std::string& desc, const std::string& pathToIconSVG)
62 if (!pathToIconSVG.empty())
64 QFile iconFile(QString::fromStdString(pathToIconSVG));
65 if (iconFile.open(QIODevice::ReadOnly))
66 svg = iconFile.readAll();
69 d.reset(new Impl(id, displayName, desc, svg));
73 template<class TInspector>
74 QmitkDataStorageInspectorProviderBase<TInspector>::~QmitkDataStorageInspectorProviderBase()
79 template<class TInspector>
80 QmitkDataStorageInspectorProviderBase<TInspector>::QmitkDataStorageInspectorProviderBase(const QmitkDataStorageInspectorProviderBase &other) : IDataStorageInspectorProvider(), d(new Impl(*other.d.get()))
84 template<class TInspector>
85 QmitkAbstractDataStorageInspector*
86 QmitkDataStorageInspectorProviderBase<TInspector>::CreateInspector() const
88 return new TInspector;
91 template<class TInspector>
92 typename QmitkDataStorageInspectorProviderBase<TInspector>::InspectorIDType
93 QmitkDataStorageInspectorProviderBase<TInspector>::GetInspectorID() const
98 template<class TInspector>
100 QmitkDataStorageInspectorProviderBase<TInspector>::GetInspectorDisplayName() const
102 return d->m_DisplayName;
105 template<class TInspector>
107 QmitkDataStorageInspectorProviderBase<TInspector>::GetInspectorDescription() const
112 template<class TInspector>
114 QmitkDataStorageInspectorProviderBase<TInspector>::GetInspectorIcon() const
116 return QmitkStyleManager::ThemeIcon(d->m_SVG);
119 template<class TInspector>
120 us::ServiceRegistration<mitk::IDataStorageInspectorProvider>
121 QmitkDataStorageInspectorProviderBase<TInspector>::RegisterService(us::ModuleContext *context)
126 if (context == nullptr)
128 context = us::GetModuleContext();
131 us::ServiceProperties props = this->GetServiceProperties();
132 d->m_Reg = context->RegisterService<IDataStorageInspectorProvider>(this, props);
136 template<class TInspector>
138 QmitkDataStorageInspectorProviderBase<TInspector>::UnregisterService()
142 d->m_Reg.Unregister();
144 catch (const std::exception &)
149 template<class TInspector>
150 us::ServiceProperties
151 QmitkDataStorageInspectorProviderBase<TInspector>::GetServiceProperties() const
153 us::ServiceProperties result;
155 result[IDataStorageInspectorProvider::PROP_INSPECTOR_ID()] = this->d->m_ID;
156 result[us::ServiceConstants::SERVICE_RANKING()] = this->GetRanking();
160 template<class TInspector>
162 QmitkDataStorageInspectorProviderBase<TInspector>::SetRanking(int ranking) { d->SetRanking(ranking); }
164 template<class TInspector>
166 QmitkDataStorageInspectorProviderBase<TInspector>::GetRanking() const { return d->GetRanking(); }