gssettingsuis/Gs/GSCallPlugin/src/GSCallPlugin.cpp
author hgs
Thu, 04 Nov 2010 13:38:47 +0800
changeset 68 13e71d907dc3
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
68
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2007 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:  Call submenu in General Settings.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
// INCLUDE FILES
hgs
parents:
diff changeset
    20
#include "GSCallPlugin.h"         //for CGSCallPlugin
hgs
parents:
diff changeset
    21
#include "GSCallPluginContainer.h"    //for CGSCallPluginContainer
hgs
parents:
diff changeset
    22
#include "GsLogger.h"
hgs
parents:
diff changeset
    23
#include "GSCallPlugin.h"             //for pluginUID
hgs
parents:
diff changeset
    24
#include <akntitle.h>                // for title pane
hgs
parents:
diff changeset
    25
#include <coeaui.h>
hgs
parents:
diff changeset
    26
#include <hlplch.h>                     // For HlpLauncher
hgs
parents:
diff changeset
    27
#include <aknnotewrappers.h>            //for Note Wrappers
hgs
parents:
diff changeset
    28
#include <aknradiobuttonsettingpage.h>  //for Radiobutton pages
hgs
parents:
diff changeset
    29
#include <akntextsettingpage.h>         //for TextSettings pages
hgs
parents:
diff changeset
    30
#include <aknmessagequerydialog.h>      //for Message Query Dialog
hgs
parents:
diff changeset
    31
#include <aknViewAppUi.h>
hgs
parents:
diff changeset
    32
#include <aknnotedialog.h>
hgs
parents:
diff changeset
    33
#include <AknWaitDialog.h>
hgs
parents:
diff changeset
    34
#include <gscommon.hrh>
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// headers for still image
hgs
parents:
diff changeset
    37
#include <imageconversion.h>
hgs
parents:
diff changeset
    38
#include <MGFetch.h>                    // Image selection
hgs
parents:
diff changeset
    39
#include <DRMCommon.h>
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
#include <eikmenup.h>                   //for menu bar
hgs
parents:
diff changeset
    42
#include <PsetContainer.h>              //for container
hgs
parents:
diff changeset
    43
#include <PsuiContainer.h>              //for CPsuiContainer
hgs
parents:
diff changeset
    44
#include <featmgr.h>
hgs
parents:
diff changeset
    45
#include <secuisecurityhandler.h>       //for PIN2 query
hgs
parents:
diff changeset
    46
#include <secui.h>                      //for TSecUi
hgs
parents:
diff changeset
    47
#include <secuisecuritysettings.h>      //for CSecuritySettings
hgs
parents:
diff changeset
    48
#include <gscallpluginrsc.rsg>           //for resource IDs
hgs
parents:
diff changeset
    49
#include <gscallplugin.mbg>
hgs
parents:
diff changeset
    50
#include <gsfwviewuids.h>
hgs
parents:
diff changeset
    51
#include <gslistbox.h>                  //for CGSListBoxItemTextArray
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
#include <settingsinternalcrkeys.h>
hgs
parents:
diff changeset
    54
#include    <ctsydomainpskeys.h>
hgs
parents:
diff changeset
    55
#include <gsprivatepluginproviderids.h>
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
// LOCAL CONSTANTS
hgs
parents:
diff changeset
    58
_LIT( KGSNameOfClass, "GSCallPlugin" );
hgs
parents:
diff changeset
    59
_LIT( KGSVTStillImgPath, "" );
hgs
parents:
diff changeset
    60
//Use default values for external calls.
hgs
parents:
diff changeset
    61
const TInt KGSUseDefault = 0;
hgs
parents:
diff changeset
    62
//Call Prefix setting page items
hgs
parents:
diff changeset
    63
const TInt KGSSettingItemOff = 1;
hgs
parents:
diff changeset
    64
const TInt KGSSettingItemOn = 0;
hgs
parents:
diff changeset
    65
//Lines in setting page.
hgs
parents:
diff changeset
    66
const TInt KGSFirstLine = 0;
hgs
parents:
diff changeset
    67
const TInt KGSSecondLine = 1;
hgs
parents:
diff changeset
    68
// Middle Softkey control ID.
hgs
parents:
diff changeset
    69
const TInt KGSMSKControlID = 3;
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
// VT still image values. Basically everything above 0 should be considered as
hgs
parents:
diff changeset
    72
// 'On' value so do not compare with 1
hgs
parents:
diff changeset
    73
const TInt KGSVTStillImageOff = 0;
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
// ========================= MEMBER FUNCTIONS ================================
hgs
parents:
diff changeset
    77
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    78
//
hgs
parents:
diff changeset
    79
// Constructor.
hgs
parents:
diff changeset
    80
//
hgs
parents:
diff changeset
    81
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    82
CGSCallPlugin::CGSCallPlugin()
hgs
parents:
diff changeset
    83
    :iMskCommandFlag( ETrue )
hgs
parents:
diff changeset
    84
    {
hgs
parents:
diff changeset
    85
    }
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    88
//
hgs
parents:
diff changeset
    89
// Symbian OS two-phased constructor (second phase)
hgs
parents:
diff changeset
    90
//
hgs
parents:
diff changeset
    91
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    92
void CGSCallPlugin::ConstructL()
hgs
parents:
diff changeset
    93
    {
hgs
parents:
diff changeset
    94
    __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::ConstructL");
hgs
parents:
diff changeset
    95
    OpenLocalizedResourceFileL( KGSCallPluginResourceFileName,
hgs
parents:
diff changeset
    96
                                iResourceLoader );
hgs
parents:
diff changeset
    97
                                
hgs
parents:
diff changeset
    98
    BaseConstructL( R_GS_CALL_VIEW );
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
    iModel = CGSCallPluginModel::NewL();
hgs
parents:
diff changeset
   101
    iRestrictedClir = iModel->RestrictedSendCallerIdSupportedL();
hgs
parents:
diff changeset
   102
    iSecureClir = iModel->SecureSendCallerIdSupportedL();
hgs
parents:
diff changeset
   103
    __GSLOGSTRING("[GSCallPlugin]--> ConstructL - Model created");
hgs
parents:
diff changeset
   104
    iSettings = CPsetContainer::NewL();
hgs
parents:
diff changeset
   105
    __GSLOGSTRING("[GSCallPlugin]--> ConstructL - PSetContainer created");
hgs
parents:
diff changeset
   106
    iObsContainer = CPsuiContainer::NewL();
hgs
parents:
diff changeset
   107
    __GSLOGSTRING("[GSCallPlugin]--> ConstructL - PsuiContainer created");
hgs
parents:
diff changeset
   108
    iCwObserver = iObsContainer->CreateCWObsL();
hgs
parents:
diff changeset
   109
    __GSLOGSTRING("[GSCallPlugin]--> ConstructL - CreateCWObsL done");
hgs
parents:
diff changeset
   110
    iWaiting = iSettings->CreateCWObjectL( *iCwObserver );
hgs
parents:
diff changeset
   111
    __GSLOGSTRING("[GSCallPlugin]--> ConstructL - CreateCWObjectL done");
hgs
parents:
diff changeset
   112
    iSsSettings = new (ELeave) RSSSettings;
hgs
parents:
diff changeset
   113
    __GSLOGSTRING("[GSCallPlugin]--> ConstructL - SSSettings created");
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
    User::LeaveIfError( iSsSettings->Open() );
hgs
parents:
diff changeset
   116
    User::LeaveIfError( iSsSettings->RegisterAll( *this ) );
hgs
parents:
diff changeset
   117
    __GSLOGSTRING("[GSCallPlugin]--> ConstructL - SSSettings opening successful");
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
#ifndef __WINS__
hgs
parents:
diff changeset
   120
    iSsSettings->Get( ESSSettingsAls, iAls );
hgs
parents:
diff changeset
   121
    iSsSettings->Get( ESSSettingsAlsBlocking, iAlsBlock );
hgs
parents:
diff changeset
   122
#endif //__WINS__
hgs
parents:
diff changeset
   123
    
hgs
parents:
diff changeset
   124
    iVTImageSelectionOngoing = EFalse;
hgs
parents:
diff changeset
   125
    
hgs
parents:
diff changeset
   126
    __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::ConstructL");
hgs
parents:
diff changeset
   127
    }
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   130
//
hgs
parents:
diff changeset
   131
// Symbian OS two-phased constructor (first phase)
hgs
parents:
diff changeset
   132
//
hgs
parents:
diff changeset
   133
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   134
CGSCallPlugin* CGSCallPlugin::NewLC()
hgs
parents:
diff changeset
   135
    {
hgs
parents:
diff changeset
   136
    CGSCallPlugin* self = new ( ELeave ) CGSCallPlugin;
hgs
parents:
diff changeset
   137
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
   138
    self->ConstructL();
hgs
parents:
diff changeset
   139
    return self;
hgs
parents:
diff changeset
   140
    }
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   143
// CGSCallPlugin::NewL()
hgs
parents:
diff changeset
   144
// Static constructor
hgs
parents:
diff changeset
   145
//
hgs
parents:
diff changeset
   146
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   147
//
hgs
parents:
diff changeset
   148
CGSCallPlugin* CGSCallPlugin::NewL( TAny* /*aInitParams*/ )
hgs
parents:
diff changeset
   149
    {
hgs
parents:
diff changeset
   150
    CGSCallPlugin* self = new(ELeave) CGSCallPlugin();
hgs
parents:
diff changeset
   151
    CleanupStack::PushL(self);
hgs
parents:
diff changeset
   152
    self->ConstructL();
hgs
parents:
diff changeset
   153
    CleanupStack::Pop(self);
hgs
parents:
diff changeset
   154
    return self;
hgs
parents:
diff changeset
   155
    }
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   158
//
hgs
parents:
diff changeset
   159
// Destructor
hgs
parents:
diff changeset
   160
//
hgs
parents:
diff changeset
   161
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   162
CGSCallPlugin::~CGSCallPlugin()
hgs
parents:
diff changeset
   163
    {
hgs
parents:
diff changeset
   164
    __GSLOGSTRING("[GSCallPlugin] ~CGSCallPlugin()|->");
hgs
parents:
diff changeset
   165
    
hgs
parents:
diff changeset
   166
    delete iObsContainer;
hgs
parents:
diff changeset
   167
    delete iCwObserver;
hgs
parents:
diff changeset
   168
    if ( iWaiting )
hgs
parents:
diff changeset
   169
        {
hgs
parents:
diff changeset
   170
        delete iWaiting;	
hgs
parents:
diff changeset
   171
        }
hgs
parents:
diff changeset
   172
    delete iSettings;
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
    if ( iSsSettings )
hgs
parents:
diff changeset
   175
        {
hgs
parents:
diff changeset
   176
        iSsSettings->CancelAll( *this );
hgs
parents:
diff changeset
   177
        iSsSettings->Close();
hgs
parents:
diff changeset
   178
        delete iSsSettings;
hgs
parents:
diff changeset
   179
        }
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
    if( iModel )
hgs
parents:
diff changeset
   182
        {
hgs
parents:
diff changeset
   183
        delete iModel;
hgs
parents:
diff changeset
   184
        }
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
    if( iImageHandler )
hgs
parents:
diff changeset
   187
        {
hgs
parents:
diff changeset
   188
        delete iImageHandler;
hgs
parents:
diff changeset
   189
        }
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
    __GSLOGSTRING("[GSCallPlugin] ~CGSCallPlugin()-|");
hgs
parents:
diff changeset
   192
    }
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   195
//
hgs
parents:
diff changeset
   196
// Returns Id of the Call submenu
hgs
parents:
diff changeset
   197
//
hgs
parents:
diff changeset
   198
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   199
TUid CGSCallPlugin::Id() const
hgs
parents:
diff changeset
   200
    {
hgs
parents:
diff changeset
   201
    return KCallPluginUID;
hgs
parents:
diff changeset
   202
    }
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   205
//
hgs
parents:
diff changeset
   206
// Handles user inputs in Options menu
hgs
parents:
diff changeset
   207
