locationsystemui/locationsysui/locverifier/inc/lpdquerylauncherbase.h
changeset 0 667063e416a2
child 8 6fcbaa43369c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationsystemui/locationsysui/locverifier/inc/lpdquerylauncherbase.h	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,246 @@
+/*
+* 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:  Abstract base class for queries.
+*
+*/
+
+
+#ifndef CLPDQUERYLAUNCHERBASE_H
+#define CLPDQUERYLAUNCHERBASE_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <badesca.h>
+#include <coemain.h>
+#include <AknsItemID.h>
+#include <AknQueryDialog.h>
+#include <lbs/epos_cposprivacynotifier.h>
+
+
+// SYSTEM INCLUDE
+
+#include "lpddlgobserver.h"
+// FORWARD DECLARATIONS
+class CLpdGlobalPluginDialog;
+class CLpdMessagePluginDialog;
+class MLpdResultHandler;
+class CEikFormattedCellListBox;
+class CEikonEnv;
+
+    
+// CLASS DECLARATION
+
+/**
+*  Base class which handles the dialog and expiration timer.
+*  Expiration timer can be used to ensure that if the user doesn't handle
+*  a dialog in certain time the dialog is closed. NOTE: In current
+*  implementation the timer is not started, i.e. dialogs never expire.
+*  Implementations of this class should notify a result handler
+*  when dialog result is available. This base class takes care of
+*  notifying possible timeout with KErrTimedOut.
+*
+*  @lib locverifierdlg.lib
+*  @since 2.1
+*/
+class CLpdQueryLauncherBase : public CBase, public MLpdDlgObserver
+    {
+    public:  // Constructors and destructor
+                
+        /**
+        * Destructor. Exits possibly running dialog without callback.
+        */
+        virtual ~CLpdQueryLauncherBase();
+
+    public: // New functions, query setup and launching
+
+        /**
+        * Method for creating a query dialog object and reading its
+        * resources. Can and must be called once before launching.
+        * @param aResourceId
+        * @param aSuplNotifRequest Specifies if periodic notification request or not
+        */
+        virtual void PrepareQueryResourcesL( TInt aResourceId, TInt aSuplNotifRequest );
+
+        /**
+        * Method for setting text array.
+        * @param aArray listbox array, ownership is transferred
+        */
+        virtual void SetQueryTextArray( MDesCArray* aArray );
+
+        /**
+        * Method for setting message text for Message Query dialog.
+        */
+		virtual void SetMessageQueryTextL( const TDesC& aString, TCallBack aCallBack );
+		
+        /**
+        * Method for launching query, note that it must have been
+        * correctly prepared first.
+        */
+        virtual void StartQueryL();
+
+       /**
+        * Method for launching query for supl periodic request
+        * note that it must have been correctly prepared first.
+        */
+        virtual void StartSuplPeriodicQueryL();
+
+    public: // Other new functions
+
+        /**
+        * This method returns indexes of selected listbox items.
+        * Return value is valid after dialog has been finished
+        * (not cancelled) and new one has not yet been started.
+        * @return selected item indexes, ownership is not transferred
+        */
+        const CListBoxView::CSelectionIndexArray* SelectionIndexes() const;
+
+        /**
+        * Static timeout callback needed by the expiration timer.
+        * @param aThis, see TCallBack documentation
+        * @return always KErrNone
+        */
+        static TInt HandleTimeoutCallback( TAny* aThis );
+        
+
+        /**
+        * Method for cancelling query. Client classes can call this
+        * method if query canceling is needed.
+        */
+        void Cancel();
+        
+  
+        void CancelQuietly();
+
+        /**
+        * Returns a reference to the listbox (for formatting purposes).
+        * Leaves if listbox is NULL.
+        * @return listbox reference
+        */
+        CEikFormattedCellListBox& ListBoxL();
+ 
+        /**
+         * Sets the requestor buffer array that needs to be published to
+         * Cover UI
+         * @param aRequestorBuffer Flat buffer containing the list of requestors
+         */
+        void SetRequestorBuffer( TDes8&     aRequestorBuffer );
+     
+        /**
+         * Sets the Cover UI Command ID
+         * @param aCommandId Cover UI Command
+         */
+        void SetCoverUICommand( TInt        aCommand );
+        
+
+    public: // Functions from base classes
+
+        /**
+        * From MLpdDlgObserver, called when dialog is dismissed.
+        * This method calls also pure virtual method
+        * ExtendedHandleDlgDismissedL().
+        * @param aResult code of the query
+        * @param aCurrentIndex current item index
+        */
+        void HandleDlgDismissedL( TInt aResult, TInt aCurrentIndex);
+
+    protected: // Constructors and destructors
+
+        /**
+        * C++ constructor.
+        * @param aHandler of the query result
+        */
+        CLpdQueryLauncherBase( MLpdResultHandler& aHandler );
+
+        /**
+        * Symbian 2nd phase constructor.
+        */
+        void BaseConstructL();
+
+    protected: // New functions
+
+        /**
+        * This pure virtual method must be implemented
+        * by the derived class to handle the result code
+        * appropriately and to notify the observer of this
+        * class.
+        */
+        virtual void ExtendedHandleDlgDismissedL() = 0;
+
+    private: // New functions
+
+        /**
+        * Internal method for handling timeout, called from static
+        * TCallBack method.
+        */
+        void HandleTimeout();
+        
+        /**
+        * General internal method for exiting query, called by Cancel() or
+        * HandleTimeout(), or from the destructor.
+        * @param aCallback ETrue if callback from the dialog is wanted.
+        */
+        void ExitQuery( TBool aCallback );
+   
+     
+        /**
+         * Prepare the requestor buffers and Publish the dialog to the 
+         * Cover UI
+         *
+         */
+        void PublishDialogtoCoverL();
+
+
+    protected: // Data
+
+        // Reference to the result handler
+        MLpdResultHandler& iHandler;
+
+        // Result code from the dialog
+        TInt iResult;
+
+        // Current listbox item when dialog dismiss occurred
+        TInt iCurrentIndex;
+
+        // Selected listbox items when dialog dismiss occurred
+        CListBoxView::CSelectionIndexArray* iSelectionIndex; // owns
+        
+        // Exit reason in case of result code EAknSoftkeyExit
+        TInt iExitReason;
+
+        // Indicates whether this object owns the QueryDlg or
+        // whether it is given away
+        TBool iOwnsQueryDlg;
+       
+        // Indicates whether this object owns the msgQueryDlg or
+        // whether it is given away 
+        TBool iOwnsMsgQueryDlg;
+
+        // Pointer to the list query dialog
+        CLpdGlobalPluginDialog* iQueryDlg; // owns untils RunLD() called
+        
+        // Pointer to the message query dialog
+        CLpdMessagePluginDialog* iMsgQueryDlg;
+
+        // Expiration timer, not started in current implementation
+        CPeriodic* iTimer; // owns
+        
+        TPtrC8     iRequestorBuffer;
+        
+        TInt       iCoverUiCommand;                        
+        
+    };
+
+#endif      // CLPDQUERYLAUNCHERBASE_H   
+            
+// End of File