Forráskód Böngészése

ENH:dah refactored host_server with bindings

Benoît Bleuzé 14 éve
szülő
commit
7550bd3e34

+ 9 - 7
Plugins/org.commontk.dicom.wg23.core/ctkDicomWG23TypesHelper.h

@@ -28,8 +28,9 @@
 #include <QRect>
 
 class ctkDicomSoapRectangle :public QtSoapStruct {
-
-    ctkDicomSoapRectangle(const QtSoapQName & name,const QRect& rect):QtSoapStruct(name){
+    public: 
+    ctkDicomSoapRectangle(const QString & name,const QRect& rect):
+        QtSoapStruct(QtSoapQName(name)){
         this->insert(new QtSoapSimpleType(QtSoapQName("Height"), 
                     rect.height()));
         this->insert(new QtSoapSimpleType(QtSoapQName("Width"), 
@@ -38,7 +39,6 @@ class ctkDicomSoapRectangle :public QtSoapStruct {
                     rect.x()));
         this->insert(new QtSoapSimpleType(QtSoapQName("RefPointY"), 
                     rect.y()));
-
     };
 
     static QRect getQRect (const QtSoapType& type){
@@ -50,8 +50,9 @@ class ctkDicomSoapRectangle :public QtSoapStruct {
 };
 
 class ctkDicomSoapState : public QtSoapSimpleType{
-   ctkDicomSoapState ( const QtSoapQName & name, ctkDicomWG23::State s ):
-       QtSoapSimpleType ( name, s ){};
+    public:
+   ctkDicomSoapState ( const QString & name, ctkDicomWG23::State s ):
+       QtSoapSimpleType ( QtSoapQName(name), s ){};
 
    static ctkDicomWG23::State getState(const QtSoapType& type){
         return  static_cast<ctkDicomWG23::State> (type.value().toInt());
@@ -60,9 +61,10 @@ class ctkDicomSoapState : public QtSoapSimpleType{
 
 
 class ctkDicomSoapStatus : public QtSoapStruct{
-    ctkDicomSoapStatus ( const QtSoapQName & name,
+    public: 
+    ctkDicomSoapStatus ( const QString & name,
             const ctkDicomWG23::Status* s ):
-       QtSoapStruct ( name ){
+       QtSoapStruct ( QtSoapQName(name) ){
         this->insert(new QtSoapSimpleType(QtSoapQName("StatusType"), 
                     s->statusType) );
         this->insert(new QtSoapSimpleType(

+ 6 - 16
Plugins/org.commontk.dicom.wg23.host/ctkDicomHostServerPrivate.cpp

@@ -79,36 +79,26 @@ void ctkDicomHostServerPrivate::processGetAvailableScreen(
     const QtSoapMessage &message, QtSoapMessage *reply)
 {
   const QtSoapType& preferredScreenType = message.method()["preferredScreen"];
-  QRect preferredScreen(preferredScreenType["RefPointX"].value().toInt(),
-                        preferredScreenType["RefPointY"].value().toInt(),
-                        preferredScreenType["Width"].value().toInt(),
-                        preferredScreenType["Height"].value().toInt());
+  const QRect preferredScreen = ctkDicomSoapRectangle::getQRect(preferredScreenType);
 
-  QRect result = serviceBinding->getAvailableScreen(preferredScreen);
+  const QRect result = serviceBinding->getAvailableScreen(preferredScreen);
 
   reply->setMethod("GetAvailableScreenResponse");
-  QtSoapStruct* availableScreenType = new QtSoapStruct(QtSoapQName("availableScreen"));
-  availableScreenType->insert(new QtSoapSimpleType(QtSoapQName("Height"), result.height()));
-  availableScreenType->insert(new QtSoapSimpleType(QtSoapQName("Width"), result.width()));
-  availableScreenType->insert(new QtSoapSimpleType(QtSoapQName("RefPointX"), result.x()));
-  availableScreenType->insert(new QtSoapSimpleType(QtSoapQName("RefPointY"), result.y()));
+  QtSoapStruct* availableScreenType = new ctkDicomSoapRectangle("availableScreen",result);
   reply->addMethodArgument(availableScreenType);
 }
 
 void ctkDicomHostServerPrivate::processNotifyStateChanged(
     const QtSoapMessage &message, QtSoapMessage *reply)
 {
-    ctkDicomWG23::State state;
     const QtSoapType& stateType = message.method()["state"];
-
-
-
+    serviceBinding->notifyStateChanged(ctkDicomSoapState::getState(stateType));
 }
 
 void ctkDicomHostServerPrivate::processNotifyStatus(
     const QtSoapMessage &message, QtSoapMessage *reply)
 {
-    ctkDicomWG23::State state;
-    const QtSoapType& stateType = message.method()["status"];
+    const QtSoapType& status = message.method()["status"];
+    serviceBinding->notifyStatus(ctkDicomSoapStatus::getStatus(status));
 
 }

+ 2 - 0
Plugins/org.commontk.dicom.wg23.host/ctkDicomHostServerPrivate.h

@@ -52,6 +52,8 @@ private:
                                  QtSoapMessage* reply);
   void processNotifyStatus(const QtSoapMessage& message,
                                  QtSoapMessage* reply);
+  //void processGenerateUID(const QtSoapMessage& message,
+                                 QtSoapMessage* reply);
 
   ctkDicomHostInterface* serviceBinding;