coreapplicationuis/SysAp/Src/SysApSimChanged.cpp
changeset 0 2e3d3ce01487
child 19 924385140d98
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/coreapplicationuis/SysAp/Src/SysApSimChanged.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,206 @@
+/*
+* Copyright (c) 2005-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:  Implementation of CSysApSimChanged
+*
+*/
+
+
+// INCLUDE FILES
+#include "SysApSimChanged.h"
+#include "SysApAppUi.h"
+#include <settingsinternalcrkeys.h>
+#include <LogsDomainCRKeys.h>
+#include <logcli.h>
+#include <centralrepository.h>
+const TInt KPSetDefaultCFTimer = 30;
+#include <RSSSettings.h>
+#include <startupdomainpskeys.h>
+#include <PSVariables.h>
+#include "SysAp.hrh"
+//  LOCAL CONSTANTS AND MACROS  
+
+   
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CSysApSimChanged::NewL
+//
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+
+CSysApSimChanged* CSysApSimChanged::NewL( CSysApAppUi& aSysApAppUi, RFs& aFs )
+    {
+    TRACES( RDebug::Print( _L("CSysApSimChanged::NewL()") ) );
+    CSysApSimChanged* self = new(ELeave) CSysApSimChanged(aSysApAppUi, aFs );
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApSimChanged::CSysApSimChanged( CSysApAppUi& aSysApAppUi )
+// ----------------------------------------------------------------------------
+
+CSysApSimChanged::CSysApSimChanged( CSysApAppUi& aSysApAppUi, RFs& aFs ) :
+    iSysApAppUi( aSysApAppUi ),
+    iFs( aFs )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+
+CSysApSimChanged::~CSysApSimChanged()
+    {
+    TRACES( RDebug::Print( _L("CSysApSimChanged::~CSysApSimChanged()") ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CSysApSimChanged::ClearRepositoriesL()
+// -----------------------------------------------------------------------------
+
+void CSysApSimChanged::ClearRepositoriesL()
+    {
+    TRACES( RDebug::Print( _L("CSysApSimChanged::ClearRepositoriesL(): opening KCRUidCallForwarding") ) );
+    
+    CRepository* repository = CRepository::NewL( KCRUidCallForwarding );
+    
+    repository->Set( KSettingsCFDefaultNumber1, KNullDesC );
+    repository->Set( KSettingsCFDefaultNumber2, KNullDesC );
+    repository->Set( KSettingsCFDefaultNumber3, KNullDesC );
+    repository->Set( KSettingsCFDefaultNumberAls1, KNullDesC );
+    repository->Set( KSettingsCFDefaultNumberAls2, KNullDesC );
+    repository->Set( KSettingsCFDefaultNumberAls3, KNullDesC );
+    repository->Set( KSettingsCFUsedFaxNumber, KNullDesC );
+    repository->Set( KSettingsCFUsedDataNumber, KNullDesC );
+    repository->Set( KSettingsCFTimerValue, KPSetDefaultCFTimer );
+    repository->Set( KSettingsCFTimerValueAls, KPSetDefaultCFTimer );
+    
+    delete repository;
+    
+    TRACES( RDebug::Print( _L("CSysApSimChanged::ClearRepositoriesL(): opening KCRUidLogs") ) );
+    repository = CRepository::NewL( KCRUidLogs );
+    
+    repository->Set( KLogsNewMissedCalls, 0 );
+
+    delete repository;
+    }
+// -----------------------------------------------------------------------------
+// CSysApSimChanged::ClearLogsL()
+// -----------------------------------------------------------------------------
+
+void CSysApSimChanged::ClearLogsL()
+    {
+    TRACES( RDebug::Print( _L("CSysApSimChanged::ClearLogsL()") ) );
+    // Clear the event log.
+    CShareActive* active = new (ELeave) CShareActive;
+    CleanupStack::PushL( active );
+    active->StartL();
+    
+    TDateTime dateTime;
+    dateTime.Set( 2100, EJanuary, 1, 0, 0, 0, 0 );
+    TTime date(dateTime);
+    
+    TRACES( RDebug::Print( _L("CSysApSimChanged::ClearLogsL(): trying CLogClient::NewL") ) );
+    CLogClient* logClient = CLogClient::NewL( iFs );    
+    logClient->ClearLog( date, active->iStatus );
+    
+    CActiveScheduler::Start();
+
+    delete logClient;
+    CleanupStack::PopAndDestroy( active );
+    }
+    
+// -----------------------------------------------------------------------------
+// CSysApSimChanged::ClearSsSettingsL()
+// -----------------------------------------------------------------------------
+
+void CSysApSimChanged::ClearSsSettingsL()
+    {
+    TRACES( RDebug::Print( _L("CSysApSimChanged::ClearSsSettingsL()") ) );
+    
+    // Reset SSSettings values
+    RSSSettings ssSettings;
+    User::LeaveIfError( ssSettings.Open( iSysApAppUi.GetTelServer() ) );
+    
+    TRACES( RDebug::Print( _L("CSysApSimChanged::ClearSsSettingsL(): trying RSSSettings::HandleSIMChanged") ) );
+    TInt err = ssSettings.HandleSIMChanged();
+    ssSettings.Close();    
+    
+    User::LeaveIfError( err );
+    }
+
+// -----------------------------------------------------------------------------
+// CSysApSimChanged::HandleSimChangedL()
+// -----------------------------------------------------------------------------
+    
+void CSysApSimChanged::HandleSimChangedL()
+    {
+    TBool simChanged;
+    TBool simNotOwned;
+
+    simChanged = ( iSysApAppUi.StateOfProperty( KPSUidStartup, KPSSimChanged ) == ESimChanged );
+    simNotOwned = ( iSysApAppUi.StateOfProperty( KPSUidStartup, KPSSimOwned ) == ESimNotOwned );
+    
+    TRACES( RDebug::Print( _L("CSysApSimChanged::HandleSimChangedL(): simChanged=%d, simNotOwned=%d"), simChanged, simNotOwned ) );
+
+    // Supplementary settings are always cleared when SIM has been changed, regardless whether SIM is known or not
+    if ( simChanged || simNotOwned )
+        {
+        ClearSsSettingsL();
+        }
+    
+    // Other repositories are cleared only if an unknown SIM has been inserted    
+    if ( simNotOwned )
+        {
+        ClearRepositoriesL();
+        ClearLogsL();
+        }
+    }
+// =============== CShareActive MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// These are needed for ClogClient.
+// -----------------------------------------------------------------------------
+
+CShareActive::CShareActive() : CActive(0)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+CShareActive::~CShareActive()
+    {
+    Cancel();
+    }
+
+void CShareActive::DoCancel()
+    {
+    TRequestStatus* s=&iStatus;
+    User::RequestComplete(s, KErrNone);
+    }
+
+void CShareActive::StartL()
+    {
+    SetActive();
+    }
+
+void CShareActive::RunL() 
+    {
+    TRACES( RDebug::Print( _L("CSysApSimChanged::CShareActive::RunL: iStatus=%d"), iStatus.Int() ) );
+    CActiveScheduler::Stop();
+    }
+
+//  End of File
+
+
+