defaultapplicationsettings/server/inc/das_servmimeapps.h
branchRCL_3
changeset 13 90fe62538f66
parent 12 3fec62e6e7fc
child 14 5f281e37a2f5
--- 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<CAppHelper> 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<HBufC8> iMimes;
-    
-    /**
-     * List of services associated with the task (1 to 1 correspondence with iMimes, they form pairs together) 
-     */
-    RArray<TInt> iServicesUids;
-    
-    /**
-     * the MIME label
-     * Owned.
-     */
-    HBufC8 *iMimeLabel;
-    
-    /**
-     * the list of real/discovered CServiceMime associated with the task
-     * Not Owned (members of the array).
-     */
-    RPointerArray<CServiceMime> 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<CAppHelper> 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<CServiceMime> iServMimes;
-    
-    /**
-     * The list of Tasks
-     * Owned (members of the array).
-     */
-    RPointerArray<CMediaTask> 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<CServiceMime> 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