emailuis/nmailui/src/nmuriserviceinterface.cpp
author hgs
Wed, 15 Sep 2010 12:09:55 +0300
changeset 68 83cc6bae1de8
parent 62 a8c646b56683
child 74 6c59112cfd31
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
43
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: NMail Application Launcher interface used for interfacing between
hgs
parents:
diff changeset
    15
*              QT highway and other applications
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
//  INCLUDES
hgs
parents:
diff changeset
    20
#include "nmuiheaders.h"
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
/*!
hgs
parents:
diff changeset
    23
    \class NmStartParamDataHelper
hgs
parents:
diff changeset
    24
    \brief A helper class for processing the data given to the actual service.
hgs
parents:
diff changeset
    25
*/
hgs
parents:
diff changeset
    26
class NmStartParamDataHelper
hgs
parents:
diff changeset
    27
{
hgs
parents:
diff changeset
    28
public:
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
    /*!
hgs
parents:
diff changeset
    31
        Class constructor.
hgs
parents:
diff changeset
    32
    */
hgs
parents:
diff changeset
    33
    inline NmStartParamDataHelper()
47
hgs
parents: 43
diff changeset
    34
    : mSubject(NULL),
hgs
parents: 43
diff changeset
    35
      mToAddresses(NULL),
hgs
parents: 43
diff changeset
    36
      mCcAddresses(NULL),
68
hgs
parents: 62
diff changeset
    37
      mBccAddresses(NULL),
hgs
parents: 62
diff changeset
    38
      mBodyText(NULL)
43
hgs
parents:
diff changeset
    39
    {
hgs
parents:
diff changeset
    40
        NM_FUNCTION;
hgs
parents:
diff changeset
    41
    }
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
    /*!
hgs
parents:
diff changeset
    44
        Class destructor.
hgs
parents:
diff changeset
    45
    */
hgs
parents:
diff changeset
    46
    inline ~NmStartParamDataHelper()
hgs
parents:
diff changeset
    47
    {
hgs
parents:
diff changeset
    48
        NM_FUNCTION;
hgs
parents:
diff changeset
    49
    }
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
    /*!
hgs
parents:
diff changeset
    52
        Extracts the data from the given QString into the class members.
hgs
parents:
diff changeset
    53
        \param data QString containing the data.
hgs
parents:
diff changeset
    54
        \return True if success, false otherwise.
hgs
parents:
diff changeset
    55
    */
hgs
parents:
diff changeset
    56
    inline bool extractData(const QString &data)
hgs
parents:
diff changeset
    57
    {
hgs
parents:
diff changeset
    58
        NM_FUNCTION;
hgs
parents:
diff changeset
    59
        
47
hgs
parents: 43
diff changeset
    60
        bool success(false);
43
hgs
parents:
diff changeset
    61
        
hgs
parents:
diff changeset
    62
        QUrl uri(data);
hgs
parents:
diff changeset
    63
        
hgs
parents:
diff changeset
    64
        if (uri.isValid()) {
hgs
parents:
diff changeset
    65
            
hgs
parents:
diff changeset
    66
            mSubject = new QString(uri.queryItemValue(emailSendSubjectKey));
hgs
parents:
diff changeset
    67
            QString to = uri.path();
hgs
parents:
diff changeset
    68
            QString cc = uri.queryItemValue(emailSendCcKey);
hgs
parents:
diff changeset
    69
            QString bcc = uri.queryItemValue(emailSendBccKey);
68
hgs
parents: 62
diff changeset
    70
			QString bodyText = uri.queryItemValue(emailSendBodyTextKey);
hgs
parents: 62
diff changeset
    71
			if (bodyText.length()) {
hgs
parents: 62
diff changeset
    72
			    mBodyText = new QString(bodyText);
hgs
parents: 62
diff changeset
    73
			}
43
hgs
parents:
diff changeset
    74
            
hgs
parents:
diff changeset
    75
            addAddressesToList(to, &mToAddresses);
hgs
parents:
diff changeset
    76
            addAddressesToList(cc, &mCcAddresses);
hgs
parents:
diff changeset
    77
            addAddressesToList(bcc, &mBccAddresses);
hgs
parents:
diff changeset
    78
            
hgs
parents:
diff changeset
    79
            success = true;
hgs
parents:
diff changeset
    80
        }
hgs
parents:
diff changeset
    81
        
hgs
parents:
diff changeset
    82
        return success;
hgs
parents:
diff changeset
    83
    }
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
    /*!
hgs
parents:
diff changeset
    86
        Appends the given addresses into the given list.
hgs
parents:
diff changeset
    87
        \param address The addresses to append.
hgs
parents:
diff changeset
    88
        \param list The list where the addresses are appended to.
hgs
parents:
diff changeset
    89
    */
hgs
parents:
diff changeset
    90
    inline void addAddressesToList(QString &addresses,
hgs
parents:
diff changeset
    91
                                   QList<NmAddress*> **list)
hgs
parents:
diff changeset
    92
    {
hgs
parents:
diff changeset
    93
        NM_FUNCTION;
hgs
parents:
diff changeset
    94
        
hgs
parents:
diff changeset
    95
        if (!addresses.isEmpty()) {
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
            QList<NmAddress*> foundAddresses;
hgs
parents:
diff changeset
    98
                    
hgs
parents:
diff changeset
    99
            // Process multiple addresses.
hgs
parents:
diff changeset
   100
            if (addresses.contains(",")) {
hgs
parents:
diff changeset
   101
                QString str;               
hgs
parents:
diff changeset
   102
                while (addresses.contains(",")) {
hgs
parents:
diff changeset
   103
                    str = addresses.section(",", 0, 0); // Get the occurance.
hgs
parents:
diff changeset
   104
                    addresses.remove(0, (addresses.indexOf(",")+1)); // Remove the occurance.
hgs
parents:
diff changeset
   105
                    if (!str.isEmpty()) { // In case str would be empty on some error data. 
hgs
parents:
diff changeset
   106
                        NmAddress *address = new NmAddress(str);
hgs
parents:
diff changeset
   107
                        foundAddresses.append(address);    
hgs
parents:
diff changeset
   108
                    }
hgs
parents:
diff changeset
   109
                }
hgs
parents:
diff changeset
   110
            }
hgs
parents:
diff changeset
   111
            if (!addresses.isEmpty()) { // In case addresses would be empty on some error data. 
hgs
parents:
diff changeset
   112
                // Last one or single address.
hgs
parents:
diff changeset
   113
                NmAddress *address = new NmAddress(addresses);
hgs
parents:
diff changeset
   114
                foundAddresses.append(address);
hgs
parents:
diff changeset
   115
            }
hgs
parents:
diff changeset
   116
            // Append the found addresses into the given list.
hgs
parents:
diff changeset
   117
            *list = new QList<NmAddress*>();
hgs
parents:
diff changeset
   118
            (*list)->append(foundAddresses);
hgs
parents:
diff changeset
   119
        }
hgs
parents:
diff changeset
   120
    }
hgs
parents:
diff changeset
   121
        
hgs
parents:
diff changeset
   122
    /*!
hgs
parents:
diff changeset
   123
        Deletes the class members. Must be used if NmUiStartParam does not
hgs
parents:
diff changeset
   124
        take ownership of the members.
hgs
parents:
diff changeset
   125
    */
hgs
parents:
diff changeset
   126
    inline void deleteData()
hgs
parents:
diff changeset
   127
    {
hgs
parents:
diff changeset
   128
        NM_FUNCTION;
hgs
parents:
diff changeset
   129
        
hgs
parents:
diff changeset
   130
        delete mSubject;
68
hgs
parents: 62
diff changeset
   131
        mSubject = NULL;
43
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
        if (mToAddresses) {
hgs
parents:
diff changeset
   134
            qDeleteAll(*mToAddresses);
hgs
parents:
diff changeset
   135
            delete mToAddresses;
68
hgs
parents: 62
diff changeset
   136
            mToAddresses = NULL;
43
hgs
parents:
diff changeset
   137
        }
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
        if (mCcAddresses) {
hgs
parents:
diff changeset
   140
            qDeleteAll(*mCcAddresses);
hgs
parents:
diff changeset
   141
            delete mCcAddresses;
68
hgs
parents: 62
diff changeset
   142
            mCcAddresses = NULL;
43
hgs
parents:
diff changeset
   143
        }
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
        if (mBccAddresses) {
hgs
parents:
diff changeset
   146
            qDeleteAll(*mBccAddresses);
hgs
parents:
diff changeset
   147
            delete mBccAddresses;
68
hgs
parents: 62
diff changeset
   148
            mBccAddresses = NULL;
43
hgs
parents:
diff changeset
   149
        }
68
hgs
parents: 62
diff changeset
   150
        
hgs
parents: 62
diff changeset
   151
        delete mBodyText;
hgs
parents: 62
diff changeset
   152
        mBodyText = NULL;
43
hgs
parents:
diff changeset
   153
    }
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
public: // Data
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
    QString *mSubject; // Not owned.
hgs
parents:
diff changeset
   158
    QList<NmAddress*> *mToAddresses; // Not owned.
hgs
parents:
diff changeset
   159
    QList<NmAddress*> *mCcAddresses; // Not owned.
hgs
parents:
diff changeset
   160
    QList<NmAddress*> *mBccAddresses; // Not owned.
68
hgs
parents: 62
diff changeset
   161
    QString *mBodyText;
43
hgs
parents:
diff changeset
   162
};
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
/*!
hgs
parents:
diff changeset
   165
    \class NmUriServiceInterface
hgs
parents:
diff changeset
   166
    \brief NMail application service interface which provides an email sending
hgs
parents:
diff changeset
   167
           interface for other application using the Qt Highway.
hgs
parents:
diff changeset
   168
*/
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
/*!
hgs
parents:
diff changeset
   171
    Class constructor.
hgs
parents:
diff changeset
   172
*/
hgs
parents:
diff changeset
   173