//
hgs
parents:
diff changeset
   208
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   209
void CGSCallPlugin::HandleCommandL( TInt aCommand )
hgs
parents:
diff changeset
   210
    {
hgs
parents:
diff changeset
   211
    __GSLOGSTRING1("[GSCallPlugin] HandleCommandL(%d)|->", aCommand );
hgs
parents:
diff changeset
   212
    switch ( aCommand )
hgs
parents:
diff changeset
   213
        {
hgs
parents:
diff changeset
   214
        case EGSMSKCmdAppChange:
hgs
parents:
diff changeset
   215
             HandleListBoxSelectionL();
hgs
parents:
diff changeset
   216
             break;
hgs
parents:
diff changeset
   217
            // Command Obtained from Context Options
hgs
parents:
diff changeset
   218
            // set in ProcessCommandL()
hgs
parents:
diff changeset
   219
        case ECFCmdActivate:
hgs
parents:
diff changeset
   220
        case EGSCmdCallWaitActivate:
hgs
parents:
diff changeset
   221
            iWaiting->SetCallWaitingL( MPsetCallWaiting::EActivateCallWaiting,
hgs
parents:
diff changeset
   222
                                       EAllTeleAndBearer );
hgs
parents:
diff changeset
   223
            break;
hgs
parents:
diff changeset
   224
            // Command Obtained from Context Options
hgs
parents:
diff changeset
   225
            // set in ProcessCommandL()
hgs
parents:
diff changeset
   226
        case ECFCmdCheckStatus:
hgs
parents:
diff changeset
   227
        case EGSCmdCallWaitInquiry:
hgs
parents:
diff changeset
   228
            iWaiting->GetCallWaitingStatusL();
hgs
parents:
diff changeset
   229
            break;
hgs
parents:
diff changeset
   230
            // Command Obtained from Context Options
hgs
parents:
diff changeset
   231
            // set in ProcessCommandL()
hgs
parents:
diff changeset
   232
        case ECFCmdCancel: 
hgs
parents:
diff changeset
   233
        case EGSCmdCallWaitDeactivate:
hgs
parents:
diff changeset
   234
            iWaiting->SetCallWaitingL( MPsetCallWaiting::EDeactivateCallWaiting,
hgs
parents:
diff changeset
   235
                                       EAllTeleAndBearer );
hgs
parents:
diff changeset
   236
            break;
hgs
parents:
diff changeset
   237
        case EAppCmdCreatePopupList:
hgs
parents:
diff changeset
   238
            {
hgs
parents:
diff changeset
   239
            const TInt currentFeatureId = Container()->CurrentFeatureId();
hgs
parents:
diff changeset
   240
            HandleCreatePopupL( currentFeatureId );
hgs
parents:
diff changeset
   241
            }
hgs
parents:
diff changeset
   242
            break;
hgs
parents:
diff changeset
   243
        case EAknSoftkeyBack:
hgs
parents:
diff changeset
   244
            iAppUi->ActivateLocalViewL( KGSTelPluginUid );
hgs
parents:
diff changeset
   245
            break;
hgs
parents:
diff changeset
   246
        case EAknCmdHelp:
hgs
parents:
diff changeset
   247
            {
hgs
parents:
diff changeset
   248
            if( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
hgs
parents:
diff changeset
   249
                {
hgs
parents:
diff changeset
   250
                HlpLauncher::LaunchHelpApplicationL(
hgs
parents:
diff changeset
   251
                    iEikonEnv->WsSession(), iAppUi->AppHelpContextL() );
hgs
parents:
diff changeset
   252
                }
hgs
parents:
diff changeset
   253
            break;
hgs
parents:
diff changeset
   254
            }
hgs
parents:
diff changeset
   255
        default:
hgs
parents:
diff changeset
   256
            iAppUi->HandleCommandL( aCommand );
hgs
parents:
diff changeset
   257
            break;
hgs
parents:
diff changeset
   258
        }
hgs
parents:
diff changeset
   259
    __GSLOGSTRING("[CGSCallPlugin] HandleCommandL()-|");
hgs
parents:
diff changeset
   260
    }
hgs
parents:
diff changeset
   261
hgs
parents:
diff changeset
   262
hgs
parents:
diff changeset
   263
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   264
//
hgs
parents:
diff changeset
   265
// Handles user inputs in Options menu
hgs
parents:
diff changeset
   266
//
hgs
parents:
diff changeset
   267
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   268
void CGSCallPlugin::ProcessCommandL( TInt aCommand )
hgs
parents:
diff changeset
   269
    {
hgs
parents:
diff changeset
   270
    MenuBar()->SetContextMenuTitleResourceId( R_CALL_DIVERT_MSK_CONTEXTMENUBAR );
hgs
parents:
diff changeset
   271
    // Call base class
hgs
parents:
diff changeset
   272
    CAknView::ProcessCommandL( aCommand );
hgs
parents:
diff changeset
   273
    }
hgs
parents:
diff changeset
   274
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   275
//
hgs
parents:
diff changeset
   276
// Activates the view
hgs
parents:
diff changeset
   277
//
hgs
parents:
diff changeset
   278
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   279
void CGSCallPlugin::DoActivateL( const TVwsViewId&  aPrevViewId ,
hgs
parents:
diff changeset
   280
                                       TUid  aCustomMessageId,
hgs
parents:
diff changeset
   281
                                       const TDesC8&  aCustomMessage  )
hgs
parents:
diff changeset
   282
    {
hgs
parents:
diff changeset
   283
    __GSLOGSTRING( "[GSCallPlugin] DoActivateL()|->" );
hgs
parents:
diff changeset
   284
    CGSBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
hgs
parents:
diff changeset
   285
    Container()->SetMiddleSoftkeyObserver( this );
hgs
parents:
diff changeset
   286
    SetMiddleSoftKeyLabelL( R_CALL_MSK_CHANGE, EGSMSKCmdAppChange );
hgs
parents:
diff changeset
   287
    // This way we set which command is set for MSK
hgs
parents:
diff changeset
   288
    iMskCommandFlag = ETrue;
hgs
parents:
diff changeset
   289
//    iContainer->iListBox->SetTopItemIndex( iTopItemIndex );
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
//    if ( iCurrentItem >= 0 &&
hgs
parents:
diff changeset
   292
//         iCurrentItem < iContainer->iListBox->Model()->NumberOfItems() )
hgs
parents:
diff changeset
   293
//        {
hgs
parents:
diff changeset
   294
//        iContainer->iListBox->SetCurrentItemIndexAndDraw( iCurrentItem );
hgs
parents:
diff changeset
   295
//        }
hgs
parents:
diff changeset
   296
    CheckMiddleSoftkeyLabelL();
hgs
parents:
diff changeset
   297
    
hgs
parents:
diff changeset
   298
	// If AppUid is different or placeholderview is used, this view has been launched from outside GS
hgs
parents:
diff changeset
   299
	if ( iPrevViewId.iAppUid != KUidGS || iPrevViewId.iViewUid == TUid::Uid(0x0DEADBED ) )
hgs
parents:
diff changeset
   300
		{
hgs
parents:
diff changeset
   301
		CEikButtonGroupContainer* cbaGroup = Cba();
hgs
parents:
diff changeset
   302
		if( cbaGroup )
hgs
parents:
diff changeset
   303
			{
hgs
parents:
diff changeset
   304
			HBufC* rightSKText = StringLoader::LoadLC ( R_GS_CBA_EXIT );
hgs
parents:
diff changeset
   305
			TPtr rskPtr = rightSKText->Des();
hgs
parents:
diff changeset
   306
			cbaGroup->SetCommandL( 2, EAknSoftkeyExit, *rightSKText );
hgs
parents:
diff changeset
   307
			CleanupStack::PopAndDestroy( rightSKText );
hgs
parents:
diff changeset
   308
			}
hgs
parents:
diff changeset
   309
	}
hgs
parents:
diff changeset
   310
    
hgs
parents:
diff changeset
   311
    __GSLOGSTRING( "[GSCallPlugin] DoActivateL()-|" );
hgs
parents:
diff changeset
   312
    }
hgs
parents:
diff changeset
   313
hgs
parents:
diff changeset
   314
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   315
//
hgs
parents:
diff changeset
   316
// Deactivates the view
hgs
parents:
diff changeset
   317
//
hgs
parents:
diff changeset
   318
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   319
void CGSCallPlugin::DoDeactivate()
hgs
parents:
diff changeset
   320
    {
hgs
parents:
diff changeset
   321
    __GSLOGSTRING("[GSCallPlugin]--> DoDeactivate");
hgs
parents:
diff changeset
   322
    if ( iContainer )
hgs
parents:
diff changeset
   323
        {
hgs
parents:
diff changeset
   324
        if ( iContainer->iListBox && iContainer->iListBox->View() )
hgs
parents:
diff changeset
   325
            {
hgs
parents:
diff changeset
   326
            iTopItemIndex = iContainer->iListBox->TopItemIndex();
hgs
parents:
diff changeset
   327
            iCurrentItem = iContainer->iListBox->CurrentItemIndex();
hgs
parents:
diff changeset
   328
            }
hgs
parents:
diff changeset
   329
        CGSBaseView::DoDeactivate();
hgs
parents:
diff changeset
   330
        }
hgs
parents:
diff changeset
   331
    __GSLOGSTRING("[GSCallPlugin] <--DoDeactivate");
hgs
parents:
diff changeset
   332
    }
hgs
parents:
diff changeset
   333
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
hgs
parents:
diff changeset
   336
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   337
//
hgs
parents:
diff changeset
   338
// Handle status pane size changed
hgs
parents:
diff changeset
   339
//
hgs
parents:
diff changeset
   340
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   341
void CGSCallPlugin::HandleStatusPaneSizeChange()
hgs
parents:
diff changeset
   342
	{
hgs
parents:
diff changeset
   343
		if ( Container() )
hgs
parents:
diff changeset
   344
			Container()->SetRect( ClientRect());
hgs
parents:
diff changeset
   345
	}
hgs
parents:
diff changeset
   346
hgs
parents:
diff changeset
   347
hgs
parents:
diff changeset
   348
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   349
//
hgs
parents:
diff changeset
   350
// Shows setting page - for ON/OFF setting items
hgs
parents:
diff changeset
   351
//
hgs
parents:
diff changeset
   352
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   353
void CGSCallPlugin::ShowSettingPageL( TGSCallItemIds aPage )
hgs
parents:
diff changeset
   354
    {
hgs
parents:
diff changeset
   355
    __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::ShowSettingPageL");
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
    CDesCArrayFlat* items =
hgs
parents:
diff changeset
   358
          new ( ELeave ) CDesCArrayFlat( KGSCallPopupMenuItems );
hgs
parents:
diff changeset
   359
    CleanupStack::PushL( items );
hgs
parents:
diff changeset
   360
hgs
parents:
diff changeset
   361
    TInt titleID = 0;
hgs
parents:
diff changeset
   362
    TInt currentSettingItem = KErrNone;
hgs
parents:
diff changeset
   363
    TCallSettId keyName = EGSNotSet;
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
    switch ( aPage )
hgs
parents:
diff changeset
   366
        {
hgs
parents:
diff changeset
   367
        case EGSOpeningSlideAnswerCallItemId:
hgs
parents:
diff changeset
   368
            keyName = EGSOpeningSlideAnswerCall;
hgs
parents:
diff changeset
   369
            titleID = R_CP_SETTING_TITLE_OPENING_SLIDE;
hgs
parents:
diff changeset
   370
            AppendItemL( *items, R_CP_SETTING_OPENING_SLIDE_ANSWER );
hgs
parents:
diff changeset
   371
            AppendItemL( *items, R_CP_SETTING_OPENING_SLIDE_NOT_ANSWER );
hgs
parents:
diff changeset
   372
            break;
hgs
parents:
diff changeset
   373
        case EGSClosingSlideEndCallItemId:
hgs
parents:
diff changeset
   374
            keyName = EGSClosingSlideEndCall;
hgs
parents:
diff changeset
   375
            titleID = R_CP_SETTING_TITLE_CLOSING_SLIDE;
hgs
parents:
diff changeset
   376
            AppendItemL( *items, R_CP_SETTING_CLOSING_SLIDE_END );
hgs
parents:
diff changeset
   377
            AppendItemL( *items, R_CP_SETTING_CLOSING_SLIDE_NOT_END );
hgs
parents:
diff changeset
   378
            break;        
hgs
parents:
diff changeset
   379
        case EGSICSendIntCallIdItemId:
hgs
parents:
diff changeset
   380
            titleID = R_SET_IC_CLIR;
hgs
parents:
diff changeset
   381
            AppendItemL( *items, R_SET_IC_CLIR_ON );
hgs
parents:
diff changeset
   382
            AppendItemL( *items, R_SET_IC_CLIR_OFF );
hgs
parents:
diff changeset
   383
            break;
hgs
parents:
diff changeset
   384
        case EGSICWaitingItemId:
hgs
parents:
diff changeset
   385
            titleID = R_SET_IC_WAITING;
hgs
parents:
diff changeset
   386
            AppendItemL( *items, R_SET_IC_WAITING_ACTIVE );
hgs
parents:
diff changeset
   387
            AppendItemL( *items, R_SET_IC_WAITING_NOT_ACTIVE );
hgs
parents:
diff changeset
   388
            break;
hgs
parents:
diff changeset
   389
        case EGSICPreferredTelephonyId:
hgs
parents:
diff changeset
   390
            titleID = R_SET_IC_PREFERRED_TELEPHONE;
hgs
parents:
diff changeset
   391
            AppendItemL( *items, R_SET_IC_PREFERRED_TELEPHONE_CS );
hgs
parents:
diff changeset
   392
            AppendItemL( *items, R_SET_IC_PREFERRED_TELEPHONE_PS );
hgs
parents:
diff changeset
   393
            break;
hgs
parents:
diff changeset
   394
        case EGSDndItemId:
hgs
parents:
diff changeset
   395
            titleID = R_SET_IC_DND;
hgs
parents:
diff changeset
   396
            AppendItemL( *items, R_SET_IC_DND_ACTIVE );
hgs
parents:
diff changeset
   397
            AppendItemL( *items, R_SET_IC_DND_NOT_ACTIVE );
hgs
parents:
diff changeset
   398
            break;
hgs
parents:
diff changeset
   399
        case EGSCliItemId:
hgs
parents:
diff changeset
   400
            titleID = R_OWN_NUMBER_SENDING_HEADING;
hgs
parents:
diff changeset
   401
hgs
parents:
diff changeset
   402
            // Restrict the default option if necessary
hgs
parents:
diff changeset
   403
            if ( !iRestrictedClir )
hgs
parents:
diff changeset
   404
                {
hgs
parents:
diff changeset
   405
                AppendItemL( *items, R_CLI_SENDING_DEFAULT );
hgs
parents:
diff changeset
   406
                }
hgs
parents:
diff changeset
   407
hgs
parents:
diff changeset
   408
            AppendItemL( *items, R_CLI_SENDING_ON );
hgs
parents:
diff changeset
   409
            AppendItemL( *items, R_CLI_SENDING_OFF );
hgs
parents:
diff changeset
   410
            break;           
hgs
parents:
diff changeset
   411
        case EGSSummaryAfterCallItemId:
hgs
parents:
diff changeset
   412
            keyName = EGSSummaryAfterCall;
hgs
parents:
diff changeset
   413
            titleID = R_CTERM_SETTING;
hgs
parents:
diff changeset
   414
            AppendItemL( *items, R_CALL_TERMINATION_NOTE_ON );
hgs
parents:
diff changeset
   415
            AppendItemL( *items, R_CALL_TERMINATION_NOTE_OFF );
hgs
parents:
diff changeset
   416
            break;   
hgs
parents:
diff changeset
   417
        default:
hgs
parents:
diff changeset
   418
            Panic( KGSNameOfClass, EInvalidIndex );
hgs
parents:
diff changeset
   419
            break;
hgs
parents:
diff changeset
   420
    }
hgs
parents:
diff changeset
   421
hgs
parents:
diff changeset
   422
    if ( aPage == EGSICSendIntCallIdItemId  ||
hgs
parents:
diff changeset
   423
         aPage == EGSICWaitingItemId        ||
hgs
parents:
diff changeset
   424
         aPage == EGSICPreferredTelephonyId ||
hgs
parents:
diff changeset
   425
         aPage == EGSDndItemId )
hgs
parents:
diff changeset
   426
        {
hgs
parents:
diff changeset
   427
        currentSettingItem = GetLineForSelectedVoipSetting( aPage );
hgs
parents:
diff changeset
   428
        }
hgs
parents:
diff changeset
   429
    // CLI item does not have a keyName and/or literal, hence
hgs
parents:
diff changeset
   430
    // this additional checking for CLI item.
hgs
parents:
diff changeset
   431
    else if ( aPage != EGSCliItemId && keyName != EGSNotSet )    
hgs
parents:
diff changeset
   432
        {
hgs
parents:
diff changeset
   433
        iModel->GetCallSettingValue( keyName, currentSettingItem );
hgs
parents:
diff changeset
   434
        __GSLOGSTRING1("[GSCallPlugin]    ShowSettingPageL: currentSettingItem: %d", currentSettingItem);
hgs
parents:
diff changeset
   435
        // switch value to settings page value
hgs
parents:
diff changeset
   436
        SwitchValue( currentSettingItem );
hgs
parents:
diff changeset
   437
        }
hgs
parents:
diff changeset
   438
    else
hgs
parents:
diff changeset
   439
        {
hgs
parents:
diff changeset
   440
        TInt err = iSsSettings->Get( ESSSettingsClir, currentSettingItem );
hgs
parents:
diff changeset
   441
        __GSLOGSTRING1("[GSCallPlugin]    ShowSettingPageL: currentSettingItem1: %d", currentSettingItem);
hgs
parents:
diff changeset
   442
        if ( err == KErrNone )
hgs
parents:
diff changeset
   443
            {
hgs
parents:
diff changeset
   444
            CliConvertValue( currentSettingItem );
hgs
parents:
diff changeset
   445
hgs
parents:
diff changeset
   446
            if ( iRestrictedClir )
hgs
parents:
diff changeset
   447
                {
hgs
parents:
diff changeset
   448
                // For indexing listbox which does not include KGSCliDefault
hgs
parents:
diff changeset
   449
                currentSettingItem--;
hgs
parents:
diff changeset
   450
                }
hgs
parents:
diff changeset
   451
            }
hgs
parents:
diff changeset
   452
        }
hgs
parents:
diff changeset
   453
hgs
parents:
diff changeset
   454
    HBufC* buffer = NULL;
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
    buffer = HBufC::NewLC( KGSMaxStringLength );
hgs
parents:
diff changeset
   457
    TPtr str = buffer->Des();
hgs
parents:
diff changeset
   458
    StringLoader::Load( str, titleID );
hgs
parents:
diff changeset
   459
hgs
parents:
diff changeset
   460
    TPtr string = buffer->Des();
hgs
parents:
diff changeset
   461
    const TInt oldSettingItem = currentSettingItem;
hgs
parents:
diff changeset
   462
    CAknRadioButtonSettingPage* dlg = new ( ELeave )
hgs
parents:
diff changeset
   463
        CAknRadioButtonSettingPage(
hgs
parents:
diff changeset
   464
            &string,
hgs
parents:
diff changeset
   465
            EAknSettingPageNoOrdinalDisplayed,
hgs
parents:
diff changeset
   466
            KGSUseDefault,
hgs
parents:
diff changeset
   467
            KGSUseDefault,
hgs
parents:
diff changeset
   468
            R_SETTING_PAGE,
hgs
parents:
diff changeset
   469
            currentSettingItem,
hgs
parents:
diff changeset
   470
            items );
hgs
parents:
diff changeset
   471
hgs
parents:
diff changeset
   472
    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
hgs
parents:
diff changeset
   473
        {
hgs
parents:
diff changeset
   474
        const TBool settingItemChanged = oldSettingItem != currentSettingItem;
hgs
parents:
diff changeset
   475
hgs
parents:
diff changeset
   476
        if ( aPage == EGSICSendIntCallIdItemId  ||
hgs
parents:
diff changeset
   477
             aPage == EGSICWaitingItemId        ||
hgs
parents:
diff changeset
   478
             aPage == EGSICPreferredTelephonyId ||
hgs
parents:
diff changeset
   479
             aPage == EGSDndItemId )
hgs
parents:
diff changeset
   480
            {
hgs
parents:
diff changeset
   481
            // Change new VoIP setting based selected line.
hgs
parents:
diff changeset
   482
            SetVoipSettingBasedSelectedLine( aPage, currentSettingItem );
hgs
parents:
diff changeset
   483
            }
hgs
parents:
diff changeset
   484
        else
hgs
parents:
diff changeset
   485
            {
hgs
parents:
diff changeset
   486
            if ( aPage != EGSCliItemId && keyName != EGSNotSet )
hgs
parents:
diff changeset
   487
                {
hgs
parents:
diff changeset
   488
                // switch settings page value to shared data value
hgs
parents:
diff changeset
   489
                SwitchValue( currentSettingItem );
hgs
parents:
diff changeset
   490
                iModel->SetCallSettingValue( keyName, currentSettingItem );
hgs
parents:
diff changeset
   491
                __GSLOGSTRING1("[GSCallPlugin]    ShowSettingPageL: currentSettingItem2: %d", currentSettingItem);
hgs
parents:
diff changeset
   492
                }
hgs
parents:
diff changeset
   493
            else
hgs
parents:
diff changeset
   494
                {
hgs
parents:
diff changeset
   495
                if ( iRestrictedClir )
hgs
parents:
diff changeset
   496
                    {
hgs
parents:
diff changeset
   497
                    // For indexing listbox which does not include KGSCliDefault
hgs
parents:
diff changeset
   498
                    currentSettingItem++;
hgs
parents:
diff changeset
   499
                    }
hgs
parents:
diff changeset
   500
hgs
parents:
diff changeset
   501
                CliConvertValue( currentSettingItem );
hgs
parents:
diff changeset
   502
hgs
parents:
diff changeset
   503
                // Secure setting of Send Caller Id if required
hgs
parents:
diff changeset
   504
                if ( !iSecureClir )
hgs
parents:
diff changeset
   505
                    {
hgs
parents:
diff changeset
   506
                    iSsSettings->Set( ESSSettingsClir, currentSettingItem );
hgs
parents:
diff changeset
   507
                    }
hgs
parents:
diff changeset
   508
                else
hgs
parents:
diff changeset
   509
                    {
hgs
parents:
diff changeset
   510
                    if ( settingItemChanged && MakeSecCodeQueryL() )
hgs
parents:
diff changeset
   511
                        {
hgs
parents:
diff changeset
   512
                        iSsSettings->Set( ESSSettingsClir, currentSettingItem );
hgs
parents:
diff changeset
   513
                        }
hgs
parents:
diff changeset
   514
                    }
hgs
parents:
diff changeset
   515
                __GSLOGSTRING1("[GSCallPlugin]    ShowSettingPageL: currentSettingItem3: %d", currentSettingItem);
hgs
parents:
diff changeset
   516
                }
hgs
parents:
diff changeset
   517
            }
hgs
parents:
diff changeset
   518
hgs
parents:
diff changeset
   519
        UpdateListBoxL( aPage, currentSettingItem );
hgs
parents:
diff changeset
   520
        }
hgs
parents:
diff changeset
   521
hgs
parents:
diff changeset
   522
    CleanupStack::PopAndDestroy( buffer );
hgs
parents:
diff changeset
   523
    CleanupStack::PopAndDestroy( items );
hgs
parents:
diff changeset
   524
    __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::ShowSettingPageL");
hgs
parents:
diff changeset
   525
    }
hgs
parents:
diff changeset
   526
hgs
parents:
diff changeset
   527
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   528
//
hgs
parents:
diff changeset
   529
// Shows ALS setting page - either line blocking or line selected
hgs
parents:
diff changeset
   530
//
hgs
parents:
diff changeset
   531
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   532
void CGSCallPlugin::ShowAlsSettingPageL( TGSCallItemIds aPage  )
hgs
parents:
diff changeset
   533
    {
hgs
parents:
diff changeset
   534
    __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::ShowAlsSettingPageL");
hgs
parents:
diff changeset
   535
    CDesCArrayFlat* items = new ( ELeave ) CDesCArrayFlat( KGSCallPopupMenuItems );
hgs
parents:
diff changeset
   536
    CleanupStack::PushL( items );
hgs
parents:
diff changeset
   537
hgs
parents:
diff changeset
   538
    TInt currentItem = 0;
hgs
parents:
diff changeset
   539
hgs
parents:
diff changeset
   540
    switch ( aPage )
hgs
parents:
diff changeset
   541
        {
hgs
parents:
diff changeset
   542
        case EGSLineChangeItemId:
hgs
parents:
diff changeset
   543
            //causes PIN2 query to launch, if necessary
hgs
parents:
diff changeset
   544
            if ( iAlsBlock == ESSSettingsAlsBlockingOn )
hgs
parents:
diff changeset
   545
                {
hgs
parents:
diff changeset
   546
                TInt pin = MakePin2QueryL();
hgs
parents:
diff changeset
   547
                if (  pin != KGSPinQueryOk )
hgs
parents:
diff changeset
   548
                    {
hgs
parents:
diff changeset
   549
                    CleanupStack::PopAndDestroy( items );
hgs
parents:
diff changeset
   550
                    return; //User failed in Pin2 Query
hgs
parents:
diff changeset
   551
                    }
hgs
parents:
diff changeset
   552
                }
hgs
parents:
diff changeset
   553
            AppendItemL( *items, R_ALS_LINE1 );
hgs
parents:
diff changeset
   554
            AppendItemL( *items, R_ALS_LINE2 );
hgs
parents:
diff changeset
   555
            currentItem = iAls - 1;
hgs
parents:
diff changeset
   556
            break;
hgs
parents:
diff changeset
   557
        case EGSALSBlockItemId:
hgs
parents:
diff changeset
   558
            {
hgs
parents:
diff changeset
   559
                TInt pin = MakePin2QueryL();
hgs
parents:
diff changeset
   560
                if ( pin != KGSPinQueryOk )
hgs
parents:
diff changeset
   561
                    {
hgs
parents:
diff changeset
   562
                    CleanupStack::PopAndDestroy( items );
hgs
parents:
diff changeset
   563
                    return; //User failed in Pin2 Query
hgs
parents:
diff changeset
   564
                    }
hgs
parents:
diff changeset
   565
                AppendItemL( *items, R_ALS_LINE_BLOCKING_ON );
hgs
parents:
diff changeset
   566
                AppendItemL( *items, R_ALS_LINE_BLOCKING_OFF );
hgs
parents:
diff changeset
   567
                if ( iAlsBlock == ESSSettingsAlsBlockingOn )
hgs
parents:
diff changeset
   568
                    {
hgs
parents:
diff changeset
   569
                    currentItem = KGSAlsBlockOn;
hgs
parents:
diff changeset
   570
                    }
hgs
parents:
diff changeset
   571
                else
hgs
parents:
diff changeset
   572
                    {
hgs
parents:
diff changeset
   573
                    currentItem = KGSAlsBlockOff;
hgs
parents:
diff changeset
   574
                    }
hgs
parents:
diff changeset
   575
                break;
hgs
parents:
diff changeset
   576
            }
hgs
parents:
diff changeset
   577
        default:
hgs
parents:
diff changeset
   578
            Panic( KGSNameOfClass, EInvalidIndex );
hgs
parents:
diff changeset
   579
            break;
hgs
parents:
diff changeset
   580
        }
hgs
parents:
diff changeset
   581
    HBufC* buffer =
hgs
parents:
diff changeset
   582
        HBufC::NewLC( KGSMaxStringLength );
hgs
parents:
diff changeset
   583
    TPtr string( buffer->Des() );
hgs
parents:
diff changeset
   584
    StringLoader::Load(
hgs
parents:
diff changeset
   585
        string,
hgs
parents:
diff changeset
   586
        ( aPage == EGSLineChangeItemId ) ?
hgs
parents:
diff changeset
   587
            R_ALS_LINE_SELECTION_MODE :
hgs
parents:
diff changeset
   588
            R_ALS_PHONELINE_BLOCK_MODE );
hgs
parents:
diff changeset
   589
hgs
parents:
diff changeset
   590
    CAknRadioButtonSettingPage* dlg = new ( ELeave )
hgs
parents:
diff changeset
   591
        CAknRadioButtonSettingPage(
hgs
parents:
diff changeset
   592
            &string,
hgs
parents:
diff changeset
   593
            EAknSettingPageNoOrdinalDisplayed,
hgs
parents:
diff changeset
   594
            KGSUseDefault,
hgs
parents:
diff changeset
   595
            KGSUseDefault,
hgs
parents:
diff changeset
   596
            R_SETTING_PAGE,
hgs
parents:
diff changeset
   597
            currentItem,
hgs
parents:
diff changeset
   598
            items );
hgs
parents:
diff changeset
   599
hgs
parents:
diff changeset
   600
    // handle als and blocking separately...
hgs
parents:
diff changeset
   601
    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
hgs
parents:
diff changeset
   602
        {
hgs
parents:
diff changeset
   603
        if ( aPage == EGSALSBlockItemId )
hgs
parents:
diff changeset
   604
            {
hgs
parents:
diff changeset
   605
            AlsBlockConvertValue( currentItem );
hgs
parents:
diff changeset
   606
            iSsSettings->Set( ESSSettingsAlsBlocking, iAlsBlock );
hgs
parents:
diff changeset
   607
            }
hgs
parents:
diff changeset
   608
        else if ( aPage == EGSLineChangeItemId )
hgs
parents:
diff changeset
   609
            {
hgs
parents:
diff changeset
   610
            iAls = currentItem + 1;
hgs
parents:
diff changeset
   611
            iSsSettings->Set( ESSSettingsAls, iAls );
hgs
parents:
diff changeset
   612
            }
hgs
parents:
diff changeset
   613
        }
hgs
parents:
diff changeset
   614
    CleanupStack::PopAndDestroy( 2 ); // items, string
hgs
parents:
diff changeset
   615
    __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::ShowAlsSettingPageL");
hgs
parents:
diff changeset
   616
    }
hgs
parents:
diff changeset
   617
hgs
parents:
diff changeset
   618
hgs
parents:
diff changeset
   619
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   620
//
hgs
parents:
diff changeset
   621
// Changes value from 0 to 1 and vice versa
hgs
parents:
diff changeset
   622
// Used when Central Repository is enabled
hgs
parents:
diff changeset
   623
//
hgs
parents:
diff changeset
   624
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   625
void CGSCallPlugin::SwitchOnOffSetting( TCallSettId aSetting )
hgs
parents:
diff changeset
   626
    {
hgs
parents:
diff changeset
   627
    TInt value = KGSSettingOff;
hgs
parents:
diff changeset
   628
    // Reads a value and switches value (0 -> 1, 1 -> 0).
hgs
parents:
diff changeset
   629
    iModel->GetCallSettingValue( aSetting, value );
hgs
parents:
diff changeset
   630
    SwitchValue( value );
hgs
parents:
diff changeset
   631
    iModel->SetCallSettingValue( aSetting, value );
hgs
parents:
diff changeset
   632
    }
hgs
parents:
diff changeset
   633
hgs
parents:
diff changeset
   634
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   635
//
hgs
parents:
diff changeset
   636
// Appends given item to given list
hgs
parents:
diff changeset
   637
//
hgs
parents:
diff changeset
   638
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   639
void CGSCallPlugin::AppendItemL( CDesCArrayFlat& aList, TInt aItem )
hgs
parents:
diff changeset
   640
    {
hgs
parents:
diff changeset
   641
    HBufC* string = StringLoader::LoadLC( aItem );
hgs
parents:
diff changeset
   642
    aList.AppendL( *string );
hgs
parents:
diff changeset
   643
    CleanupStack::PopAndDestroy( string );
hgs
parents:
diff changeset
   644
    }
hgs
parents:
diff changeset
   645
hgs
parents:
diff changeset
   646
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   647
//
hgs
parents:
diff changeset
   648
// Selects what kind of menu is created
hgs
parents:
diff changeset
   649
//
hgs
parents:
diff changeset
   650
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   651
void CGSCallPlugin::HandleCreatePopupL( TInt aIndex )
hgs
parents:
diff changeset
   652
    {
hgs
parents:
diff changeset
   653
    __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::HandleCreatePopupL");
hgs
parents:
diff changeset
   654
    switch ( aIndex )
hgs
parents:
diff changeset
   655
        {
hgs
parents:
diff changeset
   656
        case EGSCallWaitingItemId:
hgs
parents:
diff changeset
   657
            break;
hgs
parents:
diff changeset
   658
        case EGSLineChangeItemId:
hgs
parents:
diff changeset
   659
            ShowAlsSettingPageL( EGSLineChangeItemId );
hgs
parents:
diff changeset
   660
            break;
hgs
parents:
diff changeset
   661
        case EGSALSBlockItemId:
hgs
parents:
diff changeset
   662
            ShowAlsSettingPageL( EGSALSBlockItemId );
hgs
parents:
diff changeset
   663
            break;
hgs
parents:
diff changeset
   664
        case EGSSoftRejectTextItemId:
hgs
parents:
diff changeset
   665
            ShowSoftRejectSettingPageL();
hgs
parents:
diff changeset
   666
            UpdateListBoxL( EGSSoftRejectTextItemId, KGSNotUsed );
hgs
parents:
diff changeset
   667
            break;
hgs
parents:
diff changeset
   668
        case EGSStillImageItemId:
hgs
parents:
diff changeset
   669
            if ( FeatureManager::FeatureSupported(
hgs
parents:
diff changeset
   670
                                 KFeatureIdCsVideoTelephony ) )
hgs
parents:
diff changeset
   671
                {
hgs
parents:
diff changeset
   672
                ShowVTStillImageSettingPageL();
hgs
parents:
diff changeset
   673
                }
hgs
parents:
diff changeset
   674
            break;
hgs
parents:
diff changeset
   675
        case EGSOwnImageVtCallItemId:
hgs
parents:
diff changeset
   676
            if ( FeatureManager::FeatureSupported(
hgs
parents:
diff changeset
   677
                                 KFeatureIdCsVideoTelephony ) )
hgs
parents:
diff changeset
   678
                {
hgs
parents:
diff changeset
   679
                ShowOwnImageVtCallSettingPageL();
hgs
parents:
diff changeset
   680
                }
hgs
parents:
diff changeset
   681
            break;
hgs
parents:
diff changeset
   682
        case EGSReplacePrefixItemId:
hgs
parents:
diff changeset
   683
            if ( FeatureManager::FeatureSupported( KFeatureIdJapanPrefixChange ) )
hgs
parents:
diff changeset
   684
                {
hgs
parents:
diff changeset
   685
                ChangePrefixSettingL( ETrue );
hgs
parents:
diff changeset
   686
                UpdateListBoxL( EGSReplacePrefixItemId, KGSNotUsed );
hgs
parents:
diff changeset
   687
                }
hgs
parents:
diff changeset
   688
            break;
hgs
parents:
diff changeset
   689
        case EGSShowCallDurationItemId:
hgs
parents:
diff changeset
   690
            ChangeCallDurationSettingL( ETrue );
hgs
parents:
diff changeset
   691
            UpdateListBoxL( EGSShowCallDurationItemId, KGSNotUsed );
hgs
parents:
diff changeset
   692
            break;
hgs
parents:
diff changeset
   693
        case EGSLongPressCallKeyItemId:
hgs
parents:
diff changeset
   694
        #ifdef RD_VT_LONG_SEND_KEY 
hgs
parents:
diff changeset
   695
        	ChangeLongPressCallKeySettingL( ETrue );
hgs
parents:
diff changeset
   696
        #endif
hgs
parents:
diff changeset
   697
        	break;
hgs
parents:
diff changeset
   698
        default:
hgs
parents:
diff changeset
   699
            ShowSettingPageL( static_cast<TGSCallItemIds> ( aIndex ) );
hgs
parents:
diff changeset
   700
            break;
hgs
parents:
diff changeset
   701
        }
hgs
parents:
diff changeset
   702
    __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::HandleCreatePopupL");
hgs
parents:
diff changeset
   703
    }
hgs
parents:
diff changeset
   704
hgs
parents:
diff changeset
   705
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   706
//
hgs
parents:
diff changeset
   707
// Sets title text to a setting page
hgs
parents:
diff changeset
   708
//
hgs
parents:
diff changeset
   709
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   710
void CGSCallPlugin::SetTitleToSettingL( CAknRadioButtonSettingPage& aDlg,
hgs
parents:
diff changeset
   711
                                            TInt aTitleID )
hgs
parents:
diff changeset
   712
    {
hgs
parents:
diff changeset
   713
    HBufC* title = StringLoader::LoadLC ( aTitleID );
hgs
parents:
diff changeset
   714
    aDlg.SetSettingTextL( *title );
hgs
parents:
diff changeset
   715
    CleanupStack::PopAndDestroy( title );
hgs
parents:
diff changeset
   716
    }
hgs
parents:
diff changeset
   717
hgs
parents:
diff changeset
   718
hgs
parents:
diff changeset
   719
/*// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   720
//
hgs
parents:
diff changeset
   721
// Sets title text to a status pane
hgs
parents:
diff changeset
   722
//
hgs
parents:
diff changeset
   723
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   724
void CGSCallPlugin::SetTitleL( TInt aTitleID )
hgs
parents:
diff changeset
   725
    {
hgs
parents:
diff changeset
   726
    CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
hgs
parents:
diff changeset
   727
    CleanupStack::PushL(statusPane);
hgs
parents:
diff changeset
   728
	CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(
hgs
parents:
diff changeset
   729
			EEikStatusPaneUidTitle));
hgs
parents:
diff changeset
   730
	CleanupStack::PushL( titlePane );
hgs
parents:
diff changeset
   731
	
hgs
parents:
diff changeset
   732
    TResourceReader reader;
hgs
parents:
diff changeset
   733
    iCoeEnv->CreateResourceReaderLC( reader, aTitleID );
hgs
parents:
diff changeset
   734
    titlePane->SetFromResourceL( reader ); 
hgs
parents:
diff changeset
   735
    
hgs
parents:
diff changeset
   736
    CleanupStack::PopAndDestroy();//reader
hgs
parents:
diff changeset
   737
	
hgs
parents:
diff changeset
   738
	CleanupStack::Pop(titlePane);
hgs
parents:
diff changeset
   739
	CleanupStack::Pop(statusPane);
hgs
parents:
diff changeset
   740
    }
hgs
parents:
diff changeset
   741
*/
hgs
parents:
diff changeset
   742
hgs
parents:
diff changeset
   743
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   744
//
hgs
parents:
diff changeset
   745
// Switches value between setting page and shared data.
hgs
parents:
diff changeset
   746
//  Values in shared data do not map nicely to values in setting menu,
hgs
parents:
diff changeset
   747
//  therefore sharedData:SettingOn(1) => settingPage:IndexOn(0).
hgs
parents:
diff changeset
   748
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   749
TInt CGSCallPlugin::SwitchValue( TInt& aValue )
hgs
parents:
diff changeset
   750
    {
hgs
parents:
diff changeset
   751
    if ( aValue == KGSSettingOn )
hgs
parents:
diff changeset
   752
        {
hgs
parents:
diff changeset
   753
        aValue = KGSIndexOn;
hgs
parents:
diff changeset
   754
        }
hgs
parents:
diff changeset
   755
    else if ( aValue == KGSSettingOff )
hgs
parents:
diff changeset
   756
        {
hgs
parents:
diff changeset
   757
        aValue = KGSIndexOff;
hgs
parents:
diff changeset
   758
        }
hgs
parents:
diff changeset
   759
    return aValue;
hgs
parents:
diff changeset
   760
    }
hgs
parents:
diff changeset
   761
hgs
parents:
diff changeset
   762
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   763
//
hgs
parents:
diff changeset
   764
// Observes changes to ALS, ALS Block and CLIR values.
hgs
parents:
diff changeset
   765
//
hgs
parents:
diff changeset
   766
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   767
void CGSCallPlugin::PhoneSettingChanged( TSSSettingsSetting aSetting,
hgs
parents:
diff changeset
   768
    TInt aNewValue )
hgs
parents:
diff changeset
   769
    {
hgs
parents:
diff changeset
   770
    __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::PhoneSettingChanged");
hgs
parents:
diff changeset
   771
    TInt updateMe = KErrNone;
hgs
parents:
diff changeset
   772
    switch( aSetting )
hgs
parents:
diff changeset
   773
        {
hgs
parents:
diff changeset
   774
        case ESSSettingsClir:
hgs
parents:
diff changeset
   775
            iClir = aNewValue;
hgs
parents:
diff changeset
   776
            updateMe = EGSCliItemId;
hgs
parents:
diff changeset
   777
            break;
hgs
parents:
diff changeset
   778
        case ESSSettingsAls:
hgs
parents:
diff changeset
   779
            iAls = aNewValue;
hgs
parents:
diff changeset
   780
            updateMe = EGSLineChangeItemId;
hgs
parents:
diff changeset
   781
            break;
hgs
parents:
diff changeset
   782
        case ESSSettingsAlsBlocking:
hgs
parents:
diff changeset
   783
            iAlsBlock = aNewValue;
hgs
parents:
diff changeset
   784
            updateMe = EGSALSBlockItemId;
hgs
parents:
diff changeset
   785
            TRAP_IGNORE( ShowAlsBlockNoteL() );
hgs
parents:
diff changeset
   786
            break;
hgs
parents:
diff changeset
   787
        default:
hgs
parents:
diff changeset
   788
            break;
hgs
parents:
diff changeset
   789
        }
hgs
parents:
diff changeset
   790
    __GSLOGSTRING1("[GSCallPlugin]    PhoneSettingChanged: aNewValue: %d", aNewValue);
hgs
parents:
diff changeset
   791
    if ( ( iContainer ) && ( updateMe != KErrNone ) )
hgs
parents:
diff changeset
   792
        {
hgs
parents:
diff changeset
   793
        TRAP_IGNORE( UpdateListBoxL( updateMe, aNewValue ) );
hgs
parents:
diff changeset
   794
        }
hgs
parents:
diff changeset
   795
    __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::PhoneSettingChanged");
hgs
parents:
diff changeset
   796
    }
hgs
parents:
diff changeset
   797
hgs
parents:
diff changeset
   798
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   799
//
hgs
parents:
diff changeset
   800
// Shows notes when Als Block value has been changed.
hgs
parents:
diff changeset
   801
//
hgs
parents:
diff changeset
   802
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   803
void CGSCallPlugin::ShowAlsBlockNoteL()
hgs
parents:
diff changeset
   804
    {
hgs
parents:
diff changeset
   805
    TInt noteText;
hgs
parents:
diff changeset
   806
    if ( iAlsBlock == ESSSettingsAlsBlockingOn )
hgs
parents:
diff changeset
   807
        {
hgs
parents:
diff changeset
   808
        noteText = R_ALS_LINE_BLOCKING_ON_SEL;
hgs
parents:
diff changeset
   809
        }
hgs
parents:
diff changeset
   810
    else
hgs
parents:
diff changeset
   811
        {
hgs
parents:
diff changeset
   812
        noteText = R_ALS_LINE_BLOCKING_OFF_SEL;
hgs
parents:
diff changeset
   813
        }
hgs
parents:
diff changeset
   814
hgs
parents:
diff changeset
   815
    HBufC* string = StringLoader::LoadLC( noteText );
hgs
parents:
diff changeset
   816
    CAknInformationNote* note = new ( ELeave ) CAknInformationNote();
hgs
parents:
diff changeset
   817
    note->ExecuteLD( *string );
hgs
parents:
diff changeset
   818
    CleanupStack::PopAndDestroy( string );
hgs
parents:
diff changeset
   819
    }
hgs
parents:
diff changeset
   820
hgs
parents:
diff changeset
   821
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   822
//
hgs
parents:
diff changeset
   823
// Creates new iContainer.
hgs
parents:
diff changeset
   824
//
hgs
parents:
diff changeset
   825
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   826
void CGSCallPlugin::NewContainerL()
hgs
parents:
diff changeset
   827
    {
hgs
parents:
diff changeset
   828
    __GSLOGSTRING("[GSCallPlugin]--> NewContainerL");
hgs
parents:
diff changeset
   829
    iContainer = new (ELeave) CGSCallPluginContainer;
hgs
parents:
diff changeset
   830
    __GSLOGSTRING("[GSCallPlugin] <--NewContainerL");
hgs
parents:
diff changeset
   831
    }
hgs
parents:
diff changeset
   832
hgs
parents:
diff changeset
   833
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   834
// CGSCallPlugin::HandleListBoxSelectionL
hgs
parents:
diff changeset
   835
//
hgs
parents:
diff changeset
   836
// Handle user selection in the listbox to perform an associated action
hgs
parents:
diff changeset
   837
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   838
void CGSCallPlugin::HandleListBoxSelectionL()
hgs
parents:
diff changeset
   839
    {
hgs
parents:
diff changeset
   840
    TBool updateValue = EFalse;
hgs
parents:
diff changeset
   841
    TInt value( KErrNone );
hgs
parents:
diff changeset
   842
    CEikMenuBar* menuBar = this->MenuBar();
hgs
parents:
diff changeset
   843
hgs
parents:
diff changeset
   844
    const TInt currentFeatureId = Container()->CurrentFeatureId();
hgs
parents:
diff changeset
   845
hgs
parents:
diff changeset
   846
    TBool featureVoipSupported = iModel->VoIPSupported();
hgs
parents:
diff changeset
   847
hgs
parents:
diff changeset
   848
    switch ( currentFeatureId )
hgs
parents:
diff changeset
   849
        {
hgs
parents:
diff changeset
   850
        case EGSOpeningSlideAnswerCallItemId:
hgs
parents:
diff changeset
   851
            SwitchOnOffSetting( EGSOpeningSlideAnswerCall );
hgs
parents:
diff changeset
   852
            updateValue = ETrue;
hgs
parents:
diff changeset
   853
            break;
hgs
parents:
diff changeset
   854
        case EGSClosingSlideEndCallItemId:
hgs
parents:
diff changeset
   855
            SwitchOnOffSetting( EGSClosingSlideEndCall );
hgs
parents:
diff changeset
   856
            updateValue = ETrue;
hgs
parents:
diff changeset
   857
            break;
hgs
parents:
diff changeset
   858
        case EGSCliItemId:
hgs
parents:
diff changeset
   859
            ShowSettingPageL( EGSCliItemId );
hgs
parents:
diff changeset
   860
            break;
hgs
parents:
diff changeset
   861
        case EGSCallWaitingItemId:
hgs
parents:
diff changeset
   862
            iRockerPress = ETrue;
hgs
parents:
diff changeset
   863
            menuBar->SetMenuType(CEikMenuBar::EMenuContext);
hgs
parents:
diff changeset
   864
            menuBar->TryDisplayMenuBarL();
hgs
parents:
diff changeset
   865
            menuBar->SetMenuType(CEikMenuBar::EMenuOptions);
hgs
parents:
diff changeset
   866
            iRockerPress = EFalse;
hgs
parents:
diff changeset
   867
            break;
hgs
parents:
diff changeset
   868
        case EGSICSendIntCallIdItemId:  // Send my Internet call id.
hgs
parents:
diff changeset
   869
            if ( featureVoipSupported )
hgs
parents:
diff changeset
   870
                {
hgs
parents:
diff changeset
   871
                iModel->GetVoIPCallSettingValue( EGSVoIPSendIntCallId, value );
hgs
parents:
diff changeset
   872
hgs
parents:
diff changeset
   873
                if ( value == EGSSendIntCallIdOff )
hgs
parents:
diff changeset
   874
                    {
hgs
parents:
diff changeset
   875
                    iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
   876
                        EGSVoIPSendIntCallId, EGSSendIntCallIdOn );
hgs
parents:
diff changeset
   877
                    }
hgs
parents:
diff changeset
   878
                else
hgs
parents:
diff changeset
   879
                    {
hgs
parents:
diff changeset
   880
                    iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
   881
                        EGSVoIPSendIntCallId, EGSSendIntCallIdOff );
hgs
parents:
diff changeset
   882
hgs
parents:
diff changeset
   883
                    TInt status( KErrNone );
hgs
parents:
diff changeset
   884
                    iModel->GetSCCPStatus( status );
hgs
parents:
diff changeset
   885
hgs
parents:
diff changeset
   886
                    if ( status == 1 )
hgs
parents:
diff changeset
   887
                        {
hgs
parents:
diff changeset
   888
                        HBufC* prompt = StringLoader::
hgs
parents:
diff changeset
   889
                            LoadLC( R_QTN_VOIP_SCCP_NO_CLIR );
hgs
parents:
diff changeset
   890
                        CAknInformationNote* note =
hgs
parents:
diff changeset
   891
                            new(ELeave) CAknInformationNote( ETrue );
hgs
parents:
diff changeset
   892
                        note->ExecuteLD( *prompt );
hgs
parents:
diff changeset
   893
                        CleanupStack::PopAndDestroy( prompt );
hgs
parents:
diff changeset
   894
                        }
hgs
parents:
diff changeset
   895
                    }
hgs
parents:
diff changeset
   896
                updateValue = ETrue;
hgs
parents:
diff changeset
   897
                }
hgs
parents:
diff changeset
   898
            break;
hgs
parents:
diff changeset
   899
        case EGSICWaitingItemId:  // Internet call waiting item.
hgs
parents:
diff changeset
   900
            if ( featureVoipSupported )
hgs
parents:
diff changeset
   901
                {
hgs
parents:
diff changeset
   902
                iModel->GetVoIPCallSettingValue( EGSVoIPCW, value );
hgs
parents:
diff changeset
   903
hgs
parents:
diff changeset
   904
                if ( value == EGSCSCallWaitingOff )
hgs
parents:
diff changeset
   905
                    {
hgs
parents:
diff changeset
   906
                    iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
   907
                        EGSVoIPCW, EGSCSCallWaitingOn );
hgs
parents:
diff changeset
   908
                    }
hgs
parents:
diff changeset
   909
                else
hgs
parents:
diff changeset
   910
                    {
hgs
parents:
diff changeset
   911
                    iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
   912
                        EGSVoIPCW, EGSCSCallWaitingOff );
hgs
parents:
diff changeset
   913
                    }
