Selaa lähdekoodia

Shared/weak pointers removed in favour of explicit memory handling

Miklos Espak 11 vuotta sitten
vanhempi
commit
dcc489984e
38 muutettua tiedostoa jossa 190 lisäystä ja 323 poistoa
  1. 3 3
      Applications/ctkXNATBrowser/ctkXNATBrowserMainWindow.cpp
  2. 1 1
      Applications/ctkXnatTreeBrowser/ctkXnatTreeBrowserMainWindow.cpp
  3. 21 2
      Libs/XNAT/Core/Testing/ctkXnatConnectionTest.cpp
  4. 2 0
      Libs/XNAT/Core/Testing/ctkXnatConnectionTest.h
  5. 29 55
      Libs/XNAT/Core/ctkXnatConnection.cpp
  6. 12 13
      Libs/XNAT/Core/ctkXnatConnection.h
  7. 1 1
      Libs/XNAT/Core/ctkXnatConnectionFactory.cpp
  8. 1 9
      Libs/XNAT/Core/ctkXnatExperiment.cpp
  9. 1 6
      Libs/XNAT/Core/ctkXnatExperiment.h
  10. 0 7
      Libs/XNAT/Core/ctkXnatFile.cpp
  11. 1 5
      Libs/XNAT/Core/ctkXnatFile.h
  12. 45 17
      Libs/XNAT/Core/ctkXnatObject.cpp
  13. 23 30
      Libs/XNAT/Core/ctkXnatObject.h
  14. 3 5
      Libs/XNAT/Core/ctkXnatObjectPrivate.h
  15. 1 9
      Libs/XNAT/Core/ctkXnatProject.cpp
  16. 1 10
      Libs/XNAT/Core/ctkXnatProject.h
  17. 1 10
      Libs/XNAT/Core/ctkXnatReconstruction.cpp
  18. 1 5
      Libs/XNAT/Core/ctkXnatReconstruction.h
  19. 1 10
      Libs/XNAT/Core/ctkXnatReconstructionFolder.cpp
  20. 2 5
      Libs/XNAT/Core/ctkXnatReconstructionFolder.h
  21. 1 10
      Libs/XNAT/Core/ctkXnatReconstructionResource.cpp
  22. 1 5
      Libs/XNAT/Core/ctkXnatReconstructionResource.h
  23. 1 9
      Libs/XNAT/Core/ctkXnatScan.cpp
  24. 1 5
      Libs/XNAT/Core/ctkXnatScan.h
  25. 1 10
      Libs/XNAT/Core/ctkXnatScanFolder.cpp
  26. 1 5
      Libs/XNAT/Core/ctkXnatScanFolder.h
  27. 1 10
      Libs/XNAT/Core/ctkXnatScanResource.cpp
  28. 1 5
      Libs/XNAT/Core/ctkXnatScanResource.h
  29. 1 10
      Libs/XNAT/Core/ctkXnatServer.cpp
  30. 2 6
      Libs/XNAT/Core/ctkXnatServer.h
  31. 2 11
      Libs/XNAT/Core/ctkXnatSubject.cpp
  32. 3 9
      Libs/XNAT/Core/ctkXnatSubject.h
  33. 3 3
      Libs/XNAT/Widgets/ctkXnatProjectListModel.cpp
  34. 2 3
      Libs/XNAT/Widgets/ctkXnatProjectListModel.h
  35. 2 2
      Libs/XNAT/Widgets/ctkXnatTreeItem.cpp
  36. 3 3
      Libs/XNAT/Widgets/ctkXnatTreeItem.h
  37. 12 12
      Libs/XNAT/Widgets/ctkXnatTreeModel.cpp
  38. 2 2
      Libs/XNAT/Widgets/ctkXnatTreeModel.h

+ 3 - 3
Applications/ctkXNATBrowser/ctkXNATBrowserMainWindow.cpp

@@ -70,7 +70,7 @@ void ctkXNATBrowserMainWindow::loginButtonPushed()
     ui->loginButton->setText("Login");
     ui->loginLabel->setText("Disconnected");
 
-    m_ProjectsModel->setRootObject(ctkXnatObject::Pointer());
+    m_ProjectsModel->setRootObject(0);
     ui->projectsList->reset();
   }
   else
@@ -84,7 +84,7 @@ void ctkXNATBrowserMainWindow::loginButtonPushed()
         ui->loginButton->setText("Logout");
         ui->loginLabel->setText(QString("Connected: %1").arg(m_Connection->url()));
 
-        ctkXnatServer::Pointer server = m_Connection->server();
+        ctkXnatServer* server = m_Connection->server();
         //xnatConnection->fetch(server);
         server->fetch();
         m_ProjectsModel->setRootObject(server);
@@ -100,7 +100,7 @@ void ctkXNATBrowserMainWindow::projectSelected(const QModelIndex& index)
   QVariant variant = m_ProjectsModel->data(index, Qt::UserRole);
   if (variant.isValid())
   {
-    ctkXnatObject::Pointer project = variant.value<ctkXnatObject::Pointer>();
+    ctkXnatObject* project = variant.value<ctkXnatObject*>();
     qDebug() << "selected project id:" << project->id();
     project->fetch();
     m_SubjectsModel->setRootObject(project);

+ 1 - 1
Applications/ctkXnatTreeBrowser/ctkXnatTreeBrowserMainWindow.cpp

@@ -78,7 +78,7 @@ void ctkXnatTreeBrowserMainWindow::loginButtonPushed()
         ui->loginButton->setText("Logout");
         ui->loginLabel->setText(QString("Connected: %1").arg(m_Connection->url()));
 
-        ctkXnatServer::Pointer server = m_Connection->server();
+        ctkXnatServer* server = m_Connection->server();
         m_TreeModel->addServer(server);
         ui->treeView->reset();
       }

+ 21 - 2
Libs/XNAT/Core/Testing/ctkXnatConnectionTest.cpp

@@ -87,14 +87,33 @@ void ctkXnatConnectionTestCase::testProjectList()
 {
   Q_D(ctkXnatConnectionTestCase);
 
-  ctkXnatServer::Pointer server = d->Connection->server();
+  ctkXnatServer* server = d->Connection->server();
   server->fetch();
 
-  QList<ctkXnatObject::Pointer> projects = server->children();
+  QList<ctkXnatObject*> projects = server->children();
 
   QVERIFY(projects.size() > 0);
 }
 
+void ctkXnatConnectionTestCase::testCreateProject()
+{
+  Q_D(ctkXnatConnectionTestCase);
+
+  ctkXnatServer* server = d->Connection->server();
+
+  ctkXnatProject* project = new ctkXnatProject();
+  project->setId("CTK_432");
+  project->setName("CTK 432");
+  project->setDescription("CTK test project");
+  server->addChild(project);
+
+//  project->save();
+
+//  bool saved = project->exists();
+
+//  QVERIFY(projects.size() > 0);
+}
+
 
 // --------------------------------------------------------------------------
 int ctkXnatConnectionTest(int argc, char* argv[])