NmUriServiceInterface::NmUriServiceInterface(QObject *parent,
hgs
parents:
diff changeset
   174
                                               NmUiEngine &uiEngine,
hgs
parents:
diff changeset
   175
                                               NmApplication *application)
hgs
parents:
diff changeset
   176
    : XQServiceProvider(emailServiceName+"."+XQI_URI_VIEW, parent),
hgs
parents:
diff changeset
   177
      mApplication(application),
hgs
parents:
diff changeset
   178
      mUiEngine(uiEngine),
hgs
parents:
diff changeset
   179
      mAsyncReqId(0),
hgs
parents:
diff changeset
   180
      mStartParam(NULL),
hgs
parents:
diff changeset
   181
      mSelectionDialog(NULL),
hgs
parents:
diff changeset
   182
      mCurrentView(NULL)
hgs
parents:
diff changeset
   183
{
hgs
parents:
diff changeset
   184
    publishAll();
hgs
parents:
diff changeset
   185
}
hgs
parents:
diff changeset
   186
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
/*!
hgs
parents:
diff changeset
   189
    Class desctructor.
hgs
parents:
diff changeset
   190
*/
hgs
parents:
diff changeset
   191
NmUriServiceInterface::~NmUriServiceInterface()
hgs
parents:
diff changeset
   192
{
hgs
parents:
diff changeset
   193
    NM_FUNCTION;
hgs
parents:
diff changeset
   194
    
hgs
parents:
diff changeset
   195
    delete mStartParam;
hgs
parents:
diff changeset
   196
    delete mSelectionDialog;
hgs
parents:
diff changeset
   197
}
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
/*!
hgs
parents:
diff changeset
   201
    Queries the user for a mailbox to use.
hgs
parents:
diff changeset
   202
    \param mailboxId Where the ID of the selected mailbox is set.
hgs
parents:
diff changeset
   203
    \return True if a mailbox was selected, false otherwise.
hgs
parents:
diff changeset
   204
*/
hgs
parents:
diff changeset
   205
