Selaa lähdekoodia

Added download function to ctkXnatTreeBrowser

Andreas Fetzer 11 vuotta sitten
vanhempi
commit
242036ea54

+ 25 - 0
Applications/ctkXnatTreeBrowser/ctkXnatTreeBrowserMainWindow.cpp

@@ -28,6 +28,7 @@
 #include "ctkXnatConnectionFactory.h"
 #include "ctkXnatServer.h"
 #include "ctkXnatProject.h"
+#include "ctkXnatFile.h"
 
 ctkXnatTreeBrowserMainWindow::ctkXnatTreeBrowserMainWindow(QWidget *parent) :
   QMainWindow(parent),
@@ -39,8 +40,11 @@ ctkXnatTreeBrowserMainWindow::ctkXnatTreeBrowserMainWindow(QWidget *parent) :
   ui->setupUi(this);
 
   ui->treeView->setModel(m_TreeModel);
+  ui->downloadLabel->hide();
 
   this->connect(ui->loginButton, SIGNAL(clicked()), SLOT(loginButtonPushed()));
+  this->connect(ui->treeView, SIGNAL(clicked(const QModelIndex&)), SLOT(itemSelected(const QModelIndex&)));
+  this->connect(ui->downloadButton, SIGNAL(clicked()), SLOT(downloadButtonClicked()));
 }
 
 ctkXnatTreeBrowserMainWindow::~ctkXnatTreeBrowserMainWindow()
@@ -63,6 +67,7 @@ void ctkXnatTreeBrowserMainWindow::loginButtonPushed()
     m_Connection = 0;
     ui->loginButton->setText("Login");
     ui->loginLabel->setText("Disconnected");
+    ui->downloadLabel->hide();
 
     // nt: download tests... //
     // m_TreeModel->downloadFile (ui->treeView->selectionModel()->currentIndex(), "/Users/nicolastoussaint/Desktop/test.nii.gz");
@@ -81,7 +86,27 @@ void ctkXnatTreeBrowserMainWindow::loginButtonPushed()
         ctkXnatServer* server = m_Connection->server();
         m_TreeModel->addServer(server);
         ui->treeView->reset();
+        ui->downloadLabel->show();
       }
     }
   }
 }
+
+void ctkXnatTreeBrowserMainWindow::itemSelected(const QModelIndex &index)
+{
+  ctkXnatObject* xnatObject = m_TreeModel->xnatObject(index);
+  ctkXnatFile* xnatFile = dynamic_cast<ctkXnatFile*>(xnatObject);
+  ui->downloadButton->setEnabled(xnatFile != 0);
+  ui->downloadLabel->setVisible(!(xnatFile != 0));
+}
+
+void ctkXnatTreeBrowserMainWindow::downloadButtonClicked()
+{
+  const QModelIndex index = ui->treeView->selectionModel()->currentIndex();
+  QVariant variant = m_TreeModel->data(index, Qt::DisplayRole);
+  QString fileName = variant.value<QString>();
+  if ( fileName.length() != 0 )
+  {
+    m_TreeModel->downloadFile(index, fileName);
+  }
+}

+ 2 - 0
Applications/ctkXnatTreeBrowser/ctkXnatTreeBrowserMainWindow.h

@@ -45,6 +45,8 @@ public:
 private Q_SLOTS:
 
   void loginButtonPushed();
+  void itemSelected(const QModelIndex&);
+  void downloadButtonClicked();
 
 private:
   Ui::ctkXnatTreeBrowserMainWindow* ui;

+ 26 - 18
Applications/ctkXnatTreeBrowser/ctkXnatTreeBrowserMainWindow.ui

@@ -25,6 +25,16 @@
        </widget>
       </item>
       <item>
+       <widget class="QPushButton" name="downloadButton">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <property name="text">
+         <string>Download</string>
+        </property>
+       </widget>
+      </item>
+      <item>
        <widget class="QLabel" name="loginLabel">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
@@ -53,6 +63,21 @@
       </property>
      </widget>
     </item>
+    <item>
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <item>
+       <widget class="QLabel" name="downloadLabel">
+        <property name="styleSheet">
+         <string notr="true">color: rgb(64, 64, 64);
+font: 75 10pt &quot;Lucida Grande&quot;;</string>
+        </property>
+        <property name="text">
+         <string>Select a xnat file to download...</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
    </layout>
   </widget>
   <widget class="QMenuBar" name="menubar">
@@ -80,22 +105,5 @@
   </action>
  </widget>
  <resources/>
- <connections>
-  <connection>
-   <sender>action_Quit</sender>
-   <signal>triggered()</signal>
-   <receiver>ctkXnatBrowserMainWindow</receiver>
-   <slot>close()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>399</x>
-     <y>299</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
+ <connections/>
 </ui>