clock2/clockui/uilayer/clkdatetimeview/src/clkdatetimeviewextension.cpp
branchRCL_3
changeset 66 bd7edf625bdd
parent 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clock2/clockui/uilayer/clkdatetimeview/src/clkdatetimeviewextension.cpp	Wed Sep 01 12:32:31 2010 +0100
@@ -0,0 +1,758 @@
+/*
+* Copyright (c) 2008 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:   This is the source file for the CClkDateTimeViewExtension class.
+*
+*/
+
+// System Includes
+#include <StringLoader.h>
+#include <pathinfo.h>
+#include <ConeResLoader.h>
+#include <clockdomaincrkeys.h>
+#include <centralrepository.h>
+#include <ProfileEngineDomainConstants.h>
+#include <e32math.h>
+#include <clock.rsg>
+#include <aknpopupsettingpage.h>
+#include <AknQueryValueText.h>
+
+// User Includes
+#include "clkdatetimeview.hrh"
+#include "clkdatetimeviewextension.h"
+#include "clockecomlistener.h"
+#include "clkdatetimeview.h"
+#include "clkcommon.h"
+
+// Constants
+const TInt KSnoozeTimeDigits( 2 );
+const TInt KBaseTwo( 2 );
+const TInt KOneMinute( 1 );
+const TInt KGmtStringLength( 32 );
+const TInt KWorkDaysBufferLength( 10 );
+const TInt KOneCharacter( 1 );
+
+// Literals
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::NewL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+CClkDateTimeViewExtension* CClkDateTimeViewExtension::NewL( CClkDateTimeView* aParent, CCoeEnv* aEnv )
+	{
+	CClkDateTimeViewExtension* self = new ( ELeave ) CClkDateTimeViewExtension( aParent, aEnv );
+	CleanupStack::PushL( self );
+	
+	self->ConstructL();
+	
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::~CClkDateTimeViewExtension
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+CClkDateTimeViewExtension::~CClkDateTimeViewExtension()
+	{
+	DeleteResourceBuf();
+
+	if( iWorkDaysStr )
+		{
+		delete iWorkDaysStr;
+		iWorkDaysStr = NULL;
+		}
+	if( iWorkDaysList )
+		{
+		delete iWorkDaysList;
+		iWorkDaysList = NULL;
+		}
+	if( iWorkDaysShortList )
+		{
+		delete iWorkDaysShortList;
+		iWorkDaysShortList = NULL;
+		}
+	if( iAlarmToneNotifier )
+		{
+		iAlarmToneNotifier->StopListening();
+		delete iAlarmToneNotifier;
+		iAlarmToneNotifier = NULL;
+		}
+	if( iSnoozeValueNotifier )
+		{
+		iSnoozeValueNotifier->StopListening();
+		delete iSnoozeValueNotifier;
+		iSnoozeValueNotifier = NULL;
+		}
+	if( iSnoozeValueNotifier )
+		{
+		delete iSnoozeValueNotifier;
+		iSnoozeValueNotifier = NULL;
+		}
+	if( iRepository )
+		{
+		delete iRepository;
+		iRepository = NULL;
+		}
+	if( iSilentTone )
+		{
+		delete iSilentTone;
+		iSilentTone = NULL;
+		}
+	if( iClockEComListener )
+	    {
+	    delete iClockEComListener;
+	    iClockEComListener = NULL;
+	    }
+	if( iAutomaticTimeUpdateString )
+	    {
+	    delete iAutomaticTimeUpdateString;
+	    iAutomaticTimeUpdateString = NULL;
+	    }
+	
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::NotifyPluginInstallUninstallL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::NotifyPluginInstallUninstallL( const CImplementationInformation& /*aImplInfo*/, TBool /*aInstalled*/ )
+    {
+    // Check if the auto time update page is being shown.
+    if( iAutoTimeUpdatePageOpen )
+        {
+        // TODO : We need to update the page dynamically.
+        //        Due to some issues with the way the framework handles dynamic updation, we dont do it as of now.
+        // RefreshAutoTimeUpdatePageL();
+        }
+    else
+        {
+        // Update the time update and timezone fields.
+        iParent->HandleSettingsChangeL( 0 );
+        }
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::HandleNotifyStringL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::HandleNotifyStringL( TUint32 aId, const TDesC16& aNewValue )
+	{
+	// Let the datetime view update itself.
+	iParent->UpdateDTViewL( aId, aNewValue );
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetAlarmSnoozeTimeStr
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+HBufC* CClkDateTimeViewExtension::GetAlarmSnoozeTimeStr()
+	{
+	return iAlarmSnoozeTime;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::DeleteResourceBuf
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::DeleteResourceBuf()
+	{
+	if( iAlarmSnoozeTime )
+		{
+		delete iAlarmSnoozeTime;
+		iAlarmSnoozeTime = NULL;
+		}
+	if( iSnoozeTime )
+		{
+		delete iSnoozeTime;
+		iSnoozeTime = NULL;
+		}	
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::MakeSnoozeTimeItemL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::MakeSnoozeTimeItemL()
+	{
+	TBuf< KSnoozeTimeDigits > snoozeTimeBuf;
+	// Convert the number to string.
+	snoozeTimeBuf.Num( iSnoozeTimeValue ); 
+
+	if( iSnoozeTime )
+		{
+		delete iSnoozeTime;
+		iSnoozeTime = NULL;
+		}
+	AknTextUtils::DisplayTextLanguageSpecificNumberConversion( snoozeTimeBuf );	
+
+	if( iSnoozeTimeValue == KOneMinute )
+		{
+		// If snooze time is 1, load 'Minute'( singular ) string.
+		iSnoozeTime = StringLoader::LoadL( R_QTN_SANIM_TIME_OUT_SLIDER_YKCUR, iEnv );
+		}
+	else
+		{
+		// If snooze time is more than 1, load 'Minutes'(plural) string.
+		iSnoozeTime = StringLoader::LoadL( R_QTN_SANIM_TIME_OUT_SLIDER_CUR, snoozeTimeBuf, iEnv );		
+		}
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetSnoozeTimeStr
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+HBufC* CClkDateTimeViewExtension::GetSnoozeTimeStr()
+	{
+	return iSnoozeTime;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetWorkDays
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TUint CClkDateTimeViewExtension::GetWorkDays()
+	{	
+	return iWorkDays;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::SetWorkDays
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::SetWorkDays( TUint aWorkDays )
+	{
+	iWorkDays = aWorkDays;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::ConstructWorkDaysStrL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::ConstructWorkDaysStrL()
+	{
+	// Changes to prevent the overflowing size of final str is going 30 when hindi fonts are in use.
+	TBuf< KGmtStringLength > finalStr;
+	HBufC* workDaySeparator = StringLoader::LoadLC( R_QTN_WORD_LIST_SEPARATOR, iEnv );
+	
+	// Get the days that are currently chosen as workdays.
+	for( TInt index( FALSE ); index < iWorkDaysShortList->MdcaCount(); index++ )
+		{
+		TReal powExponent;
+		Math::Pow( powExponent, KBaseTwo, index );
+		
+		if( iWorkDays & ( TInt )powExponent )
+			{
+			TBuf< KWorkDaysBufferLength > tempBuf = ( *iWorkDaysShortList )[ index ];
+			finalStr.Append( tempBuf );
+			finalStr.Append( workDaySeparator->Des() );
+			}
+		}
+	
+	// Remove the last character.
+	if( FALSE < finalStr.Length() )
+		{
+		finalStr.Delete( finalStr.Length() - KOneCharacter, KOneCharacter );
+		}
+	
+	if( iWorkDaysStr )
+		{
+		delete iWorkDaysStr;
+		iWorkDaysStr = NULL;
+		}
+	
+	// The final workdays' string.
+	iWorkDaysStr = finalStr.Alloc();
+	
+	// Cleanup.
+	CleanupStack::PopAndDestroy( workDaySeparator );
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetWorkDaysStr
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+HBufC* CClkDateTimeViewExtension::GetWorkDaysStr()
+	{
+	return iWorkDaysStr;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetWorkDaysList
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+CDesCArrayFlat* CClkDateTimeViewExtension::GetWorkDaysList()
+	{
+	return iWorkDaysList;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::StartListeningL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::StartListeningL()
+	{
+	if( iAlarmToneNotifier )
+		{
+		iAlarmToneNotifier->StartListeningL();
+		}
+	
+	if( iSnoozeValueNotifier )
+		{
+		iSnoozeValueNotifier->StartListeningL();	
+		}
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::StopListening
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::StopListening()
+	{
+	if( iAlarmToneNotifier )
+	    {
+        iAlarmToneNotifier->StopListening();
+        }
+    
+    if( iSnoozeValueNotifier )
+        {
+        iSnoozeValueNotifier->StopListening();
+        }
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetSnoozeTimeValue
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TInt CClkDateTimeViewExtension::GetSnoozeTimeValue()
+	{	
+	return iSnoozeTimeValue ;
+	}
+	
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::SetSnoozeTimeValue
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::SetSnoozeTimeValue( TInt aSnoozeTimeValue )
+	{	
+	iSnoozeTimeValue = aSnoozeTimeValue;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetSilentToneStr
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+HBufC* CClkDateTimeViewExtension::GetSilentToneStr()
+	{
+	return iSilentTone;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::SetUsedByGS
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::SetUsedByGS()
+	{
+	iUsedByGS = ETrue;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::UsedByGS
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TBool CClkDateTimeViewExtension::UsedByGS()
+	{
+	return iUsedByGS;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::AlarmToneListInUse
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TBool CClkDateTimeViewExtension::AlarmToneListInUse()
+	{
+	return iAlarmToneListInUse;
+	}	
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::AlarmToneListInUse
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::SetAlarmToneListInUse( TBool aAlarmToneListInUse )
+	{
+	iAlarmToneListInUse = aAlarmToneListInUse;
+	}	
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::IsUnLocalisedCity
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TBool CClkDateTimeViewExtension::IsUnLocalisedCity()
+    {
+    return iUnlocalisedCity;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::UnLocalisedCity
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::UnLocalisedCity( TBool aUnlocalisedCity )
+    {
+    iUnlocalisedCity = aUnlocalisedCity;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::IsAutoTimeUpdatePageOpen
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TBool CClkDateTimeViewExtension::IsAutoTimeUpdatePageOpen()
+    {
+    return iAutoTimeUpdatePageOpen;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::SetAutoTimeUpdatePageOpen
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::SetAutoTimeUpdatePageOpen( TBool aOpen )
+    {
+    iAutoTimeUpdatePageOpen = aOpen;
+    }
+  
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetQueryTextArray
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+CAknQueryValueTextArray* CClkDateTimeViewExtension::GetQueryTextArray()
+    {
+    return iTextArray;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::SetQueryTextArray
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::SetQueryTextArray( CAknQueryValueTextArray* aTextArray )
+    {
+    iTextArray = aTextArray;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetQueryValueText
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+CAknQueryValueText* CClkDateTimeViewExtension::GetQueryValueText()
+    {
+    return iQueryValue;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::SetQueryValueText
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::SetQueryValueText( CAknQueryValueText* aQueryValueText )
+    {
+    iQueryValue = aQueryValueText;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::SetPopupSettingPage
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::SetPopupSettingPage( CAknPopupSettingPage* aPopupSettingPage )
+    {
+    iSettingPage = aPopupSettingPage;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetPluginList
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+CDesCArrayFlat* CClkDateTimeViewExtension::GetPluginList()
+	{
+	return iPluginList;
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::SetPluginList
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::SetPluginList( CDesCArrayFlat* aPluginList )
+    {
+    iPluginList = aPluginList;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::GetActiveProtocol
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TInt CClkDateTimeViewExtension::GetActiveProtocol()
+    {
+    return iActiveProtocol;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::SetActiveProtocol
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::SetActiveProtocol( TInt aProtocolsState )
+    {
+    iActiveProtocol = aProtocolsState;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::QueryPopupSettingPageL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TInt CClkDateTimeViewExtension::QueryPopupSettingPageL()
+    {
+    // Construct the list of plugins that we support. 
+    iPluginList = new( ELeave ) CDesCArrayFlat( KBaseTwo );
+    
+    // Append Off text.
+    iPluginList->AppendL( iParent->GetAutoTimeUpdateStr( EFalse ) );
+    
+    // Append On text.
+    iPluginList->AppendL( iParent->GetAutoTimeUpdateStr( ETrue ) );
+
+    // Get the currently active plugin.
+    TInt activeProtocol( GetActiveProtocol() );
+    
+    TInt highlightIndex( KZerothIndex );
+    
+    if( activeProtocol )
+        {
+    	highlightIndex =highlightIndex+1;
+        }
+        
+    TInt returnVal( KZerothIndex );
+    // Construct the text array for the page.
+    iTextArray = CAknQueryValueTextArray::NewL();
+    iTextArray->SetArray( *iPluginList );
+
+    // Construct the text value.
+    iQueryValue = CAknQueryValueText::NewL();
+    iQueryValue->SetArrayL( iTextArray );
+    iQueryValue->SetCurrentValueIndex( highlightIndex );
+
+    iSettingPage = new( ELeave ) CAknPopupSettingPage( R_DATE_TIME_POPUP_PAGE_MSK, *iQueryValue );
+    // Set the header text.
+    iSettingPage->SetSettingTextL( *iAutomaticTimeUpdateString );
+    
+    // Set the flag to indicate the page is open.
+    SetAutoTimeUpdatePageOpen( ETrue );
+       
+    if( iSettingPage->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
+        {
+        returnVal = iQueryValue->CurrentValueIndex();
+        }
+    else
+        {
+        returnVal = KErrCancel;
+        }
+    
+    // The page has been closed.
+    SetAutoTimeUpdatePageOpen( EFalse );
+    
+    // Cleanup.
+    if( iQueryValue )
+        {
+        delete iQueryValue;
+        iQueryValue = NULL;
+        }
+    if( iTextArray )
+        {
+        delete iTextArray;
+        iTextArray = NULL;
+        }
+    if( iPluginList )
+        {
+        delete iPluginList;
+        iPluginList = NULL;
+        }
+    
+    // Return.
+    return returnVal;
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::RefreshAutoTimeUpdatePageL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+// 
+void CClkDateTimeViewExtension::RefreshAutoTimeUpdatePageL()
+    {
+    // Array to return all implementations in an interface.
+    RImplInfoPtrArray plugInArray;
+    // Get the list of all implementations.
+    REComSession::ListImplementationsL( KTimeSourceInterfaceUID, plugInArray );
+
+    if( !plugInArray.Count() )
+        {
+        // There are no plugins to list. Simply return.
+        plugInArray.ResetAndDestroy();
+        plugInArray.Close();
+        return;
+        }
+
+    if( plugInArray.Count() )
+        {
+        if( iPluginList )
+            {
+            delete iPluginList;
+            iPluginList = NULL;
+            }
+        // Construct the list of plugins that we support. 
+        iPluginList = new( ELeave ) CDesCArrayFlat( plugInArray.Count() + 1 );
+        // Append Off text.
+        iPluginList->AppendL( iParent->GetAutoTimeUpdateStr( EFalse ) );
+        
+        // Update the currently active protocol because some protocol which was active
+        // might have got uninstalled.
+        TInt highlightIndex( KZerothIndex );
+        for( TInt index( KZerothIndex ); index < plugInArray.Count(); index++ )
+            {
+            iPluginList->AppendL( plugInArray[ index ]->DisplayName() );
+            if( iActiveProtocol == plugInArray[ index ]->ImplementationUid().iUid )
+                {
+                // We need to highlight this item by default.
+                highlightIndex = index + 1;
+                }
+            }
+        
+        // Delete the previous values if present.
+        /*if( iPrevTextArray )
+            {
+            delete iPrevTextArray;
+            iPrevTextArray = NULL;
+            }
+        if( iPrevQueryValue )
+            {
+            delete iPrevQueryValue;
+            iPrevQueryValue = NULL;
+            }
+        // Store the previous array references.
+        CAknQueryValueTextArray* iPrevTextArray( iTextArray );
+        CAknQueryValueText* iPrevQueryValue( iQueryValue );*/
+        
+        // Construct the new array.
+        iTextArray = CAknQueryValueTextArray::NewL();
+        iTextArray->SetArray( *iPluginList );
+
+        iQueryValue = CAknQueryValueText::NewL();
+        iQueryValue->SetArrayL( iTextArray );
+        iQueryValue->SetCurrentValueIndex( highlightIndex );
+        
+        // Update the settings page with the new value.
+        iSettingPage->UpdateQueryValueL( iQueryValue );
+        
+        // Cleanup.
+        // delete prevTextArray;
+        // delete prevQueryValue;
+        }
+    // Cleanup.
+    plugInArray.ResetAndDestroy();
+    plugInArray.Close();
+    }
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::CClkDateTimeViewExtension
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+CClkDateTimeViewExtension::CClkDateTimeViewExtension( CClkDateTimeView* aParent,
+													  CCoeEnv* aEnv )
+													  : iParent( aParent ),
+													  	iEnv( aEnv )
+	{
+	// No implementation yet.
+	}
+
+// ---------------------------------------------------------
+// CClkDateTimeViewExtension::ConstructL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClkDateTimeViewExtension::ConstructL()
+	{
+	// Open the repository for the clock application.
+	iRepository = CRepository::NewL( KCRUidClockApp );
+	
+	// The resources strings.
+	iAlarmSnoozeTime = StringLoader::LoadL( R_QTN_CLK_SETT_SNOOZE_TIME, iEnv );
+	
+	// The item arrays.
+	iWorkDaysList = iEnv->ReadDesCArrayResourceL( R_CLOCK_WEEK_DAYS_ARRAY );     
+    iWorkDaysShortList = iEnv->ReadDesCArrayResourceL( R_CLOCK_WEEK_DAYS_SHORT_ARRAY );
+    
+    // Cenrep change notifiers.
+    iAlarmToneNotifier = CCenRepNotifyHandler::NewL( *this, *iRepository, CCenRepNotifyHandler::EStringKey, KClockAppSoundFile );                       
+    iSnoozeValueNotifier = CCenRepNotifyHandler::NewL( *this, *iRepository, CCenRepNotifyHandler::EStringKey, KClockAppSnoozeTime );                       
+	
+    // Get the silent ringtone.
+	TFileName* fileName = new ( ELeave ) TFileName( TParsePtrC( PathInfo::RomRootPath() ).Drive() );
+    CleanupStack::PushL( fileName );
+    fileName->Append( KProfileNoSoundPath );
+    iSilentTone = fileName->AllocL();
+
+    // Cleanup.
+    CleanupStack::PopAndDestroy( fileName );
+    
+    // Create and subscribe for ecom registry changes.
+    iClockEComListener = CClockEComListener::NewL( *this );
+    
+    iUsedByGS = EFalse;
+	iAlarmToneListInUse = EFalse;
+	iAutoTimeUpdatePageOpen = EFalse;
+	
+	// Get the string for auto time update page title.
+	iAutomaticTimeUpdateString = StringLoader::LoadL( R_QTN_CLK_SETT_NETWORK_TIME, iEnv );
+	}
+
+//  End of File