void NmUriServiceInterface::selectionDialogClosed(NmId &mailboxId)
hgs
parents:
diff changeset
   206
{
hgs
parents:
diff changeset
   207
    NM_FUNCTION;
hgs
parents:
diff changeset
   208
    
hgs
parents:
diff changeset
   209
    if (mailboxId.id()) { // mailbox selected
hgs
parents:
diff changeset
   210
        launchEditorView(mailboxId);
hgs
parents:
diff changeset
   211
    }
hgs
parents:
diff changeset
   212
    else {
hgs
parents:
diff changeset
   213
        cancelService();
hgs
parents:
diff changeset
   214
    }
hgs
parents:
diff changeset
   215
}
hgs
parents:
diff changeset
   216
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
/*!
hgs
parents:
diff changeset
   219
    Used from external applications to handle mailto: uri's.
hgs
parents:
diff changeset
   220
hgs
parents:
diff changeset
   221
    \param data <mailto:> uri
hgs
parents:
diff changeset
   222
*/
hgs
parents:
diff changeset
   223
bool NmUriServiceInterface::view(const QString& uri)
hgs
parents:
diff changeset
   224
{
hgs
parents:
diff changeset
   225
    NM_FUNCTION;
47
hgs
parents: 43
diff changeset
   226
      
hgs
parents: 43
diff changeset
   227
    HbMainWindow *mainWindow(NULL);
hgs
parents: 43
diff changeset
   228
    if (mApplication) {
hgs
parents: 43
diff changeset
   229
        // Make sure that nmail stays background if user presses back in editorview
hgs
parents: 43
diff changeset
   230
        mApplication->updateVisibilityState();
hgs
parents: 43
diff changeset
   231
        
hgs
parents: 43
diff changeset
   232
        mainWindow = mApplication->mainWindow();
hgs
parents: 43
diff changeset
   233
        if (mainWindow) {
hgs
parents: 43
diff changeset
   234
            mCurrentView = mainWindow->currentView();  
hgs
parents: 43
diff changeset
   235
        } 
hgs
parents: 43
diff changeset
   236
    }
43
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
    // Hide the current view.
hgs
parents:
diff changeset
   239
    if (mCurrentView) {
hgs
parents:
diff changeset
   240
        mCurrentView->hide();
hgs
parents:
diff changeset
   241
    }
hgs
parents:
diff changeset
   242
    
hgs
parents:
diff changeset
   243
    // Check the given data.
hgs
parents:
diff changeset
   244
    NmStartParamDataHelper dataHelper;
hgs
parents:
diff changeset
   245
    bool validData = dataHelper.extractData(uri);
hgs
parents:
diff changeset
   246
     
hgs
parents:
diff changeset
   247
    NmMailboxListModel &mailboxListModel = mUiEngine.mailboxListModel();
hgs
parents:
diff changeset
   248
    const int count = mailboxListModel.rowCount();
hgs
parents:
diff changeset
   249
    NmId mailboxId(0);
hgs
parents:
diff changeset
   250
hgs
parents:
diff changeset
   251
    mAsyncReqId = setCurrentRequestAsync();
hgs
parents:
diff changeset
   252
hgs
parents:
diff changeset
   253
    if (!validData) {
hgs
parents:
diff changeset
   254
        // Failed to extract the data!
hgs
parents:
diff changeset
   255
        NM_ERROR(1,"NmUriServiceInterface::view(): failed to process the given data");
hgs
parents:
diff changeset
   256
        cancelService();
hgs
parents:
diff changeset
   257
    }
hgs
parents:
diff changeset
   258
    else if (count == 0) {
hgs
parents:
diff changeset
   259
        HbDeviceMessageBox note(hbTrId("txt_mail_dialog_no_mailboxes_defined"),
hgs
parents:
diff changeset
   260
                          HbMessageBox::MessageTypeInformation);
hgs
parents:
diff changeset
   261
        note.setTimeout(HbMessageBox::NoTimeout);
hgs
parents:
diff changeset
   262
        note.show();
hgs
parents:
diff changeset
   263
        cancelService();
hgs
parents:
diff changeset
   264
    }
hgs
parents:
diff changeset
   265
    else { // count > 0
47
hgs
parents: 43
diff changeset
   266
        if (mainWindow) {
hgs
parents: 43
diff changeset
   267
            mainWindow->show();        
hgs
parents: 43
diff changeset
   268
        }
43
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
    	mStartParam = new NmUiStartParam(
hgs
parents:
diff changeset
   271
        	NmUiViewMessageEditor,
hgs
parents:
diff changeset
   272
	        0, // account id
hgs
parents:
diff changeset
   273
	        0, // folder id
hgs
parents:
diff changeset
   274
    	    0, // message id
hgs
parents:
diff changeset
   275
    	    NmUiEditorMailto, // editor start mode
hgs
parents:
diff changeset
   276
	        dataHelper.mToAddresses, // address list
68
hgs
parents: 62
diff changeset
   277
    	    NULL, // attachment list
43
hgs
parents:
diff changeset
   278
        	true, // start as service
hgs
parents:
diff changeset
   279
	        dataHelper.mSubject, // message subject
hgs
parents:
diff changeset
   280
	        dataHelper.mCcAddresses, // list containing cc recipient addresses
68
hgs
parents: 62
diff changeset
   281
    	    dataHelper.mBccAddresses, // list containing bcc recipient addresses
hgs
parents: 62
diff changeset
   282
    	    dataHelper.mBodyText // body text
43
hgs
parents:
diff changeset
   283
	    );
hgs
parents:
diff changeset
   284
hgs
parents:
diff changeset
   285
        if (count == 1) {
hgs
parents:
diff changeset
   286
            // A single mailbox exists.
hgs
parents:
diff changeset
   287
            QModelIndex modelIndex = mailboxListModel.index(0, 0);
hgs
parents:
diff changeset
   288
            QVariant mailbox(mailboxListModel.data(modelIndex));
hgs
parents:
diff changeset
   289
            NmMailboxMetaData *mailboxMetaData = mailbox.value<NmMailboxMetaData*>();
hgs
parents:
diff changeset
   290
            mailboxId = mailboxMetaData->id();
hgs
parents:
diff changeset
   291
        	launchEditorView(mailboxId);
hgs
parents:
diff changeset
   292
        }
hgs
parents:
diff changeset
   293
        else { // count > 1
hgs
parents:
diff changeset
   294
            if (!mSelectionDialog) {
hgs
parents:
diff changeset
   295
                mSelectionDialog =
hgs
parents:
diff changeset
   296
                    new NmMailboxSelectionDialog(mUiEngine.mailboxListModel());
hgs
parents:
diff changeset
   297
            }
62
hgs
parents: 47
diff changeset
   298
            
hgs
parents: 47
diff changeset
   299
            if (!XQServiceUtil::isEmbedded()) {
hgs
parents: 47
diff changeset
   300
                XQServiceUtil::toBackground(false);
hgs
parents: 47
diff changeset
   301
            }
hgs
parents: 47
diff changeset
   302
            
43
hgs
parents:
diff changeset
   303
            connect(mSelectionDialog,SIGNAL(selectionDialogClosed(NmId&)),
hgs
parents:
diff changeset
   304
                this,SLOT(selectionDialogClosed(NmId&)));
hgs
parents:
diff changeset
   305
            mSelectionDialog->open();
hgs
parents:
diff changeset
   306
hgs
parents:
diff changeset
   307
            // launch the editor when the dialog is closed
hgs
parents:
diff changeset
   308
        }
hgs
parents:
diff changeset
   309
    }
hgs
parents:
diff changeset
   310
    
hgs
parents:
diff changeset
   311
    return true;
hgs
parents:
diff changeset
   312
}
hgs
parents:
diff changeset
   313