hgs
parents:
diff changeset
   914
                updateValue = ETrue;
hgs
parents:
diff changeset
   915
                }
hgs
parents:
diff changeset
   916
            break;
hgs
parents:
diff changeset
   917
        case EGSICPreferredTelephonyId: // Preferred call type.
hgs
parents:
diff changeset
   918
            if ( featureVoipSupported )
hgs
parents:
diff changeset
   919
                {
hgs
parents:
diff changeset
   920
                iModel->GetVoIPCallSettingValue( EGSVoIPPreType, value );
hgs
parents:
diff changeset
   921
hgs
parents:
diff changeset
   922
                if ( value == EGSPreferredCS )
hgs
parents:
diff changeset
   923
                    {
hgs
parents:
diff changeset
   924
                    iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
   925
                        EGSVoIPPreType, EGSPreferredPS );
hgs
parents:
diff changeset
   926
                    
hgs
parents:
diff changeset
   927
                    // Show message query dialog if preferred call
hgs
parents:
diff changeset
   928
                    // setting was changed to the Int. Telephone.
hgs
parents:
diff changeset
   929
                    ShowPreferredTelephonyNoteL();     
hgs
parents:
diff changeset
   930
                    }
hgs
parents:
diff changeset
   931
                else
hgs
parents:
diff changeset
   932
                    {
hgs
parents:
diff changeset
   933
                    iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
   934
                        EGSVoIPPreType, EGSPreferredCS );
