gssettingsuis/Gs/GSAutoKeyguardPlugin/Src/GSAutoKeyguardPluginContainer.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) 2005 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:  Container for the Device & SIM security sub-folder
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 "GSAutoKeyguardPluginContainer.h"
hgs
parents:
diff changeset
    20
#include "GSAutoKeyguardPluginModel.h"
hgs
parents:
diff changeset
    21
#include "GSAutoKeyguardPlugin.hrh"
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <bldvariant.hrh>
hgs
parents:
diff changeset
    24
#include <aknlists.h>
hgs
parents:
diff changeset
    25
#include <etelmm.h>
hgs
parents:
diff changeset
    26
#include <RSSSettings.h>
hgs
parents:
diff changeset
    27
#include <StringLoader.h>
hgs
parents:
diff changeset
    28
#include <featmgr.h>
hgs
parents:
diff changeset
    29
#include <csxhelp/cp.hlp.hrh>
hgs
parents:
diff changeset
    30
#include <gsfwviewuids.h>
hgs
parents:
diff changeset
    31
#include <gsautokeyguardpluginrsc.rsg>
hgs
parents:
diff changeset
    32
#include <gslistbox.h>
hgs
parents:
diff changeset
    33
#include <AknsConstants.h>
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
// EXTERNAL DATA STRUCTURES
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
// EXTERNAL FUNCTION PROTOTYPES  
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
// CONSTANTS
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
// MACROS
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
// LOCAL CONSTANTS AND MACROS
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
// MODULE DATA STRUCTURES
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
// LOCAL FUNCTION PROTOTYPES
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
// ============================= LOCAL FUNCTIONS ==============================
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    56
// CGSAutoKeyguardPluginContainer::ConstructL()
hgs
parents:
diff changeset
    57
// 
hgs
parents:
diff changeset
    58
// Symbian OS two phased constructor
hgs
parents:
diff changeset
    59
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    60
//
hgs
parents:
diff changeset
    61
void CGSAutoKeyguardPluginContainer::ConstructL( const TRect& aRect )
hgs
parents:
diff changeset
    62
    { 
hgs
parents:
diff changeset
    63
    iListBox = new( ELeave ) CAknSettingStyleListBox;
hgs
parents:
diff changeset
    64
    if(AknLayoutUtils::PenEnabled())
hgs
parents:
diff changeset
    65
        {
hgs
parents:
diff changeset
    66
            BaseConstructL( aRect, R_GS_AUTO_KEYGUARD_VIEW_TITLE, R_TOUCH_AUTO_KEYGUARD_LBX );
hgs
parents:
diff changeset
    67
        }
hgs
parents:
diff changeset
    68
    else
hgs
parents:
diff changeset
    69
        {
hgs
parents:
diff changeset
    70
            BaseConstructL( aRect, R_GS_AUTO_KEYGUARD_VIEW_TITLE, R_AUTO_KEYGUARD_LBX );
hgs
parents:
diff changeset
    71
        }
hgs
parents:
diff changeset
    72
        
hgs
parents:
diff changeset
    73
    }
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    77
// CGSAutoKeyguardPluginContainer::~CGSSettListSecurityContainer()
hgs
parents:
diff changeset
    78
// 
hgs
parents:
diff changeset
    79
// Destructor 
hgs
parents:
diff changeset
    80
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    81
//
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
CGSAutoKeyguardPluginContainer::~CGSAutoKeyguardPluginContainer()
hgs
parents:
diff changeset
    84
    {
hgs
parents:
diff changeset
    85
    if(iAutoKeyguardItems)
hgs
parents:
diff changeset
    86
        {
hgs
parents:
diff changeset
    87
            delete iAutoKeyguardItems;
hgs
parents:
diff changeset
    88
        }
hgs
parents:
diff changeset
    89
	
hgs
parents:
diff changeset
    90
	if(iListboxItemArray)
hgs
parents:
diff changeset
    91
        {
hgs
parents:
diff changeset
    92
           delete iListboxItemArray; 
hgs
parents:
diff changeset
    93
        }
hgs
parents:
diff changeset
    94
      
hgs
parents:
diff changeset
    95
    }
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    99
// CGSAutoKeyguardPluginContainer::CGSAutoKeyguardPluginContainer()
hgs
parents:
diff changeset
   100
// 
hgs
parents:
diff changeset
   101
// Constructor
hgs
parents:
diff changeset
   102
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   103
//
hgs
parents:
diff changeset
   104
