Browse Source

ENH: added DicomAppService to host to allow sending requests from host to app

ivowolf 14 years ago
parent
commit
ff85ddb948

+ 4 - 4
Plugins/org.commontk.dicom.examplehost/ctkDicomExampleHost.cpp

@@ -2,17 +2,17 @@
 #include <QProcess>
 #include <QtDebug>
 
-ctkDicomExampleHost::ctkDicomExampleHost(QWidget* placeholderWidget) : placeholderWidget(placeholderWidget),ctkDicomAbstractHost(8080)
+ctkDicomExampleHost::ctkDicomExampleHost(QWidget* placeholderWidget, int hostPort, int appPort) : placeholderWidget(placeholderWidget),ctkDicomAbstractHost(hostPort, appPort)
 {
 }
 
-void ctkDicomExampleHost::StartApplication(QString AppPath, const QUrl& App_URL){
+void ctkDicomExampleHost::StartApplication(QString AppPath){
 
     QStringList l;
     l.append("--hostURL");
-    l.append(QString("http://localhost:") + QString::number(this->getPort()) );
+    l.append(QString("http://localhost:") + QString::number(this->getHostPort()) );
     l.append("--applicationURL");
-    l.append(App_URL.toString());
+    l.append(QString("http://localhost:") + QString::number(this->getAppPort()));
     l.append("dicomapp"); // the app plugin to use - has to be changed later
     if (!QProcess::startDetached (
             AppPath,l))

+ 2 - 2
Plugins/org.commontk.dicom.examplehost/ctkDicomExampleHost.h

@@ -10,9 +10,9 @@
 class org_commontk_dicom_examplehost_EXPORT ctkDicomExampleHost : public ctkDicomAbstractHost{
     Q_OBJECT
 public:
-    ctkDicomExampleHost(QWidget* placeholderWidget);
+    ctkDicomExampleHost(QWidget* placeholderWidget, int hostPort = 8080, int appPort = 8081);
 
-    virtual void StartApplication(QString AppPath, const QUrl& App_URL = QUrl("http://localhost:8081/"));
+    virtual void StartApplication(QString AppPath);
     virtual QString generateUID() { return ""; }
     virtual QRect getAvailableScreen(const QRect& preferredScreen);
     virtual QString getOutputLocation(const QStringList& /*preferredProtocols*/) { return ""; }

+ 30 - 8
Plugins/org.commontk.dicom.wg23.host/ctkDicomAbstractHost.cpp

@@ -1,38 +1,60 @@
 #include "ctkDicomAbstractHost.h"
 #include "ctkDicomHostServer.h"
+#include "ctkDicomAppService.h"
 
 class ctkDicomAbstractHostPrivate
 {
   public:
-  ctkDicomAbstractHostPrivate(ctkDicomAbstractHost* hostInterface, int port) : port(port)
+  ctkDicomAbstractHostPrivate(ctkDicomAbstractHost* hostInterface, int hostPort, int appPort) : hostPort(hostPort), appPort(appPort)
   {
     // start server
-    if (!port)
+    if (hostPort==0)
     {
-      port = 8080;
+      hostPort = 8080;
     }
-    server = new ctkDicomHostServer(hostInterface,port);
+    if (appPort==0)
+    {
+      appPort = 8081;
+    }
+
+    server = new ctkDicomHostServer(hostInterface,hostPort);
+    appService = new ctkDicomAppService(appPort);
   }
   ~ctkDicomAbstractHostPrivate()
   {
     delete server;
+    delete appService;
   }
 
-  int port;
+  int hostPort;
+  int appPort;
   ctkDicomHostServer* server;
+  ctkDicomAppInterface* appService;
   // ctkDicomWG23::Status
 };
 
-ctkDicomAbstractHost::ctkDicomAbstractHost(int port) : d_ptr(new ctkDicomAbstractHostPrivate(this,port))
+ctkDicomAbstractHost::ctkDicomAbstractHost(int hostPort, int appPort) : d_ptr(new ctkDicomAbstractHostPrivate(this,hostPort,appPort))
 {
 }
 
-int ctkDicomAbstractHost::getPort() const
+int ctkDicomAbstractHost::getHostPort() const
 {
   Q_D(const ctkDicomAbstractHost);
-  return d->port;
+  return d->hostPort;
+}
+
+int ctkDicomAbstractHost::getAppPort() const
+{
+  Q_D(const ctkDicomAbstractHost);
+  return d->appPort;
 }
 
 ctkDicomAbstractHost::~ctkDicomAbstractHost()
 {
 }
+
+ctkDicomAppInterface* ctkDicomAbstractHost::getDicomAppService() const
+{
+  Q_D(const ctkDicomAbstractHost);
+  return d->appService;
+}

+ 5 - 2
Plugins/org.commontk.dicom.wg23.host/ctkDicomAbstractHost.h

@@ -2,6 +2,7 @@
 #define CTKDICOMABSTRACTHOST_H
 
 #include <ctkDicomHostInterface.h>
+#include <ctkDicomAppInterface.h>
 #include <QScopedPointer>
 
 #include <org_commontk_dicom_wg23_host_Export.h>
@@ -23,10 +24,12 @@ public:
     /**
       * Start the soap sever on the specified port or choose port automatically.
       */
-    ctkDicomAbstractHost(int port = 0);
-    int getPort() const;
+    ctkDicomAbstractHost(int hostPort = 0, int appPort = 0);
+    int getHostPort() const;
+    int getAppPort() const;
     ~ctkDicomAbstractHost();
 
+    ctkDicomAppInterface* getDicomAppService() const;
 private:
     Q_DECLARE_PRIVATE(ctkDicomAbstractHost)
     const QScopedPointer<ctkDicomAbstractHostPrivate> d_ptr;

+ 1 - 1
Plugins/org.commontk.example.dicomapp/ctkExampleDicomAppLogic.cpp

@@ -56,7 +56,7 @@ bool ctkExampleDicomAppLogic::setState(ctkDicomWG23::State newState)
     QPushButton *button = new QPushButton("Button from App");
     button->show();
   }
-  return false;
+  return true;
 }
 
 bool ctkExampleDicomAppLogic::bringToFront(const QRect& requestedScreenArea)