--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationsystemui/locationsysui/locverifier/inc/lpdverifierplugin.h Wed Sep 01 12:24:21 2010 +0100
@@ -0,0 +1,325 @@
+/*
+* Copyright (c) 2002 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: Verifier plug-in which derives from CPosPrivacyNotifier.
+*
+*/
+
+
+// INCLUDES
+
+#include <EPos_CPosPrivacyNotifier.h>
+#include <lbs/epos_privacy.h>
+#include <lbs/epos_cposrequestor.h>
+
+
+#include "lpdrequestao.h"
+#include "lpdresulthandler.h"
+#include "lpdperiodicreqinfo.h"
+#include "lpdperiodicprocessor.h"
+
+
+#ifndef CLPDVERIFIERDLG_H
+#define CLPDVERIFIERDLG_H
+
+// SYSTEM INCLUDE
+#include <bldvariant.hrh> // For the 3.2 Flag
+
+
+// FORWARD DECLARATIONS
+class CLpdVerifierQueryLauncher;
+class CLpdNotifierQueryLauncher;
+class CEikonEnv;
+class CLpdRequestorProcessor;
+class RPosRequestorStack;
+class CLocRequestorUtilsResolver;
+class CLpdPeriodicProcessor;
+
+
+// CLASS DECLARATION
+
+/**
+* Verifier plug-in which derives from CPosPrivacyNotifier.
+* Notifiers are based on RNotifier framework, and this particular
+* notifier is used to launch a privacy query for accepting/rejecting
+* privacy requests. It also shows informational notes and error
+* messages, which are received as notification.
+*
+* @lib locverifierdlg.lib
+* @since 2.1
+*/
+class CLpdVerifierPlugin : public CPosPrivacyNotifier, public MLpdResultHandler,
+ public MLpdPeriodicRequestObserver
+ {
+ // To allow calls to HandleNextRequest() from active object
+ friend class CLpdRequestAO;
+
+ private:
+
+ /**
+ * Enumeration for defining the type of Verification or notification
+ * request
+ */
+ enum TDialogType
+ {
+ EVerificationRequest,
+ ENotification,
+ ENotificationTimeout,
+ ECancelNotification,
+ ESuplPeriodicNotification,
+ };
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @return created object
+ */
+ static CLpdVerifierPlugin* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CLpdVerifierPlugin();
+
+ /**
+ * To popup a notification note for verification cancellation event.
+ */
+ void NotifyCancellationL(
+ TPosRequestSource aSource,
+ TPosVerifyCancelReason aReason,
+ TPosRequestDecision aDecision,
+ const RPosRequestorStack& aRequestors );
+
+ /**
+ * Method for cancelling query or freeing
+ * resources after finishing query.
+ */
+ void FreeQueryResources();
+
+ public: // Functions from base classes
+
+ /**
+ * From CPosPrivacyNotifier, called when a new request arrives.
+ * @param aRequestId identifier of received request
+ */
+ void HandleNewRequestL( TPosQNRequestId aRequestId );
+
+ /**
+ * From CPosPrivacyNotifier, called when request has been cancelled
+ * @param aRequestId identifier of cancelled request
+ */
+ void HandleRequestCancelled( TPosQNRequestId aRequestId );
+
+ /**
+ * From CPosPrivacyNotifier, called when all requests are cancelled.
+ */
+ void HandleAllRequestCancelled();
+
+ /**
+ * From MLpdResultHandler, called when verification result is available.
+ * @param aResultCode
+ */
+ void HandleVerificationResultL( TInt aResultCode );
+
+ /**
+ * From MLpdResultHandler, called when notification has been done.
+ * @param aResultCode
+ */
+ void HandleNotificationResultL( TInt aResultCode );
+
+ /**
+ * From MLpdResultHandler, called if leave occurred in callback method
+ * @param aError code
+ */
+ void HandleLeave( TInt aError );
+
+
+
+
+ protected: // New functions
+
+ /**
+ * Non-leaving internal method for handling next pending request.
+ */
+ void HandleNextRequest();
+
+ /**
+ * Internal method for handling next pending request.
+ */
+ void HandleNextRequestL();
+
+ /**
+ * Internal helper method used by HandleNextRequestL().
+ */
+ void HandleNextVerificationL();
+
+ /**
+ * Internal helper method used by HandleNextRequestL().
+ */
+ void HandleNextNotificationL();
+
+ /**
+ * Internal helper method used by HandleNextNotificationL().
+ */
+ void HandleNextNonPeriodicNotificationL();
+
+ /**
+ * Internal helper method used by HandleNextNotificationL().
+ */
+ void HandleNextPeriodicNotificationL();
+
+ /**
+ * Internal helper method.
+ */
+ void NotifyCancellationL( TPosRequestSource aSource,
+ TPosVerifyCancelReason aReason,
+ TPosRequestDecision aDecision );
+
+ /**
+ * Internal helper method.
+ * Completes current request and continues queue handling.
+ */
+ void CompleteCurrentAndContinue( TInt aResultCode );
+
+ /**
+ * Handles assert errors. Panics in debug build but leaves in release
+ * build, as this component runs in EikSrv and must never panic.
+ */
+ void HandleAssertErrorL() const;
+
+ /**
+ * Panics in debug build but does nothing in release build.
+ */
+ void HandleDebugAssertError() const;
+
+ /**
+ * Handle the request if it is periodic.
+ */
+ void EnqueIfPeriodicL(TPosQNRequestId aRequestId);
+
+ /**
+ * From MLperiodicRequestObserver, called if the currently
+ * displayed notifier has to be updated
+ * @param aError code
+ */
+ void UpdateCurrentNotifierL();
+
+ /**
+ * Gets session id of request
+ * @param aSessionId The session id
+ */
+ void GetSessionIdL( TInt64& aSessionId );
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CLpdVerifierPlugin();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Starts the Query dialog
+ * @param aQueryDialog Query dialog that has to be started
+ * @param aDialogType Dialog type
+ * @param aDecision Decision Type
+ */
+ void StartQueryDialogL( CLpdQueryLauncherBase* aQueryDialog,
+ TDialogType aDialogType,
+ TPosRequestDecision aDecision );
+
+ /**
+ * Packs the Requestor buffer to send across to Cover UI. The
+ * ownership of the buffer is transferred back to the callee
+ * @return CBufFlat* Flat buffer containing the list of requestors
+ */
+ CBufFlat* PackRequestorBufferL();
+
+ /**
+ * Determines the Cover UI command corresponding to a paricular
+ * request
+ * @param TDialogType Request Type
+ * @param TPosRequestDecision Decision Type
+ * @return TInt Cover UI Command ID.
+ */
+ TInt CoverUICommandL( TDialogType aRequestType,
+ TPosRequestDecision aDecision );
+
+ /**
+ * Checks the type of request and helps to know
+ * if a given request is of SUPL periodic type
+ * @param aCurrentRequest request id
+ * @return CPosRequestor::TRequestType type of request enum
+ */
+ CPosRequestor::TRequestType CheckRequestTypeL();
+
+
+ private: // Data
+
+ // Cancellation info needed if cancel handling is postponed
+ class TCancelInfo
+ {
+ public:
+ TBool iCancelled;
+ TPosVerifyCancelReason iReason;
+ TPosRequestDecision iDecision;
+ TPosRequestSource iSource;
+ };
+
+ // Cancellation info needed if verification query is cancelled
+ // during rule query and handling is therefore postponed
+ TCancelInfo iCancelInfo;
+
+ // Identifier of currently handled request
+ TPosQNRequestId iCurrentRequest;
+
+ // Type of the current request, valid if iCurrentRequest valid
+ TRequestType iCurrentRequestType;
+
+ // Result code of verifier query, needed if user cancels rule query
+ TInt iVerifyResult;
+
+ // Resource file needs to be explicitely added
+ // to the environment. Adding returns an offset value.
+ TInt iResourceOffset;
+
+ // Location request accept/reject query object
+ CLpdVerifierQueryLauncher* iVerifierQuery; // owns
+
+ // Location request accept/reject query object
+ CLpdNotifierQueryLauncher* iNotifier; // owns
+
+ // Active object, used to let requests run to
+ // completion instead of recursive calls.
+ CLpdRequestAO* iRequestActiveObject; // owns
+
+ CLpdRequestorProcessor* iRtorProcessor; // owns
+
+ CLocRequestorUtilsResolver* iUtils; // owns
+
+ CLpdPeriodicProcessor* iPeriodicProcessor; // owns
+
+ RArray<TLpdPeriodicReqInfo> iPeriodicNotQue; // owns
+
+ CEikonEnv* iEnv; // uses
+
+ };
+
+#endif // CLPDVERIFIERDLG_H
+
+// End of File