--- a/devencdiskutils/DevEncStarter/rom/DevEncStarter.iby Fri Apr 16 15:53:24 2010 +0300
+++ b/devencdiskutils/DevEncStarter/rom/DevEncStarter.iby Mon May 03 13:20:16 2010 +0300
@@ -24,7 +24,6 @@
//S60_APP_BITMAP( DevEncStarter )
S60_APP_AIF_ICONS( DevEncStarter )
S60_APP_AIF_RSC( DevEncStarter )
-data=DATAZ_\private\10003a3f\apps\DevEncStarter_reg.rsc private\10003a3f\import\apps\DevEncStarter_reg.rsc
#endif // __DEVENCSTARTER_IBY__
--- a/devencdiskutils/rom/DevEncDiskUtils.iby Fri Apr 16 15:53:24 2010 +0300
+++ b/devencdiskutils/rom/DevEncDiskUtils.iby Mon May 03 13:20:16 2010 +0300
@@ -41,7 +41,6 @@
//---------------------------------------------------------------------------
S60_APP_EXE( DevEncStarter )
//S60_APP_AIF_RSC( DevEncStarter )
-data=DATAZ_\private\10003a3f\apps\DevEncStarter_reg.rsc private\10003a3f\import\apps\DevEncStarter_reg.rsc
data=DATAZ_\resource\apps\DevEncStarter.rsc resource\apps\DevEncStarter.rsc
#endif // FF_DEVICE_ENCRYPTION_FEATURE
--- a/pkiutilities/DeviceToken/Src/Certstore/server/DevandTruSrvCertStoreServer.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/pkiutilities/DeviceToken/Src/Certstore/server/DevandTruSrvCertStoreServer.cpp Mon May 03 13:20:16 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -331,12 +331,6 @@
const TDesC8& aCert,
const RMessage2& aMessage, TBool aFromTruSiteSrv )
{
- // Check if a certificate with this name already exists
- if (iEntryList->LabelExists(aInfo.iLabel))
- {
- User::Leave(KErrBadName);
- }
-
// Check subject key id and cert data are supplied, issuer key id is optional
if (aInfo.iSubjectKeyId == KNullDesC8 || aCert == KNullDesC8)
{
@@ -403,16 +397,19 @@
{
CX509Certificate* cert = CX509Certificate::NewLC( aCertData );
TBuf8<KSHA1Length> certHash;
- certHash.Copy(cert->Fingerprint());
-
-
+ certHash.Copy(cert->Fingerprint());
+
const CX500DistinguishedName& dName = cert->SubjectName();
// Retrieve CN
- HBufC* cn = dName.ExtractFieldL( KX520CommonName );
- CleanupStack::PushL(cn);
- iTrustedSitesServer->AddL( certHash, *cn );
+ HBufC* cn = dName.ExtractFieldL( KX520CommonName );
+ if( cn )
+ {
+ CleanupStack::PushL( cn );
+ iTrustedSitesServer->AddL( certHash, *cn );
+ CleanupStack::PopAndDestroy( cn );
+ }
- CleanupStack::PopAndDestroy( 2 );//cert, cn
+ CleanupStack::PopAndDestroy( cert );
}
if (err != KErrNone)
{
Binary file pkiutilities/StubSIS/c32exe.sis has changed
--- a/pkiutilities/group/bld.inf Fri Apr 16 15:53:24 2010 +0300
+++ b/pkiutilities/group/bld.inf Mon May 03 13:20:16 2010 +0300
@@ -25,7 +25,7 @@
//Stub SIS
PRJ_EXPORTS
../StubSIS/CenRepStub.sis /epoc32/data/z/system/install/CenRepStub.sis
-../StubSIS/c32exe.sis /epoc32/data/z/system/install/c32exe.sis
+
//SWI and TLSProvider config files
../StubSIS/swipolicy.ini /epoc32/release/winscw/udeb/z/system/data/swipolicy.ini
--- a/securitydialogs/Autolock/group/Autolock.mmp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/Autolock/group/Autolock.mmp Mon May 03 13:20:16 2010 +0300
@@ -74,7 +74,7 @@
LIBRARY eikcoctl.lib avkon.lib
LIBRARY activitymanager.lib
LIBRARY apgrfx.lib
-LIBRARY ws32.lib secui.lib commonengine.lib
+LIBRARY ws32.lib commonengine.lib
LIBRARY etel.lib etelmm.lib eikdlg.lib
LIBRARY sysutil.lib
LIBRARY aknlayout.lib
@@ -90,6 +90,7 @@
LIBRARY gdi.lib
LIBRARY aknnotify.lib
LIBRARY customapi.lib
+// LIBRARY secui.lib
SMPSAFE
--- a/securitydialogs/Autolock/src/AutolockApp.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/Autolock/src/AutolockApp.cpp Mon May 03 13:20:16 2010 +0300
@@ -20,7 +20,10 @@
#include "AutolockApp.h"
#include "AutolockDocument.h"
#include <eikstart.h>
-
+#include <apgcli.h>
+#include <apgtask.h>
+#include <coemain.h>
+#include <apacmdln.h>
// ================= MEMBER FUNCTIONS =======================
@@ -41,6 +44,7 @@
//
CApaDocument* CAutolockApp::CreateDocumentL()
{
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
return CAutolockDocument::NewL( *this );
}
@@ -49,11 +53,45 @@
LOCAL_C CApaApplication* NewApplication()
{
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+
+ TInt use_old_autolock=1;
+ if(use_old_autolock)
+ {
+ // start autolocksrv instead of autolock . This is a backup solution to use in case that not all SysAp and Avkon changes are implemented
+ RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0x1 );
+ CCoeEnv *env = CCoeEnv::Static();
+ TApaTaskList taskList( env->WsSession() );
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ const TUid KAutolockSrvAppUid = { 0xE0022E73 };
+ TApaTask task( taskList.FindApp( KAutolockSrvAppUid ) );
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ if ( !task.Exists() )
+ {
+ RDebug::Printf( "%s %s (%u) no KAutolockSrvAppUid found. Creating=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RApaLsSession ls;
+ User::LeaveIfError(ls.Connect());
+ CleanupClosePushL(ls);
+
+ CApaCommandLine* commandLine = CApaCommandLine::NewLC();
+ commandLine->SetExecutableNameL( _L("autolocksrv.exe" ) );
+ commandLine->SetCommandL( EApaCommandRun );
+
+ // Try to launch the application.
+ User::LeaveIfError(ls.StartApp(*commandLine));
+ RDebug::Printf( "%s %s (%u) autolocksrv.exe created=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0x7 );
+
+ CleanupStack::PopAndDestroy(2); // commandLine, ls
+ }
+ }
+ RDebug::Printf( "%s %s (%u) exiting=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0x1 );
return new CAutolockApp;
}
GLDEF_C TInt E32Main()
{
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+
return EikStart::RunApplication(NewApplication);
}
--- a/securitydialogs/Autolock/src/AutolockAppUi.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/Autolock/src/AutolockAppUi.cpp Mon May 03 13:20:16 2010 +0300
@@ -71,363 +71,17 @@
//
void CAutolockAppUi::ConstructL()
{
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+
#if defined(_DEBUG)
RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL"));
#endif
+ RDebug::Printf( "%s %s (%u) EAutolockOff=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, EAutolockOff );
+ RProperty::Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EAutolockOff);
+
BaseConstructL( EAknEnableSkin | EAknEnableMSK );
- //Disable priority control so that Autolock process priority isn't set to "background" by
- //window server when it is not active.
- iEikonEnv->WsSession().ComputeMode( RWsSession::EPriorityControlDisabled );
- RThread().SetProcessPriority( EPriorityHigh );
-
- FeatureManager::InitializeLibL();
-
- RTelServer::TPhoneInfo PhoneInfo;
- // prevent autolock shutdown
- iEikonEnv->SetSystem( ETrue );
-
- iSideKey1 = 0;
- iSideKey2 = 0;
- iAppKey = 0;
-
- aCallButtonRect = TRect (0,0,0,0);
- //connect to ETel
-
- TInt err( KErrGeneral );
- TInt thisTry( 0 );
-
- /*All server connections are tried to be made KTiesToConnectServer times because occasional
- fails on connections are possible at least on some servers*/
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() connect to etel server"));
- #endif
- // connect etel server
- while ( ( err = iServer.Connect() ) != KErrNone && ( thisTry++ ) <= KTriesToConnectServer )
- {
- User::After( KTimeBeforeRetryingServerConnection );
- }
- User::LeaveIfError( err );
-
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() load tsy"));
- #endif
- // load tsy
- err = iServer.LoadPhoneModule( KMmTsyModuleName );
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() load tsy ERROR: %d"), err);
- #endif
- if ( err != KErrAlreadyExists )
- {
- // may return also KErrAlreadyExists if some other
- // is already loaded the tsy module. And that is
- // not an error.
- User::LeaveIfError( err );
- }
-
- thisTry = 0;
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() open phone"));
- #endif
- //open phone
- User::LeaveIfError(iServer.SetExtendedErrorGranularity(RTelServer::EErrorExtended));
- User::LeaveIfError(iServer.GetPhoneInfo(PhoneIndex, PhoneInfo));
- User::LeaveIfError(iPhone.Open(iServer,PhoneInfo.iName));
- User::LeaveIfError(iCustomPhone.Open(iPhone));
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() phone opened"));
- #endif
-
- TBool systemLocked = EFalse;
- TBool autolockValue = EAutolockStatusUninitialized;
-
- iWait = NULL;
- iWait = CWait::NewL();
-
- #ifndef __WINS__
-
-
- /*****************************************************
- * Series 60 Customer / ETEL
- * Series 60 ETEL API
- *****************************************************/
-
- // set autolock period to 0, if lock is disabled in DOS side
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() set autolock period to 0"));
- #endif
- RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneDevice;
- RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
- RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
-
- iWait->SetRequestType(EMobilePhoneGetLockInfo);
- iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
- TInt res = iWait->WaitForRequestL();
- User::LeaveIfError(res);
- TInt lockValue = 0;
- CRepository* repository = CRepository::NewL(KCRUidSecuritySettings);
- TInt cRresult = repository->Get(KSettingsAutolockStatus, lockValue);
- TBool hiddenReset = HiddenReset();
- #if defined(_DEBUG)
- if(hiddenReset)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() Hidden reset"));
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() CR get result: %d"), cRresult);
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() CR lock value: %d"), lockValue);
- #endif
- if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
- {
- repository->Set(KSettingsAutoLockTime, 0);
- if ( FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ) )
- {
- repository->Set(KSettingsLockOnPowerUp, 0);
- }
- }
- // In CDMA, the system can stay locked on after the boot-up sequence.
- else if ( FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ) || (hiddenReset && (lockValue == 1)))
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() Hidden reset when locked"));
- #endif
- systemLocked = ETrue;
- }
-
-
- if ( lockInfo.iSetting == RMobilePhone::ELockSetEnabled && lockValue != EAutolockOff && !hiddenReset)
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() EAutolockStatusUninitialized %d"),EAutolockStatusUninitialized);
- #endif
- autolockValue = EAutolockStatusUninitialized;
- }
- else if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled || (hiddenReset && (lockValue == 0)) )
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() EAutolockOff %d"),EAutolockOff);
- #endif
- autolockValue = EAutolockOff;
- }
-
- delete repository;
- #endif //__WINS__
-
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() Enable emergency call support"));
- #endif
-
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() Autolock view"));
- #endif
-
-
-
- // -------------------------------------------------------------------------------------------------------------
- // part of emergency call handling when telephony+devicelock is active
- // this solution is meant only for 3.1 and 3.2
-
- iEcsNote = new (ELeave) CEcsNote();
- iEcsNote->ConstructSleepingNoteL(R_AVKON_EMERGENCY_CALL_NOTE);
- iEcsNote->ButtonGroupContainer().ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition(0,2);
-
- if (AknLayoutUtils::PenEnabled()) // on touch devices, if Autolock is activated from IdleScreen in landscape, the buttons need to be drawn.
- {
- iEcsNote->ButtonGroupContainer().SetCommandL( 0, _L("") ); // as keyboard is locked, these buttons do nothing. Better to hide their labels.
- iEcsNote->ButtonGroupContainer().SetCommandL( EAknSoftkeyCancel, _L("") );
- iEcsNote->ButtonGroupContainer().ButtonGroup()->AsControl()->MakeVisible(ETrue);
- }
-
- // Emergency call support
- iEcsDetector = CAknEcsDetector::NewL();
- iEcsDetector->SetObserver( this );
- iEmergencySupportReady = ETrue;
- // -------------------------------------------------------------------------------------------------------------
-
-
- // Autolock view
- CAutolockView* lockView = new(ELeave) CAutolockView;
- CleanupStack::PushL(lockView);
- lockView->ConstructL();
- CleanupStack::Pop(); // lockView
- AddViewL(lockView); // transfer ownership to CAknViewAppUi
- SetDefaultViewL(*lockView);
-
- // start autolock timer
- iModel = CAutoLockModel::NewL(this, autolockValue);
-
- // phone event observer
- iPhoneObserver = CValueObserver::NewL(this);
- //call bubble
- iIncallBubble = CAknIncallBubble::NewL();
-
- //Autokeyguard Period observer
- #ifdef RD_AUTO_KEYGUARD
- iKeyguardObserver = CAutoKeyguardObserver::NewL();
- #else //!RD_AUTO_KEYGUARD
- iKeyguardObserver = NULL;
- #endif //RD_AUTO_KEYGUARD
- // Create the write policy. Also processes with write device data can write the value.
- TSecurityPolicy writePolicy( ECapabilityWriteDeviceData );
- // Create the read policy. Also processes with read device data can read the value.
- TSecurityPolicy readPolicy( ECapabilityReadDeviceData );
-
- TInt tRet = RProperty::Define( KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, RProperty::EInt, readPolicy, writePolicy );
-
- if ( tRet != KErrNone )
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL():\
- FAILED to define the SECUI query Flag: %d"), tRet);
- #endif
- }
-
- tRet = RProperty::Define( KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, RProperty::EInt, readPolicy, writePolicy );
- if ( tRet != KErrNone )
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL():\
- FAILED to define the SECUI query request state Flag: %d"), tRet);
- #endif
- }
-
-if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ))
-{
-
- // Define the TARM admin flag.
-
- tRet = RProperty::Define( KSCPSIDAutolock, SCP_TARM_ADMIN_FLAG_UID, RProperty::EInt,
- readPolicy, writePolicy );
- if ( tRet != KErrNone )
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL():\
- FAILED to define the TARM Admin Flag"));
- #endif
- }
-
- // The following sequence is used to validate the configuration on SCP server.
- // This is needed on the first boot (initial or RFS) or if the C-drive has been formatted
- // (3-button format) and Autolock is not active.
-
- RSCPClient scpClient;
- if ( scpClient.Connect() == KErrNone )
- {
- TInt confStatus = scpClient.CheckConfiguration( KSCPInitial );
-
- if ( confStatus == KErrAccessDenied )
- {
- #ifndef __WINS__
- if ( ( lockInfo.iSetting == RMobilePhone::ELockSetDisabled ) )
- #else // __WINS__
- if ( 1 ) // DOS lock is never active in WINS
- #endif // __WINS__
- {
- // DOS lock is not active. Note that if DOS is locked, checking the code here will
- // mess up the query sequence. On initial startup DOS is not locked.
-
- TInt finalConfStatus = scpClient.CheckConfiguration( KSCPComplete );
-
- if ( finalConfStatus == KErrAccessDenied )
- {
- #ifdef __WINS__
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL():\
- DOS validation FAILED in WINS, something wrong!"));
- #endif
- #else // !__WINS__
-
- // The SCP server is out of sync and Autolock is not active. (c-drive formatted)
- // We must ask the security code. ( Note that it is very rare that this is executed )
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL():\
- Lock setting disabled, calling setlocksetting"));
- #endif
-
- // Wait here until the startup is complete
-
- TInt tarmErr = KErrNone;
- while ( tarmErr == KErrNone )
- {
- TInt sysState=0;
- tarmErr = RProperty::Get(KPSUidStartup, KPSGlobalSystemState, sysState);
-
- if ((sysState == ESwStateNormalRfOn) || (sysState == ESwStateNormalRfOff)
- || (sysState == ESwStateNormalBTSap))
- {
- break;
- }
- User::After(500000);
- }
-
- // Just change the lock setting again to disabled to request the security code.
- // Set the TARM flag so SecUi knows it should display the "login" query.
- TInt tarmFlag=0;
- tRet = RProperty::Get( KSCPSIDAutolock, SCP_TARM_ADMIN_FLAG_UID, tarmFlag );
- if ( tRet == KErrNone )
- {
- tarmFlag |= KSCPFlagResyncQuery;
- tRet = RProperty::Set( KSCPSIDAutolock, SCP_TARM_ADMIN_FLAG_UID, tarmFlag );
- }
-
- if ( tRet != KErrNone )
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL():\
- FAILED to set TARM Admin Flag"));
- #endif
- }
-
- RMobilePhone::TMobilePhoneLockSetting lockChange;
- lockChange = RMobilePhone::ELockSetDisabled;
- iWait->SetRequestType(EMobilePhoneSetLockSetting);
- iPhone.SetLockSetting(iWait->iStatus, lockType, lockChange);
-
- res = iWait->WaitForRequestL();
- #endif // __WINS__
- }
- }
-
- } // if ( confStatus == KErrAccessDenied )
-
- scpClient.Close();
- }
-
-}
-
- // Eventhough we might lock the device on boot-up (systemLocked == ETrue), we
- // want to hide the app until the handshake is done. StartUp application will
- // active the app when it is finished.
- if( !systemLocked )
- {// app to background
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() app to background"));
- #endif
- TApaTask self(iCoeEnv->WsSession());
- self.SetWgId(iCoeEnv->RootWin().Identifier());
- self.SendToBackground();
- // flush
- iCoeEnv->WsSession().Flush();
- }
- else
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() LOCK SYSTEM"));
- #endif
- TInt lockState = 0;
-
- #ifdef RD_REMOTELOCK
- lockState = EManualLocked;
- #else //!RD_REMOTELOCK
- lockState = EAutolockOn;
- #endif//RD_REMOTELOCK
- iModel->LockSystemL(lockState);
- }
-
- iGripStatusObserver = CAutolockGripStatusObserver::NewL( this, iEikonEnv->WsSession() );
- iFpsStatusObserver = CAutolockFpsStatusObserver::NewL( this, iEikonEnv->WsSession() );
- iDeviceLockQueryStatus = EFalse;
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::ConstructL() END"));
- #endif
}
// ----------------------------------------------------
// CAutolockAppUi::~CAutolockAppUi()
@@ -437,6 +91,7 @@
//
CAutolockAppUi::~CAutolockAppUi()
{
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
#if defined(_DEBUG)
RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::~CAutolockAppUi() BEGIN"));
#endif
@@ -464,23 +119,27 @@
iServer.UnloadPhoneModule(KMmTsyModuleName);
iServer.Close();
}
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
delete iModel;
delete iPhoneObserver;
delete iIncallBubble;
-#ifdef RD_AUTO_KEYGUARD
+RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ #ifdef RD_AUTO_KEYGUARD
delete iKeyguardObserver;
#endif
delete iEcsDetector;
delete iEcsNote; // Ecs change
- delete iWait;
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ delete iWait;
FeatureManager::UnInitializeLib();
delete iGripStatusObserver;
delete iFpsStatusObserver;
#if defined(_DEBUG)
RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::~CAutolockAppUi() END"));
#endif
- }
+RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ }
// ----------------------------------------------------
// CAutolockAppUi::HandleForegroundEventL()
// Handles foreground event.
@@ -721,74 +380,7 @@
}
case ESecUiCmdUnlock:
{
- #if defined(_DEBUG)
- RDebug::Print(_L("(AUTOLOCK)CAutolockAppUi::HandleCommandL() ESecUiCmdUnlock"));
- #endif
- // stop observing emergency call event
- iEmergencySupportReady = EFalse;
- iEcsDetector->Reset(); // Ecs queue is cleared; keys up til here are forgotten
- // ask secuity code
- CSecurityHandler* handler = new (ELeave) CSecurityHandler(iPhone);
- CleanupStack::PushL(handler);
- TSecUi::InitializeLibL();
-
- // Put the lights on when security query is shown
- SendMessageToSysAp( EEikSecurityQueryLights );
- HideSoftNotification(); // dismiss all the pending notes just before asking the unlocking code
-
- TRAPD(err,
- {
- iDeviceLockQueryStatus = ETrue;
- if(handler->AskSecCodeInAutoLockL())
- {
- iLocked = EFalse;
- DisableWGListChangeEventListening();
- iDeviceLockQueryStatus = EFalse;
- UnLockKeys();
- iModel->SetLockedL(EFalse);
- SwitchToPreviousAppL();
- }
- else
- { // make sure that we will be topmost still
- iDeviceLockQueryStatus = EFalse;
- TInt callState;
- RProperty::Get( KPSUidCtsyCallInformation, KCTsyCallState, callState );
- if ( callState == EPSCTsyCallStateNone &&
- !FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ) )
- {
- TApaTask self(CCoeEnv::Static()->WsSession());
- self.SetWgId(CCoeEnv::Static()->RootWin().Identifier());
- self.BringToForeground();
- TBool featureNoPowerkey = FeatureManager::FeatureSupported( KFeatureIdNoPowerkey );
- if ( featureNoPowerkey )
- {//set lights on in case user pressed "red button". If he pressed cancel the lights are on anyway so it doesn't matter.
- SendMessageToSysAp(EEikKeyLockLightsOnRequest);
- }
- // we don't want enable lock if call in progress
- RProperty::Get( KPSUidCtsyCallInformation, KCTsyCallState, callState );
- TInt keyguardDisableState(ECoreAppUIsDisableKeyguardUninitialized);
- //If there is alarm on the keyguard status is set to disabled. In that case don't enable keyguard as it will be done by SysAp
- //after the alarm has been disabled/snoozed. Otherwise the alarm CBA is left under keyguard CBA.
- RProperty::Get( KPSUidCoreApplicationUIs, KCoreAppUIsDisableKeyguard, keyguardDisableState );
- if ((callState == EPSCTsyCallStateNone) && (keyguardDisableState != ECoreAppUIsDisableKeyguard))
- {
- RAknKeyLock keylock;
- if ( keylock.Connect() == KErrNone )
- {
- keylock.EnableAutoLockEmulation();
- keylock.Close();
- }
- }
- }
- }
- };)
-
- // start observing emergency call event
- iEmergencySupportReady = ETrue;
- CleanupStack::PopAndDestroy(handler); // handler
- TSecUi::UnInitializeLib(); // secui
-
- User::LeaveIfError(err);
+ RDebug::Printf( "%s %s (%u) ESecUiCmdUnlock is not longer handled by Autolock=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, ESecUiCmdUnlock );
break;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/AutolockSrv.loc Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,13 @@
+// ============================================================================
+// * Generated by qmake (2.01a) (Qt 4.6.2) on: 2010-03-17T08:18:14
+// * This file is generated by qmake and should not be modified by the
+// * user.
+// ============================================================================
+
+#ifdef LANGUAGE_SC
+#define STRING_r_short_caption "AutolockSrv"
+#define STRING_r_caption "AutolockSrv"
+#else
+#define STRING_r_short_caption "AutolockSrv"
+#define STRING_r_caption "AutolockSrv"
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/AutolockSrv.pro Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,68 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, version 2.1 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program. If not,
+# see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
+#
+# Description:
+#
+
+TEMPLATE=app
+TARGET=AutolockSrv
+
+CONFIG += service
+
+CONFIG += Hb
+
+CONFIG += mobility
+MOBILITY = publishsubscribe
+
+symbian:TARGET.UID3 = 0xE0022E73
+
+XQSERVICE_ROOT=../..
+include(../../xqservicebase.pri)
+include(src/AutolockSrv.pri)
+
+symbian: TARGET.CAPABILITY = CAP_APPLICATION
+
+LIBS+=-lxqservice -lxqserviceutil -lflogger
+LIBS += -L../../../../../bin/release -lautolockuseractivityservice
+
+LIBS+=-lsecui -letelmm -letel -lcustomapi -lcentralrepository
+
+SERVICE.FILE = service_conf.xml
+SERVICE.OPTIONS = embeddable
+SERVICE.OPTIONS += hidden
+
+libFiles.sources = AutolockSrv.exe
+libFiles.path = "!:\sys\bin"
+DEPLOYMENT += libFiles
+
+RESOURCES += AutolockSrv.qrc
+
+RSS_RULES += \
+ "datatype_list = " \
+ " {" \
+ " DATATYPE" \
+ " {" \
+ " priority = EDataTypePriorityNormal;" \
+ " type = \"text/plain\";" \
+ " }" \
+ " };" \
+
+symbian:crml.sources = autolocksrv.qcrml
+symbian:crml.path = c:/resource/qt/crml
+symbian:DEPLOYMENT += crml
+
+symbian:BLD_INF_RULES.prj_exports += "./rom/AutolockSrv.iby CORE_APP_LAYER_IBY_EXPORT_PATH(AutolockSrv.iby)"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/AutolockSrv.qrc Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/AutolockSrv_hbicon" >
+ <file alias="iconnotifier.svg">iconnotifier.svg</file>
+ <file alias="qtg_large_device_lock.svg">qtg_large_device_lock.svg</file>
+ </qresource>
+</RCC>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/Keyguard_enabled.svg Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,1949 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="128"
+ height="128"
+ id="svg2606"
+ sodipodi:version="0.32"
+ inkscape:version="0.45.1"
+ version="1.0"
+ sodipodi:docname="image-png.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:docbase="/home/pinheiro/pics/oxygen/scalable/mimetypes"
+ inkscape:export-filename="/home/pinheiro/artwork/Oxygen/David/imagesharperflaped.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs2608">
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4273"
+ id="linearGradient6204"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.811924,0,0,0.273245,55.77949,-173.6434)"
+ x1="105.41402"
+ y1="673.69873"
+ x2="274.53336"
+ y2="691.37091" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient31860">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop31862" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop31864" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4670"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.616893,0,0,0.359632,55.77949,-173.6434)"
+ x1="322.5351"
+ y1="671.36499"
+ x2="305.54623"
+ y2="703.1059" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4668"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="388.85477"
+ y1="581.20758"
+ x2="355.6568"
+ y2="561.59204" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4666"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="391.99573"
+ y1="490.36765"
+ x2="343.76462"
+ y2="472.65836" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4664"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414913,0,0,0.534701,55.77949,-173.6434)"
+ x1="336.97562"
+ y1="514.06415"
+ x2="402.90091"
+ y2="491.13419" />
+ <linearGradient
+ id="linearGradient2797">
+ <stop
+ style="stop-color:#000000;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop2799" />
+ <stop
+ style="stop-color:#484848;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop2801" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2797"
+ id="linearGradient4662"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.470374,0,0,0.471655,55.77949,-173.6434)"
+ x1="313.85675"
+ y1="561.1123"
+ x2="355.78586"
+ y2="553.29712" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4660"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.616893,0,0,0.359632,55.77949,-173.6434)"
+ x1="306.2883"
+ y1="672.46191"
+ x2="333.49854"
+ y2="707.75031" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4658"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="391.99573"
+ y1="490.36765"
+ x2="343.76462"
+ y2="472.65836" />
+ <linearGradient
+ id="linearGradient4526">
+ <stop
+ id="stop4528"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:0.69902915;" />
+ <stop
+ id="stop4530"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4656"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="388.85477"
+ y1="581.20758"
+ x2="355.6568"
+ y2="561.59204" />
+ <linearGradient
+ id="linearGradient4255"
+ inkscape:collect="always">
+ <stop
+ id="stop4257"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop4259"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4255"
+ id="linearGradient4654"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.44753,0,0,0.49573,55.77949,-173.6434)"
+ x1="390.90793"
+ y1="442.95132"
+ x2="419.73016"
+ y2="470.11917" />
+ <linearGradient
+ id="linearGradient4516">
+ <stop
+ id="stop4518"
+ offset="0"
+ style="stop-color:#62004f;stop-opacity:1;" />
+ <stop
+ style="stop-color:#8d2778;stop-opacity:1;"
+ offset="0.14563107"
+ id="stop7294" />
+ <stop
+ id="stop4520"
+ offset="1"
+ style="stop-color:#ff00bf;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4516"
+ id="linearGradient4652"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.480452,0,0,0.461761,55.77949,-173.6434)"
+ x1="299.42841"
+ y1="480.61096"
+ x2="419.73056"
+ y2="503.82071" />
+ <linearGradient
+ id="linearGradient2373">
+ <stop
+ id="stop2375"
+ offset="0.0000000"
+ style="stop-color:#083e20;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2377"
+ offset="1.0000000"
+ style="stop-color:#245e3e;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2373"
+ id="linearGradient4650"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-0.505078,0.252536)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ id="linearGradient2367">
+ <stop
+ id="stop2369"
+ offset="0.0000000"
+ style="stop-color:#957d16;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2371"
+ offset="1.0000000"
+ style="stop-color:#927b16;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2367"
+ id="linearGradient4648"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ id="linearGradient2330">
+ <stop
+ id="stop2332"
+ offset="0.0000000"
+ style="stop-color:#54250d;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2344"
+ offset="1.0000000"
+ style="stop-color:#9f4f19;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2330"
+ id="linearGradient4646"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-4.61104,-5.494924)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ id="linearGradient2307">
+ <stop
+ id="stop2309"
+ offset="0"
+ style="stop-color:#8a1e51;stop-opacity:1;" />
+ <stop
+ id="stop2311"
+ offset="1.0000000"
+ style="stop-color:#7e1b4a;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2307"
+ id="linearGradient4644"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="285.55072"
+ y2="455.34595" />
+ <linearGradient
+ id="linearGradient4498">
+ <stop
+ id="stop4500"
+ offset="0.0000000"
+ style="stop-color:#1a3b23;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4510"
+ offset="0.34000000"
+ style="stop-color:#255431;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4508"
+ offset="0.42000002"
+ style="stop-color:#306d40;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4506"
+ offset="0.62000000"
+ style="stop-color:#58c977;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4504"
+ offset="0.63999999"
+ style="stop-color:#2f6a3f;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4502"
+ offset="1.0000000"
+ style="stop-color:#86ffa7;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4498"
+ id="linearGradient4642"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.402062,0,0,0.551792,55.77949,-173.6434)"
+ x1="410.68747"
+ y1="351.94495"
+ x2="496.01123"
+ y2="446.42474" />
+ <linearGradient
+ id="linearGradient4472">
+ <stop
+ id="stop4474"
+ offset="0.0000000"
+ style="stop-color:#6a5000;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4486"
+ offset="0.36499998"
+ style="stop-color:#b49b1d;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4484"
+ offset="0.47000000"
+ style="stop-color:#ffe63b;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4480"
+ offset="0.62000000"
+ style="stop-color:#fde55f;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4482"
+ offset="0.65999997"
+ style="stop-color:#af8800;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4476"
+ offset="1.0000000"
+ style="stop-color:#fcff96;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4472"
+ id="linearGradient4640"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.410011,0,0,0.541094,55.77949,-173.6434)"
+ x1="407.20193"
+ y1="340.1315"
+ x2="509.36542"
+ y2="443.40552" />
+ <linearGradient
+ id="linearGradient4440">
+ <stop
+ id="stop4442"
+ offset="0.0000000"
+ style="stop-color:#7c2b00;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4458"
+ offset="0.35250002"
+ style="stop-color:#a56116;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4456"
+ offset="0.42500001"
+ style="stop-color:#cf982c;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4452"
+ offset="0.61000001"
+ style="stop-color:#ffdb59;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4448"
+ offset="0.63999999"
+ style="stop-color:#d07100;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4444"
+ offset="1.0000000"
+ style="stop-color:#fff77c;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4440"
+ id="linearGradient4638"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.395673,0,0,0.560701,55.96081,-173.4701)"
+ x1="426.25494"
+ y1="315.43689"
+ x2="542.82642"
+ y2="426.81122" />
+ <linearGradient
+ id="linearGradient4402">
+ <stop
+ id="stop4404"
+ offset="0.0000000"
+ style="stop-color:#540d0d;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4462"
+ offset="0.34999999"
+ style="stop-color:#7e2316;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4460"
+ offset="0.43000001"
+ style="stop-color:#a93a1f;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4410"
+ offset="0.62000000"
+ style="stop-color:#ff6731;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4412"
+ offset="0.66000003"
+ style="stop-color:#9f2819;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4436"
+ offset="0.77000004"
+ style="stop-color:#e1734d;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4406"
+ offset="1.0000000"
+ style="stop-color:#ffb47c;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4402"
+ id="linearGradient4636"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.400366,0,0,0.554129,55.74058,-173.7136)"
+ x1="438.62411"
+ y1="302.29001"
+ x2="560.68457"
+ y2="400.81851" />
+ <linearGradient
+ id="linearGradient4352">
+ <stop
+ id="stop4354"
+ offset="0.0000000"
+ style="stop-color:#833c0b;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4356"
+ offset="1.0000000"
+ style="stop-color:#723409;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4352"
+ id="linearGradient4633"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.476543,0,0,0.46555,55.77949,-173.6434)"
+ x1="178.40228"
+ y1="433.92719"
+ x2="274.36346"
+ y2="433.92719" />
+ <linearGradient
+ id="linearGradient4392">
+ <stop
+ id="stop4394"
+ offset="0.0000000"
+ style="stop-color:#214b2c;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4396"
+ offset="1.0000000"
+ style="stop-color:#1a3b23;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4392"
+ id="linearGradient4631"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.534168,0,0,0.415327,55.82726,-173.6161)"
+ x1="170.54399"
+ y1="569.89191"
+ x2="233.7466"
+ y2="533.10059" />
+ <linearGradient
+ id="linearGradient4360">
+ <stop
+ id="stop4362"
+ offset="0"
+ style="stop-color:#83190b;stop-opacity:1;" />
+ <stop
+ id="stop4364"
+ offset="1.0000000"
+ style="stop-color:#721509;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4360"
+ id="linearGradient4629"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.465924,0,0,0.47616,55.77949,-173.6434)"
+ x1="177.6402"
+ y1="411.45197"
+ x2="275.48526"
+ y2="411.45197" />
+ <linearGradient
+ id="linearGradient4382">
+ <stop
+ id="stop4384"
+ offset="0.0000000"
+ style="stop-color:#7e5c08;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4386"
+ offset="1.0000000"
+ style="stop-color:#6e4b11;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4382"
+ id="linearGradient4627"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.484895,0,0,0.457531,55.82726,-173.6161)"
+ x1="185.36516"
+ y1="498.74353"
+ x2="246.5347"
+ y2="442.2757" />
+ <linearGradient
+ id="linearGradient4321">
+ <stop
+ id="stop4323"
+ offset="0.0000000"
+ style="stop-color:#b20033;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4337"
+ offset="0.46000001"
+ style="stop-color:#ff7cba;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4339"
+ offset="0.55000001"
+ style="stop-color:#9c225b;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4325"
+ offset="1.0000000"
+ style="stop-color:#ff7ca1;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4321"
+ id="linearGradient4625"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.310584,0,0,0.714313,55.77949,-173.6434)"
+ x1="683.10022"
+ y1="231.87573"
+ x2="720.63422"
+ y2="271.91464" />
+ <linearGradient
+ id="linearGradient4368">
+ <stop
+ id="stop4370"
+ offset="0"
+ style="stop-color:#8a1e51;stop-opacity:1;" />
+ <stop
+ id="stop4372"
+ offset="1.0000000"
+ style="stop-color:#7e1b4a;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4368"
+ id="linearGradient4623"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.441119,0,0,0.502935,55.77949,-173.6434)"
+ x1="185.72665"
+ y1="378.45386"
+ x2="266.98257"
+ y2="378.45386" />
+ <linearGradient
+ id="linearGradient4273">
+ <stop
+ id="stop4275"
+ offset="0.0000000"
+ style="stop-color:#590012;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4466"
+ offset="0.93000001"
+ style="stop-color:#a3211f;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4468"
+ offset="0.94000000"
+ style="stop-color:#650014;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4277"
+ offset="1.0000000"
+ style="stop-color:#ee6c68;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4273"
+ id="linearGradient4621"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.811924,0,0,0.273245,55.77949,-173.6434)"
+ x1="105.41402"
+ y1="673.69873"
+ x2="274.53336"
+ y2="691.37091" />
+ <linearGradient
+ id="linearGradient2441">
+ <stop
+ id="stop2443"
+ offset="0.0000000"
+ style="stop-color:#b0e9c0;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2445"
+ offset="1.0000000"
+ style="stop-color:#75df92;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2441"
+ id="linearGradient4619"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="273.20914"
+ y1="455.33145"
+ x2="276.42776"
+ y2="474.10953" />
+ <linearGradient
+ id="linearGradient2447">
+ <stop
+ id="stop2449"
+ offset="0.0000000"
+ style="stop-color:#ffd625;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2451"
+ offset="1.0000000"
+ style="stop-color:#fff0ab;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2447"
+ id="linearGradient4617"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="269.87866"
+ y1="468.31586"
+ x2="274.6358"
+ y2="450.71976" />
+ <linearGradient
+ id="linearGradient2453">
+ <stop
+ id="stop2455"
+ offset="0.0000000"
+ style="stop-color:#f6b94e;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2457"
+ offset="1.0000000"
+ style="stop-color:#ffc340;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2453"
+ id="linearGradient4615"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="262.95721"
+ y1="463.82385"
+ x2="271.31601"
+ y2="446.71695" />
+ <linearGradient
+ id="linearGradient2463">
+ <stop
+ id="stop2465"
+ offset="0.0000000"
+ style="stop-color:#fda5cf;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2467"
+ offset="1.0000000"
+ style="stop-color:#ce2c79;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2463"
+ id="linearGradient4613"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="258.13016"
+ y1="442.66943"
+ x2="247.02499"
+ y2="456.03308" />
+ <linearGradient
+ id="linearGradient2469">
+ <stop
+ id="stop2471"
+ offset="0.0000000"
+ style="stop-color:#f6754e;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2473"
+ offset="1.0000000"
+ style="stop-color:#ffa879;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2469"
+ id="linearGradient4611"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-12.28101,22.44028)"
+ x1="257.99484"
+ y1="431.38104"
+ x2="274.71591"
+ y2="420.00296" />
+ <linearGradient
+ id="linearGradient2785">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.0000000;"
+ offset="0.0000000"
+ id="stop2787" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.49803922;"
+ offset="0.36000001"
+ id="stop2793" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop2789" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2785"
+ id="linearGradient4609"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.453732,0,0,0.488954,57.57699,-173.4241)"
+ x1="277.5726"
+ y1="521.61127"
+ x2="316.56882"
+ y2="527.43481" />
+ <linearGradient
+ id="linearGradient2713">
+ <stop
+ id="stop2715"
+ offset="0.0000000"
+ style="stop-color:#b20033;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2721"
+ offset="1.0000000"
+ style="stop-color:#ffe77c;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2713"
+ id="linearGradient4607"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.625932,1.597617)"
+ x1="542.85187"
+ y1="330.59"
+ x2="554.73236"
+ y2="359.37115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4605"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4603"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4601"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4599"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4597"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ id="linearGradient2823">
+ <stop
+ style="stop-color:#4d3719;stop-opacity:1;"
+ offset="0"
+ id="stop2825" />
+ <stop
+ style="stop-color:#ddae66;stop-opacity:1;"
+ offset="0.69999999"
+ id="stop2866" />
+ <stop
+ style="stop-color:#b2731c;stop-opacity:1;"
+ offset="1"
+ id="stop2827" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4595"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="261.13171"
+ y1="710.77112"
+ x2="267.06235"
+ y2="710.77136" />
+ <linearGradient
+ id="linearGradient3185">
+ <stop
+ id="stop3187"
+ offset="0"
+ style="stop-color:#50a3f7;stop-opacity:1;" />
+ <stop
+ id="stop3189"
+ offset="1"
+ style="stop-color:#002ea8;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3185"
+ id="linearGradient5341"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.3457951,0,0,2.1229785,538.33426,-11.05243)"
+ x1="-263.28992"
+ y1="56.713814"
+ x2="-263.14236"
+ y2="8.8705559" />
+ <linearGradient
+ id="linearGradient10207">
+ <stop
+ style="stop-color:#a2a2a2;stop-opacity:1;"
+ offset="0"
+ id="stop10209" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop10211" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_12_"
+ gradientUnits="userSpaceOnUse"
+ x1="96"
+ y1="104"
+ x2="88.000198"
+ y2="96.000198">
+ <stop
+ offset="0"
+ style="stop-color:#888A85"
+ id="stop83" />
+ <stop
+ offset="0.0072"
+ style="stop-color:#8C8E89"
+ id="stop85" />
+ <stop
+ offset="0.0673"
+ style="stop-color:#ABACA9"
+ id="stop87" />
+ <stop
+ offset="0.1347"
+ style="stop-color:#C5C6C4"
+ id="stop89" />
+ <stop
+ offset="0.2652576"
+ style="stop-color:#DBDBDA"
+ id="stop91" />
+ <stop
+ offset="0.37646064"
+ style="stop-color:#EBEBEB"
+ id="stop93" />
+ <stop
+ offset="0.48740286"
+ style="stop-color:#F7F7F6"
+ id="stop95" />
+ <stop
+ offset="0.6324091"
+ style="stop-color:#FDFDFD"
+ id="stop97" />
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop99" />
+ </linearGradient>
+ <radialGradient
+ id="XMLID_8_"
+ cx="102"
+ cy="112.3047"
+ r="139.55859"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#b7b8b9;stop-opacity:1;"
+ id="stop41" />
+ <stop
+ offset="0.18851049"
+ style="stop-color:#ECECEC"
+ id="stop47" />
+ <stop
+ offset="0.25718147"
+ style="stop-color:#FAFAFA"
+ id="stop49" />
+ <stop
+ offset="0.30111277"
+ style="stop-color:#FFFFFF"
+ id="stop51" />
+ <stop
+ offset="0.5313"
+ style="stop-color:#FAFAFA"
+ id="stop53" />
+ <stop
+ offset="0.8449"
+ style="stop-color:#EBECEC"
+ id="stop55" />
+ <stop
+ offset="1"
+ style="stop-color:#E1E2E3"
+ id="stop57" />
+ </radialGradient>
+ <filter
+ inkscape:collect="always"
+ x="-0.19200002"
+ width="1.3839999"
+ y="-0.19199999"
+ height="1.3839999"
+ id="filter6697">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.9447689"
+ id="feGaussianBlur6699" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath7084">
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 72,88 L 40,120 L 32,120 L 32,80 L 72,80 L 72,88 z"
+ id="path7086" />
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_8_"
+ id="radialGradient9437"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.9996653,-7.999998,16.003016)"
+ cx="114"
+ cy="95.028786"
+ r="139.55859"
+ fx="114"
+ fy="95.028786" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10207"
+ id="linearGradient10213"
+ x1="98.617439"
+ y1="106.41443"
+ x2="91.228737"
+ y2="99.254974"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter2770">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="2.0786429"
+ id="feGaussianBlur2772" />
+ </filter>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3185"
+ id="linearGradient4882"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.3457951,0,0,2.1229785,538.33426,-11.05243)"
+ x1="-263.14236"
+ y1="72.386543"
+ x2="-263.14236"
+ y2="-21.190172" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4884"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="261.13171"
+ y1="710.77112"
+ x2="267.06235"
+ y2="710.77136" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4886"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4888"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4890"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4892"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4894"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2713"
+ id="linearGradient4896"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.625932,1.597617)"
+ x1="542.85187"
+ y1="330.59"
+ x2="554.73236"
+ y2="359.37115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2785"
+ id="linearGradient4898"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.453732,0,0,0.488954,57.57699,-173.4241)"
+ x1="277.5726"
+ y1="521.61127"
+ x2="316.56882"
+ y2="527.43481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2469"
+ id="linearGradient4900"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-12.28101,22.44028)"
+ x1="257.99484"
+ y1="431.38104"
+ x2="274.71591"
+ y2="420.00296" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2463"
+ id="linearGradient4902"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="258.13016"
+ y1="442.66943"
+ x2="247.02499"
+ y2="456.03308" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2453"
+ id="linearGradient4904"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="262.95721"
+ y1="463.82385"
+ x2="271.31601"
+ y2="446.71695" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2447"
+ id="linearGradient4906"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="269.87866"
+ y1="468.31586"
+ x2="274.6358"
+ y2="450.71976" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2441"
+ id="linearGradient4908"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="273.20914"
+ y1="455.33145"
+ x2="276.42776"
+ y2="474.10953" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4273"
+ id="linearGradient4910"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.811924,0,0,0.273245,55.77949,-173.6434)"
+ x1="105.41402"
+ y1="673.69873"
+ x2="274.53336"
+ y2="691.37091" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4368"
+ id="linearGradient4912"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.441119,0,0,0.502935,55.77949,-173.6434)"
+ x1="185.72665"
+ y1="378.45386"
+ x2="266.98257"
+ y2="378.45386" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4321"
+ id="linearGradient4914"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.310584,0,0,0.714313,55.77949,-173.6434)"
+ x1="683.10022"
+ y1="231.87573"
+ x2="720.63422"
+ y2="271.91464" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4382"
+ id="linearGradient4916"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.484895,0,0,0.457531,55.82726,-173.6161)"
+ x1="185.36516"
+ y1="498.74353"
+ x2="246.5347"
+ y2="442.2757" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4360"
+ id="linearGradient4918"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.465924,0,0,0.47616,55.77949,-173.6434)"
+ x1="177.6402"
+ y1="411.45197"
+ x2="275.48526"
+ y2="411.45197" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4392"
+ id="linearGradient4920"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.534168,0,0,0.415327,55.82726,-173.6161)"
+ x1="170.54399"
+ y1="569.89191"
+ x2="233.7466"
+ y2="533.10059" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4352"
+ id="linearGradient4922"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.476543,0,0,0.46555,55.77949,-173.6434)"
+ x1="178.40228"
+ y1="433.92719"
+ x2="274.36346"
+ y2="433.92719" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4402"
+ id="linearGradient4924"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.400366,0,0,0.554129,55.74058,-173.7136)"
+ x1="438.62411"
+ y1="302.29001"
+ x2="560.68457"
+ y2="400.81851" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4440"
+ id="linearGradient4926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.395673,0,0,0.560701,55.96081,-173.4701)"
+ x1="426.25494"
+ y1="315.43689"
+ x2="542.82642"
+ y2="426.81122" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4472"
+ id="linearGradient4928"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.410011,0,0,0.541094,55.77949,-173.6434)"
+ x1="407.20193"
+ y1="340.1315"
+ x2="509.36542"
+ y2="443.40552" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4498"
+ id="linearGradient4930"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.402062,0,0,0.551792,55.77949,-173.6434)"
+ x1="410.68747"
+ y1="351.94495"
+ x2="496.01123"
+ y2="446.42474" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2307"
+ id="linearGradient4932"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="285.55072"
+ y2="455.34595" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2330"
+ id="linearGradient4934"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-4.61104,-5.494924)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2367"
+ id="linearGradient4936"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2373"
+ id="linearGradient4938"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-0.505078,0.252536)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4516"
+ id="linearGradient4940"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.480452,0,0,0.461761,55.77949,-173.6434)"
+ x1="299.42841"
+ y1="480.61096"
+ x2="419.73056"
+ y2="503.82071" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4255"
+ id="linearGradient4942"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.44753,0,0,0.49573,55.77949,-173.6434)"
+ x1="390.90793"
+ y1="442.95132"
+ x2="419.73016"
+ y2="470.11917" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4944"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="388.85477"
+ y1="581.20758"
+ x2="355.6568"
+ y2="561.59204" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4946"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="391.99573"
+ y1="490.36765"
+ x2="343.76462"
+ y2="472.65836" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4948"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.616893,0,0,0.359632,55.77949,-173.6434)"
+ x1="306.2883"
+ y1="672.46191"
+ x2="333.49854"
+ y2="707.75031" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2797"
+ id="linearGradient4950"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.470374,0,0,0.471655,55.77949,-173.6434)"
+ x1="313.85675"
+ y1="561.1123"
+ x2="355.78586"
+ y2="553.29712" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4952"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414913,0,0,0.534701,55.77949,-173.6434)"
+ x1="336.97562"
+ y1="514.06415"
+ x2="402.90091"
+ y2="491.13419" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4954"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="391.99573"
+ y1="490.36765"
+ x2="343.76462"
+ y2="472.65836" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4956"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="388.85477"
+ y1="581.20758"
+ x2="355.6568"
+ y2="561.59204" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4958"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.616893,0,0,0.359632,55.77949,-173.6434)"
+ x1="322.5351"
+ y1="671.36499"
+ x2="305.54623"
+ y2="703.1059" />
+ <linearGradient
+ y2="154.50412"
+ x2="210.98608"
+ y1="154.50412"
+ x1="155.21127"
+ gradientTransform="matrix(0.9295551,0,0,0.9288601,-84.40008,12.847771)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient9061"
+ xlink:href="#linearGradient6001"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="167.16171"
+ x2="83.742836"
+ y1="154.27817"
+ x1="82.802177"
+ gradientTransform="matrix(0.6260112,0,0,0.2001745,68.175377,138.95724)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient8903"
+ xlink:href="#linearGradient3426"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient3134">
+ <stop
+ id="stop3136"
+ offset="0"
+ style="stop-color:#ffd500;stop-opacity:1;" />
+ <stop
+ id="stop3138"
+ offset="1"
+ style="stop-color:#ff7e00;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3146">
+ <stop
+ id="stop3148"
+ offset="0"
+ style="stop-color:#ff7e00;stop-opacity:1;" />
+ <stop
+ id="stop3150"
+ offset="1"
+ style="stop-color:#ffd500;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3158">
+ <stop
+ id="stop3160"
+ offset="0"
+ style="stop-color:#fff8de;stop-opacity:1;" />
+ <stop
+ id="stop3162"
+ offset="1"
+ style="stop-color:#ffff00;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3426"
+ inkscape:collect="always">
+ <stop
+ id="stop3428"
+ offset="0"
+ style="stop-color:#555555;stop-opacity:1;" />
+ <stop
+ id="stop3430"
+ offset="1"
+ style="stop-color:#555555;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6001"
+ inkscape:collect="always">
+ <stop
+ id="stop6003"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop6005"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7545">
+ <stop
+ id="stop7547"
+ offset="0"
+ style="stop-color:#323232;stop-opacity:1;" />
+ <stop
+ id="stop7549"
+ offset="1"
+ style="stop-color:#101010;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4318">
+ <path
+ style="opacity:0.48888891;fill:#f9f2ea;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 1.954599,2.1834159 L 1.954599,187.15135 L 256.71404,187.15135 L 256.71404,2.1834159 L 1.954599,2.1834159 z "
+ id="path4320" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath31854">
+ <path
+ style="opacity:0.48888891;fill:#f9f2ea;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 12,28 L 12,108 L 92.5,108 L 116,82.75 L 116,28 L 12,28 z "
+ id="path31856"
+ sodipodi:nodetypes="cccccc" />
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient31860"
+ id="radialGradient31866"
+ cx="101.5"
+ cy="92.997192"
+ fx="101.5"
+ fy="92.997192"
+ r="21.5"
+ gradientTransform="matrix(0.7247027,0.6890616,-0.6744186,0.7093023,90.661709,-42.65288)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6001"
+ id="linearGradient8360"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.4103611,0,0,0.4330773,-28.25306,27.952127)"
+ x1="121.40629"
+ y1="177.05572"
+ x2="177.1811"
+ y2="177.05572" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="-126.82503"
+ inkscape:cy="44.445553"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="128px"
+ height="128px"
+ gridspacingx="4px"
+ gridspacingy="4px"
+ gridempspacing="2"
+ showgrid="true"
+ inkscape:grid-points="true"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1016"
+ inkscape:window-height="692"
+ inkscape:window-x="351"
+ inkscape:window-y="46"
+ showborder="true">
+ <sodipodi:guide
+ orientation="horizontal"
+ position="40.875"
+ id="guide5004" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2611">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Livello 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ style="opacity:0.5;fill:#000000;fill-opacity:1;filter:url(#filter2770)"
+ d="M 16,8 L 16,96.626087 C 16,96.626087 94.51625,96.626087 94.51625,96.626087 L 94.5475,96.626087 C 94.547503,96.626087 106.45375,86.719837 111.95375,81.219837 C 117.45375,75.719837 127.36,63.813587 127.36,63.813587 L 127.36,63.782337 L 127.36,8 L 16,8 z "
+ id="path7865"
+ sodipodi:nodetypes="csccscccc"
+ transform="matrix(1.0416667,0,0,1.0267857,-10.666667,14.785711)" />
+ <path
+ style="fill:#ffffff;fill-opacity:1"
+ d="M 8.000001,24 L 8,112 C 8,112 87.146418,112 87.146418,112 L 120,79.14642 L 120,24 L 8.000001,24 z "
+ id="path34"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:url(#radialGradient9437);fill-opacity:1"
+ d="M 10.000002,25.000003 C 9.449002,25.000003 9.000002,25.448853 9.000002,25.999668 L 9.000002,109.96352 C 9.000002,110.51533 9.449002,110.96318 10.000002,110.96318 L 85.171999,110.96318 C 85.434999,110.96318 87.934679,111.08131 88.12068,110.89438 L 118.707,80.094202 C 118.894,79.907264 119,77.40942 119,77.146508 L 119,25.999668 C 119,25.448853 118.552,25.000003 118,25.000003 L 10.000002,25.000003 z "
+ id="path59"
+ sodipodi:nodetypes="ccccccccccc" />
+ <g
+ id="g4805"
+ transform="matrix(0.9166667,0,0,0.9166667,-112.66667,13.33333)">
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="rect3183"
+ d="M 136,16 L 249.45454,16 L 249.45454,78.40711 L 223.14295,103.27273 L 136,103.27273 L 136,16 z "
+ style="fill:url(#linearGradient4882);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:4;stroke-opacity:1" />
+ <g
+ transform="matrix(0.5620693,0,0,0.6015749,58.600837,15.161068)"
+ id="g4460">
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5138334px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 187.22261,104.20627 C 187.22261,104.20627 187.22261,102.23277 187.22261,104.20627 z "
+ id="path4462" />
+ <path
+ style="fill:#422f17;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5138334px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 183.201,113.07522 C 193.37175,108.10319 193.63086,108.52844 200.46351,113.69314 L 200.29499,105.21496 C 200.35117,105.10532 201.41844,103.68002 201.41844,105.21496 C 201.41844,106.7499 201.64313,115.74027 201.64313,115.74027 C 201.64313,115.74027 201.13758,128.18425 199.34006,129.171 C 197.99193,129.60955 189.06054,134.37883 189.06054,134.37883 C 189.06054,134.37883 187.26303,135.25594 185.91489,134.37883 C 184.56675,133.50173 176.92733,128.0198 176.92733,128.0198 C 176.92733,128.0198 175.80388,126.92341 176.47795,125.60775 C 177.15201,124.29208 186.54379,99.322577 188.7681,101.64836"
+ id="path4464"
+ sodipodi:nodetypes="ccccccccccz" />
+ <g
+ id="g4466"
+ style="fill:url(#linearGradient8360);fill-opacity:1"
+ transform="matrix(0.476791,0,0,0.465307,56.04458,-173.9504)">
+ <path
+ style="fill:url(#linearGradient4886);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 263.1947,617.63145 L 282.04481,607.26389 C 282.04481,607.26389 286.52172,604.90763 291.23424,608.2064 C 295.94677,611.50517 305.37183,619.28084 305.37183,619.28084 L 306.19652,623.28649 L 290.0847,610.59125 C 289.08502,610.42464 286.38369,608.94186 283.45857,609.85578 C 280.86668,611.26954 261.20025,622.17737 261.20025,622.17737 L 263.1947,617.63145 z "
+ id="path4468"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient4888);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 260.84963,623.11423 L 282.16544,611.73514 C 282.16544,611.73514 286.1711,608.90763 290.88362,612.2064 C 295.59615,615.50517 306.90623,624.6946 305.96372,624.22335 L 305.6995,630.43604 L 287.34923,616.32704 C 287.34923,616.32704 283.81483,614.67765 281.22294,616.09141 C 278.63105,617.50517 258.13155,628.57961 258.13155,628.57961 L 260.84963,623.11423 z "
+ id="path4471"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient4890);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 257.89592,629.40713 L 280.0448,617.86143 C 280.0448,617.86143 284.05046,615.03392 288.76298,618.33269 C 293.47551,621.63146 306.35759,631.99903 305.41508,631.52778 L 304.9236,637.22041 L 285.22859,622.45333 C 285.22859,622.45333 281.69419,620.80394 279.1023,622.2177 C 276.51041,623.63146 256.01091,634.7059 256.01091,634.7059 L 257.89592,629.40713 z "
+ id="path4473"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient4892);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 255.53966,635.29779 L 277.68854,623.75209 C 277.68854,623.75209 281.6942,620.92458 286.40672,624.22335 C 291.11925,627.52212 305.67931,638.38115 304.7368,637.9099 L 303.84308,644.36659 L 282.87233,628.34399 C 282.87233,628.34399 279.33793,626.6946 276.74604,628.10836 C 274.15415,629.52212 253.65465,640.59656 253.65465,640.59656 L 255.53966,635.29779 z "
+ id="path4475"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient4894);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 253.29839,641.66534 L 275.44727,629.41277 C 275.44727,629.41277 279.92418,626.22344 284.6367,630.35528 C 289.34923,633.65405 303.72244,644.96412 303.72244,644.96412 C 303.80098,647.32038 302.70139,649.79446 301.13055,651.32603 C 301.44472,649.51956 304.11515,648.41997 300.42367,645.55318 L 282.32022,632.57352 C 281.32055,632.07368 278.78582,630.92413 276.19393,632.33789 C 273.60204,633.75165 253.76964,644.49286 253.76964,644.49286 L 253.29839,641.66534 z "
+ id="path4477"
+ sodipodi:nodetypes="cccccccccc" />
+ </g>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.5138334px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.55940594"
+ d="M 202.05456,103.14424 C 202.05456,103.14424 216.03593,126.86726 225.09204,93.530989"
+ id="path4479"
+ sodipodi:nodetypes="cc" />
+ <g
+ id="g4481"
+ transform="matrix(0.476791,0,0,0.465307,55.77949,-173.6434)">
+ <path
+ style="fill:url(#linearGradient4896);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 338.22446,521.19983 C 338.22446,521.19983 377.21191,565.18567 333.22607,578.18149 C 329.89381,579.18117 338.22446,521.19983 338.22446,521.19983 z "
+ id="path4483"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:#0b6c46;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 275.0748,560.94594 L 275.21707,570.0003 C 283.27792,574.86011 293.10363,578.29621 303.96622,579.55254 C 314.81983,580.80783 325.18449,579.70093 334.1368,576.81477 L 333.99453,567.76041 C 325.93737,562.90699 284.03215,558.05439 275.0748,560.94594 z "
+ id="path4485"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#bea613;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 275.68002,559.47428 L 275.57592,566.89757 C 283.50748,571.92005 293.36967,575.46859 304.29245,576.73188 C 315.20005,577.99342 325.63274,576.80211 334.49332,573.73219 L 334.60208,566.26861 C 326.67617,561.25722 284.54863,556.39486 275.68002,559.47428 z "
+ id="path4487"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#b37711;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 276.88308,547.60287 L 276.00468,563.19042 C 283.77731,568.47998 293.58498,572.288 304.65829,573.56871 C 315.7236,574.84849 326.15339,573.37529 334.92441,570.00489 L 335.80281,554.41734 C 328.03268,549.13385 285.65791,544.22713 276.88308,547.60287 z "
+ id="path4489"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#ac182a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 277.50759,547.18114 L 276.67811,557.36777 C 284.00502,563.19427 293.8856,567.44309 305.21521,568.75344 C 316.54212,570.06348 327.13535,568.18047 335.59784,564.18225 L 336.42732,553.99561 C 329.10088,548.17129 285.97104,543.1809 277.50759,547.18114 z "
+ id="path4491"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#be2873;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 278.81487,540.62031 L 277.33523,551.68616 C 284.05502,558.16146 294.04935,562.94986 305.73019,564.30083 C 317.38774,565.64911 328.23427,563.29207 336.2503,558.54093 L 337.73926,547.39449 C 331.01935,540.93903 286.83532,535.84983 278.81487,540.62031 z "
+ id="path4493"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#ab0d2d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 279.47201,530.46825 L 278.30926,543.26448 C 283.43866,551.13384 293.77039,557.26207 306.37566,558.71996 C 318.97018,560.1766 330.43404,556.57932 337.22666,550.0991 L 338.39407,537.26258 C 333.25996,529.40295 286.26227,523.97748 279.47201,530.46825 z "
+ id="path4495"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#8d0b1e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 280.98901,520.09478 L 279.05493,536.81726 C 283.24905,544.62442 293.92558,550.97115 307.09569,552.49436 C 320.24075,554.01468 332.09271,550.29201 337.97,543.67203 L 339.9134,526.86896 C 335.70236,519.08219 286.85447,513.45108 280.98901,520.09478 z "
+ id="path4497"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#790a59;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 281.88381,512.35812 L 279.94973,529.0806 C 284.14385,536.88776 294.82038,543.23448 307.9905,544.7577 C 321.13555,546.27801 332.98752,542.55535 338.8648,535.93536 L 340.8082,519.1323 C 336.59716,511.34553 287.74927,505.71442 281.88381,512.35812 z "
+ id="path4499"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#002c91;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 282.92775,503.33201 L 280.99367,520.05449 C 285.18778,527.86165 295.86432,534.20837 309.03443,535.73159 C 322.17949,537.25191 334.03145,533.52924 339.90874,526.90926 L 341.85214,510.10619 C 337.6411,502.31942 288.79321,496.68831 282.92775,503.33201 z "
+ id="path4501"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#0b6c46;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 248.40625,547.75 L 253.90625,562.53125 L 267.34375,573.6875 C 270.1161,572.87512 272.81821,571.85611 275.375,570.46875 L 277.1875,555.125 C 273.53213,551.65247 260.03014,548.67004 248.40625,547.75 z "
+ id="path4503" />
+ <path
+ style="fill:#bea613;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 247.0625,544.125 L 253.90625,562.53125 L 264.21875,571.09375 C 268.30846,570.26259 272.21002,568.75831 275.84375,566.65625 L 277.4375,551.75 C 273.68372,547.98759 259.044,544.83986 247.0625,544.125 z "
+ id="path4505" />
+ <path
+ style="fill:#9f690f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 247.5,545.3125 L 253.90625,562.53125 L 260.09375,567.65625 C 265.91841,567.12148 271.4714,565.18231 276.4375,562.03125 L 277.25,553.15625 C 273.64896,549.24433 259.39196,546.0513 247.5,545.3125 z "
+ id="path4507" />
+ <path
+ style="fill:#a01728;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 242.34375,533.09375 C 238.15485,533.3011 234.78501,534.0274 233.0625,535.34375 L 232.8125,537.59375 L 243.25,533.875 L 253.5625,561.59375 C 262.23387,562.6764 270.53733,560.01218 277.34375,554.8125 L 278.75,541.53125 C 274.73183,536.34031 254.91044,532.4717 242.34375,533.09375 z "
+ id="path4509" />
+ <path
+ style="fill:#ae055a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 233.90026,527.51949 L 232.5274,541.56434 C 237.36729,549.31327 244.88205,554.85296 253.9423,556.07987 C 262.9845,557.30434 271.63361,553.97964 278.22229,547.80305 L 279.60771,533.65824 C 274.76644,525.93383 240.49366,521.31884 233.90026,527.51949 z "
+ id="path4511"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#9e0c2a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 235.3218,518.43899 L 233.84056,531.11784 C 237.34375,540.65021 245.03521,547.83318 254.81251,549.15719 C 264.58147,550.48008 273.79512,545.59896 279.53859,537.33156 L 281.02611,524.60272 C 277.51859,515.08257 241.06411,510.15862 235.3218,518.43899 z "
+ id="path4513"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#720818;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 237.45332,502.37747 L 234.84585,523.12052 C 237.62058,532.61147 245.56782,540.05144 255.78324,541.43478 C 265.97922,542.81549 275.50503,537.76468 280.54074,529.35923 L 283.16077,508.51621 C 280.37145,499.05111 242.48132,493.94315 237.45332,502.37747 z "
+ id="path4515"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#67094d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 238.65967,492.78069 L 236.0522,513.52374 C 238.82693,523.01468 246.77417,530.45465 256.98959,531.838 C 267.18557,533.21871 276.71138,528.1679 281.74708,519.76244 L 284.36712,498.91943 C 281.5778,489.45433 243.68766,484.34636 238.65967,492.78069 z "
+ id="path4517"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#0035a8;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 240.06707,481.58444 L 237.4596,502.32749 C 240.23433,511.81844 248.18158,519.25841 258.397,520.64175 C 268.59297,522.02246 278.11878,516.97165 283.15449,508.5662 L 285.77453,487.72318 C 282.98521,478.25808 245.09507,473.15011 240.06707,481.58444 z "
+ id="path4519"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#00a867;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 240.87131,475.18658 L 238.26383,495.92963 C 241.03856,505.42058 248.31935,510.86119 258.53477,512.24454 C 268.73075,513.62525 278.92301,510.5738 283.95872,502.16834 L 286.57876,481.32533 C 283.78944,471.86023 245.8993,466.75226 240.87131,475.18658 z "
+ id="path4521"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#006145;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 284.92775,491.33201 L 282.99367,508.05449 C 287.18778,515.86165 297.86432,522.20837 311.03443,523.73159 C 324.17949,525.25191 336.03145,521.52924 341.90874,514.90926 L 343.85214,498.10619 C 339.6411,490.31942 290.79321,484.68831 284.92775,491.33201 z "
+ id="path4523"
+ sodipodi:nodetypes="cccccc" />
+ </g>
+ <path
+ style="fill:url(#linearGradient4898);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 190.03122,64.297807 C 190.03122,64.297807 182.72882,69.231546 180.36959,90.17252 C 184.97572,95.764091 211.15199,97.518308 211.15199,97.518308 C 211.15199,97.518308 205.42243,73.836368 208.90511,64.736364"
+ id="path4525"
+ sodipodi:nodetypes="cccc" />
+ <g
+ id="g4527"
+ transform="matrix(-0.774175,-0.401016,-0.348567,0.890665,597.6601,-302.2593)">
+ <path
+ style="fill:url(#linearGradient4900);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 207.7583,506.50835 C 206.40141,508.14027 202.6659,520.80791 217.80808,536.11211 C 209.99845,521.01422 210.25164,515.35549 212.77702,513.84026 C 211.26179,512.57757 211.79891,504.74058 207.7583,506.50835 z "
+ id="path4529"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient4902);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 210.95084,511.50794 C 210.95084,511.50794 205.53158,526.18807 221.81423,540.68643 C 214.0046,525.58854 214.65742,520.7694 217.1828,519.25417 C 215.66757,517.99148 214.99145,509.74017 210.95084,511.50794 z "
+ id="path4531"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient4904);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 215.63896,514.69258 C 214.26567,516.28385 212.37855,522.69625 221.02957,539.78214 C 224.42558,543.33631 225.80981,544.21794 228.40596,546.12917 C 225.88057,540.57332 225.18702,531.44512 225.18702,531.44512 C 225.18702,531.44511 222.30922,521.66678 215.63896,514.69258 z "
+ id="path4533"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient4906);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.25,520.1875 C 218.87671,521.77877 217.69273,527.32036 226.34375,544.40625 C 226.73044,544.6265 227.16007,545.21026 234.57596,551.27054 C 232.05057,545.71469 229.79806,536.94004 229.79806,536.94004 C 229.79806,536.94003 226.92026,527.1617 220.25,520.1875 z "
+ id="path4535"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient4908);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 226.43242,527.87754 C 225.19989,531.53305 222.40285,535.39769 233.4082,550.0827 C 236.39784,552.68732 237.75066,552.31339 241.50027,554.94898 C 238.97488,549.39313 233.83867,536.94004 233.83867,536.94004 C 233.83867,536.94003 230.56317,532.74151 226.43242,527.87754 z "
+ id="path4537"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+ <path
+ style="fill:url(#linearGradient6204);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 147.23396,1.5882927 C 147.13465,2.646801 146.98467,5.018187 147.77035,8.3934076 C 146.71944,8.7518336 142.71094,10.274486 139.09871,21.320218 C 141.74768,16.6199 141.9984,15.68199 148.50043,10.981678 C 148.72205,9.0350846 149.12685,6.368708 151.61447,1.5882927 L 147.23396,1.5882927 z M 266.35721,1.5882927 C 267.93182,4.3792274 271.22943,10.952536 270.11194,15.67837 C 269.87112,16.383427 269.32225,18.148541 269.32225,18.324804 C 271.12838,19.441122 277.62699,22.665569 280.03515,37.824075 C 280.45658,31.654914 282.6271,21.609411 270.82712,13.0901 C 272.37122,8.9999353 272.85313,6.0215192 272.37669,1.5882927 L 266.35721,1.5882927 z "
+ id="path4539" />
+ <path
+ style="fill:url(#linearGradient4912);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 151.33138,1.5882927 C 150.48086,3.2294259 148.16646,7.8677178 148.47063,10.923514 C 143.724,13.810912 141.42889,16.685518 139.20301,21.291136 L 139.21791,21.203891 C 139.21791,21.203896 136.26512,28.807398 138.60702,37.126115 C 138.99068,33.147428 137.3331,25.956979 148.85802,14.558725 C 148.80375,14.543877 150.01326,17.8718 151.25688,20.49139 C 151.54908,19.347051 149.72571,9.4677224 164.91992,1.5882927 L 151.33138,1.5882927 z "
+ id="path4541" />
+ <path
+ style="fill:url(#linearGradient4914);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 257.78987,1.5882927 C 267.38505,10.987587 266.20821,24.155682 266.20821,24.155682 C 266.20821,24.155682 267.57261,21.334763 267.74288,21.334758 C 281.53576,34.296881 273.18127,52.408537 273.18128,52.408542 C 273.18128,52.408542 277.96196,48.41812 280.00535,38.114892 C 279.32422,24.654226 271.48484,19.4673 269.44145,18.179395 C 269.44145,18.179395 270.46314,16.357639 270.63343,13.366376 C 269.43017,7.1595205 267.60358,3.4581243 266.49131,1.5882927 L 257.78987,1.5882927 z "
+ id="path4543" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path4545"
+ d="M 153.27873,24.934713 C 153.27873,24.934713 140.44556,34.402142 145.39585,50.498089 C 147.26897,55.31734 151.52603,59.471866 151.52603,59.471866 C 151.52603,59.471866 143.35247,47.340646 155.95337,32.051988 C 155.95337,32.051988 158.67789,38.865409 164.12693,48.836277 C 166.68117,44.183203 172.98162,38.865414 185.58253,31.553445 C 198.18343,24.241475 184.56083,18.258958 184.56083,18.258958 C 184.56083,18.258958 159.01846,24.687886 159.5293,40.028681 C 158.50761,38.865414 154.07171,26.714033 153.27873,24.934713 z "
+ style="fill:url(#linearGradient4916);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient4918);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 164.57723,1.5882927 C 158.84878,4.5412985 150.6096,10.478388 151.22708,20.229654 C 151.14194,20.229659 148.91762,14.427858 148.91762,14.427858 C 148.91762,14.427858 137.51508,22.973719 138.62192,36.849839 C 139.47333,41.419819 142.00415,45.574345 142.00415,45.574345 C 142.00415,45.574345 137.00423,29.785064 150.54169,19.066387 C 151.91856,23.362762 154.14866,27.917015 155.7268,31.382482 C 155.64166,30.883942 151.04828,16.316092 183.82766,6.0959543 C 183.96763,4.234824 183.90823,2.8077135 183.76807,1.5882927 L 164.57723,1.5882927 z "
+ id="path4547" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path4549"
+ d="M 151.52603,59.638046 C 151.52603,59.638046 155.00221,63.86141 156.19419,64.692318 C 156.96046,65.523221 150.06402,54.085235 160.11069,40.624567 C 161.91681,46.147436 169.98707,60.322932 169.98707,60.322932 C 169.98707,60.322932 176.55756,50.498089 186.77451,46.509742 C 191.37213,33.54762 187.28535,34.877067 185.41224,31.553445 C 183.36885,31.885804 164.12693,45.014111 163.95665,48.503913 C 163.61608,48.420823 157.18062,34.137601 156.07378,32.060336 C 155.05208,31.063253 143.69303,46.675922 151.52603,59.638046 z "
+ style="fill:url(#linearGradient4920);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path4551"
+ d="M 184.25763,6.2665591 C 183.30647,5.2576619 150.9578,16.177952 155.56502,30.778266 C 151.47825,22.30303 150.71197,19.145591 150.71197,19.145591 C 150.47116,18.205527 137.51508,28.202457 141.94243,45.48529 C 143.04926,47.811825 144.6755,50.165138 145.59923,50.960911 C 144.74781,47.969652 142.45327,34.018795 153.09593,25.128109 C 156.07587,32.606258 157.72277,35.774491 159.6372,39.737785 C 160.48861,38.906882 157.43814,27.537734 185.0239,18.065414 C 188.25927,9.8394515 184.25763,6.2665591 184.25763,6.2665591 z "
+ style="fill:url(#linearGradient4922);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient4924);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 241.40018,1.5882927 C 263.39065,16.032799 261.37514,29.427117 261.6191,32.284014 C 263.40706,30.123659 264.89064,27.475154 265.65692,26.394972 C 276.12929,39.440189 270.04808,56.04583 269.36695,56.959828 C 270.04808,56.959828 272.50441,53.646586 273.27068,52.234051 C 282.55107,30.713603 269.19028,20.896463 267.74288,21.145728 C 266.97661,22.059725 266.46151,23.563663 266.46151,23.646753 C 266.51992,10.990844 261.44708,4.4820603 258.22196,1.5882927 L 241.40018,1.5882927 z "
+ id="path4553" />
+ <path
+ style="fill:url(#linearGradient4926);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 224.71249,1.5882927 C 222.34772,2.9998434 222.30409,5.0218024 229.22711,7.9717232 C 246.68625,17.137326 254.14503,30.950826 256.55319,39.176374 C 257.03482,38.588835 261.42603,32.608072 261.87239,32.109524 C 271.24429,49.356086 263.52626,62.589205 262.33428,63.503207 C 262.33428,63.503207 267.99535,60.040574 269.56065,57.337889 C 276.96574,38.125366 265.59733,26.191405 265.59732,26.1914 C 265.59732,26.1914 265.34932,27.249262 261.85749,31.949574 C 262.54736,16.549025 249.498,6.2501757 241.98127,1.5882927 L 224.71249,1.5882927 z "
+ id="path4555" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path4557"
+ d="M 229.8082,7.9283659 C 229.8082,7.9283659 253.00764,20.094222 256.49947,38.660451 C 261.5566,31.844997 260.59334,32.716861 261.67701,32.129318 C 262.76068,31.541779 271.79128,50.343025 262.51987,63.503896 C 255.29539,69.849315 254.57294,69.614298 252.76682,70.554362 C 253.24845,69.379281 264.32598,61.956136 256.13825,39.042119 C 254.09131,42.919871 249.90625,47.129992 249.90625,47.129992 C 249.90625,47.129992 246.74643,31.306767 224.9526,19.673496 C 210.14242,13.915615 229.79813,7.1606466 229.96841,7.4930107"
+ style="fill:url(#linearGradient4928);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path4559"
+ d="M 225.073,19.604663 L 219.54392,33.539412 C 219.88449,33.871776 234.70564,40.589879 240.96685,56.570938 C 241.60874,56.598614 248.91377,48.697914 249.63622,47.287819 C 250.35867,45.87773 255.35559,66.73536 246.98725,74.432115 C 250.84825,72.119418 252.80814,71.640445 253.9709,69.966819 C 254.45254,68.791742 263.90456,60.037415 256.19845,39.12103 C 254.07389,42.133 251.22218,45.137552 249.99745,46.465268 C 248.56966,41.118961 242.5165,29.216678 225.073,19.604663 z "
+ style="fill:url(#linearGradient4930);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:#1f4a2a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 183.54457,1.5882927 L 183.82766,6.9247824 C 183.82767,6.9247778 203.772,-4.7868273 230.16579,8.175295 C 231.62859,6.1193267 233.0947,3.6616496 234.32281,1.5882927 L 183.54457,1.5882927 z "
+ id="path4561" />
+ <g
+ id="g4563"
+ transform="matrix(0.476791,0,0,0.465307,55.77949,-173.6434)">
+ <path
+ style="fill:url(#linearGradient4932);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 210.6168,512.94073 C 210.6168,512.94073 209.80617,527.05721 224.94835,542.36141 C 217.13872,527.26352 214.65742,520.7694 217.1828,519.25417 C 215.66757,517.99148 214.65741,511.17296 210.6168,512.94073 z "
+ id="path4565"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient4934);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 215.63896,514.69258 C 214.26567,516.28385 213.08169,521.82544 221.73271,538.91133 C 226.65449,544.60372 227.44153,545.08454 234.78918,551.64182 C 232.26379,546.08597 225.18702,531.44512 225.18702,531.44512 C 225.18702,531.44511 222.30922,521.66678 215.63896,514.69258 z "
+ id="path4567"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient4936);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.25,520.1875 C 218.87671,521.77877 217.69273,527.32036 226.34375,544.40625 C 231.26553,550.09864 232.05257,550.57946 239.40022,557.13674 C 236.87483,551.58089 229.79806,536.94004 229.79806,536.94004 C 229.79806,536.94003 226.92026,527.1617 220.25,520.1875 z "
+ id="path4569"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient4938);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 226.43242,527.87754 C 225.19989,531.53305 224.73957,539.88003 235.74492,554.56504 C 238.73456,557.16966 242.85692,559.62588 246.60653,562.26147 C 244.08114,556.70562 233.83867,536.94004 233.83867,536.94004 C 233.83867,536.94003 230.56317,532.74151 226.43242,527.87754 z "
+ id="path4571"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccccccccccccccccccccc"
+ id="path4573"
+ d="M 176.85034,88.193825 C 176.85034,88.193825 174.12582,88.692369 173.27441,87.861466 C 172.423,87.030558 167.65509,81.214225 167.31452,76.893514 C 165.10084,74.068435 157.26785,66.590287 156.41644,64.928475 C 154.8839,62.768125 150.79711,52.365184 159.82209,40.067786 C 163.73859,47.712114 169.18763,58.846252 169.86875,59.677155 C 170.89046,59.012427 172.59328,53.528454 186.55644,45.884123 C 185.87531,36.910347 183.66164,7.9283659 184.17248,6.5989186 C 184.68333,5.2694714 204.94695,-5.366116 230.14876,8.26073 C 222.9969,25.377378 220.27238,31.858444 219.93181,33.686435 C 220.1021,34.018795 234.40583,38.339505 241.38741,55.954699 C 245.47419,51.633987 247.00673,49.473636 249.90153,46.316193 C 252.28549,52.631075 253.98832,67.753554 247.00673,74.566979 C 239.68458,80.050957 230.31905,84.205483 229.46763,85.368751 C 228.61622,86.532018 222.65633,93.843983 216.35588,95.17343 C 216.35588,95.00725 220.44266,91.683628 220.78323,90.35418 C 221.12379,89.024733 222.65633,77.724418 222.65633,77.724418 L 209.3743,65.09466 L 189.11068,64.097572 C 189.11068,64.097572 178.2126,70.744813 175.65836,73.736076 C 175.3178,76.561155 176.85034,88.193825 176.85034,88.193825 z "
+ style="fill:url(#linearGradient4940);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path4575"
+ d="M 270.62287,13.502604 C 269.42734,27.183314 242.50914,55.097143 223.14083,76.429747 C 223.14083,76.429747 222.41838,77.134795 222.41838,77.134795 C 222.6592,77.134795 240.25709,62.968732 251.73862,59.871179 C 280.07812,68.073941 288.57012,22.015298 270.62287,13.502604 z "
+ style="fill:url(#linearGradient4942);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4577"
+ d="M 279.49738,40.589879 C 279.49738,40.589879 255.4158,61.741276 233.01993,71.611931 C 210.62406,81.482581 228.68524,83.597723 228.68524,83.597723 C 228.68524,83.597723 272.75454,64.561464 279.49738,40.589879 z "
+ style="opacity:0.39999994;fill:url(#linearGradient4944);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4579"
+ d="M 272.27788,4.7043653 C 272.27788,1.048383 261.13777,30.50883 227.84381,49.685626 C 205.44794,59.556278 216.35727,70.977559 222.48744,74.633541 C 237.13174,59.01252 269.96238,31.002484 272.27788,4.7043653 z "
+ style="opacity:0.39999994;fill:url(#linearGradient4946);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="opacity:0.69999994;fill:url(#linearGradient4948);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 260.28034,66.231116 C 260.28034,66.231116 238.12529,82.917216 227.52939,86.207434 C 247.10271,85.274289 257.39056,81.977156 260.28034,66.231116 z "
+ id="path4581"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 177.1116,88.199027 L 181.83007,92.365293 C 183.06586,92.474933 185.4251,92.146017 187.22261,91.378549 C 187.22261,91.378549 199.35581,100.58819 218.90377,93.461682 C 206.43353,102.23277 198.12003,97.956864 190.81764,98.505056 C 186.32385,94.777342 174.41533,88.199027 173.74126,88.199027 C 173.06719,88.199027 177.1116,88.199027 177.1116,88.199027 z "
+ id="path4583"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:url(#linearGradient4950);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 209.24214,66.052029 C 210.1409,77.381351 205.19774,100.11309 205.19774,100.04 L 190.36826,99.162889 L 180.48194,91.926741 L 194.41266,108.59181 L 219.80253,92.146017 C 219.80253,92.146017 220.02722,81.620712 222.04942,79.866491 C 224.07162,78.112274 221.82473,77.235166 221.82473,77.235166 C 221.82473,77.235166 212.38779,70.656846 209.24214,66.052029 z "
+ id="path4585"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient4952);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 205.42243,100.25928 L 222.94818,77.673718 C 222.94818,77.673718 220.02722,82.059264 219.80253,91.926741 C 219.80253,91.926741 205.42243,100.25928 205.42243,100.25928 z "
+ id="path4587"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4589"
+ d="M 272.27788,6.5655933 C 272.27788,2.9096111 261.13777,32.370058 227.84381,51.546854 C 205.44794,61.417506 216.35727,70.977559 222.48744,74.633541 C 237.13174,59.01252 269.96238,32.863712 272.27788,6.5655933 z "
+ style="opacity:0.39999994;fill:url(#linearGradient4954);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4591"
+ d="M 278.5438,42.451107 C 278.5438,42.451107 255.4158,63.602504 233.01993,73.473159 C 210.62406,83.343809 228.68524,83.597723 228.68524,83.597723 C 228.68524,83.597723 268.94113,65.492376 278.5438,42.451107 z "
+ style="opacity:0.59999988;fill:url(#linearGradient4956);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:0.69999994;fill:url(#linearGradient4958);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 260.28034,66.231116 C 260.28034,66.231116 238.12529,82.917216 227.52939,86.207434 C 244.56065,83.723765 257.39056,81.977156 260.28034,66.231116 z "
+ id="path4593"
+ sodipodi:nodetypes="ccc" />
+ </g>
+ <rect
+ y="77"
+ x="236"
+ height="0"
+ width="1"
+ id="rect1327"
+ style="opacity:0.57786889;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.63199997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.75688076;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="M 77.062579,3.7839329 L 77.062579,0.98922447 L 77.062579,3.7839329 z "
+ id="path2276"
+ sodipodi:nodetypes="ccc" />
+ <g
+ id="g4640"
+ transform="matrix(-0.782995,0,0,0.650879,-2245.796,690.3016)"
+ style="opacity:0.40163933" />
+ <g
+ style="opacity:0.40163933"
+ transform="matrix(-0.782995,0,0,0.650879,-2245.796,690.3016)"
+ id="g4646" />
+ <g
+ style="opacity:0.40163933"
+ transform="matrix(1,0,0,0.650879,955.167,697.6294)"
+ id="g4730" />
+ <g
+ id="g4748"
+ transform="matrix(1,0,0,0.650879,955.167,697.6294)"
+ style="opacity:0.40163933" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.75688076;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="M 181.23105,2.6244365 L 181.23105,0.41896716 L 181.23105,2.6244365 z "
+ id="path2408"
+ sodipodi:nodetypes="ccc" />
+ </g>
+ <path
+ style="opacity:0.24344569;fill:url(#radialGradient31866);fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:1.08779998;stroke-opacity:1"
+ d="M 73,63.5 L 116,63.5 L 116,85.5 L 93.5,108 L 73,108 L 73,63.5 z "
+ id="rect31858"
+ sodipodi:nodetypes="cccccc" />
+ <g
+ id="g4960"
+ transform="translate(10,-6)">
+ <path
+ transform="translate(40,0)"
+ clip-path="url(#clipPath7084)"
+ sodipodi:nodetypes="cccc"
+ style="opacity:0.4;fill:#000000;fill-opacity:1;filter:url(#filter6697)"
+ id="path5540"
+ d="M 41.879531,115.98249 C 41.879531,115.98249 66.18914,91.672876 66.18914,91.672876 C 66.18914,91.672876 56.836,94.586 46.586,94.586 C 46.586,104.836 41.879531,115.98249 41.879531,115.98249 z " />
+ <path
+ sodipodi:nodetypes="csccc"
+ d="M 79.172,120 C 79.172,120 91.086,110.086 96.586,104.586 C 102.086,99.086 112,87.172 112,87.172 C 112,87.172 98.25,96 88,96 C 88,106.25 79.172,120 79.172,120 z "
+ id="path14523"
+ style="fill:url(#linearGradient10213);fill-opacity:1" />
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer3" />
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolocksrv.qcrml Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<repository target="CRepository" uidValue="0x101F877A">
+ <key int="0x00000001" ref="/KCRUidSecuritySettings/KSettingsAutoLockTime"></key>
+ <key int="0x00000002" ref="/KCRUidSecuritySettings/KSettingsAutolockStatus"></key>
+ <key int="0x00000003" ref="/KCRUidSecuritySettings/KSettingsLockOnPowerUp"></key>
+ <key int="0x00000005" ref="/KCRUidSecuritySettings/KSettingsAutomaticKeyguardTime"></key>
+ <key int="0x00000006" ref="/KCRUidSecuritySettings/KSettingsMaxAutomaticKeyguardTime"></key>
+</repository>
+<repository target="CRepository" uidValue="0x101F877C">
+ <key int="0x7e000001" ref="/KCRUidPersonalizationSettings/KSettingsScreenSaverPeriod"></key>
+</repository>
+<repository target="CRepository" uidValue="0x101f8798">
+ <key int="0x7e000001" ref="/KCRUidProfileEngine/KProEngActiveProfile"></key>
+</repository>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice.pro Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: autolockuseractivityservice.pro
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS += autolockuseractivityservice/autolockuseractivityservice.pro
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/autolockuseractivityservice.pri Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: autolockuseractivityservice.pri
+#
+
+HEADERS += ./inc/*.h
+
+SOURCES += ./src/*.cpp
+
+INCLUDEPATH += . \
+ inc
+
+DEPENDPATH += . \
+ inc \
+ src
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/autolockuseractivityservice.pro Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: autolockuseractivityservice.pro
+#
+
+TEMPLATE = lib
+
+include(common.pri)
+
+DEFINES += AUTOLOCKUSERACTIVITYSERVICE_LIB
+
+symbian: {
+TARGET.UID3 = 0x2002704D
+LIBS += -lactivitymanager
+
+include(autolockuseractivityservice_s60.pri)
+} else {
+include(autolockuseractivityservice_stub.pri)
+}
+
+include(autolockuseractivityservice.pri)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/autolockuseractivityservice_s60.pri Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: autolockuseractivityservice_s60.pri
+#
+
+HEADERS += ./s60/inc/*.h
+
+SOURCES += ./s60/src/*.cpp
+
+INCLUDEPATH += ./s60/inc
+
+DEPENDPATH += ./s60/inc \
+ ./s60/src
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/autolockuseractivityservice_stub.pri Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: autolockuseractivityservice_stub.pri
+#
+
+HEADERS += ./stub/inc/*.h
+
+SOURCES += ./stub/src/*.cpp
+
+INCLUDEPATH += ./stub/inc
+
+DEPENDPATH += ./stub/inc \
+ ./stub/src
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/common.pri Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,66 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: screensaverapp project - common QMake settings
+#
+
+CONFIG += debug_and_release
+
+# On win32 and mac, debug and release libraries are named differently.
+# We must follow the debug and release settings Qt was compiled with:
+# build debug iff Qt built debug, build release iff Qt built release.
+win32|mac {
+ !contains(QT_CONFIG,debug)|!contains(QT_CONFIG,release) {
+ CONFIG -= debug_and_release debug release
+ contains(QT_CONFIG,debug): CONFIG+=debug
+ contains(QT_CONFIG,release):CONFIG+=release
+ }
+}
+
+CONFIG(debug, debug|release) {
+ SUBDIRPART = debug
+} else {
+ SUBDIRPART = release
+}
+
+SOURCE_DIR = $$PWD/inc
+
+DESTDIR = $$OUTPUT_DIR
+
+# Add the output dirs to the link path too
+LIBS += -L$$DESTDIR
+
+DEPENDPATH += . $$SOURCE_DIR
+INCLUDEPATH += . $$SOURCE_DIR
+#For some reason the default include path doesn't include MOC_DIR on symbian
+symbian {
+ INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+ TARGET.CAPABILITY = ALL -TCB
+ TARGET.EPOCALLOWDLLDATA=1
+}
+
+
+plugin: !isEmpty(PLUGIN_SUBDIR): DESTDIR = $$OUTPUT_DIR/$$PLUGIN_SUBDIR
+
+symbian: plugin { # copy qtstub and manifest
+ pluginstub.sources = $${TARGET}.dll
+ pluginstub.path = $$PLUGIN_SUBDIR
+
+ DEPLOYMENT += pluginstub
+
+ qtplugins.path = $$PLUGIN_SUBDIR
+ qtplugins.sources += qmakepluginstubs/$${TARGET}.qtplugin
+ qtplugins.sources += resource/$${TARGET}.manifest
+
+ for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin z:$$qtplugins.path/$$basename(qtplugin)"
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/inc/autolockuseractivityservice.h Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: autolockuseractivityservice.h
+*
+*/
+
+#ifndef AUTOLOCKAUTOLOCKUSERACTIVITYSERVICE_H
+#define AUTOLOCKAUTOLOCKUSERACTIVITYSERVICE_H
+
+#include "autolockuseractivityserviceinterface.h"
+#include "autolockuseractivityservice_global.h"
+
+class AutolockUserActivityServicePrivate;
+
+class AUTOLOCKUSERACTIVITYSERVICE_EXPORT AutolockUserActivityService : public AutolockUserActivityServiceInterface
+{
+ Q_OBJECT
+
+public:
+
+ explicit AutolockUserActivityService(/*QObject *parent = 0*/);
+ ~AutolockUserActivityService();
+
+ virtual void setInactivityPeriod(int seconds);
+ virtual int inactivityPeriod() const;
+
+private:
+
+ //virtual void connectNotify(const char *signal);
+ //virtual void disconnectNotify(const char *signal);
+
+ //bool receiversConnected();
+
+ Q_DISABLE_COPY(AutolockUserActivityService)
+
+private:
+
+ AutolockUserActivityServicePrivate *m_d;
+ friend class AutolockUserActivityServicePrivate;
+
+};
+
+#endif // AUTOLOCKAUTOLOCKUSERACTIVITYSERVICE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/inc/autolockuseractivityservice_global.h Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: autolockuseractivityservice_global.h
+*
+*/
+
+
+#ifndef AUTOLOCKAUTOLOCKUSERACTIVITYSERVICE_GLOBAL_H
+#define AUTOLOCKAUTOLOCKUSERACTIVITYSERVICE_GLOBAL_H
+
+#include <qglobal.h>
+
+#ifdef AUTOLOCKUSERACTIVITYSERVICE_LIB
+ #define AUTOLOCKUSERACTIVITYSERVICE_EXPORT Q_DECL_EXPORT
+#else
+ #ifdef AUTOLOCKUSERACTIVITYSERVICE_TEST
+ #define AUTOLOCKUSERACTIVITYSERVICE_EXPORT
+ #else
+ #define AUTOLOCKUSERACTIVITYSERVICE_EXPORT Q_DECL_IMPORT
+ #endif
+#endif
+
+#endif // AUTOLOCKAUTOLOCKUSERACTIVITYSERVICE_GLOBAL_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/inc/autolockuseractivityserviceinterface.h Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: autolockuseractivityserviceinterface.h
+*
+*/
+
+#ifndef AUTOLOCKUSERACTIVITYSERVICEINTERFACE_H
+#define AUTOLOCKUSERACTIVITYSERVICEINTERFACE_H
+
+#include <QObject>
+
+class AutolockUserActivityServiceInterface : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ virtual void setInactivityPeriod(int seconds) = 0;
+ virtual int inactivityPeriod() const = 0;
+
+signals:
+
+ void notActive();
+ void active();
+
+};
+
+#endif // AUTOLOCKUSERACTIVITYSERVICEINTERFACE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/s60/inc/autolockuseractivityservice_p.h Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: autolockuseractivityservice_p.h
+*
+*/
+
+#ifndef AUTOLOCKUSERACTIVITYSERVICEPRIVATE_H
+#define AUTOLOCKUSERACTIVITYSERVICEPRIVATE_H
+
+class CUserActivityManager;
+
+class AutolockUserActivityService;
+
+class AutolockUserActivityServicePrivate
+{
+
+public:
+
+ explicit AutolockUserActivityServicePrivate(AutolockUserActivityService *servicePublic);
+ ~AutolockUserActivityServicePrivate();
+
+ void setInactivityPeriod(int seconds);
+ int inactivityPeriod() const;
+
+ void watch(bool shouldWatch);
+
+ void emitActive() const;
+ void emitNotActive() const;
+
+private:
+
+ bool isWatching() const;
+
+private:
+
+ AutolockUserActivityService *m_q;
+
+ CUserActivityManager *mActivityManager;
+ int mInactivityPeriod;
+
+};
+
+#endif // AUTOLOCKUSERACTIVITYSERVICEPRIVATE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/s60/src/autolockuseractivityservice_p.cpp Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,143 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: autolockuseractivityservice_p.cpp
+*
+*/
+
+#include "autolockuseractivityservice.h"
+#include "autolockuseractivityservice_p.h"
+#include <e32debug.h>
+
+#include <activitymanager.h>
+
+const int lDefaultInactivityPeriod(5);
+
+// ======== LOCAL FUNCTIONS ========
+
+/*!
+ Called as callback to activity event.
+ \param pointer to activity callback object.
+ \retval error code.
+*/
+TInt activityCallback(TAny *ptr)
+{
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+
+ static_cast<AutolockUserActivityServicePrivate *>(ptr)->emitActive();
+ // activity manager doesn't care about the return value,
+ // we return a value indicating 'true' to be elegant (see CIdle)
+ return 1;
+}
+
+/*!
+ Called as callback to inactivity event.
+ \param pointer to inactivity callback object.
+ \retval error code.
+*/
+TInt inactivityCallback(TAny *ptr)
+{
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+
+ static_cast<AutolockUserActivityServicePrivate *>(ptr)->emitNotActive();
+ // activity manager doesn't care about the return value,
+ // we return a value indicating 'true' to be elegant (see CIdle)
+ return 1;
+}
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+ Constructor.
+ \param servicePublic public implementation.
+*/
+AutolockUserActivityServicePrivate::AutolockUserActivityServicePrivate(AutolockUserActivityService *servicePublic) :
+ m_q(servicePublic), mActivityManager(0), mInactivityPeriod(lDefaultInactivityPeriod)
+{
+ mActivityManager = CUserActivityManager::NewL(CActive::EPriorityStandard);
+}
+
+/*!
+ Destructor.
+*/
+AutolockUserActivityServicePrivate::~AutolockUserActivityServicePrivate()
+{
+ delete mActivityManager;
+}
+
+/*!
+ Sets the inactivity period after which to emit signal of inactivity.
+ \param seconds after which inactivity is detected.
+*/
+void AutolockUserActivityServicePrivate::setInactivityPeriod(int seconds)
+{
+ RDebug::Printf( "%s %s (%u) seconds=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, seconds );
+
+ mInactivityPeriod = seconds;
+ // activity manager panics if timeout set before start
+ if (isWatching())
+ {
+ mActivityManager->SetInactivityTimeout(TTimeIntervalSeconds(mInactivityPeriod));
+ }
+}
+
+/*!
+ Retrives the current inactivity period setting.
+ \retval inactivity period set.
+*/
+int AutolockUserActivityServicePrivate::inactivityPeriod() const
+{
+ return mInactivityPeriod;
+}
+
+/*!
+ Starts or stops activity manager user activity watching.
+ \param shouldWatch determines if we shoul start watching or stop watching.
+*/
+void AutolockUserActivityServicePrivate::watch(bool shouldWatch)
+{
+ RDebug::Printf( "%s %s (%u) shouldWatch=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, shouldWatch );
+ if (shouldWatch && !isWatching()) {
+ mActivityManager->Start(
+ TTimeIntervalSeconds(mInactivityPeriod),
+ TCallBack(inactivityCallback, this),
+ TCallBack(activityCallback, this));
+ } else if (!shouldWatch && isWatching()) {
+ mActivityManager->Cancel();
+ }
+}
+
+/*!
+ Checks if activity service is currently watching for user activity.
+ \retval true if user acitivity service is active.
+*/
+bool AutolockUserActivityServicePrivate::isWatching() const
+{
+ return mActivityManager && mActivityManager->IsActive();
+}
+
+/*!
+ Emits signal that user is active.
+*/
+void AutolockUserActivityServicePrivate::emitActive() const
+{
+ emit m_q->active();
+}
+
+/*!
+ Emits signal that user is not active.
+*/
+void AutolockUserActivityServicePrivate::emitNotActive() const
+{
+ emit m_q->notActive();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/src/autolockuseractivityservice.cpp Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: autolockuseractivityservice.cpp
+*
+*/
+
+#include "autolockuseractivityservice.h"
+#include "autolockuseractivityservice_p.h"
+
+/*!
+ \class AutolockUserActivityService
+ \brief ?brier_description
+
+ ?Qt_style_documentation
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+ Constructor.
+*/
+AutolockUserActivityService::AutolockUserActivityService() :
+ m_d(new AutolockUserActivityServicePrivate(this))
+{
+ m_d->watch(true);
+}
+
+/*!
+ Destructor.
+*/
+AutolockUserActivityService::~AutolockUserActivityService()
+{
+ delete m_d;
+}
+
+/*!
+ Sets the inactivity period after which to emit signal of inactivity.
+ \param seconds after which inactivity is detected.
+*/
+void AutolockUserActivityService::setInactivityPeriod(int seconds)
+{
+ m_d->setInactivityPeriod(seconds);
+}
+
+/*!
+ Retrives the current inactivity period setting.
+ \retval inactivity period set.
+*/
+int AutolockUserActivityService::inactivityPeriod() const
+{
+ return m_d->inactivityPeriod();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/stub/inc/autolockuseractivityservice_p.h Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: autolockuseractivityservice_p.h
+*
+*/
+
+#ifndef AUTOLOCKUSERACTIVITYSERVICEPRIVATE_H
+#define AUTOLOCKUSERACTIVITYSERVICEPRIVATE_H
+
+#include "autolocktest_global.h"
+
+class QTimer;
+
+class AutolockUserActivityService;
+
+class AutolockUserActivityServicePrivate
+{
+
+public:
+
+ explicit AutolockUserActivityServicePrivate(AutolockUserActivityService *servicePublic);
+ ~AutolockUserActivityServicePrivate();
+
+ void setInactivityPeriod(int seconds);
+ int inactivityPeriod() const;
+
+ void watch(bool shouldWatch);
+
+private:
+
+ bool isWatching() const;
+
+private:
+
+ AutolockUserActivityService *m_q;
+
+ QTimer *mActivityTimer;
+ QTimer *mInactivityTimer;
+
+ int mInactivityPeriod;
+ SCREENSAVER_TEST_FRIEND_CLASS(T_AutolockUserActivityService)
+};
+
+#endif // AUTOLOCKUSERACTIVITYSERVICEPRIVATE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/autolockuseractivityservice/stub/src/autolockuseractivityservice_p.cpp Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: autolockuseractivityservice_p.cpp
+*
+*/
+
+#include "autolockuseractivityservice.h"
+#include "autolockuseractivityservice_p.h"
+
+#include <QTimer>
+#include <QObject>
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+ Constructor.
+ \param servicePublic public implementation.
+*/
+AutolockUserActivityServicePrivate::AutolockUserActivityServicePrivate(AutolockUserActivityService *servicePublic) :
+ m_q(servicePublic), mInactivityPeriod(9)
+{
+ mActivityTimer = new QTimer();
+ QObject::connect(mActivityTimer, SIGNAL(timeout()), m_q, SIGNAL(active()));
+
+ mInactivityTimer = new QTimer();
+ QObject::connect(mInactivityTimer, SIGNAL(timeout()), m_q, SIGNAL(notActive()));
+}
+
+/*!
+ Destructor.
+*/
+AutolockUserActivityServicePrivate::~AutolockUserActivityServicePrivate()
+{
+ delete mActivityTimer;
+ delete mInactivityTimer;
+}
+
+/*!
+ Sets the inactivity period after which to emit signal of inactivity.
+ \param seconds after which inactivity is detected.
+*/
+void AutolockUserActivityServicePrivate::setInactivityPeriod(int seconds)
+{
+ mInactivityPeriod = seconds;
+ if (isWatching()) {
+ mInactivityTimer->start(seconds * 1000);
+ }
+}
+
+/*!
+ Retrives the current inactivity period setting.
+ \retval inactivity period set.
+*/
+int AutolockUserActivityServicePrivate::inactivityPeriod() const
+{
+ return mInactivityPeriod;
+}
+
+/*!
+ Starts or stops activity manager user activity watching.
+ \param shouldWatch determines if we shoul start watching or stop watching.
+*/
+void AutolockUserActivityServicePrivate::watch(bool shouldWatch)
+{
+ if (shouldWatch && !isWatching()) {
+ mActivityTimer->start(5000);
+ mInactivityTimer->start(mInactivityPeriod * 1000);
+ } else if (!shouldWatch && isWatching()) {
+ mActivityTimer->stop();
+ mInactivityTimer->stop();
+ }
+}
+
+/*!
+ Checks if activity service is currently watching for user activity.
+ \retval true if user acitivity service is active.
+*/
+bool AutolockUserActivityServicePrivate::isWatching() const
+{
+ return (mActivityTimer->isActive() || mInactivityTimer->isActive());
+}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/bwins/autolockuseractivityserviceu.def Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,16 @@
+EXPORTS
+ ?trUtf8@AutolockUserActivityService@@SA?AVQString@@PBD0H@Z @ 1 NONAME ; class QString AutolockUserActivityService::trUtf8(char const *, char const *, int)
+ ?tr@AutolockUserActivityService@@SA?AVQString@@PBD0@Z @ 2 NONAME ; class QString AutolockUserActivityService::tr(char const *, char const *)
+ ?trUtf8@AutolockUserActivityService@@SA?AVQString@@PBD0@Z @ 3 NONAME ; class QString AutolockUserActivityService::trUtf8(char const *, char const *)
+ ?getStaticMetaObject@AutolockUserActivityService@@SAABUQMetaObject@@XZ @ 4 NONAME ; struct QMetaObject const & AutolockUserActivityService::getStaticMetaObject(void)
+ ?setInactivityPeriod@AutolockUserActivityService@@UAEXH@Z @ 5 NONAME ; void AutolockUserActivityService::setInactivityPeriod(int)
+ ?tr@AutolockUserActivityService@@SA?AVQString@@PBD0H@Z @ 6 NONAME ; class QString AutolockUserActivityService::tr(char const *, char const *, int)
+ ?qt_metacast@AutolockUserActivityService@@UAEPAXPBD@Z @ 7 NONAME ; void * AutolockUserActivityService::qt_metacast(char const *)
+ ??1AutolockUserActivityService@@UAE@XZ @ 8 NONAME ; AutolockUserActivityService::~AutolockUserActivityService(void)
+ ?qt_metacall@AutolockUserActivityService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 9 NONAME ; int AutolockUserActivityService::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?inactivityPeriod@AutolockUserActivityService@@UBEHXZ @ 10 NONAME ; int AutolockUserActivityService::inactivityPeriod(void) const
+ ??0AutolockUserActivityService@@QAE@XZ @ 11 NONAME ; AutolockUserActivityService::AutolockUserActivityService(void)
+ ??_EAutolockUserActivityService@@UAE@I@Z @ 12 NONAME ; AutolockUserActivityService::~AutolockUserActivityService(unsigned int)
+ ?staticMetaObject@AutolockUserActivityService@@2UQMetaObject@@B @ 13 NONAME ; struct QMetaObject const AutolockUserActivityService::staticMetaObject
+ ?metaObject@AutolockUserActivityService@@UBEPBUQMetaObject@@XZ @ 14 NONAME ; struct QMetaObject const * AutolockUserActivityService::metaObject(void) const
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/eabi/autolockuseractivityserviceu.def Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,16 @@
+EXPORTS
+ _ZN27AutolockUserActivityService11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+ _ZN27AutolockUserActivityService11qt_metacastEPKc @ 2 NONAME
+ _ZN27AutolockUserActivityService16staticMetaObjectE @ 3 NONAME DATA 16
+ _ZN27AutolockUserActivityService19getStaticMetaObjectEv @ 4 NONAME
+ _ZN27AutolockUserActivityService19setInactivityPeriodEi @ 5 NONAME
+ _ZN27AutolockUserActivityServiceC1Ev @ 6 NONAME
+ _ZN27AutolockUserActivityServiceC2Ev @ 7 NONAME
+ _ZN27AutolockUserActivityServiceD0Ev @ 8 NONAME
+ _ZN27AutolockUserActivityServiceD1Ev @ 9 NONAME
+ _ZN27AutolockUserActivityServiceD2Ev @ 10 NONAME
+ _ZNK27AutolockUserActivityService10metaObjectEv @ 11 NONAME
+ _ZNK27AutolockUserActivityService16inactivityPeriodEv @ 12 NONAME
+ _ZTI27AutolockUserActivityService @ 13 NONAME
+ _ZTV27AutolockUserActivityService @ 14 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/iconnotifier.svg Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="128"
+ height="128"
+ id="svg2606"
+ sodipodi:version="0.32"
+ inkscape:version="0.45+devel"
+ version="1.0"
+ sodipodi:docname="unknown.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:docbase="/home/david/Progetti/sandbox/svg/mimetypes">
+ <defs
+ id="defs2608">
+ <linearGradient
+ y2="0"
+ x2="28"
+ y1="57.5"
+ x1="28"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2973">
+ <stop
+ id="stop2975"
+ style="stop-color:#2c72c7;stop-opacity:1;"
+ offset="0" />
+
+ <stop
+ id="stop2977"
+ style="stop-color:#0057ae;stop-opacity:1;"
+ offset="1" />
+
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="linearGradient2086"
+ x1="86.43512"
+ y1="76.830994"
+ x2="22.813417"
+ y2="8.9537134"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient10207">
+ <stop
+ style="stop-color:#a2a2a2;stop-opacity:1;"
+ offset="0"
+ id="stop10209" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop10211" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_12_"
+ gradientUnits="userSpaceOnUse"
+ x1="96"
+ y1="104"
+ x2="88.000198"
+ y2="96.000198">
+ <stop
+ offset="0"
+ style="stop-color:#888A85"
+ id="stop83" />
+ <stop
+ offset="0.0072"
+ style="stop-color:#8C8E89"
+ id="stop85" />
+ <stop
+ offset="0.0673"
+ style="stop-color:#ABACA9"
+ id="stop87" />
+ <stop
+ offset="0.1347"
+ style="stop-color:#C5C6C4"
+ id="stop89" />
+ <stop
+ offset="0.2652576"
+ style="stop-color:#DBDBDA"
+ id="stop91" />
+ <stop
+ offset="0.37646064"
+ style="stop-color:#EBEBEB"
+ id="stop93" />
+ <stop
+ offset="0.48740286"
+ style="stop-color:#F7F7F6"
+ id="stop95" />
+ <stop
+ offset="0.6324091"
+ style="stop-color:#FDFDFD"
+ id="stop97" />
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop99" />
+ </linearGradient>
+ <radialGradient
+ id="XMLID_8_"
+ cx="102"
+ cy="112.3047"
+ r="139.55859"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#b7b8b9;stop-opacity:1;"
+ id="stop41" />
+ <stop
+ offset="0.18851049"
+ style="stop-color:#ECECEC"
+ id="stop47" />
+ <stop
+ offset="0.25718147"
+ style="stop-color:#FAFAFA"
+ id="stop49" />
+ <stop
+ offset="0.30111277"
+ style="stop-color:#FFFFFF"
+ id="stop51" />
+ <stop
+ offset="0.5313"
+ style="stop-color:#FAFAFA"
+ id="stop53" />
+ <stop
+ offset="0.8449"
+ style="stop-color:#EBECEC"
+ id="stop55" />
+ <stop
+ offset="1"
+ style="stop-color:#E1E2E3"
+ id="stop57" />
+ </radialGradient>
+ <filter
+ inkscape:collect="always"
+ x="-0.19200002"
+ width="1.3839999"
+ y="-0.19199999"
+ height="1.3839999"
+ id="filter6697">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.9447689"
+ id="feGaussianBlur6699" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath7084">
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 72,88 L 40,120 L 32,120 L 32,80 L 72,80 L 72,88 z"
+ id="path7086" />
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_8_"
+ id="radialGradient9437"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.9996653,2e-6,3.0160848e-3)"
+ cx="102"
+ cy="112.3047"
+ r="139.55859" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10207"
+ id="linearGradient10213"
+ x1="98.617439"
+ y1="106.41443"
+ x2="91.228737"
+ y2="99.254974"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter2770">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="2.0786429"
+ id="feGaussianBlur2772" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8284271"
+ inkscape:cx="64"
+ inkscape:cy="85.975621"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="128px"
+ height="128px"
+ gridspacingx="4px"
+ gridspacingy="4px"
+ gridempspacing="2"
+ showgrid="true"
+ inkscape:grid-points="true"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1016"
+ inkscape:window-height="692"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata2611">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Livello 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ style="opacity:0.5;fill:#000000;fill-opacity:1;filter:url(#filter2770)"
+ d="M 16,8 L 16,120 C 16,120 79.15625,120 79.15625,120 L 79.1875,120 C 79.187503,120 91.09375,110.09375 96.59375,104.59375 C 102.09375,99.09375 112,87.1875 112,87.1875 L 112,87.15625 L 112,8 L 16,8 z"
+ id="path7865"
+ sodipodi:nodetypes="csccscccc"
+ transform="matrix(1.0416667,0,0,1.0267857,-2.6666667,-1.2142891)" />
+ <path
+ style="fill:#ffffff;fill-opacity:1"
+ d="M 16.000001,8 L 16,120 C 16,120 79.146418,120 79.146418,120 L 112,87.14642 L 112,8 L 16.000001,8 z"
+ id="path34"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:url(#radialGradient9437);fill-opacity:1"
+ d="M 18.000002,9.0000034 C 17.449002,9.0000034 17.000002,9.4488534 17.000002,9.9996684 L 17.000002,117.96352 C 17.000002,118.51533 17.449002,118.96318 18.000002,118.96318 L 77.171999,118.96318 C 77.434999,118.96318 79.934679,119.08131 80.12068,118.89438 L 110.707,88.094202 C 110.894,87.907264 111,85.40942 111,85.146508 L 111,9.9996684 C 111,9.4488534 110.552,9.0000034 110,9.0000034 L 18.000002,9.0000034 z"
+ id="path59"
+ sodipodi:nodetypes="ccccccccccc" />
+ <path
+ d="M 41.879531,115.98249 C 41.879531,115.98249 66.18914,91.672876 66.18914,91.672876 C 66.18914,91.672876 56.836,94.586 46.586,94.586 C 46.586,104.836 41.879531,115.98249 41.879531,115.98249 z"
+ id="path5540"
+ style="opacity:0.4;fill:#000000;fill-opacity:1;filter:url(#filter6697)"
+ sodipodi:nodetypes="cccc"
+ clip-path="url(#clipPath7084)"
+ transform="translate(40,0)" />
+ <path
+ style="fill:url(#linearGradient10213);fill-opacity:1"
+ id="path14523"
+ d="M 79.172,120 C 79.172,120 91.086,110.086 96.586,104.586 C 102.086,99.086 112,87.172 112,87.172 C 112,87.172 98.25,96 88,96 C 88,106.25 79.172,120 79.172,120 z"
+ sodipodi:nodetypes="csccc" />
+ <path
+ id="text2076"
+ d="M 62.842105,28 C 69.438566,28.00007 74.631544,30.070244 78.421053,34.210526 C 80.947326,37.017606 82.210485,40.386024 82.210528,44.315789 C 82.210485,49.157946 79.894696,54.596537 75.263159,60.631581 C 74.421018,61.684251 73.052597,63.368459 71.157895,65.684214 C 67.789444,69.89477 65.57892,74.807045 64.526316,80.421056 C 64.456114,80.912302 64.38594,81.40353 64.315789,81.89474 L 62.526315,81.89474 C 62.666642,76.491254 63.719273,71.508803 65.68421,66.947371 L 68.631579,60.210528 C 71.228037,54.245661 72.526282,48.771981 72.526316,43.789473 C 72.526282,39.228131 70.806986,35.684274 67.36842,33.157894 C 65.543832,31.824628 63.473658,31.157962 61.157895,31.157894 C 57.508752,31.157962 54.631562,32.280768 52.526315,34.526317 C 51.614021,35.579011 51.15788,36.631642 51.157894,37.684211 C 51.15788,38.315851 51.894722,39.543919 53.36842,41.368421 C 54.561386,42.982513 55.157877,44.350934 55.157894,45.473685 C 55.157877,47.649175 54.175422,49.017596 52.210526,49.578948 C 51.789459,49.719349 51.33332,49.789525 50.842103,49.789475 C 47.473673,49.789525 45.789465,47.614088 45.789472,43.26316 C 45.789465,37.929885 48.070165,33.789539 52.631576,30.842104 C 55.578928,28.947438 58.982435,28.00007 62.842105,28 M 63.578947,88.736839 C 65.894709,88.736854 67.578918,89.82458 68.631579,92.00001 C 69.052602,92.77194 69.263127,93.61404 69.263159,94.52631 C 69.263127,97.05264 68.070146,98.73684 65.68421,99.57894 C 64.98243,99.85965 64.245588,100 63.473684,100 C 60.87717,100 59.157873,98.8772 58.315788,96.63158 C 58.105243,96.00001 57.99998,95.33335 57.999998,94.63158 C 57.99998,91.96492 59.122785,90.14037 61.36842,89.157906 C 62.070151,88.877214 62.806993,88.736854 63.578947,88.736839"
+ style="font-size:74.98017883px;font-style:normal;font-weight:normal;fill:url(#linearGradient2086);fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" />
+ </g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/indicatorplugin/qmakepluginstubs/indicatortestplugin.qtplugin Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,1 @@
+This file is a Qt plugin stub file. The real Qt plugin is located in /sys/bin. Created:2010-03-19T16:43:28
Binary file securitydialogs/AutolockSrv/indicatortestplugin.zip has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/qtg_large_device_lock.svg Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<rect fill="none" height="60" width="60"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1" x1="30" x2="30" y1="4.26" y2="55.61">
+<stop offset="0" stop-color="#D1D7D9"/>
+<stop offset="0.07" stop-color="#D1D7D9"/>
+<stop offset="0.26" stop-color="#BDC2C4"/>
+<stop offset="0.66" stop-color="#949DA1"/>
+<stop offset="0.96" stop-color="#ADB3B5"/>
+<stop offset="1" stop-color="#595C5E"/>
+</linearGradient>
+<path d="M46.574,52.922c0,1.557-1.264,2.818-2.822,2.818H16.248c-1.558,0-2.82-1.262-2.82-2.818V7.082 c0-1.556,1.262-2.82,2.82-2.82h27.504c1.559,0,2.822,1.264,2.822,2.82V52.922z" fill="url(#SVGID_1)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2" x1="30" x2="30" y1="4.26" y2="54.73">
+<stop offset="0" stop-color="#E4EBED"/>
+<stop offset="0.07" stop-color="#E4EBED"/>
+<stop offset="0.26" stop-color="#D6DCDE"/>
+<stop offset="0.66" stop-color="#B2BEC2"/>
+<stop offset="1" stop-color="#ADB3B5"/>
+</linearGradient>
+<path d="M43.752,4.262H16.248c-1.558,0-2.82,1.264-2.82,2.82v45.84c0,0.752,0.3,1.432,0.78,1.938 c-0.044-0.172-0.072-0.344-0.072-0.529v-1.408V8.492v-1.41c0-1.168,0.95-2.118,2.114-2.118h27.504c1.166,0,2.114,0.95,2.114,2.118 v1.41v44.43v1.408c0,0.186-0.028,0.357-0.072,0.529c0.481-0.506,0.782-1.186,0.782-1.938V7.082 C46.574,5.526,45.311,4.262,43.752,4.262z" fill="url(#SVGID_2)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3" x1="30" x2="30" y1="7.84" y2="42.35">
+<stop offset="0" stop-color="#B6BBBD"/>
+<stop offset="1" stop-color="#F0FBFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_3)" fill-opacity="0.6" height="34.554" stroke-opacity="0.6" width="28.918" x="15.542" y="7.788"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4" x1="30" x2="30" y1="8.54" y2="41.64">
+<stop offset="0" stop-color="#6E6E6E"/>
+<stop offset="1" stop-color="#333333"/>
+</linearGradient>
+<rect fill="url(#SVGID_4)" height="33.146" width="27.504" x="16.248" y="8.492"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5" x1="30" x2="30" y1="9.25" y2="40.94">
+<stop offset="0" stop-color="#3BC8EB"/>
+<stop offset="0.39" stop-color="#2D9BD2"/>
+<stop offset="0.89" stop-color="#1347BA"/>
+<stop offset="1" stop-color="#1347BA"/>
+</linearGradient>
+<rect fill="url(#SVGID_5)" height="31.735" width="26.094" x="16.954" y="9.198"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6" x1="30" x2="30" y1="9.75" y2="22.36">
+<stop offset="0" stop-color="#85EFFF"/>
+<stop offset="1" stop-color="#3BA1D9"/>
+</linearGradient>
+<polygon fill="url(#SVGID_6)" points="43.046,20.48 16.954,23.3 16.954,9.904 43.046,9.904 "/>
+<rect fill="#9FE4FF" height="0.708" width="26.094" x="16.954" y="9.198"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7" x1="30.2" x2="30.2" y1="7.82" y2="4.99">
+<stop offset="0" stop-color="#FFFFFF"/>
+<stop offset="1" stop-color="#D1D7D9"/>
+</linearGradient>
+<path d="M27.088,7.788c-0.792,0-1.412-0.516-1.412-1.176V6.14c0-0.658,0.622-1.176,1.412-1.176h6.238 c0.79,0,1.408,0.518,1.408,1.176v0.47c0,0.66-0.621,1.176-1.408,1.176h-6.238V7.788z" fill="url(#SVGID_7)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8" x1="30.21" x2="30.21" y1="5.38" y2="7.2">
+<stop offset="0" stop-color="#6C7375"/>
+<stop offset="1" stop-color="#BDC2C4"/>
+</linearGradient>
+<path d="M34.034,6.612c0,0.26-0.318,0.47-0.708,0.47h-6.238c-0.39,0-0.708-0.21-0.708-0.47V6.14 c0-0.262,0.316-0.468,0.708-0.468h6.238c0.388,0,0.708,0.208,0.708,0.468V6.612z" fill="url(#SVGID_8)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9" x1="29.89" x2="29.89" y1="43.08" y2="53.56">
+<stop offset="0" stop-color="#B6BBBD"/>
+<stop offset="1" stop-color="#FFFFFF"/>
+</linearGradient>
+<path d="M27.344,53.626c-1.512,0-2.744-1.216-2.744-2.712 V45.76c0-1.494,1.232-2.71,2.744-2.71h5.094c1.515,0,2.744,1.216,2.744,2.71v5.154c0,1.496-1.229,2.712-2.744,2.712H27.344z" fill="url(#SVGID_9)" fill-opacity="0.6" stroke-opacity="0.6"/>
+<path d="M27.34,52.922c-1.122,0-2.032-0.902-2.032-2.008V45.76 c0-1.107,0.91-2.008,2.032-2.008h5.104c1.123,0,2.031,0.9,2.031,2.008v5.154c0,1.105-0.908,2.008-2.031,2.008H27.34z" fill="#020202" fill-opacity="0.5" stroke-opacity="0.5"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10" x1="29.89" x2="29.89" y1="44.43" y2="52.23">
+<stop offset="0" stop-color="#A6A8AB"/>
+<stop offset="0.7" stop-color="#58595B"/>
+<stop offset="1" stop-color="#808184"/>
+</linearGradient>
+<path d="M33.771,50.914c0,0.718-0.594,1.3-1.319,1.3h-5.12c-0.728,0-1.32-0.582-1.32-1.3V45.76 c0-0.716,0.592-1.298,1.32-1.298h5.12c0.726,0,1.319,0.582,1.319,1.298V50.914z" fill="url(#SVGID_10)"/>
+<path d="M28.836,50.805c-0.782,0-1.414-0.633-1.414-1.41v-2.119 c0-0.775,0.632-1.407,1.414-1.407h2.112c0.78,0,1.411,0.632,1.411,1.407v2.119c0,0.777-0.631,1.41-1.411,1.41H28.836z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11" x1="29.89" x2="29.89" y1="46.56" y2="50.1">
+<stop offset="0" stop-color="#D1D7D9"/>
+<stop offset="0.07" stop-color="#D1D7D9"/>
+<stop offset="0.26" stop-color="#BDC2C4"/>
+<stop offset="0.66" stop-color="#949DA1"/>
+<stop offset="0.96" stop-color="#ADB3B5"/>
+<stop offset="1" stop-color="#595C5E"/>
+</linearGradient>
+<path d="M28.836,50.098c-0.392,0-0.708-0.313-0.708-0.703v-2.119c0-0.385,0.314-0.703,0.708-0.703 h2.112c0.39,0,0.708,0.316,0.708,0.703v2.119c0,0.388-0.316,0.703-0.708,0.703H28.836z" fill="url(#SVGID_11)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12" x1="18.66" x2="18.66" y1="43.71" y2="52.23">
+<stop offset="0" stop-color="#B6BBBD"/>
+<stop offset="1" stop-color="#F0FBFF"/>
+</linearGradient>
+<path d="M18.256,52.214c-1.496,0-2.714-1.216-2.714-2.712 v-3.036c0-1.498,1.218-2.714,2.714-2.714h0.81c1.498,0,2.714,1.216,2.714,2.714v3.036c0,1.496-1.216,2.712-2.714,2.712H18.256z" fill="url(#SVGID_12)" fill-opacity="0.4" stroke-opacity="0.4"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_13" x1="18.66" x2="18.66" y1="44.43" y2="51.52">
+<stop offset="0" stop-color="#231F20"/>
+<stop offset="1" stop-color="#6D6E70"/>
+</linearGradient>
+<path d="M18.256,51.51c-1.106,0-2.008-0.9-2.008-2.008v-3.036 c0-1.11,0.902-2.006,2.008-2.006h0.81c1.11,0,2.01,0.896,2.01,2.006v3.036c0,1.107-0.9,2.008-2.01,2.008H18.256z" fill="url(#SVGID_13)" fill-opacity="0.7" stroke-opacity="0.7"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_14" x1="18.66" x2="18.66" y1="45.14" y2="50.82">
+<stop offset="0" stop-color="#C6FF45"/>
+<stop offset="0.73" stop-color="#66A00E"/>
+<stop offset="1" stop-color="#387300"/>
+</linearGradient>
+<path d="M20.37,49.502c0,0.721-0.582,1.303-1.302,1.303h-0.812c-0.718,0-1.302-0.582-1.302-1.303 v-3.036c0-0.72,0.584-1.302,1.302-1.302h0.81c0.72,0,1.302,0.582,1.302,1.302v3.036H20.37z" fill="url(#SVGID_14)"/>
+<path d="M40.322,52.214c-1.494,0-2.711-1.216-2.711-2.712 v-3.036c0-1.498,1.217-2.714,2.711-2.714h0.812c1.5,0,2.714,1.216,2.714,2.714v3.036c0,1.496-1.214,2.712-2.714,2.712H40.322z" fill="url(#SVGID_12)" fill-opacity="0.4" stroke-opacity="0.4"/>
+<path d="M40.322,51.51c-1.108,0-2.008-0.9-2.008-2.008v-3.036 c0-1.11,0.899-2.006,2.008-2.006h0.812c1.11,0,2.009,0.896,2.009,2.006v3.036c0,1.107-0.898,2.008-2.009,2.008H40.322z" fill="url(#SVGID_13)" fill-opacity="0.7" stroke-opacity="0.7"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_17" x1="40.73" x2="40.73" y1="45.14" y2="50.82">
+<stop offset="0" stop-color="#FFC142"/>
+<stop offset="0.75" stop-color="#CF4E18"/>
+<stop offset="1" stop-color="#B52100"/>
+</linearGradient>
+<path d="M42.438,49.502c0,0.721-0.582,1.303-1.301,1.303h-0.813c-0.717,0-1.301-0.582-1.301-1.303 v-3.036c0-0.72,0.584-1.302,1.301-1.302h0.813c0.719,0,1.301,0.582,1.301,1.302V49.502z" fill="url(#SVGID_17)"/>
+<rect fill="none" height="60" width="60"/>
+</g>
+<g transform="matrix(1 0 0 1 30 30)">
+<linearGradient gradientTransform="matrix(1 0 0 -1 8.3999 5.04)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-1.0313" x2="14.444" y1="-3.8467" y2="-3.8467">
+<stop offset="0" style="stop-color:#8C8C8C"/>
+<stop offset="0.5333" style="stop-color:#B3B3B3"/>
+<stop offset="1" style="stop-color:#808080"/>
+</linearGradient>
+<path d="M15.106,3.081c-4.303,0-7.794,3.46-7.854,7.749v2.881h2.657V10.83 c0.061-2.818,2.366-5.092,5.198-5.092c2.831,0,5.136,2.273,5.198,5.092v3.863h2.655V10.83C22.898,6.541,19.408,3.081,15.106,3.081z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 8.3999 5.04)" gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-0.5474" x2="13.9592" y1="-4.0928" y2="-4.0928">
+<stop offset="0" style="stop-color:#CCCCCC"/>
+<stop offset="0.5152" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#CCCCCC"/>
+</linearGradient>
+<path d="M20.793,14.203V10.83c-0.066-3.084-2.617-5.582-5.687-5.582c-3.072,0-5.623,2.498-5.689,5.572v3.873 H7.743V10.83c0.057-4,3.359-7.258,7.363-7.258c4.003,0,7.304,3.258,7.361,7.265v3.366H20.793z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 8.3999 5.04)" gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="-0.2461" x2="13.6586" y1="-4.0938" y2="-4.0938">
+<stop offset="0" style="stop-color:#B4B4B4"/>
+<stop offset="0.5" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#BEBEBE"/>
+</linearGradient>
+<path d="M8.049,14.388V10.83c0.054-3.832,3.22-6.951,7.057-6.951c3.835,0,7.001,3.123,7.056,6.962v3.056H21.1 V10.83c-0.07-3.25-2.76-5.889-5.994-5.889c-3.236,0-5.925,2.634-5.995,5.872v3.574L8.049,14.388L8.049,14.388z" fill="url(#SVGID_3_)"/>
+<g>
+<rect fill="none" height="30" width="30"/>
+</g>
+<linearGradient gradientTransform="matrix(1 0 0 -1 8.3999 5.04)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-3.1958" x2="16.3945" y1="-15.3169" y2="-15.3169">
+<stop offset="0" style="stop-color:#ED8C0D"/>
+<stop offset="0.24" style="stop-color:#FFE692"/>
+<stop offset="0.75" style="stop-color:#ED8C0D"/>
+<stop offset="0.8667" style="stop-color:#FFB81F"/>
+<stop offset="1" style="stop-color:#ED8C0D"/>
+</linearGradient>
+<path d="M24.795,26.633c0,0.338-0.273,0.612-0.611,0.612H5.816c-0.338,0-0.612-0.274-0.612-0.612V14.082 c0-0.338,0.274-0.613,0.612-0.613h18.368c0.338,0,0.61,0.275,0.61,0.613L24.795,26.633L24.795,26.633z" fill="url(#SVGID_4_)"/>
+<path d="M24.184,13.469H5.816c-0.338,0-0.612,0.275-0.612,0.613v0.611 c0-0.338,0.274-0.611,0.612-0.611h18.368c0.338,0,0.61,0.273,0.61,0.611v-0.611C24.795,13.744,24.521,13.469,24.184,13.469z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<rect fill="#EE8F11" fill-opacity="0.5" height="2.144" stroke-opacity="0.5" width="19.591" x="5.204" y="16.225"/>
+<rect fill-opacity="0.25" height="0.308" stroke-opacity="0.25" width="19.591" x="5.204" y="16.225"/>
+<path d="M24.184,27.245H5.816c-0.338,0-0.612-0.274-0.612-0.612v-0.611 c0,0.338,0.274,0.611,0.612,0.611h18.368c0.338,0,0.61-0.273,0.61-0.611v0.611C24.795,26.971,24.521,27.245,24.184,27.245z" fill-opacity="0.25" stroke-opacity="0.25"/>
+<rect fill="#FEE38E" fill-opacity="0.25" height="0.307" stroke-opacity="0.25" width="19.591" x="5.204" y="18.367"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/resources/Keyguard_enabled_test.svg Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,1949 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="128"
+ height="128"
+ id="svg2606"
+ sodipodi:version="0.32"
+ inkscape:version="0.45.1"
+ version="1.0"
+ sodipodi:docname="image-png.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:docbase="/home/pinheiro/pics/oxygen/scalable/mimetypes"
+ inkscape:export-filename="/home/pinheiro/artwork/Oxygen/David/imagesharperflaped.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs2608">
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4273"
+ id="linearGradient6204"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.811924,0,0,0.273245,55.77949,-173.6434)"
+ x1="105.41402"
+ y1="673.69873"
+ x2="274.53336"
+ y2="691.37091" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient31860">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop31862" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop31864" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4670"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.616893,0,0,0.359632,55.77949,-173.6434)"
+ x1="322.5351"
+ y1="671.36499"
+ x2="305.54623"
+ y2="703.1059" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4668"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="388.85477"
+ y1="581.20758"
+ x2="355.6568"
+ y2="561.59204" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4666"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="391.99573"
+ y1="490.36765"
+ x2="343.76462"
+ y2="472.65836" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4664"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414913,0,0,0.534701,55.77949,-173.6434)"
+ x1="336.97562"
+ y1="514.06415"
+ x2="402.90091"
+ y2="491.13419" />
+ <linearGradient
+ id="linearGradient2797">
+ <stop
+ style="stop-color:#000000;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop2799" />
+ <stop
+ style="stop-color:#484848;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop2801" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2797"
+ id="linearGradient4662"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.470374,0,0,0.471655,55.77949,-173.6434)"
+ x1="313.85675"
+ y1="561.1123"
+ x2="355.78586"
+ y2="553.29712" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4660"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.616893,0,0,0.359632,55.77949,-173.6434)"
+ x1="306.2883"
+ y1="672.46191"
+ x2="333.49854"
+ y2="707.75031" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4658"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="391.99573"
+ y1="490.36765"
+ x2="343.76462"
+ y2="472.65836" />
+ <linearGradient
+ id="linearGradient4526">
+ <stop
+ id="stop4528"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:0.69902915;" />
+ <stop
+ id="stop4530"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4656"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="388.85477"
+ y1="581.20758"
+ x2="355.6568"
+ y2="561.59204" />
+ <linearGradient
+ id="linearGradient4255"
+ inkscape:collect="always">
+ <stop
+ id="stop4257"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop4259"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4255"
+ id="linearGradient4654"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.44753,0,0,0.49573,55.77949,-173.6434)"
+ x1="390.90793"
+ y1="442.95132"
+ x2="419.73016"
+ y2="470.11917" />
+ <linearGradient
+ id="linearGradient4516">
+ <stop
+ id="stop4518"
+ offset="0"
+ style="stop-color:#62004f;stop-opacity:1;" />
+ <stop
+ style="stop-color:#8d2778;stop-opacity:1;"
+ offset="0.14563107"
+ id="stop7294" />
+ <stop
+ id="stop4520"
+ offset="1"
+ style="stop-color:#ff00bf;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4516"
+ id="linearGradient4652"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.480452,0,0,0.461761,55.77949,-173.6434)"
+ x1="299.42841"
+ y1="480.61096"
+ x2="419.73056"
+ y2="503.82071" />
+ <linearGradient
+ id="linearGradient2373">
+ <stop
+ id="stop2375"
+ offset="0.0000000"
+ style="stop-color:#083e20;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2377"
+ offset="1.0000000"
+ style="stop-color:#245e3e;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2373"
+ id="linearGradient4650"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-0.505078,0.252536)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ id="linearGradient2367">
+ <stop
+ id="stop2369"
+ offset="0.0000000"
+ style="stop-color:#957d16;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2371"
+ offset="1.0000000"
+ style="stop-color:#927b16;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2367"
+ id="linearGradient4648"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ id="linearGradient2330">
+ <stop
+ id="stop2332"
+ offset="0.0000000"
+ style="stop-color:#54250d;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2344"
+ offset="1.0000000"
+ style="stop-color:#9f4f19;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2330"
+ id="linearGradient4646"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-4.61104,-5.494924)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ id="linearGradient2307">
+ <stop
+ id="stop2309"
+ offset="0"
+ style="stop-color:#8a1e51;stop-opacity:1;" />
+ <stop
+ id="stop2311"
+ offset="1.0000000"
+ style="stop-color:#7e1b4a;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2307"
+ id="linearGradient4644"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="285.55072"
+ y2="455.34595" />
+ <linearGradient
+ id="linearGradient4498">
+ <stop
+ id="stop4500"
+ offset="0.0000000"
+ style="stop-color:#1a3b23;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4510"
+ offset="0.34000000"
+ style="stop-color:#255431;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4508"
+ offset="0.42000002"
+ style="stop-color:#306d40;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4506"
+ offset="0.62000000"
+ style="stop-color:#58c977;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4504"
+ offset="0.63999999"
+ style="stop-color:#2f6a3f;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4502"
+ offset="1.0000000"
+ style="stop-color:#86ffa7;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4498"
+ id="linearGradient4642"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.402062,0,0,0.551792,55.77949,-173.6434)"
+ x1="410.68747"
+ y1="351.94495"
+ x2="496.01123"
+ y2="446.42474" />
+ <linearGradient
+ id="linearGradient4472">
+ <stop
+ id="stop4474"
+ offset="0.0000000"
+ style="stop-color:#6a5000;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4486"
+ offset="0.36499998"
+ style="stop-color:#b49b1d;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4484"
+ offset="0.47000000"
+ style="stop-color:#ffe63b;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4480"
+ offset="0.62000000"
+ style="stop-color:#fde55f;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4482"
+ offset="0.65999997"
+ style="stop-color:#af8800;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4476"
+ offset="1.0000000"
+ style="stop-color:#fcff96;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4472"
+ id="linearGradient4640"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.410011,0,0,0.541094,55.77949,-173.6434)"
+ x1="407.20193"
+ y1="340.1315"
+ x2="509.36542"
+ y2="443.40552" />
+ <linearGradient
+ id="linearGradient4440">
+ <stop
+ id="stop4442"
+ offset="0.0000000"
+ style="stop-color:#7c2b00;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4458"
+ offset="0.35250002"
+ style="stop-color:#a56116;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4456"
+ offset="0.42500001"
+ style="stop-color:#cf982c;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4452"
+ offset="0.61000001"
+ style="stop-color:#ffdb59;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4448"
+ offset="0.63999999"
+ style="stop-color:#d07100;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4444"
+ offset="1.0000000"
+ style="stop-color:#fff77c;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4440"
+ id="linearGradient4638"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.395673,0,0,0.560701,55.96081,-173.4701)"
+ x1="426.25494"
+ y1="315.43689"
+ x2="542.82642"
+ y2="426.81122" />
+ <linearGradient
+ id="linearGradient4402">
+ <stop
+ id="stop4404"
+ offset="0.0000000"
+ style="stop-color:#540d0d;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4462"
+ offset="0.34999999"
+ style="stop-color:#7e2316;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4460"
+ offset="0.43000001"
+ style="stop-color:#a93a1f;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4410"
+ offset="0.62000000"
+ style="stop-color:#ff6731;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4412"
+ offset="0.66000003"
+ style="stop-color:#9f2819;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4436"
+ offset="0.77000004"
+ style="stop-color:#e1734d;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4406"
+ offset="1.0000000"
+ style="stop-color:#ffb47c;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4402"
+ id="linearGradient4636"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.400366,0,0,0.554129,55.74058,-173.7136)"
+ x1="438.62411"
+ y1="302.29001"
+ x2="560.68457"
+ y2="400.81851" />
+ <linearGradient
+ id="linearGradient4352">
+ <stop
+ id="stop4354"
+ offset="0.0000000"
+ style="stop-color:#833c0b;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4356"
+ offset="1.0000000"
+ style="stop-color:#723409;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4352"
+ id="linearGradient4633"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.476543,0,0,0.46555,55.77949,-173.6434)"
+ x1="178.40228"
+ y1="433.92719"
+ x2="274.36346"
+ y2="433.92719" />
+ <linearGradient
+ id="linearGradient4392">
+ <stop
+ id="stop4394"
+ offset="0.0000000"
+ style="stop-color:#214b2c;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4396"
+ offset="1.0000000"
+ style="stop-color:#1a3b23;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4392"
+ id="linearGradient4631"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.534168,0,0,0.415327,55.82726,-173.6161)"
+ x1="170.54399"
+ y1="569.89191"
+ x2="233.7466"
+ y2="533.10059" />
+ <linearGradient
+ id="linearGradient4360">
+ <stop
+ id="stop4362"
+ offset="0"
+ style="stop-color:#83190b;stop-opacity:1;" />
+ <stop
+ id="stop4364"
+ offset="1.0000000"
+ style="stop-color:#721509;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4360"
+ id="linearGradient4629"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.465924,0,0,0.47616,55.77949,-173.6434)"
+ x1="177.6402"
+ y1="411.45197"
+ x2="275.48526"
+ y2="411.45197" />
+ <linearGradient
+ id="linearGradient4382">
+ <stop
+ id="stop4384"
+ offset="0.0000000"
+ style="stop-color:#7e5c08;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4386"
+ offset="1.0000000"
+ style="stop-color:#6e4b11;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4382"
+ id="linearGradient4627"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.484895,0,0,0.457531,55.82726,-173.6161)"
+ x1="185.36516"
+ y1="498.74353"
+ x2="246.5347"
+ y2="442.2757" />
+ <linearGradient
+ id="linearGradient4321">
+ <stop
+ id="stop4323"
+ offset="0.0000000"
+ style="stop-color:#b20033;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4337"
+ offset="0.46000001"
+ style="stop-color:#ff7cba;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4339"
+ offset="0.55000001"
+ style="stop-color:#9c225b;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4325"
+ offset="1.0000000"
+ style="stop-color:#ff7ca1;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4321"
+ id="linearGradient4625"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.310584,0,0,0.714313,55.77949,-173.6434)"
+ x1="683.10022"
+ y1="231.87573"
+ x2="720.63422"
+ y2="271.91464" />
+ <linearGradient
+ id="linearGradient4368">
+ <stop
+ id="stop4370"
+ offset="0"
+ style="stop-color:#8a1e51;stop-opacity:1;" />
+ <stop
+ id="stop4372"
+ offset="1.0000000"
+ style="stop-color:#7e1b4a;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4368"
+ id="linearGradient4623"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.441119,0,0,0.502935,55.77949,-173.6434)"
+ x1="185.72665"
+ y1="378.45386"
+ x2="266.98257"
+ y2="378.45386" />
+ <linearGradient
+ id="linearGradient4273">
+ <stop
+ id="stop4275"
+ offset="0.0000000"
+ style="stop-color:#590012;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4466"
+ offset="0.93000001"
+ style="stop-color:#a3211f;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4468"
+ offset="0.94000000"
+ style="stop-color:#650014;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4277"
+ offset="1.0000000"
+ style="stop-color:#ee6c68;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4273"
+ id="linearGradient4621"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.811924,0,0,0.273245,55.77949,-173.6434)"
+ x1="105.41402"
+ y1="673.69873"
+ x2="274.53336"
+ y2="691.37091" />
+ <linearGradient
+ id="linearGradient2441">
+ <stop
+ id="stop2443"
+ offset="0.0000000"
+ style="stop-color:#b0e9c0;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2445"
+ offset="1.0000000"
+ style="stop-color:#75df92;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2441"
+ id="linearGradient4619"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="273.20914"
+ y1="455.33145"
+ x2="276.42776"
+ y2="474.10953" />
+ <linearGradient
+ id="linearGradient2447">
+ <stop
+ id="stop2449"
+ offset="0.0000000"
+ style="stop-color:#ffd625;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2451"
+ offset="1.0000000"
+ style="stop-color:#fff0ab;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2447"
+ id="linearGradient4617"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="269.87866"
+ y1="468.31586"
+ x2="274.6358"
+ y2="450.71976" />
+ <linearGradient
+ id="linearGradient2453">
+ <stop
+ id="stop2455"
+ offset="0.0000000"
+ style="stop-color:#f6b94e;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2457"
+ offset="1.0000000"
+ style="stop-color:#ffc340;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2453"
+ id="linearGradient4615"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="262.95721"
+ y1="463.82385"
+ x2="271.31601"
+ y2="446.71695" />
+ <linearGradient
+ id="linearGradient2463">
+ <stop
+ id="stop2465"
+ offset="0.0000000"
+ style="stop-color:#fda5cf;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2467"
+ offset="1.0000000"
+ style="stop-color:#ce2c79;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2463"
+ id="linearGradient4613"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="258.13016"
+ y1="442.66943"
+ x2="247.02499"
+ y2="456.03308" />
+ <linearGradient
+ id="linearGradient2469">
+ <stop
+ id="stop2471"
+ offset="0.0000000"
+ style="stop-color:#f6754e;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2473"
+ offset="1.0000000"
+ style="stop-color:#ffa879;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2469"
+ id="linearGradient4611"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-12.28101,22.44028)"
+ x1="257.99484"
+ y1="431.38104"
+ x2="274.71591"
+ y2="420.00296" />
+ <linearGradient
+ id="linearGradient2785">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.0000000;"
+ offset="0.0000000"
+ id="stop2787" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.49803922;"
+ offset="0.36000001"
+ id="stop2793" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop2789" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2785"
+ id="linearGradient4609"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.453732,0,0,0.488954,57.57699,-173.4241)"
+ x1="277.5726"
+ y1="521.61127"
+ x2="316.56882"
+ y2="527.43481" />
+ <linearGradient
+ id="linearGradient2713">
+ <stop
+ id="stop2715"
+ offset="0.0000000"
+ style="stop-color:#b20033;stop-opacity:1.0000000;" />
+ <stop
+ id="stop2721"
+ offset="1.0000000"
+ style="stop-color:#ffe77c;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2713"
+ id="linearGradient4607"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.625932,1.597617)"
+ x1="542.85187"
+ y1="330.59"
+ x2="554.73236"
+ y2="359.37115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4605"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4603"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4601"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4599"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4597"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ id="linearGradient2823">
+ <stop
+ style="stop-color:#4d3719;stop-opacity:1;"
+ offset="0"
+ id="stop2825" />
+ <stop
+ style="stop-color:#ddae66;stop-opacity:1;"
+ offset="0.69999999"
+ id="stop2866" />
+ <stop
+ style="stop-color:#b2731c;stop-opacity:1;"
+ offset="1"
+ id="stop2827" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4595"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="261.13171"
+ y1="710.77112"
+ x2="267.06235"
+ y2="710.77136" />
+ <linearGradient
+ id="linearGradient3185">
+ <stop
+ id="stop3187"
+ offset="0"
+ style="stop-color:#50a3f7;stop-opacity:1;" />
+ <stop
+ id="stop3189"
+ offset="1"
+ style="stop-color:#002ea8;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3185"
+ id="linearGradient5341"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.3457951,0,0,2.1229785,538.33426,-11.05243)"
+ x1="-263.28992"
+ y1="56.713814"
+ x2="-263.14236"
+ y2="8.8705559" />
+ <linearGradient
+ id="linearGradient10207">
+ <stop
+ style="stop-color:#a2a2a2;stop-opacity:1;"
+ offset="0"
+ id="stop10209" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop10211" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_12_"
+ gradientUnits="userSpaceOnUse"
+ x1="96"
+ y1="104"
+ x2="88.000198"
+ y2="96.000198">
+ <stop
+ offset="0"
+ style="stop-color:#888A85"
+ id="stop83" />
+ <stop
+ offset="0.0072"
+ style="stop-color:#8C8E89"
+ id="stop85" />
+ <stop
+ offset="0.0673"
+ style="stop-color:#ABACA9"
+ id="stop87" />
+ <stop
+ offset="0.1347"
+ style="stop-color:#C5C6C4"
+ id="stop89" />
+ <stop
+ offset="0.2652576"
+ style="stop-color:#DBDBDA"
+ id="stop91" />
+ <stop
+ offset="0.37646064"
+ style="stop-color:#EBEBEB"
+ id="stop93" />
+ <stop
+ offset="0.48740286"
+ style="stop-color:#F7F7F6"
+ id="stop95" />
+ <stop
+ offset="0.6324091"
+ style="stop-color:#FDFDFD"
+ id="stop97" />
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop99" />
+ </linearGradient>
+ <radialGradient
+ id="XMLID_8_"
+ cx="102"
+ cy="112.3047"
+ r="139.55859"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#b7b8b9;stop-opacity:1;"
+ id="stop41" />
+ <stop
+ offset="0.18851049"
+ style="stop-color:#ECECEC"
+ id="stop47" />
+ <stop
+ offset="0.25718147"
+ style="stop-color:#FAFAFA"
+ id="stop49" />
+ <stop
+ offset="0.30111277"
+ style="stop-color:#FFFFFF"
+ id="stop51" />
+ <stop
+ offset="0.5313"
+ style="stop-color:#FAFAFA"
+ id="stop53" />
+ <stop
+ offset="0.8449"
+ style="stop-color:#EBECEC"
+ id="stop55" />
+ <stop
+ offset="1"
+ style="stop-color:#E1E2E3"
+ id="stop57" />
+ </radialGradient>
+ <filter
+ inkscape:collect="always"
+ x="-0.19200002"
+ width="1.3839999"
+ y="-0.19199999"
+ height="1.3839999"
+ id="filter6697">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.9447689"
+ id="feGaussianBlur6699" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath7084">
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 72,88 L 40,120 L 32,120 L 32,80 L 72,80 L 72,88 z"
+ id="path7086" />
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_8_"
+ id="radialGradient9437"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.9996653,-7.999998,16.003016)"
+ cx="114"
+ cy="95.028786"
+ r="139.55859"
+ fx="114"
+ fy="95.028786" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10207"
+ id="linearGradient10213"
+ x1="98.617439"
+ y1="106.41443"
+ x2="91.228737"
+ y2="99.254974"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter2770">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="2.0786429"
+ id="feGaussianBlur2772" />
+ </filter>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3185"
+ id="linearGradient4882"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.3457951,0,0,2.1229785,538.33426,-11.05243)"
+ x1="-263.14236"
+ y1="72.386543"
+ x2="-263.14236"
+ y2="-21.190172" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4884"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="261.13171"
+ y1="710.77112"
+ x2="267.06235"
+ y2="710.77136" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4886"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4888"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4890"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4892"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2823"
+ id="linearGradient4894"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.121629,0.891561)"
+ x1="229.5614"
+ y1="692.33807"
+ x2="276.19287"
+ y2="715.24652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2713"
+ id="linearGradient4896"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.625932,1.597617)"
+ x1="542.85187"
+ y1="330.59"
+ x2="554.73236"
+ y2="359.37115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2785"
+ id="linearGradient4898"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.453732,0,0,0.488954,57.57699,-173.4241)"
+ x1="277.5726"
+ y1="521.61127"
+ x2="316.56882"
+ y2="527.43481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2469"
+ id="linearGradient4900"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-12.28101,22.44028)"
+ x1="257.99484"
+ y1="431.38104"
+ x2="274.71591"
+ y2="420.00296" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2463"
+ id="linearGradient4902"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="258.13016"
+ y1="442.66943"
+ x2="247.02499"
+ y2="456.03308" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2453"
+ id="linearGradient4904"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="262.95721"
+ y1="463.82385"
+ x2="271.31601"
+ y2="446.71695" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2447"
+ id="linearGradient4906"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="269.87866"
+ y1="468.31586"
+ x2="274.6358"
+ y2="450.71976" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2441"
+ id="linearGradient4908"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="273.20914"
+ y1="455.33145"
+ x2="276.42776"
+ y2="474.10953" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4273"
+ id="linearGradient4910"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.811924,0,0,0.273245,55.77949,-173.6434)"
+ x1="105.41402"
+ y1="673.69873"
+ x2="274.53336"
+ y2="691.37091" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4368"
+ id="linearGradient4912"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.441119,0,0,0.502935,55.77949,-173.6434)"
+ x1="185.72665"
+ y1="378.45386"
+ x2="266.98257"
+ y2="378.45386" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4321"
+ id="linearGradient4914"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.310584,0,0,0.714313,55.77949,-173.6434)"
+ x1="683.10022"
+ y1="231.87573"
+ x2="720.63422"
+ y2="271.91464" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4382"
+ id="linearGradient4916"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.484895,0,0,0.457531,55.82726,-173.6161)"
+ x1="185.36516"
+ y1="498.74353"
+ x2="246.5347"
+ y2="442.2757" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4360"
+ id="linearGradient4918"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.465924,0,0,0.47616,55.77949,-173.6434)"
+ x1="177.6402"
+ y1="411.45197"
+ x2="275.48526"
+ y2="411.45197" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4392"
+ id="linearGradient4920"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.534168,0,0,0.415327,55.82726,-173.6161)"
+ x1="170.54399"
+ y1="569.89191"
+ x2="233.7466"
+ y2="533.10059" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4352"
+ id="linearGradient4922"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.476543,0,0,0.46555,55.77949,-173.6434)"
+ x1="178.40228"
+ y1="433.92719"
+ x2="274.36346"
+ y2="433.92719" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4402"
+ id="linearGradient4924"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.400366,0,0,0.554129,55.74058,-173.7136)"
+ x1="438.62411"
+ y1="302.29001"
+ x2="560.68457"
+ y2="400.81851" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4440"
+ id="linearGradient4926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.395673,0,0,0.560701,55.96081,-173.4701)"
+ x1="426.25494"
+ y1="315.43689"
+ x2="542.82642"
+ y2="426.81122" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4472"
+ id="linearGradient4928"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.410011,0,0,0.541094,55.77949,-173.6434)"
+ x1="407.20193"
+ y1="340.1315"
+ x2="509.36542"
+ y2="443.40552" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4498"
+ id="linearGradient4930"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.402062,0,0,0.551792,55.77949,-173.6434)"
+ x1="410.68747"
+ y1="351.94495"
+ x2="496.01123"
+ y2="446.42474" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2307"
+ id="linearGradient4932"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="285.55072"
+ y2="455.34595" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2330"
+ id="linearGradient4934"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-4.61104,-5.494924)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2367"
+ id="linearGradient4936"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.852829,1.172568)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2373"
+ id="linearGradient4938"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.852829,0,0,1.172568,-0.505078,0.252536)"
+ x1="249.71024"
+ y1="470.67639"
+ x2="268.70541"
+ y2="444.59937" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4516"
+ id="linearGradient4940"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.480452,0,0,0.461761,55.77949,-173.6434)"
+ x1="299.42841"
+ y1="480.61096"
+ x2="419.73056"
+ y2="503.82071" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4255"
+ id="linearGradient4942"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.44753,0,0,0.49573,55.77949,-173.6434)"
+ x1="390.90793"
+ y1="442.95132"
+ x2="419.73016"
+ y2="470.11917" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4944"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="388.85477"
+ y1="581.20758"
+ x2="355.6568"
+ y2="561.59204" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4946"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="391.99573"
+ y1="490.36765"
+ x2="343.76462"
+ y2="472.65836" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4948"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.616893,0,0,0.359632,55.77949,-173.6434)"
+ x1="306.2883"
+ y1="672.46191"
+ x2="333.49854"
+ y2="707.75031" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2797"
+ id="linearGradient4950"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.470374,0,0,0.471655,55.77949,-173.6434)"
+ x1="313.85675"
+ y1="561.1123"
+ x2="355.78586"
+ y2="553.29712" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4952"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414913,0,0,0.534701,55.77949,-173.6434)"
+ x1="336.97562"
+ y1="514.06415"
+ x2="402.90091"
+ y2="491.13419" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4954"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="391.99573"
+ y1="490.36765"
+ x2="343.76462"
+ y2="472.65836" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4956"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.544849,0,0,0.407185,55.77949,-173.6434)"
+ x1="388.85477"
+ y1="581.20758"
+ x2="355.6568"
+ y2="561.59204" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4526"
+ id="linearGradient4958"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.616893,0,0,0.359632,55.77949,-173.6434)"
+ x1="322.5351"
+ y1="671.36499"
+ x2="305.54623"
+ y2="703.1059" />
+ <linearGradient
+ y2="154.50412"
+ x2="210.98608"
+ y1="154.50412"
+ x1="155.21127"
+ gradientTransform="matrix(0.9295551,0,0,0.9288601,-84.40008,12.847771)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient9061"
+ xlink:href="#linearGradient6001"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="167.16171"
+ x2="83.742836"
+ y1="154.27817"
+ x1="82.802177"
+ gradientTransform="matrix(0.6260112,0,0,0.2001745,68.175377,138.95724)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient8903"
+ xlink:href="#linearGradient3426"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient3134">
+ <stop
+ id="stop3136"
+ offset="0"
+ style="stop-color:#ffd500;stop-opacity:1;" />
+ <stop
+ id="stop3138"
+ offset="1"
+ style="stop-color:#ff7e00;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3146">
+ <stop
+ id="stop3148"
+ offset="0"
+ style="stop-color:#ff7e00;stop-opacity:1;" />
+ <stop
+ id="stop3150"
+ offset="1"
+ style="stop-color:#ffd500;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3158">
+ <stop
+ id="stop3160"
+ offset="0"
+ style="stop-color:#fff8de;stop-opacity:1;" />
+ <stop
+ id="stop3162"
+ offset="1"
+ style="stop-color:#ffff00;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3426"
+ inkscape:collect="always">
+ <stop
+ id="stop3428"
+ offset="0"
+ style="stop-color:#555555;stop-opacity:1;" />
+ <stop
+ id="stop3430"
+ offset="1"
+ style="stop-color:#555555;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6001"
+ inkscape:collect="always">
+ <stop
+ id="stop6003"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop6005"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7545">
+ <stop
+ id="stop7547"
+ offset="0"
+ style="stop-color:#323232;stop-opacity:1;" />
+ <stop
+ id="stop7549"
+ offset="1"
+ style="stop-color:#101010;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4318">
+ <path
+ style="opacity:0.48888891;fill:#f9f2ea;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 1.954599,2.1834159 L 1.954599,187.15135 L 256.71404,187.15135 L 256.71404,2.1834159 L 1.954599,2.1834159 z "
+ id="path4320" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath31854">
+ <path
+ style="opacity:0.48888891;fill:#f9f2ea;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 12,28 L 12,108 L 92.5,108 L 116,82.75 L 116,28 L 12,28 z "
+ id="path31856"
+ sodipodi:nodetypes="cccccc" />
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient31860"
+ id="radialGradient31866"
+ cx="101.5"
+ cy="92.997192"
+ fx="101.5"
+ fy="92.997192"
+ r="21.5"
+ gradientTransform="matrix(0.7247027,0.6890616,-0.6744186,0.7093023,90.661709,-42.65288)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6001"
+ id="linearGradient8360"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.4103611,0,0,0.4330773,-28.25306,27.952127)"
+ x1="121.40629"
+ y1="177.05572"
+ x2="177.1811"
+ y2="177.05572" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="-126.82503"
+ inkscape:cy="44.445553"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="128px"
+ height="128px"
+ gridspacingx="4px"
+ gridspacingy="4px"
+ gridempspacing="2"
+ showgrid="true"
+ inkscape:grid-points="true"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1016"
+ inkscape:window-height="692"
+ inkscape:window-x="351"
+ inkscape:window-y="46"
+ showborder="true">
+ <sodipodi:guide
+ orientation="horizontal"
+ position="40.875"
+ id="guide5004" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2611">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Livello 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ style="opacity:0.5;fill:#000000;fill-opacity:1;filter:url(#filter2770)"
+ d="M 16,8 L 16,96.626087 C 16,96.626087 94.51625,96.626087 94.51625,96.626087 L 94.5475,96.626087 C 94.547503,96.626087 106.45375,86.719837 111.95375,81.219837 C 117.45375,75.719837 127.36,63.813587 127.36,63.813587 L 127.36,63.782337 L 127.36,8 L 16,8 z "
+ id="path7865"
+ sodipodi:nodetypes="csccscccc"
+ transform="matrix(1.0416667,0,0,1.0267857,-10.666667,14.785711)" />
+ <path
+ style="fill:#ffffff;fill-opacity:1"
+ d="M 8.000001,24 L 8,112 C 8,112 87.146418,112 87.146418,112 L 120,79.14642 L 120,24 L 8.000001,24 z "
+ id="path34"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:url(#radialGradient9437);fill-opacity:1"
+ d="M 10.000002,25.000003 C 9.449002,25.000003 9.000002,25.448853 9.000002,25.999668 L 9.000002,109.96352 C 9.000002,110.51533 9.449002,110.96318 10.000002,110.96318 L 85.171999,110.96318 C 85.434999,110.96318 87.934679,111.08131 88.12068,110.89438 L 118.707,80.094202 C 118.894,79.907264 119,77.40942 119,77.146508 L 119,25.999668 C 119,25.448853 118.552,25.000003 118,25.000003 L 10.000002,25.000003 z "
+ id="path59"
+ sodipodi:nodetypes="ccccccccccc" />
+ <g
+ id="g4805"
+ transform="matrix(0.9166667,0,0,0.9166667,-112.66667,13.33333)">
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="rect3183"
+ d="M 136,16 L 249.45454,16 L 249.45454,78.40711 L 223.14295,103.27273 L 136,103.27273 L 136,16 z "
+ style="fill:url(#linearGradient4882);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:4;stroke-opacity:1" />
+ <g
+ transform="matrix(0.5620693,0,0,0.6015749,58.600837,15.161068)"
+ id="g4460">
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5138334px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 187.22261,104.20627 C 187.22261,104.20627 187.22261,102.23277 187.22261,104.20627 z "
+ id="path4462" />
+ <path
+ style="fill:#422f17;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5138334px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 183.201,113.07522 C 193.37175,108.10319 193.63086,108.52844 200.46351,113.69314 L 200.29499,105.21496 C 200.35117,105.10532 201.41844,103.68002 201.41844,105.21496 C 201.41844,106.7499 201.64313,115.74027 201.64313,115.74027 C 201.64313,115.74027 201.13758,128.18425 199.34006,129.171 C 197.99193,129.60955 189.06054,134.37883 189.06054,134.37883 C 189.06054,134.37883 187.26303,135.25594 185.91489,134.37883 C 184.56675,133.50173 176.92733,128.0198 176.92733,128.0198 C 176.92733,128.0198 175.80388,126.92341 176.47795,125.60775 C 177.15201,124.29208 186.54379,99.322577 188.7681,101.64836"
+ id="path4464"
+ sodipodi:nodetypes="ccccccccccz" />
+ <g
+ id="g4466"
+ style="fill:url(#linearGradient8360);fill-opacity:1"
+ transform="matrix(0.476791,0,0,0.465307,56.04458,-173.9504)">
+ <path
+ style="fill:url(#linearGradient4886);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 263.1947,617.63145 L 282.04481,607.26389 C 282.04481,607.26389 286.52172,604.90763 291.23424,608.2064 C 295.94677,611.50517 305.37183,619.28084 305.37183,619.28084 L 306.19652,623.28649 L 290.0847,610.59125 C 289.08502,610.42464 286.38369,608.94186 283.45857,609.85578 C 280.86668,611.26954 261.20025,622.17737 261.20025,622.17737 L 263.1947,617.63145 z "
+ id="path4468"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient4888);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 260.84963,623.11423 L 282.16544,611.73514 C 282.16544,611.73514 286.1711,608.90763 290.88362,612.2064 C 295.59615,615.50517 306.90623,624.6946 305.96372,624.22335 L 305.6995,630.43604 L 287.34923,616.32704 C 287.34923,616.32704 283.81483,614.67765 281.22294,616.09141 C 278.63105,617.50517 258.13155,628.57961 258.13155,628.57961 L 260.84963,623.11423 z "
+ id="path4471"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient4890);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 257.89592,629.40713 L 280.0448,617.86143 C 280.0448,617.86143 284.05046,615.03392 288.76298,618.33269 C 293.47551,621.63146 306.35759,631.99903 305.41508,631.52778 L 304.9236,637.22041 L 285.22859,622.45333 C 285.22859,622.45333 281.69419,620.80394 279.1023,622.2177 C 276.51041,623.63146 256.01091,634.7059 256.01091,634.7059 L 257.89592,629.40713 z "
+ id="path4473"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient4892);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 255.53966,635.29779 L 277.68854,623.75209 C 277.68854,623.75209 281.6942,620.92458 286.40672,624.22335 C 291.11925,627.52212 305.67931,638.38115 304.7368,637.9099 L 303.84308,644.36659 L 282.87233,628.34399 C 282.87233,628.34399 279.33793,626.6946 276.74604,628.10836 C 274.15415,629.52212 253.65465,640.59656 253.65465,640.59656 L 255.53966,635.29779 z "
+ id="path4475"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient4894);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 253.29839,641.66534 L 275.44727,629.41277 C 275.44727,629.41277 279.92418,626.22344 284.6367,630.35528 C 289.34923,633.65405 303.72244,644.96412 303.72244,644.96412 C 303.80098,647.32038 302.70139,649.79446 301.13055,651.32603 C 301.44472,649.51956 304.11515,648.41997 300.42367,645.55318 L 282.32022,632.57352 C 281.32055,632.07368 278.78582,630.92413 276.19393,632.33789 C 273.60204,633.75165 253.76964,644.49286 253.76964,644.49286 L 253.29839,641.66534 z "
+ id="path4477"
+ sodipodi:nodetypes="cccccccccc" />
+ </g>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.5138334px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.55940594"
+ d="M 202.05456,103.14424 C 202.05456,103.14424 216.03593,126.86726 225.09204,93.530989"
+ id="path4479"
+ sodipodi:nodetypes="cc" />
+ <g
+ id="g4481"
+ transform="matrix(0.476791,0,0,0.465307,55.77949,-173.6434)">
+ <path
+ style="fill:url(#linearGradient4896);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 338.22446,521.19983 C 338.22446,521.19983 377.21191,565.18567 333.22607,578.18149 C 329.89381,579.18117 338.22446,521.19983 338.22446,521.19983 z "
+ id="path4483"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:#0b6c46;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 275.0748,560.94594 L 275.21707,570.0003 C 283.27792,574.86011 293.10363,578.29621 303.96622,579.55254 C 314.81983,580.80783 325.18449,579.70093 334.1368,576.81477 L 333.99453,567.76041 C 325.93737,562.90699 284.03215,558.05439 275.0748,560.94594 z "
+ id="path4485"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#bea613;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 275.68002,559.47428 L 275.57592,566.89757 C 283.50748,571.92005 293.36967,575.46859 304.29245,576.73188 C 315.20005,577.99342 325.63274,576.80211 334.49332,573.73219 L 334.60208,566.26861 C 326.67617,561.25722 284.54863,556.39486 275.68002,559.47428 z "
+ id="path4487"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#b37711;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 276.88308,547.60287 L 276.00468,563.19042 C 283.77731,568.47998 293.58498,572.288 304.65829,573.56871 C 315.7236,574.84849 326.15339,573.37529 334.92441,570.00489 L 335.80281,554.41734 C 328.03268,549.13385 285.65791,544.22713 276.88308,547.60287 z "
+ id="path4489"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#ac182a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 277.50759,547.18114 L 276.67811,557.36777 C 284.00502,563.19427 293.8856,567.44309 305.21521,568.75344 C 316.54212,570.06348 327.13535,568.18047 335.59784,564.18225 L 336.42732,553.99561 C 329.10088,548.17129 285.97104,543.1809 277.50759,547.18114 z "
+ id="path4491"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#be2873;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 278.81487,540.62031 L 277.33523,551.68616 C 284.05502,558.16146 294.04935,562.94986 305.73019,564.30083 C 317.38774,565.64911 328.23427,563.29207 336.2503,558.54093 L 337.73926,547.39449 C 331.01935,540.93903 286.83532,535.84983 278.81487,540.62031 z "
+ id="path4493"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#ab0d2d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 279.47201,530.46825 L 278.30926,543.26448 C 283.43866,551.13384 293.77039,557.26207 306.37566,558.71996 C 318.97018,560.1766 330.43404,556.57932 337.22666,550.0991 L 338.39407,537.26258 C 333.25996,529.40295 286.26227,523.97748 279.47201,530.46825 z "
+ id="path4495"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#8d0b1e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 280.98901,520.09478 L 279.05493,536.81726 C 283.24905,544.62442 293.92558,550.97115 307.09569,552.49436 C 320.24075,554.01468 332.09271,550.29201 337.97,543.67203 L 339.9134,526.86896 C 335.70236,519.08219 286.85447,513.45108 280.98901,520.09478 z "
+ id="path4497"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#790a59;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 281.88381,512.35812 L 279.94973,529.0806 C 284.14385,536.88776 294.82038,543.23448 307.9905,544.7577 C 321.13555,546.27801 332.98752,542.55535 338.8648,535.93536 L 340.8082,519.1323 C 336.59716,511.34553 287.74927,505.71442 281.88381,512.35812 z "
+ id="path4499"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#002c91;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 282.92775,503.33201 L 280.99367,520.05449 C 285.18778,527.86165 295.86432,534.20837 309.03443,535.73159 C 322.17949,537.25191 334.03145,533.52924 339.90874,526.90926 L 341.85214,510.10619 C 337.6411,502.31942 288.79321,496.68831 282.92775,503.33201 z "
+ id="path4501"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#0b6c46;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 248.40625,547.75 L 253.90625,562.53125 L 267.34375,573.6875 C 270.1161,572.87512 272.81821,571.85611 275.375,570.46875 L 277.1875,555.125 C 273.53213,551.65247 260.03014,548.67004 248.40625,547.75 z "
+ id="path4503" />
+ <path
+ style="fill:#bea613;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 247.0625,544.125 L 253.90625,562.53125 L 264.21875,571.09375 C 268.30846,570.26259 272.21002,568.75831 275.84375,566.65625 L 277.4375,551.75 C 273.68372,547.98759 259.044,544.83986 247.0625,544.125 z "
+ id="path4505" />
+ <path
+ style="fill:#9f690f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 247.5,545.3125 L 253.90625,562.53125 L 260.09375,567.65625 C 265.91841,567.12148 271.4714,565.18231 276.4375,562.03125 L 277.25,553.15625 C 273.64896,549.24433 259.39196,546.0513 247.5,545.3125 z "
+ id="path4507" />
+ <path
+ style="fill:#a01728;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 242.34375,533.09375 C 238.15485,533.3011 234.78501,534.0274 233.0625,535.34375 L 232.8125,537.59375 L 243.25,533.875 L 253.5625,561.59375 C 262.23387,562.6764 270.53733,560.01218 277.34375,554.8125 L 278.75,541.53125 C 274.73183,536.34031 254.91044,532.4717 242.34375,533.09375 z "
+ id="path4509" />
+ <path
+ style="fill:#ae055a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 233.90026,527.51949 L 232.5274,541.56434 C 237.36729,549.31327 244.88205,554.85296 253.9423,556.07987 C 262.9845,557.30434 271.63361,553.97964 278.22229,547.80305 L 279.60771,533.65824 C 274.76644,525.93383 240.49366,521.31884 233.90026,527.51949 z "
+ id="path4511"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#9e0c2a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 235.3218,518.43899 L 233.84056,531.11784 C 237.34375,540.65021 245.03521,547.83318 254.81251,549.15719 C 264.58147,550.48008 273.79512,545.59896 279.53859,537.33156 L 281.02611,524.60272 C 277.51859,515.08257 241.06411,510.15862 235.3218,518.43899 z "
+ id="path4513"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#720818;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 237.45332,502.37747 L 234.84585,523.12052 C 237.62058,532.61147 245.56782,540.05144 255.78324,541.43478 C 265.97922,542.81549 275.50503,537.76468 280.54074,529.35923 L 283.16077,508.51621 C 280.37145,499.05111 242.48132,493.94315 237.45332,502.37747 z "
+ id="path4515"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#67094d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 238.65967,492.78069 L 236.0522,513.52374 C 238.82693,523.01468 246.77417,530.45465 256.98959,531.838 C 267.18557,533.21871 276.71138,528.1679 281.74708,519.76244 L 284.36712,498.91943 C 281.5778,489.45433 243.68766,484.34636 238.65967,492.78069 z "
+ id="path4517"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#0035a8;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 240.06707,481.58444 L 237.4596,502.32749 C 240.23433,511.81844 248.18158,519.25841 258.397,520.64175 C 268.59297,522.02246 278.11878,516.97165 283.15449,508.5662 L 285.77453,487.72318 C 282.98521,478.25808 245.09507,473.15011 240.06707,481.58444 z "
+ id="path4519"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#00a867;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 240.87131,475.18658 L 238.26383,495.92963 C 241.03856,505.42058 248.31935,510.86119 258.53477,512.24454 C 268.73075,513.62525 278.92301,510.5738 283.95872,502.16834 L 286.57876,481.32533 C 283.78944,471.86023 245.8993,466.75226 240.87131,475.18658 z "
+ id="path4521"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#006145;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+ d="M 284.92775,491.33201 L 282.99367,508.05449 C 287.18778,515.86165 297.86432,522.20837 311.03443,523.73159 C 324.17949,525.25191 336.03145,521.52924 341.90874,514.90926 L 343.85214,498.10619 C 339.6411,490.31942 290.79321,484.68831 284.92775,491.33201 z "
+ id="path4523"
+ sodipodi:nodetypes="cccccc" />
+ </g>
+ <path
+ style="fill:url(#linearGradient4898);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 190.03122,64.297807 C 190.03122,64.297807 182.72882,69.231546 180.36959,90.17252 C 184.97572,95.764091 211.15199,97.518308 211.15199,97.518308 C 211.15199,97.518308 205.42243,73.836368 208.90511,64.736364"
+ id="path4525"
+ sodipodi:nodetypes="cccc" />
+ <g
+ id="g4527"
+ transform="matrix(-0.774175,-0.401016,-0.348567,0.890665,597.6601,-302.2593)">
+ <path
+ style="fill:url(#linearGradient4900);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 207.7583,506.50835 C 206.40141,508.14027 202.6659,520.80791 217.80808,536.11211 C 209.99845,521.01422 210.25164,515.35549 212.77702,513.84026 C 211.26179,512.57757 211.79891,504.74058 207.7583,506.50835 z "
+ id="path4529"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient4902);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 210.95084,511.50794 C 210.95084,511.50794 205.53158,526.18807 221.81423,540.68643 C 214.0046,525.58854 214.65742,520.7694 217.1828,519.25417 C 215.66757,517.99148 214.99145,509.74017 210.95084,511.50794 z "
+ id="path4531"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient4904);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 215.63896,514.69258 C 214.26567,516.28385 212.37855,522.69625 221.02957,539.78214 C 224.42558,543.33631 225.80981,544.21794 228.40596,546.12917 C 225.88057,540.57332 225.18702,531.44512 225.18702,531.44512 C 225.18702,531.44511 222.30922,521.66678 215.63896,514.69258 z "
+ id="path4533"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient4906);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.25,520.1875 C 218.87671,521.77877 217.69273,527.32036 226.34375,544.40625 C 226.73044,544.6265 227.16007,545.21026 234.57596,551.27054 C 232.05057,545.71469 229.79806,536.94004 229.79806,536.94004 C 229.79806,536.94003 226.92026,527.1617 220.25,520.1875 z "
+ id="path4535"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient4908);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 226.43242,527.87754 C 225.19989,531.53305 222.40285,535.39769 233.4082,550.0827 C 236.39784,552.68732 237.75066,552.31339 241.50027,554.94898 C 238.97488,549.39313 233.83867,536.94004 233.83867,536.94004 C 233.83867,536.94003 230.56317,532.74151 226.43242,527.87754 z "
+ id="path4537"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+ <path
+ style="fill:url(#linearGradient6204);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 147.23396,1.5882927 C 147.13465,2.646801 146.98467,5.018187 147.77035,8.3934076 C 146.71944,8.7518336 142.71094,10.274486 139.09871,21.320218 C 141.74768,16.6199 141.9984,15.68199 148.50043,10.981678 C 148.72205,9.0350846 149.12685,6.368708 151.61447,1.5882927 L 147.23396,1.5882927 z M 266.35721,1.5882927 C 267.93182,4.3792274 271.22943,10.952536 270.11194,15.67837 C 269.87112,16.383427 269.32225,18.148541 269.32225,18.324804 C 271.12838,19.441122 277.62699,22.665569 280.03515,37.824075 C 280.45658,31.654914 282.6271,21.609411 270.82712,13.0901 C 272.37122,8.9999353 272.85313,6.0215192 272.37669,1.5882927 L 266.35721,1.5882927 z "
+ id="path4539" />
+ <path
+ style="fill:url(#linearGradient4912);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 151.33138,1.5882927 C 150.48086,3.2294259 148.16646,7.8677178 148.47063,10.923514 C 143.724,13.810912 141.42889,16.685518 139.20301,21.291136 L 139.21791,21.203891 C 139.21791,21.203896 136.26512,28.807398 138.60702,37.126115 C 138.99068,33.147428 137.3331,25.956979 148.85802,14.558725 C 148.80375,14.543877 150.01326,17.8718 151.25688,20.49139 C 151.54908,19.347051 149.72571,9.4677224 164.91992,1.5882927 L 151.33138,1.5882927 z "
+ id="path4541" />
+ <path
+ style="fill:url(#linearGradient4914);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 257.78987,1.5882927 C 267.38505,10.987587 266.20821,24.155682 266.20821,24.155682 C 266.20821,24.155682 267.57261,21.334763 267.74288,21.334758 C 281.53576,34.296881 273.18127,52.408537 273.18128,52.408542 C 273.18128,52.408542 277.96196,48.41812 280.00535,38.114892 C 279.32422,24.654226 271.48484,19.4673 269.44145,18.179395 C 269.44145,18.179395 270.46314,16.357639 270.63343,13.366376 C 269.43017,7.1595205 267.60358,3.4581243 266.49131,1.5882927 L 257.78987,1.5882927 z "
+ id="path4543" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path4545"
+ d="M 153.27873,24.934713 C 153.27873,24.934713 140.44556,34.402142 145.39585,50.498089 C 147.26897,55.31734 151.52603,59.471866 151.52603,59.471866 C 151.52603,59.471866 143.35247,47.340646 155.95337,32.051988 C 155.95337,32.051988 158.67789,38.865409 164.12693,48.836277 C 166.68117,44.183203 172.98162,38.865414 185.58253,31.553445 C 198.18343,24.241475 184.56083,18.258958 184.56083,18.258958 C 184.56083,18.258958 159.01846,24.687886 159.5293,40.028681 C 158.50761,38.865414 154.07171,26.714033 153.27873,24.934713 z "
+ style="fill:url(#linearGradient4916);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient4918);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 164.57723,1.5882927 C 158.84878,4.5412985 150.6096,10.478388 151.22708,20.229654 C 151.14194,20.229659 148.91762,14.427858 148.91762,14.427858 C 148.91762,14.427858 137.51508,22.973719 138.62192,36.849839 C 139.47333,41.419819 142.00415,45.574345 142.00415,45.574345 C 142.00415,45.574345 137.00423,29.785064 150.54169,19.066387 C 151.91856,23.362762 154.14866,27.917015 155.7268,31.382482 C 155.64166,30.883942 151.04828,16.316092 183.82766,6.0959543 C 183.96763,4.234824 183.90823,2.8077135 183.76807,1.5882927 L 164.57723,1.5882927 z "
+ id="path4547" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path4549"
+ d="M 151.52603,59.638046 C 151.52603,59.638046 155.00221,63.86141 156.19419,64.692318 C 156.96046,65.523221 150.06402,54.085235 160.11069,40.624567 C 161.91681,46.147436 169.98707,60.322932 169.98707,60.322932 C 169.98707,60.322932 176.55756,50.498089 186.77451,46.509742 C 191.37213,33.54762 187.28535,34.877067 185.41224,31.553445 C 183.36885,31.885804 164.12693,45.014111 163.95665,48.503913 C 163.61608,48.420823 157.18062,34.137601 156.07378,32.060336 C 155.05208,31.063253 143.69303,46.675922 151.52603,59.638046 z "
+ style="fill:url(#linearGradient4920);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path4551"
+ d="M 184.25763,6.2665591 C 183.30647,5.2576619 150.9578,16.177952 155.56502,30.778266 C 151.47825,22.30303 150.71197,19.145591 150.71197,19.145591 C 150.47116,18.205527 137.51508,28.202457 141.94243,45.48529 C 143.04926,47.811825 144.6755,50.165138 145.59923,50.960911 C 144.74781,47.969652 142.45327,34.018795 153.09593,25.128109 C 156.07587,32.606258 157.72277,35.774491 159.6372,39.737785 C 160.48861,38.906882 157.43814,27.537734 185.0239,18.065414 C 188.25927,9.8394515 184.25763,6.2665591 184.25763,6.2665591 z "
+ style="fill:url(#linearGradient4922);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient4924);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 241.40018,1.5882927 C 263.39065,16.032799 261.37514,29.427117 261.6191,32.284014 C 263.40706,30.123659 264.89064,27.475154 265.65692,26.394972 C 276.12929,39.440189 270.04808,56.04583 269.36695,56.959828 C 270.04808,56.959828 272.50441,53.646586 273.27068,52.234051 C 282.55107,30.713603 269.19028,20.896463 267.74288,21.145728 C 266.97661,22.059725 266.46151,23.563663 266.46151,23.646753 C 266.51992,10.990844 261.44708,4.4820603 258.22196,1.5882927 L 241.40018,1.5882927 z "
+ id="path4553" />
+ <path
+ style="fill:url(#linearGradient4926);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 224.71249,1.5882927 C 222.34772,2.9998434 222.30409,5.0218024 229.22711,7.9717232 C 246.68625,17.137326 254.14503,30.950826 256.55319,39.176374 C 257.03482,38.588835 261.42603,32.608072 261.87239,32.109524 C 271.24429,49.356086 263.52626,62.589205 262.33428,63.503207 C 262.33428,63.503207 267.99535,60.040574 269.56065,57.337889 C 276.96574,38.125366 265.59733,26.191405 265.59732,26.1914 C 265.59732,26.1914 265.34932,27.249262 261.85749,31.949574 C 262.54736,16.549025 249.498,6.2501757 241.98127,1.5882927 L 224.71249,1.5882927 z "
+ id="path4555" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path4557"
+ d="M 229.8082,7.9283659 C 229.8082,7.9283659 253.00764,20.094222 256.49947,38.660451 C 261.5566,31.844997 260.59334,32.716861 261.67701,32.129318 C 262.76068,31.541779 271.79128,50.343025 262.51987,63.503896 C 255.29539,69.849315 254.57294,69.614298 252.76682,70.554362 C 253.24845,69.379281 264.32598,61.956136 256.13825,39.042119 C 254.09131,42.919871 249.90625,47.129992 249.90625,47.129992 C 249.90625,47.129992 246.74643,31.306767 224.9526,19.673496 C 210.14242,13.915615 229.79813,7.1606466 229.96841,7.4930107"
+ style="fill:url(#linearGradient4928);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path4559"
+ d="M 225.073,19.604663 L 219.54392,33.539412 C 219.88449,33.871776 234.70564,40.589879 240.96685,56.570938 C 241.60874,56.598614 248.91377,48.697914 249.63622,47.287819 C 250.35867,45.87773 255.35559,66.73536 246.98725,74.432115 C 250.84825,72.119418 252.80814,71.640445 253.9709,69.966819 C 254.45254,68.791742 263.90456,60.037415 256.19845,39.12103 C 254.07389,42.133 251.22218,45.137552 249.99745,46.465268 C 248.56966,41.118961 242.5165,29.216678 225.073,19.604663 z "
+ style="fill:url(#linearGradient4930);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:#1f4a2a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 183.54457,1.5882927 L 183.82766,6.9247824 C 183.82767,6.9247778 203.772,-4.7868273 230.16579,8.175295 C 231.62859,6.1193267 233.0947,3.6616496 234.32281,1.5882927 L 183.54457,1.5882927 z "
+ id="path4561" />
+ <g
+ id="g4563"
+ transform="matrix(0.476791,0,0,0.465307,55.77949,-173.6434)">
+ <path
+ style="fill:url(#linearGradient4932);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 210.6168,512.94073 C 210.6168,512.94073 209.80617,527.05721 224.94835,542.36141 C 217.13872,527.26352 214.65742,520.7694 217.1828,519.25417 C 215.66757,517.99148 214.65741,511.17296 210.6168,512.94073 z "
+ id="path4565"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient4934);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 215.63896,514.69258 C 214.26567,516.28385 213.08169,521.82544 221.73271,538.91133 C 226.65449,544.60372 227.44153,545.08454 234.78918,551.64182 C 232.26379,546.08597 225.18702,531.44512 225.18702,531.44512 C 225.18702,531.44511 222.30922,521.66678 215.63896,514.69258 z "
+ id="path4567"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient4936);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.25,520.1875 C 218.87671,521.77877 217.69273,527.32036 226.34375,544.40625 C 231.26553,550.09864 232.05257,550.57946 239.40022,557.13674 C 236.87483,551.58089 229.79806,536.94004 229.79806,536.94004 C 229.79806,536.94003 226.92026,527.1617 220.25,520.1875 z "
+ id="path4569"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:url(#linearGradient4938);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 226.43242,527.87754 C 225.19989,531.53305 224.73957,539.88003 235.74492,554.56504 C 238.73456,557.16966 242.85692,559.62588 246.60653,562.26147 C 244.08114,556.70562 233.83867,536.94004 233.83867,536.94004 C 233.83867,536.94003 230.56317,532.74151 226.43242,527.87754 z "
+ id="path4571"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccccccccccccccccccccc"
+ id="path4573"
+ d="M 176.85034,88.193825 C 176.85034,88.193825 174.12582,88.692369 173.27441,87.861466 C 172.423,87.030558 167.65509,81.214225 167.31452,76.893514 C 165.10084,74.068435 157.26785,66.590287 156.41644,64.928475 C 154.8839,62.768125 150.79711,52.365184 159.82209,40.067786 C 163.73859,47.712114 169.18763,58.846252 169.86875,59.677155 C 170.89046,59.012427 172.59328,53.528454 186.55644,45.884123 C 185.87531,36.910347 183.66164,7.9283659 184.17248,6.5989186 C 184.68333,5.2694714 204.94695,-5.366116 230.14876,8.26073 C 222.9969,25.377378 220.27238,31.858444 219.93181,33.686435 C 220.1021,34.018795 234.40583,38.339505 241.38741,55.954699 C 245.47419,51.633987 247.00673,49.473636 249.90153,46.316193 C 252.28549,52.631075 253.98832,67.753554 247.00673,74.566979 C 239.68458,80.050957 230.31905,84.205483 229.46763,85.368751 C 228.61622,86.532018 222.65633,93.843983 216.35588,95.17343 C 216.35588,95.00725 220.44266,91.683628 220.78323,90.35418 C 221.12379,89.024733 222.65633,77.724418 222.65633,77.724418 L 209.3743,65.09466 L 189.11068,64.097572 C 189.11068,64.097572 178.2126,70.744813 175.65836,73.736076 C 175.3178,76.561155 176.85034,88.193825 176.85034,88.193825 z "
+ style="fill:url(#linearGradient4940);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path4575"
+ d="M 270.62287,13.502604 C 269.42734,27.183314 242.50914,55.097143 223.14083,76.429747 C 223.14083,76.429747 222.41838,77.134795 222.41838,77.134795 C 222.6592,77.134795 240.25709,62.968732 251.73862,59.871179 C 280.07812,68.073941 288.57012,22.015298 270.62287,13.502604 z "
+ style="fill:url(#linearGradient4942);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4577"
+ d="M 279.49738,40.589879 C 279.49738,40.589879 255.4158,61.741276 233.01993,71.611931 C 210.62406,81.482581 228.68524,83.597723 228.68524,83.597723 C 228.68524,83.597723 272.75454,64.561464 279.49738,40.589879 z "
+ style="opacity:0.39999994;fill:url(#linearGradient4944);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4579"
+ d="M 272.27788,4.7043653 C 272.27788,1.048383 261.13777,30.50883 227.84381,49.685626 C 205.44794,59.556278 216.35727,70.977559 222.48744,74.633541 C 237.13174,59.01252 269.96238,31.002484 272.27788,4.7043653 z "
+ style="opacity:0.39999994;fill:url(#linearGradient4946);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="opacity:0.69999994;fill:url(#linearGradient4948);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 260.28034,66.231116 C 260.28034,66.231116 238.12529,82.917216 227.52939,86.207434 C 247.10271,85.274289 257.39056,81.977156 260.28034,66.231116 z "
+ id="path4581"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 177.1116,88.199027 L 181.83007,92.365293 C 183.06586,92.474933 185.4251,92.146017 187.22261,91.378549 C 187.22261,91.378549 199.35581,100.58819 218.90377,93.461682 C 206.43353,102.23277 198.12003,97.956864 190.81764,98.505056 C 186.32385,94.777342 174.41533,88.199027 173.74126,88.199027 C 173.06719,88.199027 177.1116,88.199027 177.1116,88.199027 z "
+ id="path4583"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:url(#linearGradient4950);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 209.24214,66.052029 C 210.1409,77.381351 205.19774,100.11309 205.19774,100.04 L 190.36826,99.162889 L 180.48194,91.926741 L 194.41266,108.59181 L 219.80253,92.146017 C 219.80253,92.146017 220.02722,81.620712 222.04942,79.866491 C 224.07162,78.112274 221.82473,77.235166 221.82473,77.235166 C 221.82473,77.235166 212.38779,70.656846 209.24214,66.052029 z "
+ id="path4585"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:url(#linearGradient4952);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 205.42243,100.25928 L 222.94818,77.673718 C 222.94818,77.673718 220.02722,82.059264 219.80253,91.926741 C 219.80253,91.926741 205.42243,100.25928 205.42243,100.25928 z "
+ id="path4587"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4589"
+ d="M 272.27788,6.5655933 C 272.27788,2.9096111 261.13777,32.370058 227.84381,51.546854 C 205.44794,61.417506 216.35727,70.977559 222.48744,74.633541 C 237.13174,59.01252 269.96238,32.863712 272.27788,6.5655933 z "
+ style="opacity:0.39999994;fill:url(#linearGradient4954);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4591"
+ d="M 278.5438,42.451107 C 278.5438,42.451107 255.4158,63.602504 233.01993,73.473159 C 210.62406,83.343809 228.68524,83.597723 228.68524,83.597723 C 228.68524,83.597723 268.94113,65.492376 278.5438,42.451107 z "
+ style="opacity:0.59999988;fill:url(#linearGradient4956);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:0.69999994;fill:url(#linearGradient4958);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 260.28034,66.231116 C 260.28034,66.231116 238.12529,82.917216 227.52939,86.207434 C 244.56065,83.723765 257.39056,81.977156 260.28034,66.231116 z "
+ id="path4593"
+ sodipodi:nodetypes="ccc" />
+ </g>
+ <rect
+ y="77"
+ x="236"
+ height="0"
+ width="1"
+ id="rect1327"
+ style="opacity:0.57786889;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.63199997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.75688076;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="M 77.062579,3.7839329 L 77.062579,0.98922447 L 77.062579,3.7839329 z "
+ id="path2276"
+ sodipodi:nodetypes="ccc" />
+ <g
+ id="g4640"
+ transform="matrix(-0.782995,0,0,0.650879,-2245.796,690.3016)"
+ style="opacity:0.40163933" />
+ <g
+ style="opacity:0.40163933"
+ transform="matrix(-0.782995,0,0,0.650879,-2245.796,690.3016)"
+ id="g4646" />
+ <g
+ style="opacity:0.40163933"
+ transform="matrix(1,0,0,0.650879,955.167,697.6294)"
+ id="g4730" />
+ <g
+ id="g4748"
+ transform="matrix(1,0,0,0.650879,955.167,697.6294)"
+ style="opacity:0.40163933" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.75688076;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+ d="M 181.23105,2.6244365 L 181.23105,0.41896716 L 181.23105,2.6244365 z "
+ id="path2408"
+ sodipodi:nodetypes="ccc" />
+ </g>
+ <path
+ style="opacity:0.24344569;fill:url(#radialGradient31866);fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:1.08779998;stroke-opacity:1"
+ d="M 73,63.5 L 116,63.5 L 116,85.5 L 93.5,108 L 73,108 L 73,63.5 z "
+ id="rect31858"
+ sodipodi:nodetypes="cccccc" />
+ <g
+ id="g4960"
+ transform="translate(10,-6)">
+ <path
+ transform="translate(40,0)"
+ clip-path="url(#clipPath7084)"
+ sodipodi:nodetypes="cccc"
+ style="opacity:0.4;fill:#000000;fill-opacity:1;filter:url(#filter6697)"
+ id="path5540"
+ d="M 41.879531,115.98249 C 41.879531,115.98249 66.18914,91.672876 66.18914,91.672876 C 66.18914,91.672876 56.836,94.586 46.586,94.586 C 46.586,104.836 41.879531,115.98249 41.879531,115.98249 z " />
+ <path
+ sodipodi:nodetypes="csccc"
+ d="M 79.172,120 C 79.172,120 91.086,110.086 96.586,104.586 C 102.086,99.086 112,87.172 112,87.172 C 112,87.172 98.25,96 88,96 C 88,106.25 79.172,120 79.172,120 z "
+ id="path14523"
+ style="fill:url(#linearGradient10213);fill-opacity:1" />
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer3" />
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/resources/iconnotifier.svg Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="128"
+ height="128"
+ id="svg2606"
+ sodipodi:version="0.32"
+ inkscape:version="0.45+devel"
+ version="1.0"
+ sodipodi:docname="unknown.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:docbase="/home/david/Progetti/sandbox/svg/mimetypes">
+ <defs
+ id="defs2608">
+ <linearGradient
+ y2="0"
+ x2="28"
+ y1="57.5"
+ x1="28"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2973">
+ <stop
+ id="stop2975"
+ style="stop-color:#2c72c7;stop-opacity:1;"
+ offset="0" />
+
+ <stop
+ id="stop2977"
+ style="stop-color:#0057ae;stop-opacity:1;"
+ offset="1" />
+
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2973"
+ id="linearGradient2086"
+ x1="86.43512"
+ y1="76.830994"
+ x2="22.813417"
+ y2="8.9537134"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient10207">
+ <stop
+ style="stop-color:#a2a2a2;stop-opacity:1;"
+ offset="0"
+ id="stop10209" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop10211" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_12_"
+ gradientUnits="userSpaceOnUse"
+ x1="96"
+ y1="104"
+ x2="88.000198"
+ y2="96.000198">
+ <stop
+ offset="0"
+ style="stop-color:#888A85"
+ id="stop83" />
+ <stop
+ offset="0.0072"
+ style="stop-color:#8C8E89"
+ id="stop85" />
+ <stop
+ offset="0.0673"
+ style="stop-color:#ABACA9"
+ id="stop87" />
+ <stop
+ offset="0.1347"
+ style="stop-color:#C5C6C4"
+ id="stop89" />
+ <stop
+ offset="0.2652576"
+ style="stop-color:#DBDBDA"
+ id="stop91" />
+ <stop
+ offset="0.37646064"
+ style="stop-color:#EBEBEB"
+ id="stop93" />
+ <stop
+ offset="0.48740286"
+ style="stop-color:#F7F7F6"
+ id="stop95" />
+ <stop
+ offset="0.6324091"
+ style="stop-color:#FDFDFD"
+ id="stop97" />
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop99" />
+ </linearGradient>
+ <radialGradient
+ id="XMLID_8_"
+ cx="102"
+ cy="112.3047"
+ r="139.55859"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#b7b8b9;stop-opacity:1;"
+ id="stop41" />
+ <stop
+ offset="0.18851049"
+ style="stop-color:#ECECEC"
+ id="stop47" />
+ <stop
+ offset="0.25718147"
+ style="stop-color:#FAFAFA"
+ id="stop49" />
+ <stop
+ offset="0.30111277"
+ style="stop-color:#FFFFFF"
+ id="stop51" />
+ <stop
+ offset="0.5313"
+ style="stop-color:#FAFAFA"
+ id="stop53" />
+ <stop
+ offset="0.8449"
+ style="stop-color:#EBECEC"
+ id="stop55" />
+ <stop
+ offset="1"
+ style="stop-color:#E1E2E3"
+ id="stop57" />
+ </radialGradient>
+ <filter
+ inkscape:collect="always"
+ x="-0.19200002"
+ width="1.3839999"
+ y="-0.19199999"
+ height="1.3839999"
+ id="filter6697">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.9447689"
+ id="feGaussianBlur6699" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath7084">
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 72,88 L 40,120 L 32,120 L 32,80 L 72,80 L 72,88 z"
+ id="path7086" />
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_8_"
+ id="radialGradient9437"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.9996653,2e-6,3.0160848e-3)"
+ cx="102"
+ cy="112.3047"
+ r="139.55859" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10207"
+ id="linearGradient10213"
+ x1="98.617439"
+ y1="106.41443"
+ x2="91.228737"
+ y2="99.254974"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter2770">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="2.0786429"
+ id="feGaussianBlur2772" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8284271"
+ inkscape:cx="64"
+ inkscape:cy="85.975621"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="128px"
+ height="128px"
+ gridspacingx="4px"
+ gridspacingy="4px"
+ gridempspacing="2"
+ showgrid="true"
+ inkscape:grid-points="true"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1016"
+ inkscape:window-height="692"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata2611">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Livello 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ style="opacity:0.5;fill:#000000;fill-opacity:1;filter:url(#filter2770)"
+ d="M 16,8 L 16,120 C 16,120 79.15625,120 79.15625,120 L 79.1875,120 C 79.187503,120 91.09375,110.09375 96.59375,104.59375 C 102.09375,99.09375 112,87.1875 112,87.1875 L 112,87.15625 L 112,8 L 16,8 z"
+ id="path7865"
+ sodipodi:nodetypes="csccscccc"
+ transform="matrix(1.0416667,0,0,1.0267857,-2.6666667,-1.2142891)" />
+ <path
+ style="fill:#ffffff;fill-opacity:1"
+ d="M 16.000001,8 L 16,120 C 16,120 79.146418,120 79.146418,120 L 112,87.14642 L 112,8 L 16.000001,8 z"
+ id="path34"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:url(#radialGradient9437);fill-opacity:1"
+ d="M 18.000002,9.0000034 C 17.449002,9.0000034 17.000002,9.4488534 17.000002,9.9996684 L 17.000002,117.96352 C 17.000002,118.51533 17.449002,118.96318 18.000002,118.96318 L 77.171999,118.96318 C 77.434999,118.96318 79.934679,119.08131 80.12068,118.89438 L 110.707,88.094202 C 110.894,87.907264 111,85.40942 111,85.146508 L 111,9.9996684 C 111,9.4488534 110.552,9.0000034 110,9.0000034 L 18.000002,9.0000034 z"
+ id="path59"
+ sodipodi:nodetypes="ccccccccccc" />
+ <path
+ d="M 41.879531,115.98249 C 41.879531,115.98249 66.18914,91.672876 66.18914,91.672876 C 66.18914,91.672876 56.836,94.586 46.586,94.586 C 46.586,104.836 41.879531,115.98249 41.879531,115.98249 z"
+ id="path5540"
+ style="opacity:0.4;fill:#000000;fill-opacity:1;filter:url(#filter6697)"
+ sodipodi:nodetypes="cccc"
+ clip-path="url(#clipPath7084)"
+ transform="translate(40,0)" />
+ <path
+ style="fill:url(#linearGradient10213);fill-opacity:1"
+ id="path14523"
+ d="M 79.172,120 C 79.172,120 91.086,110.086 96.586,104.586 C 102.086,99.086 112,87.172 112,87.172 C 112,87.172 98.25,96 88,96 C 88,106.25 79.172,120 79.172,120 z"
+ sodipodi:nodetypes="csccc" />
+ <path
+ id="text2076"
+ d="M 62.842105,28 C 69.438566,28.00007 74.631544,30.070244 78.421053,34.210526 C 80.947326,37.017606 82.210485,40.386024 82.210528,44.315789 C 82.210485,49.157946 79.894696,54.596537 75.263159,60.631581 C 74.421018,61.684251 73.052597,63.368459 71.157895,65.684214 C 67.789444,69.89477 65.57892,74.807045 64.526316,80.421056 C 64.456114,80.912302 64.38594,81.40353 64.315789,81.89474 L 62.526315,81.89474 C 62.666642,76.491254 63.719273,71.508803 65.68421,66.947371 L 68.631579,60.210528 C 71.228037,54.245661 72.526282,48.771981 72.526316,43.789473 C 72.526282,39.228131 70.806986,35.684274 67.36842,33.157894 C 65.543832,31.824628 63.473658,31.157962 61.157895,31.157894 C 57.508752,31.157962 54.631562,32.280768 52.526315,34.526317 C 51.614021,35.579011 51.15788,36.631642 51.157894,37.684211 C 51.15788,38.315851 51.894722,39.543919 53.36842,41.368421 C 54.561386,42.982513 55.157877,44.350934 55.157894,45.473685 C 55.157877,47.649175 54.175422,49.017596 52.210526,49.578948 C 51.789459,49.719349 51.33332,49.789525 50.842103,49.789475 C 47.473673,49.789525 45.789465,47.614088 45.789472,43.26316 C 45.789465,37.929885 48.070165,33.789539 52.631576,30.842104 C 55.578928,28.947438 58.982435,28.00007 62.842105,28 M 63.578947,88.736839 C 65.894709,88.736854 67.578918,89.82458 68.631579,92.00001 C 69.052602,92.77194 69.263127,93.61404 69.263159,94.52631 C 69.263127,97.05264 68.070146,98.73684 65.68421,99.57894 C 64.98243,99.85965 64.245588,100 63.473684,100 C 60.87717,100 59.157873,98.8772 58.315788,96.63158 C 58.105243,96.00001 57.99998,95.33335 57.999998,94.63158 C 57.99998,91.96492 59.122785,90.14037 61.36842,89.157906 C 62.070151,88.877214 62.806993,88.736854 63.578947,88.736839"
+ style="font-size:74.98017883px;font-style:normal;font-weight:normal;fill:url(#linearGradient2086);fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" />
+ </g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/resources/qtg_large_device_lock.svg Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<rect fill="none" height="60" width="60"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1" x1="30" x2="30" y1="4.26" y2="55.61">
+<stop offset="0" stop-color="#D1D7D9"/>
+<stop offset="0.07" stop-color="#D1D7D9"/>
+<stop offset="0.26" stop-color="#BDC2C4"/>
+<stop offset="0.66" stop-color="#949DA1"/>
+<stop offset="0.96" stop-color="#ADB3B5"/>
+<stop offset="1" stop-color="#595C5E"/>
+</linearGradient>
+<path d="M46.574,52.922c0,1.557-1.264,2.818-2.822,2.818H16.248c-1.558,0-2.82-1.262-2.82-2.818V7.082 c0-1.556,1.262-2.82,2.82-2.82h27.504c1.559,0,2.822,1.264,2.822,2.82V52.922z" fill="url(#SVGID_1)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2" x1="30" x2="30" y1="4.26" y2="54.73">
+<stop offset="0" stop-color="#E4EBED"/>
+<stop offset="0.07" stop-color="#E4EBED"/>
+<stop offset="0.26" stop-color="#D6DCDE"/>
+<stop offset="0.66" stop-color="#B2BEC2"/>
+<stop offset="1" stop-color="#ADB3B5"/>
+</linearGradient>
+<path d="M43.752,4.262H16.248c-1.558,0-2.82,1.264-2.82,2.82v45.84c0,0.752,0.3,1.432,0.78,1.938 c-0.044-0.172-0.072-0.344-0.072-0.529v-1.408V8.492v-1.41c0-1.168,0.95-2.118,2.114-2.118h27.504c1.166,0,2.114,0.95,2.114,2.118 v1.41v44.43v1.408c0,0.186-0.028,0.357-0.072,0.529c0.481-0.506,0.782-1.186,0.782-1.938V7.082 C46.574,5.526,45.311,4.262,43.752,4.262z" fill="url(#SVGID_2)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3" x1="30" x2="30" y1="7.84" y2="42.35">
+<stop offset="0" stop-color="#B6BBBD"/>
+<stop offset="1" stop-color="#F0FBFF"/>
+</linearGradient>
+<rect fill="url(#SVGID_3)" fill-opacity="0.6" height="34.554" stroke-opacity="0.6" width="28.918" x="15.542" y="7.788"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4" x1="30" x2="30" y1="8.54" y2="41.64">
+<stop offset="0" stop-color="#6E6E6E"/>
+<stop offset="1" stop-color="#333333"/>
+</linearGradient>
+<rect fill="url(#SVGID_4)" height="33.146" width="27.504" x="16.248" y="8.492"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5" x1="30" x2="30" y1="9.25" y2="40.94">
+<stop offset="0" stop-color="#3BC8EB"/>
+<stop offset="0.39" stop-color="#2D9BD2"/>
+<stop offset="0.89" stop-color="#1347BA"/>
+<stop offset="1" stop-color="#1347BA"/>
+</linearGradient>
+<rect fill="url(#SVGID_5)" height="31.735" width="26.094" x="16.954" y="9.198"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6" x1="30" x2="30" y1="9.75" y2="22.36">
+<stop offset="0" stop-color="#85EFFF"/>
+<stop offset="1" stop-color="#3BA1D9"/>
+</linearGradient>
+<polygon fill="url(#SVGID_6)" points="43.046,20.48 16.954,23.3 16.954,9.904 43.046,9.904 "/>
+<rect fill="#9FE4FF" height="0.708" width="26.094" x="16.954" y="9.198"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7" x1="30.2" x2="30.2" y1="7.82" y2="4.99">
+<stop offset="0" stop-color="#FFFFFF"/>
+<stop offset="1" stop-color="#D1D7D9"/>
+</linearGradient>
+<path d="M27.088,7.788c-0.792,0-1.412-0.516-1.412-1.176V6.14c0-0.658,0.622-1.176,1.412-1.176h6.238 c0.79,0,1.408,0.518,1.408,1.176v0.47c0,0.66-0.621,1.176-1.408,1.176h-6.238V7.788z" fill="url(#SVGID_7)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8" x1="30.21" x2="30.21" y1="5.38" y2="7.2">
+<stop offset="0" stop-color="#6C7375"/>
+<stop offset="1" stop-color="#BDC2C4"/>
+</linearGradient>
+<path d="M34.034,6.612c0,0.26-0.318,0.47-0.708,0.47h-6.238c-0.39,0-0.708-0.21-0.708-0.47V6.14 c0-0.262,0.316-0.468,0.708-0.468h6.238c0.388,0,0.708,0.208,0.708,0.468V6.612z" fill="url(#SVGID_8)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9" x1="29.89" x2="29.89" y1="43.08" y2="53.56">
+<stop offset="0" stop-color="#B6BBBD"/>
+<stop offset="1" stop-color="#FFFFFF"/>
+</linearGradient>
+<path d="M27.344,53.626c-1.512,0-2.744-1.216-2.744-2.712 V45.76c0-1.494,1.232-2.71,2.744-2.71h5.094c1.515,0,2.744,1.216,2.744,2.71v5.154c0,1.496-1.229,2.712-2.744,2.712H27.344z" fill="url(#SVGID_9)" fill-opacity="0.6" stroke-opacity="0.6"/>
+<path d="M27.34,52.922c-1.122,0-2.032-0.902-2.032-2.008V45.76 c0-1.107,0.91-2.008,2.032-2.008h5.104c1.123,0,2.031,0.9,2.031,2.008v5.154c0,1.105-0.908,2.008-2.031,2.008H27.34z" fill="#020202" fill-opacity="0.5" stroke-opacity="0.5"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10" x1="29.89" x2="29.89" y1="44.43" y2="52.23">
+<stop offset="0" stop-color="#A6A8AB"/>
+<stop offset="0.7" stop-color="#58595B"/>
+<stop offset="1" stop-color="#808184"/>
+</linearGradient>
+<path d="M33.771,50.914c0,0.718-0.594,1.3-1.319,1.3h-5.12c-0.728,0-1.32-0.582-1.32-1.3V45.76 c0-0.716,0.592-1.298,1.32-1.298h5.12c0.726,0,1.319,0.582,1.319,1.298V50.914z" fill="url(#SVGID_10)"/>
+<path d="M28.836,50.805c-0.782,0-1.414-0.633-1.414-1.41v-2.119 c0-0.775,0.632-1.407,1.414-1.407h2.112c0.78,0,1.411,0.632,1.411,1.407v2.119c0,0.777-0.631,1.41-1.411,1.41H28.836z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11" x1="29.89" x2="29.89" y1="46.56" y2="50.1">
+<stop offset="0" stop-color="#D1D7D9"/>
+<stop offset="0.07" stop-color="#D1D7D9"/>
+<stop offset="0.26" stop-color="#BDC2C4"/>
+<stop offset="0.66" stop-color="#949DA1"/>
+<stop offset="0.96" stop-color="#ADB3B5"/>
+<stop offset="1" stop-color="#595C5E"/>
+</linearGradient>
+<path d="M28.836,50.098c-0.392,0-0.708-0.313-0.708-0.703v-2.119c0-0.385,0.314-0.703,0.708-0.703 h2.112c0.39,0,0.708,0.316,0.708,0.703v2.119c0,0.388-0.316,0.703-0.708,0.703H28.836z" fill="url(#SVGID_11)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12" x1="18.66" x2="18.66" y1="43.71" y2="52.23">
+<stop offset="0" stop-color="#B6BBBD"/>
+<stop offset="1" stop-color="#F0FBFF"/>
+</linearGradient>
+<path d="M18.256,52.214c-1.496,0-2.714-1.216-2.714-2.712 v-3.036c0-1.498,1.218-2.714,2.714-2.714h0.81c1.498,0,2.714,1.216,2.714,2.714v3.036c0,1.496-1.216,2.712-2.714,2.712H18.256z" fill="url(#SVGID_12)" fill-opacity="0.4" stroke-opacity="0.4"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_13" x1="18.66" x2="18.66" y1="44.43" y2="51.52">
+<stop offset="0" stop-color="#231F20"/>
+<stop offset="1" stop-color="#6D6E70"/>
+</linearGradient>
+<path d="M18.256,51.51c-1.106,0-2.008-0.9-2.008-2.008v-3.036 c0-1.11,0.902-2.006,2.008-2.006h0.81c1.11,0,2.01,0.896,2.01,2.006v3.036c0,1.107-0.9,2.008-2.01,2.008H18.256z" fill="url(#SVGID_13)" fill-opacity="0.7" stroke-opacity="0.7"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_14" x1="18.66" x2="18.66" y1="45.14" y2="50.82">
+<stop offset="0" stop-color="#C6FF45"/>
+<stop offset="0.73" stop-color="#66A00E"/>
+<stop offset="1" stop-color="#387300"/>
+</linearGradient>
+<path d="M20.37,49.502c0,0.721-0.582,1.303-1.302,1.303h-0.812c-0.718,0-1.302-0.582-1.302-1.303 v-3.036c0-0.72,0.584-1.302,1.302-1.302h0.81c0.72,0,1.302,0.582,1.302,1.302v3.036H20.37z" fill="url(#SVGID_14)"/>
+<path d="M40.322,52.214c-1.494,0-2.711-1.216-2.711-2.712 v-3.036c0-1.498,1.217-2.714,2.711-2.714h0.812c1.5,0,2.714,1.216,2.714,2.714v3.036c0,1.496-1.214,2.712-2.714,2.712H40.322z" fill="url(#SVGID_12)" fill-opacity="0.4" stroke-opacity="0.4"/>
+<path d="M40.322,51.51c-1.108,0-2.008-0.9-2.008-2.008v-3.036 c0-1.11,0.899-2.006,2.008-2.006h0.812c1.11,0,2.009,0.896,2.009,2.006v3.036c0,1.107-0.898,2.008-2.009,2.008H40.322z" fill="url(#SVGID_13)" fill-opacity="0.7" stroke-opacity="0.7"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_17" x1="40.73" x2="40.73" y1="45.14" y2="50.82">
+<stop offset="0" stop-color="#FFC142"/>
+<stop offset="0.75" stop-color="#CF4E18"/>
+<stop offset="1" stop-color="#B52100"/>
+</linearGradient>
+<path d="M42.438,49.502c0,0.721-0.582,1.303-1.301,1.303h-0.813c-0.717,0-1.301-0.582-1.301-1.303 v-3.036c0-0.72,0.584-1.302,1.301-1.302h0.813c0.719,0,1.301,0.582,1.301,1.302V49.502z" fill="url(#SVGID_17)"/>
+<rect fill="none" height="60" width="60"/>
+</g>
+<g transform="matrix(1 0 0 1 30 30)">
+<linearGradient gradientTransform="matrix(1 0 0 -1 8.3999 5.04)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-1.0313" x2="14.444" y1="-3.8467" y2="-3.8467">
+<stop offset="0" style="stop-color:#8C8C8C"/>
+<stop offset="0.5333" style="stop-color:#B3B3B3"/>
+<stop offset="1" style="stop-color:#808080"/>
+</linearGradient>
+<path d="M15.106,3.081c-4.303,0-7.794,3.46-7.854,7.749v2.881h2.657V10.83 c0.061-2.818,2.366-5.092,5.198-5.092c2.831,0,5.136,2.273,5.198,5.092v3.863h2.655V10.83C22.898,6.541,19.408,3.081,15.106,3.081z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 8.3999 5.04)" gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="-0.5474" x2="13.9592" y1="-4.0928" y2="-4.0928">
+<stop offset="0" style="stop-color:#CCCCCC"/>
+<stop offset="0.5152" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#CCCCCC"/>
+</linearGradient>
+<path d="M20.793,14.203V10.83c-0.066-3.084-2.617-5.582-5.687-5.582c-3.072,0-5.623,2.498-5.689,5.572v3.873 H7.743V10.83c0.057-4,3.359-7.258,7.363-7.258c4.003,0,7.304,3.258,7.361,7.265v3.366H20.793z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 8.3999 5.04)" gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="-0.2461" x2="13.6586" y1="-4.0938" y2="-4.0938">
+<stop offset="0" style="stop-color:#B4B4B4"/>
+<stop offset="0.5" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#BEBEBE"/>
+</linearGradient>
+<path d="M8.049,14.388V10.83c0.054-3.832,3.22-6.951,7.057-6.951c3.835,0,7.001,3.123,7.056,6.962v3.056H21.1 V10.83c-0.07-3.25-2.76-5.889-5.994-5.889c-3.236,0-5.925,2.634-5.995,5.872v3.574L8.049,14.388L8.049,14.388z" fill="url(#SVGID_3_)"/>
+<g>
+<rect fill="none" height="30" width="30"/>
+</g>
+<linearGradient gradientTransform="matrix(1 0 0 -1 8.3999 5.04)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="-3.1958" x2="16.3945" y1="-15.3169" y2="-15.3169">
+<stop offset="0" style="stop-color:#ED8C0D"/>
+<stop offset="0.24" style="stop-color:#FFE692"/>
+<stop offset="0.75" style="stop-color:#ED8C0D"/>
+<stop offset="0.8667" style="stop-color:#FFB81F"/>
+<stop offset="1" style="stop-color:#ED8C0D"/>
+</linearGradient>
+<path d="M24.795,26.633c0,0.338-0.273,0.612-0.611,0.612H5.816c-0.338,0-0.612-0.274-0.612-0.612V14.082 c0-0.338,0.274-0.613,0.612-0.613h18.368c0.338,0,0.61,0.275,0.61,0.613L24.795,26.633L24.795,26.633z" fill="url(#SVGID_4_)"/>
+<path d="M24.184,13.469H5.816c-0.338,0-0.612,0.275-0.612,0.613v0.611 c0-0.338,0.274-0.611,0.612-0.611h18.368c0.338,0,0.61,0.273,0.61,0.611v-0.611C24.795,13.744,24.521,13.469,24.184,13.469z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<rect fill="#EE8F11" fill-opacity="0.5" height="2.144" stroke-opacity="0.5" width="19.591" x="5.204" y="16.225"/>
+<rect fill-opacity="0.25" height="0.308" stroke-opacity="0.25" width="19.591" x="5.204" y="16.225"/>
+<path d="M24.184,27.245H5.816c-0.338,0-0.612-0.274-0.612-0.612v-0.611 c0,0.338,0.274,0.611,0.612,0.611h18.368c0.338,0,0.61-0.273,0.61-0.611v0.611C24.795,26.971,24.521,27.245,24.184,27.245z" fill-opacity="0.25" stroke-opacity="0.25"/>
+<rect fill="#FEE38E" fill-opacity="0.25" height="0.307" stroke-opacity="0.25" width="19.591" x="5.204" y="18.367"/>
+</g>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/rom/AutolockSrv.iby Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef __AUTOLOCKSRV_IBY__
+#define __AUTOLOCKSRV_IBY__
+
+/*
+#include <data_caging_paths_for_iby.hrh>
+*/
+
+S60_APP_EXE(AutolockSrv)
+S60_APP_BITMAP(AutolockSrv)
+S60_APP_AIF_RSC(AutolockSrv)
+S60_APP_RESOURCE(AutolockSrv)
+
+file=ABI_DIR\BUILD_DIR\autolockuseractivityservice.dll SHARED_LIB_DIR\autolockuseractivityservice.dll
+file=ABI_DIR\BUILD_DIR\IndicatorAutolockPlugin.dll SHARED_LIB_DIR\IndicatorAutolockPlugin.dll
+
+data=\epoc32\data\z\private\10003a3f\import\apps\AutolockSrv_reg.rsc \epoc32\data\z\private\10003a3f\apps\AutolockSrv_reg.rsc
+
+file=\epoc32\data\z\private\10003a3f\import\apps\AutolockSrv_reg.rsc \epoc32\data\z\private\10003a3f\apps\AutolockSrv_reg.rsc
+data=ZPRIVATE\10003a3f\import\apps\AutolockSrv_reg.rsc private\10003a3f\apps\AutolockSrv_reg.rsc
+
+#endif // __AUTOLOCKSRV_IBY__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/service_conf.xml Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<service>
+ <name>com.nokia.services.AutolockSrv</name>
+ <filepath>No path really</filepath>
+ <description>AutolockSrv</description>
+ <interface>
+ <name>AutolockSrv</name>
+ <version>2.0</version>
+ <description>Interface to AutolockSrv</description>
+ </interface>
+</service>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/service_conf_new.xml Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<service>
+ <name>com.nokia.services.AutolockSrv</name>
+ <filepath>No path</filepath>
+ <description>AutolockSrv service</description>
+ <interface>
+ <name>AutolockSrv</name>
+ <version>2.0</version>
+ <description>Interface to AutolockSrv</description>
+ <customproperty key="txt_aiw_action_text">Dial now</customproperty>
+ </interface>
+</service>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/service_conf_old_format.xml Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<service name="com.nokia.services.AutolockSrv" filepath="must-not-be-empty" >
+ <description>AutolockSrv</description>
+ <interface name="AutolockSrv" version="1.0" capabilities="">
+ <description>Dial interface</description>
+ </interface>
+</service>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/src/AutolockSrv.cpp Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,1295 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, version 2.1 of the License.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public License
+* along with this program. If not,
+* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
+*
+* Description:
+*
+*/
+
+// #include "xqservicelog.h"
+
+#include <QApplication>
+#include <QKeyEvent>
+#include <QEvent>
+#include <QLabel>
+#include <QVBoxLayout>
+#include <QStackedWidget>
+#include <QImageReader>
+#include <QDebug>
+#include <QTimer>
+#include <QPushButton>
+#include <QLineEdit>
+#include <QListView>
+#include <QMessageBox>
+#include <QToolButton>
+#include <QSymbianEvent>
+#include <QMainWindow>
+#include <qvaluespacesubscriber.h>
+#include <qvaluespacepublisher.h>
+
+QTM_USE_NAMESPACE
+
+#include <HbIndicator>
+#include <hbdevicemessagebox.h>
+
+#include "../../SecUi/inc/SecQueryUi.h"
+
+#include <lockappclientserver.h>
+
+#include <xqsharablefile.h>
+
+#include <QGraphicsLinearLayout>
+
+#include <hblabel.h>
+
+#include "AutolockSrv.h"
+#include <xqserviceutil.h>
+
+#include "autolockuseractivityservice.h"
+
+#include <settingsinternalcrkeys.h> // CenRep keys
+
+#include <W32STD.H>
+#include <eikenv.h>
+
+#include <qapplication.h>
+
+#include <secuisecuritysettings.h>
+#include <secui.h>
+#include <secuisecurityhandler.h>
+#include <etelmm.h>
+#include <rmmcustomapi.h>
+
+#include <qvaluespacesubscriber.h>
+
+#include <hwrmlightdomaincrkeys.h>
+#include <ProfileEngineSDKCRKeys.h>
+#include <e32property.h>
+#include <coreapplicationuisdomainpskeys.h>
+#include "../../../inc/securityuisprivatepskeys.h"
+#include <avkondomainpskeys.h>
+
+#include <hbdevicedialog.h>
+
+const TInt KPhoneIndex( 0 );
+const TInt KTriesToConnectServer( 2 );
+const TInt KTimeBeforeRetryingServerConnection( 50000 );
+
+#define ESecUiTypeLock 0x00100000
+
+_LIT( KMmTsyModuleName, "PhoneTsy");
+
+
+#define XQSERVICE_DEBUG_PRINT(a) qDebug() << (a)
+
+AutolockSrv::AutolockSrv(QWidget *parent, Qt::WFlags f)
+ : QWidget(parent, f),
+ mService(NULL)
+{
+ XQSERVICE_DEBUG_PRINT("AutolockSrv::AutolockSrv");
+ RDEBUG( "start", 0 );
+ mService = new AutolockSrvService(this);
+
+ /* Adjust the palette */
+#if defined(Q_WS_S60)
+ RDEBUG( "Q_WS_S60", 1 );
+ QPalette p = qApp->palette();
+ QColor color(192,192,192);
+ QColor bg(201,250,250);
+ p.setColor(QPalette::Highlight, color.lighter(200));
+ p.setColor(QPalette::Text, Qt::black);
+ p.setColor(QPalette::Base, bg);
+ p.setColor(QPalette::WindowText, Qt::black);
+ p.setColor(QPalette::Window, bg);
+ p.setColor(QPalette::ButtonText, Qt::black);
+ p.setColor(QPalette::Button, color.lighter(150));
+ p.setColor(QPalette::Link, QColor(240,40,40));
+
+ qApp->setPalette(p);
+#endif
+
+ QPushButton *unlockButton = new QPushButton(tr("Unlock"));
+ QPushButton *unguardButton = new QPushButton(tr("Unguard"));
+ QPushButton *lockButton = new QPushButton(tr("Lock"));
+ QPushButton *quitButton = new QPushButton(tr("Quit"));
+ QPushButton *test1Button = new QPushButton(tr("Autolock 10 seconds"));
+ QPushButton *test2Button = new QPushButton(tr("Autolock never"));
+ connect(quitButton, SIGNAL(clicked()), this, SLOT(quit()));
+ connect(lockButton, SIGNAL(clicked()), this, SLOT(lockAction()));
+ connect(unlockButton, SIGNAL(clicked()), this, SLOT(unlockAction()));
+ connect(unguardButton, SIGNAL(clicked()), this, SLOT(unguardAction()));
+ connect(test1Button, SIGNAL(clicked()), this, SLOT(test1Action()));
+ connect(test2Button, SIGNAL(clicked()), this, SLOT(test2Action()));
+ RDEBUG( "connect", 1 );
+
+ /* there's no use for this */
+ /*
+ bool isService = XQServiceUtil::isService();
+
+ QString t = "SERVICEAPP:\n";
+ t = t + (isService ? " LAUNCHED AS SERVICE\n" : " LAUNCHED NORMALLY\n");
+ t = t + (XQServiceUtil::isEmbedded() ? " EMBEDDED\n" : " NOT EMBEDDED\n");
+
+ QStringList args = QApplication::arguments();
+ foreach (QString arg, args)
+ {
+ t += "cmdline arg=" + arg + "\n";
+ }
+
+ QLabel *title = new QLabel(t);
+ */
+
+ mLabel = new QLabel("");
+ mNumberEdit = new QLineEdit("");
+
+ QVBoxLayout *vl = new QVBoxLayout;
+
+ vl->setMargin(0);
+ vl->setSpacing(0);
+
+ vl->addWidget(lockButton);
+ vl->addWidget(unlockButton);
+ vl->addWidget(unguardButton);
+ vl->addWidget(quitButton);
+ vl->addWidget(test1Button);
+ vl->addWidget(test2Button);
+ RDEBUG( "added test2Button", 1 );
+
+ mLabelIcon = new QToolButton;
+ mLabelIcon->setIcon(QIcon(":/AutolockSrv_hbicon/qtg_large_device_lock.svg"));
+ mLabelIcon->setIconSize(QSize(300,300));
+
+ vl->addWidget(mLabelIcon);
+ RDEBUG( "added mLabelIcon", 1 );
+
+/* vl->addItem(title);
+ vl->addWidget(mLabel);
+ vl->addWidget(mNumberEdit);
+*/
+ setLayout(vl);
+
+#if defined(Q_WS_X11) || defined(Q_WS_WIN)
+ setFixedSize(QSize(360,640)); // nHD
+#elif defined(Q_WS_S60)
+ // showMaximized();
+ showFullScreen();
+#endif
+ mLabelIcon_visible=1;
+ serviceKeyguard = new AutolockUserActivityService();
+ serviceDevicelock = new AutolockUserActivityService();
+
+ TInt lockValue = 0;
+ TInt lightsTimeout = 0;
+ CRepository* repository;
+ TInt cRresult=0;
+
+ iLockStatusPrev=ELockNotActive;
+ iLockStatus=ELockNotActive;
+ repository = CRepository::NewL(KCRUidSecuritySettings);
+ cRresult = repository->Get(KSettingsAutolockStatus, lockValue);
+ RDEBUG( "KSettingsAutolockStatus", KSettingsAutolockStatus );
+ RDEBUG( "cRresult", cRresult );
+ RDEBUG( "lockValue", lockValue );
+ iLockStatus = lockValue;
+ // the settings says to lock
+ delete repository;
+
+ adjustInactivityTimers(0);
+
+ repository = CRepository::NewL(KCRUidProfileEngine);
+ cRresult = repository->Get(KProEngActiveProfile, lightsTimeout);
+ delete repository;
+
+ repository = CRepository::NewL(KCRUidLightSettings);
+ cRresult = repository->Get(KDisplayLightsTimeout, lightsTimeout);
+ delete repository;
+
+ // TODO flip
+
+ subscriberKSettingsAutolockStatus = new QValueSpaceSubscriber("/KCRUidSecuritySettings/KSettingsAutolockStatus", this);
+ connect(subscriberKSettingsAutolockStatus, SIGNAL(contentsChanged()), this, SLOT(subscriberKSettingsAutolockStatusChanged()));
+ subscriberKSettingsAutoLockTime = new QValueSpaceSubscriber("/KCRUidSecuritySettings/KSettingsAutoLockTime", this);
+ connect(subscriberKSettingsAutoLockTime, SIGNAL(contentsChanged()), this, SLOT(subscriberKSettingsAutoLockTimeChanged()));
+ subscriberKSettingsAutomaticKeyguardTime = new QValueSpaceSubscriber("/KCRUidSecuritySettings/KSettingsAutomaticKeyguardTime", this);
+ connect(subscriberKSettingsAutomaticKeyguardTime, SIGNAL(contentsChanged()), this, SLOT(subscriberKSettingsAutomaticKeyguardTimeChanged()));
+ subscriberKDisplayLightsTimeout = new QValueSpaceSubscriber("/KCRUidLightSettings/KDisplayLightsTimeout", this);
+ connect(subscriberKDisplayLightsTimeout, SIGNAL(contentsChanged()), this, SLOT(subscriberKDisplayLightsTimeoutChanged()));
+ subscriberKProEngActiveProfile = new QValueSpaceSubscriber("/KCRUidProfileEngine/KProEngActiveProfile", this);
+ connect(subscriberKProEngActiveProfile, SIGNAL(contentsChanged()), this, SLOT(subscriberKProEngActiveProfileChanged()));
+
+
+ TSecurityPolicy readPolicy( ECapabilityReadDeviceData );
+ TSecurityPolicy writePolicy( ECapabilityWriteDeviceData );
+ TInt ret = RProperty::Define( KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, RProperty::EInt, readPolicy, writePolicy );
+ RDEBUG( "defined KSecurityUIsSecUIOriginatedQuery", ret );
+ ret = RProperty::Define( KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, RProperty::EInt, readPolicy, writePolicy );
+ RDEBUG( "defined KSecurityUIsQueryRequestCancel", ret );
+
+ _LIT_SECURITY_POLICY_PASS(KReadPolicy);
+ _LIT_SECURITY_POLICY_C1(KWritePolicy, ECapabilityWriteDeviceData);
+ ret = RProperty::Define( KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, RProperty::EInt, KReadPolicy, KWritePolicy);
+ RDEBUG( "defined KCoreAppUIsAutolockStatus", ret );
+
+ ret = RProperty::Define(KPSUidAvkonDomain, KAknKeyguardStatus, RProperty::EInt, TSecurityPolicy(TSecurityPolicy::EAlwaysPass), KWritePolicy);
+ RDEBUG( "defined KAknKeyguardStatus", ret );
+
+ // inactivity
+ connect(serviceKeyguard, SIGNAL(active()), this, SLOT(activeKeyguard()) );
+ connect(serviceKeyguard, SIGNAL(notActive()), this, SLOT(notActiveKeyguard()) );
+ connect(serviceDevicelock, SIGNAL(active()), this, SLOT(activeDevicelock()) );
+ connect(serviceDevicelock, SIGNAL(notActive()), this, SLOT(notActiveDevicelock()) );
+
+ RWindowGroup& groupWin=CEikonEnv::Static()->RootWin();
+ RDEBUG( "got groupWin", 1 );
+ // TODO if I want to release, I should do: mKeyCaptureHandle = env->RootWin().CaptureKey(EKeyBackspace, 0, 0);
+ groupWin.CaptureKey(EKeyBackspace,0,0);
+ groupWin.CaptureKey(EKeyDeviceF,0,0);
+ groupWin.CaptureKey(EKeyBell,0,0);
+ groupWin.CaptureKey(EKeyTab,0,0);
+ groupWin.CaptureKey(EKeyInsert,0,0);
+ RDEBUG( "got mKeyCaptureHandle", 1 );
+
+ iSecQueryUiCreated=-1;
+ iDeviceDialogCreated = -1;
+ // TODO for now, always starts unlocked
+ // TryChangeStatus(iLockStatus);
+ TryChangeStatus(ELockNotActive);
+ lower();
+ hide();
+ // not needed: new AutolockSrvService(this);
+}
+
+
+AutolockSrv::~AutolockSrv()
+{
+ RDEBUG( "0", 0 );
+ delete mService;
+}
+
+void AutolockSrv::adjustInactivityTimers(int aReason)
+{
+ RDEBUG( "aReason", aReason );
+ TInt keyguardTime = 0;
+ TInt lockTime = 0;
+ CRepository* repository;
+ TInt cRresult = 0;
+
+ repository = CRepository::NewL(KCRUidSecuritySettings);
+ cRresult = repository->Get(KSettingsAutoLockTime, lockTime);
+ RDEBUG( "KSettingsAutoLockTime", KSettingsAutoLockTime );
+ RDEBUG( "cRresult", cRresult );
+ RDEBUG( "lockTime", lockTime );
+ if(lockTime>0 && lockTime<1000)
+ {
+ serviceDevicelock->setInactivityPeriod(lockTime);
+ }
+ else
+ {
+ serviceDevicelock->setInactivityPeriod(12*31*24*60*60);
+ }
+
+ cRresult = repository->Get(KSettingsAutomaticKeyguardTime, keyguardTime);
+ RDEBUG( "KSettingsAutomaticKeyguardTime", KSettingsAutomaticKeyguardTime );
+ RDEBUG( "cRresult", cRresult );
+ RDEBUG( "keyguardTime", keyguardTime );
+ if(keyguardTime>0 && keyguardTime<1000)
+ {
+ serviceKeyguard->setInactivityPeriod(keyguardTime);
+ }
+ else
+ {
+ serviceKeyguard->setInactivityPeriod(12*31*24*60*60);
+ }
+ delete repository;
+}
+void AutolockSrv::quit()
+{
+ RDEBUG( "0", 0 );
+ qApp->quit();
+}
+
+// from the button
+void AutolockSrv::unlockAction()
+{
+ RDEBUG( "0", 0 );
+ TryChangeStatus(ELockAppDisableDevicelock);
+}
+
+void AutolockSrv::unguardAction()
+{
+ RDEBUG( "0", 0 );
+ TryChangeStatus(ELockAppDisableKeyguard);
+}
+
+void AutolockSrv::test1Action()
+{
+ RDEBUG( "Set(KSettingsAutoLockTime, 30000)", 30000 );
+
+ CRepository* repositorySet = CRepository::NewL(KCRUidSecuritySettings);
+ repositorySet->Set(KSettingsAutoLockTime, 10);
+ delete repositorySet;
+}
+
+void AutolockSrv::test2Action()
+{
+ RDEBUG( "Set(KSettingsAutoLockTime, 20000)", 20000 );
+
+ CRepository* repositorySet = CRepository::NewL(KCRUidSecuritySettings);
+ repositorySet->Set(KSettingsAutoLockTime, 0);
+ delete repositorySet;
+}
+
+int AutolockSrv::AskValidSecCode(int aReason)
+{
+ RDEBUG( "aReason", aReason );
+RMobilePhone iPhone; // NULL in emulator
+
+#ifdef __WINS__1
+return KErrNone;
+#endif
+
+TInt err( KErrGeneral);
+TBool validCode(EFalse);
+TInt thisTry( 0);
+RTelServer iTelServer;
+
+RMmCustomAPI iCustomPhone;
+while ( ( err = iTelServer.Connect() ) != KErrNone && ( thisTry++ ) <= KTriesToConnectServer )
+ {
+ User::After( KTimeBeforeRetryingServerConnection );
+ }
+err = iTelServer.LoadPhoneModule( KMmTsyModuleName );
+RTelServer::TPhoneInfo PhoneInfo;
+ RDEBUG( "err", err );
+err = iTelServer.SetExtendedErrorGranularity( RTelServer::EErrorExtended ) ;
+ RDEBUG( "err", err );
+err = iTelServer.GetPhoneInfo( KPhoneIndex, PhoneInfo ) ;
+ RDEBUG( "err", err );
+err = iPhone.Open( iTelServer, PhoneInfo.iName ) ;
+ RDEBUG( "err", err );
+err = iCustomPhone.Open( iPhone ) ;
+ RDEBUG( "err", err );
+
+ RDEBUG( "CSecurityHandler", 0 );
+CSecurityHandler* handler = new(ELeave) CSecurityHandler(iPhone);
+if(aReason==ELockAppDisableDevicelock)
+ {
+ RDEBUG( "calling AskSecCodeInAutoLockL", 0 );
+ validCode = handler->AskSecCodeInAutoLockL(); // this returns true/false
+ // TODO should this also do iPhone.SetLockSetting(status, lockType, lockChange); ???
+ }
+else if(aReason==ELockAppEnableDevicelock)
+ {
+ // check whether code is really needed
+ RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneDevice;
+ RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
+ RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
+ RMobilePhone::TMobilePhoneLockSetting lockChange(RMobilePhone::ELockSetDisabled);
+ TRequestStatus status = KRequestPending;
+ TInt ret=KErrNone;
+ RDEBUG( "GetLockInfo", 0 );
+ iPhone.GetLockInfo(status, lockType, lockInfoPkg);
+ RDEBUG( "WaitForRequest", 0 );
+ User::WaitForRequest( status );
+ ret = status.Int();
+ RDEBUG( "WaitForRequest ret", ret );
+ #ifdef __WINS__
+ if(ret==KErrTimedOut)
+ {
+ ret = KErrNone;
+ lockInfo.iSetting = RMobilePhone::ELockSetDisabled; // ask password only if there's no timeout.
+ }
+ #endif
+ if(ret==KErrNone)
+ {
+ RDEBUG( "lockInfo.iSetting", lockInfo.iSetting );
+ RDEBUG( "RMobilePhone::ELockSetDisabled", RMobilePhone::ELockSetDisabled );
+ if(lockInfo.iSetting == RMobilePhone::ELockSetDisabled) // ask password only if there's no timeout
+ {
+ lockChange = RMobilePhone::ELockSetEnabled;
+ RDEBUG( "SetLockSetting lockChange", lockChange );
+ #define OLD_METHODx
+ #ifdef OLD_METHOD
+ status = KRequestPending;
+ RDEBUG( "SetLockSetting", 0 );
+ iPhone.SetLockSetting(status, lockType, lockChange); // ask for PassPhraseRequiredL
+ RDEBUG( "WaitForRequestL", 0 );
+ User::WaitForRequest( status ); // TODO this waits 33 seconds in WINS and returns ffffffdf = KErrTimedOut
+ ret = status.Int();
+ RDEBUG( "WaitForRequestL ret", ret );
+ #else
+ RDEBUG( "! OLD_METHOD", 0 );
+ CWait *iWait = NULL;
+ iWait = CWait::NewL();
+ iWait->SetRequestType(EMobilePhoneSetLockSetting);
+ iPhone.SetLockSetting(iWait->iStatus, lockType, lockChange); // ask for PassPhraseRequiredL
+ RDEBUG( "WaitForRequestL", 0 );
+ ret = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL ret", ret );
+ if(iWait)
+ {
+ RDEBUG( "IsActive", 0 );
+ if(iWait->IsActive())
+ {
+ RDEBUG( "CancelAsyncRequest", 0 );
+ iPhone.CancelAsyncRequest(iWait->GetRequestType());
+ RDEBUG( "cancelled", 0 );
+ }
+ }
+ delete iWait;
+ #endif
+
+ RDEBUG( "WaitForRequestL ret", ret );
+ #ifdef __WINS__
+ if(ret==KErrTimedOut)
+ ret = KErrNone;
+ #endif
+ if(ret==KErrNone)
+ validCode = 1;
+ else
+ validCode = 0;
+ }
+ else
+ validCode = 0x20;
+ }
+ else
+ validCode = 0x21;
+
+ /* Alternative way to ask for password
+ RMobilePhone::TMobilePhoneSecurityEvent iEvent;
+ TInt result = KErrNone;
+ iEvent = RMobilePhone::EPhonePasswordRequired;
+ RDEBUG( "calling HandleEventL", 0 );
+ handler->HandleEventL(iEvent, result); // this is supposed to wait
+ validCode = false;
+ if(result)
+ validCode = true;
+ RDEBUG( "result", result );
+ */
+ }
+// TODO this doesn't wait on WINS , so how do I get the Acceptation?
+ RDEBUG( "validCode (true/false)", validCode );
+if(validCode)
+ return KErrNone;
+return KErrCancel;
+}
+
+void AutolockSrv::lockAction()
+{
+ RDEBUG( "0", 0 );
+
+ XQSERVICE_DEBUG_PRINT("AutolockSrv::lockAction");
+ TryChangeStatus(ELockAppOfferDevicelock);
+
+}
+
+void AutolockSrv::handleAnswerDelivered()
+{
+ RDEBUG( "This should never be called", 0 );
+ // quit();
+
+}
+
+
+void AutolockSrv::endCall()
+{
+ RDEBUG( "This should never be called", 0 );
+ //QVBoxLayout *vl = qobject_cast<QVBoxLayout *>(layout()) ;
+ //vl->removeWidget(mEndCallButton);
+
+ //XQServiceUtil::toBackground(true);
+}
+
+void AutolockSrv::setLabelNumber(QString label,QString number)
+{
+ RDEBUG( "0", 0 );
+ mLabel->setText("mLabel=" + label);
+ mNumberEdit->setText("mNumberEdit=" + number);
+}
+
+void AutolockSrv::DebugRequest(int aReason)
+{
+ switch(aReason)
+ {
+ case ELockAppEnableKeyguard:
+ RDEBUG( "ELockAppEnableKeyguard", aReason );
+ break;
+ case ELockAppDisableKeyguard:
+ RDEBUG( "ELockAppDisableKeyguard", aReason );
+ break;
+ case ELockAppEnableDevicelock:
+ RDEBUG( "ELockAppEnableDevicelock", aReason );
+ break;
+ case ELockAppDisableDevicelock:
+ RDEBUG( "ELockAppDisableDevicelock", aReason );
+ break;
+ case ELockAppOfferKeyguard:
+ RDEBUG( "ELockAppOfferKeyguard", aReason );
+ break;
+ case ELockAppOfferDevicelock:
+ RDEBUG( "ELockAppOfferDevicelock", aReason );
+ break;
+ case ELockAppShowKeysLockedNote:
+ RDEBUG( "ELockAppShowKeysLockedNote", aReason );
+ break;
+ default:
+ RDEBUG( "default", aReason );
+ break;
+ }
+}
+void AutolockSrv::DebugStatus(int aReason)
+{
+ switch(aReason)
+ {
+ case ELockNotActive:
+ RDEBUG( "ELockNotActive", aReason );
+ break;
+ case EKeyguardActive:
+ RDEBUG( "EKeyguardActive", aReason );
+ break;
+ case EDevicelockActive:
+ RDEBUG( "EDevicelockActive", aReason );
+ break;
+ default:
+ RDEBUG( "default", aReason );
+ break;
+ }
+}
+void AutolockSrv::DebugError(int aReason)
+{
+ switch(aReason)
+ {
+ case KErrPermissionDenied:
+ RDEBUG( "KErrPermissionDenied", aReason );
+ break;
+ case KErrNone:
+ RDEBUG( "KErrNone", aReason );
+ break;
+ case KErrAlreadyExists:
+ RDEBUG( "KErrAlreadyExists", aReason );
+ break;
+ default:
+ RDEBUG( "default", aReason );
+ break;
+ }
+}
+
+int AutolockSrv::CheckIfLegal(int aReason)
+{
+ RDEBUG( "aReason", aReason );
+ switch ( aReason )
+ {
+ case ELockAppEnableKeyguard:
+ {
+ RDEBUG( "ELockAppEnableKeyguard iLockStatus", iLockStatus );
+ switch ( iLockStatus )
+ {
+ case ELockNotActive:
+ if ( 1==0 ) // !CKeyLockPolicyApi::KeyguardAllowed() )
+ return KErrPermissionDenied;
+ else
+ return KErrNone;
+ case EKeyguardActive:
+ return KErrAlreadyExists;
+ case EDevicelockActive:
+ return KErrPermissionDenied;
+ }
+ }
+ break;
+ case ELockAppDisableKeyguard:
+ {
+ RDEBUG( "ELockAppDisableKeyguard iLockStatus", iLockStatus );
+ switch ( iLockStatus )
+ {
+ case ELockNotActive:
+ return KErrAlreadyExists;
+ case EKeyguardActive:
+ return KErrNone;
+ case EDevicelockActive:
+ return KErrPermissionDenied;
+ }
+ }
+ break;
+ case ELockAppEnableDevicelock:
+ {
+ RDEBUG( "ELockAppEnableDevicelock iLockStatus", iLockStatus );
+ switch ( iLockStatus )
+ {
+ case ELockNotActive:
+ return KErrNone;
+ case EKeyguardActive:
+ return KErrNone;
+ case EDevicelockActive:
+ return KErrAlreadyExists;
+ }
+ }
+ break;
+ case ELockAppDisableDevicelock:
+ {
+ RDEBUG( "ELockAppDisableDevicelock iLockStatus", iLockStatus );
+ switch ( iLockStatus )
+ {
+ case ELockNotActive:
+ return KErrAlreadyExists;
+ case EKeyguardActive:
+ return KErrPermissionDenied;
+ case EDevicelockActive:
+ return KErrNone;
+ }
+ }
+ break;
+ case ELockAppOfferKeyguard:
+ {
+ RDEBUG( "ELockAppOfferKeyguard iLockStatus", iLockStatus );
+ switch ( iLockStatus )
+ {
+ case ELockNotActive:
+ return KErrNone;
+ case EKeyguardActive:
+ return KErrPermissionDenied;
+ case EDevicelockActive:
+ return KErrPermissionDenied;
+ }
+ }
+ break;
+ case ELockAppOfferDevicelock:
+ {
+ RDEBUG( "ELockAppOfferDevicelock iLockStatus", iLockStatus );
+ switch ( iLockStatus )
+ {
+ case ELockNotActive:
+ return KErrNone;
+ case EKeyguardActive:
+ return KErrNone;
+ case EDevicelockActive:
+ return KErrAlreadyExists;
+ }
+ }
+ break;
+ case ELockAppShowKeysLockedNote:
+ {
+ RDEBUG( "ELockAppShowKeysLockedNote iLockStatus", iLockStatus );
+ switch ( iLockStatus )
+ {
+ case ELockNotActive:
+ return KErrPermissionDenied;
+ case EKeyguardActive:
+ return KErrNone;
+ case EDevicelockActive:
+ return KErrPermissionDenied;
+ }
+ }
+ break;
+ default:
+ {
+ RDEBUG( "default iLockStatus", iLockStatus );
+ return KErrPermissionDenied;
+ }
+ // break;
+ } // switch
+ return KErrPermissionDenied;
+}
+
+int AutolockSrv::publishStatus(int aReason)
+{
+ RDEBUG( "aReason", aReason );
+const TUid KCRUidCoreApplicationUIsSysAp = { 0x101F8765 };
+const TUint32 KSysApKeyguardActive = 0x00000001;
+CRepository* repositoryDevicelock;
+CRepository* repositoryKeyguard;
+repositoryDevicelock = CRepository::NewL(KCRUidSecuritySettings);
+repositoryKeyguard = CRepository::NewL(KCRUidSecuritySettings);
+TInt cRresult;
+
+ if(1==1)
+ {
+ RDEBUG( "publishing", aReason );
+ if(aReason==ELockNotActive)
+ {
+ RProperty::Set(KPSUidAvkonDomain, KAknKeyguardStatus, EKeyguardNotActive);
+ RProperty::Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EAutolockOff);
+ // cRresult = repositoryDevicelock->Set(KSettingsAutolockStatus, 0); // the settings remains. Only ISA changes, as well as the P&S
+ cRresult = repositoryKeyguard->Set(KSysApKeyguardActive, 0);
+ }
+ if(1==0)
+ {
+ if(aReason==EKeyguardActive)
+ {
+ RProperty::Set(KPSUidAvkonDomain, KAknKeyguardStatus, EKeyguardLocked);
+ RProperty::Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EAutolockOff);
+ // cRresult = repositoryDevicelock->Set(KSettingsAutolockStatus, 0);
+ cRresult = repositoryKeyguard->Set(KSysApKeyguardActive, 1);
+ }
+ else if(aReason>=EDevicelockActive)
+ {
+ RProperty::Set(KPSUidAvkonDomain, KAknKeyguardStatus, EKeyguardNotActive); // EKeyguardLocked sure? maybe EKeyguardNotActive ?
+ RProperty::Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EManualLocked);
+ // cRresult = repositoryDevicelock->Set(KSettingsAutolockStatus, 1);
+ cRresult = repositoryKeyguard->Set(KSysApKeyguardActive, 0); // keyguard disabled, so that user can type and DeviceF can be captured
+ }
+ }
+ }
+delete repositoryDevicelock;
+delete repositoryKeyguard;
+// this is the real point where everything is done.
+iLockStatusPrev = iLockStatus;
+iLockStatus = aReason;
+ RDEBUG( "setting iLockStatus", iLockStatus );
+return KErrNone;
+}
+/********************/
+int AutolockSrv::showNoteIfRequested(int aReason)
+{
+ RDEBUG( "aReason", aReason );
+
+ if(aReason==ELockNotActive)
+ {
+ if(iShowKeyguardNote==1)
+ {
+ HbDeviceMessageBox::information ("Keyguard deactivated");
+ }
+ }
+ else if(aReason==EKeyguardActive)
+ {
+ if(iShowKeyguardNote==1)
+ {
+ HbDeviceMessageBox::information ("Keyguard activated");
+ }
+ }
+ else if(aReason>=EDevicelockActive) // this doesn't happen, but we are prepared nevertheless
+ {
+ if(iShowKeyguardNote==1)
+ {
+ HbDeviceMessageBox::information ("Devicelock activated");
+ }
+ }
+return KErrNone;
+}
+/***********************/
+int AutolockSrv::TryChangeStatus(int aReason)
+{
+ RDEBUG( "aReason", aReason );
+ int ret = aReason;
+ int errorInProcess = KErrNone;
+ DebugRequest(ret);
+
+ switch(ret)
+ {
+ case ELockAppEnableKeyguard: // 1
+ {
+ errorInProcess = CheckIfLegal(ret);
+ DebugError(errorInProcess);
+ if(errorInProcess==KErrNone)
+ {
+ setLabelIcon(EKeyguardActive);
+ updateIndicator(EKeyguardActive);
+ publishStatus(EKeyguardActive);
+ showNoteIfRequested(EKeyguardActive);
+ }
+ }
+ break;
+ case ELockAppDisableKeyguard: // 2
+ {
+ errorInProcess = CheckIfLegal(ret);
+ DebugError(errorInProcess);
+ if(errorInProcess==KErrNone)
+ {
+ setLabelIcon(ELockNotActive);
+ updateIndicator(ELockNotActive);
+ publishStatus(ELockNotActive);
+ showNoteIfRequested(ELockNotActive);
+ }
+ }
+ break;
+ case ELockAppEnableDevicelock: // 3
+ {
+ errorInProcess = CheckIfLegal(ret);
+ DebugError(errorInProcess);
+ if(errorInProcess==KErrNone)
+ {
+ if(!callerHasECapabilityWriteDeviceData) // check permissions for calling process, because doesn't AskValidSecCode
+ errorInProcess=KErrPermissionDenied;
+ DebugError(errorInProcess);
+ }
+ if(errorInProcess==KErrNone)
+ {
+ updateIndicator(EDevicelockActive);
+ publishStatus(EDevicelockActive);
+ setLabelIcon(EDevicelockActive);
+ setLockDialog(aReason, 1);
+ }
+ // aParam1 is aReason : EDevicelockManual, EDevicelockRemote
+ // this never shows a note
+ }
+ break;
+ case ELockAppDisableDevicelock: // 4
+ {
+ errorInProcess = CheckIfLegal(ret);
+ DebugError(errorInProcess);
+ if(errorInProcess==KErrNone)
+ {
+ if(!callerHasECapabilityWriteDeviceData) // check permissions for calling process, because doesn't AskValidSecCode
+ errorInProcess=KErrPermissionDenied;
+ DebugError(errorInProcess);
+ }
+ if(errorInProcess==KErrNone)
+ {
+ RDEBUG( " calling HbDeviceMessageBox::question", 0 );
+ bool value = HbDeviceMessageBox::question("Disable Lock?");
+ RDEBUG( "value", value );
+ if(!value)
+ errorInProcess = KErrCancel;
+ }
+ if(errorInProcess==KErrNone)
+ {
+ setLockDialog(aReason, 0); // hide temporarilly because AskValidSecCode doesn't get in top of the Lock-icon. Thus, dismiss it.
+ RDEBUG( "calling AskValidSecCode", 0 );
+ errorInProcess=AskValidSecCode(ELockAppDisableDevicelock);
+ RDEBUG( "errorInProcess", errorInProcess );
+ }
+ if(errorInProcess==KErrNone)
+ {
+ setLabelIcon(ELockNotActive);
+ updateIndicator(ELockNotActive);
+ publishStatus(ELockNotActive);
+ }
+ if(errorInProcess!=KErrNone)
+ { // re-lock. For example, if password is wrong
+ setLockDialog(aReason, 1);
+ }
+ // this never shows a note
+ }
+ break;
+ case ELockAppOfferKeyguard: // 5
+ {
+ errorInProcess = CheckIfLegal(ret);
+ DebugError(errorInProcess);
+ if(errorInProcess==KErrNone)
+ {
+ bool value = HbDeviceMessageBox::question("Enable Keyguard?");
+ // TODO what about a nice icon?
+ RDEBUG( "value", value );
+ if(!value)
+ errorInProcess = KErrCancel;
+ }
+ if(errorInProcess==KErrNone)
+ {
+ errorInProcess = TryChangeStatus(ELockAppEnableKeyguard);
+ }
+ // this never shows a note
+ }
+ break;
+ case ELockAppOfferDevicelock: // 6
+ {
+ errorInProcess = CheckIfLegal(ret);
+ DebugError(errorInProcess);
+ setLockDialog(aReason, 0); // hide temporarilly because AskValidSecCode doesn't get in top of the Lock-icon. Thus, dismiss it.
+ errorInProcess=AskValidSecCode(ELockAppEnableDevicelock);
+ if(errorInProcess==KErrNone)
+ {
+ errorInProcess = TryChangeStatus(ELockAppEnableDevicelock);
+ }
+ // this never shows a note. Perhaps ELockAppEnableDevicelock does.
+ }
+ break;
+ case ELockAppShowKeysLockedNote:
+ {
+ iShowKeyguardNote=1; // this is not sent as parameter, so we need to fake it: ON
+ showNoteIfRequested(EKeyguardActive);
+ }
+ break;
+ default:
+ RDEBUG( "default", ret );
+ errorInProcess = KErrNotSupported;
+ break;
+
+ }
+ return errorInProcess;
+}
+/**************************/
+int AutolockSrv::setLockDialog(int aReason, int status)
+{
+ RDEBUG( "aReason", aReason );
+ RDEBUG( "status", status );
+ RDEBUG( "iDeviceDialogCreated", iDeviceDialogCreated );
+ if(status==0) // hide
+ {
+ if(iDeviceDialogCreated>0)
+ {
+ iDeviceDialogCreated = 0;
+ iDeviceDialog->cancel();
+ }
+ }
+ else if(status==1) // show
+ {
+ QVariantMap params;
+ TBool err;
+ #define ESecUiTypeDeviceLock 0x00100000
+ #define ESecUiTypeKeyguard 0x00200000
+
+ if(aReason==EKeyguardActive)
+ params.insert("type", ESecUiTypeKeyguard);
+ else if(aReason>=EDevicelockActive)
+ params.insert("type", ESecUiTypeDeviceLock);
+ else
+ {
+ RDEBUG( "error. status=1 but aReason", aReason );
+ }
+ // no need for title. Icon should be explicit enough
+ // params.insert("title", "Locked");
+ if(iDeviceDialogCreated<=0)
+ {
+ RDEBUG( "creating iDeviceDialog", 0 );
+ iDeviceDialog = new HbDeviceDialog(HbDeviceDialog::NoFlags, this);
+ iDeviceDialogCreated = 1;
+ }
+ else
+ {
+ RDEBUG( "raising iDeviceDialog", 0 );
+ // confirm that dialog is present
+ err = iDeviceDialog->error();
+ RDEBUG( "err", err );
+ iDeviceDialogCreated = 2;
+ }
+ const QString KSecQueryUiDeviceDialog("com.nokia.secuinotificationdialog/1.0");
+ RDEBUG( "pre show", aReason );
+ err = iDeviceDialog->show( KSecQueryUiDeviceDialog, params );
+ RDEBUG( "post show. err", err );
+ err = iDeviceDialog->error();
+ RDEBUG( "err", err );
+ }
+ else
+ {
+ RDEBUG( "unknown status", status );
+ return KErrNotSupported;
+ }
+return KErrNone;
+}
+void AutolockSrv::setLabelIcon(int aReason)
+{
+ RDEBUG( "aReason", aReason );
+
+ if(aReason==ELockNotActive)
+ {
+ mLabelIcon->setVisible(false);
+ setLockDialog(aReason, 0); // TODO isn't this done already at TryChangeStatus ???
+ lower();
+ hide();
+ }
+ else if(aReason==EKeyguardActive)
+ {
+ mLabelIcon->setVisible(true);
+ setLockDialog(aReason, 1);
+ raise(); // not repaint(), not show() , not setVisible(true), not showFullScreen() , not ???
+ show();
+ }
+ else if(aReason==EDevicelockActive)
+ {
+ mLabelIcon->setVisible(true);
+ raise();
+ show();
+ }
+ else
+ {
+ RDEBUG( "error: aReason", aReason );
+ }
+}
+
+int AutolockSrv::updateIndicator(int aReason)
+{
+ RDEBUG( "aReason", aReason );
+ QList<QVariant> list;
+ list.insert(0, 1);
+ list.insert(1, "aaa");
+ list.insert(2, 2);
+
+ HbIndicator indicator;
+ bool success;
+ if(aReason==ELockNotActive)
+ success = indicator.deactivate("com.nokia.hb.indicator.autolocksrv.autolocksrv_8/1.0"); // maybe it's already deactivated. Not a problem
+ else if(aReason==EKeyguardActive)
+ success = indicator.activate("com.nokia.hb.indicator.autolocksrv.autolocksrv_8/1.0");
+ else if(aReason==EDevicelockActive)
+ success = indicator.activate("com.nokia.hb.indicator.autolocksrv.autolocksrv_8/1.0"); // same. We have just 1 indicator
+ else
+ success = 0;
+ RDEBUG( "success", success );
+ return success;
+}
+
+void AutolockSrv::activeKeyguard()
+{
+ // activity while keyguarded. Nothing to do
+ RDEBUG( "0", 0 );
+}
+
+void AutolockSrv::notActiveKeyguard()
+{
+ // inactivity. Keyguard should be activated
+ RDEBUG( "0", 0 );
+ int ret = 0;
+ DebugStatus(iLockStatus);
+ if(iLockStatus==ELockNotActive) // not possible if it's keyguarded, or locked
+ {
+ ret = TryChangeStatus(ELockAppEnableKeyguard);
+ }
+}
+
+void AutolockSrv::activeDevicelock()
+{
+ RDEBUG( "0", 0 );
+}
+
+void AutolockSrv::notActiveDevicelock()
+{
+ // inactivity. Devicelock should be activated
+ RDEBUG( "0", 0 );
+ int ret = 0;
+ DebugStatus(iLockStatus);
+ if(iLockStatus==ELockNotActive || iLockStatus==EKeyguardActive ) // not possible if it's locked
+ {
+ ret = TryChangeStatus(ELockAppEnableDevicelock);
+ }
+}
+
+// some key is pressed
+bool AutolockSrv::event(QEvent *ev)
+{
+ if (ev)
+ {
+ int isSwitchKey=0;
+ // on device, this doesn't seem to get the EKeyDeviceF key: only 1ffffff
+ if (ev->type() == QEvent::KeyPress){
+ QKeyEvent *keyEvent = static_cast<QKeyEvent *>(ev);
+ qDebug() << QString("KeyPress:%1\n").arg(keyEvent->key(), 0, 16) ;
+ qDebug() << keyEvent->key();
+ qDebug() << EKeyInsert;
+ qDebug() << (keyEvent->key()&0xFF);
+ qDebug() << (EKeyInsert&0xFF);
+ if((keyEvent->key()&0xFF) == (EKeyInsert&0xFF))
+ {
+ qDebug() << "pressed EKeyInsert";
+ // only reacts on release, not on press
+ isSwitchKey=1;
+ }
+ if((keyEvent->key()&0xFF) == (EKeyTab&0xFF))
+ {
+ qDebug() << "pressed EKeyTab";
+ }
+ if((keyEvent->key()&0xFF) == (EKeyDeviceF&0xFF))
+ {
+ qDebug() << "pressed EKeyDeviceF";
+ }
+ if( keyEvent->key() ==0x1ffffff )
+ {
+ qDebug() << "pressed EKeyDeviceF-1ffffff";
+ isSwitchKey=1;
+ }
+ }
+ else if (ev->type() == QEvent::KeyRelease)
+ {
+ QKeyEvent *keyEvent = static_cast<QKeyEvent *>(ev);
+ qDebug() << QString("KeyRelease:%1\n").arg(keyEvent->key(), 0, 16) ;
+ if( keyEvent->key() ==0x1ffffff )
+ {
+ RDEBUG( "released EKeyDeviceF-1ffffff", 1 );
+ // isSwitchKey=1; this should happen is pressed was not processed (hint: if it is/was in background)
+ }
+ }
+ RDEBUG( "isSwitchKey", isSwitchKey );
+ if(isSwitchKey)
+ {
+ int ret;
+ DebugStatus(iLockStatus);
+ if(iLockStatus==ELockNotActive)
+ {
+ iShowKeyguardNote = 1; // note on enable keyguard
+ ret = TryChangeStatus(ELockAppEnableKeyguard); // this should not ask confirmation
+ }
+ else if(iLockStatus==EKeyguardActive)
+ {
+ iShowKeyguardNote = 1; // note on disable keyguard
+ ret = TryChangeStatus(ELockAppDisableKeyguard);
+ }
+ else if(iLockStatus==EDevicelockActive)
+ {
+ ret = TryChangeStatus(ELockAppDisableDevicelock);
+ }
+ } // isSwitchKey
+ } // ev
+ // Process if not done before. For example, redraw or quit
+ return QWidget::event(ev);
+}
+
+bool AutolockSrv::eventFilter(QObject *o, QEvent *ev)
+{
+ // this never happens
+ RDEBUG( "0", 0 );
+ return QWidget::eventFilter(o, ev);
+
+}
+
+void AutolockSrv::subscriberKSettingsAutolockStatusChanged()
+ {
+ RDEBUG( "0", 0 );
+ QVariant v = subscriberKSettingsAutolockStatus->value("/KCRUidSecuritySettings/KSettingsAutolockStatus");
+ adjustInactivityTimers(KSettingsAutolockStatus);
+ qDebug() << "AutolockSrv::subscriberKSettingsAutolockStatusChanged" << v;
+ }
+void AutolockSrv::subscriberKSettingsAutoLockTimeChanged()
+ {
+ RDEBUG( "0", 0 );
+ QVariant v = subscriberKSettingsAutoLockTime->value("/KCRUidSecuritySettings/KSettingsAutoLockTime");
+ adjustInactivityTimers(KSettingsAutoLockTime);
+ qDebug() << "AutolockSrv::subscriberKSettingsAutoLockTimeChanged" << v;
+ }
+void AutolockSrv::subscriberKSettingsAutomaticKeyguardTimeChanged()
+ {
+ RDEBUG( "0", 0 );
+ QVariant v = subscriberKSettingsAutomaticKeyguardTime->value("/KCRUidSecuritySettings/KSettingsAutomaticKeyguardTime");
+ adjustInactivityTimers(KSettingsAutoLockTime);
+ qDebug() << "AutolockSrv::subscriberKSettingsAutomaticKeyguardTimeChanged" << v;
+ }
+void AutolockSrv::subscriberKDisplayLightsTimeoutChanged()
+ {
+ RDEBUG( "0", 0 );
+ QVariant v = subscriberKDisplayLightsTimeout->value("/KCRUidLightSettings/KDisplayLightsTimeout");
+ // nothing to do
+ qDebug() << "AutolockSrv::subscriberKDisplayLightsTimeoutChanged" << v;
+ }
+void AutolockSrv::subscriberKProEngActiveProfileChanged()
+ {
+ RDEBUG( "0", 0 );
+ QVariant v = subscriberKProEngActiveProfile->value("/KCRUidProfileEngine/KProEngActiveProfile");
+ // nothing to do
+ qDebug() << "AutolockSrv::subscriberKProEngActiveProfileChanged" << v;
+ }
+
+// ----------AutolockSrvService---------------
+
+AutolockSrvService::AutolockSrvService(AutolockSrv* parent)
+: XQServiceProvider(QLatin1String("com.nokia.services.AutolockSrv.AutolockSrv"),parent),
+ mAutolockSrv(parent),
+ mAsyncReqId(-1),
+ mAsyncAnswer(false)
+{
+ RDEBUG( "0", 0 );
+ publishAll();
+ connect(this, SIGNAL(returnValueDelivered()), parent, SLOT(handleAnswerDelivered()));
+}
+
+AutolockSrvService::~AutolockSrvService()
+{
+ RDEBUG( "0", 0 );
+}
+
+void AutolockSrvService::complete(QString number)
+{
+ RDEBUG( "0", 0 );
+ if (mAsyncReqId == -1)
+ return;
+ XQSERVICE_DEBUG_PRINT("AutolockSrvService::complete");
+ completeRequest(mAsyncReqId,number.toInt());
+}
+
+// gor API request
+int AutolockSrvService::service(const QString& number, const QString& aParam1, const QString& aParam2 )
+{
+ RDEBUG( "0", 0 );
+ qDebug() << "number=" << number;
+ qDebug() << "aParam1=" << aParam1;
+ qDebug() << "aParam2=" << aParam2;
+ mAsyncAnswer = false;
+ XQRequestInfo info = requestInfo();
+ QSet<int> caps = info.clientCapabilities();
+
+ mAutolockSrv->callerHasECapabilityWriteDeviceData=0;
+ if(caps.contains(ECapabilityWriteDeviceData))
+ {
+ RDEBUG( "callerHasECapabilityWriteDeviceData", ECapabilityWriteDeviceData );
+ mAutolockSrv->callerHasECapabilityWriteDeviceData=1;
+ }
+
+ QString label = "AutolockSrv::service:\n";
+ label += QString("number=%1\n").arg(number);
+
+ mNumber = number ;
+ mAutolockSrv->setLabelNumber(label, number);
+ int ret = 0;
+ ret = number.toInt();
+
+ mAutolockSrv->mParam1 = aParam1.toInt();
+ mAutolockSrv->iShowKeyguardNote = aParam1.toInt();
+ mAutolockSrv->mParam2 = aParam2.toInt();
+ ret = mAutolockSrv->TryChangeStatus(ret);
+ RDEBUG( "ret", ret );
+ return ret;
+}
+
+void AutolockSrvService::handleClientDisconnect()
+{
+ RDEBUG( "0", 0 );
+ // Just quit service application if client ends
+ mAsyncAnswer = false;
+ RDEBUG( "0", 0 );
+ // mAutolockSrv->quit();
+}
+
+/****************/
+CWait* CWait::NewL()
+ {
+ CWait* self = new(ELeave) CWait();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+void CWait::ConstructL()
+ {
+ CActiveScheduler::Add(this);
+ }
+CWait::CWait() : CActive(0)
+ {
+ }
+CWait::~CWait()
+ {
+ Cancel();
+ }
+TInt CWait::WaitForRequestL()
+ {
+ SetActive();
+ iWait.Start();
+ return iStatus.Int();
+ }
+void CWait::RunL()
+ {
+ if(iWait.IsStarted())
+ iWait.AsyncStop();
+ }
+void CWait::DoCancel()
+ {
+ if(iWait.IsStarted())
+ iWait.AsyncStop();
+ }
+void CWait::SetRequestType(TInt aRequestType)
+{
+ iRequestType = aRequestType;
+}
+TInt CWait::GetRequestType()
+{
+ return iRequestType;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/src/AutolockSrv.h Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, version 2.1 of the License.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public License
+* along with this program. If not,
+* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
+*
+* Description:
+*
+*/
+
+#ifndef AUTOLOCKSRV_H
+#define AUTOLOCKSRV_H
+
+#define RDEBUG( x, y ) RDebug::Printf( "%s %s (%u) %s=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, x, y );
+// #define RDEBUG( x, y )
+
+#include <QWidget>
+#include <QEvent>
+#include <QModelIndex>
+#include <QMap>
+#include <QStringList>
+#include <xqserviceprovider.h>
+#include <xqsharablefile.h>
+#include <QToolButton>
+#include <qmobilityglobal.h>
+
+#include "autolockuseractivityservice.h"
+#include "../../SecUi/inc/SecQueryUi.h"
+
+QTM_BEGIN_NAMESPACE
+ class QValueSpacePublisher;
+ class QValueSpaceSubscriber;
+QTM_END_NAMESPACE
+QTM_USE_NAMESPACE
+
+#include <hbwidget.h>
+#include <qapplication.h>
+#include <hbdevicedialog.h>
+
+enum TLockStatus
+ {
+ ELockNotActive = 0,
+ EKeyguardActive,
+ EDevicelockActive
+ };
+
+enum TDevicelockReason
+ {
+ EDevicelockManual = 1,
+ EDevicelockRemote,
+ EDevicelockTimer
+ };
+
+
+class QLineEdit;
+class QPushButton;
+class AutolockSrvService;
+class QLabel;
+class HbLabel;
+class XQSharableFile;
+
+class AutolockSrv : public QWidget
+{
+ Q_OBJECT
+
+public:
+ AutolockSrv( QWidget *parent = 0, Qt::WFlags f = 0 );
+ ~AutolockSrv();
+
+ void setLabelNumber(QString label,QString number);
+ void setLabelIcon(int value);
+ int CheckIfLegal(int value);
+ void DebugRequest(int value);
+ void DebugError(int value);
+ void DebugStatus(int value);
+ void adjustInactivityTimers(int aReason);
+ int updateIndicator(int aReason);
+ int AskValidSecCode(int aReason);
+ int publishStatus(int aReason);
+ int TryChangeStatus(int aReason);
+ int setLockDialog(int aReason, int status);
+ int showNoteIfRequested(int aReason);
+
+ bool event(QEvent *event);
+ bool eventFilter(QObject *, QEvent *);
+
+ int callerHasECapabilityWriteDeviceData;
+ int iShowKeyguardNote;
+ int mParam1;
+ int mParam2;
+
+public slots:
+ void endCall();
+ void quit();
+ void unlockAction();
+ void unguardAction();
+ void lockAction();
+ void test1Action();
+ void test2Action();
+ void handleAnswerDelivered();
+ void subscriberKSettingsAutolockStatusChanged();
+ void subscriberKSettingsAutoLockTimeChanged();
+ void subscriberKSettingsAutomaticKeyguardTimeChanged();
+ void subscriberKDisplayLightsTimeoutChanged();
+ void subscriberKProEngActiveProfileChanged();
+
+private slots:
+ void activeKeyguard();
+ void notActiveKeyguard();
+ void activeDevicelock();
+ void notActiveDevicelock();
+
+private:
+ QLabel *mLabel;
+ QLineEdit *mNumberEdit;
+ QToolButton *mLabelIcon;
+ int mLabelIcon_visible;
+ //QPushButton *mEndCallButton;
+ AutolockSrvService* mService;
+ // int mKeyCode;
+ // int mKeyCaptureHandle;
+ QValueSpaceSubscriber *subscriberKSettingsAutolockStatus;
+ QValueSpaceSubscriber *subscriberKSettingsAutoLockTime;
+ QValueSpaceSubscriber *subscriberKSettingsAutomaticKeyguardTime;
+ QValueSpaceSubscriber *subscriberKDisplayLightsTimeout;
+ QValueSpaceSubscriber *subscriberKProEngActiveProfile;
+
+ AutolockUserActivityService* serviceKeyguard;
+ AutolockUserActivityService* serviceDevicelock;
+
+ int iLockStatus;
+ int iLockStatusPrev;
+ CSecQueryUi *iSecQueryUi;
+ int iSecQueryUiCreated;
+ HbDeviceDialog *iDeviceDialog;
+ int iDeviceDialogCreated;
+};
+
+class AutolockSrvService : public XQServiceProvider
+{
+ Q_OBJECT
+public:
+ AutolockSrvService( AutolockSrv *parent = 0 );
+ ~AutolockSrvService();
+
+ void complete(QString number);
+ bool asyncAnswer() {return mAsyncAnswer;}
+public slots:
+ int service(const QString& number, const QString& aParam1, const QString& aParam2 );
+
+private slots:
+ void handleClientDisconnect();
+
+private:
+ AutolockSrv* mAutolockSrv;
+ QString mNumber;
+ bool mAsyncAnswer;
+ int mAsyncReqId;
+};
+
+class CWait : public CActive
+ {
+ public:
+ /**
+ * Creates instance of the CWait class.
+ *
+ * @return Returns the instance just created.
+ */
+ static CWait* NewL();
+ /**
+ * Destructor.
+ */
+ ~CWait();
+ public:
+ /**
+ * Starts waiting for aReqStatus.
+ */
+ TInt WaitForRequestL();
+ public:
+ /**
+ * Sets active request type.
+ */
+ void SetRequestType(TInt aRequestType);
+ /**
+ * Gets active request type.
+ */
+ TInt GetRequestType();
+ private:
+ /**
+ * C++ default constructor.
+ */
+ CWait();
+ /**
+ * Symbian OS constructor.
+ */
+ void ConstructL();
+ private: // from CActive
+ /** @see CActive::RunL() */
+ void RunL();
+ /** @see CActive::DoCancel() */
+ void DoCancel();
+ RTimer iTimer;
+ CActiveSchedulerWait iWait;
+ // Used if there is a need to cancel an active request;
+ // namely in situations where destructor is called when Wait
+ // is active.
+ TInt iRequestType;
+ };
+
+
+#endif // AUTOLOCKSRV_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/src/AutolockSrv.pri Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, version 2.1 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program. If not,
+# see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
+#
+# Description:
+#
+
+INCLUDEPATH += . \
+ inc \
+ autolockuseractivityservice \
+ autolockuseractivityservice/inc
+
+SOURCES=\
+ src/main.cpp\
+ src/AutolockSrv.cpp
+
+HEADERS=\
+ src/AutolockSrv.h
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/src/keycapturingapplication.cpp Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,62 @@
+#include <QSymbianEvent>
+#include <QFile>
+#include <QTextStream>
+#include <QDebug>
+
+#include <W32STD.H>
+#include <eikenv.h>
+
+#include "keycapturingapplication.h"
+
+/*!
+
+ */
+void writeDebug(const QString &message)
+{
+ QFile file("c:/keycapturingapplication.log");
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
+ qDebug() << "DialogLauncherView::writeDebug - file open failed";
+ return;
+ }
+
+ QTextStream out(&file);
+ out << message << "\n";
+
+ file.close();
+}
+
+/*!
+
+ */
+KeyCapturingApplication::KeyCapturingApplication(int &argc, char *argv[], int keyCode) :
+ HbApplication(argc, argv), mKeyCode(keyCode), mKeyCaptureHandle(-1)
+{
+ CEikonEnv *env = CEikonEnv::Static();
+ mKeyCaptureHandle = env->RootWin().CaptureKey(keyCode, 0, 0);
+}
+
+/*!
+
+ */
+KeyCapturingApplication::~KeyCapturingApplication()
+{
+ CEikonEnv *env = CEikonEnv::Static();
+ env->RootWin().CancelCaptureKey(mKeyCaptureHandle);
+}
+
+bool KeyCapturingApplication::symbianEventFilter(const QSymbianEvent *event)
+{
+ if (event->type() == QSymbianEvent::WindowServerEvent) {
+ const TWsEvent* wsEvent = event->windowServerEvent();
+ if (wsEvent->Type() == EEventKey) {
+ writeDebug(QString("Key Event:"));
+ writeDebug(QString("\tkey code: %1").arg(wsEvent->Key()->iCode));
+ writeDebug(QString("\tscan code: %1").arg(wsEvent->Key()->iScanCode));
+ if (wsEvent->Key()->iCode == mKeyCode)
+ {
+ emit capturedKeyEvent();
+ }
+ }
+ }
+ return HbApplication::symbianEventFilter(event);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/src/keycapturingapplication.h Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,28 @@
+#ifndef KEYCAPTURINGAPPLICATION_H
+#define KEYCAPTURINGAPPLICATION_H
+
+#include <HbApplication>
+
+class KeyCapturingApplication : public HbApplication
+{
+
+ Q_OBJECT
+
+signals:
+
+ void capturedKeyEvent();
+
+public:
+
+ KeyCapturingApplication(int &argc, char *argv[], int keyCode);
+ ~KeyCapturingApplication();
+ virtual bool symbianEventFilter(const QSymbianEvent *event);
+
+private:
+
+ int mKeyCode;
+ int mKeyCaptureHandle;
+
+};
+
+#endif // KEYCAPTURINGAPPLICATION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/src/lockapp.hrh Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: General application spesific enumeration values
+ *
+*/
+
+
+#ifndef __LOCKAPP_HRH__
+#define __LOCKAPP_HRH__
+
+/**
+ * LockApp panic codes
+ *
+ * @lib lockapp
+ * @since 5.0
+ * @author Joona Petrell
+ * @author Tamas Koteles
+ */
+enum TLockAppPanic
+ {
+ ELockPanicGeneral,
+ ELockPanicIllegalMessage,
+ ELockUnknownValue,
+ ELockIllegalState,
+ ELockPanicOutOfRange,
+ ELockPanicObserverAlreadyExists,
+ ELockPanicObserverNotFound,
+ };
+
+/**
+ * Three possible states of LockApp: unlocked, keyguard active, devicelock active
+ *
+ * @lib lockapp
+ * @since 5.0
+ * @author Joona Petrell
+ * @author Tamas Koteles
+ */
+enum TLockStatus
+ {
+ ELockNotActive = 0,
+ EKeyguardActive,
+ EDevicelockActive
+ };
+
+/**
+ * Three possible reason for devicelock: manual, remote, timer
+ *
+ * @lib lockapp
+ * @since 5.0
+ * @author Joona Petrell
+ * @author Tamas Koteles
+ */
+enum TDevicelockReason
+ {
+ EDevicelockManual = 1,
+ EDevicelockRemote,
+ EDevicelockTimer
+ };
+
+/**
+ * Bit-field representing screen saver status
+ */
+const TUint KLockAppEnvScreenSaverOn = 1;
+
+/**
+ * Bit-field representing phonecall status
+ */
+const TUint KLockAppEnvPhonecallOngoing = 2;
+
+/**
+ * Bit-field representing idle status
+ */
+const TUint KLockAppEnvIdleOnForeground = 4;
+
+/**
+ * Bit-field representing grip status
+ */
+const TUint KLockAppEnvGrip = 8;
+
+/**
+ * Bit-field representing FPS status
+ */
+const TUint KLockAppEnvFPS = 0x10;
+
+#endif // __LOCKAPP_HRH__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/AutolockSrv/src/main.cpp Mon May 03 13:20:16 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, version 2.1 of the License.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public License
+* along with this program. If not,
+* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
+*
+* Description:
+*
+*/
+
+// #include "xqservicelog.h"
+#include <QDebug>
+
+#include <QApplication>
+#include "AutolockSrv.h"
+
+#include <hbapplication.h>
+#include <hbmainwindow.h>
+
+int main(int argc, char **argv)
+{
+ // qInstallMsgHandler(XQSERVICEMESSAGEHANDLER);
+ // XQSERVICE_DEBUG_PRINT(" ================== xxxx AutolockSrv::main");
+ qDebug() << "================== xxxx AutolockSrv::main";
+ QApplication a( argc, argv );
+ AutolockSrv *cl = new AutolockSrv();
+ qDebug() << " ================== xxxx cl->show";
+ // cl->show();
+ qDebug() << " ================== xxxx cl->hide";
+ cl->hide();
+ qDebug() << " ================== xxxx cl->lower";
+ cl->lower();
+ int rv = a.exec();
+ delete cl;
+ return rv;
+}
+
--- a/securitydialogs/SecUi/Inc/SecQueryUi.h Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/SecUi/Inc/SecQueryUi.h Mon May 03 13:20:16 2010 +0300
@@ -23,12 +23,17 @@
#include <hb/hbcore/hbsymbiandevicedialog.h> // MHbDeviceDialogObserver
#include <etelmm.h>
+#define ESecUiTypeMask 0x0FFFFFF
+
#define ESecUiCancelSupported 0x1000000
#define ESecUiCancelNotSupported 0x0000000
#define ESecUiEmergencySupported 0x2000000
#define ESecUiEmergencyNotSupported 0x0000000
+#define ESecUiAlphaSupported 0x4000000
+#define ESecUiAlphaNotSupported 0x0000000
+
class MSecQueryUiCertificateDetailsProvider;
class MSecQueryUiDrmDetailsProvider;
class CHbDeviceDialog;
--- a/securitydialogs/SecUi/Inc/SecUiWait.h Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/SecUi/Inc/SecUiWait.h Mon May 03 13:20:16 2010 +0300
@@ -20,6 +20,12 @@
#ifndef __SECUIWAIT_H
#define __SECUIWAIT_H
+#if defined(_DEBUG)
+#define RDEBUG( x, y ) RDebug::Printf( "%s %s (%u) %s=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, x, y );
+#else
+#define RDEBUG( x, y )
+#endif
+
// INCLUDES
#include <e32base.h>
--- a/securitydialogs/SecUi/Src/SecQueryUi.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecQueryUi.cpp Mon May 03 13:20:16 2010 +0300
@@ -21,6 +21,9 @@
#include <hb/hbcore/hbsymbianvariant.h> // CHbSymbianVariantMap
#include <apgicnfl.h> // CApaMaskedBitmap
+#include <CPhCltEmergencyCall.h>
+#include <SCPClient.h>
+#include "SecUiWait.h"
// Variant map keys for notification device dialog
_LIT( KNotifDeviceDialogLiteral, "com.nokia.hb.devicenotificationdialog/1.0" );
@@ -87,32 +90,9 @@
const TDesC& aIconFile, const TDesC& aAppVersion, TInt aAppSize,
const TDesC& aAppDetails ) */
{
- RDebug::Printf( "%s %s (%u) aType=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aType );
- RDebug::Printf( "%s %s (%u) password=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- TInt ESecQueryUiInstallConfirmationQueryType=0x101;
- ClearParamsAndSetNoteTypeL( ESecQueryUiInstallConfirmationQueryType );
- AddParamL( _L("KSecQueryUiApplicationName"), _L("SecUi") );
-
- _LIT(KTitle, "title");
- _LIT(KTitleValue1, "Enter PIN");
- _LIT(KTitleValue2, "Enter PIN with care");
- _LIT(KTitleValue3, "Enter PIN last");
- if(aType==KMaxNumberOfPINAttempts)
- AddParamL( KTitle, KTitleValue1 );
- else if(aType> KLastRemainingInputAttempt)
- AddParamL( KTitle, KTitleValue2 );
- else
- AddParamL( KTitle, KTitleValue3 );
-
- _LIT( KCodeTop, "codeTop" ); _LIT( KCodeTopValue, "codeTop" );
- AddParamL( KCodeTop, KCodeTopValue );
-
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- DisplayDeviceDialogL();
- User::LeaveIfError( WaitUntilDeviceDialogClosed() );
- password.Copy(iPassword);
- return( iReturnValue == KErrNone );
+ RDEBUG( "This should never be called. Obsolete", 0 );
+ return KErrAbort ;
}
// ---------------------------------------------------------------------------
@@ -121,9 +101,9 @@
//
EXPORT_C TInt CSecQueryUi::SecQueryDialog(const TDesC& aCaption, TDes& aDataText, TInt aMinLength,TInt aMaxLength,TInt aMode)
{
- RDebug::Printf( "%s %s (%u) aCaption=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "aCaption", 0 );
RDebug::Print( aCaption );
- RDebug::Printf( "%s %s (%u) aMode=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aMode );
+ RDEBUG( "aMode", aMode );
ClearParamsAndSetNoteTypeL( aMode );
AddParamL( _L("KSecQueryUiApplicationName"), aCaption );
@@ -131,15 +111,28 @@
_LIT(KTitle, "title");
// _LIT(KTitleValue1, "Enter PIN");
AddParamL( KTitle, aCaption );
+ AddParamL( _L("MinLength"), aMinLength );
+ AddParamL( _L("MaxLength"), aMaxLength );
_LIT( KCodeTop, "codeTop" ); _LIT( KCodeTopValue, "codeTop" );
AddParamL( KCodeTop, KCodeTopValue );
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ if( aCaption.Find(_L("|"))>0 )
+ {
+ RDEBUG( "codeBottom aMode", aMode );
+ _LIT( KCodeBottom, "codeBottom" ); _LIT( KCodeBottomValue, "codeBottom" );
+ AddParamL( KCodeBottom, KCodeBottomValue );
+ }
+
+ RDEBUG( "0", 0 );
DisplayDeviceDialogL();
- User::LeaveIfError( WaitUntilDeviceDialogClosed() );
+ TInt error = WaitUntilDeviceDialogClosed();
+ RDEBUG( "error", error );
+ User::LeaveIfError( error );
+
aDataText.Copy(iPassword);
- return( iReturnValue == KErrNone );
+ RDEBUG( "iReturnValue", iReturnValue );
+ return iReturnValue;
}
// ---------------------------------------------------------------------------
@@ -262,12 +255,13 @@
//
void CSecQueryUi::DoCancel()
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
if( iWait && iWait->IsStarted() && iWait->CanStopNow() )
{
iCompletionCode = KErrCancel;
iWait->AsyncStop();
}
+ RDEBUG( "0", 0 );
}
// ---------------------------------------------------------------------------
@@ -276,11 +270,12 @@
//
void CSecQueryUi::RunL()
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
if( iWait )
{
iWait->AsyncStop();
}
+ RDEBUG( "0", 0 );
}
// ---------------------------------------------------------------------------
@@ -289,28 +284,123 @@
//
void CSecQueryUi::DataReceived( CHbSymbianVariantMap& aData )
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
const CHbSymbianVariant* acceptedVariant = aData.Get( _L("accepted") ); // KSecQueryUiQueryAccepted
+ RDEBUG( "0", 0 );
if( acceptedVariant )
{
- TBool* acceptedValue = acceptedVariant->Value<TBool>();
- if( acceptedValue && *acceptedValue )
+ RDEBUG( "0", 0 );
+ TInt* acceptedValue = acceptedVariant->Value<TInt>();
+ RDEBUG( "acceptedValue", acceptedValue );
+ RDEBUG( "*acceptedValue", *acceptedValue );
+ if( acceptedValue )
{
- iReturnValue = KErrNone;
- }
- else
- {
- iReturnValue = KErrCancel;
+ iReturnValue = *acceptedValue;
}
}
const CHbSymbianVariant* acceptedVariantTop = aData.Get( _L("codeTop") ); // KSecQueryUiQueryAccepted
+ RDEBUG( "0", 0 );
if( acceptedVariantTop )
{
TPtrC acceptedValueTop = *acceptedVariantTop->Value<TDesC>();
- RDebug::Printf( "%s %s (%u) acceptedValueTop=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "acceptedValueTop", 0 );
RDebug::Print( acceptedValueTop );
iPassword.Copy(acceptedValueTop);
- }
+
+ if(iReturnValue == KErrCompletion ) // the user didn't OK. It was send automatically because validating new lock code
+ {
+ _LIT( KInvalidNewLockCode, "invalidNewLockCode" );
+ _LIT( KInvalidNewLockCode0, "invalidNewLockCode#0" );
+ _LIT( KInvalidNewLockCode1, "invalidNewLockCode#1" );
+ _LIT( KInvalidNewLockCode2, "invalidNewLockCode#2" );
+ AddParamL( KInvalidNewLockCode, KInvalidNewLockCode0 ); // for starter
+ RSCPClient scpClient;
+ TSCPSecCode newCode;
+ newCode.Copy( acceptedValueTop );
+ RDEBUG( "scpClient.Connect", 0 );
+ if ( scpClient.Connect() == KErrNone )
+ {
+ /*
+ RArray<TDevicelockPolicies> aFailedPolicies;
+ TDevicelockPolicies failedPolicy;
+ TInt retLockcode = KErrNone;
+ RDEBUG( "scpClient.VerifyNewLockcodeAgainstPolicies", 0 );
+ retLockcode = scpClient.VerifyNewLockcodeAgainstPolicies( newCode, aFailedPolicies );
+ RDEBUG( "retLockcode", retLockcode );
+ RDEBUG( "aFailedPolicies.Count()", aFailedPolicies.Count() );
+ for(TInt i=0; i<aFailedPolicies.Count(); i++)
+ {
+ failedPolicy = aFailedPolicies[i];
+ RDEBUG( "failedPolicy", failedPolicy );
+ TBuf<0x100> KInvalidNewLockCodeX; KInvalidNewLockCodeX.Zero(); KInvalidNewLockCodeX.Append(_L("invalidNewLockCode")); KInvalidNewLockCodeX.Append(_L("#"));
+ KInvalidNewLockCodeX.AppendNum(failedPolicy);
+ AddParamL( KInvalidNewLockCode, KInvalidNewLockCodeX );
+ }
+ */
+ scpClient.Close();
+ }
+ RDEBUG( "iDeviceDialog->Update", 0 );
+ iDeviceDialog->Update( *iVariantMap );
+ } // KErrCompletion
+
+ if(acceptedValueTop.Length()<=4) // TODO store aMinLenght and check it here, instead of "4"
+ {
+ RDEBUG( "CPhCltEmergencyCall", 0 );
+ CPhCltEmergencyCall* emergencyCall = CPhCltEmergencyCall::NewL( NULL );
+ RDEBUG( "PushL", 0 );
+ CleanupStack::PushL( emergencyCall );
+ TPhCltEmergencyNumber emNumber;
+
+ // this relies on the fact that emergency has 3 digits, and password needs at least 4
+ TBool isEmergency( EFalse );
+ RDEBUG( "calling IsEmergencyPhoneNumber", 0 );
+ TInt error = emergencyCall->IsEmergencyPhoneNumber( acceptedValueTop, isEmergency );
+ RDEBUG( "error", error );
+ RDEBUG( "emNumber", 0 );
+
+ RDEBUG( "isEmergency", isEmergency );
+ #ifdef __WINS__
+ RDEBUG( "__WINS__ checking", 0 );
+ if(!acceptedValueTop.CompareF(_L("112")) || !acceptedValueTop.CompareF(_L("911")) || !acceptedValueTop.CompareF(_L("555")) )
+ {
+ isEmergency = ETrue;
+ error = KErrNone;
+ RDEBUG( "__WINS__ isEmergency", isEmergency );
+ }
+ #endif
+
+ if ( !error ) // oddly enough, missing capabilities also gives KErrNone
+ {
+ if(iReturnValue == KErrAbort ) // the user didn't OK. It was send automatically because short code
+ {
+ _LIT( KEmergency, "emergency" ); _LIT( KEmergencyValueYes, "emergencyYes" ); _LIT( KEmergencyValueNo, "emergencyNo" );
+ if(isEmergency)
+ {
+ RDEBUG( "KEmergencyValueYes", 1 );
+ AddParamL( KEmergency, KEmergencyValueYes );
+ }
+ else
+ {
+ RDEBUG( "KEmergencyValueNo", 0 );
+ AddParamL( KEmergency, KEmergencyValueNo );
+ }
+ iDeviceDialog->Update( *iVariantMap );
+ }
+ else if(iReturnValue == KErrNone )
+ { // user pressed Call and number is valid
+ if(isEmergency)
+ {
+ RDEBUG( "DialEmergencyCallL", isEmergency );
+ emergencyCall->DialEmergencyCallL( emNumber );
+ iReturnValue = KErrAbort; // this means emergency call
+ }
+ }
+ } // if !error
+ RDEBUG( "0", 0 );
+ CleanupStack::PopAndDestroy( emergencyCall );
+ } // lenght<3
+ } // acceptedVariantTop
+ RDEBUG( "iReturnValue", iReturnValue );
}
// ---------------------------------------------------------------------------
@@ -319,12 +409,14 @@
//
void CSecQueryUi::DeviceDialogClosed( TInt aCompletionCode )
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "aCompletionCode", aCompletionCode );
iCompletionCode = aCompletionCode;
iIsDisplayingDialog = EFalse;
TRequestStatus* status( &iStatus );
+ RDEBUG( "0", 0 );
User::RequestComplete( status, KErrNone );
+ RDEBUG( "0", 0 );
}
// ---------------------------------------------------------------------------
@@ -333,7 +425,7 @@
//
CSecQueryUi::CSecQueryUi() : CActive( CActive::EPriorityStandard )
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
CActiveScheduler::Add( this );
}
@@ -343,7 +435,7 @@
//
void CSecQueryUi::ConstructL()
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
iWait = new( ELeave ) CActiveSchedulerWait;
// iDeviceDialog is allocated later, first call of DisplayDeviceDialogL()
}
@@ -354,6 +446,7 @@
//
void CSecQueryUi::ClearParamsL()
{
+ RDEBUG( "0", 0 );
if( iVariantMap )
{
delete iVariantMap;
@@ -368,7 +461,7 @@
//
void CSecQueryUi::ClearParamsAndSetNoteTypeL( TInt aType )
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "aType", aType );
ClearParamsL();
AddParamL( _L("type"), aType );
}
@@ -379,7 +472,7 @@
//
void CSecQueryUi::AddParamL( const TDesC& aKey, TInt aValue )
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "aValue", aValue );
CHbSymbianVariant* variant = NULL;
variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EInt );
iVariantMap->Add( aKey, variant );
@@ -391,7 +484,7 @@
//
void CSecQueryUi::AddParamL( const TDesC& aKey, const TDesC& aValue )
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
CHbSymbianVariant* variant = NULL;
variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EDes );
iVariantMap->Add( aKey, variant );
@@ -411,7 +504,7 @@
//
void CSecQueryUi::DisplayDeviceDialogL()
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
if( iDeviceDialog && iIsDisplayingDialog )
{
iDeviceDialog->Update( *iVariantMap );
@@ -423,11 +516,13 @@
iDeviceDialog = CHbDeviceDialog::NewL();
}
_LIT( KSecQueryUiDeviceDialog, "com.nokia.secuinotificationdialog/1.0" );
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "Show", 0 );
iDeviceDialog->Show( KSecQueryUiDeviceDialog, *iVariantMap, this );
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "iIsDisplayingDialog", iIsDisplayingDialog );
iIsDisplayingDialog = ETrue;
+ RDEBUG( "iIsDisplayingDialog", iIsDisplayingDialog );
}
+ RDEBUG( "0", 0 );
}
// ---------------------------------------------------------------------------
@@ -436,15 +531,18 @@
//
TInt CSecQueryUi::WaitUntilDeviceDialogClosed()
{
- RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
iCompletionCode = KErrInUse;
iReturnValue = KErrUnknown;
if( !IsActive() && iWait && !iWait->IsStarted() )
{
iStatus = KRequestPending;
SetActive();
+ RDEBUG( "Start", 0 );
iWait->Start();
+ RDEBUG( "Started", 1 );
}
+ RDEBUG( "iCompletionCode", iCompletionCode );
return iCompletionCode;
}
--- a/securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp Mon May 03 13:20:16 2010 +0300
@@ -25,7 +25,7 @@
#ifdef __COVER_DISPLAY
#include <aknmediatorfacade.h>
-#include <secondarydisplay/SecondaryDisplayStartupAPI.h>
+// #include <secondarydisplay/SecondaryDisplayStartupAPI.h>
#endif //__COVER_DISPLAY
#include <centralrepository.h>
@@ -70,11 +70,11 @@
// CSecurityHandler::CSecurityHandler()
// C++ constructor
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C CSecurityHandler::CSecurityHandler(RMobilePhone& aPhone):
iPhone(aPhone), iQueryCanceled(ETrue), iSecurityDlg(NULL), iNoteDlg(NULL)
{
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
TInt result = iCustomPhone.Open(aPhone);
TRAP_IGNORE( FeatureManager::InitializeLibL() ); //Shouldn't this panic if FM does not initialise??
@@ -85,14 +85,11 @@
// CSecurityHandler::~CSecurityHandler()
// Destructor
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C CSecurityHandler::~CSecurityHandler()
{
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
- #if defined(_DEBUG)
- RDebug::Print(_L("CSecurityHandler::~CSecurityHandler()"));
- #endif
if ( iDestroyedPtr )
{
*iDestroyedPtr = ETrue;
@@ -107,11 +104,11 @@
// CSecurityHandler::HandleEventL()
// Handles different security events
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C void CSecurityHandler::HandleEventL(
RMobilePhone::TMobilePhoneSecurityEvent aEvent )
{
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
TInt result = KErrNone;
HandleEventL( aEvent, result );
@@ -122,12 +119,12 @@
// CSecurityHandler::HandleEventL()
// Handles different security events
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C void CSecurityHandler::HandleEventL(
RMobilePhone::TMobilePhoneSecurityEvent aEvent,
TBool aStartup, TInt& aResult )
{
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
iStartup = aStartup;
HandleEventL( aEvent, aResult );
@@ -138,23 +135,19 @@
// CSecurityHandler::HandleEventL()
// Handles different security events
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C void CSecurityHandler::HandleEventL(
RMobilePhone::TMobilePhoneSecurityEvent aEvent, TInt& aResult )
{
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
/*****************************************************
* Series 60 Customer / ETel
* Series 60 ETel API
*****************************************************/
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::HandleEventL()"));
- RDebug::Print(_L("(SECUI)CSecurityHandler::HandleEventL() EVENT: %d"), aEvent);
- #endif
TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
- RDebug::Printf( "%s %s (%u) aEvent=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aEvent );
+ RDEBUG( "aEvent", aEvent );
switch(aEvent)
{
@@ -168,10 +161,7 @@
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::HandleEventL() PUK1Required"));
#endif
- ((CAknNotifierAppServerAppUi*)(CEikonEnv::Static())->EikAppUi())->SuppressAppSwitching(ETrue);
- TRAPD(err,aResult = Puk1RequiredL());
- ((CAknNotifierAppServerAppUi*)(CEikonEnv::Static())->EikAppUi())->SuppressAppSwitching(EFalse);
- User::LeaveIfError(err);
+ Puk1RequiredL();
break;
case RMobilePhone::EPin2Required:
Pin2RequiredL();
@@ -204,16 +194,14 @@
default:
break;
}
- #if defined(_DEBUG)
- RDebug::Print( _L( "CSecurityHandler::HandleEventL() returning %d." ), aResult );
- #endif
+ RDEBUG( "aResult", aResult );
}
//
// ----------------------------------------------------------
// CSecurityHandler::AskSecCodeL()
// For asking security code e.g in settings
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecurityHandler::AskSecCodeL()
{
/*****************************************************
@@ -231,12 +219,12 @@
CRepository* repository = CRepository::NewL(KCRUidSCPLockCode);
TInt currentLockStatus = -1;
TInt res=-1;
+ TInt lAlphaSupported=0;
+ TInt lCancelSupported=0;
res = repository->Get(KSCPLockCodeDefaultLockCode , currentLockStatus);
- #if defined(_DEBUG)
- RDebug::Printf( "%s %s (%u) res=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
- RDebug::Printf( "%s %s (%u) currentLockStatus=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, currentLockStatus );
- #endif
+ RDEBUG( "res", res );
+ RDEBUG( "currentLockStatus", currentLockStatus );
delete repository;
if(res==0 && currentLockStatus==1)
{
@@ -250,46 +238,53 @@
RMobilePhone::TMobilePassword required_fourth;
TInt ret = KErrNone;
- TInt err = KErrNone;
TInt status = KErrNone;
RMobilePhone::TMobilePassword iSecUi_password;
- TBool queryAccepted = EFalse;
+ TInt queryAccepted = KErrCancel;
-
- while (!queryAccepted)
+ while (queryAccepted!=KErrNone)
{
RMobilePhone::TMobilePhoneSecurityCode secCodeType;
secCodeType = RMobilePhone::ESecurityCodePhonePassword;
/* request PIN using QT */
CSecQueryUi *iSecQueryUi;
- RDebug::Printf( "%s %s (%u) CSecQueryUi=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "CSecQueryUi", 0 );
iSecQueryUi = CSecQueryUi::NewL();
- RDebug::Printf( "%s %s (%u) Copy=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- iSecUi_password.Copy(_L("666"));
- RDebug::Printf( "%s %s (%u) InstallConfirmationQueryL=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("AskSecCodeL"), iSecUi_password, 4, 8, secCodeType /*aMode*/ );
- RDebug::Printf( "%s %s (%u) iSecUi_password=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ lAlphaSupported = ESecUiAlphaSupported;
+ lCancelSupported = ESecUiCancelSupported;
+ TBuf<0x100> title; title.Zero(); title.Append(_L("AskSecCodeL")); title.Append(_L("#")); title.AppendNum(-1);
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, iSecUi_password, SEC_C_SECURITY_CODE_MIN_LENGTH,SEC_C_SECURITY_CODE_MAX_LENGTH, lAlphaSupported | lCancelSupported | secCodeType /*aMode*/ );
+ RDEBUG( "iSecUi_password", 0 );
RDebug::Print( iSecUi_password );
- RDebug::Printf( "%s %s (%u) delete=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "delete", 0 );
delete iSecQueryUi;
- RDebug::Printf( "%s %s (%u) done=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- if(queryAccepted) res=0xFFFFFFFE; // this is the value returned from iSecurityDlg
+ RDEBUG( "queryAccepted", queryAccepted );
/* end request PIN using QT */
-
- CWait* wait = CWait::NewL();
- iPhone.VerifySecurityCode(wait->iStatus,secCodeType, iSecUi_password, required_fourth);
- status = wait->WaitForRequestL();
- delete wait;
-
- ret = ETrue;
- if (!queryAccepted)
+ if (queryAccepted!=KErrNone)
{
ret = EFalse;
return ret;
}
- queryAccepted = EFalse; // because it's not yet validated
+
+ CWait* wait = CWait::NewL();
+ RDEBUG( "VerifySecurityCode", 0 );
+ iPhone.VerifySecurityCode(wait->iStatus,secCodeType, iSecUi_password, required_fourth);
+ RDEBUG( "WaitForRequestL", 0 );
+ status = wait->WaitForRequestL();
+ RDEBUG( "status", status );
+ delete wait;
+ #ifdef __WINS__
+ if(status==KErrNotSupported )
+ {
+ RDEBUG( "status", status );
+ status=KErrNone;
+ }
+ #endif
+
+ ret = ETrue;
+ queryAccepted = KErrCancel; // because it's not yet validated
switch(status)
{
case KErrNone:
@@ -297,6 +292,7 @@
if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ) &&
!(FeatureManager::FeatureSupported(KFeatureIdSapDeviceLockEnhancements)))
{
+ RDEBUG( "calling RSCPClient", 0 );
RSCPClient scpClient;
User::LeaveIfError( scpClient.Connect() );
CleanupClosePushL( scpClient );
@@ -304,9 +300,10 @@
TSCPSecCode newCode;
newCode.Copy( iSecUi_password );
scpClient.StoreCode( newCode );
+ RDEBUG( "called StoreCode", 1 );
CleanupStack::PopAndDestroy(); //scpClient
- queryAccepted = ETrue;
+ queryAccepted = KErrNone;
}
iQueryCanceled = ETrue; // TODO
@@ -316,18 +313,18 @@
case KErrLocked:
{
// security code blocked!
- CSecuritySettings::ShowResultNoteL(R_SEC_BLOCKED, CAknNoteDialog::EErrorTone); // TODO
+ CSecuritySettings::ShowResultNoteL(R_SEC_BLOCKED, CAknNoteDialog::EErrorTone);
break;
}
case KErrGsm0707IncorrectPassword:
case KErrAccessDenied:
{
// code was entered erroneusly
- CSecuritySettings::ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone); // TODO
+ CSecuritySettings::ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
}
default:
{
- CSecuritySettings::ShowResultNoteL(status, CAknNoteDialog::EErrorTone); // TODO
+ CSecuritySettings::ShowResultNoteL(status, CAknNoteDialog::EErrorTone);
}
}
} // while
@@ -339,8 +336,9 @@
// ----------------------------------------------------------
// CSecurityHandler::CancelSecCodeQuery()
// Cancels PIN2 and security code queries
+// TODO is this used?
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C void CSecurityHandler::CancelSecCodeQuery()
{
#if defined(_DEBUG)
@@ -366,7 +364,7 @@
// CSecurityHandler::AskSecCodeInAutoLock()
// for asking security code in autolock
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecurityHandler::AskSecCodeInAutoLockL()
{
/*****************************************************
@@ -374,9 +372,9 @@
* Series 60 ETel API
*****************************************************/
- #ifdef __WINS__
- return ETrue;
- #else
+ RDEBUG( "0", 0 );
+
+
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::AskSecCodeInAutoLockL()"));
#endif
@@ -396,12 +394,15 @@
res = repository->Get(KSettingsAutoLockTime, period);
delete repository;
+ RDEBUG( "res", res );
+
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::AskSecCodeInAutoLockL() autolock period:%d"), res);
#endif
if (res == KErrNone)
{
// disable autolock in Domestic OS side too if autolock period is 0.
+ RDEBUG( "period", period );
if (period == 0 )
{
#if defined(_DEBUG)
@@ -419,6 +420,7 @@
if ( remoteLockSettings->GetEnabled( remoteLockStatus ) )
{
+ RDEBUG( "0", 0 );
if ( remoteLockStatus )
{
// Remote lock is enabled
@@ -455,49 +457,57 @@
#endif // RD_REMOTELOCK
+ RDEBUG( "lockChange", lockChange );
wait = CWait::NewL();
+ RDEBUG( "0", 0 );
+ // this also calls PassPhraseRequiredL ???
+ RDEBUG( "SetLockSetting", 1 );
iPhone.SetLockSetting(wait->iStatus,lockType,lockChange);
+ res = KErrNone;
+ RDEBUG( "WaitForRequestL", 0 );
res = wait->WaitForRequestL();
+ RDEBUG( "res", res );
delete wait;
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::AskSecCodeInAutoLockL() SetLockSetting RESULT:%d"), res);
#endif
- }
+ } // from period == 0
else
{ // ask security code
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::AskSecCodeInAutoLockL() Ask sec code via notifier"));
#endif
+ RDEBUG( "0", 0 );
RNotifier codeQueryNotifier;
User::LeaveIfError(codeQueryNotifier.Connect());
CWait* wait = CWait::NewL();
CleanupStack::PushL(wait);
TInt queryResponse = 0;
TPckg<TInt> response(queryResponse);
+ RDEBUG( "0", 0 );
TSecurityNotificationPckg params;
params().iEvent = static_cast<TInt>(RMobilePhone::EPhonePasswordRequired);
params().iStartup = EFalse;
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::AskSecCodeInAutoLockL() Start Notifier"));
#endif
+ RDEBUG( "0", 0 );
+ RDEBUG( "StartNotifierAndGetResponse", 0 );
codeQueryNotifier.StartNotifierAndGetResponse(wait->iStatus, KSecurityNotifierUid,params, response);
// this will eventually call PassPhraseRequiredL
+ RDEBUG( "WaitForRequestL", 0 );
res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL", 1 );
+ RDEBUG( "res", res );
CleanupStack::PopAndDestroy(); // wait
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::AskSecCodeInAutoLockL() results:"));
- RDebug::Print(_L("(SECUI)CSecurityHandler::AskSecCodeInAutoLockL() res:%d"), res);
- RDebug::Print(_L("(SECUI)CSecurityHandler::AskSecCodeInAutoLockL() queryResponse:%d"), queryResponse);
- #endif
if(res == KErrNone)
res = queryResponse;
- }
+ } // from else period == 0
+ RDEBUG( "0", 0 );
}
else
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::AskSecCodeInAutoLockL() KERRSOMETHING:Call SetLockSetting"));
- #endif
+ { // can't read repository for KSettingsAutoLockTime
+ RDEBUG( "KERRSOMETHING:Call SetLockSetting", 0 );
#ifdef RD_REMOTELOCK
@@ -547,29 +557,34 @@
lockChange = RMobilePhone::ELockSetDisabled;
#endif // RD_REMOTELOCK
+ RDEBUG( "0", 0 );
wait = CWait::NewL();
+ RDEBUG( "SetLockSetting", 0 );
iPhone.SetLockSetting(wait->iStatus,lockType,lockChange);
+ RDEBUG( "WaitForRequestL", 0 );
res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL", 1 );
delete wait;
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::AskSecCodeInAutoLockL() KES: SetLockSetting RESULT:%d"), res);
#endif
}
+ RDEBUG( "res", res );
switch (res)
{
case KErrNone:
{
return ETrue;
}
-
case KErrGsmSSPasswordAttemptsViolation:
case KErrLocked:
case KErrGsm0707IncorrectPassword:
case KErrAccessDenied:
{
- return AskSecCodeInAutoLockL();
+ RDEBUG( "KErrAccessDenied", KErrAccessDenied );
+ return AskSecCodeInAutoLockL();
}
case KErrAbort:
case KErrCancel:
@@ -577,42 +592,39 @@
return EFalse;
default:
{
+ RDEBUG( "default", res );
return AskSecCodeInAutoLockL();
}
}
-#endif // WINS
}
//
// ----------------------------------------------------------
// CSecurityHandler::PassPhraseRequired()
// Handles PassPhraseRequired event
// ----------------------------------------------------------
-//
+// qtdone
TInt CSecurityHandler::PassPhraseRequiredL()
{
/*****************************************************
* Series 60 Customer / ETel
* Series 60 ETel API
*****************************************************/
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::PassPhraseRequiredL()"));
- #endif
+ RDEBUG( "0", 0 );
TBool StartUp = iStartup;
RMobilePhone::TMobilePassword iSecUi_password;
RMobilePhone::TMobilePassword required_fourth;
- TBool queryAccepted = EFalse;
+ TInt queryAccepted = KErrCancel;
- TInt status=0;
TInt autolockState=0;
TInt lCancelSupported=0;
TInt lEmergencySupported=0;
+ TInt lAlphaSupported=0;
TInt err( KErrGeneral );
err = RProperty::Get(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, autolockState);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::PassPhraseRequiredL() Autolock Status result: %d"), err);
- #endif
+ RDEBUG( "StartUp", StartUp );
+ RDEBUG( "err", err );
if(!StartUp)
User::LeaveIfError( err );
TBool isConditionSatisfied = EFalse;
@@ -648,12 +660,12 @@
#endif
// Security code at bootup: No "cancel" softkey; Emergency calls enabled.
RMobilePhone::TMobilePhoneSecurityCode secCodeTypeToAsk = RMobilePhone::ESecurityCodePhonePassword; // for starters
-
+ RDEBUG( "isConditionSatisfied", isConditionSatisfied );
if (isConditionSatisfied)
{
// starter or special TARM. NoCancel+Emergency
lCancelSupported = ESecUiCancelNotSupported;
- lEmergencySupported = ESecUiEmergencyNotSupported;
+ lEmergencySupported = ESecUiEmergencySupported;
}
else if (autolockState > EAutolockOff)
{
@@ -667,45 +679,26 @@
lCancelSupported = ESecUiCancelSupported;
lEmergencySupported = ESecUiEmergencyNotSupported;
}
-
+ lAlphaSupported = ESecUiAlphaSupported;
+
/* request PIN using QT */
- status = KErrNone;
CSecQueryUi *iSecQueryUi;
- RDebug::Printf( "%s %s (%u) CSecQueryUi=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
iSecQueryUi = CSecQueryUi::NewL();
- RDebug::Printf( "%s %s (%u) Copy=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- iSecUi_password.Copy(_L("666"));
- RDebug::Printf( "%s %s (%u) SecQueryDialog aType=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, lCancelSupported | lEmergencySupported | secCodeTypeToAsk );
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("PassPhraseRequiredL"), iSecUi_password, 4, 8, lCancelSupported | lEmergencySupported | secCodeTypeToAsk );
- RDebug::Printf( "%s %s (%u) iSecUi_password=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ TInt lType = lAlphaSupported | lCancelSupported | lEmergencySupported | secCodeTypeToAsk;
+ RDEBUG( "lType", lType );
+ queryAccepted = iSecQueryUi->SecQueryDialog( _L("PassPhraseRequiredL"), iSecUi_password, SEC_C_SECURITY_CODE_MIN_LENGTH,SEC_C_SECURITY_CODE_MAX_LENGTH, lType );
+ RDEBUG( "iSecUi_password", 0 );
RDebug::Print( iSecUi_password );
- RDebug::Printf( "%s %s (%u) delete=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "queryAccepted", queryAccepted );
delete iSecQueryUi;
- RDebug::Printf( "%s %s (%u) done=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- if(queryAccepted) status=0xFFFFFFFE; // this is the value returned from iSecurityDlg
/* end request PIN using QT */
- // TODO if Emergency was possible, then consider status == ESecUiEmergencyCall
- /* I don't think I need this
- TInt secUiOriginatedQuery(ESecurityUIsETelAPIOriginated);
- RProperty::Get(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, secUiOriginatedQuery);
- CSecUiLockObserver* deviceLockStatusObserver = CSecUiLockObserver::NewL(iSecurityDlg);
- */
TBool wasCancelledOrEmergency = EFalse;
-if(!FeatureManager::FeatureSupported(KFeatureIdSapDeviceLockEnhancements))
-{
- if (!status || (status == ESecUiEmergencyCall)
- || (status == EAknSoftkeyEmergencyCall) || (status == ESecUiDeviceLocked))
+ RDEBUG( "KFeatureIdSapDeviceLockEnhancements", KFeatureIdSapDeviceLockEnhancements );
+if ( (queryAccepted==KErrAbort /* =emergency */) || (queryAccepted == KErrCancel))
wasCancelledOrEmergency = ETrue;
-}
-else
-{
- if ( ( status == KErrCancel ) || (status == ESecUiEmergencyCall) ||
- (status == EAknSoftkeyEmergencyCall) || (status == ESecUiDeviceLocked))
- wasCancelledOrEmergency = ETrue;
-}
-RDebug::Printf( "%s %s (%u) wasCancelledOrEmergency=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, wasCancelledOrEmergency );
+ RDEBUG( "wasCancelledOrEmergency", wasCancelledOrEmergency );
if (wasCancelledOrEmergency)
{
#if defined(_DEBUG)
@@ -713,28 +706,38 @@
#endif
if (!StartUp)
{
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::PassPhraseRequiredL() ABORT CALLED!!!!!!"));
- #endif
+ RDEBUG( "AbortSecurityCode", 0 );
iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePhonePassword);
+ RDEBUG( "AbortSecurityCode", 1 );
}
return KErrCancel;
}
- RMobilePhone::TMobilePhoneSecurityCode secCodeType = RMobilePhone::ESecurityCodePhonePassword;
- CWait* wait = NULL;
-
- RDebug::Printf( "%s %s (%u) VerifySecurityCode=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RMobilePhone::TMobilePhoneSecurityCode secCodeType = RMobilePhone::ESecurityCodePhonePassword;
+ CWait* wait = NULL;
+ TInt status = KErrNone;;
wait = CWait::NewL();
+ RDEBUG( "VerifySecurityCode", 0 );
+ #ifndef __WINS__
iPhone.VerifySecurityCode(wait->iStatus,secCodeType, iSecUi_password, required_fourth);
+ RDEBUG( "WaitForRequestL", 0 );
status = wait->WaitForRequestL();
- RDebug::Print(_L("(SECUI)CSecurityHandler::PassPhraseRequiredL() VerifySecurityCode STATUS: %d"), status);
+ #else
+ status = KErrTimedOut;
+ RDEBUG( "WaitForRequestL not waint WINS", 0 );
+ #endif
+ RDEBUG( "WaitForRequestL status", status );
+ #ifdef __WINS__
+ if (status == KErrTimedOut)
+ {
+ status = KErrNone;
+ }
+ #endif
delete wait;
TInt returnValue = status;
- RDebug::Printf( "%s %s (%u) status=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, status );
- RDebug::Printf( "%s %s (%u) tarmFlag=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, tarmFlag );
- RDebug::Printf( "%s %s (%u) StartUp=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, StartUp );
+ RDEBUG( "tarmFlag", tarmFlag );
+ RDEBUG( "StartUp", StartUp );
switch(status)
{
case KErrNone:
@@ -743,8 +746,10 @@
#endif
// code approved
CSecuritySettings::ShowResultNoteL(R_CONFIRMATION_NOTE, CAknNoteDialog::EConfirmationTone);
+ RDEBUG( "R_CONFIRMATION_NOTE", R_CONFIRMATION_NOTE );
if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw))
{
+ RDEBUG( "KFeatureIdSapTerminalControlFw", KFeatureIdSapTerminalControlFw );
// Unset the admin flag if set
if ( tarmFlag & KSCPFlagResyncQuery )
{
@@ -763,20 +768,24 @@
FAILED to unset TARM Admin Flag"));
#endif
}
- }
+ }
if(!FeatureManager::FeatureSupported(KFeatureIdSapDeviceLockEnhancements))
- {
+ {
+ RDEBUG( "KFeatureIdSapDeviceLockEnhancements", KFeatureIdSapDeviceLockEnhancements );
RSCPClient scpClient;
+ RDEBUG( "scpClient.Connect", 0 );
User::LeaveIfError( scpClient.Connect() );
+ RDEBUG( "scpClient.Connect", 1 );
CleanupClosePushL( scpClient );
TSCPSecCode newCode;
newCode.Copy( iSecUi_password );
scpClient.StoreCode( newCode );
+ RDEBUG( "scpClient.StoreCode", 1 );
CleanupStack::PopAndDestroy(); //scpClient
}
}
-
+ RDEBUG( "StartUp", StartUp );
if (StartUp)
{
#if defined(_DEBUG)
@@ -819,9 +828,11 @@
#endif // _DEBUG
// Disable DOS device lock setting
+ RDEBUG( "iCustomPhone.DisablePhoneLock", 0 );
wait = CWait::NewL();
iCustomPhone.DisablePhoneLock(wait->iStatus,iSecUi_password);
wait->WaitForRequestL();
+ RDEBUG( "iCustomPhone.DisablePhoneLock", 1 );
delete wait;
}
}
@@ -838,22 +849,18 @@
#else // not defined RD_REMOTELOCK
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::PassPhraseRequiredL()KErrNone: Startup; DisablePhoneLock."));
- #endif
+ RDEBUG( "iCustomPhone.DisablePhoneLock", 0 );
wait = CWait::NewL();
iCustomPhone.DisablePhoneLock(wait->iStatus,iSecUi_password);
wait->WaitForRequestL();
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::PassPhraseRequiredL()KErrNone: Startup; DisablePhoneLock completed."));
- #endif
+ RDEBUG( "iCustomPhone.DisablePhoneLock", 1 );
delete wait;
#endif // RD_REMOTELOCK
}
}
else // error getting repository
{
- RDebug::Printf( "%s %s (%u) error getting repository=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "error getting repository", 0 );
#ifdef RD_REMOTELOCK
// If remote lock is enabled, don't disable the domestic OS device lock
// since that would render the RemoteLock useless.
@@ -866,13 +873,11 @@
if ( !remoteLockStatus )
{
// Remote lock is disabled
- #ifdef _DEBUG
- RDebug::Print( _L( "(SecUi)CSecurityHandler::PassPhraseRequiredL() - Failed to get Autolock period and RemoteLock is disabled -> disable DOS device lock" ) );
- #endif // _DEBUG
-
+ RDEBUG( "iCustomPhone.DisablePhoneLock", 0 );
wait = CWait::NewL();
iCustomPhone.DisablePhoneLock(wait->iStatus,iSecUi_password);
wait->WaitForRequestL();
+ RDEBUG( "iCustomPhone.DisablePhoneLock", 1 );
delete wait;
}
}
@@ -889,22 +894,18 @@
#else // not defined RD_REMOTELOCK
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::PassPhraseRequiredL()KErrNone: Startup; Could not get autolock period."));
- #endif
- // could not get the current autolock time... disable autolock in Domestic OS side.
+ // could not get the current autolock time... disable autolock in Domestic OS side.
+ RDEBUG( "iCustomPhone.DisablePhoneLock", 0 );
wait = CWait::NewL();
iCustomPhone.DisablePhoneLock(wait->iStatus,iSecUi_password);
wait->WaitForRequestL();
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::PassPhraseRequiredL()KErrNone: Startup; NO AUTOLOCK PERIOD; DisablePhoneLock completed."));
- #endif
+ RDEBUG( "iCustomPhone.DisablePhoneLock", 1 );
delete wait;
#endif // RD_REMOTELOCK
}
- }
+ } // no Startup
break;
case KErrGsmSSPasswordAttemptsViolation:
@@ -917,6 +918,7 @@
break;
case KErrGsm0707IncorrectPassword:
case KErrAccessDenied:
+ RDEBUG( "KErrAccessDenied", KErrAccessDenied );
// TODO should this try again? It seems that it's not asked again.
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::PassPhraseRequiredL() KErrGsm0707IncorrectPassword"));
@@ -924,34 +926,32 @@
CSecuritySettings::ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
break;
default:
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::PassPhraseRequiredL() DEFAULT"));
- #endif
+ RDEBUG( "default", status );
CSecuritySettings::ShowErrorNoteL(status);
// TODO should this try again? It seems that it's not asked again.
break;
}
-
- return returnValue;
+ RDEBUG( "returnValue", returnValue );
+ return returnValue;
}
//
// ----------------------------------------------------------
// CSecurityHandler::Pin1Required()
// Handles Pin1Required event
// ----------------------------------------------------------
-//
+// qtdone
TInt CSecurityHandler::Pin1RequiredL()
{
/*****************************************************
* Series 60 Customer / ETel
* Series 60 ETel API
*****************************************************/
-RDebug::Printf( "%s %s (%u) 11=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "0", 0 );
-RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
RMobilePhone::TMobilePassword iSecUi_password;
TInt lCancelSupported = ESecUiCancelNotSupported;
- TBool queryAccepted = EFalse;
+ TInt queryAccepted = KErrCancel;
+ TInt lAlphaSupported=0;
RMobilePhone::TMobilePassword required_fourth;
RMobilePhone::TMobilePhoneSecurityCode secCodeType = RMobilePhone::ESecurityCodePin1;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
@@ -962,16 +962,11 @@
TInt res = KErrGeneral;
CWait* wait = CWait::NewL();
CleanupStack::PushL(wait);
-RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
-
+ RDEBUG( "0", 0 );
StartUp = iStartup;
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin1RequiredL()"));
- #endif
-
-RDebug::Printf( "%s %s (%u) StartUp=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, StartUp );
+ RDEBUG( "StartUp", StartUp );
if(!StartUp)
{
// read a flag to see whether the query is SecUi originated. For example, from CSecuritySettings::ChangePinRequestParamsL
@@ -996,39 +991,31 @@
RDebug::Print(_L("CSecurityHandler::Pin1RequiredL() Execute dlg"));
#endif
-RDebug::Printf( "%s %s (%u) StartUp=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, StartUp );
-RDebug::Printf( "%s %s (%u) secUiOriginatedQuery=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, secUiOriginatedQuery );
-RDebug::Printf( "%s %s (%u) ESecurityUIsSecUIOriginated=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, ESecurityUIsSecUIOriginated );
-RDebug::Printf( "%s %s (%u) err=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, err );
+ RDEBUG( "StartUp", StartUp );
+ RDEBUG( "secUiOriginatedQuery", secUiOriginatedQuery );
+ RDEBUG( "ESecurityUIsSecUIOriginated", ESecurityUIsSecUIOriginated );
+ RDEBUG( "err", err );
if(StartUp || (secUiOriginatedQuery != ESecurityUIsSecUIOriginated) || (err != KErrNone))
{
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- lCancelSupported = ESecUiCancelSupported;
+ RDEBUG( "0", 0 );
+ lCancelSupported = ESecUiCancelNotSupported;
}
else
{
- /* TODO do I need this ? */
- /*
- CSecUiLockObserver* deviceLockStatusObserver = CSecUiLockObserver::NewL(iSecurityDlg);
- CleanupStack::PushL(deviceLockStatusObserver);
- CSecUiLockObserver* queryStatusObserver = CSecUiLockObserver::NewL(iSecurityDlg, ESecUiRequestStateObserver);
- CleanupStack::PushL(queryStatusObserver);
- ...
- CleanupStack::PopAndDestroy(2); //deviceLockStatusObserver, queryStatusObserver
- */
+ lCancelSupported = ESecUiCancelSupported;
// it will be RMobilePhone::ESecurityCodePin1 , equivalent to ESecUiNone
}
wait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+ RDEBUG( "GetSecurityCodeInfo", 0 );
iPhone.GetSecurityCodeInfo(wait->iStatus, secCodeType, codeInfoPkg);
res = wait->WaitForRequestL();
- #if defined(_DEBUG)
+
TInt attempts(codeInfo.iRemainingEntryAttempts);
- RDebug::Print(_L("CSecurityHandler::Pin1RequiredL() Remaining Attempts query status: %d"), res);
- RDebug::Print(_L("CSecurityHandler::Pin1RequiredL() Remaining Attempts: %d"), attempts);
- #endif
- RDebug::Printf( "%s %s (%u) res=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
+ RDEBUG( "attempts", attempts );
+
+ RDEBUG( "res", res );
#ifdef __WINS__
- RDebug::Printf( "%s %s (%u) emulator can't read PIN attempts=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
+ RDEBUG( "emulator can't read PIN attempts", res );
res=KErrNone;
codeInfo.iRemainingEntryAttempts=3;
#endif
@@ -1036,54 +1023,50 @@
User::LeaveIfError(res);
/* request PIN using QT */
CSecQueryUi *iSecQueryUi;
- RDebug::Printf( "%s %s (%u) CSecQueryUi=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "CSecQueryUi", 0 );
iSecQueryUi = CSecQueryUi::NewL();
- RDebug::Printf( "%s %s (%u) Copy=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- iSecUi_password.Copy(_L("666"));
- RDebug::Printf( "%s %s (%u) SecQueryDialog=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- // TODO use codeInfo.iRemainingEntryAttempts for setting the Caption
+ RDEBUG( "SecQueryDialog", 1 );
// TODO ESecUiCodeEtelReqest/ESecUiNone might be useful
// TODO also support Emergency
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("Pin1RequiredL"), iSecUi_password, 4, 8, lCancelSupported | secCodeType /*aMode*/ );
- RDebug::Printf( "%s %s (%u) iSecUi_password=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ lAlphaSupported = ESecUiAlphaNotSupported;
+ TBuf<0x100> title; title.Zero(); title.Append(_L("Pin1RequiredL")); title.Append(_L("#")); title.AppendNum(codeInfo.iRemainingEntryAttempts);
+ TInt amode = lAlphaSupported | lCancelSupported | ESecUiEmergencySupported | secCodeType;
+ RDEBUG( "amode", amode );
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, iSecUi_password, SEC_C_PIN_CODE_MIN_LENGTH, SEC_C_PIN_CODE_MAX_LENGTH, amode );
+ RDEBUG( "iSecUi_password", 0 );
RDebug::Print( iSecUi_password );
- RDebug::Printf( "%s %s (%u) delete=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
delete iSecQueryUi;
- RDebug::Printf( "%s %s (%u) done=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- if(queryAccepted) res=0xFFFFFFFE; // this is the value returned from iSecurityDlg
+ RDEBUG( "queryAccepted", queryAccepted );
// TODO handle emergency
/* end request PIN using QT */
- RDebug::Printf( "%s %s (%u) res=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
- if ((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
+ if ( queryAccepted == KErrAbort ) // emergency call
{
#if defined(_DEBUG)
RDebug::Print(_L("CSecurityHandler::Pin1RequiredL() R_PIN_REQUEST_QUERY CANCEL!"));
#endif
- CleanupStack::PopAndDestroy(wait); // TODO this is needed ???
+ CleanupStack::PopAndDestroy(wait); // this is needed
return KErrCancel;
}
- if( lCancelSupported && (!res || (res == ESecUiDeviceLocked)))
+ if( lCancelSupported && (queryAccepted == KErrCancel) )
{
// cancel code request
+ RDEBUG( "AbortSecurityCode", 0 );
iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePin1);
- CleanupStack::PopAndDestroy(wait); // TODO this is needed ???
+ RDEBUG( "AbortSecurityCode", 1 );
+ CleanupStack::PopAndDestroy(wait); // this is needed
return KErrCancel;
}
- #if defined(_DEBUG)
- RDebug::Print(_L("CSecurityNotifier::Pin1RequiredL()VerifySecurityCode"));
- #endif
-
- RDebug::Printf( "%s %s (%u) iSecUi_password=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ RDEBUG( "iSecUi_password", iSecUi_password );
RDebug::Print( iSecUi_password );
+ RDEBUG( "VerifySecurityCode", 0 );
iPhone.VerifySecurityCode(wait->iStatus,secCodeType, iSecUi_password, required_fourth);
-
+ RDEBUG( "WaitForRequestL", 0 );
res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
CleanupStack::PopAndDestroy(wait);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin1RequiredL() VerifySecurityCode STATUS: %d"), res);
- #endif
+
TInt returnValue = res;
switch(res)
{
@@ -1129,7 +1112,7 @@
// CSecurityHandler::Puk1Required()
// Handles Puk1Required event
// ----------------------------------------------------------
-//
+// qtdone
TInt CSecurityHandler::Puk1RequiredL()
{
/*****************************************************
@@ -1139,7 +1122,8 @@
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::Puk1RequiredL()"));
#endif
- RMobilePhone::TMobilePassword aPassword;
+ TInt queryAccepted = KErrCancel;
+ RMobilePhone::TMobilePassword iSecUi_password;
RMobilePhone::TMobilePassword aNewPassword;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
@@ -1153,20 +1137,19 @@
TInt res(KErrNone);
wait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Puk1RequiredL(): Get Code info"));
- #endif
- iPhone.GetSecurityCodeInfo(wait->iStatus, blockCodeType, codeInfoPkg);
- res = wait->WaitForRequestL();
TInt thisTry = 0;
// If there was a problem (as there might be in case we're dropping off SIM Access Profile); try again a couple of times.
while ( res != KErrNone && ( thisTry++ ) <= KTriesToConnectServer )
{
- User::After( KTimeBeforeRetryingRequest );
+ if(thisTry>0)
+ User::After( KTimeBeforeRetryingRequest );
+ RDEBUG( "GetSecurityCodeInfo", 0 );
iPhone.GetSecurityCodeInfo(wait->iStatus, blockCodeType, codeInfoPkg);
- res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL", 0 );
+ res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
}
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::Puk1RequiredL(): Get Code info result: %d"), res);
@@ -1177,119 +1160,62 @@
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::Puk1RequiredL(): Show last note"));
#endif
+
+ RDEBUG( "StartUp", StartUp );
+ RDEBUG( "codeInfo.iRemainingEntryAttempts", codeInfo.iRemainingEntryAttempts );
//show the last "Code Error" note of PIN verify result here so it won't be left under the PUK1 dialog
if(!StartUp && (codeInfo.iRemainingEntryAttempts == KMaxNumberOfPUKAttempts))
CSecuritySettings::ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
// ask PUK code
- iSecurityDlg = new (ELeave) CCodeQueryDialog (aPassword,SEC_C_PUK_CODE_MIN_LENGTH,SEC_C_PUK_CODE_MAX_LENGTH,ESecUiPukRequired);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- #ifdef __COVER_DISPLAY
- iSecurityDlg->PublishDialogL(SecondaryDisplay::ECmdShowSecurityQuery, SecondaryDisplay::KCatStartup);
- CAknMediatorFacade* covercl = AknMediatorFacade(iSecurityDlg); // uses MOP, so control provided
- if (covercl) // returns null if __COVER_DISPLAY is not defined
- {
- // … - add data that cover ui is interested in
- covercl->BufStream().WriteInt32L(SecondaryDisplay::EShowPUK1); // adds int to additional data to be posted to cover ui
- covercl->BufStream().CommitL(); // no more data to send so commit buf
- }
- #endif //__COVER_DISPLAY
+ /* request PIN using QT */
+ CSecQueryUi *iSecQueryUi;
+ RDEBUG( "CSecQueryUi", 0 );
+ iSecQueryUi = CSecQueryUi::NewL();
+ RDEBUG( "SecQueryDialog", 1 );
+ // TODO ESecUiCodeEtelReqest/ESecUiNone might be useful
+ // TODO also support Emergency
+ TBuf<0x100> title; title.Zero(); title.Append(_L("Puk1RequiredL")); title.Append(_L("#")); title.AppendNum(codeInfo.iRemainingEntryAttempts);
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, iSecUi_password, SEC_C_PUK_CODE_MIN_LENGTH,SEC_C_PUK_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiPukRequired );
+ RDEBUG( "iSecUi_password", 0 );
+ RDebug::Print( iSecUi_password );
+ delete iSecQueryUi;
+ RDEBUG( "queryAccepted", queryAccepted );
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Puk1RequiredL(): Show dialog"));
- #endif
- if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPUKAttempts)
- res = iSecurityDlg->ExecuteLD(R_PUK_REQUEST_QUERY);
- else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_PUK_ATTEMPTS, codeInfo.iRemainingEntryAttempts);
- res = iSecurityDlg->ExecuteLD(R_PUK_REQUEST_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
- else
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_PUK_ATTEMPT);
- res = iSecurityDlg->ExecuteLD(R_PUK_REQUEST_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
-
- if((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
+ if( (queryAccepted == KErrAbort) || (queryAccepted==KErrCancel) )
{
- CleanupStack::PopAndDestroy(wait);
+ CleanupStack::PopAndDestroy(wait); // TODO this is needed ???
return KErrCancel;
}
-
- RMobilePhone::TMobilePassword verifcationPassword;
- // new pin code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (aNewPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiPukRequired);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- res = iSecurityDlg->ExecuteLD(R_NEW_PIN_CODE_REQUEST_QUERY);
- if((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
+
+ {
+ // new pin code query
+ CSecQueryUi *iSecQueryUi;
+ RDEBUG( "CSecQueryUi", 0 );
+ iSecQueryUi = CSecQueryUi::NewL();
+ RDEBUG( "SecQueryDialog", 1 );
+ // TODO ESecUiCodeEtelReqest/ESecUiNone might be useful
+ // TODO also support Emergency
+
+ queryAccepted = iSecQueryUi->SecQueryDialog( _L("Puk1-New|Puk1-Verif"), aNewPassword, SEC_C_PUK_CODE_MIN_LENGTH,SEC_C_PUK_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiPukRequired );
+ RDEBUG( "aNewPassword", 0 );
+ RDebug::Print( aNewPassword );
+ delete iSecQueryUi;
+ RDEBUG( "queryAccepted", queryAccepted );
+ }
+
+ if( (queryAccepted == KErrAbort) || (queryAccepted==KErrCancel) )
{
CleanupStack::PopAndDestroy(wait);
return KErrCancel;
}
-
- // verification code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiPukRequired);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- res = iSecurityDlg->ExecuteLD(R_VERIFY_NEW_PIN_CODE_REQUEST_QUERY);
- if((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
- {
- CleanupStack::PopAndDestroy(wait);
- return KErrCancel;
- }
-
- while (aNewPassword.CompareF(verifcationPassword) != 0)
- {
- // codes do not match -> note -> ask new pin and verification codes again
- CSecuritySettings::ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
-
- verifcationPassword = _L("");
- aNewPassword = _L("");
-
- // new pin code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (aNewPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiPukRequired);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- res = iSecurityDlg->ExecuteLD(R_NEW_PIN_CODE_REQUEST_QUERY);
- if ((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
- {
- CleanupStack::PopAndDestroy(wait);
- return KErrCancel;
- }
-
- // verification code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiPukRequired);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- res = iSecurityDlg->ExecuteLD(R_VERIFY_NEW_PIN_CODE_REQUEST_QUERY);
- if((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
- {
- CleanupStack::PopAndDestroy(wait);
- return KErrCancel;
- }
- }
// send code
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Puk1RequiredL(): Verify Code"));
- #endif
- iPhone.VerifySecurityCode(wait->iStatus,blockCodeType,aNewPassword,aPassword);
+ RDEBUG( "VerifySecurityCode", 0 );
+ iPhone.VerifySecurityCode(wait->iStatus,blockCodeType,aNewPassword,iSecUi_password);
+ RDEBUG( "WaitForRequestL", 0 );
res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
CleanupStack::PopAndDestroy(wait);
TInt returnValue = res;
@@ -1307,6 +1233,7 @@
break;
case KErrGsm0707SimWrong:
// sim lock active
+ // TODO no message ?
break;
case KErrGsmSSPasswordAttemptsViolation:
case KErrLocked:
@@ -1325,36 +1252,19 @@
// CSecurityHandler::Pin2Required()
// Handles Pin2Required event
// ----------------------------------------------------------
-//
+// qtdone
void CSecurityHandler::Pin2RequiredL()
{
/*****************************************************
* Series 60 Customer / ETel
* Series 60 ETel API
*****************************************************/
- /* request PIN using QT */
- TBool queryAccepted = EFalse;
- RMobilePhone::TMobilePassword iSecUi_password;
- CSecQueryUi *iSecQueryUi;
- RDebug::Printf( "%s %s (%u) CSecQueryUi=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- iSecQueryUi = CSecQueryUi::NewL();
- RDebug::Printf( "%s %s (%u) Copy=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- iSecUi_password.Copy(_L("666"));
- RDebug::Printf( "%s %s (%u) SecQueryDialog=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("Pin2RequiredL"), iSecUi_password, 4, 8, RMobilePhone::ESecurityCodePin2 /*aMode*/ );
- RDebug::Printf( "%s %s (%u) iSecUi_password=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- RDebug::Print( iSecUi_password );
- RDebug::Printf( "%s %s (%u) delete=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- delete iSecQueryUi;
- RDebug::Printf( "%s %s (%u) done=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- // if(queryAccepted) res=0xFFFFFFFE; // this is the value returned from iSecurityDlg
- /* end request PIN using QT */
-
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL() BEGIN"));
#endif
- RMobilePhone::TMobilePassword password;
+ TInt queryAccepted = KErrCancel;
+ RMobilePhone::TMobilePassword iSecUi_password;
RMobilePhone::TMobilePassword required_fourth;
RMobilePhone::TMobilePhoneSecurityCode secCodeType(RMobilePhone::ESecurityCodePin2);
RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
@@ -1362,75 +1272,48 @@
CWait* wait = CWait::NewL();
CleanupStack::PushL(wait);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): create dialog"));
- #endif
- iSecurityDlg = new (ELeave) CCodeQueryDialog (password,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
- #ifdef __COVER_DISPLAY
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): publish dialog"));
- #endif
- iSecurityDlg->PublishDialogL(SecondaryDisplay::ECmdShowSecurityQuery, SecondaryDisplay::KCatStartup);
- CAknMediatorFacade* covercl = AknMediatorFacade(iSecurityDlg); // uses MOP, so control provided
- if (covercl) // returns null if __COVER_DISPLAY is not defined
- {
- // … - add data that cover ui is interested in
- covercl->BufStream().WriteInt32L(SecondaryDisplay::EShowPIN2); // adds int to additional data to be posted to cover ui
- covercl->BufStream().CommitL(); // no more data to send so commit buf
- }
- #endif //__COVER_DISPLAY
-
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): get PIN2 info"));
- #endif
-
- wait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+ wait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+ RDEBUG( "GetSecurityCodeInfo", 0 );
iPhone.GetSecurityCodeInfo(wait->iStatus, secCodeType, codeInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
TInt ret = wait->WaitForRequestL();
-
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): get PIN2 info result: %d"), ret);
+ RDEBUG( "WaitForRequestL ret", ret );
+
+ User::LeaveIfError(ret);
+
TInt attempts(codeInfo.iRemainingEntryAttempts);
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): attempts remaining: %d"), attempts);
- #endif
- User::LeaveIfError(ret);
-
- CSecUiLockObserver* deviceLockStatusObserver = CSecUiLockObserver::NewL(iSecurityDlg);
- CleanupStack::PushL(deviceLockStatusObserver);
- CSecUiLockObserver* queryStatusObserver = CSecUiLockObserver::NewL(iSecurityDlg, ESecUiRequestStateObserver);
- CleanupStack::PushL(queryStatusObserver);
-
- if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
- ret = iSecurityDlg->ExecuteLD(R_PIN2_QUERY);
- else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_PIN2_ATTEMPTS, codeInfo.iRemainingEntryAttempts );
- ret = iSecurityDlg->ExecuteLD(R_PIN2_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
- else
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_PIN2_ATTEMPT);
- ret = iSecurityDlg->ExecuteLD(R_PIN2_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
- CleanupStack::PopAndDestroy(2); //deviceLockStatusObserver, queryStatusObserver
- iSecurityDlg = NULL;
- if (!ret || (ret == ESecUiDeviceLocked))
+ RDEBUG( "attempts", attempts );
+
+ /* request PIN using QT */
+ CSecQueryUi *iSecQueryUi;
+ RDEBUG( "CSecQueryUi", 0 );
+ iSecQueryUi = CSecQueryUi::NewL();
+ RDEBUG( "SecQueryDialog", 1 );
+ // TODO ESecUiCodeEtelReqest/ESecUiNone might be useful against KLastRemainingInputAttempt
+ // TODO also support Emergency
+
+ TBuf<0x100> title; title.Zero(); title.Append(_L("Pin2RequiredL")); title.Append(_L("#")); title.AppendNum(codeInfo.iRemainingEntryAttempts);
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, iSecUi_password, SEC_C_PIN2_CODE_MIN_LENGTH, SEC_C_PIN2_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported | secCodeType );
+ RDEBUG( "iSecUi_password", 0 );
+ RDebug::Print( iSecUi_password );
+ RDEBUG( "queryAccepted", queryAccepted );
+ delete iSecQueryUi;
+
+ // If failed or device became locked, any pending request should be cancelled.
+ if ( queryAccepted!=KErrNone )
{
- iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePin2);
+ RDEBUG( "AbortSecurityCode", 0 );
+ iPhone.AbortSecurityCode(secCodeType);
+ RDEBUG( "AbortSecurityCode", 1 );
CleanupStack::PopAndDestroy(wait);
return;
}
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): Verify Code"));
- #endif
- iPhone.VerifySecurityCode(wait->iStatus,secCodeType,password,required_fourth);
+ RDEBUG( "VerifySecurityCode", 0 );
+ iPhone.VerifySecurityCode(wait->iStatus,secCodeType,iSecUi_password,required_fourth);
+ RDEBUG( "WaitForRequestL", 0 );
TInt status = wait->WaitForRequestL();
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): destroy wait"));
- #endif
+ RDEBUG( "WaitForRequestL status", status );
CleanupStack::PopAndDestroy(wait);
switch(status)
@@ -1460,21 +1343,21 @@
// CSecurityHandler::Puk2Required()
// Handles Puk2Required event
// ----------------------------------------------------------
-//
+// qtdone
void CSecurityHandler::Puk2RequiredL()
{
/*****************************************************
* Series 60 Customer / ETel
* Series 60 ETel API
*****************************************************/
- RMobilePhone::TMobilePassword aPassword;
+ TInt queryAccepted = KErrCancel;
+ RMobilePhone::TMobilePassword iSecUi_password;
RMobilePhone::TMobilePassword aNewPassword;
RMobilePhone::TMobilePassword verifcationPassword;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
- RMobilePhone::TMobilePhoneSecurityCode blockCodeType;
- blockCodeType = RMobilePhone::ESecurityCodePuk2;
+ RMobilePhone::TMobilePhoneSecurityCode secCodeType = RMobilePhone::ESecurityCodePuk2;
CWait* wait = CWait::NewL();
CleanupStack::PushL(wait);
@@ -1482,127 +1365,71 @@
RDebug::Print(_L("(SECUI)CSecurityHandler::Puk2RequiredL()"));
#endif
// ask PUK2
- iSecurityDlg = new (ELeave) CCodeQueryDialog (aPassword,SEC_C_PUK2_CODE_MIN_LENGTH,SEC_C_PUK2_CODE_MAX_LENGTH,ESecUiNone);
- #ifdef __COVER_DISPLAY
- iSecurityDlg->PublishDialogL(SecondaryDisplay::ECmdShowSecurityQuery, SecondaryDisplay::KCatStartup);
- CAknMediatorFacade* covercl = AknMediatorFacade(iSecurityDlg); // uses MOP, so control provided
- if (covercl) // returns null if __COVER_DISPLAY is not defined
- {
- // … - add data that cover ui is interested in
- covercl->BufStream().WriteInt32L(SecondaryDisplay::EShowPUK2); // adds int to additional data to be posted to cover ui
- covercl->BufStream().CommitL(); // no more data to send so commit buf
- }
- #endif //__COVER_DISPLAY
- CSecUiLockObserver* deviceLockStatusObserver = CSecUiLockObserver::NewL(iSecurityDlg);
- CleanupStack::PushL(deviceLockStatusObserver);
TInt ret(KErrNone);
wait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
- iPhone.GetSecurityCodeInfo(wait->iStatus, blockCodeType, codeInfoPkg);
+ RDEBUG( "GetSecurityCodeInfo", 0 );
+ iPhone.GetSecurityCodeInfo(wait->iStatus, secCodeType, codeInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
ret = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL ret", ret );
User::LeaveIfError(ret);
- if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPUKAttempts)
- ret = iSecurityDlg->ExecuteLD(R_PUK2_REQUEST_QUERY);
- else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_PUK2_ATTEMPTS, codeInfo.iRemainingEntryAttempts);
- ret = iSecurityDlg->ExecuteLD(R_PUK2_REQUEST_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
- else
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_PUK2_ATTEMPT);
- ret = iSecurityDlg->ExecuteLD(R_PUK2_REQUEST_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
-
- iSecurityDlg = NULL;
- if(!ret || (ret == ESecUiDeviceLocked))
+ /* request PIN using QT */
+ CSecQueryUi *iSecQueryUi;
+ RDEBUG( "CSecQueryUi", 0 );
+ iSecQueryUi = CSecQueryUi::NewL();
+ RDEBUG( "SecQueryDialog", 1 );
+ // TODO ESecUiCodeEtelReqest/ESecUiNone might be useful
+ // TODO also support Emergency
+
+ TBuf<0x100> title; title.Zero(); title.Append(_L("Puk2RequiredL")); title.Append(_L("#")); title.AppendNum(codeInfo.iRemainingEntryAttempts);
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, iSecUi_password, SEC_C_PUK2_CODE_MIN_LENGTH,SEC_C_PUK2_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported | secCodeType /*aMode*/ );
+ RDEBUG( "iSecUi_password", 0 );
+ RDebug::Print( iSecUi_password );
+ delete iSecQueryUi;
+ RDEBUG( "queryAccepted", queryAccepted );
+
+ if( queryAccepted!=KErrNone )
{
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Puk2RequiredL() PUK QUERY CANCEL"));
- #endif
// cancel "get security unblock code" request
- iPhone.AbortSecurityCode(blockCodeType);
- CleanupStack::PopAndDestroy(2); //wait, deviceLockStatusObserver
- return;
- }
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Puk2RequiredL() NEW QUERY"));
- #endif
- // new pin2 code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (aNewPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
- deviceLockStatusObserver->SetAddress(iSecurityDlg);
- ret = iSecurityDlg->ExecuteLD(R_NEW_PIN2_CODE_QUERY);
- if(!ret || (ret == ESecUiDeviceLocked))
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Puk2RequiredL() NEW QUERY CANCEL"));
- #endif
- // cancel "get security unblock code" request
- iPhone.AbortSecurityCode(blockCodeType);
- CleanupStack::PopAndDestroy(2); //wait, deviceLockStatusObserver
+ RDEBUG( "AbortSecurityCode", 0 );
+ iPhone.AbortSecurityCode(secCodeType);
+ RDEBUG( "AbortSecurityCode", 1 );
+ CleanupStack::PopAndDestroy(1); //wait
return;
}
- // verification code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
- deviceLockStatusObserver->SetAddress(iSecurityDlg);
- ret = iSecurityDlg->ExecuteLD(R_VERIFY_NEW_PIN2_CODE_QUERY);
- if (!ret || (ret == ESecUiDeviceLocked))
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Puk2RequiredL() VERIFY QUERY CANCEL"));
- #endif
- // cancel "get security unblock code" request
- iPhone.AbortSecurityCode(blockCodeType);
- CleanupStack::PopAndDestroy(2); //wait, deviceLockStatusObserver
- return;
- }
-
- while (aNewPassword.CompareF(verifcationPassword) != 0)
- {
- // codes do not match -> note -> ask new pin and verification codes again
- CSecuritySettings::ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
-
- verifcationPassword = _L("");
- aNewPassword = _L("");
+ {
+ // new pin code query
+ CSecQueryUi *iSecQueryUi;
+ RDEBUG( "CSecQueryUi", 0 );
+ iSecQueryUi = CSecQueryUi::NewL();
+ // TODO ESecUiCodeEtelReqest/ESecUiNone might be useful
+ // TODO also support Emergency
- // new pin2 code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (aNewPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
- deviceLockStatusObserver->SetAddress(iSecurityDlg);
- deviceLockStatusObserver->StartObserver();
-
- ret = iSecurityDlg->ExecuteLD(R_NEW_PIN2_CODE_QUERY);
-
- if(!ret || (ret == ESecUiDeviceLocked))
- {
- // cancel "get security unblock code" request
- iPhone.AbortSecurityCode(blockCodeType);
- CleanupStack::PopAndDestroy(2); //wait, deviceLockStatusObserver
- return;
- }
-
- // verification code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
- deviceLockStatusObserver->SetAddress(iSecurityDlg);
- deviceLockStatusObserver->StartObserver();
- ret = iSecurityDlg->ExecuteLD(R_VERIFY_NEW_PIN2_CODE_QUERY);
-
- if (!ret || (ret == ESecUiDeviceLocked))
- {
- // cancel "get security unblock code" request
- iPhone.AbortSecurityCode(blockCodeType);
- CleanupStack::PopAndDestroy(2); //wait, deviceLockStatusObserver
- return;
- }
- }
- CleanupStack::PopAndDestroy(deviceLockStatusObserver);
+ queryAccepted = iSecQueryUi->SecQueryDialog( _L("Puk2-New|Puk2-Verif"), aNewPassword, SEC_C_PUK2_CODE_MIN_LENGTH,SEC_C_PUK2_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported | secCodeType );
+ RDEBUG( "aNewPassword", 0 );
+ RDebug::Print( aNewPassword );
+ delete iSecQueryUi;
+ RDEBUG( "queryAccepted", queryAccepted );
+ if( queryAccepted!=KErrNone )
+ {
+ // cancel "get security unblock code" request
+ RDEBUG( "AbortSecurityCode", 0 );
+ iPhone.AbortSecurityCode(secCodeType);
+ RDEBUG( "AbortSecurityCode", 1 );
+ CleanupStack::PopAndDestroy(1); //wait
+ return;
+ }
+ }
// send code
-
- iPhone.VerifySecurityCode(wait->iStatus,blockCodeType,aNewPassword,aPassword);
+ // TODO the current code should be verified before
+ RDEBUG( "VerifySecurityCode", 0 );
+ iPhone.VerifySecurityCode(wait->iStatus,secCodeType,aNewPassword,iSecUi_password);
+ RDEBUG( "WaitForRequestL", 0 );
TInt res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
CleanupStack::PopAndDestroy(wait);
switch(res)
@@ -1634,7 +1461,7 @@
// CSecurityHandler::UPinRequiredL()
// Hendles UniversalPinRequired event
// ----------------------------------------------------------
-//
+// qtdone
TInt CSecurityHandler::UPinRequiredL()
{
/*****************************************************
@@ -1645,7 +1472,9 @@
TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
if(wcdmaSupported || upinSupported)
{
- RMobilePhone::TMobilePassword password;
+ TInt queryAccepted = KErrCancel;
+ TInt lCancelSupported = ESecUiCancelNotSupported;
+ RMobilePhone::TMobilePassword iSecUi_password;
RMobilePhone::TMobilePassword required_fourth;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
@@ -1658,124 +1487,56 @@
TInt res = KErrGeneral;
StartUp = iStartup;
+ RDEBUG( "StartUp", StartUp );
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::UPinRequiredL()"));
- #endif
-
+
+ wait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+ RDEBUG( "GetSecurityCodeInfo", 0 );
+ iPhone.GetSecurityCodeInfo(wait->iStatus, secCodeType, codeInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
+ res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
+ User::LeaveIfError(res);
+
if(!StartUp)
{
// read a flag to see whether the query is SecUi originated.
err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, secUiOriginatedQuery);
}
-
- #if defined(_DEBUG)
- RDebug::Print(_L("CSecurityHandler::UPinRequiredL() Execute dlg"));
- #endif
- if(StartUp || (secUiOriginatedQuery != ESecurityUIsSecUIOriginated) || (err != KErrNone))
- {
- iSecurityDlg = new (ELeave) CCodeQueryDialog (password,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiCodeEtelReqest);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- #ifdef __COVER_DISPLAY
- iSecurityDlg->PublishDialogL(SecondaryDisplay::ECmdShowSecurityQuery, SecondaryDisplay::KCatStartup);
- CAknMediatorFacade* covercl = AknMediatorFacade(iSecurityDlg); // uses MOP, so control provided
- if (covercl) // returns null if __COVER_DISPLAY is not defined
- {
- // … - add data that cover ui is interested in
- covercl->BufStream().WriteInt32L(SecondaryDisplay::EShowUPIN); // adds int to additional data to be posted to cover ui
- covercl->BufStream().CommitL(); // no more data to send so commit buf
- }
- #endif //__COVER_DISPLAY
-
- wait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
- iPhone.GetSecurityCodeInfo(wait->iStatus, secCodeType, codeInfoPkg);
- res = wait->WaitForRequestL();
- User::LeaveIfError(res);
-
- if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
- res = iSecurityDlg->ExecuteLD(R_UPIN_REQUEST_QUERY);
- else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_UPIN_ATTEMPTS, codeInfo.iRemainingEntryAttempts);
- res = iSecurityDlg->ExecuteLD(R_UPIN_REQUEST_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
- else
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_UPIN_ATTEMPT);
- res = iSecurityDlg->ExecuteLD(R_UPIN_REQUEST_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
-
-
- if ((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
- {
- CleanupStack::PopAndDestroy(wait);
- return KErrCancel;
- }
- }
- else
- {
- iSecurityDlg = new (ELeave) CCodeQueryDialog (password,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
- #ifdef __COVER_DISPLAY
- iSecurityDlg->PublishDialogL(SecondaryDisplay::ECmdShowSecurityQuery, SecondaryDisplay::KCatStartup);
- CAknMediatorFacade* covercl = AknMediatorFacade(iSecurityDlg); // uses MOP, so control provided
- if (covercl) // returns null if __COVER_DISPLAY is not defined
- {
- // … - add data that cover ui is interested in
- covercl->BufStream().WriteInt32L(SecondaryDisplay::EShowUPIN); // adds int to additional data to be posted to cover ui
- covercl->BufStream().CommitL(); // no more data to send so commit buf
- }
- #endif //__COVER_DISPLAY
-
- wait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
- iPhone.GetSecurityCodeInfo(wait->iStatus, secCodeType, codeInfoPkg);
- res = wait->WaitForRequestL();
- User::LeaveIfError(res);
-
- CSecUiLockObserver* deviceLockStatusObserver = CSecUiLockObserver::NewL(iSecurityDlg);
- CleanupStack::PushL(deviceLockStatusObserver);
- CSecUiLockObserver* queryStatusObserver = CSecUiLockObserver::NewL(iSecurityDlg, ESecUiRequestStateObserver);
- CleanupStack::PushL(queryStatusObserver);
-
- if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
- res = iSecurityDlg->ExecuteLD(R_UPIN_QUERY);
- else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_UPIN_ATTEMPTS, codeInfo.iRemainingEntryAttempts);
- res = iSecurityDlg->ExecuteLD(R_UPIN_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
- else
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_UPIN_ATTEMPT);
- res = iSecurityDlg->ExecuteLD(R_UPIN_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
-
- CleanupStack::PopAndDestroy(2); //deviceLockStatusObserver, queryStatusObserver
- iSecurityDlg = NULL;
- if( !res || (res == ESecUiDeviceLocked))
- {
- // cancel code request
- CleanupStack::PopAndDestroy(wait);
- iPhone.AbortSecurityCode(RMobilePhone::ESecurityUniversalPin);
- return KErrCancel;
- }
- }
-
- #if defined(_DEBUG)
- RDebug::Print(_L("CSecurityNotifier::UPinRequiredL()VerifySecurityCode"));
- #endif
- iPhone.VerifySecurityCode(wait->iStatus,secCodeType, password, required_fourth);
+
+ /* request PIN using QT */
+ CSecQueryUi *iSecQueryUi;
+ RDEBUG( "CSecQueryUi", 0 );
+ iSecQueryUi = CSecQueryUi::NewL();
+ // TODO ESecUiCodeEtelReqest/ESecUiNone might be useful
+ // TODO also support Emergency
+ if(StartUp || (secUiOriginatedQuery != ESecurityUIsSecUIOriginated) || (err != KErrNone))
+ lCancelSupported = ESecUiCancelNotSupported;
+ else
+ lCancelSupported = ESecUiCancelSupported;
+
+ TBuf<0x100> title; title.Zero(); title.Append(_L("UPin1RequiredL")); title.Append(_L("#")); title.AppendNum(codeInfo.iRemainingEntryAttempts);
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, iSecUi_password, SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | lCancelSupported | ESecUiCodeEtelReqest );
+ RDEBUG( "iSecUi_password", 0 );
+ RDebug::Print( iSecUi_password );
+ delete iSecQueryUi;
+ RDEBUG( "queryAccepted", queryAccepted );
+ if ( queryAccepted!=KErrNone )
+ {
+ CleanupStack::PopAndDestroy(wait);
+ RDEBUG( "AbortSecurityCode", 0 );
+ iPhone.AbortSecurityCode(RMobilePhone::ESecurityUniversalPin);
+ RDEBUG( "AbortSecurityCode", 1 );
+
+ return KErrCancel;
+ }
+ RDEBUG( "VerifySecurityCode", 0 );
+ iPhone.VerifySecurityCode(wait->iStatus,secCodeType, iSecUi_password, required_fourth);
+ RDEBUG( "WaitForRequestL", 0 );
res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
CleanupStack::PopAndDestroy(wait);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::UPinRequiredL() VerifySecurityCode STATUS: %d"), res);
- #endif
+
TInt returnValue = res;
switch(res)
{
@@ -1823,17 +1584,16 @@
// CSecurityHandler::UPukRequiredL()
// Handles UPukRequired event
// ----------------------------------------------------------
-//
+// qtdone
TInt CSecurityHandler::UPukRequiredL()
{
TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
if(wcdmaSupported || upinSupported)
{
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::UPukRequiredL()"));
- #endif
- RMobilePhone::TMobilePassword aPassword;
+ RDEBUG( "0", 0 );
+ TInt queryAccepted = KErrCancel;
+ RMobilePhone::TMobilePassword iSecUi_password;
RMobilePhone::TMobilePassword aNewPassword;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
@@ -1848,117 +1608,65 @@
TInt res(KErrNone);
wait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+ RDEBUG( "GetSecurityCodeInfo", 0 );
iPhone.GetSecurityCodeInfo(wait->iStatus, blockCodeType, codeInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
User::LeaveIfError(res);
//show last "Code Error" note for UPIN verify result so it won't be left under the PUK1 dialog
if(!StartUp && (codeInfo.iRemainingEntryAttempts == KMaxNumberOfPUKAttempts))
CSecuritySettings::ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
// ask UPUK code
- iSecurityDlg = new (ELeave) CCodeQueryDialog (aPassword,SEC_C_PUK_CODE_MIN_LENGTH,SEC_C_PUK_CODE_MAX_LENGTH,ESecUiPukRequired);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- #ifdef __COVER_DISPLAY
- iSecurityDlg->PublishDialogL(SecondaryDisplay::ECmdShowSecurityQuery, SecondaryDisplay::KCatStartup);
- CAknMediatorFacade* covercl = AknMediatorFacade(iSecurityDlg); // uses MOP, so control provided
- if (covercl) // returns null if __COVER_DISPLAY is not defined
- {
- // … - add data that cover ui is interested in
- covercl->BufStream().WriteInt32L(SecondaryDisplay::EShowUPUK);// adds int to additional data to be posted to cover ui
- covercl->BufStream().CommitL(); // no more data to send so commit buf
- }
- #endif //__COVER_DISPLAY
+ /* request PIN using QT */
+ {
+ CSecQueryUi *iSecQueryUi;
+ RDEBUG( "CSecQueryUi", 0 );
+ iSecQueryUi = CSecQueryUi::NewL();
+ // TODO ESecUiCodeEtelReqest/ESecUiNone might be useful
+ // TODO also support Emergency
+
+ TBuf<0x100> title; title.Zero(); title.Append(_L("Pin1RequiredL")); title.Append(_L("#")); title.AppendNum(codeInfo.iRemainingEntryAttempts);
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, iSecUi_password, SEC_C_PUK_CODE_MIN_LENGTH,SEC_C_PUK_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiPukRequired );
+ RDEBUG( "iSecUi_password", 0 );
+ RDebug::Print( iSecUi_password );
+ delete iSecQueryUi;
+ RDEBUG( "queryAccepted", queryAccepted );
-
- if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPUKAttempts)
- res = iSecurityDlg->ExecuteLD(R_UPUK_REQUEST_QUERY);
- else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_UPUK_ATTEMPTS, codeInfo.iRemainingEntryAttempts);
- res = iSecurityDlg->ExecuteLD(R_UPUK_REQUEST_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
- else
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_UPUK_ATTEMPT);
- res = iSecurityDlg->ExecuteLD(R_UPUK_REQUEST_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
-
- if((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
+ if( queryAccepted!=KErrNone )
{
CleanupStack::PopAndDestroy(wait);
return KErrCancel;
}
-
- RMobilePhone::TMobilePassword verifcationPassword;
- // new upin code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (aNewPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiPukRequired);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- res = iSecurityDlg->ExecuteLD(R_NEW_UPIN_CODE_REQUEST_QUERY);
- if((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
+ }
+
+ {
+ /* request PIN using QT */
+ CSecQueryUi *iSecQueryUi;
+ RDEBUG( "CSecQueryUi", 0 );
+ iSecQueryUi = CSecQueryUi::NewL();
+ // TODO ESecUiCodeEtelReqest/ESecUiNone might be useful
+ // TODO also support Emergency
+
+ queryAccepted = iSecQueryUi->SecQueryDialog( _L("UPuk-New|UPuk-Verif"), aNewPassword, SEC_C_PUK_CODE_MIN_LENGTH,SEC_C_PUK_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiPukRequired );
+ RDEBUG( "aNewPassword", 0 );
+ RDebug::Print( aNewPassword );
+ delete iSecQueryUi;
+ RDEBUG( "queryAccepted", queryAccepted );
+ if( queryAccepted!=KErrNone )
{
CleanupStack::PopAndDestroy(wait);
return KErrCancel;
}
-
- // verification code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiPukRequired);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- res = iSecurityDlg->ExecuteLD(R_VERIFY_NEW_UPIN_CODE_REQUEST_QUERY);
- if((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
- {
- CleanupStack::PopAndDestroy(wait);
- return KErrCancel;
- }
-
- while (aNewPassword.CompareF(verifcationPassword) != 0)
- {
- // codes do not match -> note -> ask new upin and verification codes again
- CSecuritySettings::ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
-
- verifcationPassword = _L("");
- aNewPassword = _L("");
-
- // new upin code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (aNewPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiPukRequired);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- res = iSecurityDlg->ExecuteLD(R_NEW_UPIN_CODE_REQUEST_QUERY);
- if((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
- {
- CleanupStack::PopAndDestroy(wait);
- return KErrCancel;
- }
-
- // verification code query
- iSecurityDlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiPukRequired);
- if(AknLayoutUtils::PenEnabled())
- iSecurityDlg->SetEmergencyCallSupportForCBA( ETrue );
- else
- iSecurityDlg->SetEmergencyCallSupport(ETrue);
- res = iSecurityDlg->ExecuteLD(R_VERIFY_NEW_UPIN_CODE_REQUEST_QUERY);
- if((!res) || (res == ESecUiEmergencyCall) || (res == EAknSoftkeyEmergencyCall))
- {
- CleanupStack::PopAndDestroy(wait);
- return KErrCancel;
- }
- }
-
+ }
+
// send code
- iPhone.VerifySecurityCode(wait->iStatus,blockCodeType,aNewPassword,aPassword);
+ RDEBUG( "VerifySecurityCode", 0 );
+ iPhone.VerifySecurityCode(wait->iStatus,blockCodeType,aNewPassword,iSecUi_password);
+ RDEBUG( "WaitForRequestL", 0 );
res = wait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
CleanupStack::PopAndDestroy(wait);
TInt returnValue = res;
@@ -1989,7 +1697,7 @@
return returnValue;
}
- else
+ else // not wcdmaSupported || upinSupported
return KErrNone;
}
@@ -1998,12 +1706,10 @@
// CSecurityHandler::SimLockEventL()
// Shows "SIM restriction on" note
// ----------------------------------------------------------
-//
+// qtdone
void CSecurityHandler::SimLockEventL()
{
- #if defined(_DEBUG)
- RDebug::Print(_L("CSecurityHandler::SimLockEventL()"));
- #endif
+ RDEBUG( "0", 0 );
CSecuritySettings::ShowResultNoteL(R_SIM_ON, CAknNoteDialog::EConfirmationTone);
}
// ---------------------------------------------------------
@@ -2019,10 +1725,13 @@
// CSecurityHandler::ShowGenericErrorNoteL(TInt aStatus)
// Shows a generic error note
// ---------------------------------------------------------
-
+// qtdone
void CSecurityHandler::ShowGenericErrorNoteL(TInt aStatus)
{
// Let's create TextResolver instance for error resolving...
+ RDEBUG( "aStatus", aStatus );
+ RDEBUG( "!!!!! this should never be called !!!!", 0 );
+
CTextResolver* textresolver = CTextResolver::NewLC();
// Resolve the error
TPtrC errorstring;
--- a/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp Mon May 03 13:20:16 2010 +0300
@@ -62,12 +62,14 @@
const TInt KMaxNumberOfPINAttempts(3);
const TInt KLastRemainingInputAttempt(1);
+#define ESecUiTypeLock 0x00100000
+
// ================= MEMBER FUNCTIONS =======================
//
// ----------------------------------------------------------
// CSecuritySettings::NewL()
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C CSecuritySettings* CSecuritySettings::NewL()
{
CSecuritySettings* self = new (ELeave) CSecuritySettings();
@@ -81,7 +83,7 @@
// CSecuritySettings::CSecuritySettings()
// constructor
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C CSecuritySettings::CSecuritySettings()
{
}
@@ -90,7 +92,7 @@
// CSecuritySettings::ConstructL()
// Symbian OS constructor.
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C void CSecuritySettings::ConstructL()
{
/*****************************************************
@@ -143,7 +145,7 @@
// CSecuritySettings::~CSecuritySettings()
// Destructor
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C CSecuritySettings::~CSecuritySettings()
{
/*****************************************************
@@ -195,27 +197,21 @@
// CSecuritySettings::ChangePinL()
// Changes PIN1
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C void CSecuritySettings::ChangePinL()
{
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "0", 0 );
RMobilePhone::TMobilePassword iOldPassword;
RMobilePhone::TMobilePassword iNewPassword;
- TInt iFlags=0;
- RDebug::Printf( "%s %s (%u) iOldPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ TInt iFlags=ESecUiTypeLock;
iOldPassword.Copy(_L(""));
- RDebug::Printf( "%s %s (%u) iNewPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
iNewPassword.Copy(_L(""));
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
TBuf<0x80> iCaption;
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
iCaption.Copy(_L("ChangePinL"));
- RDebug::Printf( "%s %s (%u) iCaption=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- RDebug::Print(iCaption);
TInt iShowError=1;
ChangePinParamsL(iOldPassword, iNewPassword, iFlags, iCaption, iShowError);
- RDebug::Printf( "%s %s (%u) iCaption=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "0", 0 );
}
//
@@ -223,174 +219,21 @@
// CSecuritySettings::ChangeUPinL()
// Changes Universal PIN
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C void CSecuritySettings::ChangeUPinL()
{
- TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
- TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
- if(wcdmaSupported || upinSupported)
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeUPinL()"));
- #endif
- TInt simState;
- TInt err( KErrGeneral );
- err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
- User::LeaveIfError( err );
- TBool simRemoved(simState == ESimNotPresent);
-
- if ( simRemoved )
- {
- ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
- return;
- }
-
- RMobilePhone::TMobilePhoneSecurityCode secCodeType;
- secCodeType = RMobilePhone::ESecurityUniversalPin;
-
- RMobilePhone::TMobilePassword oldPassword;
- RMobilePhone::TMobilePassword newPassword;
- RMobilePhone::TMobilePassword verifcationPassword;
- RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
- RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
- RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
-
- CCodeQueryDialog* verdlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
- CleanupStack::PushL(verdlg);
-
- CCodeQueryDialog* newdlg = new (ELeave) CCodeQueryDialog(newPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
- CleanupStack::PushL(newdlg);
-
- CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (oldPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
- CleanupStack::PushL(dlg);
-
- RMobilePhone::TMobilePhoneLock lockType;
- RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-
- lockType = RMobilePhone::ELockUniversalPin;
-
- RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
- iWait->SetRequestType(EMobilePhoneGetLockInfo);
- iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
- TInt res = iWait->WaitForRequestL();
- User::LeaveIfError(res);
-
- if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
- {
- CleanupStack::PopAndDestroy(3,verdlg);
- ShowResultNoteL(R_UPIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
- return;
- }
-
- CleanupStack::Pop(); // dlg
- // ask pin
- iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
- iPhone.GetSecurityCodeInfo(iWait->iStatus, secCodeType, codeInfoPkg);
- res = iWait->WaitForRequestL();
- User::LeaveIfError(res);
-
- if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
- res = dlg->ExecuteLD(R_UPIN_QUERY);
- else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_UPIN_ATTEMPTS, codeInfo.iRemainingEntryAttempts);
- res = dlg->ExecuteLD(R_UPIN_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
- else
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_UPIN_ATTEMPT);
- res = dlg->ExecuteLD(R_UPIN_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
-
-
-
- if( !res )
- {
- CleanupStack::PopAndDestroy(2,verdlg);
- return;
- }
- CleanupStack::Pop(); // newdlg
- // new pin code query
- if (!(newdlg->ExecuteLD(R_NEW_UPIN_CODE_QUERY)))
- {
- CleanupStack::PopAndDestroy(verdlg);
- return;
- }
-
- CleanupStack::Pop(); // verdlg
- // verification code query
- if (!(verdlg->ExecuteLD(R_VERIFY_NEW_UPIN_CODE_QUERY)))
- return;
-
- while (newPassword.CompareF(verifcationPassword) != 0)
- {
- // codes do not match -> note -> ask new pin and verification codes again
- ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
-
- newPassword = _L("");
- verifcationPassword = _L("");
-
- // new pin code query
- CCodeQueryDialog* newdlg = new (ELeave) CCodeQueryDialog (newPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
- if (!(newdlg->ExecuteLD(R_NEW_UPIN_CODE_QUERY)))
- return;
-
- // verification code query
- CCodeQueryDialog* verdlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
- if (!(verdlg->ExecuteLD(R_VERIFY_NEW_UPIN_CODE_QUERY)))
- return;
- }
-
- // send code
- passwords.iOldPassword = oldPassword;
- passwords.iNewPassword = newPassword;
- iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
- iPhone.ChangeSecurityCode(iWait->iStatus, secCodeType, passwords);
- res = iWait->WaitForRequestL();
- #if defined(_DEBUG)
- RDebug::Print( _L("(SECUI)CSecuritySettings::ChangePinL(): RETURN CODE: %d"), res);
- #endif
- switch(res)
- {
- case KErrNone:
- {
- // code changed
- ShowResultNoteL(R_UPIN_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
- break;
- }
- case KErrGsm0707IncorrectPassword:
- case KErrAccessDenied:
- {
- // code was entered erroneously
- ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
- ChangeUPinL();
- break;
- }
- case KErrGsmSSPasswordAttemptsViolation:
- case KErrLocked:
- {
- return;
- }
- case KErrGsm0707OperationNotAllowed:
- {
- // not allowed with this sim
- ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
- return;
- }
- case KErrAbort:
- {
- break;
- }
- default:
- {
- ShowErrorNoteL(res);
- ChangeUPinL();
- break;
- }
- }
- }
+ RDEBUG( "0", 0 );
+ RMobilePhone::TMobilePassword iOldPassword;
+ RMobilePhone::TMobilePassword iNewPassword;
+ TInt iFlags=ESecUiTypeLock;
+ iOldPassword.Copy(_L(""));
+ iNewPassword.Copy(_L(""));
+
+ TBuf<0x80> iCaption;
+ iCaption.Copy(_L("ChangeUPinL"));
+ TInt iShowError=1;
+ ChangeUPinParamsL(iOldPassword, iNewPassword, iFlags, iCaption, iShowError);
+ RDEBUG( "0", 0 );
}
@@ -399,452 +242,63 @@
// CSecuritySettings::ChangePin2L()
// Changes PIN2
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C void CSecuritySettings::ChangePin2L()
{
- /*****************************************************
- * Series 60 Customer / ETel
- * Series 60 ETel API
- *****************************************************/
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePin2L()"));
- #endif
- TInt simState;
- TInt err( KErrGeneral );
- err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
- User::LeaveIfError( err );
- TBool simRemoved(simState == ESimNotPresent);
-
- if ( simRemoved )
- {
- ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
- return;
- }
-
- RMmCustomAPI::TSecurityCodeType secCodeType;
- RMobilePhone::TMobilePhoneSecurityCode EtelsecCodeType;
- secCodeType = RMmCustomAPI::ESecurityCodePin2;
- RMobilePhone::TMobilePassword oldPassword;
- RMobilePhone::TMobilePassword newPassword;
- RMobilePhone::TMobilePassword verifcationPassword;
- RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
- RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
- RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
-
- // check if pin2 is blocked...
- TBool isBlocked = EFalse;
-
- TInt ret = iCustomPhone.IsBlocked(secCodeType,isBlocked);
-
- if(isBlocked)
- return;
-
- if (ret != KErrNone)
- {
- switch (ret)
- {
- // PIN2 Blocked.
- case KErrGsm0707SIMPuk2Required:
- break;
- case KErrGsmSSPasswordAttemptsViolation:
- case KErrLocked:
- // Pin2 features blocked permanently!
- ShowResultNoteL(R_PIN2_REJECTED, CAknNoteDialog::EConfirmationTone);
- break;
- case KErrGsm0707SimNotInserted:
- // not allowed with this sim
- ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
- break;
- default:
- ShowErrorNoteL(ret);
- break;
- }
- return;
- }
-
- CCodeQueryDialog* verdlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
- CleanupStack::PushL(verdlg);
-
- CCodeQueryDialog* newdlg = new (ELeave) CCodeQueryDialog(newPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
- CleanupStack::PushL(newdlg);
-
- CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (oldPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
- CleanupStack::PushL(dlg);
-
-
- // Security code must be changed to Etel API format
- // Custom API Pin1 and Pin2 have the same enum values as the Etel ones
- EtelsecCodeType = (RMobilePhone::TMobilePhoneSecurityCode)secCodeType;
- #ifndef __WINS__
- iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
- iPhone.GetSecurityCodeInfo(iWait->iStatus, EtelsecCodeType, codeInfoPkg);
- ret = iWait->WaitForRequestL();
- User::LeaveIfError(ret);
- #else
- codeInfo.iRemainingEntryAttempts = 1;
- #endif //__WINS__
+ RDEBUG( "0", 0 );
+ RMobilePhone::TMobilePassword iOldPassword;
+ RMobilePhone::TMobilePassword iNewPassword;
+ TInt iFlags=ESecUiTypeLock;
+ iOldPassword.Copy(_L(""));
+ iNewPassword.Copy(_L(""));
- if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
- ret = dlg->ExecuteLD(R_PIN2_QUERY);
- else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_PIN2_ATTEMPTS, codeInfo.iRemainingEntryAttempts );
- ret = dlg->ExecuteLD(R_PIN2_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
- else
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_PIN2_ATTEMPT);
- ret = dlg->ExecuteLD(R_PIN2_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
-
- CleanupStack::Pop(); // dlg
- if(!ret)
- {
- CleanupStack::PopAndDestroy(2,verdlg);
- return;
- }
-
- // new pin code query
- CleanupStack::Pop(); // newdlg
- if(!(newdlg->ExecuteLD(R_NEW_PIN2_CODE_QUERY)))
- {
- CleanupStack::PopAndDestroy(verdlg);
- return;
- }
-
- // verification code query
- CleanupStack::Pop(); // verdlg
- if(!(verdlg->ExecuteLD(R_VERIFY_NEW_PIN2_CODE_QUERY)))
- {
- return;
- }
-
- while (newPassword.CompareF(verifcationPassword) != 0)
- {
- // codes do not match -> note -> ask new pin and verification codes again
- ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
+ TBuf<0x80> iCaption;
+ iCaption.Copy(_L("ChangePin2L"));
+ TInt iShowError=1;
+ ChangePin2ParamsL(iOldPassword, iNewPassword, iFlags, iCaption, iShowError);
+ RDEBUG( "0", 0 );
- newPassword = _L("");
- verifcationPassword = _L("");
-
- // new pin code query
- CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (newPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
- if(!(dlg->ExecuteLD(R_NEW_PIN2_CODE_QUERY)))
- return;
-
- // verification code query
- CCodeQueryDialog* dlg2 = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
- if(!(dlg2->ExecuteLD(R_VERIFY_NEW_PIN2_CODE_QUERY)))
- return;
- }
-
-
- passwords.iOldPassword = oldPassword;
- passwords.iNewPassword = newPassword;
- iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
- iPhone.ChangeSecurityCode(iWait->iStatus,EtelsecCodeType,passwords);
- TInt res = iWait->WaitForRequestL();
- #if defined(_DEBUG)
- RDebug::Print( _L("(SECUI)CSecuritySettings::ChangePin2L(): RETURN CODE: %d"), res);
- #endif
- switch(res)
- {
- case KErrNone:
- {
- // code changed
- ShowResultNoteL(R_PIN2_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
- break;
- }
- case KErrGsm0707IncorrectPassword:
- case KErrAccessDenied:
- {
- ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
- ChangePin2L();
- break;
- }
- case KErrGsmSSPasswordAttemptsViolation:
- case KErrLocked:
- {
- // Pin2 blocked!
- ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
- CSecurityHandler* handler = new(ELeave) CSecurityHandler(iPhone);
- CleanupStack::PushL(handler);
- handler->HandleEventL(RMobilePhone::EPuk2Required);
- CleanupStack::PopAndDestroy(handler); // handler
- return;
- }
- case KErrGsm0707OperationNotAllowed:
- {
- // not allowed with this sim
- ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
- return;
- }
- case KErrAbort:
- {
- break;
- }
- default:
- {
- ShowErrorNoteL(res);
- ChangePin2L();
- break;
- }
- }
}
//
// ----------------------------------------------------------
// CSecuritySettings::ChangeSecCodeL()
// Changes security code
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C void CSecuritySettings::ChangeSecCodeL()
{
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "0", 0 );
RMobilePhone::TMobilePassword iOldPassword;
RMobilePhone::TMobilePassword iNewPassword;
TInt iFlags=0;
- RDebug::Printf( "%s %s (%u) iOldPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
iOldPassword.Copy(_L(""));
- RDebug::Printf( "%s %s (%u) iNewPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
iNewPassword.Copy(_L(""));
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
TBuf<0x80> iCaption;
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
iCaption.Copy(_L("ChangeSecCodeL"));
- RDebug::Printf( "%s %s (%u) iCaption=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- RDebug::Print(iCaption);
TInt iShowError=1;
ChangeSecCodeParamsL(iOldPassword, iNewPassword, iFlags, iCaption, iShowError);
- RDebug::Printf( "%s %s (%u) iCaption=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "0", 0 );
}
//
// ----------------------------------------------------------
// CSecuritySettings::ChangeAutoLockPeriodL()
// Changes autolock period
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TInt CSecuritySettings::ChangeAutoLockPeriodL(TInt aPeriod)
- {
- /*****************************************************
- * Series 60 Customer / ETel
- * Series 60 ETel API
- *****************************************************/
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodLXXXX()"));
- #endif
- RMobilePhone::TMobilePhoneLockSetting lockChange(RMobilePhone::ELockSetDisabled);
- RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneDevice;
- TInt currentItem = 0;
- TInt oldPeriod = aPeriod;
-
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() ReadDesC16ArrayResourceL"));
- #endif
-
-
- CCoeEnv* coeEnv = CCoeEnv::Static();
- CDesCArrayFlat* items = coeEnv->ReadDesC16ArrayResourceL(R_AUTOLOCK_LBX);
- CleanupStack::PushL(items);
-
- if (aPeriod == 0)
- {
- currentItem = 0; // autolock off
- }
- else
- {
- currentItem = 1; // user defined
- }
-
-
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() New autolocksettingpage"));
- #endif
-
- CAutoLockSettingPage* dlg = new (ELeave)CAutoLockSettingPage(R_AUTOLOCK_SETTING_PAGE, currentItem, items, aPeriod);
- CleanupStack::PushL(dlg);
- dlg->ConstructL();
- TInt maxPeriod;
- if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ))
- {
- // Retrieve the current autolock period max. value from the SCP server,
- // and check that the value the user
- // selected is ok from the Corporate Policy point of view.
- RSCPClient scpClient;
- TInt ret = scpClient.Connect();
- if ( ret == KErrNone )
- {
- CleanupClosePushL( scpClient );
- TBuf<KSCPMaxIntLength> maxPeriodBuf;
- if ( scpClient.GetParamValue( ESCPMaxAutolockPeriod, maxPeriodBuf ) == KErrNone )
- {
- TLex lex( maxPeriodBuf );
- if ( ( lex.Val( maxPeriod ) == KErrNone ) && ( maxPeriod > 0 ) )
- {
- dlg->SetPeriodMaximumValue(maxPeriod);
- }
- else
- {
- maxPeriod = 0;
- dlg->SetPeriodMaximumValue(maxPeriod);
- }
-
- }
- else
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL():\
- ERROR: Failed to retrieve max period"));
- #endif
- }
- }
- else
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL():\
- ERROR: Failed to connect to SCP."));
- #endif
- }
- CleanupStack::PopAndDestroy(); // scpClient
-}
- CleanupStack::Pop(); //dlg
- if (!dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
- {
- CleanupStack::PopAndDestroy(items);
- return oldPeriod;
- }
-
- CleanupStack::PopAndDestroy(); // items
-
- if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ))
- {
- TBool allow = ETrue;
-
- if ((aPeriod == 0) && (maxPeriod > 0))
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() \
- The period: %d is not allowed by TARM; max: %d"),aPeriod, maxPeriod );
- #endif
- allow = EFalse;
- HBufC* prompt;
- prompt = StringLoader::LoadLC( R_SECUI_TEXT_AUTOLOCK_MUST_BE_ACTIVE );
- CAknNoteDialog* noteDlg = new (ELeave) CAknNoteDialog( REINTERPRET_CAST(CEikDialog**,¬eDlg) );
- noteDlg->PrepareLC( R_CODE_ERROR );
- noteDlg->SetTextL( *prompt );
- noteDlg->SetTimeout( CAknNoteDialog::ELongTimeout );
- noteDlg->SetTone( CAknNoteDialog::EErrorTone );
- noteDlg->RunLD();
-
- CleanupStack::PopAndDestroy( prompt );
- }
-
- if ( !allow )
- {
- return ChangeAutoLockPeriodL( oldPeriod );
- }
- }
-
- if (aPeriod == 0)
- {
-
- #ifdef RD_REMOTELOCK
-
- // If remote lock is enabled, don't disable the domestic OS device lock
- // since that would render the RemoteLock useless.
- // Instead just re-set the DOS lock to enabled which as a side effect
- // requests the security code from the user.
-
- TBool remoteLockStatus( EFalse );
- CRemoteLockSettings* remoteLockSettings = CRemoteLockSettings::NewL();
-
- if ( remoteLockSettings->GetEnabled( remoteLockStatus ) )
- {
- if ( remoteLockStatus )
- {
- // Remote lock is enabled
- #ifdef _DEBUG
- RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeAutoLockPeriodL() - RemoteLock is enabled: lockChange = RMobilePhone::ELockSetEnabled" ) );
- #endif // _DEBUG
-
- lockChange = RMobilePhone::ELockSetEnabled;
- }
- else
- {
- // Remote lock is disabled
- #ifdef _DEBUG
- RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeAutoLockPeriodL() - RemoteLock is disabled: lockChange = RMobilePhone::ELockSetDisabled" ) );
- #endif // _DEBUG
-
- lockChange = RMobilePhone::ELockSetDisabled;
- }
- }
- else
- {
- // Failed to get remote lock status
- #ifdef _DEBUG
- RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeAutoLockPeriodL() - Failed to get RemoteLock status" ) );
- #endif // _DEBUG
- }
-
- delete remoteLockSettings;
- remoteLockSettings = NULL;
-
- #else // not defined RD_REMOTELOCK
-
- lockChange = RMobilePhone::ELockSetDisabled;
-
- #endif // RD_REMOTELOCK
- }
- else
- {
- lockChange = RMobilePhone::ELockSetEnabled;
- }
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() SetLockSetting"));
- #endif
- iWait->SetRequestType(EMobilePhoneSetLockSetting);
- RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
- iPhone.SetLockSetting(iWait->iStatus,lockType,lockChange);
- TInt status = iWait->WaitForRequestL();
- #if defined(_DEBUG)
- RDebug::Print( _L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL(): RETURN CODE: %d"), status);
- #endif
- switch(status)
- {
- case KErrNone:
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() KErrNone"));
- #endif
- break;
- case KErrGsmSSPasswordAttemptsViolation:
- case KErrLocked:
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() PasswordAttemptsViolation"));
- #endif
- return ChangeAutoLockPeriodL(oldPeriod);
- case KErrGsm0707IncorrectPassword:
- case KErrAccessDenied:
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() IncorrectPassword"));
- #endif
- // code was entered erroneously
- return ChangeAutoLockPeriodL(oldPeriod);
- case KErrAbort:
- // User pressed "cancel" in the code query dialog.
- return oldPeriod;
- default:
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() default"));
- #endif
- return ChangeAutoLockPeriodL(oldPeriod);
- }
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() END"));
- #endif
- return aPeriod;
+ {
+ TInt ret=0;
+ RDEBUG( "aPeriod", aPeriod );
+ RMobilePhone::TMobilePassword iOldPassword;
+ TInt iFlags=0;
+ TInt iShowError=1;
+ TBuf<0x80> iCaption;
+ iCaption.Copy(_L("ChangeAutoLockPeriodL"));
+ iOldPassword.Copy(_L(""));
+ ret = ChangeAutoLockPeriodParamsL(aPeriod, iOldPassword, iFlags, iCaption, iShowError);
+ RDEBUG( "ret", ret );
+ return ret;
}
@@ -854,7 +308,7 @@
// CSecuritySettings::ChangeRemoteLockStatusL()
// Changes remote lock status (on/off)
// ----------------------------------------------------------
-//
+// no qtdone
EXPORT_C TInt CSecuritySettings::ChangeRemoteLockStatusL( TBool& aRemoteLockStatus, TDes& aRemoteLockCode, TInt aAutoLockPeriod )
{
#ifdef RD_REMOTELOCK
@@ -974,7 +428,7 @@
// code twice and if they match enables the domestic OS device lock (which as
// a side effect pops up security code query).
// ----------------------------------------------------------
-//
+// no qtdone
TInt CSecuritySettings::RemoteLockCodeQueryL( TDes& aRemoteLockCode )
{
#ifdef RD_REMOTELOCK
@@ -1084,8 +538,15 @@
{
securityCode = aRemoteLockCode;
iWait->SetRequestType( EMobilePhoneVerifySecurityCode );
+ RDEBUG( "VerifySecurityCode", 0 );
iPhone.VerifySecurityCode( iWait->iStatus, secCodeType, securityCode, unblockCode );
+ RDEBUG( "WaitForRequestL", 0 );
TInt res = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ res = KErrNone;
+ #endif
// The remote lock code matches the security code
// and that is not allowed
while ( (res == KErrNone) && (buttonId == EEikBidOk))
@@ -1138,8 +599,15 @@
{
securityCode = aRemoteLockCode;
iWait->SetRequestType( EMobilePhoneVerifySecurityCode );
+ RDEBUG( "VerifySecurityCode", 0 );
iPhone.VerifySecurityCode( iWait->iStatus, secCodeType, securityCode, unblockCode );
+ RDEBUG( "WaitForRequestL", 0 );
res = iWait->WaitForRequestL();
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ res = KErrNone;
+ #endif
+ RDEBUG( "WaitForRequestL res", res );
}
}
@@ -1189,7 +657,7 @@
// Changes lock setting in domestic OS. Changing the domestic OS lock setting
// requires user to enter the security code.
// ----------------------------------------------------------
-//
+// no qtdone
TInt CSecuritySettings::RemoteLockSetLockSettingL( TBool aLockSetting )
{
#ifdef RD_REMOTELOCK
@@ -1213,10 +681,17 @@
iWait->SetRequestType( EMobilePhoneSetLockSetting );
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+ RDEBUG( "SetLockSetting", 0 );
iPhone.SetLockSetting( iWait->iStatus, lockType, lockSetting );
// Wait for code verify to complete
+ RDEBUG( "WaitForRequestL", 0 );
retValue = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL retValue", retValue );
+ #ifdef __WINS__
+ if (retValue == KErrNotSupported)
+ retValue = KErrNone;
+ #endif
switch( retValue )
{
@@ -1273,7 +748,7 @@
// CSecuritySettings::ChangeSimSecurityL()
// Changes SIM security
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecuritySettings::ChangeSimSecurityL()
{
/*****************************************************
@@ -1288,14 +763,22 @@
RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneToICC;
RMobilePhone::TMobilePhoneLockSetting lockChangeSetting;
- CCoeEnv* coeEnv = CCoeEnv::Static();
- CDesCArrayFlat* items = coeEnv->ReadDesC16ArrayResourceL(R_SECURITY_LBX);
- CleanupStack::PushL(items);
//get lock info
iWait->SetRequestType(EMobilePhoneGetLockInfo);
+ RDEBUG( "GetLockInfo", 0 );
iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
TInt status = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL status", status );
+
+ #ifdef __WINS__
+ if (status == KErrTimedOut)
+ {
+ lockInfo.iSetting = RMobilePhone::ELockSetDisabled;
+ status = KErrNone;
+ }
+ #endif
User::LeaveIfError(status);
TInt currentItem = 0;
@@ -1307,10 +790,7 @@
currentItem = 1; // off
}
- TInt oldItem = currentItem;
-
-
- if (currentItem == 1)
+ if (currentItem == 0) // switch the flag
{
lockChangeSetting = RMobilePhone::ELockSetDisabled;
}
@@ -1318,13 +798,21 @@
{
lockChangeSetting = RMobilePhone::ELockSetEnabled;
}
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "lockChangeSetting", lockChangeSetting );
iWait->SetRequestType(EMobilePhoneSetLockSetting);
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
- iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting);
+ RDEBUG( "SetLockSetting", 0 );
+ iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting); // this invokes the handler
+ RDEBUG( "WaitForRequestL", 0 );
status = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL status", status );
+ #ifdef __WINS__
+ if (status == KErrNotSupported)
+ status = KErrNone;
+ #endif
+ // the error was displayed in the handler
#if defined(_DEBUG)
RDebug::Print( _L("(SECUI)CSecuritySettings::ChangeSimSecurityL(): RETURN CODE: %d"), status);
#endif
@@ -1363,24 +851,20 @@
// CSecuritySettings::ChangePinRequestL()
// Changes PIN1 request
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecuritySettings::ChangePinRequestL()
{
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "0", 0 );
+
RMobilePhone::TMobilePassword iOldPassword;
TInt iFlags=0;
- RDebug::Printf( "%s %s (%u) iOldPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
iOldPassword.Copy(_L(""));
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
TBuf<0x80> iCaption;
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
iCaption.Copy(_L("ChangePinRequestL"));
- RDebug::Printf( "%s %s (%u) iCaption=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- RDebug::Print(iCaption);
TInt iShowError=1;
ChangePinRequestParamsL(1/* TODO it's imposible to know if we want to set or clear*/, iOldPassword, iFlags, iCaption, iShowError);
- RDebug::Printf( "%s %s (%u) iCaption=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "0", 0 );
return ETrue;
}
@@ -1390,7 +874,7 @@
// CSecuritySettings::ChangeUPinRequestL()
// Changes UPIN request on/off
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecuritySettings::ChangeUPinRequestL()
{
TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
@@ -1418,15 +902,18 @@
RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockUniversalPin;
RMobilePhone::TMobilePhoneLockSetting lockChangeSetting = RMobilePhone::ELockSetDisabled;
-
- CCoeEnv* coeEnv = CCoeEnv::Static();
- CDesCArrayFlat* items = coeEnv->ReadDesC16ArrayResourceL(R_UPIN_LBX);
- CleanupStack::PushL(items);
-
+
//get lock info
iWait->SetRequestType(EMobilePhoneGetLockInfo);
+ RDEBUG( "GetLockInfo", 0 );
iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
TInt status = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL status", status );
+ #ifdef __WINS__
+ if (status == KErrNotSupported)
+ status = KErrNone;
+ #endif
User::LeaveIfError(status);
TInt currentItem = 0;
@@ -1442,21 +929,8 @@
currentItem = 1; // off
}
- TInt oldItem = currentItem;
-
- CAknRadioButtonSettingPage* dlg = new (ELeave)CAknRadioButtonSettingPage(R_UPIN_SETTING_PAGE, currentItem, items);
- CleanupStack::PushL(dlg);
-
-
- CleanupStack::Pop(); // dlg
- if ( !(dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged)) || oldItem==currentItem )
- {
- CleanupStack::PopAndDestroy(); // items
- return EFalse;
- }
-
-
- if (currentItem == 1)
+
+ if (currentItem == 0) // switch the flag
{
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeUPinRequestL() currentItem: ELockSetDisabled"));
@@ -1471,23 +945,25 @@
lockChangeSetting = RMobilePhone::ELockSetEnabled;
}
- CleanupStack::PopAndDestroy(); // items
-
// Raise a flag to indicate that the UPIN
// request coming from ETEL has originated from SecUi and not from Engine.
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginated);
// Change the lock setting
iWait->SetRequestType(EMobilePhoneSetLockSetting);
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
- iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting);
+ RDEBUG( "SetLockSetting", 0 );
+ iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting); // this calls something in the handler
+ RDEBUG( "WaitForRequestL", 0 );
status = iWait->WaitForRequestL();
- #if defined(_DEBUG)
- RDebug::Print( _L("(SECUI)CSecuritySettings::ChangeUPinRequestL(): RETURN CODE: %d"), status);
- #endif
-
+ RDEBUG( "WaitForRequestL status", status );
// Lower the flag
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsETelAPIOriginated);
-
+ #ifdef __WINS__
+ if (status == KErrNotSupported)
+ status = KErrNone;
+ #endif
+
+ // no need to show errors because they were displayed in the Handler
switch(status)
{
case KErrNone:
@@ -1534,7 +1010,7 @@
// CSecuritySettings::SwitchPinCodesL()
// Changes the pin code currently in use (PIN/UPIN)
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecuritySettings::SwitchPinCodesL()
{
TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
@@ -1576,21 +1052,27 @@
{
lockType = RMobilePhone::ELockUniversalPin;
iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
TInt res = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ res = KErrNone;
+ #endif
User::LeaveIfError(res);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() Lock Info got: UPIN"));
- #endif
}
else
{
lockType = RMobilePhone::ELockICC;
iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
TInt res = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ res = KErrNone;
+ #endif
User::LeaveIfError(res);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() Lock Info got: PIN"));
- #endif
}
// code request must be ON to change active code.
@@ -1599,7 +1081,7 @@
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() CODE REQ NOT ON."));
#endif
- if (activeCode == RMobilePhone::ESecurityUniversalPin)
+ if (activeCode != RMobilePhone::ESecurityUniversalPin)
{
ShowResultNoteL(R_UPIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
}
@@ -1613,12 +1095,6 @@
return EFalse;
}
-
-
- CCoeEnv* coeEnv = CCoeEnv::Static();
- CDesCArrayFlat* items = coeEnv->ReadDesC16ArrayResourceL(R_CODE_LBX);
- CleanupStack::PushL(items);
-
iCustomPhone.GetActivePin(activeCode);
TInt currentItem = 0;
@@ -1633,22 +1109,8 @@
#endif
currentItem = 1; // UPIN
}
-
- TInt oldItem = currentItem;
-
- CAknRadioButtonSettingPage* dlg = new (ELeave)CAknRadioButtonSettingPage(R_CODE_IN_USE_SETTING_PAGE, currentItem, items);
- CleanupStack::PushL(dlg);
-
-
- CleanupStack::Pop(); // dlg
- if ( !(dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged)) || oldItem==currentItem )
- {
- CleanupStack::PopAndDestroy(); // items
- return EFalse;
- }
-
-
- if (currentItem == 1)
+
+ if (currentItem == 0) // switch the flag
{
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() currentItem: UPIN"));
@@ -1663,22 +1125,26 @@
lockType = RMobilePhone::ELockICC;
}
- CleanupStack::PopAndDestroy(); // items
-
// Raise a flag to indicate that the code
// request coming from ETEL has originated from SecUi and not from Engine.
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginated);
// Change the lock setting
iWait->SetRequestType(EMobilePhoneSetLockSetting);
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
- iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting);
+ RDEBUG( "SetLockSetting", 0 );
+ iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting); // request from handler
+ RDEBUG( "WaitForRequestL", 0 );
TInt status = iWait->WaitForRequestL();
- #if defined(_DEBUG)
- RDebug::Print( _L("(SECUI)CSecuritySettings::SwitchPinCodesL(): RETURN CODE: %d"), status);
- #endif
+ RDEBUG( "WaitForRequestL status", status );
// Lower the flag
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsETelAPIOriginated);
+ #ifdef __WINS__
+ if (status == KErrNotSupported)
+ status = KErrNone;
+ #endif
+
+ // errors are shown in the handler
switch(status)
{
case KErrNone:
@@ -1724,51 +1190,36 @@
// CSecuritySettings::IsLockEnabledL()
// Return is lock enabled/disabled
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecuritySettings::IsLockEnabledL(RMobilePhone::TMobilePhoneLock aLockType)
{
- /*****************************************************
- * Series 60 Customer / ETel
- * Series 60 ETel API
- *****************************************************/
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsLockEnabledL()"));
- #endif
- #ifdef __WINS__
-
- return EFalse;
-
- #else //WINS
-
+ TBool ret=EFalse;
RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-
//get lock info
RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
iWait->SetRequestType(EMobilePhoneGetLockInfo);
+ RDEBUG( "GetLockInfo", 0 );
iPhone.GetLockInfo(iWait->iStatus, aLockType, lockInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
TInt res = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
if (res != KErrNone)
- return ETrue;
-
+ ret = ETrue;
//lock is enabled return true
- if (lockInfo.iSetting == RMobilePhone::ELockSetEnabled)
+ else if (lockInfo.iSetting == RMobilePhone::ELockSetEnabled)
{
- return ETrue;
+ ret = ETrue;
}
-
- // lock is disabled return false
- return EFalse;
-
- #endif
-
+ RDEBUG( "ret", ret );
+ return ret;
}
//
// ----------------------------------------------------------
// CSecuritySettings::AskSecCodeL()
// For asking security code e.g in settings
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecuritySettings::AskSecCodeL()
{
return iSecurityHandler->AskSecCodeL();
@@ -1778,35 +1229,38 @@
// CSecuritySettings::AskPin2L()
// Asks PIN2
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecuritySettings::AskPin2L()
{
/*****************************************************
* Series 60 Customer / ETel
* Series 60 ETel API
*****************************************************/
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::AskPin2L()"));
- #endif
- TInt ret = 0;
+ RDEBUG( "0", 0 );
+ TInt retPhone = 0;
// check if pin2 is blocked...
RMmCustomAPI::TSecurityCodeType secCodeType = RMmCustomAPI::ESecurityCodePin2;
RMobilePhone::TMobilePhoneSecurityCode etelsecCodeType(RMobilePhone::ESecurityCodePin2);
RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
+ RMobilePhone::TMobilePassword password;
TBool isBlocked = EFalse;
+ TInt queryAccepted = KErrCancel;
//Check whether PIN2 is blocked
- ret = iCustomPhone.IsBlocked(secCodeType,isBlocked);
+ retPhone = iCustomPhone.IsBlocked(secCodeType,isBlocked);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::AskPin2L() IsBlocked return value: %d"), ret);
- #endif
+ RDEBUG( "retPhone", retPhone );
+ RDEBUG( "isBlocked", isBlocked );
+ #ifdef __WINS__
+ if (retPhone == KErrNotSupported)
+ retPhone = KErrNone;
+ #endif
if(isBlocked)
return EFalse;
- if (ret != KErrNone)
+ if (retPhone != KErrNone)
{
- switch (ret)
+ switch (retPhone)
{
// PIN2 Blocked.
case KErrGsm0707SIMPuk2Required:
@@ -1821,59 +1275,57 @@
ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
break;
default:
- ShowErrorNoteL(ret);
+ ShowErrorNoteL(retPhone);
break;
}
return EFalse;
}
iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+ RDEBUG( "GetSecurityCodeInfo", 0 );
iPhone.GetSecurityCodeInfo(iWait->iStatus, etelsecCodeType, codeInfoPkg);
- ret = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL", 0 );
+ retPhone = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL retPhone", retPhone );
+ #ifdef __WINS__
+ if (retPhone == KErrNotSupported || retPhone == KErrTimedOut)
+ {
+ retPhone = KErrNone;
+ codeInfo.iRemainingEntryAttempts = 3;
+ }
+ #endif
+ User::LeaveIfError(retPhone);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): get PIN2 info result: %d"), ret);
TInt attempts(codeInfo.iRemainingEntryAttempts);
- RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): attempts remaining: %d"), attempts);
- #endif
- User::LeaveIfError(ret);
+ RDEBUG( "attempts", attempts );
// ask pin2 code
- RMobilePhone::TMobilePassword password;
- CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (password,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
- if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
- ret = dlg->ExecuteLD(R_PIN2_QUERY);
- else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_PIN2_ATTEMPTS, codeInfo.iRemainingEntryAttempts );
- ret = dlg->ExecuteLD(R_PIN2_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
- else
- {
- HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_PIN2_ATTEMPT);
- ret = dlg->ExecuteLD(R_PIN2_QUERY, *queryPrompt);
- CleanupStack::PopAndDestroy(queryPrompt);
- }
-
- if (!ret)
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::AskPin2L(): Cancel pressed"));
- #endif
- return EFalse;
- }
+ /* request PIN using QT */
+ queryAccepted = KErrCancel;
+ CSecQueryUi *iSecQueryUi;
+ iSecQueryUi = CSecQueryUi::NewL();
+ TBuf<0x100> title; title.Zero(); title.Append(_L("PIN2")); title.Append(_L("#")); title.AppendNum(codeInfo.iRemainingEntryAttempts);
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, password, SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
+ RDEBUG( "password", 0 );
+ RDebug::Print( password );
+ RDEBUG( "queryAccepted", queryAccepted );
+ delete iSecQueryUi;
+ if(queryAccepted!=KErrNone)
+ return EFalse;
// verify code
RMobilePhone::TMobilePassword required_fourth;
iWait->SetRequestType(EMobilePhoneVerifySecurityCode);
+ RDEBUG( "VerifySecurityCode", 0 );
iPhone.VerifySecurityCode(iWait->iStatus,etelsecCodeType, password, required_fourth);
- TInt res = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL", 0 );
+ retPhone = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL retPhone", retPhone );
+ #ifdef __WINS__
+ if (retPhone == KErrNotSupported)
+ retPhone = KErrNone;
+ #endif
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::AskPin2L() VerifySecurityCode return value: %d"), res);
- #endif
-
- switch(res)
+ switch(retPhone)
{
case KErrNone:
break;
@@ -1892,7 +1344,7 @@
ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
return EFalse;
default:
- ShowErrorNoteL(res);
+ ShowErrorNoteL(retPhone);
return AskPin2L();
}
@@ -1903,7 +1355,7 @@
// CSecuritySettings::SetFdnModeL()
// Activates or deactivates Fixed Dialling Numbers (FDN) mode.
// ----------------------------------------------------------
-//
+// not qtdone
EXPORT_C void CSecuritySettings::SetFdnModeL()
{
/*****************************************************
@@ -1917,7 +1369,8 @@
TBool isBlocked = EFalse;
TInt ret = iCustomPhone.IsBlocked(secCodeType,isBlocked);
-
+ RDEBUG( "isBlocked", isBlocked );
+ RDEBUG( "ret", ret );
if(isBlocked)
return;
@@ -1960,12 +1413,20 @@
{
fdnSet = RMobilePhone::EFdnSetOn;
}
-
+ RDEBUG( "fdnSet", fdnSet );
// Change the FDN setting
iWait->SetRequestType(EMobilePhoneSetFdnSetting);
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+ RDEBUG( "SetFdnSetting", 0 );
iPhone.SetFdnSetting(iWait->iStatus, fdnSet);
+ RDEBUG( "WaitForRequestL", 0 );
status = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL status", status );
+ #ifdef __WINS__
+ if (status == KErrNotSupported)
+ status = KErrNone;
+ #endif
+
#if defined(_DEBUG)
RDebug::Print( _L("(SECUI)CSecuritySettings::SetFdnModeL(): RETURN CODE: %d"), status);
@@ -1998,7 +1459,7 @@
// CSecuritySettings::GetFndMode()
// Retrieves the current Fixed Dialling Numbers mode
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TInt CSecuritySettings::GetFdnMode (RMobilePhone::TMobilePhoneFdnStatus& aFdnMode)
{
/*****************************************************
@@ -2016,13 +1477,10 @@
// CSecuritySettings::ShowErrorNoteL()
// Shows error note
// ----------------------------------------------------------
-//
+// qtdone
void CSecuritySettings::ShowErrorNoteL(TInt aError)
{
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ShowErrorNoteL()"));
- #endif
- RDebug::Printf( "%s %s (%u) aError=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aError );
+ RDEBUG( "aError", aError );
ShowResultNoteL(aError, CAknNoteDialog::EErrorTone);
}
@@ -2032,14 +1490,10 @@
// CSecuritySettings::ShowResultNoteL()
// Shows result note
// ----------------------------------------------------------
-//
+// qtdone
void CSecuritySettings::ShowResultNoteL(TInt aResourceID, CAknNoteDialog::TTone aTone)
{
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ShowResultNoteL()"));
- RDebug::Print(_L("(SECUI)CSecuritySettings::ShowResultNoteL() Resource ID: %d"), aResourceID);
- #endif
- RDebug::Printf( "%s %s (%u) aResourceID=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aResourceID );
+ RDEBUG( "aResourceID", aResourceID );
/*
CAknNoteDialog* noteDlg = new (ELeave) CAknNoteDialog(REINTERPRET_CAST(CEikDialog**,¬eDlg));
@@ -2051,7 +1505,9 @@
CleanupStack::PushL(messageBox);
_LIT(KText, "ShowResultNoteL: ");
TBuf<0x200> title;
+ TBuf<0x200> titleTr;
title.Zero();
+ titleTr.Zero();
title.Append(KText);
title.AppendNum(aResourceID);
_LIT(KSeparator, " ");
@@ -2059,61 +1515,129 @@
switch(aResourceID)
{
case 0:
+ titleTr.Append(_L("OK"));
title.Append(_L("OK"));
break;
case KErrGsm0707IncorrectPassword:
- title.Append(_L("KErrGsm0707IncorrectPassword"));
+ titleTr.Append(_L("KErrGsm0707IncorrectPassword"));
+ title.Append(_L("Incorrect Password"));
break;
case KErrAccessDenied:
- title.Append(_L("KErrAccessDenied"));
+ titleTr.Append(_L("KErrAccessDenied"));
+ title.Append(_L("Access Denied"));
break;
case KErrGsmSSPasswordAttemptsViolation:
- title.Append(_L("KErrGsmSSPasswordAttemptsViolation"));
+ titleTr.Append(_L("KErrGsmSSPasswordAttemptsViolation"));
+ title.Append(_L("Password Attempts Violation"));
break;
case KErrLocked:
- title.Append(_L("KErrLocked"));
+ titleTr.Append(_L("KErrLocked"));
+ title.Append(_L("Locked"));
break;
case KErrGsm0707OperationNotAllowed:
- title.Append(_L("KErrGsm0707OperationNotAllowed"));
+ titleTr.Append(_L("KErrGsm0707OperationNotAllowed"));
+ title.Append(_L("Operation Not Allowed"));
break;
case KErrAbort:
- title.Append(_L("KErrAbort"));
+ titleTr.Append(_L("KErrAbort"));
+ title.Append(_L("Abort"));
break;
case KErrNotSupported:
- title.Append(_L("KErrNotSupported"));
+ titleTr.Append(_L("KErrNotSupported"));
+ title.Append(_L("Not Supported"));
break;
case R_SEC_BLOCKED:
- title.Append(_L("R_SEC_BLOCKED"));
+ titleTr.Append(_L("R_SEC_BLOCKED"));
+ title.Append(_L("BLOCKED"));
break;
case R_CODE_ERROR:
- title.Append(_L("R_CODE_ERROR"));
+ titleTr.Append(_L("R_CODE_ERROR"));
+ title.Append(_L("ERROR"));
break;
case KErrGsmInvalidParameter:
- title.Append(_L("KErrGsmInvalidParameter"));
+ titleTr.Append(_L("KErrGsmInvalidParameter"));
+ title.Append(_L("Invalid Parameter"));
break;
case R_CONFIRMATION_NOTE:
- title.Append(_L("R_CONFIRMATION_NOTE"));
+ titleTr.Append(_L("R_CONFIRMATION_NOTE"));
+ title.Append(_L("CONFIRMED"));
break;
case R_CODES_DONT_MATCH:
- title.Append(_L("R_CODES_DONT_MATCH"));
+ titleTr.Append(_L("R_CODES_DONT_MATCH"));
+ title.Append(_L("CODES DONT MATCH"));
break;
case R_PIN_CODE_CHANGED_NOTE:
- title.Append(_L("R_PIN_CODE_CHANGED_NOTE"));
+ titleTr.Append(_L("R_PIN_CODE_CHANGED_NOTE"));
+ title.Append(_L("PIN CODE CHANGED"));
break;
case R_SECURITY_CODE_CHANGED_NOTE:
- title.Append(_L("R_SECURITY_CODE_CHANGED_NOTE"));
+ titleTr.Append(_L("R_SECURITY_CODE_CHANGED_NOTE"));
+ title.Append(_L("SECURITY CODE CHANGED"));
+ break;
+ case R_SECUI_TEXT_AUTOLOCK_MUST_BE_ACTIVE:
+ titleTr.Append(_L("R_SECUI_TEXT_AUTOLOCK_MUST_BE_ACTIVE"));
+ title.Append(_L("AUTOLOCK MUST BE ACTIVE"));
+ break;
+ case KErrServerTerminated:
+ titleTr.Append(_L("KErrServerTerminated"));
+ title.Append(_L("Server Terminated"));
+ break;
+ case KErrServerBusy:
+ titleTr.Append(_L("KErrServerBusy"));
+ title.Append(_L("Server Busy"));
+ break;
+ case R_PIN2_REJECTED:
+ titleTr.Append(_L("R_PIN2_REJECTED"));
+ title.Append(_L("PIN2 REJECTED"));
+ break;
+ case R_OPERATION_NOT_ALLOWED:
+ titleTr.Append(_L("R_OPERATION_NOT_ALLOWED"));
+ title.Append(_L("OPERATION NOT ALLOWED"));
+ break;
+ case R_UPIN_NOT_ALLOWED:
+ titleTr.Append(_L("R_UPIN_NOT_ALLOWED"));
+ title.Append(_L("UPIN NOT ALLOWED"));
break;
- default:
+ case R_PIN_NOT_ALLOWED:
+ titleTr.Append(_L("R_PIN_NOT_ALLOWED"));
+ title.Append(_L("PIN NOT ALLOWED"));
+ break;
+ case R_INSERT_SIM:
+ titleTr.Append(_L("R_INSERT_SIM"));
+ title.Append(_L("INSERT SIM"));
+ break;
+ case R_SIM_ON:
+ titleTr.Append(_L("R_SIM_ON"));
+ title.Append(_L("SIM ON"));
+ break;
+ case KErrTimedOut:
+ titleTr.Append(_L("KErrTimedOut"));
+ title.Append(_L("Timed Out"));
+ break;
+ case R_PIN2_CODE_CHANGED_NOTE:
+ titleTr.Append(_L("R_PIN2_CODE_CHANGED_NOTE"));
+ title.Append(_L("PIN2 CODE CHANGED"));
+ break;
+ case KErrArgument:
+ titleTr.Append(_L("KErrArgument"));
+ title.Append(_L("Error Argument"));
+ break;
+
+ default: // " "
+ titleTr.Append(_L("Specific Error"));
title.Append(_L("Specific Error"));
break;
}
messageBox->SetTextL(title);
- RDebug::Printf( "%s %s (%u) aResourceID=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aResourceID );
+ RDEBUG( "aResourceID", aResourceID );
+ RDebug::Print( titleTr );
_LIT(KIconName, "qtg_small_smiley_wondering");
messageBox->SetIconNameL(KIconName);
+ // TODO use aTone for sound
- messageBox->ExecL();
+ // use default timeout
+ messageBox->ShowL();
CleanupStack::PopAndDestroy(); // messageBox
}
@@ -2123,152 +1647,110 @@
// CSecuritySettings::IsUpinSupportedL()
// Return is UPIN supported
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecuritySettings::IsUpinSupportedL()
{
TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
+ TBool isSupported = EFalse;
if(wcdmaSupported || upinSupported)
{
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported() BEGIN"));
#endif
- #ifdef __WINS__
-
- return EFalse;
-
- #else //WINS
RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
//get lock info
RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
iWait->SetRequestType(EMobilePhoneGetLockInfo);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported() GetLockInfo"));
- #endif
+ RDEBUG( "GetLockInfo", 0 );
iPhone.GetLockInfo(iWait->iStatus, RMobilePhone::ELockUniversalPin, lockInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
TInt res = iWait->WaitForRequestL();
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported() GetLockInfo DONE"));
- #endif
+ RDEBUG( "WaitForRequestL res", res );
if ((res == KErrNotSupported) || (res == KErrGsmInvalidParameter))
{
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported(): NOT SUPPORTED"));
#endif
- return EFalse;
+ isSupported = EFalse;
}
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported(): SUPPORTED: %d"), res);
- #endif
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported() END"));
- #endif
- return ETrue;
-
- #endif //WINS
+ else
+ {
+ RDEBUG( "0", 0 );
+
+ isSupported = ETrue;
+ }
}
else
- return EFalse;
+ isSupported = EFalse;
+ RDEBUG( "isSupported", isSupported );
+ return isSupported;
}
//
// ----------------------------------------------------------
-// CSecuritySettings::IsCodeBlocked()
+// CSecuritySettings::IsUpinBlocked()
// Return is a code blocked
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecuritySettings::IsUpinBlocked()
{
TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
if(wcdmaSupported || upinSupported)
{
- #ifdef __WINS__
- return EFalse;
- #else//__WINS__
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked() BEGIN"));
- #endif
RMmCustomAPI::TSecurityCodeType secCodeType;
secCodeType = RMmCustomAPI::ESecurityUniversalPin;
TBool isBlocked = EFalse;
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked() IsBlocked"));
- #endif
+ RDEBUG( "IsBlocked", 0 );
TInt ret = iCustomPhone.IsBlocked(secCodeType,isBlocked);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked() DONE.RETURN: %d"), ret);
- #endif
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked():isblocked: %d"), isBlocked);
- #endif
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked() END"));
- #endif
+ RDEBUG( "ret", ret );
+ RDEBUG( "isBlocked", isBlocked );
return isBlocked;
- #endif //__WINS__
}
else
return EFalse;
}
//
// ----------------------------------------------------------
-// CSecuritySettings::GetActivePinCode()
+// CSecuritySettings::IsUpinActive()
// Return the code active in current application (PIN/UPIN)
// ----------------------------------------------------------
-//
+// qtdone
EXPORT_C TBool CSecuritySettings::IsUpinActive()
{
TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
if(wcdmaSupported || upinSupported)
{
- #ifdef __WINS__
- return EFalse;
- #else//__WINS__
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive() BEGIN"));
- #endif
RMobilePhone::TMobilePhoneSecurityCode activePin;
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive() GetActivePin"));
- #endif
- iCustomPhone.GetActivePin(activePin);
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive() GetActivePin DONE"));
- #endif
+ RDEBUG( "GetActivePin", 0 );
+ iCustomPhone.GetActivePin(activePin);
+ RDEBUG( "activePin", activePin );
+ RDEBUG( "RMobilePhone::ESecurityUniversalPin", RMobilePhone::ESecurityUniversalPin );
if(activePin == RMobilePhone::ESecurityUniversalPin)
{
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive(): UPIN ACTIVE"));
- #endif
return ETrue;
}
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive(): UPIN NOT ACTIVE"));
- #endif
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive(): END"));
- #endif
return EFalse;
- #endif //__WINS__
}
else
return EFalse;
}
+/**************************/
+// qtdone
EXPORT_C TInt CSecuritySettings::ChangePinParamsL(RMobilePhone::TMobilePassword aOldPassword, RMobilePhone::TMobilePassword aNewPassword, TInt aFlags, TDes& aCaption, TInt aShowError)
{
- TInt ret = KErrNone;
- RDebug::Printf( "%s %s (%u) aFlags=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aFlags );
- RDebug::Printf( "%s %s (%u) aOldPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "aFlags", aFlags );
+ RDEBUG( "aOldPassword", 0 );
RDebug::Print(aOldPassword);
- RDebug::Printf( "%s %s (%u) aOldPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "aNewPassword", 0 );
RDebug::Print(aNewPassword);
- RDebug::Printf( "%s %s (%u) aCaption=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "aCaption", 0 );
RDebug::Print(aCaption);
- RDebug::Printf( "%s %s (%u) aShowError=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aShowError );
+ RDEBUG( "aShowError", aShowError );
/*****************************************************
@@ -2285,7 +1767,7 @@
if ( simRemoved )
{
ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
- return;
+ return KErrAccessDenied;
}
#if defined(_DEBUG)
RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinParamsL()"));
@@ -2299,9 +1781,9 @@
RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
- TBool queryAccepted = EFalse;
+ TInt queryAccepted = KErrCancel;
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "0", 0 );
RMobilePhone::TMobilePhoneLock lockType;
RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
@@ -2309,54 +1791,63 @@
lockType = RMobilePhone::ELockICC;
RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "0", 0 );
iWait->SetRequestType(EMobilePhoneGetLockInfo);
- #ifndef __WINS__
+ TInt res = KErrNone;
+ RDEBUG( "GetLockInfo", 0 );
iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- TInt res = iWait->WaitForRequestL();
- #else
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- TInt res = KErrNone;
+ RDEBUG( "WaitForRequestL", 0 );
+ res = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrTimedOut)
+ {
+ lockInfo.iSetting = RMobilePhone::ELockSetEnabled;
+ res = KErrNone;
+ }
#endif
+
User::LeaveIfError(res);
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
{
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- // CleanupStack::PopAndDestroy(1,dlg); // TODO sure about dlg ?
+ RDEBUG( "RMobilePhone::ELockSetDisabled", RMobilePhone::ELockSetDisabled );
ShowResultNoteL(R_PIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
- return;
+ return KErrAccessDenied;
}
-
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+
+ RDEBUG( "0", 0 );
iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
- #ifndef __WINS__
+ RDEBUG( "GetSecurityCodeInfo", 0 );
iPhone.GetSecurityCodeInfo(iWait->iStatus, secCodeType, codeInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
res = iWait->WaitForRequestL();
- #else
- res = KErrNone;
- #endif
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported || res == KErrTimedOut)
+ {
+ res = KErrNone;
+ codeInfo.iRemainingEntryAttempts=KMaxNumberOfPINAttempts;
+ }
+ #endif
User::LeaveIfError(res);
- RDebug::Printf( "%s %s (%u) codeInfo.iRemainingEntryAttempts=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, codeInfo.iRemainingEntryAttempts );
- codeInfo.iRemainingEntryAttempts=KMaxNumberOfPINAttempts;
-
- RDebug::Printf( "%s %s (%u) checking aOldPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "codeInfo.iRemainingEntryAttempts", codeInfo.iRemainingEntryAttempts );
+ RDEBUG( "checking aOldPassword", 0 );
if(aOldPassword.Length()==0)
{
- RDebug::Printf( "%s %s (%u) asking aOldPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "asking aOldPassword", 0 );
/* request PIN using QT */
- queryAccepted = EFalse;
+ queryAccepted = KErrCancel;
CSecQueryUi *iSecQueryUi;
iSecQueryUi = CSecQueryUi::NewL();
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("PIN1-Old"), oldPassword, 4, 8, ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
- RDebug::Printf( "%s %s (%u) oldPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ TBuf<0x100> title; title.Zero(); title.Append(_L("PIN1-Old")); title.Append(_L("#")); title.AppendNum(codeInfo.iRemainingEntryAttempts);
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, oldPassword, 4, 8, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
+ RDEBUG( "oldPassword", 0 );
RDebug::Print( oldPassword );
- RDebug::Printf( "%s %s (%u) queryAccepted=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "queryAccepted", queryAccepted );
delete iSecQueryUi;
- if(!queryAccepted)
- return;
+ if( queryAccepted!=KErrNone )
+ return KErrAbort;
res=1; // indicate that everything is ok
/* end request PIN using QT */
newPassword = _L("");
@@ -2369,9 +1860,7 @@
verifcationPassword.Copy(aNewPassword);
}
- RDebug::Printf( "%s %s (%u) res=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
-
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "res", res );
while (newPassword.Length()==0 || newPassword.CompareF(verifcationPassword) != 0)
{
// codes do not match -> note -> ask new pin and verification codes again
@@ -2386,54 +1875,42 @@
{
/* request PIN using QT */
{
- queryAccepted = EFalse;
+ queryAccepted = KErrCancel;
CSecQueryUi *iSecQueryUi;
iSecQueryUi = CSecQueryUi::NewL();
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("PIN1-New"), newPassword, 4, 8, ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
- RDebug::Printf( "%s %s (%u) newPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ // this queries both, and verifies itself
+ queryAccepted = iSecQueryUi->SecQueryDialog( _L("PIN1-New|PIN1-Ver"), newPassword, 4, 8, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
+ RDEBUG( "newPassword", 1 );
RDebug::Print( newPassword );
- RDebug::Printf( "%s %s (%u) queryAccepted=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "queryAccepted", queryAccepted );
delete iSecQueryUi;
- if(!queryAccepted)
- return;
+ if( queryAccepted!=KErrNone )
+ return KErrAbort;
}
/* end request PIN using QT */
-
- RDebug::Printf( "%s %s (%u) 1=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- /* request PIN using QT */
- {
- queryAccepted = EFalse;
- CSecQueryUi *iSecQueryUi;
- iSecQueryUi = CSecQueryUi::NewL();
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("PIN1-Ver"), verifcationPassword, 4, 8, ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
- RDebug::Printf( "%s %s (%u) verifcationPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- RDebug::Print( verifcationPassword );
- RDebug::Printf( "%s %s (%u) queryAccepted=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- delete iSecQueryUi;
- if(!queryAccepted)
- return;
- }
- /* end request PIN using QT */
+ verifcationPassword.Copy(newPassword); // just to break the while
+ RDEBUG( "0", 0 );
}
}
// send code
passwords.iOldPassword = oldPassword;
passwords.iNewPassword = newPassword;
- RDebug::Printf( "%s %s (%u) SetRequestType=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "passwords", 0 );
RDebug::Print( passwords.iOldPassword );
RDebug::Print( passwords.iNewPassword );
+ RDEBUG( "SetRequestType", 0 );
iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
- #ifndef __WINS__
+ RDEBUG( "ChangeSecurityCode", 0 );
iPhone.ChangeSecurityCode(iWait->iStatus, secCodeType, passwords);
+ RDEBUG( "WaitForRequestL", 0 );
res = iWait->WaitForRequestL();
- #else
- res = KErrNone;
- #endif
- RDebug::Printf( "%s %s (%u) res=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
- #if defined(_DEBUG)
- RDebug::Print( _L("(SECUI)CSecuritySettings::ChangePinParamsL(): RETURN CODE: %d"), res);
- #endif
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ res = KErrNone;
+ #endif
+
switch(res)
{
case KErrNone:
@@ -2454,13 +1931,13 @@
case KErrLocked:
{
// Pin1 blocked!
- return;
+ return KErrLocked;
}
case KErrGsm0707OperationNotAllowed:
{
// not allowed with this sim
ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
- return;
+ return KErrGsm0707OperationNotAllowed;
}
case KErrAbort:
{
@@ -2475,26 +1952,349 @@
}
return res;
}
+/*********************************************/
+// qtdone
EXPORT_C TInt CSecuritySettings::ChangeUPinParamsL(RMobilePhone::TMobilePassword aOldPassword, RMobilePhone::TMobilePassword aNewPassword, TInt aFlags, TDes& aCaption, TInt aShowError)
{
- TInt ret = KErrNone;
- #if defined(_DEBUG)
- RDebug::Printf( "%s %s (%u) aFlags=%x aShowError=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aFlags, aShowError );
- #endif
+ RDEBUG( "aFlags", aFlags );
+
+ RDebug::Print(aOldPassword);
+ RDebug::Print(aNewPassword);
+ RDebug::Print(aCaption);
+
+ TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
+ TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
+ if(! (wcdmaSupported || upinSupported))
+ {
+ RDEBUG( "! upinSupported", upinSupported );
+ return KErrAccessDenied;
+ }
+
+ RDEBUG( "upinSupported", upinSupported );
+ TInt simState;
+ TInt err( KErrGeneral );
+ err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
+ User::LeaveIfError( err );
+ TBool simRemoved(simState == ESimNotPresent);
+
+ if ( simRemoved )
+ {
+ ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
+ return KErrAccessDenied;
+ }
+
+ RMobilePhone::TMobilePhoneSecurityCode secCodeType;
+ secCodeType = RMobilePhone::ESecurityUniversalPin;
+
+ RMobilePhone::TMobilePassword oldPassword;
+ RMobilePhone::TMobilePassword newPassword;
+ RMobilePhone::TMobilePassword verifcationPassword;
+ RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
+ RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
+ RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
+ RMobilePhone::TMobilePhoneLock lockType;
+ RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
+ TInt queryAccepted = KErrCancel;
+
+ lockType = RMobilePhone::ELockUniversalPin;
+
+ RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
+ iWait->SetRequestType(EMobilePhoneGetLockInfo);
+ RDEBUG( "GetLockInfo", 0 );
+ iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
+ TInt res = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ {
+ res = KErrNone;
+ lockInfo.iSetting = RMobilePhone::ELockSetEnabled;
+ }
+ #endif
+ User::LeaveIfError(res);
+
+ RDEBUG( "lockInfo.iSetting", lockInfo.iSetting );
+ RDEBUG( "RMobilePhone::ELockSetDisabled", RMobilePhone::ELockSetDisabled );
+ if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
+ {
+ ShowResultNoteL(R_UPIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+ return KErrAccessDenied;
+ }
+
+ iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+ RDEBUG( "GetSecurityCodeInfo", 0 );
+ iPhone.GetSecurityCodeInfo(iWait->iStatus, secCodeType, codeInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
+ res = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported || res == KErrTimedOut)
+ {
+ res = KErrNone;
+ codeInfo.iRemainingEntryAttempts=KMaxNumberOfPINAttempts;
+ }
+ #endif
+ User::LeaveIfError(res);
+
+ /* request PIN using QT */
+ queryAccepted = KErrCancel;
+ CSecQueryUi *iSecQueryUi;
+ iSecQueryUi = CSecQueryUi::NewL();
+ TBuf<0x100> title; title.Zero(); title.Append(_L("UPIN-Old")); title.Append(_L("#")); title.AppendNum(codeInfo.iRemainingEntryAttempts);
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, oldPassword, 4, 8, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
+ RDEBUG( "oldPassword", 0 );
+ RDebug::Print( oldPassword );
+ RDEBUG( "queryAccepted", queryAccepted );
+ delete iSecQueryUi;
+ if( queryAccepted!=KErrNone )
+ return KErrAbort;
+ res=1; // indicate that everything is ok
+
+ {
+ queryAccepted = KErrCancel;
+ CSecQueryUi *iSecQueryUi;
+ iSecQueryUi = CSecQueryUi::NewL();
+ // this queries both, and verifies itself
+ queryAccepted = iSecQueryUi->SecQueryDialog( _L("PIN1-New|PIN1-Ver"), newPassword, 4, 8, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
+ RDEBUG( "newPassword", 0 );
+ RDebug::Print( newPassword );
+ RDEBUG( "queryAccepted", queryAccepted );
+ delete iSecQueryUi;
+ if( queryAccepted!=KErrNone )
+ return KErrAbort;
+ }
+ // send code
+ passwords.iOldPassword = oldPassword;
+ passwords.iNewPassword = newPassword;
+ iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
+ RDEBUG( "ChangeSecurityCode", 0 );
+ iPhone.ChangeSecurityCode(iWait->iStatus, secCodeType, passwords);
+ RDEBUG( "WaitForRequestL", 0 );
+ res = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ res = KErrNone;
+ #endif
+ switch(res)
+ {
+ case KErrNone:
+ {
+ // code changed
+ ShowResultNoteL(R_UPIN_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
+ break;
+ }
+ case KErrGsm0707IncorrectPassword:
+ case KErrAccessDenied:
+ {
+ // code was entered erroneously
+ ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
+ ChangeUPinParamsL(_L(""), _L(""), aFlags, aCaption, aShowError);
+ break;
+ }
+ case KErrGsmSSPasswordAttemptsViolation:
+ case KErrLocked:
+ {
+ return KErrLocked;
+ }
+ case KErrGsm0707OperationNotAllowed:
+ {
+ // not allowed with this sim
+ ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+ return KErrGsm0707OperationNotAllowed;
+ }
+ case KErrAbort:
+ {
+ break;
+ }
+ default:
+ {
+ ShowErrorNoteL(res);
+ ChangeUPinParamsL(_L(""), _L(""), aFlags, aCaption, aShowError);
+ break;
+ }
+ }
+ return res;
}
+/***************************************/
+// qtdone
EXPORT_C TInt CSecuritySettings::ChangePin2ParamsL(RMobilePhone::TMobilePassword aOldPassword, RMobilePhone::TMobilePassword aNewPassword, TInt aFlags, TDes& aCaption, TInt aShowError)
{
- TInt ret = KErrNone;
- #if defined(_DEBUG)
- RDebug::Printf( "%s %s (%u) aFlags=%x aShowError=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aFlags, aShowError );
- #endif
+ #if defined(_DEBUG)
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePin2ParamsL()"));
+ #endif
+ TInt simState;
+ TInt err( KErrGeneral );
+ err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
+ User::LeaveIfError( err );
+ TBool simRemoved(simState == ESimNotPresent);
+
+ if ( simRemoved )
+ {
+ ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
+ return KErrAccessDenied;
+ }
+
+ RMmCustomAPI::TSecurityCodeType secCodeType;
+ RMobilePhone::TMobilePhoneSecurityCode EtelsecCodeType;
+ secCodeType = RMmCustomAPI::ESecurityCodePin2;
+ RMobilePhone::TMobilePassword oldPassword;
+ RMobilePhone::TMobilePassword newPassword;
+ RMobilePhone::TMobilePassword verifcationPassword;
+ RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
+ RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
+ RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
+ TInt queryAccepted = KErrCancel;
+
+ // check if pin2 is blocked...
+ TBool isBlocked = EFalse;
+
+ TInt ret = iCustomPhone.IsBlocked(secCodeType,isBlocked);
+ RDEBUG( "isBlocked", isBlocked );
+ if(isBlocked)
+ return KErrAccessDenied;
+ RDEBUG( "ret", ret );
+ #ifdef __WINS__
+ if (ret == KErrNotSupported)
+ ret = KErrNone;
+ #endif
+
+ if (ret != KErrNone)
+ {
+ switch (ret)
+ {
+ // PIN2 Blocked.
+ case KErrGsm0707SIMPuk2Required:
+ break;
+ case KErrGsmSSPasswordAttemptsViolation:
+ case KErrLocked:
+ // Pin2 features blocked permanently!
+ ShowResultNoteL(R_PIN2_REJECTED, CAknNoteDialog::EConfirmationTone);
+ break;
+ case KErrGsm0707SimNotInserted:
+ // not allowed with this sim
+ ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+ break;
+ default:
+ ShowErrorNoteL(ret);
+ break;
+ }
+ return KErrAccessDenied;
+ }
+
+
+ // Security code must be changed to Etel API format
+ // Custom API Pin1 and Pin2 have the same enum values as the Etel ones
+ EtelsecCodeType = (RMobilePhone::TMobilePhoneSecurityCode)secCodeType;
+ iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+ RDEBUG( "GetSecurityCodeInfo", 0 );
+ iPhone.GetSecurityCodeInfo(iWait->iStatus, EtelsecCodeType, codeInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
+ ret = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL ret", ret );
+ #ifdef __WINS__
+ if ( ret == KErrNotSupported || ret == KErrTimedOut)
+ {
+ codeInfo.iRemainingEntryAttempts = 1;
+ ret = KErrNone;
+ }
+ #endif
+ User::LeaveIfError(ret);
+
+ /* request PIN using QT */
+ queryAccepted = KErrCancel;
+ CSecQueryUi *iSecQueryUi;
+ iSecQueryUi = CSecQueryUi::NewL();
+ TBuf<0x100> title; title.Zero(); title.Append(_L("PIN2-Old")); title.Append(_L("#")); title.AppendNum(codeInfo.iRemainingEntryAttempts);
+ queryAccepted = iSecQueryUi->SecQueryDialog( title, oldPassword, SEC_C_PIN2_CODE_MIN_LENGTH, SEC_C_PIN2_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
+ RDEBUG( "oldPassword", 0 );
+ RDebug::Print( oldPassword );
+ RDEBUG( "queryAccepted", queryAccepted );
+ delete iSecQueryUi;
+ if( queryAccepted!=KErrNone )
+ return KErrAbort;
+ /* end request PIN using QT */
+
+ /* request PIN using QT */
+ {
+ queryAccepted = KErrCancel;
+ CSecQueryUi *iSecQueryUi;
+ iSecQueryUi = CSecQueryUi::NewL();
+ // this queries both, and verifies itself
+ queryAccepted = iSecQueryUi->SecQueryDialog( _L("PIN2-New|PIN2-Ver"), newPassword, SEC_C_PIN2_CODE_MIN_LENGTH, SEC_C_PIN2_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
+ RDEBUG( "newPassword", 0 );
+ RDebug::Print( newPassword );
+ RDEBUG( "queryAccepted", queryAccepted );
+ delete iSecQueryUi;
+ if( queryAccepted!=KErrNone )
+ return KErrAbort;
+ }
+ /* end request PIN using QT */
+
+ passwords.iOldPassword = oldPassword;
+ passwords.iNewPassword = newPassword;
+ iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
+ RDEBUG( "ChangeSecurityCode", 0 );
+ iPhone.ChangeSecurityCode(iWait->iStatus,EtelsecCodeType,passwords);
+ RDEBUG( "WaitForRequestL", 0 );
+ TInt res = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ res = KErrNone;
+ #endif
+ switch(res)
+ {
+ case KErrNone:
+ {
+ // code changed
+ ShowResultNoteL(R_PIN2_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
+ break;
+ }
+ case KErrGsm0707IncorrectPassword:
+ case KErrAccessDenied:
+ {
+ ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
+ ChangePin2ParamsL(_L(""), _L(""), aFlags, aCaption, aShowError);
+ break;
+ }
+ case KErrGsmSSPasswordAttemptsViolation:
+ case KErrLocked:
+ {
+ // Pin2 blocked!
+ ShowResultNoteL(KErrLocked, CAknNoteDialog::EErrorTone);
+ CSecurityHandler* handler = new(ELeave) CSecurityHandler(iPhone);
+ CleanupStack::PushL(handler);
+ handler->HandleEventL(RMobilePhone::EPuk2Required);
+ CleanupStack::PopAndDestroy(handler); // handler
+ return KErrLocked;
+ }
+ case KErrGsm0707OperationNotAllowed:
+ {
+ // not allowed with this sim
+ ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+ return KErrGsm0707OperationNotAllowed;
+ }
+ case KErrAbort:
+ {
+ break;
+ }
+ default:
+ {
+ ShowErrorNoteL(res);
+ ChangePin2ParamsL(_L(""), _L(""), aFlags, aCaption, aShowError);
+ break;
+ }
+ }
+ return res;
}
+/************************************************/
+// qtdone
EXPORT_C TInt CSecuritySettings::ChangeSecCodeParamsL(RMobilePhone::TMobilePassword aOldPassword, RMobilePhone::TMobilePassword aNewPassword, TInt aFlags, TDes& aCaption, TInt aShowError)
{
- TInt ret = KErrNone;
- #if defined(_DEBUG)
- RDebug::Printf( "%s %s (%u) aFlags=%x aShowError=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aFlags, aShowError );
- #endif
+ RDEBUG( "aFlags", aFlags );
+ RDEBUG( "aShowError", aShowError );
/*****************************************************
* Series 60 Customer / ETel
* Series 60 ETel API
@@ -2503,7 +2303,7 @@
RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeSecCodeParamsL()"));
#endif
TInt res=0;
- TBool queryAccepted = EFalse;
+ TInt queryAccepted = KErrCancel;
RMobilePhone::TMobilePassword newPassword;
RMobilePhone::TMobilePhoneSecurityCode secCodeType;
@@ -2515,16 +2315,15 @@
if(aOldPassword.Length()==0)
{ /* request PIN using QT */
- queryAccepted = EFalse;
+ queryAccepted = KErrCancel;
CSecQueryUi *iSecQueryUi;
iSecQueryUi = CSecQueryUi::NewL();
- // TODO allow and handle Cancel
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("Lock-Old"), oldPassword, 4, 8, ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
- RDebug::Printf( "%s %s (%u) oldPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ queryAccepted = iSecQueryUi->SecQueryDialog( _L("Lock-Old"), oldPassword, 4, 8, ESecUiAlphaSupported | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
+ RDEBUG( "oldPassword", 0 );
RDebug::Print( oldPassword );
- RDebug::Printf( "%s %s (%u) queryAccepted=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "queryAccepted", queryAccepted );
delete iSecQueryUi;
- if(!queryAccepted)
+ if( queryAccepted!=KErrNone )
return KErrAbort;
res=1; // indicate that everything is ok
/* end request PIN using QT */
@@ -2538,13 +2337,19 @@
verifcationPassword.Copy(aNewPassword);
}
- RDebug::Printf( "%s %s (%u) EMobilePhoneVerifySecurityCode=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, EMobilePhoneVerifySecurityCode );
+ RDEBUG( "EMobilePhoneVerifySecurityCode", EMobilePhoneVerifySecurityCode );
iWait->SetRequestType(EMobilePhoneVerifySecurityCode);
// check code
+ RDEBUG( "VerifySecurityCode", 0 );
iPhone.VerifySecurityCode(iWait->iStatus,secCodeType, oldPassword, required_fourth);
+ RDEBUG( "WaitForRequestL", 0 );
res = iWait->WaitForRequestL();
- RDebug::Printf( "%s %s (%u) VerifySecurityCode res=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
-
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ res = KErrNone;
+ #endif
+
if(res!=KErrNone)
{
ShowResultNoteL(res, CAknNoteDialog::EErrorTone);
@@ -2558,45 +2363,41 @@
ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
{
- queryAccepted = EFalse;
+ queryAccepted = KErrCancel;
CSecQueryUi *iSecQueryUi;
iSecQueryUi = CSecQueryUi::NewL();
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("Lock-New"), newPassword, 4, 8, ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
- RDebug::Printf( "%s %s (%u) newPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ // will ask both codes and compare itself
+ // mix, max , is handled using TARM params, in the dialog itself
+ TInt lType = ESecUiAlphaNotSupported | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType;
+ RDEBUG( "lType", lType );
+ queryAccepted = iSecQueryUi->SecQueryDialog( _L("Lock-New|Lock-Verif"), newPassword, 4, 8, lType );
+ RDEBUG( "newPassword", 0 );
RDebug::Print( newPassword );
- RDebug::Printf( "%s %s (%u) queryAccepted=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "queryAccepted", queryAccepted );
delete iSecQueryUi;
- if(!queryAccepted)
+ if( queryAccepted!=KErrNone )
return KErrAbort;
}
-
- {
- queryAccepted = EFalse;
- CSecQueryUi *iSecQueryUi;
- iSecQueryUi = CSecQueryUi::NewL();
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("Lock-Verif"), verifcationPassword, 4, 8, ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType );
- RDebug::Printf( "%s %s (%u) verifcationPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- RDebug::Print( verifcationPassword );
- RDebug::Printf( "%s %s (%u) queryAccepted=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- delete iSecQueryUi;
- if(!queryAccepted)
- return KErrAbort;
- // TODO allow and handle Cancel
- }
+ verifcationPassword.Copy(newPassword); // break the while
} // while
// change code
- RDebug::Printf( "%s %s (%u) res=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
+ RDEBUG( "res", res );
if (res == KErrNone)
{
passwords.iOldPassword = oldPassword;
passwords.iNewPassword = newPassword;
iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
- RDebug::Printf( "%s %s (%u) ChangeSecurityCode=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "ChangeSecurityCode", 0 );
iPhone.ChangeSecurityCode(iWait->iStatus,secCodeType,passwords);
+ RDEBUG( "WaitForRequestL", 0 );
res = iWait->WaitForRequestL();
- RDebug::Printf( "%s %s (%u) res=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ res = KErrNone;
+ #endif
if(res==KErrNone && 1==0 ) // TODO not possible to enable because it asks code again
{
@@ -2605,38 +2406,52 @@
if(oldPassword.Length()==6)
{
lockChangeSetting = RMobilePhone::ELockSetDisabled;
- RDebug::Printf( "%s %s (%u) RMobilePhone::ELockSetDisabled=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, RMobilePhone::ELockSetDisabled );
+ RDEBUG( "RMobilePhone::ELockSetDisabled", RMobilePhone::ELockSetDisabled );
}
iWait->SetRequestType(EMobilePhoneSetLockSetting);
- RDebug::Printf( "%s %s (%u) SetLockSetting=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ RDEBUG( "SetLockSetting", 0 );
iPhone.SetLockSetting(iWait->iStatus, lockType, lockChangeSetting );
+ RDEBUG( "WaitForRequestL", 0 );
res = iWait->WaitForRequestL();
- RDebug::Printf( "%s %s (%u) res=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
+ RDEBUG( "WaitForRequestL res", res );
+ #ifdef __WINS__
+ if (res == KErrNotSupported)
+ res = KErrNone;
+ #endif
}
}
- RDebug::Printf( "%s %s (%u) res=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, res );
- #if defined(_DEBUG)
- RDebug::Print( _L("(SECUI)CSecuritySettings::ChangeSecCodeParamsL(): RETURN CODE: %d"), res);
- #endif
+ RDEBUG( "res", res );
switch(res)
{
case KErrNone:
{
// code changed
ShowResultNoteL(R_SECURITY_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
- if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ) &&
- !(FeatureManager::FeatureSupported(KFeatureIdSapDeviceLockEnhancements )))
- {
- // Send the changed code to the SCP server. Not used with device lock enhancements.
- RDebug::Printf( "%s %s (%u) scpClient.Connect=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
+ {
+ // Send the changed code to the SCP server, even with device lock enhancements.
+ RDEBUG( "scpClient.Connect", 0 );
RSCPClient scpClient;
TSCPSecCode newCode;
+ TSCPSecCode oldPassword;
newCode.Copy( newPassword );
if ( scpClient.Connect() == KErrNone )
{
- RDebug::Printf( "%s %s (%u) scpClient.StoreCode=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- scpClient.StoreCode( newCode );
+ RDEBUG( "scpClient.StoreCode", 0 );
+ /*
+ // scpClient.StoreCode( newCode );
+ RArray<TDevicelockPolicies> aFailedPolicies;
+ TDevicelockPolicies failedPolicy;
+ TInt retLockcode = KErrNone;
+ retLockcode = scpClient.StoreLockcode( newCode, oldPassword, aFailedPolicies );
+ RDEBUG( "retLockcode", retLockcode );
+ RDEBUG( "aFailedPolicies.Count()", aFailedPolicies.Count() );
+ for(TInt i=0; i<aFailedPolicies.Count(); i++)
+ {
+ failedPolicy = aFailedPolicies[i];
+ RDEBUG( "failedPolicy", failedPolicy );
+ }
+ */
scpClient.Close();
}
}
@@ -2668,26 +2483,190 @@
break;
}
} // switch
+ return res;
}
+
+/**************************************/
+// qtdone
EXPORT_C TInt CSecuritySettings::ChangeAutoLockPeriodParamsL(TInt aPeriod, RMobilePhone::TMobilePassword aOldPassword, TInt aFlags, TDes& aCaption, TInt aShowError)
{
- TInt ret = KErrNone;
- #if defined(_DEBUG)
- RDebug::Printf( "%s %s (%u) aFlags=%x aShowError=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aFlags, aShowError );
- #endif
+ RDEBUG( "aPeriod", aPeriod );
+ RDEBUG( "aFlags", aFlags );
+ /*****************************************************
+ * Series 60 Customer / ETel
+ * Series 60 ETel API
+ *****************************************************/
+
+ RMobilePhone::TMobilePhoneLockSetting lockChange(RMobilePhone::ELockSetDisabled);
+ RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneDevice;
+ TInt oldPeriod = aPeriod;
+
+ TInt maxPeriod=0;
+ if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ))
+ {
+ // Retrieve the current autolock period max. value from the SCP server,
+ // and check that the value the user
+ // selected is ok from the Corporate Policy point of view.
+ RSCPClient scpClient;
+ TInt ret = scpClient.Connect();
+ if ( ret == KErrNone )
+ {
+ CleanupClosePushL( scpClient );
+ TBuf<KSCPMaxIntLength> maxPeriodBuf;
+ if ( scpClient.GetParamValue( ESCPMaxAutolockPeriod, maxPeriodBuf ) == KErrNone )
+ {
+ TLex lex( maxPeriodBuf );
+ if ( ( lex.Val( maxPeriod ) == KErrNone ) && ( maxPeriod > 0 ) )
+ {
+ RDEBUG( "from SCP maxPeriod", maxPeriod );
+ // nothing to do
+ }
+ else
+ {
+ maxPeriod = 0;
+ RDEBUG( "not from SCP maxPeriod", maxPeriod );
+ }
+ }
+ else
+ {
+ RDEBUG( "Failed to retrieve max period", maxPeriod );
+ }
+ }
+ else
+ {
+ RDEBUG( "Failed to connect to SCP", 0 );
+ }
+ CleanupStack::PopAndDestroy(); // scpClient
}
+ RDEBUG( "maxPeriod", maxPeriod );
+ if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ))
+ {
+ TBool allow = ETrue;
+
+ if ((aPeriod == 0) && (maxPeriod > 0))
+ {
+ #if defined(_DEBUG)
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() \
+ The period: %d is not allowed by TARM; max: %d"),aPeriod, maxPeriod );
+ #endif
+ allow = EFalse;
+ ShowResultNoteL(R_SECUI_TEXT_AUTOLOCK_MUST_BE_ACTIVE, CAknNoteDialog::EErrorTone);
+ }
+ if ( !allow )
+ {
+ return ChangeAutoLockPeriodParamsL(aPeriod, aOldPassword, aFlags, aCaption, aShowError); // ask again
+ }
+ }
+
+ if (aPeriod == 0)
+ {
+ #ifdef RD_REMOTELOCK
+
+ // If remote lock is enabled, don't disable the domestic OS device lock
+ // since that would render the RemoteLock useless.
+ // Instead just re-set the DOS lock to enabled which as a side effect
+ // requests the security code from the user.
+
+ TBool remoteLockStatus( EFalse );
+ CRemoteLockSettings* remoteLockSettings = CRemoteLockSettings::NewL();
+
+ if ( remoteLockSettings->GetEnabled( remoteLockStatus ) )
+ {
+ if ( remoteLockStatus )
+ {
+ // Remote lock is enabled
+ lockChange = RMobilePhone::ELockSetEnabled;
+ RDEBUG( "RemoteLock is enabled lockChange", lockChange );
+ }
+ else
+ {
+ // Remote lock is disabled
+ lockChange = RMobilePhone::ELockSetDisabled;
+ RDEBUG( "RemoteLock is disabled lockChange", lockChange );
+ }
+ }
+ else
+ {
+ // Failed to get remote lock status
+ RDEBUG( "Failed to get remote lock status lockChange", lockChange );
+ }
+
+ delete remoteLockSettings;
+ remoteLockSettings = NULL;
+
+ #else // not defined RD_REMOTELOCK
+
+ lockChange = RMobilePhone::ELockSetDisabled;
+
+ #endif // RD_REMOTELOCK
+ }
+ else
+ {
+ lockChange = RMobilePhone::ELockSetEnabled;
+ RDEBUG( "aPeriod != 0 lockChange", lockChange );
+ }
+
+ iWait->SetRequestType(EMobilePhoneSetLockSetting);
+ RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+ RDEBUG( "SetLockSetting", 0 );
+ iPhone.SetLockSetting(iWait->iStatus,lockType,lockChange); // this eventually calls PassPhraseRequiredL
+ RDEBUG( "WaitForRequestL", 0 );
+ TInt status = KErrNone;
+ status = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL status", status );
+ #ifdef __WINS__
+ if (status == KErrNotSupported)
+ status = KErrNone;
+ #endif
+ switch(status)
+ {
+ case KErrNone:
+ #if defined(_DEBUG)
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() KErrNone"));
+ #endif
+ break;
+ case KErrGsmSSPasswordAttemptsViolation:
+ case KErrLocked:
+ #if defined(_DEBUG)
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() PasswordAttemptsViolation"));
+ #endif
+ ShowResultNoteL(KErrLocked, CAknNoteDialog::EErrorTone); // the old code didn't show messages
+ return ChangeAutoLockPeriodParamsL(oldPeriod, aOldPassword, aFlags, aCaption, aShowError); // ask again
+ case KErrGsm0707IncorrectPassword:
+ case KErrAccessDenied:
+ #if defined(_DEBUG)
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() IncorrectPassword"));
+ #endif
+ // code was entered erroneously
+ ShowResultNoteL(KErrAccessDenied, CAknNoteDialog::EErrorTone); // the old code didn't show messages
+ return ChangeAutoLockPeriodParamsL(oldPeriod, aOldPassword, aFlags, aCaption, aShowError); // ask again
+ case KErrAbort:
+ // User pressed "cancel" in the code query dialog.
+ return oldPeriod;
+ default:
+ #if defined(_DEBUG)
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() default"));
+ #endif
+ ShowResultNoteL(status, CAknNoteDialog::EErrorTone); // the old code didn't show messages
+ return ChangeAutoLockPeriodParamsL(oldPeriod, aOldPassword, aFlags, aCaption, aShowError); // ask again
+ }
+ #if defined(_DEBUG)
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() END"));
+ #endif
+ return aPeriod;
+ }
+/*****************************/
+// qtdone
EXPORT_C TInt CSecuritySettings::ChangePinRequestParamsL(TInt aEnable, RMobilePhone::TMobilePassword aOldPassword, TInt aFlags, TDes& aCaption, TInt aShowError)
{
- TInt ret = KErrNone;
- #if defined(_DEBUG)
- RDebug::Printf( "%s %s (%u) aFlags=%x aShowError=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aFlags, aShowError );
- #endif
+ RDEBUG( "aEnable", aEnable );
+ RDEBUG( "aFlags", aFlags );
/*****************************************************
* Series 60 Customer / ETel
* Series 60 ETel API
*****************************************************/
#if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL()"));
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestParamsL()"));
#endif
TInt simState=0;
TInt lEnable=aEnable;
@@ -2699,7 +2678,7 @@
if ( simRemoved )
{
ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
- return EFalse;;
+ return EFalse;
}
RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
@@ -2712,12 +2691,20 @@
//get lock info
iWait->SetRequestType(EMobilePhoneGetLockInfo);
iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+ RDEBUG( "WaitForRequestL", 0 );
TInt status = iWait->WaitForRequestL();
+ RDEBUG( "WaitForRequestL status", status );
+ #ifdef __WINS__
+ if (status == KErrNotSupported)
+ {
+ lockInfo.iSetting = RMobilePhone::ELockSetDisabled;
+ status = KErrNone;
+ }
+ #endif
User::LeaveIfError(status);
- TInt currentItem = 0;
#if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL() GetLockInfo"));
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestParamsL() GetLockInfo"));
#endif
if(aOldPassword.Length()==0) // only if input parameters are empty
@@ -2732,14 +2719,14 @@
if (lEnable == 0)
{
#if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL() currentItem: ELockSetDisabled"));
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestParamsL() currentItem: ELockSetDisabled"));
#endif
lockChangeSetting = RMobilePhone::ELockSetDisabled;
}
else
{
#if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL() currentItem: ELockSetEnabled"));
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestParamsL() currentItem: ELockSetEnabled"));
#endif
lockChangeSetting = RMobilePhone::ELockSetEnabled;
}
@@ -2750,33 +2737,23 @@
if ( tRet != KErrNone )
{
#if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL():\
+ RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestParamsL():\
FAILED to set the SECUI query Flag: %d"), tRet);
#endif
}
- /* TODO do I really need this? wouldn't it just generate RMobilePhone::EPin1Required and then continue ? */
- /*
- RMobilePhone::TMobilePhoneSecurityCode secCodeType = RMobilePhone::ESecurityCodePin1;
- RMobilePhone::TMobilePassword oldPassword;
- TBool queryAccepted = EFalse;
- CSecQueryUi *iSecQueryUi;
- iSecQueryUi = CSecQueryUi::NewL();
- queryAccepted = iSecQueryUi->SecQueryDialog( _L("PIN1-Curr"), oldPassword, 4, 8, secCodeType );
- RDebug::Printf( "%s %s (%u) oldPassword=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- RDebug::Print( oldPassword );
- RDebug::Printf( "%s %s (%u) queryAccepted=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 1 );
- delete iSecQueryUi;
- */
-
// Change the lock setting
iWait->SetRequestType(EMobilePhoneSetLockSetting);
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+ RDEBUG( "SetLockSetting", 0 );
iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting); // this will trigger Pin1RequiredL
+ RDEBUG( "WaitForRequestL", 0 );
status = iWait->WaitForRequestL();
- #if defined(_DEBUG)
- RDebug::Print( _L("(SECUI)CSecuritySettings::ChangePinRequestL(): RETURN CODE: %d"), status);
- #endif
+ RDEBUG( "WaitForRequestL status", status );
+ #ifdef __WINS__
+ if (status == KErrNotSupported)
+ status = KErrNone;
+ #endif
// Lower the flag
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsETelAPIOriginated);
@@ -2813,6 +2790,22 @@
return ChangePinRequestParamsL(aEnable, aOldPassword, aFlags, aCaption, aShowError);
}
}
- }
+return ETrue;
+}
+
+//
+// ----------------------------------------------------------
+// CSecuritySettings::AskSecCodeParamsL()
+// For asking security code e.g in settings
+// not used
+// ----------------------------------------------------------
+// qtdone
+EXPORT_C TBool CSecuritySettings::AskSecCodeParamsL(RMobilePhone::TMobilePassword &aOldPassword, TInt aFlags, TDes& aCaption, TInt aShowError)
+ {
+ RDEBUG( "aFlags", aFlags );
+ RDEBUG( "aShowError", aShowError );
+ RDEBUG( "This doesn't do anything", 0 );
+ return EFalse;
+ }
// End of file
--- a/securitydialogs/SecUi/Src/SecUiSystemLock.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSystemLock.cpp Mon May 03 13:20:16 2010 +0300
@@ -30,6 +30,8 @@
#include <e32property.h>
#include <ctsydomainpskeys.h>
#include <securityuisprivatepskeys.h>
+#include <devicelockaccessapi.h>
+
/*****************************************************
* Series 60 Customer / TSY
* Needs customer TSY implementation
@@ -154,84 +156,12 @@
RDebug::Print(_L("(SECUI)CSystemLock::SetLockedL()"));
#endif
// close fast-swap window
- CEikonEnv::Static()->DismissTaskList();
-
-#ifdef __WINS__
- // can not verify security code in emulator ---> lock system
-#ifdef RD_REMOTELOCK
- iProperty.Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EManualLocked);
-#else// !RD_REMOTELOCK
- iProperty.Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EAutolockOn);
-#endif//RD_REMOTELOCK
-#else //__WINS__
-
- if(IsActive())
- return;
-
-
- RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneDevice;
- RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
- RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
- RMobilePhone::TMobilePhoneLockSetting lockChange(RMobilePhone::ELockSetDisabled);
- CWait* wait = CWait::NewL();
- CleanupStack::PushL( wait );
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSystemLock::SetLockedL() GetLockInfo"));
- #endif
- iPhone.GetLockInfo(wait->iStatus, lockType, lockInfoPkg);
- if (wait->WaitForRequestL() == KErrNone)
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSystemLock::SetLockedL() KErrNone"));
- #endif
- if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSystemLock::SetLockedL() ELockSetDisabled"));
- #endif
- // ask code
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSystemLock::SetLockedL() SetLockSetting"));
- #endif
- //iCustomPhone.CheckSecurityCode(iStatus, RMmCustomAPI::ESecurityCodePassPhrase);
- lockChange = RMobilePhone::ELockSetEnabled;
- RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSystemLockOriginated);
- iPhone.SetLockSetting(iStatus, lockType, lockChange);
- SetActive();
- }
- else
- {
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSystemLock::SetLockedL() Lock System"));
- #endif
- // lock system
-#ifdef RD_REMOTELOCK
- iProperty.Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EManualLocked);
-#else// !RD_REMOTELOCK
- iProperty.Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EAutolockOn);
-#endif //RD_REMOTELOCK
-
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSystemLock::SetLockedL() Lock System OK"));
- #endif
- }
- }
- else
- {
- // ask code
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSystemLock::SetLockedL() ask code (SLS) "));
- #endif
- lockChange = RMobilePhone::ELockSetEnabled;
- RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSystemLockOriginated);
- iPhone.SetLockSetting(iStatus, lockType, lockChange);
- SetActive();
- }
- CleanupStack::PopAndDestroy();
- #if defined(_DEBUG)
- RDebug::Print(_L("(SECUI)CSystemLock::SetLockedL() END"));
- #endif // DEBUG
- #endif // WINS
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ CDevicelockAccessApi* iDevicelockAccess = CDevicelockAccessApi::NewL( );
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
+ iDevicelockAccess->OfferDevicelock();
+ // EnableDevicelock( EDevicelockManual );
+ RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
}
//
// ----------------------------------------------------------
--- a/securitydialogs/SecUi/group/SecUi.mmp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/SecUi/group/SecUi.mmp Mon May 03 13:20:16 2010 +0300
@@ -130,6 +130,8 @@
LIBRARY HbCore.lib
LIBRARY HbWidgets.lib
+LIBRARY lockclient.lib
+LIBRARY phoneclient.lib
SMPSAFE
--- a/securitydialogs/SecUi/rom/GSSimSecPlugin.iby Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/SecUi/rom/GSSimSecPlugin.iby Mon May 03 13:20:16 2010 +0300
@@ -19,8 +19,8 @@
#define GSSIMSECPLUGIN_IBY
#ifdef RD_GS_RENOVATION
-
- ECOM_PLUGIN( GSSimSecPlugin.dll, 10207438.rsc )
+ // Now replaced by a QT plugin
+ // ECOM_PLUGIN( GSSimSecPlugin.dll, 10207438.rsc )
#endif // RD_GS_RENOVATION
--- a/securitydialogs/SecUi/rom/GSSimSecPluginResources.iby Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/SecUi/rom/GSSimSecPluginResources.iby Mon May 03 13:20:16 2010 +0300
@@ -20,7 +20,8 @@
#ifdef RD_GS_RENOVATION
- data=DATAZ_\RESOURCE_FILES_DIR\GSSimSecPluginRsc.rsc RESOURCE_FILES_DIR\GSSimSecPluginRsc.rsc
+ // Now replaced by a QT plugin
+ // data=DATAZ_\RESOURCE_FILES_DIR\GSSimSecPluginRsc.rsc RESOURCE_FILES_DIR\GSSimSecPluginRsc.rsc
#endif // RD_GS_RENOVATION
--- a/securitydialogs/lockclient/src/lockaccessextension.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/lockclient/src/lockaccessextension.cpp Mon May 03 13:20:16 2010 +0300
@@ -26,6 +26,8 @@
#include <xqserviceutil.h>
#include <xqrequestinfo.h>
#include <QDebug>
+#include <xqaiwrequest.h>
+#include <xqappmgr.h>
// Constants
const TInt KTimesToConnectServer( 2);
@@ -146,30 +148,70 @@
if ( ret == KErrNone )
{
// assign parameters to IPC argument
- TIpcArgs args( aParam1, aParam2);
+ // TIpcArgs args( aParam1, aParam2);
// this is the old methd. Now we use QtHighway
// ret = SendReceive( aMessage, args );
- qDebug() << "============= RLockAccessExtension::SendMessage 123.1";
+ qDebug() << "============= RLockAccessExtension::SendMessage 123.2";
qDebug() << aMessage;
qDebug() << aParam1;
qDebug() << aParam2;
- XQServiceRequest* mServiceRequest;
- qDebug() << "============= RLockAccessExtension::SendMessage 2";
- mServiceRequest = new XQServiceRequest("com.nokia.services.AutolockSrv.AutolockSrv","dial(QString,bool)");// use , false to make async
- qDebug() << "============= RLockAccessExtension::SendMessage 2.1";
- qDebug() << mServiceRequest;
- QString label = "";
- label += QString("%1").arg(aMessage);
- *mServiceRequest << QString(label);
- qDebug() << "============= RLockAccessExtension::SendMessage 2.2";
- bool isSync = false;
- *mServiceRequest << isSync;
- qDebug() << "============= RLockAccessExtension::SendMessage 3";
- int returnvalue;
- bool ret = mServiceRequest->send(returnvalue);
- qDebug() << "============= RLockAccessExtension::SendMessage 4";
- qDebug() << ret;
-
+
+ if(1==0)
+ { // old method. Not used any more
+ XQServiceRequest* mServiceRequest;
+ qDebug() << "============= RLockAccessExtension::SendMessage 2";
+ mServiceRequest = new XQServiceRequest("com.nokia.services.AutolockSrv.AutolockSrv","service(QString,QString,QString)");// use , false to make async
+ qDebug() << "============= RLockAccessExtension::SendMessage 2.1";
+ qDebug() << mServiceRequest;
+ QString label;
+ label = "" + QString("%1").arg(aMessage);
+ *mServiceRequest << QString(label);
+ qDebug() << "============= RLockAccessExtension::SendMessage aParam1";
+ label = "" + QString("%1").arg(aParam1);
+ *mServiceRequest << QString(label);
+ qDebug() << "============= RLockAccessExtension::SendMessage aParam2";
+ label = "" + QString("%1").arg(aParam2);
+ *mServiceRequest << QString(label);
+ qDebug() << "============= RLockAccessExtension::SendMessage 3";
+ int returnvalue;
+ bool ret = mServiceRequest->send(returnvalue);
+ qDebug() << "============= RLockAccessExtension::SendMessage ret=" << ret;
+ qDebug() << "============= RLockAccessExtension::SendMessage returnvalue=" << returnvalue;
+ }
+ else
+ {
+ // TODO this always seems to fail because request is NULL
+ XQApplicationManager mAppManager;
+ XQAiwRequest *request;
+ request = mAppManager.create("com.nokia.services.AutolockSrv", "AutolockSrv", "service(QString,QString,QString)", false);
+ // also works with create("AutolockSrv", "service(QString,QString,QString)", false);
+ if(request)
+ qDebug() << "============= RLockAccessExtension::SendMessage got request";
+ else
+ {
+ qDebug() << "============= RLockAccessExtension::SendMessage not got request";
+ }
+
+ qDebug() << "============= RLockAccessExtension::SendMessage 121.3";
+ QList<QVariant> args;
+ QString label ;
+ label = "" + QString("%1").arg(aMessage);
+ args << QVariant(QString(label));
+ qDebug() << "============= RLockAccessExtension::SendMessage 123.4";
+ label = "" + QString("%1").arg(aParam1);
+ args << QVariant(QString(label));
+ label = "" + QString("%1").arg(aParam2);
+ args << QVariant(QString(label));
+ qDebug() << "============= RLockAccessExtension::SendMessage 123.4";
+ request->setArguments(args);
+ qDebug() << "============= RLockAccessExtension::SendMessage 123.5";
+ bool ret = request->send();
+ qDebug() << "============= RLockAccessExtension::SendMessage ret=" << ret;
+ int error = request->lastError();
+ qDebug() << "============= RLockAccessExtension::SendMessage error=" << error;
+
+ delete request;
+ }
}
return ret;
}
--- a/securitydialogs/secuinotifications/secuinotificationdialogplugin/inc/secuinotificationcontentwidget.h Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/secuinotifications/secuinotificationdialogplugin/inc/secuinotificationcontentwidget.h Mon May 03 13:20:16 2010 +0300
@@ -37,6 +37,7 @@
signals:
void memorySelectionChanged(const QString &text);
void codeTopChanged(const QString &text);
+ void codeBottomChanged(const QString &text);
void but1Changed();
void but2Changed();
void but3Changed();
@@ -47,7 +48,13 @@
private: // data
public:
HbLineEdit *codeTop;
+ HbLineEdit *codeBottom;
int queryType;
+ int lMinLength;
+ int lMaxLength;
+ int queryDual;
+ int lEmergencySupported;
+ int isEmergency;
};
#endif // SECUINOTIFICATIONCONTENTWIDGET_H
--- a/securitydialogs/secuinotifications/secuinotificationdialogplugin/inc/secuinotificationdialog.h Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/secuinotifications/secuinotificationdialogplugin/inc/secuinotificationdialog.h Mon May 03 13:20:16 2010 +0300
@@ -22,7 +22,7 @@
#include <hbdevicedialoginterface.h> // HbDeviceDialogInterface
#include <hbwidget.h> // HbWidget
#include <hblineedit.h> // HbWidget
-
+#include <hblabel.h>
/**
* SW Install notification widget class.
@@ -51,13 +51,14 @@
private: // new functions
bool constructDialog(const QVariantMap ¶meters);
- void sendResult(bool accepted);
+ void sendResult(int accepted);
private slots:
void handleAccepted();
void handleCancelled();
void handleMemorySelectionChanged(const QString &text);
void handleCodeTopChanged(const QString &text);
+ void handleCodeBottomChanged(const QString &text);
void saveFocusWidget(QWidget*,QWidget*);
void handlebut1Changed();
void handlebut2Changed();
@@ -70,9 +71,16 @@
bool mShowEventReceived;
QVariantMap mResultMap;
HbLineEdit *codeTop;
+ HbLineEdit *codeBottom;
HbAction *okAction;
HbAction *cancelAction;
+ HbLabel *title;
int queryType;
+ int lMinLength;
+ int lMaxLength;
+ int queryDual;
+ int lEmergencySupported;
+ int isEmergency;
};
#endif // SECUINOTIFICATIONDIALOG_H
--- a/securitydialogs/secuinotifications/secuinotificationdialogplugin/inc/secuinotificationdialogpluginkeys.h Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/secuinotifications/secuinotificationdialogplugin/inc/secuinotificationdialogpluginkeys.h Mon May 03 13:20:16 2010 +0300
@@ -28,17 +28,23 @@
const QString KDialogTitle = "title";
const QString KApplicationName = "application";
const QString KQueryType = "type";
+const QString KQueryMinLength = "MinLength";
+const QString KQueryMaxLength = "MaxLength";
const QString KApplicationIcon = "icon";
const QString KSupplier = "supplier";
const QString KMemorySelection = "memory";
const QString KCertificates = "certificates";
const QString KDrmDetails = "drmDetails";
const QString KCodeTop = "codeTop";
+const QString KCodeBottom = "codeBottom"; // not really needed because is never sent back
+const QString KEmergency = "emergency";
+const QString KInvalidNewLockCode = "invalidNewLockCode";
// Keys for the return values passed back to calling application
-const QString KResultAccepted = "accepted"; // bool
+const QString KResultAccepted = "accepted"; // int
const QString KSelectedMemoryIndex = "memory"; // int
const QString KCodeTopIndex = "codeTop"; // int
+const QString KCodeBottomIndex = "codeBottom"; // int // not really needed because is never sent back
// Error values
const int KNoError = 0;
--- a/securitydialogs/secuinotifications/secuinotificationdialogplugin/secuinotificationdialogplugin.pro Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/secuinotifications/secuinotificationdialogplugin/secuinotificationdialogplugin.pro Mon May 03 13:20:16 2010 +0300
@@ -38,7 +38,8 @@
symbian: {
TARGET.EPOCALLOWDLLDATA = 1
- TARGET.CAPABILITY = CAP_GENERAL_DLL
+ # NetworkControl NetworkServices needed for emergency calls
+ TARGET.CAPABILITY = CAP_GENERAL_DLL NetworkControl NetworkServices
TARGET.UID3 = 0x2102432C # TODO: allocate UID
pluginstub.sources = secuinotificationdialogplugin.dll
@@ -51,6 +52,7 @@
"rom/secuinotificationdialogplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(secuinotificationdialogplugin.iby)"
LIBS += -lxqservice
+LIBS += -lphoneclient
tests {
test.depends = sub-src
--- a/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationcontentwidget.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationcontentwidget.cpp Mon May 03 13:20:16 2010 +0300
@@ -19,13 +19,36 @@
#include "secuinotificationcontentwidget.h"
#include "secuinotificationdialogpluginkeys.h"
#include <QGraphicsLinearLayout>
+#include <QToolButton>
#include <hblabel.h>
#include <hbpushbutton.h>
+#include <hbiconitem.h>
#include <hbcombobox.h>
#include <hblineedit.h>
#include <hbinputeditorinterface.h>
#include <QDebug>
+#include <HbEmailAddressFilter>
+
+#define ESecUiCancelSupported 0x1000000
+#define ESecUiCancelNotSupported 0x0000000
+
+#define ESecUiEmergencySupported 0x2000000
+#define ESecUiEmergencyNotSupported 0x0000000
+
+#define ESecUiAlphaSupported 0x4000000
+#define ESecUiAlphaNotSupported 0x0000000
+
+#define ESecUiMaskFlags 0xFF000000
+#define ESecUiMaskType 0x00FFFFFF
+
+#define ESecUiTypeDeviceLock 0x00100000
+#define ESecUiTypeKeyguard 0x00200000
+#define ESecUiTypeClock 0x00300000
+#define ESecUiTypeScreensaver 0x00400000
+
+#define ESecUiTypeMaskLock 0x00F00000
+
// ----------------------------------------------------------------------------
// SecUiNotificationContentWidget::SecUiNotificationContentWidget()
@@ -51,50 +74,149 @@
//
void SecUiNotificationContentWidget::constructFromParameters(const QVariantMap ¶meters)
{
- qDebug() << "SecUiNotificationContentWidget::constructFromParameters";
+ qDebug() << "SecUiNotificationContentWidget::constructFromParameters 1";
qDebug() << parameters;
QGraphicsLinearLayout *mainLayout = new QGraphicsLinearLayout(Qt::Vertical);
- // TODO: add another layout for icon + text_block, and yet other for text_block
-
- // KApplicationIcon
- if (1==0 && parameters.contains(KApplicationIcon)) {
- qDebug() << "SecUiNotificationContentWidget::KApplicationIcon";
- QString iconName = parameters.value(KApplicationIcon).toString();
- HbLabel *iconLabel = new HbLabel;
- iconLabel->setIcon(HbIcon(iconName));
- mainLayout->addItem(iconLabel);
- }
-
- // KApplicationName + KApplicationVersion
- if (1==0 && parameters.contains(KApplicationName)) {
- qDebug() << "SecUiNotificationContentWidget::KApplicationName";
- QString appName = "";
- QString nameStr = parameters.value(KApplicationName).toString();
- appName = nameStr;
- HbLabel *appLabel = new HbLabel(appName);
- mainLayout->addItem(appLabel);
- }
+ lMinLength = 4; // might be replaced later
+ lMaxLength = 8; // might be replaced later
+ queryDual=0;
+ isEmergency=0;
// KApplicationSize
if (parameters.contains(KQueryType)) {
qDebug() << "SecUiNotificationContentWidget::KQueryType";
queryType = parameters.value(KQueryType).toUInt();
qDebug() << queryType;
+ if( (queryType & ESecUiTypeMaskLock) )
+ {
+ qDebug() << "SecUiNotificationContentWidget::KQueryType=ESecUiTypeLock";
+ // showing "Lock" icon. All other params are irrelevant. codeTop is not even created
+
+
+ HbLabel *iconLabel = new HbLabel("Locked");
+ HbIcon *icon = new HbIcon("qtg_large_device_lock");
+ // iconLabel->setAspectRatioMode(Qt::IgnoreAspectRatio);
+ // iconLabel->setGeometry(QRectF(QPointF(10,10),QSizeF(300,300)));
+ iconLabel->setIcon(*icon);
+ if( (queryType & ESecUiTypeMaskLock)==ESecUiTypeDeviceLock )
+ { // really big icon for the devicelock
+ iconLabel->setPreferredHeight(500);
+ iconLabel->setPreferredWidth(500);
+ }
+ else if( (queryType & ESecUiTypeMaskLock)==ESecUiTypeKeyguard )
+ { // smaller icon for the keyguard
+ iconLabel->setPreferredHeight(100);
+ iconLabel->setPreferredWidth(100);
+ }
+
+ // icon->setWidth(300);
+ // icon->setHeight(350);
+ // icon->setGeometry(QRectF(QPointF(10,10),QSizeF(500,300)));
+ // icon->setSize(QSizeF(300,300));
+
+ mainLayout->addItem(iconLabel);
+ mainLayout->setAlignment(iconLabel, Qt::AlignCenter );
+ // mainLayout->setGeometry(QRectF(QPointF(10,10),QSizeF(300,300)));
+
+ /*
+ QToolButton* mLabelIcon = new QToolButton;
+ mLabelIcon->setIcon(QIcon(":/AutolockSrv_hbicon/qtg_large_device_lock.svg"));
+ mLabelIcon->setIconSize(QSize(300,300));
+ HbLabel *iconLabel = new HbLabel("Locked");
+ iconLabel->setIcon(*mLabelIcon);
+ mainLayout->addItem(iconLabel);
+ */
+
+ // mainLayout->setContentsMargins(10,10,300,500); // this makes the dialog really big
+ setLayout(mainLayout); // same as at the end
+ return;
+ }
+ // not ESecUiTypeMaskLock
+ lEmergencySupported = ESecUiEmergencyNotSupported;
+ if((queryType & ESecUiEmergencySupported)==ESecUiEmergencySupported)
+ {
+ lEmergencySupported = ESecUiEmergencySupported;
+ }
+ qDebug() << "SecUiNotificationContentWidget::lEmergencySupported =" << lEmergencySupported;
}
+ if (parameters.contains(KQueryMinLength)) {
+ qDebug() << "SecUiNotificationContentWidget::KQueryMinLength";
+ lMinLength = parameters.value(KQueryMinLength).toUInt();
+ qDebug() << lMinLength;
+ }
+ if (parameters.contains(KQueryMaxLength)) {
+ qDebug() << "SecUiNotificationContentWidget::KQueryMaxLength";
+ lMaxLength = parameters.value(KQueryMaxLength).toUInt();
+ qDebug() << lMaxLength;
+ }
+
+ if (parameters.contains(KEmergency)) {
+ qDebug() << "SecUiNotificationContentWidget::KEmergency";
+ QString emergencyText = parameters.value(KEmergency).toString();
+ qDebug() << emergencyText;
+ if(!emergencyText.compare("emergencyYes"))
+ {
+ qDebug() << "SecUiNotificationContentWidget::KEmergency emergencyYes";
+ isEmergency = 1;
+ }
+ if(!emergencyText.compare("emergencyNo"))
+ {
+ qDebug() << "SecUiNotificationContentWidget::KEmergency emergencyNo";
+ isEmergency = 0;
+ }
+ }
+
+
// KCodeTop
if (parameters.contains(KCodeTop)) {
qDebug() << "SecUiNotificationContentWidget::KCodeTop 1";
codeTop = new HbLineEdit(""); // no default value
+ qDebug() << "SecUiNotificationContentWidget::KCodeTop lMaxLength=";
+ qDebug() << lMaxLength;
+ if(lMaxLength>2)
+ codeTop->setMaxLength(lMaxLength);
// HbLineEdit *codeTop2 = new HbLineEdit;
qDebug() << "SecUiNotificationContentWidget::KCodeTop 2";
- HbEditorInterface editorInterface(codeTop);
- editorInterface.setUpAsPhoneNumberEditor();
+ qDebug() << "SecUiNotificationContentWidget::KCodeTop queryType=";
+ qDebug() << queryType;
+ codeTop->setInputMethodHints(Qt::ImhDigitsOnly); // default
+ if (queryType & ESecUiAlphaSupported)
+ {
+ qDebug() << "SecUiNotificationContentWidget::KCodeTop setUpAsLatinAlphabetOnlyEditor";
+ codeTop->setInputMethodHints(Qt::ImhNone);
+ // what about this: editorInterface.setEditorClass(HbInputEditorClassPassword);
+ }
qDebug() << "SecUiNotificationContentWidget::KCodeTop 3";
connect(codeTop, SIGNAL(textChanged(const QString &)), this, SIGNAL(codeTopChanged(const QString &)));
+ connect(codeTop, SIGNAL(contentsChanged(const QString &)), this, SIGNAL(codeTopChanged(const QString &)));
mainLayout->addItem(codeTop);
- // mainLayout->addItem(codeTop2);
+ if (parameters.contains(KCodeBottom))
+ {
+ queryDual=1;
+ QString titleText = parameters.value(KDialogTitle).toString();
+ if(titleText.indexOf('|')>0)
+ { // if no separator, don't create label
+ QString titleBottomStr = titleText.right(titleText.length()-titleText.indexOf('|')-1);
+ HbLabel *titleBottom = new HbLabel(titleBottomStr);
+ mainLayout->addItem(titleBottom);
+ }
+
+ codeBottom = new HbLineEdit(""); // no default value
+ if(lMaxLength>2)
+ codeBottom->setMaxLength(lMaxLength);
+ codeBottom->setInputMethodHints(Qt::ImhDigitsOnly); // default
+ if (queryType & ESecUiAlphaSupported)
+ {
+ qDebug() << "SecUiNotificationContentWidget::KCodeBottom setUpAsLatinAlphabetOnlyEditor";
+ codeTop->setInputMethodHints(Qt::ImhNone);
+ }
+ qDebug() << "SecUiNotificationContentWidget::KCodeBottom 3";
+ connect(codeBottom, SIGNAL(textChanged(const QString &)), this, SIGNAL(codeBottomChanged(const QString &)));
+ connect(codeBottom, SIGNAL(contentsChanged(const QString &)), this, SIGNAL(codeBottomChanged(const QString &)));
+ mainLayout->addItem(codeBottom);
+ }
QGraphicsLinearLayout *mainLayoutButtons = new QGraphicsLinearLayout(Qt::Horizontal);
HbPushButton *but1 = new HbPushButton("1234");
@@ -113,9 +235,6 @@
}
- // KCertificates
- // KDrmDetails
-
setLayout(mainLayout);
}
--- a/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationdialog.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationdialog.cpp Mon May 03 13:20:16 2010 +0300
@@ -22,6 +22,11 @@
#include <hblabel.h>
#include <hbaction.h>
#include <QDebug>
+#include <e32debug.h>
+#include <CPhCltEmergencyCall.h>
+#include <SCPServerInterface.h> // for TARM error codes while validating new lock code
+#include <QString>
+#include <QDialogButtonBox>
#define ESecUiCancelSupported 0x1000000
#define ESecUiCancelNotSupported 0x0000000
@@ -29,6 +34,19 @@
#define ESecUiEmergencySupported 0x2000000
#define ESecUiEmergencyNotSupported 0x0000000
+#define ESecUiAlphaSupported 0x4000000
+#define ESecUiAlphaNotSupported 0x0000000
+
+#define ESecUiMaskFlags 0xFF000000
+#define ESecUiMaskType 0x00FFFFFF
+
+#define ESecUiTypeDeviceLock 0x00100000
+#define ESecUiTypeKeyguard 0x00200000
+#define ESecUiTypeClock 0x00300000
+#define ESecUiTypeScreensaver 0x00400000
+
+#define ESecUiTypeMaskLock 0x00F00000
+
// ----------------------------------------------------------------------------
// SecUiNotificationDialog::SecUiNotificationDialog()
// ----------------------------------------------------------------------------
@@ -131,32 +149,198 @@
// Title
if (parameters.contains(KDialogTitle)) {
QString titleText = parameters.value(KDialogTitle).toString();
- HbLabel *title = new HbLabel(titleText);
+ QString titleAttempts = "";
+ if(titleText.indexOf('|')>0)
+ { // if separator, take only first part
+ titleText = titleText.left(titleText.indexOf('|'));
+ }
+ if(titleText.indexOf('#')>0)
+ { // if separator, take only first part
+ titleAttempts = titleText.right(titleText.length()-titleText.indexOf('#')-1);
+ qDebug() << "SecUiNotificationDialog::titleAttempts=" << titleAttempts;
+ int nAttempts = titleAttempts.toInt();
+ qDebug() << "SecUiNotificationDialog::nAttempts=" << nAttempts;
+ titleText = titleText.left(titleText.indexOf('#'));
+ if(nAttempts>0)
+ titleText = titleText + " attempts=" + QString::number(nAttempts);
+ }
+ title = new HbLabel(titleText);
setHeadingWidget(title);
}
+ if (parameters.contains(KEmergency)) {
+ qDebug() << "SecUiNotificationDialog::KEmergency";
+ QString emergencyText = parameters.value(KEmergency).toString();
+ qDebug() << emergencyText;
+ if(!emergencyText.compare("emergencyYes"))
+ {
+ qDebug() << "SecUiNotificationDialog::KEmergency emergencyYes";
+ isEmergency = 1;
+ okAction->setEnabled(true);
+ okAction->setText("Call");
+ return true;
+ }
+ if(!emergencyText.compare("emergencyNo"))
+ {
+ qDebug() << "SecUiNotificationDialog::KEmergency emergencyNo";
+ isEmergency = 0;
+ okAction->setEnabled(false); // 112 -> 1122 (=password) . This is handled by < lMinLength
+ okAction->setText("Ok");
+ return true;
+ }
+ }
+
+ if (parameters.contains(KInvalidNewLockCode)) {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode";
+ QString invalidText = parameters.value(KInvalidNewLockCode).toString();
+ qDebug() << invalidText;
+
+ title->setPlainText("Lock Code"); // TODO take from the original one
+ QString invalidStr = invalidText.right(invalidText.length()-invalidText.indexOf('#')-1);
+ int invalidNumber = invalidStr.toInt();
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode invalidNumber" << invalidNumber;
+ if(invalidNumber<0)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode ???";
+ // nothing to do
+ }
+/*
+ if(invalidNumber==EDeviceLockAutolockperiod)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockAutolockperiod";
+ title->setPlainText("EDeviceLockAutolockperiod");
+ }
+ if(invalidNumber==EDeviceLockMaxAutolockPeriod)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockMaxAutolockPeriod";
+ title->setPlainText("EDeviceLockMaxAutolockPeriod");
+ }
+ if(invalidNumber==EDeviceLockMinlength)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockMinlength";
+ title->setPlainText("EDeviceLockMinlength");
+ }
+ if(invalidNumber==EDeviceLockMaxlength)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockMaxlength";
+ title->setPlainText("EDeviceLockMaxlength");
+ }
+ if(invalidNumber==EDeviceLockRequireUpperAndLower)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockRequireUpperAndLower";
+ title->setPlainText("EDeviceLockRequireUpperAndLower");
+ }
+ if(invalidNumber==EDeviceLockRequireCharsAndNumbers)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockRequireCharsAndNumbers";
+ title->setPlainText("EDeviceLockMaxlength");
+ }
+ if(invalidNumber==EDeviceLockAllowedMaxRepeatedChars)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockAllowedMaxRepeatedChars";
+ title->setPlainText("EDeviceLockAllowedMaxRepeatedChars");
+ }
+ if(invalidNumber==EDeviceLockHistoryBuffer)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockHistoryBuffer";
+ title->setPlainText("EDeviceLockHistoryBuffer");
+ }
+ if(invalidNumber==EDeviceLockPasscodeExpiration)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockPasscodeExpiration";
+ title->setPlainText("EDeviceLockPasscodeExpiration");
+ }
+ if(invalidNumber==EDeviceLockMinChangeTolerance)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockMinChangeTolerance";
+ title->setPlainText("EDeviceLockMinChangeTolerance");
+ }
+ if(invalidNumber==EDeviceLockMinChangeInterval)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockMinChangeInterval";
+ title->setPlainText("EDeviceLockMinChangeInterval");
+ }
+ if(invalidNumber==EDeviceLockDisallowSpecificStrings)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockDisallowSpecificStrings";
+ title->setPlainText("EDeviceLockDisallowSpecificStrings");
+ }
+ if(invalidNumber==EDeviceLockAllowedMaxAtempts)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockAllowedMaxAtempts";
+ title->setPlainText("EDeviceLockAllowedMaxAtempts");
+ }
+ if(invalidNumber==EDeviceLockConsecutiveNumbers)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockConsecutiveNumbers";
+ title->setPlainText("EDeviceLockConsecutiveNumbers");
+ }
+ if(invalidNumber==EDeviceLockMinSpecialCharacters)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockMinSpecialCharacters";
+ title->setPlainText("EDeviceLockMinSpecialCharacters");
+ }
+ if(invalidNumber==EDeviceLockSingleCharRepeatNotAllowed)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDeviceLockSingleCharRepeatNotAllowed";
+ title->setPlainText("EDeviceLockSingleCharRepeatNotAllowed");
+ }
+ if(invalidNumber==EDevicelockConsecutiveCharsNotAllowed)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDevicelockConsecutiveCharsNotAllowed";
+ title->setPlainText("EDevicelockConsecutiveCharsNotAllowed");
+ }
+ if(invalidNumber>=EDevicelockTotalPolicies)
+ {
+ qDebug() << "SecUiNotificationDialog::KInvalidNewLockCode EDevicelockTotalPolicies";
+ title->setPlainText("EDevicelockTotalPolicies");
+ }
+ */
+ // always keep OK valid.
+ return true;
+ }
+
// Content
SecUiNotificationContentWidget *content = new SecUiNotificationContentWidget();
content->constructFromParameters(parameters);
setContentWidget(content);
+
+ queryType = content->queryType;
+ queryDual = content->queryDual;
+ isEmergency = content->isEmergency;
+ codeTop = content->codeTop;
+ codeBottom = content->codeBottom;
+ lMinLength = content->lMinLength;
+ lMaxLength = content->lMaxLength;
+ lEmergencySupported = content->lEmergencySupported;
+
connect(content, SIGNAL(codeTopChanged(const QString &)), this, SLOT(handleCodeTopChanged(const QString &)));
+ connect(content, SIGNAL(codeBottomChanged(const QString &)), this, SLOT(handleCodeBottomChanged(const QString &)));
connect(content, SIGNAL(but1Changed()), this, SLOT(handlebut1Changed()));
connect(content, SIGNAL(but2Changed()), this, SLOT(handlebut2Changed()));
connect(content, SIGNAL(but3Changed()), this, SLOT(handlebut3Changed()));
- codeTop = content->codeTop;
- queryType = content->queryType;
qDebug() << "SecUiNotificationDialog::queryType=";
qDebug() << queryType;
// Buttons
- okAction = new HbAction(tr("Ok")); // qtTrId("txt_common_button_ok")
+ if( (queryType & ESecUiTypeMaskLock))
+ {
+ // no need to create OK or Cancel
+ return true;
+ }
+
+ okAction = new HbAction(tr("Ok"));
+ okAction->setEnabled(false); // initially the OK is disabled because codeTop is empty
+ // setAction(okAction, QDialogButtonBox::AcceptRole); // it's supposed to use this, when deprecated
setPrimaryAction(okAction);
connect(okAction, SIGNAL(triggered()), this, SLOT(handleAccepted()));
+
cancelAction = new HbAction(tr("Cancel")); // qtTrId("txt_common_button_cancel")
connect(cancelAction, SIGNAL(triggered()), this, SLOT(handleCancelled()));
+ // setAction(cancelAction, QDialogButtonBox::RejectRole); // it's supposed to use this, when deprecated
setSecondaryAction(cancelAction);
qDebug() << "SecUiNotificationDialog check Cancel";
- if (queryType & ESecUiCancelSupported)
+ if ((queryType & ESecUiCancelSupported)==ESecUiCancelSupported)
{
// nothing to do. Cancel is enabled by default
}
@@ -173,7 +357,7 @@
// SecUiNotificationDialog::sendResult()
// ----------------------------------------------------------------------------
//
-void SecUiNotificationDialog::sendResult(bool accepted)
+void SecUiNotificationDialog::sendResult(int accepted)
{
qDebug() << "SecUiNotificationDialog::sendResult 1.2";
QVariant acceptedValue(accepted);
@@ -193,15 +377,19 @@
{
qDebug() << "SecUiNotificationDialog::handleAccepted";
// okAction
- QString codeTopText = codeTop->text();
- qDebug() << "codeTopText";
- qDebug() << codeTopText;
- if(!codeTopText.compare("1234111"))
- {
- qDebug() << "codeTopText is 1234111. Not exit";
- return;
- }
- sendResult(true);
+ QString codeTopText;
+
+ if( (queryType & ESecUiTypeMaskLock))
+ {
+ codeTopText = "Unlock-Request";
+ }
+ else
+ {
+ codeTopText = codeTop->text();
+ }
+ // TODO check last time for codeBottom
+ qDebug() << "codeTopText=" << codeTopText;
+ sendResult(KErrNone);
}
// ----------------------------------------------------------------------------
@@ -211,7 +399,7 @@
void SecUiNotificationDialog::handleCancelled()
{
qDebug() << "SecUiNotificationDialog::handleCancelled";
- sendResult(false);
+ sendResult(KErrCancel);
}
// ----------------------------------------------------------------------------
@@ -235,11 +423,73 @@
void SecUiNotificationDialog::handleCodeTopChanged(const QString &text)
{
qDebug() << "SecUiNotificationDialog::handleCodeTopChanged";
- qDebug() << "SecUiNotificationDialog::handleCodeTopChanged" << text ;
+ qDebug() << "SecUiNotificationDialog::handleCodeTopChanged=" << text ;
+ if(queryDual)
+ {
+ codeBottom->setText(""); // any change resets the verification.
+ }
+ if( queryType == 0x1000004 )
+ { // ChangeSecCodeParamsL change RMobilePhone::ESecurityCodePhonePassword
+ QVariant codeTop(text);
+ mResultMap.insert(KCodeTopIndex, codeTop);
+ sendResult(KErrCompletion); // send the current password back to the client for further TARM validation
+ }
+ if(text.length() < lMinLength )
+ {
+ qDebug() << "SecUiNotificationDialog::handleCodeTopChanged too short:" << text ;
+ okAction->setEnabled(false);
+
+ if( lEmergencySupported && text.length() > 2 ) // emergency numbers need at least 3 digits
+ { // check whether it's a emergency number
+ QVariant codeTop(text);
+ mResultMap.insert(KCodeTopIndex, codeTop);
+ sendResult(KErrAbort); // send the current password back to the client. Perhaps it's an emergency number and decides to Ok->Call
+ }
+ }
+ else if (text.length() >= lMinLength)
+ {
+ // TODO might use a flag to avoid re-setting
+ qDebug() << "SecUiNotificationDialog::handleCodeTopChanged long enough:" << text ;
+ okAction->setText("Ok");
+ if(queryDual==0) // only if Bottom is not used
+ okAction->setEnabled(true);
+ }
QVariant codeTop(text);
mResultMap.insert(KCodeTopIndex, codeTop);
}
// ----------------------------------------------------------------------------
+// SecUiNotificationDialog::handleCodeBottomChanged()
+// ----------------------------------------------------------------------------
+//
+void SecUiNotificationDialog::handleCodeBottomChanged(const QString &text)
+ {
+ qDebug() << "SecUiNotificationDialog::handleCodeBottomChanged";
+ qDebug() << "SecUiNotificationDialog::handleCodeBottomChanged" << text ;
+ qDebug() << "SecUiNotificationDialog::handleCodeBottomChanged. codeTop=" << codeTop->text() ;
+ // TODO compare
+ if(text.length() < lMinLength )
+ {
+ qDebug() << "SecUiNotificationDialog::handleCodeBottomChanged too short:" << text ;
+ okAction->setEnabled(false);
+ }
+ else
+ {
+ // TODO might use a flag to avoid re-setting
+ qDebug() << "SecUiNotificationDialog::handleCodeBottomChanged long enough:" << text ;
+ if(codeTop->text()==text)
+ {
+ qDebug() << "SecUiNotificationDialog::handleCodeBottomChanged codes match:" << text ;
+ okAction->setEnabled(true);
+ }
+ else
+ {
+ qDebug() << "SecUiNotificationDialog::handleCodeBottomChanged codes not match:" << text ;
+ okAction->setEnabled(false);
+ }
+ }
+ // verification is not sent
+ }
+// ----------------------------------------------------------------------------
// SecUiNotificationDialog::handlebut1Changed()
// ----------------------------------------------------------------------------
//
--- a/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationdialogplugin.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationdialogplugin.cpp Mon May 03 13:20:16 2010 +0300
@@ -90,7 +90,7 @@
Q_UNUSED(deviceDialogType);
Q_UNUSED(parameters);
- info->group = DeviceNotificationDialogGroup;
+ info->group = DeviceNotificationDialogGroup; // TODO this should be SecurityGroup , but it's still not available
info->flags = NoDeviceDialogFlags;
info->priority = DefaultPriority;
--- a/securitydialogs/securitydialogs.pro Fri Apr 16 15:53:24 2010 +0300
+++ b/securitydialogs/securitydialogs.pro Mon May 03 13:20:16 2010 +0300
@@ -17,5 +17,8 @@
TEMPLATE = subdirs
SUBDIRS += secuinotifications/secuinotifications.pro
-SUBDIRS += lockclient/lockclient.pro
+SUBDIRS += lockclient/group/lockclient.pro
+SUBDIRS += AutolockSrv/indicatorplugin/indicatorautolockplugin.pro
+SUBDIRS += AutolockSrv/autolockuseractivityservice.pro
+SUBDIRS += AutolockSrv/AutolockSrv.pro
--- a/wim/WimServer/src/WimAuthObjHandler.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/wim/WimServer/src/WimAuthObjHandler.cpp Mon May 03 13:20:16 2010 +0300
@@ -407,7 +407,6 @@
void CWimAuthObjHandler::VerifyDisabledPINRequestL(
const RMessage2& aMessage )
{
- __ASSERT_DEBUG( iResponseID == NULL, User::Panic( KWimAuthObjPanic, KErrGeneral ) );
iResponseID = new ( ELeave )CWimResponse( aMessage );
iResponseID->iOpcode = EVerifyDisabledPinReq;
@@ -436,11 +435,9 @@
{
_WIMTRACE(_L("WIM|WIMServer|CWimAuthObjHandler::VerifyPINRequestL|Begin"));
- __ASSERT_DEBUG( iResponseID == NULL, User::Panic( KWimAuthObjPanic, KErrGeneral ) );
iResponseID = new ( ELeave )CWimResponse( aMessage );
iResponseID->iOpcode = EVerifyPinReq;
- __ASSERT_DEBUG( iTrId == NULL, User::Panic( KWimAuthObjPanic, KErrGeneral ) );
iTrId = iWimUtilFuncs->TrIdLC( iResponseID, EWimMgmtReq );
CleanupStack::Pop( iTrId );
@@ -568,11 +565,9 @@
{
_WIMTRACE(_L("WIM|WIMServer|CWimAuthObjHandler::EnablePINReqL|Begin"));
- __ASSERT_DEBUG( iResponseID == NULL, User::Panic( KWimAuthObjPanic, KErrGeneral ) );
iResponseID = new( ELeave )CWimResponse( aMessage );
iResponseID->iOpcode =EEnablePINReq;
- __ASSERT_DEBUG( iTrId == NULL, User::Panic( KWimAuthObjPanic, KErrGeneral ) );
iTrId = iWimUtilFuncs->TrIdLC( iResponseID, EWimMgmtReq );
CleanupStack::Pop( iTrId );
@@ -681,11 +676,9 @@
{
_WIMTRACE(_L("WIM | WIMServer | CWimAuthObjHandler::ChangePINRequestL | Begin"));
- __ASSERT_DEBUG( iResponseID == NULL, User::Panic( KWimAuthObjPanic, KErrGeneral ) );
iResponseID = new ( ELeave ) CWimResponse( aMessage );
iResponseID->iOpcode = EChangePINReq;
- __ASSERT_DEBUG( iTrId == NULL, User::Panic( KWimAuthObjPanic, KErrGeneral ) );
iTrId = iWimUtilFuncs->TrIdLC( iResponseID, EWimMgmtReq );
CleanupStack::Pop( iTrId );
@@ -781,11 +774,9 @@
{
_WIMTRACE(_L("WIM | WIMServer | CWimAuthObjHandler::UnblockPinReqL | Begin"));
- __ASSERT_DEBUG( iResponseID == NULL, User::Panic( KWimAuthObjPanic, KErrGeneral ) );
iResponseID = new ( ELeave ) CWimResponse( aMessage );
iResponseID->iOpcode = EUnblockPinReq;
- __ASSERT_DEBUG( iTrId == NULL, User::Panic( KWimAuthObjPanic, KErrGeneral ) );
iTrId = iWimUtilFuncs->TrIdLC( iResponseID, EWimMgmtReq );
CleanupStack::Pop( iTrId );
--- a/wim/WimServer/src/WimBTSapObserver.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/wim/WimServer/src/WimBTSapObserver.cpp Mon May 03 13:20:16 2010 +0300
@@ -175,6 +175,8 @@
WIMI_CloseDownReq();
_WIMTRACE(_L("WIM | CWimSatRefreshObserver::Refresh | WIMI closed."));
}
+
+ sessions.Close();
}
else
{
--- a/wim/WimServer/src/WimSession.cpp Fri Apr 16 15:53:24 2010 +0300
+++ b/wim/WimServer/src/WimSession.cpp Mon May 03 13:20:16 2010 +0300
@@ -629,6 +629,8 @@
{
_WIMTRACE(_L("WIM | CWimSession::RefreshWimi: FAILED to get sessions."));
}
+
+ sessions.Close();
}
// End of File