--- a/qthighway/xqservice/src/xqaiwutils.cpp Fri Jun 11 14:26:25 2010 +0300
+++ b/qthighway/xqservice/src/xqaiwutils.cpp Wed Jun 23 19:08:38 2010 +0300
@@ -44,6 +44,7 @@
virtual ~XQAiwUtilsPrivate();
void launchApplicationL(int applicationId, const QString &cmdArguments);
+ int launchFile(const QVariant &file);
int findApplicationFromApa(const QString &file, int &applicationId, QString &mimeType);
int findApplicationFromApa(const XQSharableFile &file, int &applicationId, QString &mimeType);
bool applicationExists(int applicationId);
@@ -69,13 +70,27 @@
delete d;
};
-int XQAiwUtils::launchApplication(int applicationId, const QString &cmdArguments)
+int XQAiwUtils::launchApplication(int applicationId, const QList<QVariant> &arguments)
{
TInt error = KErrNone;
- TRAP(error, d->launchApplicationL(applicationId, cmdArguments));
+
+ // Create space separated command line args
+ QString args = createCmdlineArgs(arguments);
+ XQSERVICE_DEBUG_PRINT("args %s", qPrintable(args));
+
+ TRAP(error, d->launchApplicationL(applicationId, args));
return mapError(error);
}
+int XQAiwUtils::launchFile(int applicationId, const QVariant &file)
+{
+ Q_UNUSED(applicationId);
+ TInt error = KErrNone;
+ error=d->launchFile(file);
+ return mapError(error);
+}
+
+
int XQAiwUtils::mapError(int symbianError)
{
XQSERVICE_DEBUG_PRINT("XQAiwUtils::doMapErrors");
@@ -392,6 +407,43 @@
}
+int XQAiwUtilsPrivate::launchFile(const QVariant &file)
+{
+ XQSERVICE_DEBUG_PRINT("XQAiwUtils::launchFile");
+
+ TThreadId startedApp;
+ TInt err=KErrNone;
+ if (file.typeName() == QString("XQSharableFile"))
+ {
+ XQSharableFile sharableFile = file.value<XQSharableFile>();
+ RFile fileHandle;
+ XQSERVICE_DEBUG_PRINT("\tStarting file by handle %s", qPrintable(sharableFile.fileName()));
+ if (!sharableFile.getHandle(fileHandle))
+ {
+ err=KErrArgument;
+ }
+ else
+ {
+ err = apaSession.StartDocument(fileHandle, startedApp);
+ }
+ }
+ else
+ {
+ QString fileName = file.toString();
+ fileName.replace("/", "\\"); // Normalize just-in case
+ XQSERVICE_DEBUG_PRINT("\tStarting file %s", qPrintable(fileName));
+ TPtrC fname( reinterpret_cast<const TUint16*>(fileName.utf16()) );
+ err=apaSession.StartDocument(fname, startedApp);
+ }
+
+ XQSERVICE_DEBUG_PRINT("XQAiwUtils::launchFile status=%d", err);
+ return err;
+
+}
+
+
+
+
int XQAiwUtilsPrivate::findApplicationFromApa(const QString &file, int &applicationId, QString &mimeType)
{
QString fileName = file;