satui/satapp/src/satappserverdispatcher.cpp
author hgs
Wed, 21 Jul 2010 18:26:52 +0300
changeset 33 8d5d7fcf9b59
child 35 6aefa3341fcc
permissions -rw-r--r--
201027
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
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: Receives UI commands from SAT server and converts to QT
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// qt
hgs
parents:
diff changeset
    19
#include <QStringList>
hgs
parents:
diff changeset
    20
#include <qglobal.h>
hgs
parents:
diff changeset
    21
#include <QCoreApplication>
hgs
parents:
diff changeset
    22
// symbian
hgs
parents:
diff changeset
    23
#include <centralrepository.h>
hgs
parents:
diff changeset
    24
#include <ProfileEngineSDKCRKeys.h>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
// sat
hgs
parents:
diff changeset
    27
#include <msatuiadapter.h>
hgs
parents:
diff changeset
    28
#include "satappserverdispatcher.h"
hgs
parents:
diff changeset
    29
#include "satappaction.h"
hgs
parents:
diff changeset
    30
#include "satappconstant.h"
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    34
// SatAppServerDispatcher::SatAppServerDispatcher
hgs
parents:
diff changeset
    35
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    36
//
hgs
parents:
diff changeset
    37
SatAppServerDispatcher::SatAppServerDispatcher(QObject *parent) :
hgs
parents:
diff changeset
    38
    QObject(parent)
hgs
parents:
diff changeset
    39
{
hgs
parents:
diff changeset
    40
    qDebug("SATAPP: SatAppServerDispatcher::SatAppServerDispatcher");
hgs
parents:
diff changeset
    41
    QT_TRAP_THROWING(ConnectSatSessionL());
hgs
parents:
diff changeset
    42
}
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    45
// SatAppServerDispatcher::~SatAppServerDispatcher
hgs
parents:
diff changeset
    46
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    47
//
hgs
parents:
diff changeset
    48
SatAppServerDispatcher::~SatAppServerDispatcher()
hgs
parents:
diff changeset
    49
{
hgs
parents:
diff changeset
    50
    qDebug("SATAPP: SatAppServerDispatcher::~SatAppServerDispatcher");
hgs
parents:
diff changeset
    51
    DisconnectSatSession();
hgs
parents:
diff changeset
    52
}
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    55
// SatAppServerDispatcher::menuSelection
hgs
parents:
diff changeset
    56
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    57
//
hgs
parents:
diff changeset
    58
void SatAppServerDispatcher::menuSelection(SatAppAction* action)
hgs
parents:
diff changeset
    59
{
hgs
parents:
diff changeset
    60
    qDebug("SATAPP: SatAppServerDispatcher::menuSelection >");
hgs
parents:
diff changeset
    61
    if ( ESatSuccess == action->response() ) {
hgs
parents:
diff changeset
    62
        // user selected item from menu
hgs
parents:
diff changeset
    63
        int menuItem = action->value(KeySelection).toInt();
hgs
parents:
diff changeset
    64
        int helpRequested = action->value(KeyHelpRequested).toBool();
hgs
parents:
diff changeset
    65
        qDebug("SATAPP: SatAppServerDispatcher::MenuSelection item=%d",
hgs
parents:
diff changeset
    66
            menuItem);
hgs
parents:
diff changeset
    67
        iSat.Adapter()->MenuSelection(menuItem, helpRequested);
hgs
parents:
diff changeset
    68
    } else if (ESatSessionTerminatedByUser == action->response()) {
hgs
parents:
diff changeset
    69
        // session terminated while executing the menu action
hgs
parents:
diff changeset
    70
        qDebug("SATAPP: SatAppServerDispatcher::SessionTerminated");
hgs
parents:
diff changeset
    71
        iSat.Adapter()->SessionTerminated(EEndKeyUsed);
hgs
parents:
diff changeset
    72
    }
hgs
parents:
diff changeset
    73
    delete action;
hgs
parents:
diff changeset
    74
    qDebug("SATAPP: SatAppServerDispatcher::menuSelection <");
hgs
parents:
diff changeset
    75
}
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    78
// SatAppServerDispatcher::userCancelResponse
hgs
parents:
diff changeset
    79
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    80
//
hgs
parents:
diff changeset
    81
void SatAppServerDispatcher::userCancelSession(SatAppAction* action)
hgs
parents:
diff changeset
    82
{
hgs
parents:
diff changeset
    83
    qDebug("SATAPP: SatAppServerDispatcher::userCancelSession");
hgs
parents:
diff changeset
    84
    if (action && ESatBackwardModeRequestedByUser == action->response()){
hgs
parents:
diff changeset
    85
        iSat.Adapter()->SessionTerminated(ESessionCancel);
hgs
parents:
diff changeset
    86
    }    
hgs
parents:
diff changeset
    87
    delete action;
hgs
parents:
diff changeset
    88
    action = 0;
hgs
parents:
diff changeset
    89
}
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
// ****************************************************************************
hgs
parents:
diff changeset
    93
// * ************************************************************************ *
hgs
parents:
diff changeset
    94
// * *                          SYMBIAN PART                                * *
hgs
parents:
diff changeset
    95
// * ************************************************************************ *
hgs
parents:
diff changeset
    96
