diff -r 3fec62e6e7fc -r 90fe62538f66 defaultapplicationsettings/server/inc/das_servmimeapps.h --- a/defaultapplicationsettings/server/inc/das_servmimeapps.h Thu Aug 19 09:55:50 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,533 +0,0 @@ -/* -* Copyright (c) 2005-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: Keeps info about Services, MIMEs and Applications -* -*/ - - - -#ifndef C_DEFAULTAPPSERVMIMEAPPS_H -#define C_DEFAULTAPPSERVMIMEAPPS_H - -class CApaMaskedBitmap; -class CDefaultAppServMimeApps; -class CServicesDB; -class RApaLsSession; - -/** The UID of the General Settings Application */ -const TUid KUidGS = { 0x100058EC }; //we define this here because we use it in several places - -/** - * Helper class: stores an Application name, its UID and some other info (how many - * service&MIMEs pair it supports, is it platform application or not) - * This helper class is used to sort the list of Applications that support a Service&MIME pair - * - * @since S60 v5.0 - */ -class CAppHelper : public CBase - { -public: - /** flags used with the app helper. */ - enum - { - EFlagPlatformApp =0x0001, - EFlagNameNotOwned =0x0002 - }; -public: - - /** - * Destructor. - */ - ~CAppHelper(); - - /** - * Symbian OS two-phased constructor - * @return - */ - static CAppHelper* NewLC(const TDesC& aName, const TInt aUid); - - /** - * Symbian OS two-phased constructor - * @return - */ - static CAppHelper* NewLC(const CAppHelper& aApp); - - /** - * This function is used for ordering an array of CAppHelper objects - * - * @since S60 v5.0 - * @param a1 CAppHelper object - * @param a2 CAppHelper object - */ - static TInt OrderApplications(const CAppHelper& a1, const CAppHelper& a2); -private: - - /** - * C++ constructor - */ - CAppHelper(const TInt aUid, const TInt aScore, const TInt aFlags=0); -public: - - /** - * the App name - * Owned or Not Owned, depending on flags (iFlag&EFlagNameNotOwned). - */ - HBufC* iName; - - /** - * the UID of the application - */ - TInt iUid; - - /** - * the application score (how many Services & MIMEs it supports) - */ - TInt iScore; - - /** - * Object flags - */ - TInt iFlags; - }; - -/** - * Helper class: stores a Service & Mime Pair - * - * This class stores data specific to a Service & MIME pair: - * -the Service + MIME string - * -the Service Uid - * -the MIME - * -a list of applications (CAppHelper) that support this Service & MIME pair - * -the list index and Uid of the default application for this Service & MIME pair - * - * @since S60 v5.0 - */ -class CServiceMime : public CBase - { - friend class CDefaultAppServMimeApps; -public: - - /** - * C++ constructor - */ - CServiceMime(); - - /** - * Destructor. - */ - ~CServiceMime(); - - /** - * This function is used for ordering an array of CServiceMime objects - * - * @since S60 v5.0 - * @param a1 CServiceMime object - * @param a2 CServiceMime object - */ - static TInt OrderServiceMimes(const CServiceMime& a1, const CServiceMime& a2); - -private: - /** - * String that contains the localized Service + MIME name - * Owned. - */ - HBufC *iServiceMime; - - /** - * The Uid of the service - */ - TUid iServiceUid; - - /** - * the MIME string - * Owned. - */ - HBufC8 *iMime; - - /** - * list of applications that support this Service & MIME pair - * Owned (members of the array). - */ - RPointerArray iApplications; - - /** - * the UID of the default application for this Service & MIME - */ - TUid iDefaultAppUid; - - /** - * the list index for the default application - * this has the following special values: - * -1 : the default is (yet) unknown - * -2 : there is a single app in the list, its priority is System - * (this means: do not add other apps unless they have system priority) - * -3 : there are more than one applications in the list, ALL have the System priority - * (this also means: do not add other apps unless they have system priority) - */ - TInt iDefaultApp; - - /** - * indicates if the Service & MIME pair instance is used by a task or not - */ - TBool iUsedByTasks; - }; - - -/** - * Helper class: stores a Task - * - * This class stores data specific to a Task: - * -the task caption/title (list layout and title layout) - * -the lists of Service (UIDs) & MIMEs associated with this task - * -the MIME label - * -a list of Services & MIMEs objects (and their associated application list) that correspond to the list - * of Services & MIMEs associated with the task - * -a list of applications (CAppHelper) that are associated with this task - * -the UID and list index of the default application for the task, in the list(s) above. - * - * How this works: - * The Service & MIME pairs associated with the task are those pairs for which changing the default application for the - * task will have an impact: the new default becomes the default application for all these pairs, if applicable. - * The list of candidate default applications is build from the Service & MIME pairs associated with the task: any - * application that can handle at least one pair, is added to the list. The score corresponds to the number of pairs an - * application is able to handle (the better the score, the more suitable the application is for the task). - * When a new application is made default, it is also made default for Open + the MIME label. This way we can retrieve - * the default application for the task, to display it to the user. - * The list of Services & MIME objects are instances of CServiceMime that correspond to the list of Services & MIMEs that - * are associated with the task (the associated Services & MIMEs is a "theoretical" list, while the CServiceMime list - * is a list of Services & MIMEs that were found in the system. The Services & MIMEs in this object list is a subset of - * the associated Services & MIMEs. The reunion of all Applications lists associated with each CServiceMime object in the - * list is going to be same as the list of Applications that are associated with the Task. - * When a new default application is selected for the task, this new default is saved in 2 ways: - * -the new default application is made default for the Open service and the MIME label. This way, we can retrieve next - * time the default application for the task. There is no danger to launch this default for opening the MIME label, since - * no application is supposed to support the MIME label. - * -the new default application is made default for all the Services & MIMEs associated with the task: for each instance - * of CServiceMime in the list, the default is looked in the application list of the object: if it is found (which means - * that the new default application supports that Service & MIME), then the new task default is made default for the - * current Service & MIME too. - * - * @since S60 v5.0 - */ -class CMediaTask : public CBase - { - friend class CDefaultAppServMimeApps; -public: - - /** - * Symbian OS two-phased constructor - * @return - */ - static CMediaTask* NewLC( TResourceReader& aReader ); - - /** - * Destructor. - */ - ~CMediaTask(); -private: - - /** - * C++ constructor - */ - CMediaTask(); - - /** - * Symbian constructor - */ - void ConstructL( TResourceReader& aReader ); -private: - /** - * Task caption, list layout - * Owned. - */ - HBufC *iTaskList; - - /** - * Task caption, title layout - * Owned. - */ - HBufC *iTaskTitle; - - /** - * List of MIMEs associated with the task - * Owned (members of the array). - */ - RPointerArray iMimes; - - /** - * List of services associated with the task (1 to 1 correspondence with iMimes, they form pairs together) - */ - RArray iServicesUids; - - /** - * the MIME label - * Owned. - */ - HBufC8 *iMimeLabel; - - /** - * the list of real/discovered CServiceMime associated with the task - * Not Owned (members of the array). - */ - RPointerArray iSMs; //not owned - - /** - * Application captions for the applications associated with the task - * Owned (members of the array). - * Application names NOT owned (names are owned by CServiceMime objects) - */ - RPointerArray iApplications; - - /** - * The UID of the default application for the task - */ - TUid iDefaultAppUid; //the Uid for the default application - - /** - * the index (in the application list) of the default application for the task - */ - TInt iDefaultApp; //index - - }; - - -/** - * Engine class for the application - * - * This class stores a list of Services and MIMEs and it may store a list of Tasks. All data handling operations - * are implemented in this class. - * There are 2 types of clients for the Default App Server: - * 1. General Settings Application (using a plugin). For this type of client we have to display first a list of tasks, - * and if the user switches to the advanced view, we have to display a list of all Services & MIMEs in the system - * for which the user can change the default application. - * 2. Normal applications may also be clients for the Default APp Server. For normal applications, only a list of Services - * and MIMEs for which the cliet application is a default candidate is displayed. The task list is not constructed. - * When the class is instantiated, it looks in the system (AppArc) and it builds all the data structures it needs. After - * that, it can populate various lists for displaying them to the user, and can also change the default application, as - * instructed by the user (AppUi calls the functions). - * - * @since S60 v5.0 - */ -class CDefaultAppServMimeApps : public CBase - { -public: - /** flags used with the Set Default service. They influence what data is stored in the data structures. */ - enum - { - EFlagNoObserver=1, - //R&D values - EFlagShowAllServicesAndMimes = 0x00010000, - EFlagGsClient = 0x00020000, - }; - - /** - * Symbian OS two-phased constructor - * @return - */ - static CDefaultAppServMimeApps* NewL(const TUid& aAppUid, TInt aServiceFlags); - - /** - * Symbian OS two-phased constructor - * @return - */ - static CDefaultAppServMimeApps* NewLC(const TUid& aAppUid, TInt aServiceFlags); - - /** - * Destructor. - */ - virtual ~CDefaultAppServMimeApps(); - - /** - * This function fills with entries a data structure used by a List Box to display Services & MIMEs or Tasks - * - * @since S60 v5.0 - * @param aServicesAndMimes the container for the list entries - */ - void GetServicesAndMimesListL(CDesCArray& aServicesAndMimesArray); - - /** - * This function fills a Popup-list data structure with applications specific to the selected Service & MIME or Task - * - * @since S60 v5.0 - * @param aIndex the index of the selected Service & MIME pair or Task - * @param aApplicationsArray the container for the list entries - * @param aTitle a container for the title of the list (also filled by the function) - */ - void GetApplicationsListL(TInt aIndex, CDesCArray& aApplicationsArray, HBufC*& aTitle); - - /** - * This function sets a new default, for a Service & MIME pair or for a Task. - * The function also updates the list of Services & MIMEs (or Tasks), to display the new default application - * - * @since S60 v5.0 - * @param aServiceAndMimeIndex the index of the selected Service or Mime (or Task) - * @param aDefaultAppIndex the index of the new default application - * @param aServicesAndMimesArray the container for the list entries (to be updated) - */ - void UpdateDefaultL(TInt aServiceAndMimeIndex, TInt aDefaultAppIndex, CDesCArray *aServicesAndMimesArray); - - /** - * This function resets (removes) the defaults associated with a certain task, - * or it can remove all the defaults - * - * @since S60 v5.0 - * @param aCathegory specifies the task index for which the function should reset - * the default, or -1 if all defaults should be reset - * @return 0 or error code (KErrArgument -> aCathegory has an invalid value) - */ - TInt RestoreFactorySettingsL(TInt aCathegory); - -private: //construction - - /** - * C++ constructor - */ - CDefaultAppServMimeApps(); - - /** - * This function builds the info database behind this class. - * For all available services in the resources it creats the corresponding - * Services & MIMEs (or Tasks) instances. - * - * @since S60 v5.0 - * @param aAppUid the Uid of the client application - * @param aServiceFlags different service flags requested by the client - */ - void ConstructL(TUid aAppUid, TInt aServiceFlags); - - /** - * This function builds part the info database behind this class. - * It creates the Services & MIMEs (or Tasks) instances for the given service - * - * @since S60 v5.0 - * @param aServiceUid the Uid of the current service - * @param aServiceIndex the index of the current service - * @param aServiceFlags different service flags requested by the client - * @param aServicesDb pointer to an instance that holds localized service names - */ - void AddMIMEsForServiceL(TUid aServiceUid, TInt aServiceIndex, TInt aServiceFlags, CServicesDB* aServicesDb); - - /** - * This function sorts the Services & MIMEs and their applications. - * It also sorts the Serivces & MIMEs associated with tasks - * - * @since S60 v5.0 - */ - void BeautifyAndSortServMimeApps(void); - - /** - * This function reads from the resource file the list of tasks (and associated data). - * This function is used during construction - * - * @since S60 v5.0 - * @param aResourceId the resource id corresponding to the tasks resource - */ - void GetTaskListL( TInt aResourceId ); - - /** - * This function adds a new Application to a list of an Service & Mime object. - * - * @since S60 v5.0 - * @param aServMime the Service & Mime object - * @param aAppUid the uid of the inserted application - * @param aPrio the priority of the inserted application for the Service & MIME of the host object - * @param aLs pointer to a RApaLsSession object (so we do not need to create a new connection) - */ - void InsertApplicationL(CServiceMime& aServMime, const TUid& aAppUid, const TDataTypePriority& aPrio, const RApaLsSession *aLs); - - /** - * This function takes a task and a Service & MIME object. It checks all the applications that support the given - * Service & MIME object (from its list). If an application is not in the task's application list, this function adds - * it there, with a score of 1. If the application is already in the list, then its score is incremented. - * The Service & MIME object is also marked as being used by a task. - * - * @since S60 v5.0 - * @param aTask the selected task - * @param aServMime the selected Service & MIME object - */ - void PopulateTaskWithApplicationsL(CMediaTask& aTask, CServiceMime* aServMime); - - /** - * This function creates a string that will become en element of a list box. To create the string, the function - * concatenates several sub-strings. - * - * @since S60 v5.0 - * @param aServMime the selected Service & MIME object - * @param aInsertDefaultApp if TRUE, creates an object that also contains the name of the default application for the - * Service & MIME pair - * @return the created string - */ - HBufC* GetServiceAndMimeStringLC(CServiceMime& aServMime, TBool aInsertDefaultApp) const; - - /** - * This function creates a string that will become en element of a list box. To create the string, the function - * concatenates several sub-strings. - * - * @since S60 v5.0 - * @param aMediaTask the selected Task object - * @param aInsertDefaultApp if TRUE, creates an object that also contains the name of the default application for the - * Service & MIME pair - * @return the created string - */ - HBufC* GetMediaTaskStringLC(CMediaTask& aMediaTask, TBool aInsertDefaultApp) const; - -private: //data - - /** - * The list of Services & MIMEs - * Owned (members of the array). - */ - RPointerArray iServMimes; - - /** - * The list of Tasks - * Owned (members of the array). - */ - RPointerArray iTasks; - - /** - * The list of Services & MIMEs that are used by tasks (but otherwise would have been deleted, since they are not - * displayed to the user, because there is no more than one default candidate for each Service & MIME in this list) - * Owned (members of the array). - */ - RPointerArray iTaskServMimes; //ServMimes with a single application, used in tasks - -public: - - /** - * the list of elements, ar required by the dialog - */ - CDesCArraySeg iList; - - /** - * the UID of the client application - */ - TUid iAppUid; - - /** - * TRUE if the current view is the GS simplified view (if this var is TRUE, it also implies that GS is our client) - */ - TBool iSimplifiedView; - - /** - * if TRUE, the client application does not observe our exit. In this case do not display "Exit" in the menu, since - * the client application will not exit when the server exits. - */ - TBool iFlagNoObserver; - }; - - -#endif // C_DEFAULTAPPSRVMIMEVIEW_H - -// end of file \ No newline at end of file