hgs
parents:
diff changeset
   935
                    }
hgs
parents:
diff changeset
   936
                updateValue = ETrue;
hgs
parents:
diff changeset
   937
                }
hgs
parents:
diff changeset
   938
            break;
hgs
parents:
diff changeset
   939
        case EGSDndItemId: // Do not disturb.
hgs
parents:
diff changeset
   940
            if ( featureVoipSupported )
hgs
parents:
diff changeset
   941
                {
hgs
parents:
diff changeset
   942
                iModel->GetVoIPCallSettingValue( EGSVoIPDnd, value );
hgs
parents:
diff changeset
   943
hgs
parents:
diff changeset
   944
                if ( value == EGSCSCallDndOff )
hgs
parents:
diff changeset
   945
                    {
hgs
parents:
diff changeset
   946
                    iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
   947
                        EGSVoIPDnd, EGSCSCallDndOn );
hgs
parents:
diff changeset
   948
                    }
hgs
parents:
diff changeset
   949
                else
hgs
parents:
diff changeset
   950
                    {
hgs
parents:
diff changeset
   951
                    iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
   952
                        EGSVoIPDnd, EGSCSCallDndOff );
hgs
parents:
diff changeset
   953
                    }
hgs
parents:
diff changeset
   954
                updateValue = ETrue;
hgs
parents:
diff changeset
   955
                }
hgs
parents:
diff changeset
   956
            break;
hgs
parents:
diff changeset
   957
        case EGSSoftRejectTextItemId:
hgs
parents:
diff changeset
   958
            ShowSoftRejectSettingPageL();
hgs
parents:
diff changeset
   959
            updateValue = ETrue;
hgs
parents:
diff changeset
   960
            break;
hgs
parents:
diff changeset
   961
        case EGSSummaryAfterCallItemId:
hgs
parents:
diff changeset
   962
            SwitchOnOffSetting( EGSSummaryAfterCall );
hgs
parents:
diff changeset
   963
            updateValue = ETrue;
hgs
parents:
diff changeset
   964
            break;
hgs
parents:
diff changeset
   965
        case EGSLineChangeItemId:
hgs
parents:
diff changeset
   966
            SwitchAlsSettingL();
hgs
parents:
diff changeset
   967
            break;
hgs
parents:
diff changeset
   968
        case EGSALSBlockItemId:
hgs
parents:
diff changeset
   969
            ShowAlsSettingPageL( EGSALSBlockItemId );
hgs
parents:
diff changeset
   970
            break;
hgs
parents:
diff changeset
   971
        //Still image listbox creating
hgs
parents:
diff changeset
   972
        case EGSStillImageItemId:
hgs
parents:
diff changeset
   973
            if ( FeatureManager::FeatureSupported(
hgs
parents:
diff changeset
   974
                                 KFeatureIdCsVideoTelephony ) && 
hgs
parents:
diff changeset
   975
                                 !iVTImageSelectionOngoing )
hgs
parents:
diff changeset
   976
                {
hgs
parents:
diff changeset
   977
                //Locking listbox selection so user cannot click
hgs
parents:
diff changeset
   978
                //VT still image item twice
hgs
parents:
diff changeset
   979
                iVTImageSelectionOngoing = ETrue;
hgs
parents:
diff changeset
   980
                
hgs
parents:
diff changeset
   981
                //This takes some time
hgs
parents:
diff changeset
   982
                ShowVTStillImageSettingPageL();
hgs
parents:
diff changeset
   983
                
hgs
parents:
diff changeset
   984
                //Releasing lock
hgs
parents:
diff changeset
   985
                iVTImageSelectionOngoing = EFalse;
hgs
parents:
diff changeset
   986
                }
hgs
parents:
diff changeset
   987
            break;
hgs
parents:
diff changeset
   988
        case EGSOwnImageVtCallItemId:
hgs
parents:
diff changeset
   989
            if ( FeatureManager::FeatureSupported(
hgs
parents:
diff changeset
   990
                                 KFeatureIdCsVideoTelephony ) )
hgs
parents:
diff changeset
   991
                {
hgs
parents:
diff changeset
   992
                ShowOwnImageVtCallSettingPageL();
hgs
parents:
diff changeset
   993
                }
hgs
parents:
diff changeset
   994
            break;
hgs
parents:
diff changeset
   995
        case EGSReplacePrefixItemId:
hgs
parents:
diff changeset
   996
            if ( FeatureManager::FeatureSupported( KFeatureIdJapanPrefixChange ) )
hgs
parents:
diff changeset
   997
                {
hgs
parents:
diff changeset
   998
                ChangePrefixSettingL( EFalse );
hgs
parents:
diff changeset
   999
                updateValue = ETrue;
hgs
parents:
diff changeset
  1000
                }
hgs
parents:
diff changeset
  1001
            break;
hgs
parents:
diff changeset
  1002
        case EGSShowCallDurationItemId:
hgs
parents:
diff changeset
  1003
            ChangeCallDurationSettingL( EFalse );
hgs
parents:
diff changeset
  1004
            updateValue = ETrue;
hgs
parents:
diff changeset
  1005
            break;
hgs
parents:
diff changeset
  1006
        case EGSLongPressCallKeyItemId:
hgs
parents:
diff changeset
  1007
        #ifdef RD_VT_LONG_SEND_KEY
hgs
parents:
diff changeset
  1008
        	ChangeLongPressCallKeySettingL( EFalse );
hgs
parents:
diff changeset
  1009
        #endif
hgs
parents:
diff changeset
  1010
        	break;
hgs
parents:
diff changeset
  1011
        default:
hgs
parents:
diff changeset
  1012
            break;
hgs
parents:
diff changeset
  1013
        }
hgs
parents:
diff changeset
  1014
    if ( updateValue )
hgs
parents:
diff changeset
  1015
        {
hgs
parents:
diff changeset
  1016
        UpdateListBoxL( currentFeatureId, KGSNotUsed );
hgs
parents:
diff changeset
  1017
        }
hgs
parents:
diff changeset
  1018
    }
hgs
parents:
diff changeset
  1019
hgs
parents:
diff changeset
  1020
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1021
//
hgs
parents:
diff changeset
  1022
// Converts value from setting page to SsSettings:
hgs
parents:
diff changeset
  1023
// settin page: line change disabled(0) => ESSSettingsAlsBlockingOn(2)
hgs
parents:
diff changeset
  1024
// settin page: line change enabled(1) => ESSSettingsAlsBlockingOff(1)
hgs
parents:
diff changeset
  1025
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1026
//
hgs
parents:
diff changeset
  1027
void CGSCallPlugin::AlsBlockConvertValue( TInt& aValue )
hgs
parents:
diff changeset
  1028
    {
hgs
parents:
diff changeset
  1029
    __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::AlsBlockConvertValue");
hgs
parents:
diff changeset
  1030
    __GSLOGSTRING1("[GSCallPlugin]    AlsBlockConvertValue: aValue: %d", aValue);
hgs
parents:
diff changeset
  1031
    if ( aValue == KGSAlsBlockOn )
hgs
parents:
diff changeset
  1032
        {
hgs
parents:
diff changeset
  1033
        iAlsBlock = ESSSettingsAlsBlockingOn;
hgs
parents:
diff changeset
  1034
        }
hgs
parents:
diff changeset
  1035
    else
hgs
parents:
diff changeset
  1036
        {
hgs
parents:
diff changeset
  1037
        iAlsBlock = ESSSettingsAlsBlockingOff;
hgs
parents:
diff changeset
  1038
        }
hgs
parents:
diff changeset
  1039
    __GSLOGSTRING1("[GSCallPlugin]    AlsBlockConvertValue: aValue: %d", aValue);
hgs
parents:
diff changeset
  1040
    __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::AlsBlockConvertValue");
hgs
parents:
diff changeset
  1041
    }
hgs
parents:
diff changeset
  1042
hgs
parents:
diff changeset
  1043
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1044
//
hgs
parents:
diff changeset
  1045
// Converts value from setting page to SsSettings:
hgs
parents:
diff changeset
  1046
// settin page: own number sending default(0) =>
hgs
parents:
diff changeset
  1047
//                               SsSettings: ESSSettingsClirNetworkDefault(0)
hgs
parents:
diff changeset
  1048
// settin page: own number sending on (1) =>
hgs
parents:
diff changeset
  1049
//                               SsSettings: ESSSettingsClirExplicitSuppress(2)
hgs
parents:
diff changeset
  1050
// settin page: own number sending off (2) =>
hgs
parents:
diff changeset
  1051
//                               SsSettings: ESSSettingsClirExplicitInvoke(1)
hgs
parents:
diff changeset
  1052
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1053
//
hgs
parents:
diff changeset
  1054
void CGSCallPlugin::CliConvertValue( TInt& aValue )
hgs
parents:
diff changeset
  1055
    {
hgs
parents:
diff changeset
  1056
    switch ( aValue )
hgs
parents:
diff changeset
  1057
        {
hgs
parents:
diff changeset
  1058
        case KGSCliDefault:
hgs
parents:
diff changeset
  1059
            aValue = ESSSettingsClirNetworkDefault;
hgs
parents:
diff changeset
  1060
            break;
hgs
parents:
diff changeset
  1061
        case KGSCliOn:
hgs
parents:
diff changeset
  1062
            aValue = ESSSettingsClirExplicitSuppress;
hgs
parents:
diff changeset
  1063
            break;
hgs
parents:
diff changeset
  1064
        case KGSCliOff:
hgs
parents:
diff changeset
  1065
            aValue = ESSSettingsClirExplicitInvoke;
hgs
parents:
diff changeset
  1066
            break;
hgs
parents:
diff changeset
  1067
        default:
hgs
parents:
diff changeset
  1068
            //error, return to-be converted value w/o changes
hgs
parents:
diff changeset
  1069
            break;
hgs
parents:
diff changeset
  1070
        }
hgs
parents:
diff changeset
  1071
    }
hgs
parents:
diff changeset
  1072
hgs
parents:
diff changeset
  1073
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1074
//
hgs
parents:
diff changeset
  1075
// Updates specific value to container.
hgs
parents:
diff changeset
  1076
//
hgs
parents:
diff changeset
  1077
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1078
//
hgs
parents:
diff changeset
  1079
void CGSCallPlugin::UpdateListBoxL( const TInt& aListItem,
hgs
parents:
diff changeset
  1080
                                          TInt aNewValue )
hgs
parents:
diff changeset
  1081
    {
hgs
parents:
diff changeset
  1082
    /*if ( aListItem == EGSStillImageItemId )
hgs
parents:
diff changeset
  1083
    	{
hgs
parents:
diff changeset
  1084
        TRAP_IGNORE( iAvkonAppUi->StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL ) );
hgs
parents:
diff changeset
  1085
        SetTitleL( R_GS_CALL_VIEW_TITLE );
hgs
parents:
diff changeset
  1086
        TRAP_IGNORE( iAvkonAppUi->StatusPane()->DrawNow() );
hgs
parents:
diff changeset
  1087
    	}*/
hgs
parents:
diff changeset
  1088
    if ( Container() )
hgs
parents:
diff changeset
  1089
        {
hgs
parents:
diff changeset
  1090
        Container()->UpdateListBoxL( aListItem, aNewValue );
hgs
parents:
diff changeset
  1091
        }
hgs
parents:
diff changeset
  1092
    CheckMiddleSoftkeyLabelL();
hgs
parents:
diff changeset
  1093
    }
hgs
parents:
diff changeset
  1094
hgs
parents:
diff changeset
  1095
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1096
//
hgs
parents:
diff changeset
  1097
// Before showing a options menu
hgs
parents:
diff changeset
  1098
//
hgs
parents:
diff changeset
  1099
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1100
//
hgs
parents:
diff changeset
  1101
void CGSCallPlugin::DynInitMenuPaneL( TInt aResourceId,
hgs
parents:
diff changeset
  1102
                                      CEikMenuPane* aMenuPane )