// ****************************************************************************
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    99
// SatAppServerDispatcher::ConnectSatSessionL
hgs
parents:
diff changeset
   100
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   101
//
hgs
parents:
diff changeset
   102
void SatAppServerDispatcher::ConnectSatSessionL()
hgs
parents:
diff changeset
   103
{
hgs
parents:
diff changeset
   104
    qDebug("SATAPP: SatAppServerDispatcher::ConnectSatSessionL>");
hgs
parents:
diff changeset
   105
    //Register to Server as subsession
hgs
parents:
diff changeset
   106
    //If Server is not up, this function call may take time
hgs
parents:
diff changeset
   107
    iSatSession.ConnectL();
hgs
parents:
diff changeset
   108
    iSat.RegisterL(iSatSession, this);
hgs
parents:
diff changeset
   109
    if (!iSat.Adapter())
hgs
parents:
diff changeset
   110
        User::Leave(KErrNotFound);
hgs
parents:
diff changeset
   111
    qDebug("SATAPP: SatAppServerDispatcher::ConnectSatSessionL<");
hgs
parents:
diff changeset
   112
}
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   115
// SatAppServerDispatcher::DisconnectSatSession
hgs
parents:
diff changeset
   116
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   117
//
hgs
parents:
diff changeset
   118
void SatAppServerDispatcher::DisconnectSatSession()
hgs
parents:
diff changeset
   119
{
hgs
parents:
diff changeset
   120
    qDebug("SATAPP: SatAppServerDispatcher::DisconnectSatSession>");
hgs
parents:
diff changeset
   121
    iSat.Close();
hgs
parents:
diff changeset
   122
    iSatSession.Close();
hgs
parents:
diff changeset
   123
    qDebug("SATAPP: SatAppServerDispatcher::DisconnectSatSession<");
hgs
parents:
diff changeset
   124
}
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   127
// SatAppServerDispatcher::ProfileState
hgs
parents:
diff changeset
   128
// Get the profile status
hgs
parents:
diff changeset
   129
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   130
//
hgs
parents:
diff changeset
   131
TInt SatAppServerDispatcher::ProfileState()
hgs
parents:
diff changeset
   132
    {
hgs
parents:
diff changeset
   133
    qDebug("SATAPP: SatAppServerDispatcher::ProfileState");
hgs
parents:
diff changeset
   134
    TInt profileId(0);
hgs
parents:
diff changeset
   135
    CRepository* cr (NULL);
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
    TRAPD(err, cr = CRepository::NewL(KCRUidProfileEngine));
hgs
parents:
diff changeset
   138
    if ( KErrNone == err )
hgs
parents:
diff changeset
   139
        {
hgs
parents:
diff changeset
   140
        // Get the ID of the currently active profile:
hgs
parents:
diff changeset
   141
        const TInt error = cr->Get(KProEngActiveProfile, profileId);
hgs
parents:
diff changeset
   142
        qDebug("SATAPP: SatAppServerDispatcher::ProfileState error=%d",
hgs
parents:
diff changeset
   143
                error);
hgs
parents:
diff changeset
   144
        delete cr;
hgs
parents:
diff changeset
   145
        }
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
    return profileId;
hgs
parents:
diff changeset
   148
    }
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   151
// My own quick string -> descriptor conversion function :-)
hgs
parents:
diff changeset
   152
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   153
//
hgs
parents:
diff changeset
   154
void s2d(const QString str, TDes& desc)
hgs
parents:
diff changeset
   155
{
hgs
parents:
diff changeset
   156
    desc.Copy(reinterpret_cast<const TUint16*>(str.utf16()), str.length());
hgs
parents:
diff changeset
   157
}
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   160
// SatAppServerDispatcher::DisplayTextL
hgs
parents:
diff changeset
   161
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   162
//
hgs
parents:
diff changeset
   163
TSatUiResponse SatAppServerDispatcher::DisplayTextL( const TDesC& aText,
hgs
parents:
diff changeset
   164
    const TDesC& aSimApplicationName,
hgs
parents:
diff changeset
   165
    const TSatIconId& aIconId,
hgs
parents:
diff changeset
   166
    TBool& aRequestedIconDisplayed,
hgs
parents:
diff changeset
   167
    const TBool aSustainedText,
hgs
parents:
diff changeset
   168
    const TTimeIntervalSeconds aDuration,
hgs
parents:
diff changeset
   169
    const TBool aWaitUserToClear )