CGSAutoKeyguardPluginContainer::CGSAutoKeyguardPluginContainer(
hgs
parents:
diff changeset
   105
                          CGSAutoKeyguardPluginModel* aModel )
hgs
parents:
diff changeset
   106
    : iModel ( aModel )
hgs
parents:
diff changeset
   107
    {
hgs
parents:
diff changeset
   108
    }
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   112
// CGSAutoKeyguardPluginContainer::ConstructListBoxL()
hgs
parents:
diff changeset
   113
// 
hgs
parents:
diff changeset
   114
//  
hgs
parents:
diff changeset
   115
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   116
//
hgs
parents:
diff changeset
   117
void CGSAutoKeyguardPluginContainer::ConstructListBoxL( TInt aResLbxId )
hgs
parents:
diff changeset
   118
    {
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
    iListBox->ConstructL( this, EAknListBoxSelectionList );
hgs
parents:
diff changeset
   121
    iListboxItemArray = CGSListBoxItemTextArray::NewL( aResLbxId, 
hgs
parents:
diff changeset
   122
                        *iListBox, *iCoeEnv );
hgs
parents:
diff changeset
   123
    iListBox->Model()->SetItemTextArray( iListboxItemArray );
hgs
parents:
diff changeset
   124
    iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
hgs
parents:
diff changeset
   125
	iAutoKeyguardItems = iCoeEnv->ReadDesC16ArrayResourceL( R_AUTOKEYGUARD_ARRAY );
hgs
parents:
diff changeset
   126
    CreateListBoxItemsL();
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
// CGSSettListIdleContainer::CreateListBoxItemsL()
hgs
parents:
diff changeset
   132
// 
hgs
parents:
diff changeset
   133
//  
hgs
parents:
diff changeset
   134
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   135
//
hgs
parents:
diff changeset
   136
void CGSAutoKeyguardPluginContainer::CreateListBoxItemsL()
hgs
parents:
diff changeset
   137
    {
hgs
parents:
diff changeset
   138
	MakeAutoKeyguardItemL();
hgs
parents:
diff changeset
   139
    }
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   142
// CGSSettListIdleContainer::UpdateListBoxL( TInt aFeatureId )
hgs
parents:
diff changeset
   143
// 
hgs
parents:
diff changeset
   144
//  
hgs
parents:
diff changeset
   145
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   146
//
hgs
parents:
diff changeset
   147
void CGSAutoKeyguardPluginContainer::UpdateListBoxL( TInt aFeatureId )
hgs
parents:
diff changeset
   148
    {
hgs
parents:
diff changeset
   149
    switch( aFeatureId )
hgs
parents:
diff changeset
   150
        {
hgs
parents:
diff changeset
   151
        case EGSSettIdAutoKeyguard:
hgs
parents:
diff changeset
   152
        	MakeAutoKeyguardItemL();
hgs
parents:
diff changeset
   153
        	break;
hgs
parents:
diff changeset
   154
        default:
hgs
parents:
diff changeset
   155
            return;
hgs
parents:
diff changeset
   156
        }
hgs
parents:
diff changeset
   157
    
hgs
parents:
diff changeset
   158
    iListBox->HandleItemAdditionL();
hgs
parents:
diff changeset
   159
    }
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   162
// CGSAutoKeyguardPluginContainer::MakeAutoKeyguardItemL()
hgs
parents:
diff changeset
   163
// 
hgs
parents:
diff changeset
   164
//  
hgs
parents:
diff changeset
   165
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   166
//
hgs
parents:
diff changeset
   167
void CGSAutoKeyguardPluginContainer::MakeAutoKeyguardItemL()
hgs
parents:
diff changeset
   168
    {
hgs
parents:
diff changeset
   169
    #ifdef RD_AUTO_KEYGUARD
hgs
parents:
diff changeset
   170
    
hgs
parents:
diff changeset
   171
    HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 );
hgs
parents:
diff changeset
   172
    TPtr ptrBuffer ( dynamicText->Des() );
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
    TInt period = iModel->AutoKeyguardPeriod();
hgs
parents:
diff changeset
   175
    
hgs
parents:
diff changeset
   176
    //calculate minutes and seconds
hgs
parents:
diff changeset
   177
    TInt minutes = 0;
hgs
parents:
diff changeset
   178
    TInt sec = 0;
hgs
parents:
diff changeset
   179
    if(period >= 60)
hgs
parents:
diff changeset
   180
    {
hgs
parents:
diff changeset
   181
    	minutes = period / 60;	
hgs
parents:
diff changeset
   182
    }    
hgs
parents:
diff changeset
   183
    sec = period - minutes * 60;
hgs
parents:
diff changeset
   184
    
hgs
parents:
diff changeset
   185
    if((minutes > 1 ) && (sec > 0))
hgs
parents:
diff changeset
   186
    {
hgs
parents:
diff changeset
   187
	    CArrayFixFlat<TInt> *minSec=new(ELeave)CArrayFixFlat<TInt>( 2 ); 
hgs
parents:
diff changeset
   188
	    CleanupStack::PushL(minSec);
hgs
parents:
diff changeset
   189
	    minSec->AppendL(minutes);
hgs
parents:
diff changeset
   190
	    minSec->AppendL(sec);
hgs
parents:
diff changeset
   191
	    
hgs
parents:
diff changeset
   192
	    //Load the resource string; this function replaces the %0N and %1N in the
hgs
parents:
diff changeset
   193
        //localisation string with numbers from the array having the same index as the number preceding the N.
hgs
parents:
diff changeset
   194
        HBufC* tempDynamicText = StringLoader::LoadL( R_AUTO_KEYGUARD_MINSEC, *minSec, iCoeEnv);
hgs
parents:
diff changeset
   195
        ptrBuffer = tempDynamicText->Des();
hgs
parents:
diff changeset
   196
        delete tempDynamicText;
hgs
parents:
diff changeset
   197
        CleanupStack::PopAndDestroy( minSec );
hgs
parents:
diff changeset
   198
    }
hgs
parents:
diff changeset
   199
    else if ((minutes == 1 ) && (sec > 0))
hgs
parents:
diff changeset
   200
    {
hgs
parents:
diff changeset
   201
    	CArrayFixFlat<TInt> *minSec=new(ELeave)CArrayFixFlat<TInt>( 2 ); 
hgs
parents:
diff changeset
   202
	    CleanupStack::PushL(minSec);
hgs
parents:
diff changeset
   203
	    minSec->AppendL(minutes);
hgs
parents:
diff changeset
   204
	    minSec->AppendL(sec);
hgs
parents:
diff changeset
   205
	    
hgs
parents:
diff changeset
   206
	    //Load the resource string; this function replaces the %0N and %1N in the
hgs
parents:
diff changeset
   207
        //localisation string with numbers from the array having the same index as the number preceding the N.
hgs
parents:
diff changeset
   208
        HBufC* tempDynamicText = StringLoader::LoadL( R_AUTO_KEYGUARD_ONE_MIN_SEC, *minSec, iCoeEnv); 
hgs
parents:
diff changeset
   209
        ptrBuffer = tempDynamicText->Des();
hgs
parents:
diff changeset
   210
        delete tempDynamicText;
hgs
parents:
diff changeset
   211
        CleanupStack::PopAndDestroy( minSec );
hgs
parents:
diff changeset
   212
    }
hgs
parents:
diff changeset
   213
    else if ((minutes > 1 ) && (sec == 0))
hgs
parents:
diff changeset
   214
    {
hgs
parents:
diff changeset
   215
    	TBuf<KGSBufSize128> tempString;
hgs
parents:
diff changeset
   216
    	StringLoader::Format( tempString, 
hgs
parents:
diff changeset
   217
                         	( ( *iAutoKeyguardItems )[3] ),
hgs
parents:
diff changeset
   218
                          		-1, // no index in the key string
hgs
parents:
diff changeset
   219
                          		minutes );                
hgs
parents:
diff changeset
   220
    	ptrBuffer = tempString;	
hgs
parents:
diff changeset
   221
    }
hgs
parents:
diff changeset
   222
    else if ((minutes == 1 ) && (sec == 0))
hgs
parents:
diff changeset
   223
    {  
hgs
parents:
diff changeset
   224
        TBuf<KGSBufSize128> tempString;
hgs
parents:
diff changeset
   225
    	StringLoader::Format( tempString, 
hgs
parents:
diff changeset
   226
                         	( ( *iAutoKeyguardItems )[2] ),
hgs
parents:
diff changeset
   227
                          		-1, // no index in the key string
hgs
parents:
diff changeset
   228
                          		minutes );
hgs
parents:
diff changeset
   229
    	ptrBuffer = tempString;	
hgs
parents:
diff changeset
   230
    }
hgs
parents:
diff changeset
   231
    else if ((minutes == 0 ) && (sec > 0))
hgs
parents:
diff changeset
   232
    {
hgs
parents:
diff changeset
   233
    	TBuf<KGSBufSize128> tempString;
hgs
parents:
diff changeset
   234
    	StringLoader::Format( tempString, 
hgs
parents:
diff changeset
   235
                         	( ( *iAutoKeyguardItems )[1] ),
hgs
parents:
diff changeset
   236
                          		-1, // no index in the key string
hgs
parents:
diff changeset
   237
                          		sec );                       
hgs
parents:
diff changeset
   238
    	ptrBuffer = tempString;
hgs
parents:
diff changeset
   239
    }
hgs
parents:
diff changeset
   240
    else //both are 0, period is not user defined
hgs
parents:
diff changeset
   241
    {
hgs
parents:
diff changeset
   242
    	ptrBuffer = ( *iAutoKeyguardItems )[0];
hgs
parents:
diff changeset
   243
    }
hgs
parents:
diff changeset
   244
    
hgs
parents:
diff changeset
   245
     
hgs
parents:
diff changeset
   246
    iListboxItemArray->SetDynamicTextL( EGSSettIdAutoKeyguard, ptrBuffer );
hgs
parents:
diff changeset
   247
    CleanupStack::PopAndDestroy( dynamicText );
hgs
parents:
diff changeset
   248
    iListboxItemArray->SetItemVisibilityL( EGSSettIdAutoKeyguard, 
hgs
parents:
diff changeset
   249
                       CGSListBoxItemTextArray::EVisible );
hgs
parents:
diff changeset
   250
    #endif //RD_AUTO_KEYGUARD
hgs
parents:
diff changeset
   251
    }
