53 */ |
57 */ |
54 SchemeHandler::SchemeHandlerError |
58 SchemeHandler::SchemeHandlerError |
55 QtHighwaySchemeHandlerPrivate::SendStandardUriViewRequest(const QUrl& url) |
59 QtHighwaySchemeHandlerPrivate::SendStandardUriViewRequest(const QUrl& url) |
56 { |
60 { |
57 SchemeHandler::SchemeHandlerError retVal = SchemeHandler::NoError; |
61 SchemeHandler::SchemeHandlerError retVal = SchemeHandler::NoError; |
58 XQAiwRequest *request = NULL; // Application Interworking request |
|
59 bool embedded = false; // window groups not chained |
62 bool embedded = false; // window groups not chained |
60 |
63 |
61 // Create request - Apply first implementation of url, "com.nokia.symbian.IUriView" |
64 // Create request - Apply first implementation of url, "com.nokia.symbian.IUriView" |
62 // interface name and "view(QString)" operation. |
65 // interface name and "view(QString)" operation. |
63 request = mAiwMgr.create(url, embedded); |
66 if (mRequestPtr) |
|
67 delete mRequestPtr; // ensure previous requests deleted |
|
68 mRequestPtr = mAiwMgr.create(url, embedded); |
64 |
69 |
65 if (request) { |
70 if (mRequestPtr) { |
66 // Debug - what service and interface are we using? |
71 // Debug - what service and interface are we using? |
67 //XQAiwInterfaceDescriptor const &desc = request->descriptor(); |
72 //XQAiwInterfaceDescriptor const &desc = mRequestPtr->descriptor(); |
68 //qDebug() << "HandleTelScheme: sn=" << desc.serviceName() << "if=" << desc.interfaceName(); |
73 //qDebug() << "SendStandardUriViewRequest: sn=" << desc.serviceName() << "if=" << desc.interfaceName(); |
69 |
74 |
70 // Set function parameters |
75 // Set function parameters |
71 QList<QVariant> args; |
76 QList<QVariant> args; |
72 args << url.toString(); |
77 args << url.toString(); |
73 request->setArguments(args); |
78 mRequestPtr->setArguments(args); |
74 request->setEmbedded(embedded); |
79 mRequestPtr->setEmbedded(embedded); |
75 request->setSynchronous(false); // asynchronous request |
80 mRequestPtr->setSynchronous(false); // asynchronous request |
76 |
81 |
77 // Send the request |
82 // Send the request |
78 if (!request->send()) { |
83 if (mRequestPtr->send()) { |
79 // to debug get error code from request->lastError() |
84 // connect request signals to slots |
80 // or connect to requestError() signal |
85 connect(mRequestPtr, SIGNAL(requestOk(const QVariant&)), |
|
86 this, SLOT(handleOk(const QVariant&))); |
|
87 connect(mRequestPtr, SIGNAL(requestError(int,const QString&)), |
|
88 this, SLOT(handleError(int, const QString&))); |
|
89 } else { |
|
90 // requestError() signal will be sent with error code |
81 retVal = SchemeHandler::LaunchFailed; |
91 retVal = SchemeHandler::LaunchFailed; |
82 } |
92 } |
83 } else { |
93 } else { |
84 // failed to create request - maybe scheme is unsupported |
94 // failed to create request - maybe scheme is unsupported |
85 retVal = SchemeHandler::SchemeUnsupported; |
95 retVal = SchemeHandler::SchemeUnsupported; |
86 } |
96 } |
87 |
97 |
88 // if need to get service result connect to requestOk() signal |
|
89 |
|
90 // currently not interested in requestOk() or requestError() signals so |
|
91 // OK to delete request now |
|
92 delete request; |
|
93 |
|
94 return retVal; |
98 return retVal; |
95 } |
99 } |
96 |
100 |
|
101 // Aiw request responses |
|
102 void QtHighwaySchemeHandlerPrivate::handleOk(const QVariant& result) |
|
103 { |
|
104 // service application launched ok, result is application return value |
|
105 // service app should handle UI for errors, this is just for cleanup |
|
106 if (mRequestPtr) { |
|
107 delete mRequestPtr; |
|
108 mRequestPtr = NULL; |
|
109 } |
|
110 } |
|
111 |
|
112 // handles errors in interworking request handling |
|
113 void QtHighwaySchemeHandlerPrivate::handleError(int errorCode, |
|
114 const QString& errorMessage) |
|
115 { |
|
116 // UI relies on return error from XQAiwRequest::send() to alert user of problem |
|
117 // add debug code here to find out cause of error |
|
118 if (mRequestPtr) { |
|
119 delete mRequestPtr; |
|
120 mRequestPtr = NULL; |
|
121 } |
|
122 } |
|
123 |
97 } // WRT |
124 } // WRT |