hgs
parents:
diff changeset
   170
{
hgs
parents:
diff changeset
   171
    qDebug("SATAPP: SatAppServerDispatcher::DisplayTextL >");
hgs
parents:
diff changeset
   172
    Q_UNUSED(aIconId);
hgs
parents:
diff changeset
   173
    SatAppAction action(ESatDisplayTextAction);
hgs
parents:
diff changeset
   174
    // validate
hgs
parents:
diff changeset
   175
    if (aText.Length()== 0 || aText.Length()>RSat::KTextToDisplayMaxSize){
hgs
parents:
diff changeset
   176
        qDebug("SATAPP: SatAppServerDispatcher::DisplayText no text");
hgs
parents:
diff changeset
   177
        aRequestedIconDisplayed = EFalse;
hgs
parents:
diff changeset
   178
        return ESatFailure;
hgs
parents:
diff changeset
   179
    }
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
    QT_TRYCATCH_LEAVING(
hgs
parents:
diff changeset
   182
        // ensure state
hgs
parents:
diff changeset
   183
        emit stopShowWaitNote();
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
        // call
hgs
parents:
diff changeset
   186
        action.set(KeyText,aText);
hgs
parents:
diff changeset
   187
        action.set(KeyApplicationName, aSimApplicationName);
hgs
parents:
diff changeset
   188
        action.set(KeySustainedText, aSustainedText);
hgs
parents:
diff changeset
   189
        action.set(KeyDuration, const_cast<TTimeIntervalSeconds &>(aDuration));
hgs
parents:
diff changeset
   190
        action.set(KeyWaitUserToClear, aWaitUserToClear);
hgs
parents:
diff changeset
   191
hgs
parents:
diff changeset
   192
        emit displayText(action);
hgs
parents:
diff changeset
   193
        action.waitUntilCompleted();
hgs
parents:
diff changeset
   194
    );
hgs
parents:
diff changeset
   195
hgs
parents:
diff changeset
   196
    // return
hgs
parents:
diff changeset
   197
    qDebug("SATAPP: SatAppServerDispatcher::DisplayTextL action.response() %x<", 
hgs
parents:
diff changeset
   198
        action.response());
hgs
parents:
diff changeset
   199
    return action.response();
hgs
parents:
diff changeset
   200
}
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   203
// SatAppServerDispatcher::GetInkeyL
hgs
parents:
diff changeset
   204
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   205
//
hgs
parents:
diff changeset
   206
TSatUiResponse SatAppServerDispatcher::GetInkeyL(
hgs
parents:
diff changeset
   207
    const TDesC& aText,
hgs
parents:
diff changeset
   208
    const TSatCharacterSet aCharacterSet,
hgs
parents:
diff changeset
   209
    TChar& aInput,
hgs
parents:
diff changeset
   210
    const TBool aHelpIsAvailable,
hgs
parents:
diff changeset
   211
    const TSatIconId& aIconId,
hgs
parents:
diff changeset
   212
    TBool& aRequestedIconDisplayed,
hgs
parents:
diff changeset
   213
    TUint& aDuration,
hgs
parents:
diff changeset
   214
    const TBool aImmediateDigitResponse )
hgs
parents:
diff changeset
   215
{
hgs
parents:
diff changeset
   216
    Q_UNUSED(aHelpIsAvailable);
hgs
parents:
diff changeset
   217
    Q_UNUSED(aIconId);
hgs
parents:
diff changeset
   218
    
hgs
parents:
diff changeset
   219
    qDebug("SATAPP: SatAppServerDispatcher::GetInkeyL >");
hgs
parents:
diff changeset
   220
hgs
parents:
diff changeset
   221
    // validate
hgs
parents:
diff changeset
   222
    aRequestedIconDisplayed = EFalse;
hgs
parents:
diff changeset
   223
    if (ESatYesNo == aCharacterSet && aText.Length() == 0) {
hgs
parents:
diff changeset
   224
        qDebug("SATAPP: CSatUiObserver::GetInkey return ESatFailure");
hgs
parents:
diff changeset
   225
        return ESatFailure;
hgs
parents:
diff changeset
   226
    }
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
    SatAppAction action(ESatGetInkeyAction);
hgs
parents:
diff changeset
   229
    QT_TRYCATCH_LEAVING(
hgs
parents:
diff changeset
   230
        // ensure state
hgs
parents:
diff changeset
   231
        emit stopShowWaitNote();
hgs
parents:
diff changeset
   232
hgs
parents:
diff changeset
   233
        // call
hgs
parents:
diff changeset
   234
        action.set(KeyText,aText);
hgs
parents:
diff changeset
   235
        action.set(KeyCharacterSet,(int)aCharacterSet);
hgs
parents:
diff changeset
   236
        action.set(KeyInKey,(int)aInput);
hgs
parents:
diff changeset
   237
        // convert from SAT time units(?) to milliseconds
hgs
parents:
diff changeset
   238
        action.set(KeyDuration,(int)aDuration*KSymbianTimeConvertQtTime);
hgs
parents:
diff changeset
   239
        action.set(KeyImmediate,(bool)aImmediateDigitResponse);
hgs
parents:
diff changeset
   240
        emit getInkey(action);
hgs
parents:
diff changeset
   241
        action.waitUntilCompleted();
hgs
parents:
diff changeset
   242
        // convert from milliseconds to SAT time units(?)
hgs
parents:
diff changeset
   243
        aDuration = 
hgs
parents:
diff changeset
   244
                action.value(KeyDuration).toInt()/KSymbianTimeConvertQtTime;
hgs
parents:
diff changeset
   245
        aInput = action.value(KeyInKey).toInt();
hgs
parents:
diff changeset
   246
    );
hgs
parents:
diff changeset
   247
hgs
parents:
diff changeset
   248
    // return
hgs
parents:
diff changeset
   249
    qDebug("SATAPP: SatAppServerDispatcher::GetInkeyL <");
hgs
parents:
diff changeset
   250
    return action.response();
hgs
parents:
diff changeset
   251
}
hgs
parents:
diff changeset
   252
hgs
parents:
diff changeset
   253
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   254
// SatAppServerDispatcher::GetInputL
hgs
parents:
diff changeset
   255
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   256
//
hgs
parents:
diff changeset
   257