hgs
parents:
diff changeset
  1103
    {
hgs
parents:
diff changeset
  1104
    __GSLOGSTRING("[GSCallPlugin]--> DynInitMenuPaneL");
hgs
parents:
diff changeset
  1105
    const TInt currentFeatureId = Container()->CurrentFeatureId();
hgs
parents:
diff changeset
  1106
    CEikMenuBar* menuBar = this->MenuBar();
hgs
parents:
diff changeset
  1107
    if ( aResourceId == R_GS_CALL_VIEW_MENU )
hgs
parents:
diff changeset
  1108
        {
hgs
parents:
diff changeset
  1109
        if ( currentFeatureId == EGSCallWaitingItemId  )
hgs
parents:
diff changeset
  1110
            {
hgs
parents:
diff changeset
  1111
            //add CW menu
hgs
parents:
diff changeset
  1112
            if (MenuBar()->ItemSpecificCommandsEnabled() || MenuBar()->GetMenuType() == CEikMenuBar::EMenuContext)
hgs
parents:
diff changeset
  1113
            	{
hgs
parents:
diff changeset
  1114
            	aMenuPane->AddMenuItemsL( R_GS_CALL_WAIT_VIEW_MENU,EAppCmdCreatePopupList );
hgs
parents:
diff changeset
  1115
            	}
hgs
parents:
diff changeset
  1116
            
hgs
parents:
diff changeset
  1117
            //hide Change if call waiting is selected
hgs
parents:
diff changeset
  1118
            aMenuPane->SetItemDimmed( EAppCmdCreatePopupList, ETrue );
hgs
parents:
diff changeset
  1119
            
hgs
parents:
diff changeset
  1120
            if ( iRockerPress )
hgs
parents:
diff changeset
  1121
                {
hgs
parents:
diff changeset
  1122
                aMenuPane->SetItemDimmed( EAknCmdExit, ETrue );
hgs
parents:
diff changeset
  1123
                }
hgs
parents:
diff changeset
  1124
            
hgs
parents:
diff changeset
  1125
            if ( FeatureManager::FeatureSupported( KFeatureIdHelp )
hgs
parents:
diff changeset
  1126
                 && !iRockerPress )
hgs
parents:
diff changeset
  1127
                {
hgs
parents:
diff changeset
  1128
                aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse );
hgs
parents:
diff changeset
  1129
                }
hgs
parents:
diff changeset
  1130
            else
hgs
parents:
diff changeset
  1131
                {
hgs
parents:
diff changeset
  1132
                aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
hgs
parents:
diff changeset
  1133
                }
hgs
parents:
diff changeset
  1134
            }
hgs
parents:
diff changeset
  1135
        else
hgs
parents:
diff changeset
  1136
            {
hgs
parents:
diff changeset
  1137
            //for other items than call waiting
hgs
parents:
diff changeset
  1138
            if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
hgs
parents:
diff changeset
  1139
                {
hgs
parents:
diff changeset
  1140
                aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse );
hgs
parents:
diff changeset
  1141
                }
hgs
parents:
diff changeset
  1142
            else
hgs
parents:
diff changeset
  1143
                {
hgs
parents:
diff changeset
  1144
                aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
hgs
parents:
diff changeset
  1145
                }
hgs
parents:
diff changeset
  1146
            }
hgs
parents:
diff changeset
  1147
        }
hgs
parents:
diff changeset
  1148
    
hgs
parents:
diff changeset
  1149
    __GSLOGSTRING("[GSCallPlugin] <--DynInitMenuPaneL");
hgs
parents:
diff changeset
  1150
    }
hgs
parents:
diff changeset
  1151
hgs
parents:
diff changeset
  1152
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1153
//
hgs
parents:
diff changeset
  1154
// Requests user to enter PIN2
hgs
parents:
diff changeset
  1155
//
hgs
parents:
diff changeset
  1156
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1157
//
hgs
parents:
diff changeset
  1158
TInt CGSCallPlugin::MakePin2QueryL()
hgs
parents:
diff changeset
  1159
    {
hgs
parents:
diff changeset
  1160
    TInt retValue = KErrNone;
hgs
parents:
diff changeset
  1161
    TSecUi::InitializeLibL();
hgs
parents:
diff changeset
  1162
hgs
parents:
diff changeset
  1163
    CSecuritySettings* settings = CSecuritySettings::NewL();
hgs
parents:
diff changeset
  1164
    CleanupStack::PushL( settings );
hgs
parents:
diff changeset
  1165
hgs
parents:
diff changeset
  1166
    if ( settings->AskPin2L() )
hgs
parents:
diff changeset
  1167
        {
hgs
parents:
diff changeset
  1168
        retValue = KGSPinQueryOk;
hgs
parents:
diff changeset
  1169
        }
hgs
parents:
diff changeset
  1170
hgs
parents:
diff changeset
  1171
    CleanupStack::PopAndDestroy( settings );
hgs
parents:
diff changeset
  1172
    TSecUi::UnInitializeLib();
hgs
parents:
diff changeset
  1173
hgs
parents:
diff changeset
  1174
    return retValue;
hgs
parents:
diff changeset
  1175
    }
hgs
parents:
diff changeset
  1176
hgs
parents:
diff changeset
  1177
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1178
//
hgs
parents:
diff changeset
  1179
// Requests user to enter security code
hgs
parents:
diff changeset
  1180
//
hgs
parents:
diff changeset
  1181
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1182
//
hgs
parents:
diff changeset
  1183
TInt CGSCallPlugin::MakeSecCodeQueryL()
hgs
parents:
diff changeset
  1184
    {
hgs
parents:
diff changeset
  1185
    TBool retValue = EFalse;
hgs
parents:
diff changeset
  1186
    TSecUi::InitializeLibL();
hgs
parents:
diff changeset
  1187
hgs
parents:
diff changeset
  1188
    CSecuritySettings* settings = CSecuritySettings::NewL();
hgs
parents:
diff changeset
  1189
    CleanupStack::PushL( settings );
hgs
parents:
diff changeset
  1190
hgs
parents:
diff changeset
  1191
    retValue = settings->AskSecCodeL();
hgs
parents:
diff changeset
  1192
hgs
parents:
diff changeset
  1193
    CleanupStack::PopAndDestroy( settings );
hgs
parents:
diff changeset
  1194
    TSecUi::UnInitializeLib();
hgs
parents:
diff changeset
  1195
hgs
parents:
diff changeset
  1196
    return retValue;
hgs
parents:
diff changeset
  1197
    }
hgs
parents:
diff changeset
  1198
hgs
parents:
diff changeset
  1199
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1200
//
hgs
parents:
diff changeset
  1201
// Changes value in shared data for Als
hgs
parents:
diff changeset
  1202
//
hgs
parents:
diff changeset
  1203
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1204
//
hgs
parents:
diff changeset
  1205
void CGSCallPlugin::SwitchAlsSettingL()
hgs
parents:
diff changeset
  1206
    {
hgs
parents:
diff changeset
  1207
    __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::SwitchAlsSettingL");
hgs
parents:
diff changeset
  1208
    //causes PIN2 query to launch, if necessary
hgs
parents:
diff changeset
  1209
    if ( iAlsBlock == ESSSettingsAlsBlockingOn )
hgs
parents:
diff changeset
  1210
        {
hgs
parents:
diff changeset
  1211
        TInt pin = MakePin2QueryL();
hgs
parents:
diff changeset
  1212
        if (  pin != KGSPinQueryOk )
hgs
parents:
diff changeset
  1213
            {
hgs
parents:
diff changeset
  1214
            __GSLOGSTRING("[GSCallPlugin]    SwitchAlsSettingL: User failed in Pin2 Query");
hgs
parents:
diff changeset
  1215
            return; //User failed in Pin2 Query
hgs
parents:
diff changeset
  1216
            }
hgs
parents:
diff changeset
  1217
        }
hgs
parents:
diff changeset
  1218
    iSsSettings->Get( ESSSettingsAls, iAls );
hgs
parents:
diff changeset
  1219
    if ( iAls == ESSSettingsAlsPrimary )
hgs
parents:
diff changeset
  1220
        {
hgs
parents:
diff changeset
  1221
        iAls = ESSSettingsAlsAlternate;
hgs
parents:
diff changeset
  1222
        }
hgs
parents:
diff changeset
  1223
    else
hgs
parents:
diff changeset
  1224
        {
hgs
parents:
diff changeset
  1225
        iAls = ESSSettingsAlsPrimary;
hgs
parents:
diff changeset
  1226
        }
hgs
parents:
diff changeset
  1227
    iSsSettings->Set( ESSSettingsAls, iAls );
hgs
parents:
diff changeset
  1228
    __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::SwitchAlsSettingL");
hgs
parents:
diff changeset
  1229
    }
hgs
parents:
diff changeset
  1230
hgs
parents:
diff changeset
  1231
hgs
parents:
diff changeset
  1232
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1233
//
hgs
parents:
diff changeset
  1234
// Show Soft Reject Text setting page
hgs
parents:
diff changeset
  1235
//
hgs
parents:
diff changeset
  1236
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1237
//
hgs
parents:
diff changeset
  1238
void CGSCallPlugin::ShowSoftRejectSettingPageL()
hgs
parents:
diff changeset
  1239
    {
hgs
parents:
diff changeset
  1240
    __GSLOGSTRING("[GSCallPlugin]--> ShowSoftRejectSettingPageL");
hgs
parents:
diff changeset
  1241
    HBufC* dynamicText = HBufC::NewLC( KGSSMSTxtEditorLength );
hgs
parents:
diff changeset
  1242
    TPtr string( dynamicText->Des() );
hgs
parents:
diff changeset
  1243
hgs
parents:
diff changeset
  1244
    Container()->GetSoftRejectTextL( string );
hgs
parents:
diff changeset
  1245
hgs
parents:
diff changeset
  1246
    HBufC* title = Container()->ReadFromResourceL( R_SOFT_REJECT_TXT_TITLE );
hgs
parents:
diff changeset
  1247
    CleanupStack::PushL( title );
hgs
parents:
diff changeset
  1248
hgs
parents:
diff changeset
  1249
    // Open resource file, to get the resource texts for setting page.
hgs
parents:
diff changeset
  1250
    // Find the resource file
hgs
parents:
diff changeset
  1251
    RConeResourceLoader loader( *iCoeEnv );
hgs
parents:
diff changeset
  1252
    TParse parse;
hgs
parents:
diff changeset
  1253
    parse.Set( KGSSoftRejectResource, &KDC_RESOURCE_FILES_DIR, NULL );
hgs
parents:
diff changeset
  1254
    TFileName fileName( parse.FullName() );
hgs
parents:
diff changeset
  1255
hgs
parents:
diff changeset
  1256
    // Get language of resource file
hgs
parents:
diff changeset
  1257
    BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName );
hgs
parents:
diff changeset
  1258
hgs
parents:
diff changeset
  1259
    // Open resource file
hgs
parents:
diff changeset
  1260
    TInt err = loader.Open( fileName );
hgs
parents:
diff changeset
  1261
    if ( err == KErrNotFound )
hgs
parents:
diff changeset
  1262
        {
hgs
parents:
diff changeset
  1263
        User::Leave( KErrGeneral );
hgs
parents:
diff changeset
  1264
        }
hgs
parents:
diff changeset
  1265
    CleanupClosePushL( loader );
hgs
parents:
diff changeset
  1266
hgs
parents:
diff changeset
  1267
    CAknSettingPage* dlg = new( ELeave )CAknTextSettingPage(
hgs
parents:
diff changeset
  1268
        title,
hgs
parents:
diff changeset
  1269
        EAknSettingPageNoOrdinalDisplayed,
hgs
parents:
diff changeset
  1270
        KGSUseDefault,
hgs
parents:
diff changeset
  1271
        KGSUseDefault,
hgs
parents:
diff changeset
  1272
        R_TEXT_SETTING_PAGE,
hgs
parents:
diff changeset
  1273
        string,
hgs
parents:
diff changeset
  1274
        CAknTextSettingPage::EZeroLengthAllowed |
hgs
parents:
diff changeset
  1275
        CAknTextSettingPage::EPredictiveTextEntryPermitted );
hgs
parents:
diff changeset
  1276
hgs
parents:
diff changeset
  1277
    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
hgs
parents:
diff changeset
  1278
        {
hgs
parents:
diff changeset
  1279
        TInt value = KGSSettingOn;
hgs
parents:
diff changeset
  1280
        iModel->SetCallSettingValue( EGSSoftRejectDefault, value );
hgs
parents:
diff changeset
  1281
        AknTextUtils::StripCharacters( string, KAknStripTabs );
hgs
parents:
diff changeset
  1282
        iModel->SetSoftRejectText( string );
hgs
parents:
diff changeset
  1283
        }
hgs
parents:
diff changeset
  1284
hgs
parents:
diff changeset
  1285
    CleanupStack::PopAndDestroy( 3 ); //title, dynamicText, loader
hgs
parents:
diff changeset
  1286
    __GSLOGSTRING("[GSCallPlugin] <--ShowSoftRejectSettingPageL");
hgs
parents:
diff changeset
  1287
    }
hgs
parents:
diff changeset
  1288
hgs
parents:
diff changeset
  1289
hgs
parents:
diff changeset
  1290
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1291
//
hgs
parents:
diff changeset
  1292
// Show Replace Prefix setting page
hgs
parents:
diff changeset
  1293
//
hgs
parents:
diff changeset
  1294
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1295
//
hgs
parents:
diff changeset
  1296
TBool CGSCallPlugin::ShowPrefixSettingPageL( TInt& aCurrentValue )
hgs
parents:
diff changeset
  1297
    {
hgs
parents:
diff changeset
  1298
    __GSLOGSTRING("[GSCallPlugin]--> ShowPrefixSettingPageL");
hgs
parents:
diff changeset
  1299
    CDesCArrayFlat* items =
hgs
parents:
diff changeset
  1300
        iCoeEnv->ReadDesC16ArrayResourceL( R_GS_REPLACE_PREFIX_SETTING_PAGE_LBX );
hgs
parents:
diff changeset
  1301
    CleanupStack::PushL( items );
hgs
parents:
diff changeset
  1302
hgs
parents:
diff changeset
  1303
    CAknRadioButtonSettingPage* dlg =
hgs
parents:
diff changeset
  1304
        new (ELeave) CAknRadioButtonSettingPage( R_GS_REPLACE_PREFIX_SETTING_PAGE,
hgs
parents:
diff changeset
  1305
                                                aCurrentValue, items );
hgs
parents:
diff changeset
  1306
hgs
parents:
diff changeset
  1307
    TBool ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
hgs
parents:
diff changeset
  1308
    CleanupStack::PopAndDestroy( items );
hgs
parents:
diff changeset
  1309
hgs
parents:
diff changeset
  1310
    __GSLOGSTRING1("[GSCallPlugin]    ShowPrefixSettingPageL: aCurrentValue: %d", aCurrentValue);
hgs
parents:
diff changeset
  1311
    __GSLOGSTRING("[GSCallPlugin] <--ShowPrefixSettingPageL");
hgs
parents:
diff changeset
  1312
    return ret;
hgs
parents:
diff changeset
  1313
    }
hgs
parents:
diff changeset
  1314
hgs
parents:
diff changeset
  1315
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1316
// CGSCallPlugin::ChangePrefixSettingL
hgs
parents:
diff changeset
  1317
//
hgs
parents:
diff changeset
  1318
// Change replace prefix setting.
hgs
parents:
diff changeset
  1319
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1320
//
hgs
parents:
diff changeset
  1321
void CGSCallPlugin::ChangePrefixSettingL( TBool aSettingPage )
hgs
parents:
diff changeset
  1322
    {
hgs
parents:
diff changeset
  1323
    __GSLOGSTRING("[GSCallPlugin]--> ChangePrefixSettingL");
hgs
parents:
diff changeset
  1324
hgs
parents:
diff changeset
  1325
    TInt changeMode = iModel->PrefixChangeModeL();
hgs
parents:
diff changeset
  1326
    TInt prevChangeMode = changeMode;
hgs
parents:
diff changeset
  1327
    TBool updateValue = ETrue;
hgs
parents:
diff changeset
  1328
    TBool rockerPress = EFalse;
hgs
parents:
diff changeset
  1329
hgs
parents:
diff changeset
  1330
    __GSLOGSTRING1("[GSCallPlugin]    ChangePrefixSettingL: prevChangeMode: %d", prevChangeMode);
hgs
parents:
diff changeset
  1331
    if ( aSettingPage )
hgs
parents:
diff changeset
  1332
        {
hgs
parents:
diff changeset
  1333
        updateValue = ShowPrefixSettingPageL( changeMode );
hgs
parents:
diff changeset
  1334
        }
hgs
parents:
diff changeset
  1335
    else
hgs
parents:
diff changeset
  1336
        {
hgs
parents:
diff changeset
  1337
        rockerPress = ETrue;
hgs
parents:
diff changeset
  1338
        if( changeMode == KGSSettingItemOff )
hgs
parents:
diff changeset
  1339
            {
hgs
parents:
diff changeset
  1340
            changeMode = KGSSettingItemOn;
hgs
parents:
diff changeset
  1341
            }
hgs
parents:
diff changeset
  1342
        else
hgs
parents:
diff changeset
  1343
            {
hgs
parents:
diff changeset
  1344
            changeMode = KGSSettingItemOff;
hgs
parents:
diff changeset
  1345
            }
hgs
parents:
diff changeset
  1346
        }
hgs
parents:
diff changeset
  1347
hgs
parents:
diff changeset
  1348
    __GSLOGSTRING1("[GSCallPlugin]    ChangePrefixSettingL: changeMode: %d", changeMode);
hgs
parents:
diff changeset
  1349
    if ( updateValue )
hgs
parents:
diff changeset
  1350
        {
hgs
parents:
diff changeset
  1351
        //if the value is changed and is set to ON, display the query dialog
hgs
parents:
diff changeset
  1352
        if ( changeMode == KGSSettingItemOn )
hgs
parents:
diff changeset
  1353
            {
hgs
parents:
diff changeset
  1354
            HBufC* replacePrefix = HBufC::NewLC( KGSReplacePrefixTextLength );
hgs
parents:
diff changeset
  1355
            TPtr string( replacePrefix->Des() );
hgs
parents:
diff changeset
  1356
            string.Zero();
hgs
parents:
diff changeset
  1357
hgs
parents:
diff changeset
  1358
            iModel->PrefixChangeDataL( string );
hgs
parents:
diff changeset
  1359
hgs
parents:
diff changeset
  1360
            CAknTextQueryDialog* dlg = new( ELeave ) CAknTextQueryDialog( string );
hgs
parents:
diff changeset
  1361
hgs
parents:
diff changeset
  1362
            TBool ret = dlg->ExecuteLD( R_REPLACE_PREFIX_DATA_QUERY );
hgs
parents:
diff changeset
  1363
            if( ret )
hgs
parents:
diff changeset
  1364
                {
hgs
parents:
diff changeset
  1365
                rockerPress = ETrue;
hgs
parents:
diff changeset
  1366
                iModel->SetPrefixChangeDataL( string );
hgs
parents:
diff changeset
  1367
                }
hgs
parents:
diff changeset
  1368
            else
hgs
parents:
diff changeset
  1369
                {
hgs
parents:
diff changeset
  1370
                rockerPress = EFalse;
hgs
parents:
diff changeset
  1371
                }
hgs
parents:
diff changeset
  1372
            CleanupStack::PopAndDestroy( replacePrefix );
hgs
parents:
diff changeset
  1373
hgs
parents:
diff changeset
  1374
            }
hgs
parents:
diff changeset
  1375
        else
hgs
parents:
diff changeset
  1376
            {
hgs
parents:
diff changeset
  1377
            rockerPress = ETrue;
hgs
parents:
diff changeset
  1378
            }
hgs
parents:
diff changeset
  1379
        }
hgs
parents:
diff changeset
  1380
hgs
parents:
diff changeset
  1381
    if ( prevChangeMode != changeMode && rockerPress )
hgs
parents:
diff changeset
  1382
        {
hgs
parents:
diff changeset
  1383
        iModel->SetPrefixChangeModeL( changeMode );
hgs
parents:
diff changeset
  1384
        }
hgs
parents:
diff changeset
  1385
hgs
parents:
diff changeset
  1386
    __GSLOGSTRING("[GSCallPlugin] <--ChangePrefixSettingL");
hgs
parents:
diff changeset
  1387
    }
