commondrm/drmsettingsplugin/inc/drmsettingsmodel.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 15:14:55 +0300
changeset 23 493788a4a8a4
parent 0 95b198f216e5
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
* Copyright (c) 2006-2007 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:  DRMSettinsPlugin model.
*
*/

#ifndef  DRMSETTINGSMODEL_H
#define  DRMSETTINGSMODEL_H

// INCLUDES
#include    <centralrepository.h>
#include    <e32property.h>
#include    "RoapStorageClient.h"

// FORWARD DECLARATIONS
class CDRMRIContext;

// CONSTANTS
const TInt KDRMTransactionTrackingDisabled = 0;
const TInt KDRMTransactionTrackingEnabled = 1;

const TInt KDRMAutomaticActivationNotAllowed = 0;
const TInt KDRMAutomaticActivationAllowed = 1;


// CLASS DEFINITIONS

/**
*  CDRMSettingsModel is the model class of DRMSettingsPlugin.
*  It provides functions to get and set setting values.
*/
class   CDRMSettingsModel : public CBase
    {

    public:  // Constructor and destructor
        /**
        * Two-phased constructor
        */
        static CDRMSettingsModel* NewL();

        /**
        * Destructor
        */
        ~CDRMSettingsModel();

    public: // New

        /**
        * Get transaction tracking state
        * @return KDRMTransactionTrackingDisabled
        *         KDRMTransactionTrackingEnabled
        */
        TInt TransactionTrackingStateL();

        /**
        * Set transaction tracking state
        * @param aValue updated value
        */
        void SetTransactionTrackingStateL( TInt aValue );

        /**
        * Get automatic activation state
        * @return KDRMAutomaticActivationNotAllowed
        *         KDRMAutomaticActivationAllowed
        */
        TInt AutomaticActivationStateL();

        /**
        * Set automatic activation state
        * @param aValue updated value
        */
        void SetAutomaticActivationStateL( TInt aValue );

        /**
        * Get usage reporting state
        * @return count of services for which reporting is allowed
        */
        TInt UsageReportingCount();

        /**
        * Get RI alias
        *
        * @param aIndex : Index of the RI context
        *
        * @return RI alias name or RI url if no alias available
        */
        HBufC* GetSingleRIAliasL( TInt aIndex );

        /**
        * Get the first RI alias, where metering is allowed
        * @return RI alias name or RI url if no alias available
        */
        HBufC* GetFirstAllowedMeteringRIAliasL();

        /**
        * Get number of RI contexts
        * @return number of RIContexts
        */
        TInt GetRiContextCount();

        /**
        * Get metering status of RI Context
        *
        * @param aIndex : Index of the RI context
        *
        * @return Status of metering
        */
        TBool IsMeteringAllowed( TInt aIndex );

        /**
        * Find out if metering is allowed for all RI Contexts
        *
        * @return Status of metering
        */
        TBool IsMeteringAllowedForAll();

        /**
        * Sets the value for metering to be enabled or disabled
        *
        * @param aIndex : Index of the RI context
        * @param aIsAllowed : ETrue if set to allowed, EFalse if not allowed
        */
        void SetMeteringStatus( TInt aIndex, TBool aIsAllowed );

        /**
        * Save the changes done to RI Contexs
        */
        void SaveMeteringChanges();

    private: // Private constructors

        /**
        * Default C++ contructor
        */
        CDRMSettingsModel();

        /**
        * Symbian OS default constructor
        * @return void
        */
        void ConstructL();

    private: // Data

        // DRM Settings Central Repository.
        CRepository* iDRMSettingsRepository;

        // Roap storage client
        Roap::RRoapStorageClient* iRoapStorageClient;

        // List of service providers with which device has been registered
        RPointerArray<CDRMRIContext> iRIContextList;

    };

#endif // DRMSETTINGSMODEL_H

// End of File