+ 2 - 0
Libs/XNAT/Core/Testing/ctkXnatConnectionTest.h

@@ -44,6 +44,8 @@ private slots:
 
   void testProjectList();
 
+  void testCreateProject();
+
 private:
   QScopedPointer<ctkXnatConnectionTestCasePrivate> d_ptr;
 

+ 29 - 55
Libs/XNAT/Core/ctkXnatConnection.cpp

@@ -53,7 +53,7 @@ public:
   qXnatAPI* xnat;
   qXnatAPI::RawHeaders rawHeaders;
 
-  QSharedPointer<ctkXnatServer> server;
+  ctkXnatServer* server;
 };
 
 // ctkXnatConnection class
@@ -70,13 +70,14 @@ ctkXnatConnection::ctkXnatConnection()
   d->rawHeaders["User-Agent"] = "Qt";
   d->xnat->setDefaultRawHeaders(d->rawHeaders);
 
-  d->server = ctkXnatServer::Create(this);
+  d->server = new ctkXnatServer(this);
   createConnections();
 }
 
 ctkXnatConnection::~ctkXnatConnection()
 {
   Q_D(ctkXnatConnection);
+  delete d->server;
   delete d->xnat;
 }
 
@@ -153,13 +154,13 @@ void ctkXnatConnection::setPassword(const QString& password)
   d->xnat->setDefaultRawHeaders(d->rawHeaders);
 }
 
-ctkXnatServer::Pointer ctkXnatConnection::server() const
+ctkXnatServer* ctkXnatConnection::server() const
 {
   Q_D(const ctkXnatConnection);
   return d->server;
 }
 
-void ctkXnatConnection::fetch(const ctkXnatServer::Pointer& server)
+void ctkXnatConnection::fetch(ctkXnatServer* server)
 {
   Q_D(ctkXnatConnection);
 
@@ -172,15 +173,13 @@ void ctkXnatConnection::fetch(const ctkXnatServer::Pointer& server)
   foreach (ctkXnatProject* project, projects)
   {
     project->setUri(projectsUri + "/" + project->id());
-    ctkXnatObject::Pointer ptr(project);
-    ptr->d_func()->selfPtr = ptr;
-    server->addChild(ptr);
+    server->addChild(project);
   }
 
   delete restResult;
 }
 
-void ctkXnatConnection::fetch(const ctkXnatProject::Pointer& project)
+void ctkXnatConnection::fetch(ctkXnatProject* project)
 {
   Q_D(ctkXnatConnection);
 
@@ -198,15 +197,13 @@ void ctkXnatConnection::fetch(const ctkXnatProject::Pointer& project)
     }
     subject->setUri(subjectsUri + "/" + subject->id());
 
-    ctkXnatObject::Pointer ptr(subject);
-    ptr->d_func()->selfPtr = ptr;
-    project->addChild(ptr);
+    project->addChild(subject);
   }
 
   delete restResult;
 }
 
-void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatSubject>& subject)
+void ctkXnatConnection::fetch(ctkXnatSubject* subject)
 {
   Q_D(ctkXnatConnection);
 
@@ -225,15 +222,13 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatSubject>& subject)
     }
     experiment->setUri(experimentsUri + "/" + experiment->id());
 
-    ctkXnatObject::Pointer ptr(experiment);
-    ptr->d_func()->selfPtr = ptr;
-    subject->addChild(ptr);
+    subject->addChild(experiment);
   }
 
   delete restResult;
 }
 
-void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatExperiment>& experiment)
+void ctkXnatConnection::fetch(ctkXnatExperiment* experiment)
 {
   Q_D(ctkXnatConnection);
   
@@ -245,12 +240,9 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatExperiment>& experimen
   
   if (scans.size() > 0)
   {
-    ctkXnatObject::Pointer ptr = ctkXnatScanFolder::Create();
-
-    ptr->setUri(scansUri);
-
-    ptr->d_func()->selfPtr = ptr;
-    experiment->addChild(ptr);
+    ctkXnatScanFolder* scanFolder = new ctkXnatScanFolder();
+    scanFolder->setUri(scansUri);
+    experiment->addChild(scanFolder);
   }
   
   delete restResult;
@@ -263,18 +255,15 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatExperiment>& experimen
 
   if (reconstructions.size() > 0)
   {
-    ctkXnatObject::Pointer ptr = ctkXnatReconstructionFolder::Create();
-
-    ptr->setUri(reconstructionsUri);
-
-    ptr->d_func()->selfPtr = ptr;
-    experiment->addChild(ptr);
+    ctkXnatReconstructionFolder* reconstructionFolder = new ctkXnatReconstructionFolder();
+    reconstructionFolder->setUri(reconstructionsUri);
+    experiment->addChild(reconstructionFolder);
   }
 
   delete restResult;
 }
 
-void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScanFolder>& scanFolder)
+void ctkXnatConnection::fetch(ctkXnatScanFolder* scanFolder)
 {
   Q_D(ctkXnatConnection);
   
@@ -287,17 +276,14 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScanFolder>& scanFolde
   foreach (ctkXnatScan* scan, scans)
   {
     scan->setUri(scansUri + "/" + scan->id());
-
-    ctkXnatObject::Pointer ptr(scan);
-    ptr->d_func()->selfPtr = ptr;
-    scanFolder->addChild(ptr);
+    scanFolder->addChild(scan);
   }
   
   delete restResult;
   
 }
 
-void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScan>& scan)
+void ctkXnatConnection::fetch(ctkXnatScan* scan)
 {
   Q_D(ctkXnatConnection);
   
@@ -316,14 +302,11 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScan>& scan)
     }
     
     scanResource->setUri(scanResourcesUri + "/" + label);
-
-    ctkXnatObject::Pointer ptr(scanResource);
-    ptr->d_func()->selfPtr = ptr;
-    scan->addChild(ptr);
+    scan->addChild(scanResource);
   }
 }
 
-void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScanResource>& scanResource)
+void ctkXnatConnection::fetch(ctkXnatScanResource* scanResource)
 {
   Q_D(ctkXnatConnection);
   
@@ -348,14 +331,11 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScanResource>& scanRes
     }
 
     file->setUri(scanResourceFilesUri + "/" + label);
-
-    ctkXnatObject::Pointer ptr(file);
-    ptr->d_func()->selfPtr = ptr;
-    scanResource->addChild(ptr);
+    scanResource->addChild(file);
   }
 }
 
