epoc32/include/mw/lbttriggerfiringeventnotifier.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h) This is the epoc32/include tree with the "platform" subtrees removed, and all but a selected few mbg and rsg files removed.

/*
* Copyright (c) 2006 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:  location triggering server client interface
*
*/



#ifndef LBTTRIGGERFIRINGEVENTNOTIFIER_H
#define LBTTRIGGERFIRINGEVENTNOTIFIER_H

#include <lbt.h>
#include <lbttriggerfiringeventobserver.h>

/**
 * Helper class to receive trigger firing event 
 * through observer interface. 
 *
 * @see RLbt::NotifyTriggerFired
 *
 * @lib lbt.lib
 *
 * @since S60 5.1
 */

class CLbtTriggerFiringEventNotifier : public CActive
    {
public:
    /**
     * Construct a trigger firing event notifier object. 
     *
     * When the object is constructed. The trigger firing event 
     * notification request is not issued to the
     * Location Triggering Server. Client shall call 
     * CLbtTriggerFiringEventNotifier::Start() to start
     * notification.
     *
     * @param[in] aLbt A referece to RLbt object. The subsession 
     * must be opened. Otherwise a panic is raised.
     * @param[in] aObserver A referece to the 
     * observer object to receive trigger firing event.
     * @param[in] aPriority An integer specifying the 
     * priority of this active object. CActive::TPriority 
     * defines a standard set of priorities. 
     *
     * @panic LocTriggering ELbtServerBadHandle If the 
     * subsession of aLbt is not opened.
     */
    IMPORT_C static CLbtTriggerFiringEventNotifier* NewL(
        RLbt& aLbt,
        MLbtTriggerFiringEventObserver& aObserver,
        TInt aPriority = CActive::EPriorityStandard);

    /**
     * Destructor. 
     *
     * If the notification is started, the 
     * destructor will cancel the notification.
     */
    IMPORT_C ~CLbtTriggerFiringEventNotifier();

    /**
     * Start trigger firing event notification. 
     *
     * After this function is called, when a 
     * trigger is fired, the
     * client will be notified from the observer interface.
     * 
     * Client shall call Cancel() function to stop the
     * trigger firing event notification.
     */
    IMPORT_C void Start();

private:
    //Derived from CActive
    void RunL();
    TInt RunError( TInt aError );
    void DoCancel();

private:
    /**
     * Default constructor
     */
    CLbtTriggerFiringEventNotifier(
        RLbt& aLbt,
        MLbtTriggerFiringEventObserver& aObserver,
        TInt aPriority = CActive::EPriorityStandard );
    
    /**
     * Second phase constructor
     */
    void ConstructL();

private:
    /** 
     * Trigger fire info
     */
    TLbtTriggerFireInfo iFiringEvent;
    
    /**
     * Reference to Lbt subsession.
     */
    RLbt& iLbt;
    
    /**
     * Reference to trigger fire event observer
     */
    MLbtTriggerFiringEventObserver& iObserver;
    };

#endif //LBTTRIGGERFIRINGEVENTNOTIFIER_H