hgs
parents:
diff changeset
   252
hgs
parents:
diff changeset
   253
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   254
// CGSAutoKeyguardPluginContainer::CurrentFeatureId()
hgs
parents:
diff changeset
   255
//  
hgs
parents:
diff changeset
   256
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   257
//
hgs
parents:
diff changeset
   258
TInt CGSAutoKeyguardPluginContainer::CurrentFeatureId() const
hgs
parents:
diff changeset
   259
    {
hgs
parents:
diff changeset
   260
    return iListboxItemArray->CurrentFeature( );
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
// CGSAutoKeyguardPluginContainer::GetHelpContext() const
hgs
parents:
diff changeset
   266
// Gets Help 
hgs
parents:
diff changeset
   267
//  
hgs
parents:
diff changeset
   268
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   269
//
hgs
parents:
diff changeset
   270
void CGSAutoKeyguardPluginContainer::GetHelpContext( TCoeHelpContext& aContext ) const
hgs
parents:
diff changeset
   271
    {
hgs
parents:
diff changeset
   272
    aContext.iMajor = KUidGS;
hgs
parents:
diff changeset
   273
    // aContext.iContext = KCP_HLP_DEVICE_LOCKING; // This was used before, when keylock and keguard had the same help file
hgs
parents:
diff changeset
   274
    _LIT(KCP_HLP_AUTOKEYGUARD_LOCAL, "CP_HLP_AUTOKEYGUARD");	// the global KCP_HLP_AUTOKEYGUARD is defined only on some products but not all.
hgs
parents:
diff changeset
   275
    aContext.iContext = KCP_HLP_AUTOKEYGUARD_LOCAL;
hgs
parents:
diff changeset
   276
    }
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   279
// CGSAutoKeyguardPluginContainer::HandleResourceChangeL()
hgs
parents:
diff changeset
   280
// 
hgs
parents:
diff changeset
   281
// Updates view layout 
hgs
parents:
diff changeset
   282
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   283
//
hgs
parents:
diff changeset
   284
void CGSAutoKeyguardPluginContainer::HandleResourceChangeL( TInt aType )
hgs
parents:
diff changeset
   285
    {
hgs
parents:
diff changeset
   286
    if( aType == KAknsMessageSkinChange ||
hgs
parents:
diff changeset
   287
        aType == KEikDynamicLayoutVariantSwitch )
hgs
parents:
diff changeset
   288
        {
hgs
parents:
diff changeset
   289
        TRect mainPaneRect;
hgs
parents:
diff changeset
   290
        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, 
hgs
parents:
diff changeset
   291
                                           mainPaneRect );
hgs
parents:
diff changeset
   292
        SetRect( mainPaneRect );
hgs
parents:
diff changeset
   293
        DrawNow();
hgs
parents:
diff changeset
   294
        }
hgs
parents:
diff changeset
   295
    }    
hgs
parents:
diff changeset
   296
    
hgs
parents:
diff changeset
   297
//End of File