homesync/contentmanager/mediaservant/plugin/inc/mediaservantplugin.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:52:00 +0200
changeset 0 7f85d04be362
permissions -rw-r--r--
Revision: 200947 Kit: 200951

/*
* Copyright (c) 2008 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:  CMediaservantPlugin class definition
*
*/


#ifndef C_MEDIASERVANTPLUGIN_H
#define C_MEDIASERVANTPLUGIN_H

// INCLUDES
#include <gulicon.h>
#include <upnpplugininterface.h>
#include "mspropertywatcher.h"

// FORWARD DECLARATIONS
class CEikonEnv;
class CMSEngine;

/**
 * MediaServant UPnP plugin class
 *
 * @Since S60 5.1
 */
class CMediaservantPlugin : public CUPnPPluginInterface,
                            public MMSPropertyObserver
    {
    public:
        /**
         * Two-phased constructor.
         *
         * @since S60 5.1
         * @param aPluginObserver observer for plugins
         * @return pointer to CMediaservantPlugin
         */
        static CMediaservantPlugin* NewL(
                        MUPnPPluginObserver* aPluginObserver);

        /**
         * Two-phased constructor.
         *
         * @since S60 5.1
         * @param aPluginObserver observer for plugins
         * @return pointer to CMediaservantPlugin
         */
        static CMediaservantPlugin* NewLC(
                        MUPnPPluginObserver* aPluginObserver);                        

        /**
         * Informs to ECom that it has been destroyed.
         *
         * @since S60 5.1
         * @param None
         * @return None
         */
        virtual ~CMediaservantPlugin();

    protected:

// From base class CUPnPPluginInterface
        
        /**
         * From CUPnPPluginInterface
         * See base class definition
         */
        const CGulIcon& GetIcon();

        /**
         * From CUPnPPluginInterface
         * See base class definition
         */
        const TDesC& GetTitle();

        /**
         * From CUPnPPluginInterface
         * See base class definition
         */
        const TDesC& GetSecondaryText();

        /**
         * From CUPnPPluginInterface
         * See base class definition
         */
        void ExecuteL();

        /**
         * From CUPnPPluginInterface
         * See base class definition
         */
        TBool RequiresUpnpConfiguration();

// From base class MMSPropertyObserver

        /**
         * From MMSPropertyObserver
         * See base class definition
         */
        void PropertyChangedL( TCmService aService,
                               TInt aTotalItems,
                               TInt aProcessedItems,
                               TInt aItemsToBeProcessed );
                               
    private:

        /**
         * Performs the second phase construction.
         *
         * @since S60 5.1
         * @param aPluginObserver observer for plugins
         * @return None
         */
        void ConstructL( MUPnPPluginObserver* aPluginObserver );

        /**
         * Performs the first phase of two phase construction.
         *
         * @since S60 5.1
         * @param aEcomArguments, Ecom arguments
         * @return None
         */
        CMediaservantPlugin( TAny* aEcomArguments );

        /**
         * Load secondary text to plugin
         *
         * @since S60 5.1
         * @param None
         * @return None
         */
        void LoadPluginTextL();

    private:
        /**
         * Required in all plugins which implement CUPnPPluginInterface
         */
        MUPnPPluginObserver*            iPluginObserver;

        /**
         * Plugin primary text
         */
        HBufC*                          iTitle;             // owned
        /**
         * Plugin secondary text
         */
        HBufC*                          iSecondaryText;     // owned
        /**
         * Flag for indication that IAP setup is needed
         */
        TBool                           iRequiresUpnpConf;
        /**
         * Plugin icon
         */
        CGulIcon*                       iIcon;              // owned
        /**
         * Resource file offset
         */
        TInt                            iResFileOffset;
        /**
         * Control environment for res file handling
         */
        CEikonEnv*                      iCoeEnv;
        /**
         * Progress watcher
         */
        CMSPropertyWatcher*             iMSPropertyWatcher; // owned
        /**
         * Application engine for text loading
         */
        CMSEngine*                      iMSEngine;          // owned
    };


#endif // C_MEDIASERVANTPLUGIN_H