commondrm/drmutility/inc/drmutilityui.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:29:38 +0300
branchRCL_3
changeset 26 1221b68b8a5f
parent 16 457cd4423b8c
child 27 1481bf457703
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 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:  Provides operations for ui usage of DRM Utility API
*
*/


#ifndef CDRMUTILITYUI_H
#define CDRMUTILITYUI_H

//*** system include files go here:
#include <e32base.h>
#include <f32file.h>
#include <AknNotifyStd.h>

//*** forward declarations go here:
class CDRMConstraint;
class CCoeEnv;
class CStringResourceReader;
class CEikDialog;
class CAknResourceNoteDialog;
class CMediatorEventProvider;

namespace ContentAccess
    {
    class CData;
    }

namespace DRM
{

    //*** forward declarations go here:
    class CDrmUtilityInfoNoteWrapper;

 /**
  *  Utility class for DRM utility related graphic functions
  *
  *  @lib drmutilitycommon.lib
  *  @since S60 v5.0
  */
NONSHARABLE_CLASS( CDrmUtilityUI ) : public CBase
    {

public:

    /**
     * Creates a new CDrmUtilityUI object and returns a pointer to it
     *
     * @return A functional CDrmUtilityUI -object
     * @leave System wide error code
     */
    IMPORT_C static CDrmUtilityUI* NewL( CCoeEnv* aCoeEnv = NULL );

    /**
     * Creates a new CDrmUtilityUI object and returns a pointer to it
     * leaves the returned object to the cleanup stack
     *
     * @return A functional CDrmUtilityUI -object
     * @leave System wide error code
     */
    IMPORT_C static CDrmUtilityUI* NewLC( CCoeEnv* aCoeEnv = NULL );

    /**
     * Destructor
     */
    virtual ~CDrmUtilityUI();

    /**
    * Display query dialog
    */
    IMPORT_C TInt DisplayQueryWithIdL( TInt aTextResourceId,
                                       TInt aQueryResourceId );

    IMPORT_C TInt DisplayQueryWithIdValueL( TInt aTextResourceId,
                                            TInt aQueryResourceId,
                                            const TDesC& aString );

    IMPORT_C TInt DisplayQueryL( TInt aTextResourceId, TInt aValue );

    IMPORT_C TInt DisplayQueryL( TInt aTextResourceId, const TDesC& aString );

    IMPORT_C TInt DisplayQueryL( TInt aTextResourceId,
                                 const TDesC& aString,
                                 TInt aValue,
                                 TInt aStringPos = -1,
                                 TInt aValuePos = -1 );

    IMPORT_C TInt DisplayQueryL( TDesC& aPromptText, TInt aQueryResourceId );

    IMPORT_C TInt SetAutomatedQueryL( CDRMConstraint* aConstraint );

   /**
    * Display note
    */
    IMPORT_C void ShowFutureRightsNoteL( CDRMConstraint* aConstraint );

    IMPORT_C void DisplayNoteL( TInt aTextResourceId );

    IMPORT_C void DisplayNoteL( TInt aTextResourceId, const TDesC& aString );

    IMPORT_C void DisplayNoteL( TInt aTextResourceId, TInt aValue );

    IMPORT_C void DisplayNoteL( TDesC& aPromptText,
                                TInt aResourceId,
                                const TDesC& aString = KNullDesC,
                                TInt aValue = -1 );

   /**
    * Display list query
    */
    IMPORT_C TInt DisplayPopupWindowsForPreviewL(
                                                ContentAccess::CData& aContent,
                                                TInt aPreviewType,
                                                TInt aMediaType );


protected:

private:

    CDrmUtilityUI( CCoeEnv* aCoeEnv );

    void ConstructL();

    CAknResourceNoteDialog* CreateNoteForResourceL( TInt aResId );

    TAknGlobalNoteType GlobalNoteTypeForResource( TInt aResId );

    TInt GetOmaStartTime( CDRMConstraint* aConstraint, TTime& aStartTime );

    TInt EvaluatePreviewMediaTypeL( ContentAccess::CData& aContent,
                                    TInt aPreviewType );

    void PrepareSecondaryDisplayL( CEikDialog& aDialog,
                                   TInt aResourceId,
                                   const TDesC& aString = KNullDesC,
                                   TInt aValue = -1 );

    void CancelSecondaryDisplayL( TInt aResourceId );


private: // Data members

    // Control environment, not owned
    CCoeEnv* iCoeEnv;

    // Paths of the resource files
    HBufC* iUtilityResourceFile;
    HBufC* iAvkonResourceFile;

    // Resource offsets in CoeEnv, when it is available
    TInt iUtilityResourceFileOffset;
    TInt iAvkonResourceFileOffset;

    // Used to read resources when CoeEnv is not available
    CStringResourceReader* iUtilityStringResourceReader;
    CStringResourceReader* iAvkonStringResourceReader;

    // File server
    RFs iFs;

    // Used to queue up global notes
    RPointerArray<CDrmUtilityInfoNoteWrapper> iNoteList;

    CMediatorEventProvider* iEventProvider;

    };
}

#endif // CDRMUTILITYUI_H