TSatUiResponse SatAppServerDispatcher::GetInputL(
hgs
parents:
diff changeset
   258
    const TDesC& aText,
hgs
parents:
diff changeset
   259
    const TSatCharacterSet aCharacterSet,
hgs
parents:
diff changeset
   260
    TDes& aInput,
hgs
parents:
diff changeset
   261
    const TInt aMinLength,
hgs
parents:
diff changeset
   262
    const TInt aMaxLength,
hgs
parents:
diff changeset
   263
    const TBool aHideInput,
hgs
parents:
diff changeset
   264
    const TBool aHelpIsAvailable,
hgs
parents:
diff changeset
   265
    const TSatIconId& aIconId,
hgs
parents:
diff changeset
   266
    TBool& aRequestedIconDisplayed )
hgs
parents:
diff changeset
   267
{
hgs
parents:
diff changeset
   268
    Q_UNUSED(aHelpIsAvailable);
hgs
parents:
diff changeset
   269
    Q_UNUSED(aIconId);
hgs
parents:
diff changeset
   270
    qDebug("SATAPP: SatAppServerDispatcher::GetInputL >");
hgs
parents:
diff changeset
   271
hgs
parents:
diff changeset
   272
    // validate
hgs
parents:
diff changeset
   273
    aRequestedIconDisplayed = EFalse;
hgs
parents:
diff changeset
   274
    if ((aCharacterSet == ESatCharSmsDefaultAlphabet ||
hgs
parents:
diff changeset
   275
         aCharacterSet == ESatCharUcs2Alphabet) &&
hgs
parents:
diff changeset
   276
         aHideInput) {
hgs
parents:
diff changeset
   277
        qDebug("SATAPP: SatAppServerDispatcher::GetInput return ESatFailure");
hgs
parents:
diff changeset
   278
        return ESatFailure;
hgs
parents:
diff changeset
   279
    }
hgs
parents:
diff changeset
   280
hgs
parents:
diff changeset
   281
    SatAppAction action(ESatGetInputAction);
hgs
parents:
diff changeset
   282
    QT_TRYCATCH_LEAVING(
hgs
parents:
diff changeset
   283
        // ensure state
hgs
parents:
diff changeset
   284
        emit stopShowWaitNote();
hgs
parents:
diff changeset
   285
    
hgs
parents:
diff changeset
   286
        // call
hgs
parents:
diff changeset
   287
        action.set(KeyText,aText);
hgs
parents:
diff changeset
   288
        action.set(KeyCharacterSet,(int)aCharacterSet);
hgs
parents:
diff changeset
   289
        action.set(KeyInputString,aInput);
hgs
parents:
diff changeset
   290
        action.set(KeyMinLength,aMinLength);
hgs
parents:
diff changeset
   291
        action.set(KeyMaxLength,aMaxLength);
hgs
parents:
diff changeset
   292
        action.set(KeyHideInput,(bool)aHideInput);
hgs
parents:
diff changeset
   293
        emit getInput(action);
hgs
parents:
diff changeset
   294
        action.waitUntilCompleted();
hgs
parents:
diff changeset
   295
        s2d(action.value(KeyInputString).toString(), aInput);
hgs
parents:
diff changeset
   296
    )
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298
    // return
hgs
parents:
diff changeset
   299
    qDebug("SATAPP: SatAppServerDispatcher::GetInputL <");
hgs
parents:
diff changeset
   300
    return action.response();
hgs
parents:
diff changeset
   301
}
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   304
// SatAppServerDispatcher::SetUpMenuL
hgs
parents:
diff changeset
   305
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   306
//
hgs
parents:
diff changeset
   307
TSatUiResponse SatAppServerDispatcher::SetUpMenuL(
hgs
parents:
diff changeset
   308
    const TDesC& aText,
hgs
parents:
diff changeset
   309
    const MDesCArray& aMenuItems,
hgs
parents:
diff changeset
   310
    const CArrayFixFlat<TSatAction>* aMenuItemNextActions,
hgs
parents:
diff changeset
   311
    const TBool aHelpIsAvailable,
hgs
parents:
diff changeset
   312
    const TSatIconId& aIconId,
hgs
parents:
diff changeset
   313
    const CArrayFixFlat<TInt>* aMenuIcons,
hgs
parents:
diff changeset
   314
    const enum TSatIconQualifier aIconListQualifier,
hgs
parents:
diff changeset
   315
    const enum TSatSelectionPreference aSelectionPreference )