-void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatReconstructionFolder>& reconstructionFolder)
+void ctkXnatConnection::fetch(ctkXnatReconstructionFolder* reconstructionFolder)
 {
   Q_D(ctkXnatConnection);
 
@@ -369,16 +349,14 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatReconstructionFolder>&
   {
     reconstruction->setUri(reconstructionsUri + "/" + reconstruction->id());
 
-    ctkXnatObject::Pointer ptr(reconstruction);
-    ptr->d_func()->selfPtr = ptr;
-    reconstructionFolder->addChild(ptr);
+    reconstructionFolder->addChild(reconstruction);
   }
 
   delete restResult;
 
 }
 
-void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatReconstruction>& reconstruction)
+void ctkXnatConnection::fetch(ctkXnatReconstruction* reconstruction)
 {
   Q_D(ctkXnatConnection);
 
@@ -398,13 +376,11 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatReconstruction>& recon
 
     reconstructionResource->setUri(reconstructionResourcesUri + "/" + label);
 
-    ctkXnatObject::Pointer ptr(reconstructionResource);
-    ptr->d_func()->selfPtr = ptr;
-    reconstruction->addChild(ptr);
+    reconstruction->addChild(reconstructionResource);
   }
 }
 
-void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatReconstructionResource>& reconstructionResource)
+void ctkXnatConnection::fetch(ctkXnatReconstructionResource* reconstructionResource)
 {
   Q_D(ctkXnatConnection);
 
@@ -430,9 +406,7 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatReconstructionResource
 
     file->setUri(reconstructionResourceFilesUri + "/" + label);
 
-    ctkXnatObject::Pointer ptr(file);
-    ptr->d_func()->selfPtr = ptr;
-    reconstructionResource->addChild(ptr);
+    reconstructionResource->addChild(file);
   }
 }
 

+ 12 - 13
Libs/XNAT/Core/ctkXnatConnection.h

@@ -25,7 +25,6 @@
 #include "ctkXNATCoreExport.h"
 
 #include <QScopedPointer>
-#include <QSharedPointer>
 #include <QString>
 
 #include <QObject>
@@ -70,18 +69,18 @@ public:
   QString password() const;
   void setPassword(const QString& password);
 
-  QSharedPointer<ctkXnatServer> server() const;
-
-  void fetch(const QSharedPointer<ctkXnatServer>& server);
-  void fetch(const QSharedPointer<ctkXnatProject>& project);
-  void fetch(const QSharedPointer<ctkXnatSubject>& subject);
-  void fetch(const QSharedPointer<ctkXnatExperiment>& experiment);
-  void fetch(const QSharedPointer<ctkXnatScanFolder>& scanFolder);
-  void fetch(const QSharedPointer<ctkXnatScan>& scan);
-  void fetch(const QSharedPointer<ctkXnatScanResource>& scanResource);
-  void fetch(const QSharedPointer<ctkXnatReconstructionFolder>& reconstructionFolder);
-  void fetch(const QSharedPointer<ctkXnatReconstruction>& reconstruction);
-  void fetch(const QSharedPointer<ctkXnatReconstructionResource>& reconstructionResource);
+  ctkXnatServer* server() const;
+
+  void fetch(ctkXnatServer* server);
+  void fetch(ctkXnatProject* project);
+  void fetch(ctkXnatSubject* subject);
+  void fetch(ctkXnatExperiment* experiment);
+  void fetch(ctkXnatScanFolder* scanFolder);
+  void fetch(ctkXnatScan* scan);
+  void fetch(ctkXnatScanResource* scanResource);
+  void fetch(ctkXnatReconstructionFolder* reconstructionFolder);
+  void fetch(ctkXnatReconstruction* reconstruction);
+  void fetch(ctkXnatReconstructionResource* reconstructionResource);
 
   void create(ctkXnatObject* object);
 

+ 1 - 1
Libs/XNAT/Core/ctkXnatConnectionFactory.cpp