hgs
parents:
diff changeset
  1388
hgs
parents:
diff changeset
  1389
hgs
parents:
diff changeset
  1390
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1391
// CGSCallPlugin::SetVoipSettingBasedSelectedLine
hgs
parents:
diff changeset
  1392
//
hgs
parents:
diff changeset
  1393
// Set the new changes to VOIP variables.
hgs
parents:
diff changeset
  1394
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1395
//
hgs
parents:
diff changeset
  1396
void CGSCallPlugin::SetVoipSettingBasedSelectedLine(
hgs
parents:
diff changeset
  1397
    const TGSCallItemIds aPage, TInt aCurrentSetting )
hgs
parents:
diff changeset
  1398
    {
hgs
parents:
diff changeset
  1399
    switch ( aPage )
hgs
parents:
diff changeset
  1400
        {
hgs
parents:
diff changeset
  1401
        case EGSICSendIntCallIdItemId:
hgs
parents:
diff changeset
  1402
            if ( aCurrentSetting == KGSFirstLine )
hgs
parents:
diff changeset
  1403
                {
hgs
parents:
diff changeset
  1404
                iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
  1405
                    EGSVoIPSendIntCallId, EGSSendIntCallIdOn );
hgs
parents:
diff changeset
  1406
                }
hgs
parents:
diff changeset
  1407
            else
hgs
parents:
diff changeset
  1408
                {
hgs
parents:
diff changeset
  1409
                iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
  1410
                    EGSVoIPSendIntCallId, EGSSendIntCallIdOff );
hgs
parents:
diff changeset
  1411
                }
hgs
parents:
diff changeset
  1412
            break;
hgs
parents:
diff changeset
  1413
        case EGSICWaitingItemId:
hgs
parents:
diff changeset
  1414
            if ( aCurrentSetting == KGSFirstLine )
hgs
parents:
diff changeset
  1415
                {
hgs
parents:
diff changeset
  1416
                iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
  1417
                    EGSVoIPCW, EGSCSCallWaitingOn );
hgs
parents:
diff changeset
  1418
                }
hgs
parents:
diff changeset
  1419
            else
hgs
parents:
diff changeset
  1420
                {
hgs
parents:
diff changeset
  1421
                iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
  1422
                    EGSVoIPCW, EGSCSCallWaitingOff );
hgs
parents:
diff changeset
  1423
                }
hgs
parents:
diff changeset
  1424
            break;
hgs
parents:
diff changeset
  1425
        case EGSICPreferredTelephonyId:
hgs
parents:
diff changeset
  1426
            if ( aCurrentSetting == KGSFirstLine )
hgs
parents:
diff changeset
  1427
                {
hgs
parents:
diff changeset
  1428
                iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
  1429
                    EGSVoIPPreType, EGSPreferredCS );
hgs
parents:
diff changeset
  1430
                }
hgs
parents:
diff changeset
  1431
            else
hgs
parents:
diff changeset
  1432
                {
hgs
parents:
diff changeset
  1433
                iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
  1434
                    EGSVoIPPreType, EGSPreferredPS );
hgs
parents:
diff changeset
  1435
                           
hgs
parents:
diff changeset
  1436
                // Show message query dialog if preferred call
hgs
parents:
diff changeset
  1437
                // setting was changed to the Int. Telephone.
hgs
parents:
diff changeset
  1438
                TRAP_IGNORE( ShowPreferredTelephonyNoteL() );
hgs
parents:
diff changeset
  1439
                }
hgs
parents:
diff changeset
  1440
            break;
hgs
parents:
diff changeset
  1441
        case EGSDndItemId:
hgs
parents:
diff changeset
  1442
            if ( aCurrentSetting == KGSFirstLine )
hgs
parents:
diff changeset
  1443
                {
hgs
parents:
diff changeset
  1444
                iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
  1445
                    EGSVoIPDnd, EGSCSCallDndOn );
hgs
parents:
diff changeset
  1446
                }
hgs
parents:
diff changeset
  1447
            else
hgs
parents:
diff changeset
  1448
                {
hgs
parents:
diff changeset
  1449
                iModel->SetVoIPCallSettingValue(
hgs
parents:
diff changeset
  1450
                    EGSVoIPDnd, EGSCSCallDndOff );
hgs
parents:
diff changeset
  1451
                }
hgs
parents:
diff changeset
  1452
            break;
hgs
parents:
diff changeset
  1453
        default:
hgs
parents:
diff changeset
  1454
            break;
hgs
parents:
diff changeset
  1455
        }
hgs
parents:
diff changeset
  1456
    }
hgs
parents:
diff changeset
  1457
hgs
parents:
diff changeset
  1458
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1459
// CGSCallPlugin::Container
hgs
parents:
diff changeset
  1460
//
hgs
parents:
diff changeset
  1461
// Returns call container item
hgs
parents:
diff changeset
  1462
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1463
//
hgs
parents:
diff changeset
  1464
CGSCallPluginContainer* CGSCallPlugin::Container()
hgs
parents:
diff changeset
  1465
    {
hgs
parents:
diff changeset
  1466
    return static_cast <CGSCallPluginContainer*> ( iContainer );
hgs
parents:
diff changeset
  1467
    }
hgs
parents:
diff changeset
  1468
hgs
parents:
diff changeset
  1469
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1470
// CGSCallPlugin::GetLineForSelectedVoipSetting
hgs
parents:
diff changeset
  1471
//
hgs
parents:
diff changeset
  1472
// Returns selected line based on setting value.
hgs
parents:
diff changeset
  1473
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1474
//
hgs
parents:
diff changeset
  1475
TInt CGSCallPlugin::GetLineForSelectedVoipSetting(
hgs
parents:
diff changeset
  1476
    const TGSCallItemIds aPage )
hgs
parents:
diff changeset
  1477
    {
hgs
parents:
diff changeset
  1478
    if ( !iModel->VoIPSupported() )
hgs
parents:
diff changeset
  1479
        {
hgs
parents:
diff changeset
  1480
        return KErrNone;
hgs
parents:
diff changeset
  1481
        }
hgs
parents:
diff changeset
  1482
hgs
parents:
diff changeset
  1483
    TInt value( KErrNone );
hgs
parents:
diff changeset
  1484
hgs
parents:
diff changeset
  1485
    // Get value based from setting page.
hgs
parents:
diff changeset
  1486
    switch ( aPage )
hgs
parents:
diff changeset
  1487
        {
hgs
parents:
diff changeset
  1488
        case EGSICSendIntCallIdItemId:  // No swap.
hgs
parents:
diff changeset
  1489
            iModel->GetVoIPCallSettingValue( EGSVoIPSendIntCallId, value );
hgs
parents:
diff changeset
  1490
            break;
hgs
parents:
diff changeset
  1491
        case EGSICWaitingItemId:
hgs
parents:
diff changeset
  1492
            iModel->GetVoIPCallSettingValue( EGSVoIPCW, value );
hgs
parents:
diff changeset
  1493
            break;
hgs
parents:
diff changeset
  1494
        case EGSICPreferredTelephonyId: // No swap.
hgs
parents:
diff changeset
  1495
            iModel->GetVoIPCallSettingValue( EGSVoIPPreType, value );
hgs
parents:
diff changeset
  1496
            break;
hgs
parents:
diff changeset
  1497
        case EGSDndItemId:
hgs
parents:
diff changeset
  1498
            iModel->GetVoIPCallSettingValue( EGSVoIPDnd, value );
hgs
parents:
diff changeset
  1499
            break;
hgs
parents:
diff changeset
  1500
        default:
hgs
parents:
diff changeset
  1501
            break;
hgs
parents:
diff changeset
  1502
        }
hgs
parents:
diff changeset
  1503
hgs
parents:
diff changeset
  1504
    // Swap items.
hgs
parents:
diff changeset
  1505
    if ( aPage != EGSICPreferredTelephonyId &&
hgs
parents:
diff changeset
  1506
        aPage != EGSICSendIntCallIdItemId )
hgs
parents:
diff changeset
  1507
        {
hgs
parents:
diff changeset
  1508
        if ( value == KGSSecondLine )
hgs
parents:
diff changeset
  1509
            {
hgs
parents:
diff changeset
  1510
            value = KGSFirstLine;
hgs
parents:
diff changeset
  1511
            }
hgs
parents:
diff changeset
  1512
        else
hgs
parents:
diff changeset
  1513
            {
hgs
parents:
diff changeset
  1514
            value = KGSSecondLine;
hgs
parents:
diff changeset
  1515
            }
hgs
parents:
diff changeset
  1516
        }
hgs
parents:
diff changeset
  1517
hgs
parents:
diff changeset
  1518
    return value;
hgs
parents:
diff changeset
  1519
    }
hgs
parents:
diff changeset
  1520
hgs
parents:
diff changeset
  1521
hgs
parents:
diff changeset
  1522
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1523
// CGSCallPlugin::ShowVTStillImageSettingPageL
hgs
parents:
diff changeset
  1524
//
hgs
parents:
diff changeset
  1525
// Display Video Telephony Still Image setting page.
hgs
parents:
diff changeset
  1526
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1527
//
hgs
parents:
diff changeset
  1528
void CGSCallPlugin::ShowVTStillImageSettingPageL()
hgs
parents:
diff changeset
  1529
    {
hgs
parents:
diff changeset
  1530
    iVtStillImage = iModel->VTStillImageL();
hgs
parents:
diff changeset
  1531
    // Store previous in case something goes wrong.
hgs
parents:
diff changeset
  1532
    iPreviousVtStillImage = iVtStillImage;
hgs
parents:
diff changeset
  1533
    
hgs
parents:
diff changeset
  1534
    CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
hgs
parents:
diff changeset
  1535
                                     R_GS_STILL_IMAGE_SETTING_PAGE_LBX );
hgs
parents:
diff changeset
  1536
    CleanupStack::PushL( items );
hgs
parents:
diff changeset
  1537
hgs
parents:
diff changeset
  1538
    // Map CenRep value to lbx items:
hgs
parents:
diff changeset
  1539
    TInt dialogSelection = EGSVtStillImageNotInUse;
hgs
parents:
diff changeset
  1540
    if ( iVtStillImage != KGSVTStillImageOff ) dialogSelection = EGSVtStillImageInUse;
hgs
parents:
diff changeset
  1541
hgs
parents:
diff changeset
  1542
    CAknRadioButtonSettingPage* dlg =
hgs
parents:
diff changeset
  1543
        new( ELeave ) CAknRadioButtonSettingPage( R_GS_STILL_IMAGE_SETTING_PAGE,
hgs
parents:
diff changeset
  1544
                                                  dialogSelection, items );
hgs
parents:
diff changeset
  1545
hgs
parents:
diff changeset
  1546
    TBool ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
hgs
parents:
diff changeset
  1547
hgs
parents:
diff changeset
  1548
    if ( ret )
hgs
parents:
diff changeset
  1549
        {
hgs
parents:
diff changeset
  1550
        if ( dialogSelection == EGSVtStillImageNotInUse )
hgs
parents:
diff changeset
  1551
            {
hgs
parents:
diff changeset
  1552
            // Still image not used
hgs
parents:
diff changeset
  1553
            iModel->SetVTStillImageL( KGSVTStillImageOff );
hgs
parents:
diff changeset
  1554
            }
hgs
parents:
diff changeset
  1555
        else
hgs
parents:
diff changeset
  1556
            {
hgs
parents:
diff changeset
  1557
            // User decided to update still image
hgs
parents:
diff changeset
  1558
            ShowStillImageListL();
hgs
parents:
diff changeset
  1559
            }
hgs
parents:
diff changeset
  1560
            
hgs
parents:
diff changeset
  1561
        // Update VT item in CGSCallPlugin listbox. iVtStillImage value is 
hgs
parents:
diff changeset
  1562
        // irrelevant as UpdateListBoxL actually reads the new value from 
hgs
parents:
diff changeset
  1563
        // CenRep and converts it to lbx item value correctly (Off/On).
hgs
parents:
diff changeset
  1564
        UpdateListBoxL( EGSStillImageItemId, iVtStillImage );
hgs
parents:
diff changeset
  1565
        }
hgs
parents:
diff changeset
  1566
    CleanupStack::PopAndDestroy( items );
hgs
parents:
diff changeset
  1567
    }
hgs
parents:
diff changeset
  1568
hgs
parents:
diff changeset
  1569
hgs
parents:
diff changeset
  1570
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1571
// CGSCallPlugin::ShowStillImageListL()
hgs
parents:
diff changeset
  1572
//
hgs
parents:
diff changeset
  1573
// Display background image list from media gallery.
hgs
parents:
diff changeset
  1574
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1575
//
hgs
parents:
diff changeset
  1576
void CGSCallPlugin::ShowStillImageListL()
hgs
parents:
diff changeset
  1577
    {
hgs
parents:
diff changeset
  1578
    CDesCArray* selectedFiles = new ( ELeave ) CDesCArrayFlat( 1 );
hgs
parents:
diff changeset
  1579
    CleanupStack::PushL( selectedFiles );
hgs
parents:
diff changeset
  1580
hgs
parents:
diff changeset
  1581
    TBool ret = MGFetch::RunL( *selectedFiles, EImageFile, EFalse, this );
hgs
parents:
diff changeset
  1582
hgs
parents:
diff changeset
  1583
    if ( ret && selectedFiles->MdcaCount() == 1 )
hgs
parents:
diff changeset
  1584
        {
hgs
parents:
diff changeset
  1585
        iImageHandler = CGSAsyncImageHandling::NewL( iCoeEnv->FsSession(),
hgs
parents:
diff changeset
  1586
                                               this, KGSVTStillImgPath );
hgs
parents:
diff changeset
  1587
hgs
parents:
diff changeset
  1588
        TPtrC imagePath = selectedFiles->MdcaPoint( 0 );
hgs
parents:
diff changeset
  1589
hgs
parents:
diff changeset
  1590
        TRAPD( error, iModel->iBackgroundApi->SetVTStillImagePathL( imagePath,
hgs
parents:
diff changeset
  1591
                                             *iImageHandler ) );
hgs
parents:
diff changeset
  1592
        if ( error == KErrNone )
hgs
parents:
diff changeset
  1593
            {
hgs
parents:
diff changeset
  1594
            // Show wait note
hgs
parents:
diff changeset
  1595
            ShowImageLoadWaitNoteL();
hgs
parents:
diff changeset
  1596
            }
hgs
parents:
diff changeset
  1597
        else
hgs
parents:
diff changeset
  1598
            {
hgs
parents:
diff changeset
  1599
            HandleImageErrorsL( error );
hgs
parents:
diff changeset
  1600
            }
hgs
parents:
diff changeset
  1601
        }
hgs
parents:
diff changeset
  1602
    CleanupStack::PopAndDestroy( selectedFiles );
hgs
parents:
diff changeset
  1603
    }
hgs
parents:
diff changeset
  1604
hgs
parents:
diff changeset
  1605
hgs
parents:
diff changeset
  1606
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1607
// CGSCallPlugin::ImageHandlingComplete()
hgs
parents:
diff changeset
  1608
//
hgs
parents:
diff changeset
  1609
// Method derived from MGSSyncImageHandlingObserver
hgs
parents:
diff changeset
  1610
// Run when the asynchronous image converting is complete
hgs
parents:
diff changeset
  1611
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1612
//
hgs
parents:
diff changeset
  1613
void CGSCallPlugin::ImageHandlingCompleteL( TInt aError )
hgs
parents:
diff changeset
  1614
    {
hgs
parents:
diff changeset
  1615
    if ( aError != KErrNone )
hgs
parents:
diff changeset
  1616
        {
hgs
parents:
diff changeset
  1617
        HandleImageErrorsL( aError );
hgs
parents:
diff changeset
  1618
        }
hgs
parents:
diff changeset
  1619
    else
hgs
parents:
diff changeset
  1620
        {
hgs
parents:
diff changeset
  1621
        // Needs to increment iVtStillImage value so CenRep will send 
hgs
parents:
diff changeset
  1622
        // notificatios to VT (only changing value will fire notification).
hgs
parents:
diff changeset
  1623
        iModel->SetVTStillImageL( ++iVtStillImage );
hgs
parents:
diff changeset
  1624
        UpdateListBoxL( EGSStillImageItemId, EGSVtStillImageInUse );
hgs
parents:
diff changeset
  1625
        }
hgs
parents:
diff changeset
  1626
hgs
parents:
diff changeset
  1627
    HideImageLoadWaitNoteL();
hgs
parents:
diff changeset
  1628
hgs
parents:
diff changeset
  1629
    delete iImageHandler;
hgs
parents:
diff changeset
  1630
    iImageHandler = NULL;
hgs
parents:
diff changeset
  1631
    }
hgs
parents:
diff changeset
  1632
hgs
parents:
diff changeset
  1633
hgs
parents:
diff changeset
  1634
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1635
// CGSCallPlugin::ShowImageLoadWaitNoteL()
hgs
parents:
diff changeset
  1636
//
hgs
parents:
diff changeset
  1637
// Display image load wait note dialog.
hgs
parents:
diff changeset
  1638
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1639
//
hgs
parents:
diff changeset
  1640