hgs
parents:
diff changeset
   316
{
hgs
parents:
diff changeset
   317
    Q_UNUSED(aMenuItemNextActions);
hgs
parents:
diff changeset
   318
    Q_UNUSED(aHelpIsAvailable);
hgs
parents:
diff changeset
   319
    Q_UNUSED(aIconId);
hgs
parents:
diff changeset
   320
    Q_UNUSED(aMenuIcons);
hgs
parents:
diff changeset
   321
    Q_UNUSED(aIconListQualifier);
hgs
parents:
diff changeset
   322
    Q_UNUSED(aSelectionPreference);
hgs
parents:
diff changeset
   323
    qDebug("SATAPP: SatAppServerDispatcher::SetUpMenuL >");
hgs
parents:
diff changeset
   324
hgs
parents:
diff changeset
   325
    QT_TRYCATCH_LEAVING(
hgs
parents:
diff changeset
   326
hgs
parents:
diff changeset
   327
        // validate
hgs
parents:
diff changeset
   328
        if (!aMenuItems.MdcaCount() ||
hgs
parents:
diff changeset
   329
            (KSatActiveProfileOffline == ProfileState())) {
hgs
parents:
diff changeset
   330
            emit clearScreen();
hgs
parents:
diff changeset
   331
            QCoreApplication::instance()->quit();
hgs
parents:
diff changeset
   332
            return ESatSuccess;
hgs
parents:
diff changeset
   333
        }
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
        // ensure state
hgs
parents:
diff changeset
   336
        emit stopShowWaitNote();
hgs
parents:
diff changeset
   337
    
hgs
parents:
diff changeset
   338
        // call
hgs
parents:
diff changeset
   339
        SatAppAction* action = new SatAppAction(ESatSetUpMenuAction, this);
hgs
parents:
diff changeset
   340
        action->set(KeyText,aText);
hgs
parents:
diff changeset
   341
        action->set(KeyMenu,aMenuItems);
hgs
parents:
diff changeset
   342
        // connect for asynchronous menu selection
hgs
parents:
diff changeset
   343
        connect(
hgs
parents:
diff changeset
   344
            action,SIGNAL(actionCompleted(SatAppAction*)),
hgs
parents:
diff changeset
   345
            this,SLOT(menuSelection(SatAppAction*)));
hgs
parents:
diff changeset
   346
        
hgs
parents:
diff changeset
   347
        emit setUpMenu(*action);
hgs
parents:
diff changeset
   348
    )
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
    // return
hgs
parents:
diff changeset
   351
    qDebug("SATAPP: SatAppServerDispatcher::SetUpMenuL <");
hgs
parents:
diff changeset
   352
    return ESatSuccess;
hgs
parents:
diff changeset
   353
}
hgs
parents:
diff changeset
   354
hgs
parents:
diff changeset
   355
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   356
// SatAppServerDispatcher::SelectItemL
hgs
parents:
diff changeset
   357
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   358
//
hgs
parents:
diff changeset
   359
TSatUiResponse SatAppServerDispatcher::SelectItemL(
hgs
parents:
diff changeset
   360
    const TDesC& aText,
hgs
parents:
diff changeset
   361
    const MDesCArray& aMenuItems,
hgs
parents:
diff changeset
   362
    const CArrayFixFlat<TSatAction>* aMenuItemNextActions,
hgs
parents:
diff changeset
   363
    const TInt aDefaultItem,
hgs
parents:
diff changeset
   364
    TUint8& aSelection,
hgs
parents:
diff changeset
   365
    const TBool aHelpIsAvailable,
hgs
parents:
diff changeset
   366
    const TSatIconId& aIconId,
hgs
parents:
diff changeset
   367
    const CArrayFixFlat<TInt>* aMenuIcons,
hgs
parents:
diff changeset
   368
    const enum TSatIconQualifier aIconListQualifier,
hgs
parents:
diff changeset
   369
    TBool& aRequestedIconDisplayed,
hgs
parents:
diff changeset
   370
    const enum TSatSelectionPreference aSelectionPreference )
hgs
parents:
diff changeset
   371
{
hgs
parents:
diff changeset
   372
    Q_UNUSED(aMenuItemNextActions);
hgs
parents:
diff changeset
   373
    Q_UNUSED(aHelpIsAvailable);
hgs
parents:
diff changeset
   374
    Q_UNUSED(aIconId);
hgs
parents:
diff changeset
   375
    Q_UNUSED(aMenuIcons);
hgs
parents:
diff changeset
   376
    Q_UNUSED(aIconListQualifier);
hgs
parents:
diff changeset
   377
    Q_UNUSED(aRequestedIconDisplayed);
hgs
parents:
diff changeset
   378
    Q_UNUSED(aSelectionPreference);
hgs
parents:
diff changeset
   379
    TSatUiResponse resp(ESatFailure);
hgs
parents:
diff changeset
   380
    SatAppAction action(ESatSelectItemAction);
hgs
parents:
diff changeset
   381
    qDebug("SATAPP: SatAppServerDispatcher::SelectItemL >");
hgs
parents:
diff changeset
   382
hgs
parents:
diff changeset
   383
    QT_TRYCATCH_LEAVING(
hgs
parents:
diff changeset
   384
        // ensure state
hgs
parents:
diff changeset
   385
        emit stopShowWaitNote();
hgs
parents:
diff changeset
   386
    
hgs
parents:
diff changeset
   387
        // call
hgs
parents:
diff changeset
   388
        action.set(KeyText,aText);
hgs
parents:
diff changeset
   389
        action.set(KeyMenu,aMenuItems);
hgs
parents:
diff changeset
   390
        action.set(KeyDefault,aDefaultItem);
hgs
parents:
diff changeset
   391
        emit selectItem(action);
hgs
parents:
diff changeset
   392
        action.waitUntilCompleted();
hgs
parents:
diff changeset
   393
        resp = action.response();
hgs
parents:
diff changeset
   394
        if ( ESatSuccess == resp ) {
hgs
parents:
diff changeset
   395
            aSelection = static_cast<TUint8>(
hgs
parents:
diff changeset
   396
                    action.value(KeySelection).toInt());
hgs
parents:
diff changeset
   397
        }
hgs
parents:
diff changeset
   398
    )
hgs
parents:
diff changeset
   399
hgs
parents:
diff changeset
   400
    // return
hgs
parents:
diff changeset
   401
    qDebug("SATAPP: SatAppServerDispatcher::SelectItemL <");
hgs
parents:
diff changeset
   402
    return resp;
hgs
parents:
diff changeset
   403
}
hgs
parents:
diff changeset
   404
