securitydialogs/simlockui/inc/SimLockDataHandlingDelegate.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 00:44:34 +0200
changeset 1 d5423fbb4f29
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* ============================================================================
*  Name         : SimLockDataHandlingDelegate.h     
*  Part of      : Sim Lock UI Application
*  Description  : Handles reading and writing of Sim Lock data including
                  unlocking the Sim Lock.
*  Version      : 
*  
* Copyright (c) 2005-2010 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:   Build info file for Ado domain appinstall 
* ============================================================================
*/

#ifndef SIMLOCKDATAHANDLINGDELEGATE_H
#define SIMLOCKDATAHANDLINGDELEGATE_H

// System Includes
#include <e32base.h>

// Forward Declarations
class RMmCustomAPI;
struct TSimPathStr;
struct TSimLockHeadStr;
class CActiveSchedulerWait;
class TIsiReceiveC;
class CPeriodic;

/**
 *  CSimLockDataHandlingDelegate
 *
 *  Delegate class to handle communication with lower layers of S60 and Symbian,
 *  and also the native( ISA ) layer.
 *
 *  @lib euser.lib
 *  @lib iscapi.lib
 *  @lib isimessage.lib
 *  @lib etel.lib
 *  @lib etelmm.lib
 *  @lib customapi.lib
 */
class CSimLockDataHandlingDelegate : public CActive
    {
public: // Public Constructor / Destructor

    /**
     * Two-phased constructor
     *
     */
    static CSimLockDataHandlingDelegate* NewL( RMmCustomAPI& aCustomAPI );

    /**
     * Destructor
     *
     */
    virtual ~CSimLockDataHandlingDelegate();

public: // Public API

     /**
      * Open the Sim Lock( type 1 ) given a passcode.
      *
      * @param aPassword TDesC of the password to open lock
      * @return Indicates the result of the Sim Lock open attempt
      */
    TInt OpenSimLock( const TDesC& aPassword );

     /**
      * Determine if the Sim Lock is open.
      *
      * @return Indicates if Sim Lock is open
      */
    TBool IsSimLockOpen() const;


private: // Private Constructors

     /**
      * C++ constructor.
      *
      * @param aCustomAPI ETel custom API object
      */
    CSimLockDataHandlingDelegate( RMmCustomAPI& aCustomAPI );

     /**
      * Symbian OS default constructor.
      */
    void ConstructL();


private: // From CActive

    /**
     * Active object run method
     * @see CActive
     */
    virtual void RunL();

    /**
     * Active object cancel method
     * @see CActive
     */
    virtual void DoCancel();
    
private: // Local Member API
       
    /**
     * CPeriodic Callback function for elapsed timer
     *
     * @param aUnused requred for interface
     * @return required but unused
     */
    static TInt TimerElapsed(TAny* aUnused);

    /**
     * Pause execution and allow active scheduler to run until the current outstanding
     * request complets
     *
     */
    void CompleteRequestWithTimeout();

private:    // Member Data
    /**
     * Indicates if the Sim Lock is open per the last read from the Sim Lock
     * server.
     */
    TBool iLockIsOpen;

    /**
     * Handle to ETel MultiMode Custom API server
     */
    RMmCustomAPI& iCustomAPI;

    /**
     * Help with asynchronous requests
     */
    CActiveSchedulerWait* iSchedulerWait;

    /**
     * Indicates that Sim Lock data has been read
     */
    TBool iDataHasBeenRead;

    /**
     * Timeout handling timer
     * owns
     */
    CPeriodic* iTimer;

    };

#endif //SIMLOCKDATAHANDLINGDELEGATE_H

// End of File