void CGSCallPlugin::ShowImageLoadWaitNoteL()
hgs
parents:
diff changeset
  1641
    {
hgs
parents:
diff changeset
  1642
    if ( !iWaitDialog )
hgs
parents:
diff changeset
  1643
        {
hgs
parents:
diff changeset
  1644
        iWaitDialog = new( ELeave ) CAknWaitDialog(
hgs
parents:
diff changeset
  1645
                      ( REINTERPRET_CAST(CEikDialog**,
hgs
parents:
diff changeset
  1646
                      &iWaitDialog ) ), ETrue );
hgs
parents:
diff changeset
  1647
hgs
parents:
diff changeset
  1648
        iWaitDialog->ExecuteDlgLD( CAknNoteDialog::ENoTone,
hgs
parents:
diff changeset
  1649
                                   R_IMAGE_LOAD_WAIT_NOTE );
hgs
parents:
diff changeset
  1650
        }
hgs
parents:
diff changeset
  1651
    }
hgs
parents:
diff changeset
  1652
hgs
parents:
diff changeset
  1653
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1654
// CGSCallPlugin::HideImageLoadWaitNoteL()
hgs
parents:
diff changeset
  1655
//
hgs
parents:
diff changeset
  1656
// Hide image load wait note dialog.
hgs
parents:
diff changeset
  1657
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1658
//
hgs
parents:
diff changeset
  1659
void CGSCallPlugin::HideImageLoadWaitNoteL()
hgs
parents:
diff changeset
  1660
    {
hgs
parents:
diff changeset
  1661
    if ( iWaitDialog )
hgs
parents:
diff changeset
  1662
        {
hgs
parents:
diff changeset
  1663
        iWaitDialog->ProcessFinishedL(); // deletes the dialog
hgs
parents:
diff changeset
  1664
        iWaitDialog = NULL;
hgs
parents:
diff changeset
  1665
        }
hgs
parents:
diff changeset
  1666
    }
hgs
parents:
diff changeset
  1667
hgs
parents:
diff changeset
  1668
hgs
parents:
diff changeset
  1669
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1670
// CGSCallPlugin::HandleImageErrorsL
hgs
parents:
diff changeset
  1671
//
hgs
parents:
diff changeset
  1672
// Prompt image related errors to the user
hgs
parents:
diff changeset
  1673
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1674
//
hgs
parents:
diff changeset
  1675
void CGSCallPlugin::HandleImageErrorsL( TInt aError )
hgs
parents:
diff changeset
  1676
    {
hgs
parents:
diff changeset
  1677
    TInt resourceId;
hgs
parents:
diff changeset
  1678
    switch( aError )
hgs
parents:
diff changeset
  1679
        {
hgs
parents:
diff changeset
  1680
        case KErrNotSupported:
hgs
parents:
diff changeset
  1681
        case KErrUnderflow:
hgs
parents:
diff changeset
  1682
            // Image is corrupted or in wrong format
hgs
parents:
diff changeset
  1683
            resourceId = R_GS_IMAGE_CORRUPTED;
hgs
parents:
diff changeset
  1684
            break;
hgs
parents:
diff changeset
  1685
        case KErrDiskFull:
hgs
parents:
diff changeset
  1686
        case KErrNoMemory:
hgs
parents:
diff changeset
  1687
            // Image is too large
hgs
parents:
diff changeset
  1688
            resourceId = R_GS_IMAGE_TOO_LARGE;
hgs
parents:
diff changeset
  1689
            break;
hgs
parents:
diff changeset
  1690
        default:
hgs
parents:
diff changeset
  1691
            // Better to give some error message than result in CONE5 panic:
hgs
parents:
diff changeset
  1692
            resourceId = R_GS_IMAGE_CORRUPTED;
hgs
parents:
diff changeset
  1693
            break;
hgs
parents:
diff changeset
  1694
        }
hgs
parents:
diff changeset
  1695
    // Show information note
hgs
parents:
diff changeset
  1696
    HBufC* prompt = iCoeEnv->AllocReadResourceLC( resourceId );
hgs
parents:
diff changeset
  1697
    CAknInformationNote* note = new( ELeave ) CAknInformationNote( ETrue );
hgs
parents:
diff changeset
  1698
    note->ExecuteLD( *prompt );
hgs
parents:
diff changeset
  1699
hgs
parents:
diff changeset
  1700
    // Setting previous VT still image value (rollback)
hgs
parents:
diff changeset
  1701
    iModel->SetVTStillImageL( iPreviousVtStillImage );
hgs
parents:
diff changeset
  1702
    UpdateListBoxL( EGSStillImageItemId, iPreviousVtStillImage );
hgs
parents:
diff changeset
  1703
    CleanupStack::PopAndDestroy( prompt );
hgs
parents:
diff changeset
  1704
    }
hgs
parents:
diff changeset
  1705
hgs
parents:
diff changeset
  1706
hgs
parents:
diff changeset
  1707
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1708
// CGSCallPlugin::VerifySelectionL()
hgs
parents:
diff changeset
  1709
//
hgs
parents:
diff changeset
  1710
// An overloaded method from MMGFetchVerifier interface class
hgs
parents:
diff changeset
  1711
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1712
//
hgs
parents:
diff changeset
  1713
TBool CGSCallPlugin::VerifySelectionL( const MDesCArray* aSelectedFiles )
hgs
parents:
diff changeset
  1714
    {
hgs
parents:
diff changeset
  1715
    const TBool KGSDrmProtectedContent = ETrue;
hgs
parents:
diff changeset
  1716
hgs
parents:
diff changeset
  1717
    TBool ret = ETrue;
hgs
parents:
diff changeset
  1718
    //
hgs
parents:
diff changeset
  1719
    if ( aSelectedFiles->MdcaCount() == 1 )
hgs
parents:
diff changeset
  1720
        {
hgs
parents:
diff changeset
  1721
        const TPtrC fileName( aSelectedFiles->MdcaPoint( 0 ) );
hgs
parents:
diff changeset
  1722
hgs
parents:
diff changeset
  1723
        // First, check if the selected file is DRM protected
hgs
parents:
diff changeset
  1724
        if  ( ret && CheckDRMProtectionL( fileName ) ==
hgs
parents:
diff changeset
  1725
                    KGSDrmProtectedContent )
hgs
parents:
diff changeset
  1726
            {
hgs
parents:
diff changeset
  1727
            // display the note to user
hgs
parents:
diff changeset
  1728
            // Show information note
hgs
parents:
diff changeset
  1729
            HBufC* prompt = iCoeEnv->AllocReadResourceLC(
hgs
parents:
diff changeset
  1730
                                          R_GS_DRM_NOT_ALLOWED );
hgs
parents:
diff changeset
  1731
hgs
parents:
diff changeset
  1732
            CAknInformationNote* note =
hgs
parents:
diff changeset
  1733
                new( ELeave ) CAknInformationNote( ETrue );
hgs
parents:
diff changeset
  1734
            note->ExecuteLD( *prompt );
hgs
parents:
diff changeset
  1735
hgs
parents:
diff changeset
  1736
            CleanupStack::PopAndDestroy( prompt );
hgs
parents:
diff changeset
  1737
            ret = EFalse;
hgs
parents:
diff changeset
  1738
            }
hgs
parents:
diff changeset
  1739
hgs
parents:
diff changeset
  1740
        // Next, check whether the image header is valid
hgs
parents:
diff changeset
  1741
        if  ( ret )
hgs
parents:
diff changeset
  1742
            {
hgs
parents:
diff changeset
  1743
            CImageDecoder* imageDecoder = NULL;
hgs
parents:
diff changeset
  1744
            TRAPD( err, imageDecoder = CImageDecoder::FileNewL(
hgs
parents:
diff changeset
  1745
                  iCoeEnv->FsSession(), fileName, ContentAccess::EPeek ) );
hgs
parents:
diff changeset
  1746
hgs
parents:
diff changeset
  1747
            if  ( err != KErrNone )
hgs
parents:
diff changeset
  1748
                {
hgs
parents:
diff changeset
  1749
                // Show information note
hgs
parents:
diff changeset
  1750
                HBufC* prompt = iCoeEnv->AllocReadResourceLC(
hgs
parents:
diff changeset
  1751
                                                  R_GS_IMAGE_CORRUPTED );
hgs
parents:
diff changeset
  1752
                CAknInformationNote* note =
hgs
parents:
diff changeset
  1753
                    new( ELeave ) CAknInformationNote( ETrue );
hgs
parents:
diff changeset
  1754
                note->ExecuteLD(*prompt);
hgs
parents:
diff changeset
  1755
                CleanupStack::PopAndDestroy( prompt );
hgs
parents:
diff changeset
  1756
hgs
parents:
diff changeset
  1757
                ret = EFalse;
hgs
parents:
diff changeset
  1758
                }
hgs
parents:
diff changeset
  1759
            delete imageDecoder;
hgs
parents:
diff changeset
  1760
            }
hgs
parents:
diff changeset
  1761
        }
hgs
parents:
diff changeset
  1762
hgs
parents:
diff changeset
  1763
    return ret;
hgs
parents:
diff changeset
  1764
    }
hgs
parents:
diff changeset
  1765
hgs
parents:
diff changeset
  1766
hgs
parents:
diff changeset
  1767
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1768
// CGSCallPlugin::CheckDRMProtectionL
hgs
parents:
diff changeset
  1769
//
hgs
parents:
diff changeset
  1770
// Check if the selected image file is DRM protected.
hgs
parents:
diff changeset
  1771
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1772
//
hgs
parents:
diff changeset
  1773
TBool CGSCallPlugin::CheckDRMProtectionL( const TDesC& aOriginalFileName )
hgs
parents:
diff changeset
  1774
    {
hgs
parents:
diff changeset
  1775
    TBool isProtected( EFalse );
hgs
parents:
diff changeset
  1776
    DRMCommon* drmClient = DRMCommon::NewL();
hgs
parents:
diff changeset
  1777
    CleanupStack::PushL( drmClient );
hgs
parents:
diff changeset
  1778
    TInt error = drmClient->Connect();
hgs
parents:
diff changeset
  1779
    if ( error != DRMCommon::EOk )
hgs
parents:
diff changeset
  1780
        {
hgs
parents:
diff changeset
  1781
        User::Leave( KErrCorrupt );
hgs
parents:
diff changeset
  1782
        }
hgs
parents:
diff changeset
  1783
hgs
parents:
diff changeset
  1784
    if ( aOriginalFileName != KNullDesC )
hgs
parents:
diff changeset
  1785
        {
hgs
parents:
diff changeset
  1786
        error = drmClient->IsProtectedFile( aOriginalFileName, isProtected );
hgs
parents:
diff changeset
  1787
        if ( error != DRMCommon::EOk )
hgs
parents:
diff changeset
  1788
            {
hgs
parents:
diff changeset
  1789
            User::Leave( KErrCorrupt );
hgs
parents:
diff changeset
  1790
            }
hgs
parents:
diff changeset
  1791
        }
hgs
parents:
diff changeset
  1792
hgs
parents:
diff changeset
  1793
    CleanupStack::PopAndDestroy( drmClient );
hgs
parents:
diff changeset
  1794
    return isProtected;
hgs
parents:
diff changeset
  1795
    }
hgs
parents:
diff changeset
  1796
hgs
parents:
diff changeset
  1797
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1798
//
hgs
parents:
diff changeset
  1799
// Show Call Duration setting page
hgs
parents:
diff changeset
  1800
//
hgs
parents:
diff changeset
  1801
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1802
//
hgs
parents:
diff changeset
  1803
TBool CGSCallPlugin::ShowCallDurationSettingPageL( TInt& aCurrentValue )
hgs
parents:
diff changeset
  1804
    {
hgs
parents:
diff changeset
  1805
    __GSLOGSTRING("[GSCallPlugin]--> ShowCallDurationSettingPageL");
hgs
parents:
diff changeset
  1806
    CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
hgs
parents:
diff changeset
  1807
                            R_GS_SHOW_CALL_DURATION_SETTING_PAGE_LBX );
hgs
parents:
diff changeset
  1808
    CleanupStack::PushL( items );
hgs
parents:
diff changeset
  1809
hgs
parents:
diff changeset
  1810
    CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
hgs
parents:
diff changeset
  1811
                                R_GS_SHOW_CALL_DURATION_SETTING_PAGE,
hgs
parents:
diff changeset
  1812
                                aCurrentValue, items );
hgs
parents:
diff changeset
  1813
hgs
parents:
diff changeset
  1814
    TBool ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
hgs
parents:
diff changeset
  1815
    CleanupStack::PopAndDestroy( items );
hgs
parents:
diff changeset
  1816
hgs
parents:
diff changeset
  1817
    __GSLOGSTRING("[GSCallPlugin] <--ShowCallDurationSettingPageL");
hgs
parents:
diff changeset
  1818
    return ret;
hgs
parents:
diff changeset
  1819
    }
hgs
parents:
diff changeset
  1820
hgs
parents:
diff changeset
  1821
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1822
// CGSCallPlugin::ChangeCallDurationSettingL
hgs
parents:
diff changeset
  1823
//
hgs
parents:
diff changeset
  1824
// Change Call Duration setting.
hgs
parents:
diff changeset
  1825
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1826
//
hgs
parents:
diff changeset
  1827
void CGSCallPlugin::ChangeCallDurationSettingL( TBool aSettingPage )
hgs
parents:
diff changeset
  1828
    {
hgs
parents:
diff changeset
  1829
    __GSLOGSTRING("[GSCallPlugin]--> ChangeCallDurationSettingL");
hgs
parents:
diff changeset
  1830
hgs
parents:
diff changeset
  1831
    TInt callState = CheckCallStateL();
hgs
parents:
diff changeset
  1832
hgs
parents:
diff changeset
  1833
    // Get information of whether there are open connections or not
hgs
parents:
diff changeset
  1834
    if ( callState != EPSCTsyCallStateUninitialized &&
hgs
parents:
diff changeset
  1835
         callState != EPSCTsyCallStateNone )
hgs
parents:
diff changeset
  1836
        {
hgs
parents:
diff changeset
  1837
        HBufC* prompt = iCoeEnv->AllocReadResourceLC( R_TEXT_ACTIVE_CALL );
hgs
parents:
diff changeset
  1838
hgs
parents:
diff changeset
  1839
        CAknInformationNote* note =
hgs
parents:
diff changeset
  1840
            new( ELeave ) CAknInformationNote( ETrue );
hgs
parents:
diff changeset
  1841
hgs
parents:
diff changeset
  1842
        note->ExecuteLD( *prompt );
hgs
parents:
diff changeset
  1843
hgs
parents:
diff changeset
  1844
        CleanupStack::PopAndDestroy( prompt );
hgs
parents:
diff changeset
  1845
hgs
parents:
diff changeset
  1846
        return;
hgs
parents:
diff changeset
  1847
        }
hgs
parents:
diff changeset
  1848
        
hgs
parents:
diff changeset
  1849
    TInt duration = iModel->CallDurationL();
hgs
parents:
diff changeset
  1850
    TBool updateValue = ETrue;
hgs
parents:
diff changeset
  1851
    
hgs
parents:
diff changeset
  1852
    if ( aSettingPage )
hgs
parents:
diff changeset
  1853
        {
hgs
parents:
diff changeset
  1854
        updateValue = ShowCallDurationSettingPageL( duration );
hgs
parents:
diff changeset
  1855
        }
hgs
parents:
diff changeset
  1856
    else
hgs
parents:
diff changeset
  1857
        {
hgs
parents:
diff changeset
  1858
        if( duration == KGSSettingItemOff )
hgs
parents:
diff changeset
  1859
            {
hgs
parents:
diff changeset
  1860
            duration = KGSSettingItemOn;
hgs
parents:
diff changeset
  1861
            }
hgs
parents:
diff changeset
  1862
        else
hgs
parents:
diff changeset
  1863
            {
hgs
parents:
diff changeset
  1864
            duration = KGSSettingItemOff;
hgs
parents:
diff changeset
  1865
            }
hgs
parents:
diff changeset
  1866
        }
hgs
parents:
diff changeset
  1867
hgs
parents:
diff changeset
  1868
    if ( updateValue )
hgs
parents:
diff changeset
  1869
        {
hgs
parents:
diff changeset
  1870
        iModel->SetCallDurationL( duration );
hgs
parents:
diff changeset
  1871
        UpdateListBoxL( EGSShowCallDurationItemId, KGSNotUsed );
hgs
parents:
diff changeset
  1872
        }
hgs
parents:
diff changeset
  1873
hgs
parents:
diff changeset
  1874
    __GSLOGSTRING("[GSCallPlugin] <--ChangePrefixSettingL");
hgs
parents:
diff changeset
  1875
    }
hgs
parents:
diff changeset
  1876
hgs
parents:
diff changeset
  1877
hgs
parents:
diff changeset
  1878
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1879
// CGSCallPlugin::CheckCallStateL
hgs
parents:
diff changeset
  1880
// 
hgs
parents:
diff changeset
  1881
// Check call state using PubSub or SA
hgs
parents:
diff changeset
  1882
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1883
//
hgs
parents:
diff changeset
  1884
TInt CGSCallPlugin::CheckCallStateL()
hgs
parents:
diff changeset
  1885
    {
hgs
parents:
diff changeset
  1886
    TInt callState = KErrNone;
hgs
parents:
diff changeset
  1887
    //here are open connections or not
hgs
parents:
diff changeset
  1888
    RProperty::Get( KPSUidCtsyCallInformation,
hgs
parents:
diff changeset
  1889
                    KCTsyCallState,
hgs
parents:
diff changeset
  1890
                    callState );
hgs
parents:
diff changeset
  1891
    return callState;
hgs
parents:
diff changeset
  1892
    }
hgs
parents:
diff changeset
  1893
hgs
parents:
diff changeset
  1894
hgs
parents:
diff changeset
  1895
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1896
// CGSCallPlugin::ShowPreferredTelephonyNoteL
hgs
parents:
diff changeset
  1897
// 
hgs
parents:
diff changeset
  1898
// Shows note if preferred call setting was changed to the Int. Telephone.
hgs
parents:
diff changeset
  1899
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1900
//
hgs
parents:
diff changeset
  1901
void CGSCallPlugin::ShowPreferredTelephonyNoteL()
hgs
parents:
diff changeset
  1902
    {
hgs
parents:
diff changeset
  1903
    // Create message query dialog.
hgs
parents:
diff changeset
  1904
    HBufC* text = StringLoader::LoadLC( R_IC_PREFERRED_TELEPHONE_QUERY_TEXT );
hgs
parents:
diff changeset
  1905
    CAknMessageQueryDialog* query = CAknMessageQueryDialog::NewL( *text );
hgs
parents:
diff changeset
  1906
    query->SetMessageTextL( text->Des() );
hgs
parents:
diff changeset
  1907
    
hgs
parents:
diff changeset
  1908
    // Show message query dialog.
hgs
parents:
diff changeset
  1909
    query->ExecuteLD( R_IC_PREFERRED_TELEPHONE_QUERY );
hgs
parents:
diff changeset
  1910
    
hgs
parents:
diff changeset
  1911
    CleanupStack::PopAndDestroy( text );
hgs
parents:
diff changeset
  1912
    }
hgs
parents:
diff changeset
  1913
hgs
parents:
diff changeset
  1914
