Explorar o código

xnat: download functionality almost on track

Nicolas Toussaint %!s(int64=12) %!d(string=hai) anos
pai
achega
a31efa715f

+ 3 - 0
Applications/ctkXnatTreeBrowser/ctkXnatTreeBrowserMainWindow.cpp

@@ -63,6 +63,9 @@ void ctkXnatTreeBrowserMainWindow::loginButtonPushed()
     m_Connection = 0;
     ui->loginButton->setText("Login");
     ui->loginLabel->setText("Disconnected");
+
+    // nt: download tests... //
+    // m_TreeModel->downloadFile (ui->treeView->selectionModel()->currentIndex(), "/Users/nicolastoussaint/Desktop/test.nii.gz");
   }
   else
   {

+ 5 - 0
Libs/XNAT/Core/ctkXnatConnection.cpp

@@ -346,9 +346,14 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScanResource>& scanRes
 
   foreach (ctkXnatScanResourceFile* file, files)
   {
+    QString uri = file->getProperty ("URI");
+    if (uri.size())
+      file->setUri (uri);
+
     QString label = file->getProperty ("Name");
     if (label.size())
       file->setProperty ("ID", label);
+
     ctkXnatObject::Pointer ptr(file);
     ptr->d_func()->selfPtr = ptr;
     scanResource->addChild(ptr);

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

@@ -81,6 +81,23 @@ void ctkXnatObject::setProperty(const QString& name, const QVariant& value)
   d->properties.insert(name, value.toString());
 }
 
+
+QList<QString> ctkXnatObject::getProperties()
+{
+  Q_D(ctkXnatObject);
+  
+  QList<QString> value;
+
+  QMapIterator<QString, QString> it(d->properties);
+  while (it.hasNext())
+  {
+    it.next();
+    value.push_back (it.key());
+  }
+
+  return value;
+}
+
 ctkXnatObject::Pointer ctkXnatObject::getParent() const
 {
   Q_D(const ctkXnatObject);

+ 3 - 0
Libs/XNAT/Core/ctkXnatObject.h

@@ -50,6 +50,8 @@ public:
   QString getProperty(const QString& name) const;
   void setProperty(const QString& name, const QVariant& value);
 
+  QList<QString> getProperties();
+  
   ctkXnatObject::Pointer getParent() const;
   QList<ctkXnatObject::Pointer> getChildren() const;
 
@@ -72,6 +74,7 @@ public:
   virtual bool isDeletable() const;
   virtual bool isModifiable() const;
 
+  
 protected:
 
   ctkXnatObject();

+ 18 - 0
Libs/XNAT/Core/ctkXnatScanResourceFile.cpp

@@ -24,6 +24,7 @@
 #include "ctkXnatConnection.h"
 #include "ctkXnatObjectPrivate.h"
 
+#include <QDebug>
 
 class ctkXnatScanResourceFilePrivate : public ctkXnatObjectPrivate
 {
@@ -70,6 +71,23 @@ void ctkXnatScanResourceFile::setUri(const QString& uri)
   d->uri = uri;
 }
 
+void ctkXnatScanResourceFile::download(const QString& filename)
+{
+  ctkXnatScanResourceFile* object = this;
+  
+  qDebug() << "file uri is" << object->uri();
+  qDebug() << "downloading towards: " << filename;
+}
+
+void ctkXnatScanResourceFile::upload(const QString& filename)
+{
+  ctkXnatScanResourceFile* object = this;
+  
+  qDebug() << "file uri is" << object->uri();
+  qDebug() << "uploading from: " << filename;
+}
+
+
 void ctkXnatScanResourceFile::reset()
 {
   ctkXnatObject::reset();

+ 4 - 1
Libs/XNAT/Core/ctkXnatScanResourceFile.h

@@ -42,7 +42,10 @@ public:
   
   const QString& uri() const;
   void setUri(const QString& uri);
-  
+
+  void download(const QString& filename);
+  void upload(const QString& filename);
+
   void reset();
   void remove();
   

+ 6 - 4
Libs/XNAT/Widgets/ctkXnatTreeModel.cpp

@@ -26,6 +26,7 @@
 #include "ctkXnatSubject.h"
 
 #include <QList>
+#include <QDebug>
 
 ctkXnatTreeModel::ctkXnatTreeModel()
 : m_RootItem(new ctkXnatTreeItem())
@@ -53,7 +54,7 @@ QVariant ctkXnatTreeModel::data(const QModelIndex& index, int role) const
   else if (role == Qt::DisplayRole)
   {
     ctkXnatObject::Pointer xnatObject = this->itemAt(index)->xnatObject();
-
+    
     QString displayData = xnatObject->getName();
     if (displayData.isEmpty())
     {
@@ -251,10 +252,11 @@ void ctkXnatTreeModel::downloadFile(const QModelIndex& index, const QString& zip
   }
 
   ctkXnatTreeItem* item = this->itemAt(index);
-  ctkXnatObject::Pointer xnatObject = item->xnatObject();
-  ctkXnatObject::Pointer child = xnatObject->getChildren()[index.row()];
+  ctkXnatObject::Pointer object = item->xnatObject();
+
+  // ctkXnatObject::Pointer child = object->getChildren()[index.row()];
   
-  child->download (zipFilename);
+  object->download (zipFilename);
 
   return;
 }