mmsengine/mmsmessage/inc/mmsownnumber.h
changeset 0 72b543305e3a
child 23 238255e8b033
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsengine/mmsmessage/inc/mmsownnumber.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,248 @@
+/*
+* 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:   checks if a given number is terminal's own number
+*
+*/
+
+
+
+
+#ifndef MMSOWNNUMBER_H
+#define MMSOWNNUMBER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <badesca.h>
+
+#include <MVPbkContactFindObserver.h>
+#include <MVPbkContactStoreListObserver.h>
+#include <MVPbkSingleContactOperationObserver.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class RFs;
+
+class CVPbkContactManager;
+class MVPbkContactStoreList;
+class MVPbkContactOperationBase;
+class MVPbkStoreContact;
+
+// CLASS DECLARATION
+
+/**
+*  Own numer matching
+*
+*  @lib mmsmessage.lib
+*  @since Series 60 3.1
+*/
+
+NONSHARABLE_CLASS( CMmsOwnNumber ) : public CActive,
+    public MVPbkContactFindObserver,
+    public MVPbkContactStoreListObserver,
+    public MVPbkSingleContactOperationObserver
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CMmsOwnNumber* NewL( RFs* aFs );
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CMmsOwnNumber();
+
+    public: // New functions
+        
+        /**
+        * Starts searching for the number.
+        * @since Series 60 3.1
+        * @param aNumberList array of number from which to search own number
+        * @param aFs file system pointer
+        * @return the index of user's number in the array or error code
+        */
+        
+        TInt StartL( const CDesCArray& aNumberList );
+
+    public: // Functions from base classes
+
+        /**
+        * From MVPbkContactFindObserver
+        * Called when find is complete. Callee takes ownership of the results.
+        * In case of an error during find, the aResults may contain only 
+        * partial results of the find.
+        * @since Series 60 3.1
+        *
+        * @param aResults Array of contact links that matched the find.
+        *                 Callee must take ownership of this object in
+        *                 the end of the function, ie. in case the function
+        *                 does not leave.
+        */
+        void FindCompleteL(MVPbkContactLinkArray* aResults);
+        
+        /**
+        * From MVPbkContactFindObserver
+        * Called in case the find fails for some reason.
+        * @since Series 60 3.1
+        * 
+        * @param aError One of the system wide error codes.
+        */
+        void FindFailed(TInt aError);
+        
+        /**
+        * From MVPbkContactStoreListObserver
+        * Called when the opening process is complete, ie. all stores have been reported
+        * either failed or successful open.
+        */
+        void OpenComplete();
+        
+        /**
+        * From MVPbkContactStoreObserver
+        * Called when a contact store is ready to use.
+        */
+        virtual void StoreReady(MVPbkContactStore& aContactStore);
+
+        /**
+        * From MVPbkContactStoreObserver
+        * Called when a contact store becomes unavailable.
+        * Client may inspect the reason of the unavailability and decide whether or not
+        * it will keep the store opened (ie. listen to the store events).
+        * @param aContactStore The store that became unavailable.
+        * @param aReason The reason why the store is unavailable.
+        *                This is one of the system wide error codes.
+        */
+        virtual void StoreUnavailable(MVPbkContactStore& aContactStore, TInt aReason);
+
+        /**
+        * From MVPbkContactStoreObserver
+        * Called when changes occur in the contact store.
+        * @see TVPbkContactStoreEvent
+        *
+        * @param aStoreEvent Event that has occured.
+        */
+        virtual void HandleStoreEventL(
+                MVPbkContactStore& aContactStore, 
+                TVPbkContactStoreEvent aStoreEvent);
+                
+        /**
+        * From MVPbkSingleContactOperationObserver
+        * Called when operation is completed.
+        *
+        * @param aOperation    the completed operation.
+        */
+        virtual void VPbkSingleContactOperationComplete(
+                MVPbkContactOperationBase& aOperation,
+                MVPbkStoreContact* aContact);
+
+        /**
+        * From MVPbkSingleContactOperationObserver
+        * Called if the operation fails.
+        *
+        * @param aOperation    the failed operation.
+        * @param aError        error code of the failure.
+        */
+        virtual void VPbkSingleContactOperationFailed(
+                MVPbkContactOperationBase& aOperation, 
+                TInt aError);
+
+        
+    protected:  // New functions
+        
+    protected:  // Functions from base classes
+        
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CMmsOwnNumber();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL( RFs* aFs );
+        
+        /**
+        * From CActive: Cancel current operation.
+        */
+        void DoCancel();
+        
+        /**
+        * From CActive: Active object completion
+        */
+        void RunL();
+        
+        /**
+        * From CActive: Active object error
+        */
+        TInt RunError( TInt aError );
+        
+        /*
+        * Search for contact
+        */
+        void SearchL();
+        
+        /*
+        * if more than one contact found, check for duplicate entries
+        */
+        void CheckDuplicatesL();
+        
+
+    public:     // Data
+    
+    protected:  // Data
+
+    private:    // Data
+        
+        enum TMmsOwnNumberStates
+            {
+            EMmsOwnNumberIdle,
+            EMmsOwnNumberOpening,
+            EMmsOwnNumberSearching,
+            EMmsOwnNumberCheckingDuplicates,
+            EMmsOwnNumberClosing,
+            EMmsOwnNumberDone
+            };
+        
+      	CActiveSchedulerWait iActiveSchedulerWait;
+      	const CDesCArray* iNumberList; // caller's number list
+      	TInt iIndex; // index of own number in array
+      	CVPbkContactManager* iContactManager;
+      	RFs* iFs; // file manager
+      	TInt iNumberToMatch; // array index for the number to be matched
+      	TInt iDigitsToMatch; // the number of digits to match in a phone number
+      	TInt iContactToMatch; // array index of contact for exact matching
+      	MVPbkContactStoreList* iContactList; // just a reference, not allocated memory
+      	TBool iMatch; // tells if the contact was an exact match
+      	TInt iNumberOfStores; // number of stores to search
+      	TInt iNumberOfOpenStores; // number of stores we managed to open
+      	TInt iState; // state machine state
+      	MVPbkContactLinkArray* iResultArray;
+      	MVPbkContactOperationBase* iOperation;
+      	MVPbkStoreContact* iContact;
+
+
+    };
+    
+#endif      // MMSOWNNUMBER_H   
+            
+// End of File