@@ -55,7 +55,7 @@ ctkXnatConnection* ctkXnatConnectionFactory::makeConnection(const QString& url,
 void ctkXnatConnectionFactory::testConnection(ctkXnatConnection* connection)
 {
   // test connection by retrieving project names from XNAT
-  ctkXnatServer::Pointer server = connection->server();
+  ctkXnatServer* server = connection->server();
 
   // TODO E.g. get version
 }

+ 1 - 9
Libs/XNAT/Core/ctkXnatExperiment.cpp

@@ -47,13 +47,6 @@ ctkXnatExperiment::ctkXnatExperiment(const QString& schemaType)
 {
 }
 
-ctkXnatExperiment::Pointer ctkXnatExperiment::Create()
-{
-  Pointer ptr(new ctkXnatExperiment());
-  ptr->d_func()->selfPtr = ptr;
-  return ptr;
-}
-
 ctkXnatExperiment::~ctkXnatExperiment()
 {
 }
@@ -78,6 +71,5 @@ void ctkXnatExperiment::reset()
 void ctkXnatExperiment::fetchImpl()
 {
   Q_D(ctkXnatExperiment);
-  ctkXnatObject::Pointer self = d->selfPtr;
-  this->connection()->fetch(self.staticCast<ctkXnatExperiment>());
+  this->connection()->fetch(this);
 }

+ 1 - 6
Libs/XNAT/Core/ctkXnatExperiment.h

@@ -34,10 +34,7 @@ class CTK_XNAT_CORE_EXPORT ctkXnatExperiment : public ctkXnatObject
   
 public:
   
-  typedef QSharedPointer<ctkXnatExperiment> Pointer;
-  typedef QWeakPointer<ctkXnatExperiment> WeakPointer;
-  
-  static Pointer Create();
+  explicit ctkXnatExperiment(const QString& schemaType = "xnat:experimentData");
   virtual ~ctkXnatExperiment();
   
 //  const QString& uri() const;
@@ -49,8 +46,6 @@ private:
   
   friend class qRestResult;
 
-  explicit ctkXnatExperiment(const QString& schemaType = "xnat:experimentData");
-
   virtual void fetchImpl();
   
   Q_DECLARE_PRIVATE(ctkXnatExperiment);

+ 0 - 7
Libs/XNAT/Core/ctkXnatFile.cpp

@@ -47,13 +47,6 @@ ctkXnatFile::ctkXnatFile()
 {
 }
 
-ctkXnatFile::Pointer ctkXnatFile::Create()
-{
-  Pointer ptr(new ctkXnatFile());
-  ptr->d_func()->selfPtr = ptr;
-  return ptr;
-}
-
 ctkXnatFile::~ctkXnatFile()
 {
 }

+ 1 - 5
Libs/XNAT/Core/ctkXnatFile.h

@@ -34,10 +34,7 @@ class CTK_XNAT_CORE_EXPORT ctkXnatFile : public ctkXnatObject
 
 public:
 
-  typedef QSharedPointer<ctkXnatFile> Pointer;
-  typedef QWeakPointer<ctkXnatFile> WeakPointer;
-  
-  static Pointer Create();
+  explicit ctkXnatFile();
   virtual ~ctkXnatFile();
   
 //  const QString& uri() const;
@@ -51,7 +48,6 @@ public:
 private:
   
   friend class qRestResult;
-  explicit ctkXnatFile();
   virtual void fetchImpl();
   
   Q_DECLARE_PRIVATE(ctkXnatFile);

+ 45 - 17
Libs/XNAT/Core/ctkXnatObject.cpp

@@ -46,6 +46,11 @@ ctkXnatObject::ctkXnatObject(ctkXnatObjectPrivate& dd, const QString& schemaType
 
 ctkXnatObject::~ctkXnatObject()
 {
+  Q_D(ctkXnatObject);
+  foreach (ctkXnatObject* child, d->children)
+  {
+    delete child;
+  }
 }
 
 QString ctkXnatObject::id() const
@@ -79,11 +84,21 @@ QString ctkXnatObject::name() const
   return property("name");
 }
 
+void ctkXnatObject::setName(const QString& name)
+{
+  setProperty("name", name);
+}
+
 QString ctkXnatObject::description() const
 {
   return property("description");
 }
 
+void ctkXnatObject::setDescription(const QString& description)
+{
+  setProperty("description", description);
+}
+
 QString ctkXnatObject::property(const QString& name) const
 {
   Q_D(const ctkXnatObject);
@@ -118,26 +133,49 @@ QList<QString> ctkXnatObject::properties()
   return value;
 }
 
-ctkXnatObject::Pointer ctkXnatObject::parent() const
+ctkXnatObject* ctkXnatObject::parent() const
 {
   Q_D(const ctkXnatObject);
   return d->parent;
 }
 
-QList<ctkXnatObject::Pointer> ctkXnatObject::children() const
+void ctkXnatObject::setParent(ctkXnatObject* parent)
+{
+  Q_D(ctkXnatObject);
+  if (d->parent != parent)
+  {
+    if (d->parent)
+    {
+      d->parent->remove(this);
+    }
+    if (parent)
+    {
+      parent->addChild(this);
+    }
+    d->parent = parent;
+  }
+}
+
+QList<ctkXnatObject*> ctkXnatObject::children() const
 {
   Q_D(const ctkXnatObject);
   return d->children;
 }
 
-void ctkXnatObject::addChild(ctkXnatObject::Pointer& child)
+void ctkXnatObject::addChild(ctkXnatObject* child)
 {
   Q_D(ctkXnatObject);
-  d->children.push_back(child);
-  child->d_func()->parent = d->selfPtr;
+  if (child->parent() != this)
+  {
+    child->setParent(this);
+  }
+  if (!d->children.contains(child))
+  {
+    d->children.push_back(child);
+  }
 }
 
-void ctkXnatObject::removeChild(ctkXnatObject::Pointer& child)
+void ctkXnatObject::remove(ctkXnatObject* child)
 {
   Q_D(ctkXnatObject);
   if (!d->children.removeOne(child))
@@ -175,7 +213,7 @@ ctkXnatConnection* ctkXnatObject::connection() const
   const ctkXnatObject* xnatObject = this;
   const ctkXnatServer* server;
   do {
-    xnatObject = xnatObject->parent().data();
+    xnatObject = xnatObject->parent();
     server = dynamic_cast<const ctkXnatServer*>(xnatObject);
   }
   while (xnatObject && !server);
@@ -183,16 +221,6 @@ ctkXnatConnection* ctkXnatObject::connection() const
   return server ? xnatObject->connection() : 0;
 }
 
-void ctkXnatObject::create()
-{
-  this->connection()->create(this);
-}
-
-void ctkXnatObject::remove()
-{
-  this->connection()->remove(this);
-}
-
 void ctkXnatObject::download(const QString& /*zipFilename*/)
 {
 }

+ 23 - 30
Libs/XNAT/Core/ctkXnatObject.h

@@ -27,7 +27,6 @@
 #include <QList>
 #include <QObject>
 #include <QString>
-#include <QSharedPointer>
 #include <QMetaType>
 
 class ctkXnatConnection;
@@ -42,28 +41,38 @@ class CTK_XNAT_CORE_EXPORT ctkXnatObject
 
 public:
 
-  typedef QSharedPointer<ctkXnatObject> Pointer;
-  typedef QWeakPointer<ctkXnatObject> WeakPointer;
-
   /// Destructs the ctkXnatObject.
   virtual ~ctkXnatObject();
 
+  /// Gets the XML Schema type of the object.
+  QString schemaType() const;
+
   /// Gets the ID of the object.
   QString id() const;
 
+  /// Sets the ID of the object.
+  void setId(const QString& id);
+
   /// Gets the resource URI of the object that can be used to access it through
   /// the REST API.
   QString uri() const;
 
-  /// Gets the XML Schema type of the object.
-  QString schemaType() const;
+  /// Sets the resource URI of the object that can be used to access it through
+  /// the REST API.
+  void setUri(const QString& uri);
 
   /// Gets the name of the object.
   QString name() const;
 
+  /// Sets the name of the object.
+  void setName(const QString& name);
+
   /// Gets the description of the object.
   QString description() const;
 
+  /// Sets the description of the object.
+  void setDescription(const QString& description);
+
   /// Gets the value of the property with the given name.
   QString property(const QString& name) const;
 
@@ -76,16 +85,19 @@ public:
   /// Gets the parent of the object in the data hierarchy. The returned pointer
   /// is 0 for the ctkXnatServer objects and different for any other type of
   /// XNAT objects.
-  ctkXnatObject::Pointer parent() const;
+  ctkXnatObject* parent() const;
+
+  /// Sets the parent of the object in the data hierarchy.
+  void setParent(ctkXnatObject* parent);
 
   /// Gets the children of the object.
-  QList<ctkXnatObject::Pointer> children() const;
+  QList<ctkXnatObject*> children() const;
 
   /// Adds an object to the children of the current one.
-  void addChild(Pointer& child);
+  void addChild(ctkXnatObject* child);
 
   /// Removes the object from the children of the current object.
-  void removeChild(Pointer& child);
+  void remove(ctkXnatObject* child);
 
   /// Tells if the children and the properties of the objects have been fetched.
   bool isFetched() const;
@@ -97,12 +109,6 @@ public:
   /// Fetches the children and the properties of the object.
   void fetch();
 
-  /// Creates the object from the XNAT server.
-  virtual void create();
-
-  /// Removes the object from the XNAT server.
-  virtual void remove();
-
   virtual void download(const QString&);
   virtual void upload(const QString&);
 
@@ -118,19 +124,6 @@ protected:
   /// that stores the current object.
   virtual ctkXnatConnection* connection() const;
 
-  /// Sets the ID of the object.
-  void setId(const QString& id);
-
-  /// Sets the resource URI of the object that can be used to access it through
-  /// the REST API.
-  void setUri(const QString& uri);
-
-  /// Sets the name of the object.
-  void setName(const QString& name);
-
-  /// Sets the description of the object.
-  void setDescription(const QString& description);
-
   /// The private implementation part of the object.
   const QScopedPointer<ctkXnatObjectPrivate> d_ptr;
 
@@ -145,6 +138,6 @@ private:
   Q_DISABLE_COPY(ctkXnatObject)
 };
 