hgs
parents:
diff changeset
   405
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   406
// SatAppServerDispatcher::PlayTone
hgs
parents:
diff changeset
   407
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   408
//
hgs
parents:
diff changeset
   409
TSatUiResponse SatAppServerDispatcher::PlayTone(
hgs
parents:
diff changeset
   410
    const TDesC& aText,
hgs
parents:
diff changeset
   411
    const TSatTone aTone,
hgs
parents:
diff changeset
   412
    const TTimeIntervalMicroSeconds aDuration,
hgs
parents:
diff changeset
   413
    const TSatIconId& aIconId,
hgs
parents:
diff changeset
   414
    TBool& aRequestedIconDisplayed )
hgs
parents:
diff changeset
   415
{
hgs
parents:
diff changeset
   416
    Q_UNUSED(aIconId);
hgs
parents:
diff changeset
   417
    aRequestedIconDisplayed = EFalse;
hgs
parents:
diff changeset
   418
    TSatUiResponse resp(ESatSuccess);
hgs
parents:
diff changeset
   419
    qDebug("SATAPP: SatAppServerDispatcher::PlayTone >");
hgs
parents:
diff changeset
   420
    SatAppAction action(ESatPlayToneAction);
hgs
parents:
diff changeset
   421
    int err(KErrNone);
hgs
parents:
diff changeset
   422
    QT_TRYCATCH_ERROR(
hgs
parents:
diff changeset
   423
        err,
hgs
parents:
diff changeset
   424
        // ensure state
hgs
parents:
diff changeset
   425
        emit stopShowWaitNote();
hgs
parents:
diff changeset
   426
    
hgs
parents:
diff changeset
   427
        // call
hgs
parents:
diff changeset
   428
        action.set(KeyText,aText);
hgs
parents:
diff changeset
   429
        action.set(KeyToneId,aTone);
hgs
parents:
diff changeset
   430
        action.set(KeyDuration, const_cast<TTimeIntervalMicroSeconds &>(aDuration));
hgs
parents:
diff changeset
   431
        emit playTone(action);
hgs
parents:
diff changeset
   432
        action.waitUntilCompleted();
hgs
parents:
diff changeset
   433
        resp = action.response();
hgs
parents:
diff changeset
   434
    )
hgs
parents:
diff changeset
   435
hgs
parents:
diff changeset
   436
    // return
hgs
parents:
diff changeset
   437
    qDebug("SATAPP: SatAppServerDispatcher::PlayTone err = %d<", err);
hgs
parents:
diff changeset
   438
    return resp;
hgs
parents:
diff changeset
   439
}
hgs
parents:
diff changeset
   440
hgs
parents:
diff changeset
   441
hgs
parents:
diff changeset
   442
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   443
// SatAppServerDispatcher::ConfirmCommand
hgs
parents:
diff changeset
   444
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   445
//
hgs
parents:
diff changeset
   446
void SatAppServerDispatcher::ConfirmCommand(
hgs
parents:
diff changeset
   447
    const TSatSQueryCommand aCommandId,
hgs
parents:
diff changeset
   448
    const TSatAlphaIdStatus aAlphaIdStatus,
hgs
parents:
diff changeset
   449
    const TDesC& aText,
hgs
parents:
diff changeset
   450
    const TDesC& aAdditionalText,
hgs
parents:
diff changeset
   451
    TBool& aActionAccepted,
hgs
parents:
diff changeset
   452
    const TSatIconId& aIconId,
hgs
parents:
diff changeset
   453
    TBool& aRequestedIconDisplayed,
hgs
parents:
diff changeset
   454
    TBool& aTerminatedByUser )
