diff -r 7d48bed6ce0c -r 987c9837762f satui/satapp/src/satappserverdispatcher.cpp --- a/satui/satapp/src/satappserverdispatcher.cpp Tue Aug 31 15:45:17 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,586 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Receives UI commands from SAT server and converts to QT -* -*/ - -// qt -#include -#include -#include -// symbian -#include -#include - -// sat -#include -#include "satappserverdispatcher.h" -#include "satappaction.h" -#include "satappconstant.h" - - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::SatAppServerDispatcher -// ---------------------------------------------------------------------------- -// -SatAppServerDispatcher::SatAppServerDispatcher(QObject *parent) : - QObject(parent) -{ - qDebug("SATAPP: SatAppServerDispatcher::SatAppServerDispatcher"); - QT_TRAP_THROWING(ConnectSatSessionL()); -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::~SatAppServerDispatcher -// ---------------------------------------------------------------------------- -// -SatAppServerDispatcher::~SatAppServerDispatcher() -{ - qDebug("SATAPP: SatAppServerDispatcher::~SatAppServerDispatcher"); - DisconnectSatSession(); -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::menuSelection -// ---------------------------------------------------------------------------- -// -void SatAppServerDispatcher::menuSelection(SatAppAction* action) -{ - qDebug("SATAPP: SatAppServerDispatcher::menuSelection >"); - if ( ESatSuccess == action->response() ) { - // user selected item from menu - int menuItem = action->value(KeySelection).toInt(); - int helpRequested = action->value(KeyHelpRequested).toBool(); - qDebug("SATAPP: SatAppServerDispatcher::MenuSelection item=%d", - menuItem); - iSat.Adapter()->MenuSelection(menuItem, helpRequested); - } else if (ESatSessionTerminatedByUser == action->response()) { - // session terminated while executing the menu action - qDebug("SATAPP: SatAppServerDispatcher::SessionTerminated"); - iSat.Adapter()->SessionTerminated(EEndKeyUsed); - } - delete action; - qDebug("SATAPP: SatAppServerDispatcher::menuSelection <"); -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::userCancelResponse -// ---------------------------------------------------------------------------- -// -void SatAppServerDispatcher::userCancelSession(SatAppAction* action) -{ - qDebug("SATAPP: SatAppServerDispatcher::userCancelSession"); - if (action && ESatBackwardModeRequestedByUser == action->response()){ - iSat.Adapter()->SessionTerminated(ESessionCancel); - } - delete action; - action = 0; -} - - -// **************************************************************************** -// * ************************************************************************ * -// * * SYMBIAN PART * * -// * ************************************************************************ * -// **************************************************************************** - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::ConnectSatSessionL -// ---------------------------------------------------------------------------- -// -void SatAppServerDispatcher::ConnectSatSessionL() -{ - qDebug("SATAPP: SatAppServerDispatcher::ConnectSatSessionL>"); - //Register to Server as subsession - //If Server is not up, this function call may take time - iSatSession.ConnectL(); - iSat.RegisterL(iSatSession, this); - if (!iSat.Adapter()) - User::Leave(KErrNotFound); - qDebug("SATAPP: SatAppServerDispatcher::ConnectSatSessionL<"); -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::DisconnectSatSession -// ---------------------------------------------------------------------------- -// -void SatAppServerDispatcher::DisconnectSatSession() -{ - qDebug("SATAPP: SatAppServerDispatcher::DisconnectSatSession>"); - iSat.Close(); - iSatSession.Close(); - qDebug("SATAPP: SatAppServerDispatcher::DisconnectSatSession<"); -} - -// ---------------------------------------------------------------------------- -// My own quick string -> descriptor conversion function :-) -// ---------------------------------------------------------------------------- -// -void s2d(const QString str, TDes& desc) -{ - desc.Copy(reinterpret_cast(str.utf16()), str.length()); -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::DisplayTextL -// ---------------------------------------------------------------------------- -// -TSatUiResponse SatAppServerDispatcher::DisplayTextL( const TDesC& aText, - const TDesC& aSimApplicationName, - const TSatIconId& aIconId, - TBool& aRequestedIconDisplayed, - const TBool aSustainedText, - const TTimeIntervalSeconds aDuration, - const TBool aWaitUserToClear ) -{ - qDebug("SATAPP: SatAppServerDispatcher::DisplayTextL >"); - Q_UNUSED(aIconId); - SatAppAction action(ESatDisplayTextAction); - // validate - if (aText.Length()== 0 || aText.Length()>RSat::KTextToDisplayMaxSize){ - qDebug("SATAPP: SatAppServerDispatcher::DisplayText no text"); - aRequestedIconDisplayed = EFalse; - return ESatFailure; - } - - QT_TRYCATCH_LEAVING( - // ensure state - emit stopShowWaitNote(); - - // call - action.set(KeyText,aText); - action.set(KeyApplicationName, aSimApplicationName); - action.set(KeySustainedText, aSustainedText); - action.set(KeyDuration, const_cast(aDuration)); - action.set(KeyWaitUserToClear, aWaitUserToClear); - - emit displayText(action); - action.waitUntilCompleted(); - ); - - // return - qDebug("SATAPP: SatAppServerDispatcher::DisplayTextL action.response() %x<", - action.response()); - return action.response(); -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::GetInkeyL -// ---------------------------------------------------------------------------- -// -TSatUiResponse SatAppServerDispatcher::GetInkeyL( - const TDesC& aText, - const TSatCharacterSet aCharacterSet, - TChar& aInput, - const TBool aHelpIsAvailable, - const TSatIconId& aIconId, - TBool& aRequestedIconDisplayed, - TUint& aDuration, - const TBool aImmediateDigitResponse ) -{ - Q_UNUSED(aHelpIsAvailable); - Q_UNUSED(aIconId); - - qDebug("SATAPP: SatAppServerDispatcher::GetInkeyL >"); - - // validate - aRequestedIconDisplayed = EFalse; - if (ESatYesNo == aCharacterSet && aText.Length() == 0) { - qDebug("SATAPP: CSatUiObserver::GetInkey return ESatFailure"); - return ESatFailure; - } - - SatAppAction action(ESatGetInkeyAction); - QT_TRYCATCH_LEAVING( - // ensure state - emit stopShowWaitNote(); - - // call - action.set(KeyText,aText); - action.set(KeyCharacterSet,(int)aCharacterSet); - action.set(KeyInKey,(int)aInput); - // convert from SAT time units(?) to milliseconds - action.set(KeyDuration,(int)aDuration*KSymbianTimeConvertQtTime); - action.set(KeyImmediate,(bool)aImmediateDigitResponse); - emit getInkey(action); - action.waitUntilCompleted(); - // convert from milliseconds to SAT time units(?) - aDuration = - action.value(KeyDuration).toInt()/KSymbianTimeConvertQtTime; - aInput = action.value(KeyInKey).toInt(); - ); - - // return - qDebug("SATAPP: SatAppServerDispatcher::GetInkeyL <"); - return action.response(); -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::GetInputL -// ---------------------------------------------------------------------------- -// -TSatUiResponse SatAppServerDispatcher::GetInputL( - const TDesC& aText, - const TSatCharacterSet aCharacterSet, - TDes& aInput, - const TInt aMinLength, - const TInt aMaxLength, - const TBool aHideInput, - const TBool aHelpIsAvailable, - const TSatIconId& aIconId, - TBool& aRequestedIconDisplayed ) -{ - Q_UNUSED(aHelpIsAvailable); - Q_UNUSED(aIconId); - qDebug("SATAPP: SatAppServerDispatcher::GetInputL >"); - - // validate - aRequestedIconDisplayed = EFalse; - if ((aCharacterSet == ESatCharSmsDefaultAlphabet || - aCharacterSet == ESatCharUcs2Alphabet) && - aHideInput) { - qDebug("SATAPP: SatAppServerDispatcher::GetInput return ESatFailure"); - return ESatFailure; - } - - SatAppAction action(ESatGetInputAction); - QT_TRYCATCH_LEAVING( - // ensure state - emit stopShowWaitNote(); - - // call - action.set(KeyText,aText); - action.set(KeyCharacterSet,(int)aCharacterSet); - action.set(KeyInputString,aInput); - action.set(KeyMinLength,aMinLength); - action.set(KeyMaxLength,aMaxLength); - action.set(KeyHideInput,(bool)aHideInput); - emit getInput(action); - action.waitUntilCompleted(); - s2d(action.value(KeyInputString).toString(), aInput); - ) - - // return - qDebug("SATAPP: SatAppServerDispatcher::GetInputL <"); - return action.response(); -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::SetUpMenuL -// ---------------------------------------------------------------------------- -// -TSatUiResponse SatAppServerDispatcher::SetUpMenuL( - const TDesC& aText, - const MDesCArray& aMenuItems, - const CArrayFixFlat* aMenuItemNextActions, - const TBool aHelpIsAvailable, - const TSatIconId& aIconId, - const CArrayFixFlat* aMenuIcons, - const enum TSatIconQualifier aIconListQualifier, - const enum TSatSelectionPreference aSelectionPreference ) -{ - Q_UNUSED(aMenuItemNextActions); - Q_UNUSED(aHelpIsAvailable); - Q_UNUSED(aIconId); - Q_UNUSED(aMenuIcons); - Q_UNUSED(aIconListQualifier); - Q_UNUSED(aSelectionPreference); - qDebug("SATAPP: SatAppServerDispatcher::SetUpMenuL >"); - - QT_TRYCATCH_LEAVING( - - // validate - if (!aMenuItems.MdcaCount()) { - emit clearScreen(); - QCoreApplication::instance()->quit(); - return ESatSuccess; - } - - // ensure state - emit stopShowWaitNote(); - - // call - SatAppAction* action = new SatAppAction(ESatSetUpMenuAction, this); - action->set(KeyText,aText); - action->set(KeyMenu,aMenuItems); - // connect for asynchronous menu selection - connect( - action,SIGNAL(actionCompleted(SatAppAction*)), - this,SLOT(menuSelection(SatAppAction*))); - - emit setUpMenu(*action); - ) - - // return - qDebug("SATAPP: SatAppServerDispatcher::SetUpMenuL <"); - return ESatSuccess; -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::SelectItemL -// ---------------------------------------------------------------------------- -// -TSatUiResponse SatAppServerDispatcher::SelectItemL( - const TDesC& aText, - const MDesCArray& aMenuItems, - const CArrayFixFlat* aMenuItemNextActions, - const TInt aDefaultItem, - TUint8& aSelection, - const TBool aHelpIsAvailable, - const TSatIconId& aIconId, - const CArrayFixFlat* aMenuIcons, - const enum TSatIconQualifier aIconListQualifier, - TBool& aRequestedIconDisplayed, - const enum TSatSelectionPreference aSelectionPreference ) -{ - Q_UNUSED(aMenuItemNextActions); - Q_UNUSED(aHelpIsAvailable); - Q_UNUSED(aIconId); - Q_UNUSED(aMenuIcons); - Q_UNUSED(aIconListQualifier); - Q_UNUSED(aRequestedIconDisplayed); - Q_UNUSED(aSelectionPreference); - TSatUiResponse resp(ESatFailure); - SatAppAction action(ESatSelectItemAction); - qDebug("SATAPP: SatAppServerDispatcher::SelectItemL >"); - - QT_TRYCATCH_LEAVING( - // ensure state - emit stopShowWaitNote(); - - // call - action.set(KeyText,aText); - action.set(KeyMenu,aMenuItems); - action.set(KeyDefault,aDefaultItem); - emit selectItem(action); - action.waitUntilCompleted(); - resp = action.response(); - if ( ESatSuccess == resp ) { - aSelection = static_cast( - action.value(KeySelection).toInt()); - } - ) - - // return - qDebug("SATAPP: SatAppServerDispatcher::SelectItemL <"); - return resp; -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::PlayTone -// ---------------------------------------------------------------------------- -// -TSatUiResponse SatAppServerDispatcher::PlayTone( - const TDesC& aText, - const TSatTone aTone, - const TTimeIntervalMicroSeconds aDuration, - const TSatIconId& aIconId, - TBool& aRequestedIconDisplayed ) -{ - Q_UNUSED(aIconId); - aRequestedIconDisplayed = EFalse; - TSatUiResponse resp(ESatSuccess); - qDebug("SATAPP: SatAppServerDispatcher::PlayTone >"); - SatAppAction action(ESatPlayToneAction); - int err(KErrNone); - QT_TRYCATCH_ERROR( - err, - // ensure state - emit stopShowWaitNote(); - - // call - action.set(KeyText,aText); - action.set(KeyToneId,aTone); - action.set(KeyDuration, const_cast(aDuration)); - emit playTone(action); - action.waitUntilCompleted(); - resp = action.response(); - ) - - // return - qDebug("SATAPP: SatAppServerDispatcher::PlayTone err = %d<", err); - return resp; -} - - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::ConfirmCommand -// ---------------------------------------------------------------------------- -// -void SatAppServerDispatcher::ConfirmCommand( - const TSatSQueryCommand aCommandId, - const TSatAlphaIdStatus aAlphaIdStatus, - const TDesC& aText, - const TDesC& aAdditionalText, - TBool& aActionAccepted, - const TSatIconId& aIconId, - TBool& aRequestedIconDisplayed, - TBool& aTerminatedByUser ) -{ - qDebug("SATAPP: SatAppServerDispatcher::ConfirmCommand >"); - Q_UNUSED(aIconId); - aRequestedIconDisplayed = EFalse; - aTerminatedByUser = EFalse; - //ConfirmAction - SatAppAction action(ESatConfirmAction); - qDebug("SATAPP: SatAppServerDispatcher::ConfirmCommand"); - int err(KErrNone); - QT_TRYCATCH_ERROR( - err, - emit stopShowWaitNote(); - - action.set(KeyQueryCommandId, aCommandId); - action.set(KeyAlphaIdStatus, aAlphaIdStatus); - action.set(KeyText, aText); - action.set(KeyAdditionalText, aAdditionalText); - action.set(KeyActionAccepted, aActionAccepted); - - emit confirmCommand(action); - action.waitUntilCompleted(); - if (ESatSuccess == action.response() ) { - aActionAccepted = ETrue; - } - ) - qDebug("SATAPP: SatAppServerDispatcher::ConfirmCommand err = %d <", err); -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::Notification -// ---------------------------------------------------------------------------- -// -TSatUiResponse SatAppServerDispatcher::Notification( - const TSatSNotifyCommand aCommandId, - const TSatAlphaIdStatus aAlphaIdStatus, - const TDesC& aText, - const TSatIconId& aIconId, - TBool& aRequestedIconDisplayed, - const TSatControlResult aControlResult ) -{ - Q_UNUSED(aIconId); - Q_UNUSED(aRequestedIconDisplayed); - qDebug("SATAPP: SatAppServerDispatcher::Notification command id=%d", - aCommandId); - - TSatUiResponse res(ESatFailure); - int err(KErrNone); - switch (aCommandId) - { - // With cancel - case ESatSSendDataNotify: // fall through - case ESatSReceiveDataNotify: // fall through - case ESatSSendDtmfNotify: // fall through - { - QT_TRYCATCH_ERROR( - err, - emit stopShowWaitNote(); - SatAppAction *action = new SatAppAction(ESatNotifyAction, this); - action->set(KeyText, aText); - action->set(KeyCommandId, aCommandId); - action->set(KeyAlphaIdStatus, aAlphaIdStatus); - action->set(KeyControlResult, aControlResult); - // connect for asynchronous menu selection - connect( - action,SIGNAL(actionCompleted(SatAppAction*)), - this,SLOT(userCancelSession(SatAppAction*))); - emit notification(*action); - res = ESatSuccess; - ) - break; - } - // Without cancel - case ESatSMoSmControlNotify: // fall through - case ESatSCallControlNotify: // fall through - case ESatSSendUssdNotify: // fall through - case ESatSSendSsNotify: // fall through - case ESatSSendSmsNotify: // fall through - case ESatSCloseChannelNotify: // fall through - { - QT_TRYCATCH_ERROR( - err, - emit stopShowWaitNote(); - SatAppAction a(ESatNotifyAction); - a.set(KeyText, aText); - a.set(KeyCommandId, aCommandId); - a.set(KeyAlphaIdStatus, aAlphaIdStatus); - a.set(KeyControlResult, aControlResult); - emit notification(a); - res = ESatSuccess; - ) - break; - } - default: - { - break; - } - } - qDebug("SATAPP: SatAppServerDispatcher::Notification < ret=%d", err); - return res; -} - -// ---------------------------------------------------------------------------- -// SatAppServerDispatcher::EventNotification -// ---------------------------------------------------------------------------- -// -void SatAppServerDispatcher::EventNotification( - const TSatSEvent aEventId, - const TSatSEventStatus aEventStatus, - const TInt aError ) -{ - qDebug( "SATAPP: SatAppServerDispatcher::EventNotification aEventId %d", - aEventId ); - Q_UNUSED(aEventStatus); - Q_UNUSED(aError); - int err(KErrNone); - - QT_TRYCATCH_ERROR( err, - switch ( aEventId ) - { - case ESatSSmEndEvent: - case ESatSsEndEvent: - case ESatSDtmfEndEvent: - { - emit stopShowWaitNote(); - break; - } - case ESatSClearScreenEvent: - { - qDebug("SATAPP: ClearScreen event"); - emit clearScreen(); - break; - } - case ESatSsErrorEvent: - { - qDebug("SATAPP: Notifying Ss error" ); - // If error occurred (and Alpha ID provided), notify user - emit showSsErrorNote(); - break; - } - case ESatSCloseSatUiAppEvent: - { - qDebug(" Close UI event" ); - emit clearScreen(); - QCoreApplication::instance()->quit(); - break; - } - default: - { - qDebug("SATAPP: Unknown event occured: %i", aEventId); - break; - } - } - ) // end QT_TRYCATCH_ERROR - qDebug("SATAPP: SatAppServerDispatcher::EventNotification err = %d<", err); -} - -//End of file