-Q_DECLARE_METATYPE(ctkXnatObject::Pointer)
+Q_DECLARE_METATYPE(ctkXnatObject*)
 
 #endif

+ 3 - 5
Libs/XNAT/Core/ctkXnatObjectPrivate.h

@@ -23,7 +23,7 @@
 #define CTKXNATOBJECTPRIVATE_H
 
 #include <QMap>
-#include <QSharedPointer>
+#include <QString>
 
 class ctkXnatObject;
 class ctkXnatConnection;
@@ -40,8 +40,6 @@ public:
   explicit ctkXnatObjectPrivate();
   virtual ~ctkXnatObjectPrivate();
 
-  QWeakPointer<ctkXnatObject> selfPtr;
-
 private:
 
   friend class ctkXnatObject;
@@ -50,11 +48,11 @@ private:
 
   QMap<QString,QString> properties;
 
-  QList<QSharedPointer<ctkXnatObject> > children;
+  QList<ctkXnatObject*> children;
 
   bool fetched;
 
-  QWeakPointer<ctkXnatObject> parent;
+  ctkXnatObject* parent;
 };
 
 #endif // CTKXNATOBJECTPRIVATE_H

+ 1 - 9
Libs/XNAT/Core/ctkXnatProject.cpp

@@ -52,13 +52,6 @@ ctkXnatProject::ctkXnatProject(const QString& schemaType)
 {
 }
 
-ctkXnatProject::Pointer ctkXnatProject::Create()
-{
-  Pointer project(new ctkXnatProject());
-  project->d_func()->selfPtr = project;
-  return project;
-}
-
 ctkXnatProject::~ctkXnatProject()
 {
 }
@@ -119,6 +112,5 @@ void ctkXnatProject::reset()
 void ctkXnatProject::fetchImpl()
 {
   Q_D(ctkXnatProject);
-  ctkXnatObject::Pointer self = d->selfPtr;
-  this->connection()->fetch(self.staticCast<ctkXnatProject>());
+  this->connection()->fetch(this);
 }

+ 1 - 10
Libs/XNAT/Core/ctkXnatProject.h

@@ -34,11 +34,7 @@ class CTK_XNAT_CORE_EXPORT ctkXnatProject : public ctkXnatObject
 
 public:
 
-  typedef QSharedPointer<ctkXnatProject> Pointer;
-  typedef QWeakPointer<ctkXnatProject> WeakPointer;
-
-  static Pointer Create();
-
+  explicit ctkXnatProject(const QString& schemaType = "xnat:projectData");
   virtual ~ctkXnatProject();
 
   const QString& secondaryId() const;
@@ -50,17 +46,12 @@ public:
   const QString& piLastName() const;
   void setPiLastName(const QString& piLastName);
 
-//  const QString& uri() const;
-//  void setUri(const QString& uri);
-
   void reset();
   
 private:
 
   friend class qRestResult;
 
-  explicit ctkXnatProject(const QString& schemaType = "xnat:projectData");
-
   virtual void fetchImpl();
 
   Q_DECLARE_PRIVATE(ctkXnatProject)

+ 1 - 10
Libs/XNAT/Core/ctkXnatReconstruction.cpp

@@ -47,13 +47,6 @@ ctkXnatReconstruction::ctkXnatReconstruction(const QString& schemaType)
 {
 }
 
-ctkXnatReconstruction::Pointer ctkXnatReconstruction::Create()
-{
-  Pointer ptr(new ctkXnatReconstruction());
-  ptr->d_func()->selfPtr = ptr;
-  return ptr;
-}
-
 ctkXnatReconstruction::~ctkXnatReconstruction()
 {
 }
@@ -77,7 +70,5 @@ void ctkXnatReconstruction::reset()
 
 void ctkXnatReconstruction::fetchImpl()
 {
-  Q_D(ctkXnatReconstruction);
-  ctkXnatObject::Pointer self = d->selfPtr;
-  this->connection()->fetch(self.staticCast<ctkXnatReconstruction>());
+  this->connection()->fetch(this);
 }

+ 1 - 5
Libs/XNAT/Core/ctkXnatReconstruction.h

@@ -34,10 +34,7 @@ class CTK_XNAT_CORE_EXPORT ctkXnatReconstruction : public ctkXnatObject
 
 public:
 
-  typedef QSharedPointer<ctkXnatReconstruction> Pointer;
-  typedef QWeakPointer<ctkXnatReconstruction> WeakPointer;
-  
-  static Pointer Create();
+  explicit ctkXnatReconstruction(const QString& schemaType = "xnat:reconstructedImageData");
   virtual ~ctkXnatReconstruction();
   
   const QString& uri() const;
@@ -48,7 +45,6 @@ public:
 private:
   
   friend class qRestResult;
-  explicit ctkXnatReconstruction(const QString& schemaType = "xnat:reconstructedImageData");
   virtual void fetchImpl();
   
   Q_DECLARE_PRIVATE(ctkXnatReconstruction);

+ 1 - 10
Libs/XNAT/Core/ctkXnatReconstructionFolder.cpp

@@ -49,13 +49,6 @@ ctkXnatReconstructionFolder::ctkXnatReconstructionFolder()
   this->setProperty("ID", "Reconstructions");
 }
 
-ctkXnatReconstructionFolder::Pointer ctkXnatReconstructionFolder::Create()
-{
-  Pointer ptr(new ctkXnatReconstructionFolder());
-  ptr->d_func()->selfPtr = ptr;
-  return ptr;
-}
-
 ctkXnatReconstructionFolder::~ctkXnatReconstructionFolder()
 {
 }
@@ -79,7 +72,5 @@ void ctkXnatReconstructionFolder::reset()
 
 void ctkXnatReconstructionFolder::fetchImpl()
 {
-  Q_D(ctkXnatReconstructionFolder);
-  ctkXnatObject::Pointer self = d->selfPtr;
-  this->connection()->fetch(self.staticCast<ctkXnatReconstructionFolder>());
+  this->connection()->fetch(this);
 }