hgs
parents:
diff changeset
  1915
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1916
// When this method is called, view checks based on highlight focus, if the MSK
hgs
parents:
diff changeset
  1917
// label is correct.
hgs
parents:
diff changeset
  1918
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1919
//
hgs
parents:
diff changeset
  1920
void CGSCallPlugin::CheckMiddleSoftkeyLabelL()
hgs
parents:
diff changeset
  1921
    {
hgs
parents:
diff changeset
  1922
    const TInt currentFeatureId = Container()->CurrentFeatureId();
hgs
parents:
diff changeset
  1923
    RemoveCommandFromMSK( iMskCommandFlag );
hgs
parents:
diff changeset
  1924
    if ( currentFeatureId == EGSCallWaitingItemId )
hgs
parents:
diff changeset
  1925
        {
hgs
parents:
diff changeset
  1926
            // First remove any prevous commands.
hgs
parents:
diff changeset
  1927
        SetMiddleSoftKeyLabelL( R_CALL_SOFTKEY_OPTION,
hgs
parents:
diff changeset
  1928
                                EAknSoftkeyContextOptions );
hgs
parents:
diff changeset
  1929
        // This way we set which command is set for MSK
hgs
parents:
diff changeset
  1930
        iMskCommandFlag = EFalse;
hgs
parents:
diff changeset
  1931
        }
hgs
parents:
diff changeset
  1932
     else
hgs
parents:
diff changeset
  1933
        {
hgs
parents:
diff changeset
  1934
         //Set middle softkey as Change. 
hgs
parents:
diff changeset
  1935
        SetMiddleSoftKeyLabelL( R_CALL_MSK_CHANGE,
hgs
parents:
diff changeset
  1936
                                EGSMSKCmdAppChange );
hgs
parents:
diff changeset
  1937
        // This way we set which command is set for MSK
hgs
parents:
diff changeset
  1938
        iMskCommandFlag = ETrue;
hgs
parents:
diff changeset
  1939
        }
hgs
parents:
diff changeset
  1940
    }
hgs
parents:
diff changeset
  1941
hgs
parents:
diff changeset
  1942
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1943
// Remove unnecessary commands from Middle softkey.
hgs
parents:
diff changeset
  1944
// @flag = ETrue means presently MSK value is "Change" so we remove that
hgs
parents:
diff changeset
  1945
// @flag = EFalse means presently MSK value is "Context Options" so we remove that
hgs
parents:
diff changeset
  1946
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1947
//
hgs
parents:
diff changeset
  1948
void CGSCallPlugin::RemoveCommandFromMSK(const TBool flag )
hgs
parents:
diff changeset
  1949
    {
hgs
parents:
diff changeset
  1950
    CEikButtonGroupContainer* cbaGroup = Cba();
hgs
parents:
diff changeset
  1951
    if ( cbaGroup )
hgs
parents:
diff changeset
  1952
        {
hgs
parents:
diff changeset
  1953
        if ( flag )
hgs
parents:
diff changeset
  1954
            {
hgs
parents:
diff changeset
  1955
                cbaGroup->RemoveCommandFromStack( 
hgs
parents:
diff changeset
  1956
                                KGSMSKControlID, EGSMSKCmdAppChange );
hgs
parents:
diff changeset
  1957
            }
hgs
parents:
diff changeset
  1958
        else
hgs
parents:
diff changeset
  1959
            {
hgs
parents:
diff changeset
  1960
                cbaGroup->RemoveCommandFromStack( 
hgs
parents:
diff changeset
  1961
                                KGSMSKControlID, EAknSoftkeyContextOptions );
hgs
parents:
diff changeset
  1962
            }
hgs
parents:
diff changeset
  1963
        }
hgs
parents:
diff changeset
  1964
    }
hgs
parents:
diff changeset
  1965
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1966
// Sets middle softkey label.
hgs
parents:
diff changeset
  1967
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1968
//
hgs
parents:
diff changeset
  1969
void CGSCallPlugin::SetMiddleSoftKeyLabelL( 
hgs
parents:
diff changeset
  1970
    const TInt aResourceId, const TInt aCommandId )
hgs
parents:
diff changeset
  1971
    {
hgs
parents:
diff changeset
  1972
    CEikButtonGroupContainer* cbaGroup = Cba();
hgs
parents:
diff changeset
  1973
    if ( cbaGroup )
hgs
parents:
diff changeset
  1974
        {
hgs
parents:
diff changeset
  1975
        HBufC* middleSKText = StringLoader::LoadLC( aResourceId );
hgs
parents:
diff changeset
  1976
        TPtr mskPtr = middleSKText->Des();
hgs
parents:
diff changeset
  1977
        cbaGroup->AddCommandToStackL( 
hgs
parents:
diff changeset
  1978
            KGSMSKControlID, 
hgs
parents:
diff changeset
  1979
            aCommandId, 
hgs
parents:
diff changeset
  1980
            mskPtr );
hgs
parents:
diff changeset
  1981
        CleanupStack::PopAndDestroy( middleSKText );
hgs
parents:
diff changeset
  1982
        }
hgs
parents:
diff changeset
  1983
    }
hgs
parents:
diff changeset
  1984
hgs
parents:
diff changeset
  1985
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1986
// CGSCallPlugin::HandleClientRectChange
hgs
parents:
diff changeset
  1987
//
hgs
parents:
diff changeset
  1988
//
hgs
parents:
diff changeset
  1989
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1990
//
hgs
parents:
diff changeset
  1991
void CGSCallPlugin::HandleClientRectChange()
hgs
parents:
diff changeset
  1992
    {
hgs
parents:
diff changeset
  1993
    if ( iContainer )
hgs
parents:
diff changeset
  1994
        {
hgs
parents:
diff changeset
  1995
        iContainer->SetRect( ClientRect() );
hgs
parents:
diff changeset
  1996
        }
hgs
parents:
diff changeset
  1997
    }
hgs
parents:
diff changeset
  1998
hgs
parents:
diff changeset
  1999
// ========================= From CGSPluginInterface ==================
hgs
parents:
diff changeset
  2000
hgs
parents:
diff changeset
  2001
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2002
// CGSCallPlugin::GetCaptionL
hgs
parents:
diff changeset
  2003
//
hgs
parents:
diff changeset
  2004
//
hgs
parents:
diff changeset
  2005
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2006
//
hgs
parents:
diff changeset
  2007
void CGSCallPlugin::GetCaptionL( TDes& aCaption ) const
hgs
parents:
diff changeset
  2008
    {
hgs
parents:
diff changeset
  2009
    HBufC* result = StringLoader::LoadL( R_GS_CALL_PLUGIN_CAPTION );
hgs
parents:
diff changeset
  2010
    aCaption.Copy( *result );
hgs
parents:
diff changeset
  2011
    delete result;
hgs
parents:
diff changeset
  2012
    }
hgs
parents:
diff changeset
  2013
hgs
parents:
diff changeset
  2014
hgs
parents:
diff changeset
  2015
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2016
// CGSCallPlugin::PluginProviderCategory
hgs
parents:
diff changeset
  2017
//
hgs
parents:
diff changeset
  2018
//
hgs
parents:
diff changeset
  2019
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2020
//
hgs
parents:
diff changeset
  2021
TInt CGSCallPlugin::PluginProviderCategory() const
hgs
parents:
diff changeset
  2022
    {
hgs
parents:
diff changeset
  2023
    //This plugin is created by 3rd party.
hgs
parents:
diff changeset
  2024
    return KGSPluginProviderInternal;
hgs
parents:
diff changeset
  2025
    }
hgs
parents:
diff changeset
  2026
hgs
parents:
diff changeset
  2027
hgs
parents:
diff changeset
  2028
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2029
// CGSCallPlugin::CreateIconL()
hgs
parents:
diff changeset
  2030
//
hgs
parents:
diff changeset
  2031
//
hgs
parents:
diff changeset
  2032
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2033
//
hgs
parents:
diff changeset
  2034
CGulIcon* CGSCallPlugin::CreateIconL( const TUid aIconType )
hgs
parents:
diff changeset
  2035
    {
hgs
parents:
diff changeset
  2036
    //EMbm<Mbm_file_name><Bitmap_name>
hgs
parents:
diff changeset
  2037
    CGulIcon* icon;
hgs
parents:
diff changeset
  2038
    TParse* fp = new( ELeave ) TParse();
hgs
parents:
diff changeset
  2039
    CleanupStack::PushL( fp );
hgs
parents:
diff changeset
  2040
    fp->Set( KGSCallPluginIconDirAndName, &KDC_BITMAP_DIR, NULL );
hgs
parents:
diff changeset
  2041
hgs
parents:
diff changeset
  2042
    if( aIconType == KGSIconTypeLbxItem )
hgs
parents:
diff changeset
  2043
        {
hgs
parents:
diff changeset
  2044
        icon = AknsUtils::CreateGulIconL(
hgs
parents:
diff changeset
  2045
        AknsUtils::SkinInstance(),
hgs
parents:
diff changeset
  2046
        KAknsIIDQgnPropSetCallSub,
hgs
parents:
diff changeset
  2047
        fp->FullName(),
hgs
parents:
diff changeset
  2048
        EMbmGscallpluginQgn_prop_set_call_sub,
hgs
parents:
diff changeset
  2049
        EMbmGscallpluginQgn_prop_set_call_sub_mask );
hgs
parents:
diff changeset
  2050
        }
hgs
parents:
diff changeset
  2051
    else
hgs
parents:
diff changeset
  2052
        {
hgs
parents:
diff changeset
  2053
        icon = CGSPluginInterface::CreateIconL( aIconType );
hgs
parents:
diff changeset
  2054
        }
hgs
parents:
diff changeset
  2055
hgs
parents:
diff changeset
  2056
    CleanupStack::PopAndDestroy( fp );
hgs
parents:
diff changeset
  2057
hgs
parents:
diff changeset
  2058
    return icon;
hgs
parents:
diff changeset
  2059
    }
hgs
parents:
diff changeset
  2060
hgs
parents:
diff changeset
  2061
hgs
parents:
diff changeset
  2062
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  2063
// CGSCallPlugin::ChangeLongPressCallKeySettingL
hgs
parents:
diff changeset
  2064
//
hgs
parents:
diff changeset
  2065
// Change Long Press Call Key setting.
hgs
parents:
diff changeset
  2066
// values:  0,1  --> Inactive (Default Value is 1 and when RFS default value is 0) 
hgs
parents:
diff changeset
  2067
// 			2 --> Video call
hgs
parents:
diff changeset
  2068
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  2069
//
hgs
parents:
diff changeset
  2070
void CGSCallPlugin::ChangeLongPressCallKeySettingL( const TBool aShowSettingPage )
hgs
parents:
diff changeset
  2071
    {
hgs
parents:
diff changeset
  2072
    __GSLOGSTRING("[GSCallPlugin]--> ChangeLongPressCallKeySettingL");
hgs
parents:
diff changeset
  2073
    TInt statusLongPressCallKey = iModel->LongPressCallKeyL();
hgs
parents:
diff changeset
  2074
    TBool updateValue = ETrue;
hgs
parents:
diff changeset
  2075
    
hgs
parents:
diff changeset
  2076
    if ( aShowSettingPage )
hgs
parents:
diff changeset
  2077
        {
hgs
parents:
diff changeset
  2078
       	// If the status of Long Key is not active then we decrement to
hgs
parents:
diff changeset
  2079
       	// the value of statusLongPressCallKey so that the values are
hgs
parents:
diff changeset
  2080
       	// then tuned to launch the setting page normally with two setting
hgs
parents:
diff changeset
  2081
       	// items InActive and Video Call
hgs
parents:
diff changeset
  2082
       	// Refer to GSCallPlugin.hrh file for more info for the  description
hgs
parents:
diff changeset
  2083
       	iModel->MapLongPressKeyCallKeyValue( statusLongPressCallKey );
hgs
parents:
diff changeset
  2084
       	updateValue = ShowLongPressCallKeySettingPageL( 
hgs
parents:
diff changeset
  2085
        						       statusLongPressCallKey );
hgs
parents:
diff changeset
  2086
        
hgs
parents:
diff changeset
  2087
        // Here if the selected index is 1 it means Video Call from the setting page
hgs
parents:
diff changeset
  2088
        // we then again map this value back to 2 which is EGSLongPressCallKeyVideoCall
hgs
parents:
diff changeset
  2089
        // Refer to GSCallPlugin.hrh for more details					       
hgs
parents:
diff changeset
  2090
  		if ( statusLongPressCallKey == EGSLongPressCallKeyVoiceCall )
hgs
parents:
diff changeset
  2091
  			{
hgs
parents:
diff changeset
  2092
  			statusLongPressCallKey = EGSLongPressCallKeyVideoCall;
hgs
parents:
diff changeset
  2093
  			}
hgs
parents:
diff changeset
  2094
  		else // If selected index in setting page is InActive ( 0) we map
hgs
parents:
diff changeset
  2095
  		     // this to EGSLongPressCallKeyVoiceCall which is 1
hgs
parents:
diff changeset
  2096
  			{
hgs
parents:
diff changeset
  2097
  			statusLongPressCallKey = EGSLongPressCallKeyVoiceCall;
hgs
parents:
diff changeset
  2098
  			}
hgs
parents:
diff changeset
  2099
        }
hgs
parents:
diff changeset
  2100
	else // switch the value
hgs
parents:
diff changeset
  2101
		{
hgs
parents:
diff changeset
  2102
   		if ( statusLongPressCallKey == EGSLongPressCallKeyNotSet ||
hgs
parents:
diff changeset
  2103
   			 statusLongPressCallKey == EGSLongPressCallKeyVoiceCall )
hgs
parents:
diff changeset
  2104
			{
hgs
parents:
diff changeset
  2105
        	statusLongPressCallKey = EGSLongPressCallKeyVideoCall;
hgs
parents:
diff changeset
  2106
        	}
hgs
parents:
diff changeset
  2107
   		else
hgs
parents:
diff changeset
  2108
    		{
hgs
parents:
diff changeset
  2109
        	statusLongPressCallKey = EGSLongPressCallKeyVoiceCall;
hgs
parents:
diff changeset
  2110
        	}
hgs
parents:
diff changeset
  2111
        }
hgs
parents:
diff changeset
  2112
    if ( updateValue )
hgs
parents:
diff changeset
  2113
        {
hgs
parents:
diff changeset
  2114
        iModel->SetLongPressCallKeyL( statusLongPressCallKey );
hgs
parents:
diff changeset
  2115
        UpdateListBoxL( EGSLongPressCallKeyItemId, KGSNotUsed );
hgs
parents:
diff changeset
  2116
        }
hgs
parents:
diff changeset
  2117
hgs
parents:
diff changeset
  2118
    __GSLOGSTRING("[GSCallPlugin] <--ChangeLongPressCallKeySettingL");
hgs
parents:
diff changeset
  2119
    }
hgs
parents:
diff changeset
  2120
hgs
parents:
diff changeset
  2121
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  2122
//
hgs
parents:
diff changeset
  2123
// 		Launching Long Press Key setting page
hgs
parents:
diff changeset
  2124
//
hgs
parents:
diff changeset
  2125
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  2126
//
hgs
parents:
diff changeset
  2127
TBool CGSCallPlugin::ShowLongPressCallKeySettingPageL( TInt& aCurrentValue )
hgs
parents:
diff changeset
  2128
    {
hgs
parents:
diff changeset
  2129
    __GSLOGSTRING("[GSCallPlugin]--> ShowLongPressCallKeySettingPageL");
hgs
parents:
diff changeset
  2130
    CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
hgs
parents:
diff changeset
  2131
                            R_GS_LONG_PRESS_CALL_SETTING_PAGE_LBX );
hgs
parents:
diff changeset
  2132
    CleanupStack::PushL( items );
hgs
parents:
diff changeset
  2133
hgs
parents:
diff changeset
  2134
    CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
hgs
parents:
diff changeset
  2135
                                R_GS_LONG_PRESS_CALL_SETTING_PAGE,
hgs
parents:
diff changeset
  2136
                                aCurrentValue, items );
hgs
parents:
diff changeset
  2137
hgs
parents:
diff changeset
  2138
    TBool ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
hgs
parents:
diff changeset
  2139
    CleanupStack::PopAndDestroy( items );
hgs
parents:
diff changeset
  2140
hgs
parents:
diff changeset
  2141
    __GSLOGSTRING("[GSCallPlugin] <--ShowLongPressCallKeySettingPageL");
hgs
parents:
diff changeset
  2142
    return ret;
hgs
parents:
diff changeset
  2143
    }
hgs
parents:
diff changeset
  2144
hgs
parents:
diff changeset
  2145
hgs
parents:
diff changeset
  2146
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2147
// CGSCallPlugin::ShowOwnImageVtCallSettingPageL
hgs
parents:
diff changeset
  2148
// 
hgs
parents:
diff changeset
  2149
// Displaying settings page for Own Image during video call setting
hgs
parents:
diff changeset
  2150
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
  2151
//
hgs
parents:
diff changeset
  2152
void CGSCallPlugin::ShowOwnImageVtCallSettingPageL()
hgs
parents:
diff changeset
  2153
    {
hgs
parents:
diff changeset
  2154
    __GSLOGSTRING("[GSCallPlugin]--> ShowOwnImageVtCallSettingPageL");
hgs
parents:
diff changeset
  2155
    TInt currentValue = iModel->OwnImageVtCallStatusL();
hgs
parents:
diff changeset
  2156
    CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
hgs
parents:
diff changeset
  2157
                            R_GS_OWN_IMAGE_VT_CALL_SETTING_PAGE_LBX );
hgs
parents:
diff changeset
  2158
    CleanupStack::PushL( items );
hgs
parents:
diff changeset
  2159
hgs
parents:
diff changeset
  2160
    CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
hgs
parents:
diff changeset
  2161
                                R_GS_OWN_IMAGE_VT_CALL_SETTING_PAGE,
hgs
parents:
diff changeset
  2162
                                currentValue, items );
hgs
parents:
diff changeset
  2163
hgs
parents:
diff changeset
  2164
    TBool ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
hgs
parents:
diff changeset
  2165
    
hgs
parents:
diff changeset
  2166
    if( ret )
hgs
parents:
diff changeset
  2167
        {
hgs
parents:
diff changeset
  2168
        iModel->SetOwnImageVtCallStatusL( currentValue );
hgs
parents:
diff changeset
  2169
        UpdateListBoxL( EGSOwnImageVtCallItemId, currentValue );
hgs
parents:
diff changeset
  2170
        }
hgs
parents:
diff changeset
  2171
    
hgs
parents:
diff changeset
  2172
    CleanupStack::PopAndDestroy( items );
hgs
parents:
diff changeset
  2173
hgs
parents:
diff changeset
  2174
    __GSLOGSTRING("[GSCallPlugin] <--ShowOwnImageVtCallSettingPageL");
hgs
parents:
diff changeset
  2175
    }
hgs
parents:
diff changeset
  2176
hgs
parents:
diff changeset
  2177
//End of File