hgs
parents:
diff changeset
   314
/*!
hgs
parents:
diff changeset
   315
    Called when mailbox id is known and editor can be opened
hgs
parents:
diff changeset
   316
    \param mailboxId mailbox using in editor
hgs
parents:
diff changeset
   317
 */
hgs
parents:
diff changeset
   318
void NmUriServiceInterface::launchEditorView(NmId mailboxId)
hgs
parents:
diff changeset
   319
{
hgs
parents:
diff changeset
   320
    NM_FUNCTION;
hgs
parents:
diff changeset
   321
    NM_COMMENT(QString("NmUriServiceInterface::launchEditorView(): mailboxId=%1").arg(mailboxId.id()));
hgs
parents:
diff changeset
   322
    
hgs
parents:
diff changeset
   323
    // Make the previous view visible again.
hgs
parents:
diff changeset
   324
    if (mCurrentView) {
hgs
parents:
diff changeset
   325
        mCurrentView->show();
hgs
parents:
diff changeset
   326
        mCurrentView = NULL;
hgs
parents:
diff changeset
   327
    }
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
    if (mStartParam) {
62
hgs
parents: 47
diff changeset
   330
        // Make sure the NMail application is in the foreground
hgs
parents: 47
diff changeset
   331
        if (!XQServiceUtil::isEmbedded()) {
hgs
parents: 47
diff changeset
   332
            XQServiceUtil::toBackground(false);    
hgs
parents: 47
diff changeset
   333
        }
hgs
parents: 47
diff changeset
   334
        
43
hgs
parents:
diff changeset
   335
        mStartParam->setMailboxId(mailboxId);
hgs
parents:
diff changeset
   336
        mApplication->enterNmUiView(mStartParam);
hgs
parents:
diff changeset
   337
        mStartParam = NULL; // ownership passed
hgs
parents:
diff changeset
   338
    }
hgs
parents:
diff changeset
   339
    completeRequest(mAsyncReqId, 1);
hgs
parents:
diff changeset
   340
    mAsyncReqId = 0;
hgs
parents:
diff changeset
   341
}
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
void NmUriServiceInterface::cancelService()
hgs
parents:
diff changeset
   344
{
hgs
parents:
diff changeset
   345
    NM_FUNCTION;
hgs
parents:
diff changeset
   346
    
hgs
parents:
diff changeset
   347
    delete mStartParam;
hgs
parents:
diff changeset
   348
    mStartParam = NULL;
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
    // If the service was started as embedded, do not hide the app.
hgs
parents:
diff changeset
   351
    if (!XQServiceUtil::isEmbedded()) {
hgs
parents:
diff changeset
   352
        XQServiceUtil::toBackground(true);
hgs
parents:
diff changeset
   353
    }
hgs
parents:
diff changeset
   354
hgs
parents:
diff changeset
   355
    completeRequest(mAsyncReqId, 0);
hgs
parents:
diff changeset
   356
    mAsyncReqId = 0;
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
    // If started as service, the application must be closed now.
hgs
parents:
diff changeset
   359
    if (XQServiceUtil::isService()) {
hgs
parents:
diff changeset
   360
        connect(this, SIGNAL(returnValueDelivered()),
hgs
parents:
diff changeset
   361
            mApplication, SLOT(delayedExitApplication()));
hgs
parents:
diff changeset
   362
    }
hgs
parents:
diff changeset
   363
    else {
hgs
parents:
diff changeset
   364
        // Make the previous view visible again
hgs
parents:
diff changeset
   365
        if (mCurrentView) {
hgs
parents:
diff changeset
   366
            mCurrentView->show();
hgs
parents:
diff changeset
   367
            mCurrentView = NULL;
hgs
parents:
diff changeset
   368
        }
hgs
parents:
diff changeset
   369
    }
hgs
parents:
diff changeset
   370
}
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
// End of file.