+ 2 - 5
Libs/XNAT/Core/ctkXnatReconstructionFolder.h

@@ -34,10 +34,7 @@ class CTK_XNAT_CORE_EXPORT ctkXnatReconstructionFolder : public ctkXnatObject
 
 public:
   
-  typedef QSharedPointer<ctkXnatReconstructionFolder> Pointer;
-  typedef QWeakPointer<ctkXnatReconstructionFolder> WeakPointer;
-  
-  static Pointer Create();
+  explicit ctkXnatReconstructionFolder();
   virtual ~ctkXnatReconstructionFolder();
   
 //  const QString& uri() const;
@@ -48,7 +45,7 @@ public:
 private:
   
   friend class qRestResult;
-  explicit ctkXnatReconstructionFolder();
+
   virtual void fetchImpl();
   
   Q_DECLARE_PRIVATE(ctkXnatReconstructionFolder);

+ 1 - 10
Libs/XNAT/Core/ctkXnatReconstructionResource.cpp

@@ -47,13 +47,6 @@ ctkXnatReconstructionResource::ctkXnatReconstructionResource()
 {
 }
 
-ctkXnatReconstructionResource::Pointer ctkXnatReconstructionResource::Create()
-{
-  Pointer ptr(new ctkXnatReconstructionResource());
-  ptr->d_func()->selfPtr = ptr;
-  return ptr;
-}
-
 ctkXnatReconstructionResource::~ctkXnatReconstructionResource()
 {
 }
@@ -77,9 +70,7 @@ void ctkXnatReconstructionResource::reset()
 
 void ctkXnatReconstructionResource::fetchImpl()
 {
-  Q_D(ctkXnatReconstructionResource);
-  ctkXnatObject::Pointer self = d->selfPtr;
-  this->connection()->fetch(self.staticCast<ctkXnatReconstructionResource>());
+  this->connection()->fetch(this);
 }
 
 void ctkXnatReconstructionResource::download(const QString& filename)

+ 1 - 5
Libs/XNAT/Core/ctkXnatReconstructionResource.h

@@ -34,10 +34,7 @@ class CTK_XNAT_CORE_EXPORT ctkXnatReconstructionResource : public ctkXnatObject
   
 public:
 
-  typedef QSharedPointer<ctkXnatReconstructionResource> Pointer;
-  typedef QWeakPointer<ctkXnatReconstructionResource> WeakPointer;
-  
-  static Pointer Create();
+  explicit ctkXnatReconstructionResource();
   virtual ~ctkXnatReconstructionResource();
   
 //  const QString& uri() const;
@@ -50,7 +47,6 @@ public:
 private:
   
   friend class qRestResult;
-  explicit ctkXnatReconstructionResource();
   virtual void fetchImpl();
   
   Q_DECLARE_PRIVATE(ctkXnatReconstructionResource);

+ 1 - 9
Libs/XNAT/Core/ctkXnatScan.cpp

@@ -47,13 +47,6 @@ ctkXnatScan::ctkXnatScan(const QString& schemaType)
 {
 }
 
-ctkXnatScan::Pointer ctkXnatScan::Create()
-{
-  Pointer ptr(new ctkXnatScan());
-  ptr->d_func()->selfPtr = ptr;
-  return ptr;
-}
-
 ctkXnatScan::~ctkXnatScan()
 {
 }
@@ -78,6 +71,5 @@ void ctkXnatScan::reset()
 void ctkXnatScan::fetchImpl()
 {
   Q_D(ctkXnatScan);
-  ctkXnatObject::Pointer self = d->selfPtr;
-  this->connection()->fetch(self.staticCast<ctkXnatScan>());
+  this->connection()->fetch(this);
 }

+ 1 - 5
Libs/XNAT/Core/ctkXnatScan.h

@@ -34,10 +34,7 @@ class CTK_XNAT_CORE_EXPORT ctkXnatScan : public ctkXnatObject
 
 public:
 
-  typedef QSharedPointer<ctkXnatScan> Pointer;
-  typedef QWeakPointer<ctkXnatScan> WeakPointer;
-  
-  static Pointer Create();
+  explicit ctkXnatScan(const QString& schemaType = "xnat:imageScanData");
   virtual ~ctkXnatScan();
   
   const QString& uri() const;
@@ -48,7 +45,6 @@ public:
 private:
   
   friend class qRestResult;
-  explicit ctkXnatScan(const QString& schemaType = "xnat:imageScanData");
   virtual void fetchImpl();
   
   Q_DECLARE_PRIVATE(ctkXnatScan);

+ 1 - 10
Libs/XNAT/Core/ctkXnatScanFolder.cpp

@@ -49,13 +49,6 @@ ctkXnatScanFolder::ctkXnatScanFolder()
   this->setProperty("ID", "Scans");
 }
 
-ctkXnatScanFolder::Pointer ctkXnatScanFolder::Create()
-{
-  Pointer ptr(new ctkXnatScanFolder());
-  ptr->d_func()->selfPtr = ptr;
-  return ptr;
-}
-
 ctkXnatScanFolder::~ctkXnatScanFolder()
 {
 }
@@ -79,7 +72,5 @@ void ctkXnatScanFolder::reset()
 
 void ctkXnatScanFolder::fetchImpl()
 {
-  Q_D(ctkXnatScanFolder);
-  ctkXnatObject::Pointer self = d->selfPtr;
-  this->connection()->fetch(self.staticCast<ctkXnatScanFolder>());
+  this->connection()->fetch(this);
 }

+ 1 - 5
Libs/XNAT/Core/ctkXnatScanFolder.h

@@ -34,10 +34,7 @@ class CTK_XNAT_CORE_EXPORT ctkXnatScanFolder : public ctkXnatObject
 
 public:
   
-  typedef QSharedPointer<ctkXnatScanFolder> Pointer;
-  typedef QWeakPointer<ctkXnatScanFolder> WeakPointer;
-  
-  static Pointer Create();
+  explicit ctkXnatScanFolder();
   virtual ~ctkXnatScanFolder();
   
 //  const QString& uri() const;
@@ -48,7 +45,6 @@ public:
 private:
   
   friend class qRestResult;
-  explicit ctkXnatScanFolder();
   virtual void fetchImpl();
   
   Q_DECLARE_PRIVATE(ctkXnatScanFolder);

+ 1 - 10
Libs/XNAT/Core/ctkXnatScanResource.cpp

@@ -47,13 +47,6 @@ ctkXnatScanResource::ctkXnatScanResource()
 {
 }
 
-ctkXnatScanResource::Pointer ctkXnatScanResource::Create()
-{
-  Pointer ptr(new ctkXnatScanResource());
-  ptr->d_func()->selfPtr = ptr;
-  return ptr;
-}
-
 ctkXnatScanResource::~ctkXnatScanResource()
 {
 }
