--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/commonuis/CommonUi/src/FindItemVoIPExtension.cpp Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,241 @@
+/*
+* Copyright (c) 2005-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: Get count of VoIP profiles and
+* Handles Preferred Telephony setting events.
+*
+*/
+
+#include "FindItemVoIPExtension.h"
+#include <featmgr.h>
+#ifndef RD_VOIP_REL_2_2
+#include <CRCSEProfileRegistry.h>
+#include <centralrepository.h>
+#include <SettingsInternalCRKeys.h>
+
+// CONSTANTS
+// Preferred Telephony value is PS call
+static const TInt KRCSEInternetCallPreferred = 1;
+// Dynamic VoIP off
+static const TInt KVoIPOFF = 0;
+
+#else
+#include <spsettings.h>
+#include <spsettingsvoiputils.h>
+#endif // RD_VOIP_REL_2_2
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+#ifndef RD_VOIP_REL_2_2
+CFindItemVoIPExtension::CFindItemVoIPExtension():
+ iVoIPSupported( EFalse ),
+ iPreferredTelephonyVoIP(EFalse)
+ {
+ }
+#else
+CFindItemVoIPExtension::CFindItemVoIPExtension()
+ {
+ }
+#endif // RD_VOIP_REL_2_2
+
+// Two-phased constructor.
+//
+CFindItemVoIPExtension* CFindItemVoIPExtension::NewL()
+ {
+ CFindItemVoIPExtension *self =
+ new ( ELeave ) CFindItemVoIPExtension();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// ConstructL
+//
+void CFindItemVoIPExtension::ConstructL()
+ {
+ if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
+ {
+#ifndef RD_VOIP_REL_2_2
+ TInt VoIPSupported( KVoIPOFF );
+ TInt value( 0 );
+ iVoIPVariation = CRepository::NewL( KCRUidTelephonySettings );
+ iVoIPVariation->Get( KDynamicVoIP, VoIPSupported );
+ iVoIPVariationNotifier = CCenRepNotifyHandler::NewL( *this, *iVoIPVariation,
+ CCenRepNotifyHandler::EIntKey, KDynamicVoIP );
+ iVoIPVariationNotifier->StartListeningL();
+
+ iVoIPSupported = KVoIPOFF != VoIPSupported;
+
+ // Create the session
+ iCenRepSession = CRepository::NewL( KCRUidRichCallSettings );
+ iCenRepSession->Get( KRCSEPreferredTelephony, value );
+ if ( iCenRepSession )
+ {
+ iPreferredTelephonyVoIP = KRCSEInternetCallPreferred == value;
+
+ // Create the notifer
+ iNotifier = CCenRepNotifyHandler::NewL( *this, *iCenRepSession,
+ CCenRepNotifyHandler::EIntKey, KRCSEPreferredTelephony );
+
+ // Start listening
+ iNotifier->StartListeningL();
+ }
+#else
+ // for handling services related data
+ iSPSettings = CSPSettings::NewL();
+ iSPSettingsVoipUtils = CSPSettingsVoIPUtils::NewL();
+
+#endif // RD_VOIP_REL_2_2
+ }
+ }
+
+// Destructor
+//
+CFindItemVoIPExtension::~CFindItemVoIPExtension()
+ {
+#ifndef RD_VOIP_REL_2_2
+ if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
+ {
+ if( NULL != iVoIPVariationNotifier )
+ {
+ iVoIPVariationNotifier->StopListening();
+ }
+ delete iVoIPVariationNotifier;
+ delete iVoIPVariation;
+
+ delete iNotifier;
+ delete iCenRepSession;
+ }
+#else
+ delete iSPSettings;
+ delete iSPSettingsVoipUtils;
+#endif // RD_VOIP_REL_2_2
+ }
+
+#ifndef RD_VOIP_REL_2_2
+// ----------------------------------------------------
+// CFindItemVoIPExtension::HandleNotifyInt
+//
+// ----------------------------------------------------
+//
+void CFindItemVoIPExtension::HandleNotifyInt(
+ const TUint32 aID,
+ const TInt aNewValue )
+ {
+ if ( KRCSEPreferredTelephony == aID )
+ {
+ iPreferredTelephonyVoIP =
+ KRCSEInternetCallPreferred == aNewValue;
+ }
+ if ( KDynamicVoIP == aID )
+ {
+ iVoIPSupported = KVoIPOFF != aNewValue;
+ }
+ }
+
+// ----------------------------------------------------
+// CFindItemVoIPExtension::HandleNotifyError
+// ----------------------------------------------------
+//
+void CFindItemVoIPExtension::HandleNotifyError(
+ const TUint32 /*aID*/,
+ const TInt /*aError*/,
+ CCenRepNotifyHandler* /*aHandler*/ )
+ {
+ //NO OPERATION
+ }
+#endif // !RD_VOIP_REL_2_2
+
+// ----------------------------------------------------
+// CFindItemVoIPExtension::VoIPProfilesExistL
+//
+// ----------------------------------------------------
+TBool CFindItemVoIPExtension::VoIPProfilesExistL() const
+ {
+#ifndef RD_VOIP_REL_2_2
+ TBool isProfiles = EFalse;
+
+ if ( iVoIPSupported )
+ {
+ RArray<TUint32> profileArray;
+
+ CRCSEProfileRegistry* rcseProfileRegistry = CRCSEProfileRegistry::NewLC();
+ rcseProfileRegistry->GetAllIdsL( profileArray );
+
+ if ( profileArray.Count() > 0 )
+ {
+ isProfiles = ETrue;
+ }
+
+ profileArray.Close();
+
+ CleanupStack::PopAndDestroy(); // rcseProfile
+ }
+
+ return isProfiles;
+#else // RD_VOIP_REL_2_2
+ TBool ret( EFalse );
+
+ if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
+ {
+ ret = iSPSettings->IsFeatureSupported( ESupportVoIPFeature );
+ }
+
+ return ret;
+#endif // !RD_VOIP_REL_2_2
+ }
+
+// ----------------------------------------------------
+// CFindItemVoIPExtension::IsPreferredTelephonyVoIP
+//
+// ----------------------------------------------------
+TBool CFindItemVoIPExtension::IsPreferredTelephonyVoIP()
+ {
+#ifndef RD_VOIP_REL_2_2
+ return iPreferredTelephonyVoIP && iVoIPSupported;
+#else // RD_VOIP_REL_2_2
+ if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
+ {
+ return iSPSettingsVoipUtils->IsPreferredTelephonyVoIP();
+ }
+ else
+ {
+ return EFalse;
+ }
+#endif // !RD_VOIP_REL_2_2
+ }
+
+// ----------------------------------------------------
+// CFindItemVoIPExtension::IsVoIPSupported
+//
+// ----------------------------------------------------
+TBool CFindItemVoIPExtension::IsVoIPSupported()
+ {
+#ifndef RD_VOIP_REL_2_2
+ return iVoIPSupported;
+#else // RD_VOIP_REL_2_2
+ if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
+ {
+ return iSPSettings->IsFeatureSupported( ESupportVoIPFeature );
+ }
+ else
+ {
+ return EFalse;
+ }
+#endif // !RD_VOIP_REL_2_2
+ }
+// End of File
+