diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/mw/lbttriggerentry.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/mw/lbttriggerentry.h Tue Mar 16 16:12:26 2010 +0000 @@ -0,0 +1,479 @@ +/* +* 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Abstract base class for location triggering entries +* +*/ + + +#ifndef LBTTRIGGERENTRY_H +#define LBTTRIGGERENTRY_H + +#include +#include + +class CLbtTriggerConditionBase; + +/** + * Abstract base class for location triggering entries. + * + * It provides methods to determine the trigger type and to define + * basic trigger attributes. The following attributes are defined + * in location triggering entries. + * + * - Id Defines the identity of a trigger. The Id is allocated + * by Location Triggering Server and it's unique among all triggers + * currently exist in the system. If a trigger is removed from the system, + * its Id may be reused by another trigger. + * This attribute can not be modified after the trigger is created. + * + * - Name The name attribute defines a human-readable name for + * the trigger. The purpose of the name attribute is mainly for the end + * user to be able to identify the trigger in the UI. The maximum length + * of the name is @p KLbtMaxNameLength characters. This attribute can + * be modified after the trigger is created. + * + * - State This attribute specifies if the trigger is enabled + * or disabled. A disabled trigger is not supervised by the Location + * Triggering Server and thus will never be fired. This attribute can + * be modified after the trigger is created. + * + * - Requestors The requestors attribute consists of a requestor stack + * with contacts and/or services using the location service. Requestor + * information is used for privacy queries when trigger is created + * and fired. Requestor information is not allowed to be changed + * once the trigger has been created. + * + * - Manager UI. Manager UI is the UI application that can view, edit + * and delete the trigger. Manager UI application shall be provided by the user + * of this API. If it's possible, client application must specify the manager + * UI application when the trigger is created. Note, Manager UI may be different + * from the trigger's owner. Trigger's owner is the process that created the + * trigger. Triggers can be directly accessed by the Manager UI application. + * Although this attribute is not mandatory when creating a trigger. it's + * highly recommended that it is specified. It cannot be modified after the + * trigger is created. + * + * - Trigger condition. Trigger condition specifies in what situation + * a trigger shall be fired. Current system supports only basic trigger + * condition. Basic trigger condition is defined by a trigger area and + * direction of terminal's movement. Only circular area can be used as + * trigger area in current system. This attribute can be modified after + * the trigger is created. + * + * @lib lbt.lib + * @since S60 5.1 + */ +class CLbtTriggerEntry : public CBase + { +public: + /** + * Trigger type definition. It defines the type of the trigger + * entry. + */ + enum TType + { + /** + * Session trigger + */ + ETypeSession = 1, + /** + * Start-up trigger + */ + ETypeStartup = 2 + }; + + /** + * Trigger attributes identifications. + * + * These ids can be combined and used to form an attribute mask when + * retrieving partial attributes from Location Triggering Server. + */ + enum TAttribute + { + /** + * Trigger Id + */ + EAttributeId = 0x0001, + /** + * Trigger name + */ + EAttributeName = 0x0002, + /** + * Trigger state + */ + EAttributeState = 0x0004, + /** + * Trigger requestor + */ + EAttributeRequestor = 0x0008, + /** + * Trigger manager UI + */ + EAttributeManagerUi = 0x0010, + /** + * Trigger rearm time + */ + EAttributeRearmTime = 0x0020, + /** + * Trigger condition + */ + EAttributeCondition = 0x0080, + /** + * Process ID of start-up trigger. It includes + * process executable name and process UID type. + */ + EAttributeStartUpProcessId = 0x0100, + /** + * Command-line argument string for start-up trigger + */ + EAttributeStartUpCommandLine = 0x0200, + + }; + + + /** + * Specifies the state of a trigger. + */ + enum TLbtTriggerState + { + /** + * The trigger is enabled + */ + EStateEnabled = 1, + /** + * The trigger is disabled + */ + EStateDisabled = 2 + }; + + /** + * Destructor + */ + IMPORT_C virtual ~CLbtTriggerEntry(); + + /** + * Gets the type of the trigger. + * + * @return The type of trigger entry. + */ + IMPORT_C virtual TType Type() const = 0; + + /** + * Gets the trigger ID. + * + * The ID is allocated and set by the Location Triggering Server when a + * trigger is successfully created. Trigger ID is unique in the system. + * This function returns @p KLbtNullTriggerId if the ID is not + * set before. + * + * @return The ID of the trigger entry, or @p KLbtNullTriggerId if the + * trigger ID has not been set. + */ + IMPORT_C const TLbtTriggerId& Id() const; + + /** + * Sets trigger entry id. SetId is not used during trigger creation as it + * is auto generated by the LBT server. This information is only used during + * deletion / modification of triggers. This information when specified + * during trigger creation, will be ignored by LBT server. + * + * @param[in] aId The ID of the trigger entry, or @p KLbtNullTriggerId. + */ + IMPORT_C void SetId( TLbtTriggerId aId ); + + /** + * Gets the name of the trigger entry. + * + * If the name is not set, an empty string is returned. Maximum + * length of the name is @p KLbtMaxNameLength. + * + * @return The name of the trigger entry. + */ + IMPORT_C const TDesC& Name() const; + + /** + * Sets the name of the trigger entry. + * + * @param[in] aName The name of the trigger entry. + * @leave KErrArgument If the name of the trigger is longer than + * @p KLbtMaxNameLength. + */ + IMPORT_C void SetNameL( const TDesC& aName ); + + /** + * Gets the rearm time interval. + * + * If no interval is specified for the trigger, this function + * returns + * @p KLbtDefaultTimeToRearm which is 600s or 10 minutes. + * + * @return Rearm time interval. + */ + IMPORT_C TInt TimeToRearm() const; + + /** + * Sets the time interval to reactivate the trigger after the + * trigger is fired. + * + * @param[in] aSeconds The time interval after which the trigger + * is set effective by the Location Triggering Server. Client + * applications can set 0 to indicate no delay, in which case + * the trigger will remain effective through out its life span. + * Range is 0 (KLbtMinTimeToRearm) to +2147483647 (KLbtMaxTimeToRearm) + * which is +24855 days (approximately 68 years) + * @panic KErrArgument If the time set is out of range. + */ + IMPORT_C void SetTimeToRearm( TInt aSeconds ); + + /** + * Gets trigger entry state. + * + * If no state has been set for the trigger, this function returns + * @p ELbtTriggerEnabled. + * + * @return The trigger entry state. + */ + IMPORT_C TLbtTriggerState State() const; + + /** + * Sets the trigger entry state. + * + * @param[in] aState The trigger entry state. + */ + IMPORT_C void SetState( TLbtTriggerState aState ); + + /** + * Gets requestors of the trigger entry. + * + * Requestor information is used by the Location Triggering Server to + * verify that the user allows location information to be sent to + * the specified requestors when a trigger fires. + * + * Requestors attribute is a mandatory trigger attribute. If the requestors + * attribute is not set when the trigger is created in the server, the + * trigger creation will fail. + * + * If requestors have not been set before, this function returns + * an empty requestor stack. + * + * Refer to Location Acquisition API for detailed information on + * requestors. + * + * @see RLbt::CreateTriggerL() + * @see RRequestorStack + * + * @param[out] aRequestors The requestors of the trigger entry. + */ + IMPORT_C void GetRequestorsL( RRequestorStack& aRequestors ) const; + + /** + * Sets requestors of trigger entry. + * + * Requestor information is used by the Location Triggering Server to + * verify that the user allows location information to be sent to + * the specified requestors when a trigger fires. + * + * Requestors attribute is a mandatory trigger attribute. If the requestors + * attribute is not set when the trigger is created in the server, the + * trigger creation will fail. + * + * Refer to Location Acquisition API for detailed information on + * requestors. + * + * @see RLbt::CreateTriggerL() + * + * @param[in] aRequestors The requestors of trigger entry. + * @leave KErrArgument The stack contains no requestors. + */ + IMPORT_C void SetRequestorsL( const RRequestorStack& aRequestors ); + + /** + * Sets requestor of trigger entry. + * + * Requestor information is used by the Location Triggering Server to + * verify that the user allows information to be sent to the specified + * requestors when a trigger fires. + * + * Requestors attribute is a mandatory trigger attribute. If the requestors + * attribute is not set when the trigger is created in the server, the + * trigger creation will fail. + * + * @see RLbt::CreateTriggerL() + * + * @param[in] aType identifies the type of requestor, a service or a contact. + * @param[in] aFormat determines the type of data held in aData + * @param[in] aData is requestor data. Can be a telephone number, a URL etc. + */ + IMPORT_C void SetRequestorL( + CRequestor::TRequestorType aType, + CRequestor::TRequestorFormat aFormat, + const TDesC& aData ); + + /** + * Gets UID of the manager UI. The UID means + * the UID3 value, which identifies the particular application. + * If the UID of the manager UI is not set, this function + * returns KNullUid. + * + * @return The UID of manager UI application. KNullUid if the UID + * has not been set. + */ + IMPORT_C TUid ManagerUi() const; + + /** + * Sets UID of the manager UI. + * + * @param[in] aUid The SID value if available. Else the UID3 value, which is + * the idenfifier of the particaular application. KNullUid can be used to + * remove previous setting. + */ + IMPORT_C void SetManagerUi( TUid aUid ); + + /** + * Gets the trigger condition. + * + * The ownership of the returned trigger condition object is + * not transferred to the client. The pointer can be + * used to modify the trigger condition. + * + * @return A non-const pointer to the trigger's + * trigger condition. NULL if the trigger condition is not set. + */ + IMPORT_C CLbtTriggerConditionBase* GetCondition(); + + /** + * Gets the trigger condition. + * + * The ownership of the returned trigger condition object is + * not transferred to the client. The pointer can be + * used to modify the trigger condition. + * + * @return A const pointer to the trigger's + * trigger condition. NULL if the trigger condition is not set. + */ + IMPORT_C const CLbtTriggerConditionBase* GetCondition() const; + + /** + * Sets trigger condition. + * + * This object takes the ownership of the trigger condition object. + * + * @param[in] aCondition Pointer to the new trigger condition object. + * This object takes the ownership of aCondition. NULL can be used + * to remove previous setting. + */ + IMPORT_C void SetCondition( CLbtTriggerConditionBase* aCondition ); + + /** + * Internalizes the trigger object's details and attributes + * from stream. + * + * The presence of this function means that the standard template + * operator>>() ( defined in s32strm.h ) is available to internalize objects + * of this class. + * + * @param[in] aStream Stream from which the object should be internalized. + */ + IMPORT_C void InternalizeL( RReadStream& aStream ); + + /** + * Externalizes the trigger object's details and attributes + * to stream. + * + * The presence of this function means that the standard template + * operator<<() ( defined in s32strm.h ) is available to externalize objects + * of this class. + * + * @param[in] aStream Stream to which the object should be externalized. + */ + IMPORT_C void ExternalizeL( RWriteStream& aStream ) const; + +protected: + /** + * Internalize method that subclass must implement. + * @param[in] aStream Stream from which the object should be internalized. + */ + virtual void DoInternalizeL( RReadStream& aStream ) = 0; + + /** + * Externalize method that subclass must implement. + * @param[in] aStream Stream to which the object should be externalized. + */ + virtual void DoExternalizeL( RWriteStream& aStream ) const = 0; + + /** + * Constructor. + */ + CLbtTriggerEntry(); + +private: + /** + * By default, prohibit copy constructor + */ + CLbtTriggerEntry( const CLbtTriggerEntry& ); + + /** + * Prohibit assigment operator + */ + CLbtTriggerEntry& operator= ( const CLbtTriggerEntry& ); + +private: //data + /** + * Id + */ + TLbtTriggerId iId; + + /** + * Name + */ + HBufC* iName; + + /** + * State + */ + TLbtTriggerState iState; + + /** + * Rearm time + */ + TInt iRearmTime; + + /** + * Requestors + */ + RRequestorStack iRequestor; + + /** + * manager UI + */ + TUid iManagerUi; + + /** + * Trigger condition + */ + CLbtTriggerConditionBase* iTriggerCondition; + + /** + * Reserved for schedule information + */ + TAny* iSchedule; + + /** + * Reserved pointer for future extension + */ + TAny* iReserved; + }; + + +#endif // LBTTRIGGERENTRY_H