@@ -77,9 +70,7 @@ void ctkXnatScanResource::reset()
 
 void ctkXnatScanResource::fetchImpl()
 {
-  Q_D(ctkXnatScanResource);
-  ctkXnatObject::Pointer self = d->selfPtr;
-  this->connection()->fetch(self.staticCast<ctkXnatScanResource>());
+  this->connection()->fetch(this);
 }
 
 void ctkXnatScanResource::download(const QString& filename)

+ 1 - 5
Libs/XNAT/Core/ctkXnatScanResource.h

@@ -34,10 +34,7 @@ class CTK_XNAT_CORE_EXPORT ctkXnatScanResource : public ctkXnatObject
   
 public:
 
-  typedef QSharedPointer<ctkXnatScanResource> Pointer;
-  typedef QWeakPointer<ctkXnatScanResource> WeakPointer;
-  
-  static Pointer Create();
+  explicit ctkXnatScanResource();
   virtual ~ctkXnatScanResource();
   
 //  const QString& uri() const;
@@ -50,7 +47,6 @@ public:
 private:
   
   friend class qRestResult;
-  explicit ctkXnatScanResource();
   virtual void fetchImpl();
   
   Q_DECLARE_PRIVATE(ctkXnatScanResource);

+ 1 - 10
Libs/XNAT/Core/ctkXnatServer.cpp

@@ -50,18 +50,9 @@ ctkXnatServer::ctkXnatServer(ctkXnatConnection* connection)
 {
 }
 
-ctkXnatServer::Pointer ctkXnatServer::Create(ctkXnatConnection* connection)
-{
-  Pointer server(new ctkXnatServer(connection));
-  server->d_func()->selfPtr = server;
-  return server;
-}
-
 void ctkXnatServer::fetchImpl()
 {
-  Q_D(ctkXnatObject);
-  ctkXnatObject::Pointer self = d->selfPtr;
-  this->connection()->fetch(self.staticCast<ctkXnatServer>());
+  this->connection()->fetch(this);
 }
 
 ctkXnatConnection* ctkXnatServer::connection() const

+ 2 - 6
Libs/XNAT/Core/ctkXnatServer.h

@@ -25,6 +25,7 @@
 #include "ctkXNATCoreExport.h"
 
 #include "ctkXnatObject.h"
+#include "ctkXnatProject.h"
 
 class ctkXnatConnection;
 class ctkXnatServerPrivate;
@@ -34,10 +35,7 @@ class CTK_XNAT_CORE_EXPORT ctkXnatServer : public ctkXnatObject
 
 public:
 
-  typedef QSharedPointer<ctkXnatServer> Pointer;
-  typedef QWeakPointer<ctkXnatServer> WeakPointer;
-
-  static Pointer Create(ctkXnatConnection* connection);
+  ctkXnatServer(ctkXnatConnection* connection);
 
 protected:
 
@@ -45,8 +43,6 @@ protected:
 
 private:
 
-  ctkXnatServer(ctkXnatConnection* connection);
-
   virtual void fetchImpl();
 
   Q_DECLARE_PRIVATE(ctkXnatServer)

+ 2 - 11
Libs/XNAT/Core/ctkXnatSubject.cpp

@@ -47,7 +47,7 @@ public:
   QString insertUser;
 //  QString uri;
 
-  QList<ctkXnatProject::WeakPointer> projects;
+  QList<ctkXnatProject*> projects;
 };
 
 ctkXnatSubject::ctkXnatSubject(const QString& schemaType)
@@ -103,14 +103,5 @@ void ctkXnatSubject::reset()
 
 void ctkXnatSubject::fetchImpl()
 {
-  Q_D(ctkXnatSubject);
-  ctkXnatObject::Pointer self = d->selfPtr;
-  connection()->fetch(self.staticCast<ctkXnatSubject>());
-}
-
-ctkXnatSubject::Pointer ctkXnatSubject::Create()
-{
-  Pointer subject(new ctkXnatSubject());
-  subject->d_func()->selfPtr = subject;
-  return subject;
+  connection()->fetch(this);
 }

+ 3 - 9
Libs/XNAT/Core/ctkXnatSubject.h

@@ -34,15 +34,11 @@ class CTK_XNAT_CORE_EXPORT ctkXnatSubject : public ctkXnatObject
 
 public:
 
-  typedef QSharedPointer<ctkXnatSubject> Pointer;
-  typedef QWeakPointer<ctkXnatSubject> WeakPointer;
-
-  static Pointer Create();
-
+  explicit ctkXnatSubject(const QString& schemaType = "xnat:subjectData");
   virtual ~ctkXnatSubject();
 
-  QSharedPointer<ctkXnatProject> getPrimaryProject() const;
-  QList<QSharedPointer<ctkXnatProject> > getProjects() const;
+  ctkXnatProject* getPrimaryProject() const;
+  QList<ctkXnatProject*> getProjects() const;
 
   const QString& insertDate() const;
   void setInsertDate(const QString& insertDate);
@@ -59,8 +55,6 @@ private:
 
   friend class qRestResult;
 
-  explicit ctkXnatSubject(const QString& schemaType = "xnat:subjectData");
-
   virtual void fetchImpl();
 
   Q_DECLARE_PRIVATE(ctkXnatSubject)

+ 3 - 3
Libs/XNAT/Widgets/ctkXnatProjectListModel.cpp

@@ -29,7 +29,7 @@ ctkXnatProjectListModel::ctkXnatProjectListModel()
 {
 }
 
-void ctkXnatProjectListModel::setRootObject(const ctkXnatObject::Pointer& root)
+void ctkXnatProjectListModel::setRootObject(ctkXnatObject* root)
 {
   rootObject = root;
 }
@@ -46,8 +46,8 @@ QVariant ctkXnatProjectListModel::data(const QModelIndex& index, int role) const
 
   if (role == Qt::DisplayRole)
   {
-    ctkXnatObject::Pointer child = rootObject->children().at(index.row());
-    if (child.isNull())
+    ctkXnatObject* child = rootObject->children().at(index.row());
+    if (!child)
     {
       qWarning() << "child at index" << index << "is NULL!";
     }

+ 2 - 3
Libs/XNAT/Widgets/ctkXnatProjectListModel.h

@@ -23,7 +23,6 @@
 #define CTKXNATPROJECTLISTMODEL_H
 
 #include "QAbstractListModel"
-#include "QSharedPointer"
 
 #include "ctkXNATWidgetsExport.h"
 
@@ -35,7 +34,7 @@ class CTK_XNAT_WIDGETS_EXPORT ctkXnatProjectListModel : public QAbstractListMode
 
 public:
   ctkXnatProjectListModel();
-  void setRootObject(const QSharedPointer<ctkXnatObject>& root);
+  void setRootObject(ctkXnatObject* root);
 
   int rowCount(const QModelIndex &parent) const;
   QVariant data(const QModelIndex &index, int role) const;
@@ -43,7 +42,7 @@ public:
 
 private:
 
-  QSharedPointer<ctkXnatObject> rootObject;
+  ctkXnatObject* rootObject;
 
 };
 

