--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gssettingsuis/Gs/GSCallDivertPlugin/Inc/GSCallDivertModel.h Thu Dec 17 08:52:52 2009 +0200
@@ -0,0 +1,224 @@
+/*
+* 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: Model for call divert functionality. Tries to encapsulate
+* most of hw/engine related functionality from UI components.
+*
+*/
+
+#ifndef CGSCALLDIVERTMODEL_H_
+#define CGSCALLDIVERTMODEL_H_
+
+
+#include <data_caging_path_literals.hrh>
+#include "CallDivertPlugin.hrh"
+
+#include <etelmm.h>
+#include <nwdefs.h>
+#include <e32base.h>
+
+
+// Forward declarations:
+class CPsetCallDiverting;
+class CPsetContainer;
+class CPsuiContainer;
+class CPsuiDivertObs;
+class CPhCltUssd;
+class RSSSettings;
+class CPbkContactEngine;
+class CGSCallDivertView;
+class CRepository;
+
+class CGSCallDivertModel : public CBase
+ {
+ public:
+
+ /**
+ * Symbian OS two-phase Constructor
+ * @return
+ */
+ static CGSCallDivertModel* NewL ( );
+
+ /**
+ * Destructor
+ */
+ virtual ~CGSCallDivertModel ( );
+
+ public: // Functions
+
+ /**
+ * Send call divert request.
+ * @param aCallDivertSetting Data used for call divert.
+ * @param aInfo Defines the precise action.
+ * @param aVmbxDivert ETrue if voice mailbox is used as divert number.
+ * @param aCommand This is for CancelAll command.
+ */
+ void SendCallDivertRequestL(
+ TCallDivertSetting& aCallDivertSetting,
+ RMobilePhone::TMobilePhoneServiceAction aInfo,
+ TBool& aVmbxDivert,
+ TInt aCommand,
+ TGSCallDivertServices aService );
+
+ /**
+ * Handles attempts to divert to voicemail box.
+ * @param aTelNumber telephone number of the voicemail box
+ * @return KErrNone on success, otherwise KErrCancel
+ */
+ TInt VoiceMailActivationL( TDes& aTelNumber );
+
+ /**
+ * Handles attempts to divert to videomail box.
+ * @param aTelNumber telephone number of the videomail box
+ * @return KErrNone on success, otherwise KErrCancel
+ */
+ TInt VideoMailActivationL( TDes& aTelNumber );
+
+ /**
+ * Handles attempts to check divert status in restricted
+ * mode (KFeatureIdRestrictedCallDivert).
+ */
+ void CheckStatusRestrictedCallDivertL();
+
+ /**
+ * Handles attempts to cancel call divert restricted
+ * mode (KFeatureIdRestrictedCallDivert).
+ */
+ void CancelRestrictedCallDivertL();
+
+ /**
+ * Returns the contact name matching the number, or the number if
+ * no contact name is found.
+ * Pushes the found (i.e. returned) name into CleanupStack.
+ * @param aTelNum number on which to base the fetch.
+ * @return Pointer to contact name
+ */
+ HBufC* MatchNumberToContactLC( const TDesC& aTelNum );
+
+ /**
+ * @ return Reference to divert handling engine. Does NOT transfer
+ * ownership.
+ */
+ CPsetCallDiverting* DivertHandler();
+
+ /**
+ * @param aView Reference to call divert view. Does NOT transfer
+ * ownership.
+ */
+ void SetDivertView( CGSCallDivertView* aDivertView );
+
+ /**
+ * @return Currently selected divert service group.
+ */
+ TGSCallDivertServiceGroups DivertServiceGroup();
+
+ /**
+ * Sets new divert service group. Voice/Data/Fax...
+ * See TGSCallDivertServiceGroups
+ * @param aDivertServiceGroup New divert service group.
+ */
+ void SetDivertServiceGroup(
+ TGSCallDivertServiceGroups aDivertServiceGroup );
+
+ /**
+ * Checks number grouping feature from central repository.
+ * @return ETrue - Feature supported.
+ * EFalse - Feature not supported.
+ */
+ TBool NumberGroupingSupportedL();
+
+ private: // Functions
+
+ /**
+ * Symbian OS default constructor
+ */
+ void ConstructL ( );
+
+ /**
+ * C++ Constructor
+ */
+ CGSCallDivertModel ( );
+
+ /**
+ * Handles attempts to activate call divert in restricted
+ * mode (KFeatureIdRestrictedCallDivert).
+ */
+ void ActivateRestrictedCallDivertL( TTelNumber& aDivertNumber );
+
+ /**
+ * Sets parameters for calling Phone Settings' method.
+ */
+ void SetDivertParametersL( TCallDivertSetting& aDivert,
+ TBasicServiceGroups& aBsc,
+ TGSCallDivertServices aService,
+ TGSCallDivertServiceGroups aServiceGroup );
+
+ /**
+ * Uses the phonesettings-module.
+ *
+ * @param aDivert gives required information such as number,
+ * timervalue, status etc
+ * @param aInfo defines the precise action
+ * @param aVmbxValidNumber divert is to a voicemail box number
+ * @param aCommand this is for CancelAll command
+ */
+ void EngineOperatorL( TCallDivertSetting& aDivert,
+ const RMobilePhone::TMobilePhoneServiceAction & aInfo,
+ TBool& aVmbxValidNumber,
+ TInt aCommand,
+ TGSCallDivertServices aService,
+ TGSCallDivertServiceGroups aServiceGroup );
+
+ /**
+ * Removes special chars ('*','+','p','w' and '#') from VMBX number.
+ */
+ static void RemoveSpecialChar(
+ TDes& aVmbxNumber,
+ const TDesC& aSpecChar );
+
+
+ private: // Member variables
+
+ // Selected call divert group. Selected from the main view. Value is
+ // stored here as is accessed by several components.
+ TGSCallDivertServiceGroups iDivertServiceGroup;
+
+ // PhoneSettings engine object for diverts
+ CPsetCallDiverting* iForward;
+
+ // PhoneSettings container
+ CPsetContainer* iSettings;
+
+ // PSUI container
+ CPsuiContainer* iObsContainer;
+
+ // Shows PSUI notes
+ CPsuiDivertObs* iCfObserver;
+
+ // Sending with notes
+ CPhCltUssd* iBasicClient;
+
+ // For fetching line in use info
+ RSSSettings* iSsSettings;
+
+ // Contact engine for retrieving contact numbers
+ CPbkContactEngine* iContactEngine;
+
+ // Reference to call divert view. NOT owned.
+ CGSCallDivertView* iDivertView;
+
+ // Repository for number grouping run time variation.
+ CRepository* iNumberGroupingRepository;
+ };
+
+#endif /*CGSCALLDIVERTMODEL_H_*/