hgs
parents:
diff changeset
   455
{
hgs
parents:
diff changeset
   456
    qDebug("SATAPP: SatAppServerDispatcher::ConfirmCommand >");
hgs
parents:
diff changeset
   457
    Q_UNUSED(aIconId);
hgs
parents:
diff changeset
   458
    aRequestedIconDisplayed = EFalse;
hgs
parents:
diff changeset
   459
    aTerminatedByUser = EFalse;
hgs
parents:
diff changeset
   460
    //ConfirmAction
hgs
parents:
diff changeset
   461
    SatAppAction action(ESatConfirmAction);
hgs
parents:
diff changeset
   462
    qDebug("SATAPP: SatAppServerDispatcher::ConfirmCommand");
hgs
parents:
diff changeset
   463
    int err(KErrNone);
hgs
parents:
diff changeset
   464
    QT_TRYCATCH_ERROR(
hgs
parents:
diff changeset
   465
        err,
hgs
parents:
diff changeset
   466
        emit stopShowWaitNote();
hgs
parents:
diff changeset
   467
    
hgs
parents:
diff changeset
   468
        action.set(KeyQueryCommandId, aCommandId);
hgs
parents:
diff changeset
   469
        action.set(KeyAlphaIdStatus, aAlphaIdStatus);
hgs
parents:
diff changeset
   470
        action.set(KeyText, aText);
hgs
parents:
diff changeset
   471
        action.set(KeyAdditionalText, aAdditionalText);
hgs
parents:
diff changeset
   472
        action.set(KeyActionAccepted, aActionAccepted);
hgs
parents:
diff changeset
   473
hgs
parents:
diff changeset
   474
        emit confirmCommand(action);
hgs
parents:
diff changeset
   475
        action.waitUntilCompleted();
hgs
parents:
diff changeset
   476
        if (ESatSuccess == action.response() ) {
hgs
parents:
diff changeset
   477
            aActionAccepted = ETrue;
hgs
parents:
diff changeset
   478
        }
hgs
parents:
diff changeset
   479
    )
hgs
parents:
diff changeset
   480
    qDebug("SATAPP: SatAppServerDispatcher::ConfirmCommand err = %d <", err);
hgs
parents:
diff changeset
   481
}
hgs
parents:
diff changeset
   482
hgs
parents:
diff changeset
   483
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   484
// SatAppServerDispatcher::Notification
hgs
parents:
diff changeset
   485
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   486
//
hgs
parents:
diff changeset
   487
TSatUiResponse SatAppServerDispatcher::Notification(
hgs
parents:
diff changeset
   488
    const TSatSNotifyCommand aCommandId,
hgs
parents:
diff changeset
   489
    const TSatAlphaIdStatus aAlphaIdStatus,
hgs
parents:
diff changeset
   490
    const TDesC& aText,
hgs
parents:
diff changeset
   491
    const TSatIconId& aIconId,
hgs
parents:
diff changeset
   492
    TBool& aRequestedIconDisplayed,
hgs
parents:
diff changeset
   493
    const TSatControlResult aControlResult )
hgs
parents:
diff changeset
   494
{
hgs
parents:
diff changeset
   495
    Q_UNUSED(aIconId);
hgs
parents:
diff changeset
   496
    Q_UNUSED(aRequestedIconDisplayed);
hgs
parents:
diff changeset
   497
    qDebug("SATAPP: SatAppServerDispatcher::Notification command id=%d",
hgs
parents:
diff changeset
   498
        aCommandId);
hgs
parents:
diff changeset
   499
hgs
parents:
diff changeset
   500
    TSatUiResponse res(ESatFailure);
hgs
parents:
diff changeset
   501
    int err(KErrNone);
hgs
parents:
diff changeset
   502
    switch (aCommandId)
hgs
parents:
diff changeset
   503
    {
hgs
parents:
diff changeset
   504
        // With cancel
hgs
parents:
diff changeset
   505
        case ESatSSendDataNotify:    // fall through
hgs
parents:
diff changeset
   506
        case ESatSReceiveDataNotify: // fall through
hgs
parents:
diff changeset
   507
        case ESatSSendDtmfNotify:    // fall through
hgs
parents:
diff changeset
   508
        {
hgs
parents:
diff changeset
   509
            QT_TRYCATCH_ERROR(
hgs
parents:
diff changeset
   510
                err,
hgs
parents:
diff changeset
   511
                emit stopShowWaitNote();
hgs
parents:
diff changeset
   512
                SatAppAction *action = new SatAppAction(ESatNotifyAction, this);
hgs
parents:
diff changeset
   513
                action->set(KeyText, aText);
hgs
parents:
diff changeset
   514
                action->set(KeyCommandId, aCommandId);
hgs
parents:
diff changeset
   515
                action->set(KeyAlphaIdStatus, aAlphaIdStatus);
hgs
parents:
diff changeset
   516
                action->set(KeyControlResult, aControlResult);
hgs
parents:
diff changeset
   517
                // connect for asynchronous menu selection
hgs
parents:
diff changeset
   518
                connect(
hgs
parents:
diff changeset
   519
                    action,SIGNAL(actionCompleted(SatAppAction*)),
hgs
parents:
diff changeset
   520
                    this,SLOT(userCancelSession(SatAppAction*)));
hgs
parents:
diff changeset
   521
                emit notification(*action);
hgs
parents:
diff changeset
   522
                res = ESatSuccess;
hgs
parents:
diff changeset
   523
            )
hgs
parents:
diff changeset
   524
            break;
hgs
parents:
diff changeset
   525
        }
hgs
parents:
diff changeset
   526
        // Without cancel
hgs
parents:
diff changeset
   527
        case ESatSMoSmControlNotify:  // fall through
hgs
parents:
diff changeset
   528
        case ESatSCallControlNotify:  // fall through 
hgs
parents:
diff changeset
   529
        case ESatSSendUssdNotify:     // fall through 
hgs
parents:
diff changeset
   530
        case ESatSSendSsNotify:       // fall through
hgs
parents:
diff changeset
   531
        case ESatSSendSmsNotify:      // fall through
hgs
parents:
diff changeset
   532
        case ESatSCloseChannelNotify: // fall through
hgs
parents:
diff changeset
   533
        {
hgs
parents:
diff changeset
   534
            QT_TRYCATCH_ERROR(
hgs
parents:
diff changeset
   535
                err,
hgs
parents:
diff changeset
   536
                emit stopShowWaitNote();
hgs
parents:
diff changeset
   537
                SatAppAction a(ESatNotifyAction);
hgs
parents:
diff changeset
   538
                a.set(KeyText, aText);
hgs
parents:
diff changeset
   539
                a.set(KeyCommandId, aCommandId);
hgs
parents:
diff changeset
   540
                a.set(KeyAlphaIdStatus, aAlphaIdStatus);
hgs
parents:
diff changeset
   541
                a.set(KeyControlResult, aControlResult);
hgs
parents:
diff changeset
   542
                emit notification(a);
hgs
parents:
diff changeset
   543
                res = ESatSuccess;
hgs
parents:
diff changeset
   544
            )
hgs
parents:
diff changeset
   545
            break;
hgs
parents:
diff changeset
   546
        }
hgs
parents:
diff changeset
   547
        default:
hgs
parents:
diff changeset
   548
        {
hgs
parents:
diff changeset
   549
            break;
hgs
parents:
diff changeset
   550
        }
hgs
parents:
diff changeset
   551
    }
hgs
parents:
diff changeset
   552
    qDebug("SATAPP: SatAppServerDispatcher::Notification < ret=%d", err);
hgs
parents:
diff changeset
   553
    return res;
hgs
parents:
diff changeset
   554
}
hgs
parents:
diff changeset
   555
