CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkPluginTracker.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  Library: CTK
4 
5  Copyright (c) German Cancer Research Center,
6  Division of Medical and Biological Informatics
7 
8  Licensed under the Apache License, Version 2.0 (the "License");
9  you may not use this file except in compliance with the License.
10  You may obtain a copy of the License at
11 
12  http://www.apache.org/licenses/LICENSE-2.0
13 
14  Unless required by applicable law or agreed to in writing, software
15  distributed under the License is distributed on an "AS IS" BASIS,
16  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  See the License for the specific language governing permissions and
18  limitations under the License.
19 
20 =============================================================================*/
21 
22 
23 #ifndef CTKPLUGINTRACKER_H
24 #define CTKPLUGINTRACKER_H
25 
26 #include <QScopedPointer>
27 
28 #include "ctkPluginFrameworkExport.h"
29 
30 #include "ctkPlugin.h"
32 
33 template<class T> class ctkTrackedPlugin;
34 template<class T> class ctkPluginTrackerPrivate;
35 
64 template<class T = QSharedPointer<ctkPlugin> >
66 {
67 public:
68 
70 
94  ctkPluginTracker(ctkPluginContext* context, ctkPlugin::States stateMask,
95  ctkPluginTrackerCustomizer<T>* customizer = 0);
96 
109  virtual void open();
110 
122  virtual void close();
123 
131 
141  virtual T getObject(QSharedPointer<ctkPlugin> plugin) const;
142 
153  virtual void remove(QSharedPointer<ctkPlugin> plugin);
154 
161  virtual int size() const;
162 
182  virtual int getTrackingCount() const;
183 
193  virtual QMap<QSharedPointer<ctkPlugin>, T> getTracked() const;
194 
201  virtual bool isEmpty() const;
202 
203 protected:
204 
229  T addingPlugin(QSharedPointer<ctkPlugin> plugin, const ctkPluginEvent& event);
230 
249  void modifiedPlugin(QSharedPointer<ctkPlugin> plugin, const ctkPluginEvent& event, T object);
250 
269  void removedPlugin(QSharedPointer<ctkPlugin> plugin, const ctkPluginEvent& event, T object);
270 
271 private:
272 
277 
278  friend class ctkTrackedPlugin<T>;
279  friend class ctkPluginTrackerPrivate<T>;
280 
281  inline PluginTrackerPrivate* d_func()
282  {
283  return reinterpret_cast<PluginTrackerPrivate*>(qGetPtrHelper(d_ptr));
284  }
285 
286  inline const PluginTrackerPrivate* d_func() const
287  {
288  return reinterpret_cast<const PluginTrackerPrivate*>(qGetPtrHelper(d_ptr));
289  }
290 
291  const QScopedPointer<PluginTrackerPrivate> d_ptr;
292 };
293 
294 
295 #include "ctkPluginTracker.tpp"
296 
297 #endif // CTKPLUGINTRACKER_H
virtual QMap< QSharedPointer< ctkPlugin >, T > getTracked() const
void modifiedPlugin(QSharedPointer< ctkPlugin > plugin, const ctkPluginEvent &event, T object)
virtual bool isEmpty() const
virtual void open()
virtual int getTrackingCount() const
void removedPlugin(QSharedPointer< ctkPlugin > plugin, const ctkPluginEvent &event, T object)
virtual QList< QSharedPointer< ctkPlugin > > getPlugins() const
virtual int size() const
virtual T getObject(QSharedPointer< ctkPlugin > plugin) const
virtual void close()
T addingPlugin(QSharedPointer< ctkPlugin > plugin, const ctkPluginEvent &event)
virtual void remove(QSharedPointer< ctkPlugin > plugin)
ctkPluginTracker(ctkPluginContext *context, ctkPlugin::States stateMask, ctkPluginTrackerCustomizer< T > *customizer=0)