+ 2 - 2
Libs/XNAT/Widgets/ctkXnatTreeItem.cpp

@@ -30,7 +30,7 @@ ctkXnatTreeItem::ctkXnatTreeItem()
 {
 }
 
-ctkXnatTreeItem::ctkXnatTreeItem(ctkXnatObject::Pointer xnatObject, ctkXnatTreeItem* parentItem)
+ctkXnatTreeItem::ctkXnatTreeItem(ctkXnatObject* xnatObject, ctkXnatTreeItem* parentItem)
 : m_XnatObject(xnatObject)
 , m_ParentItem(parentItem)
 {
@@ -41,7 +41,7 @@ ctkXnatTreeItem::~ctkXnatTreeItem()
   qDeleteAll(m_ChildItems);
 }
 
-ctkXnatObject::Pointer ctkXnatTreeItem::xnatObject() const
+ctkXnatObject* ctkXnatTreeItem::xnatObject() const
 {
   return m_XnatObject;
 }

+ 3 - 3
Libs/XNAT/Widgets/ctkXnatTreeItem.h

@@ -34,10 +34,10 @@ class ctkXnatTreeItem
 public:
 
   explicit ctkXnatTreeItem();
-  explicit ctkXnatTreeItem(ctkXnatObject::Pointer xnatObject, ctkXnatTreeItem* parentItem = 0);
+  explicit ctkXnatTreeItem(ctkXnatObject* xnatObject, ctkXnatTreeItem* parentItem = 0);
   virtual ~ctkXnatTreeItem();
 
-  ctkXnatObject::Pointer xnatObject() const;
+  ctkXnatObject* xnatObject() const;
 
   void appendChild(ctkXnatTreeItem* child);
   void removeChildren();
@@ -51,7 +51,7 @@ public:
 
 private:
 
-  ctkXnatObject::Pointer m_XnatObject;
+  ctkXnatObject* m_XnatObject;
 
   ctkXnatTreeItem* m_ParentItem;
   QList<ctkXnatTreeItem*> m_ChildItems;

+ 12 - 12
Libs/XNAT/Widgets/ctkXnatTreeModel.cpp

@@ -52,7 +52,7 @@ QVariant ctkXnatTreeModel::data(const QModelIndex& index, int role) const
   }
   else if (role == Qt::DisplayRole)
   {
-    ctkXnatObject::Pointer xnatObject = this->xnatObject(index);
+    ctkXnatObject* xnatObject = this->xnatObject(index);
 
     QString displayData = xnatObject->name();
     if (displayData.isEmpty())
@@ -171,15 +171,15 @@ void ctkXnatTreeModel::fetchMore(const QModelIndex& index)
 
   ctkXnatTreeItem* item = this->itemAt(index);
 
-  ctkXnatObject::Pointer xnatObject = item->xnatObject();
+  ctkXnatObject* xnatObject = item->xnatObject();
 
   xnatObject->fetch();
 
-  QList<ctkXnatObject::Pointer> children = xnatObject->children();
+  QList<ctkXnatObject*> children = xnatObject->children();
   if (!children.isEmpty())
   {
     beginInsertRows(index, 0, children.size() - 1);
-    foreach (ctkXnatObject::Pointer child, children)
+    foreach (ctkXnatObject* child, children)
     {
       item->appendChild(new ctkXnatTreeItem(child, item));
     }
@@ -187,12 +187,12 @@ void ctkXnatTreeModel::fetchMore(const QModelIndex& index)
   }
 }
 
-ctkXnatObject::Pointer ctkXnatTreeModel::xnatObject(const QModelIndex& index) const
+ctkXnatObject* ctkXnatTreeModel::xnatObject(const QModelIndex& index) const
 {
   return this->itemAt(index)->xnatObject();
 }
 
-void ctkXnatTreeModel::addServer(ctkXnatServer::Pointer server)
+void ctkXnatTreeModel::addServer(ctkXnatServer* server)
 {
   m_RootItem->appendChild(new ctkXnatTreeItem(server, m_RootItem));
 }
@@ -211,11 +211,11 @@ bool ctkXnatTreeModel::removeAllRows(const QModelIndex& parent)
     return false;
   }
 
-  ctkXnatObject::Pointer xnatObject = this->xnatObject(parent);
+  ctkXnatObject* xnatObject = this->xnatObject(parent);
 
   // nt: not sure why the parent.row() is used here instead of the first item in list
   // that is xnatObject->children()[0];
-  ctkXnatObject::Pointer child = xnatObject->children()[parent.row()];
+  ctkXnatObject* child = xnatObject->children()[parent.row()];
 
   if ( child == NULL )
   {
@@ -228,14 +228,14 @@ bool ctkXnatTreeModel::removeAllRows(const QModelIndex& parent)
     beginRemoveRows(parent, 0, numberofchildren - 1);
     // xnatObject->removeChild(parent.row());
     // nt: not sure if this is the right implementation here, should iterate ?
-    xnatObject->removeChild(child);
+    xnatObject->remove(child);
     endRemoveRows();
   }
   else
   {
     // xnatObject->removeChild(parent.row());
     // nt: not sure if this is the right implementation here, should iterate ?
-    xnatObject->removeChild(child);
+    xnatObject->remove(child);
   }
   return true;
 }
@@ -259,8 +259,8 @@ void ctkXnatTreeModel::uploadFile(const QModelIndex& index, const QString& zipFi
     return;
   }
 
-  ctkXnatObject::Pointer xnatObject = this->xnatObject(index);
-  ctkXnatObject::Pointer child = xnatObject->children()[index.row()];
+  ctkXnatObject* xnatObject = this->xnatObject(index);
+  ctkXnatObject* child = xnatObject->children()[index.row()];
 
   child->upload(zipFileName);
 }

+ 2 - 2
Libs/XNAT/Widgets/ctkXnatTreeModel.h

@@ -47,9 +47,9 @@ public:
   virtual bool canFetchMore(const QModelIndex& parent) const;
   virtual void fetchMore(const QModelIndex& parent);
 
-  ctkXnatObject::Pointer xnatObject(const QModelIndex& index) const;
+  ctkXnatObject* xnatObject(const QModelIndex& index) const;
 
-  void addServer(ctkXnatServer::Pointer server);
+  void addServer(ctkXnatServer* server);
 
   bool removeAllRows(const QModelIndex& parent);