hgs
parents:
diff changeset
   556
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   557
// SatAppServerDispatcher::EventNotification
hgs
parents:
diff changeset
   558
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   559
//
hgs
parents:
diff changeset
   560
void SatAppServerDispatcher::EventNotification(
hgs
parents:
diff changeset
   561
    const TSatSEvent aEventId,
hgs
parents:
diff changeset
   562
    const TSatSEventStatus aEventStatus,
hgs
parents:
diff changeset
   563
    const TInt aError )
hgs
parents:
diff changeset
   564
{
hgs
parents:
diff changeset
   565
    qDebug( "SATAPP: SatAppServerDispatcher::EventNotification aEventId %d", 
hgs
parents:
diff changeset
   566
        aEventId );
hgs
parents:
diff changeset
   567
    Q_UNUSED(aEventStatus);
hgs
parents:
diff changeset
   568
    Q_UNUSED(aError);
hgs
parents:
diff changeset
   569
    int err(KErrNone);
hgs
parents:
diff changeset
   570
hgs
parents:
diff changeset
   571
    QT_TRYCATCH_ERROR( err,
hgs
parents:
diff changeset
   572
    switch ( aEventId )
hgs
parents:
diff changeset
   573
        {
hgs
parents:
diff changeset
   574
        case ESatSSmEndEvent:
hgs
parents:
diff changeset
   575
        case ESatSsEndEvent:
hgs
parents:
diff changeset
   576
        case ESatSDtmfEndEvent:
hgs
parents:
diff changeset
   577
            {
hgs
parents:
diff changeset
   578
            emit stopShowWaitNote();
hgs
parents:
diff changeset
   579
            break;
hgs
parents:
diff changeset
   580
            }
hgs
parents:
diff changeset
   581
        case ESatSClearScreenEvent:
hgs
parents:
diff changeset
   582
            {
hgs
parents:
diff changeset
   583
            qDebug("SATAPP: ClearScreen event");
hgs
parents:
diff changeset
   584
            emit clearScreen();
hgs
parents:
diff changeset
   585
            break;
hgs
parents:
diff changeset
   586
            }
hgs
parents:
diff changeset
   587
       case ESatSsErrorEvent:
hgs
parents:
diff changeset
   588
            {
hgs
parents:
diff changeset
   589
            qDebug("SATAPP: Notifying Ss error" );
hgs
parents:
diff changeset
   590
            // If error occurred (and Alpha ID provided), notify user
hgs
parents:
diff changeset
   591
            emit showSsErrorNote();
hgs
parents:
diff changeset
   592
            break;
hgs
parents:
diff changeset
   593
            }
hgs
parents:
diff changeset
   594
        case ESatSCloseSatUiAppEvent:
hgs
parents:
diff changeset
   595
            {
hgs
parents:
diff changeset
   596
            qDebug(" Close UI event" );
hgs
parents:
diff changeset
   597
            emit clearScreen();
hgs
parents:
diff changeset
   598
            QCoreApplication::instance()->quit();
hgs
parents:
diff changeset
   599
            break;
hgs
parents:
diff changeset
   600
            }
hgs
parents:
diff changeset
   601
        default:
hgs
parents:
diff changeset
   602
            {
hgs
parents:
diff changeset
   603
            qDebug("SATAPP: Unknown event occured: %i", aEventId);
hgs
parents:
diff changeset
   604
            break;
hgs
parents:
diff changeset
   605
            }
hgs
parents:
diff changeset
   606
        }
hgs
parents:
diff changeset
   607
    ) // end QT_TRYCATCH_ERROR
hgs
parents:
diff changeset
   608
    qDebug("SATAPP: SatAppServerDispatcher::EventNotification err = %d<", err);
hgs
parents:
diff changeset
   609
}
hgs
parents:
diff changeset
   610
hgs
parents:
diff changeset
   611
//End of file