/*
 * Copyright (c) 2009 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: mms creation mode checks
 *
 */

#ifndef MMS_CONFORMANCE_CHECK_OPERATION_H
#define MMS_CONFORMANCE_CHECK_OPERATION_H

#include <QObject>

#include <MsgMediaInfo.h>
#include <qstring.h>

#ifdef BUILD_MSGUI_UTILS_DLL
#define MSGUI_UTILS_DLL_EXPORT Q_DECL_EXPORT
#else
#define MSGUI_UTILS_DLL_EXPORT Q_DECL_IMPORT
#endif

class CMmsConformance;
class CMsgMediaResolver;
class CDRMHelper;
class HbAction;

enum MmsConformanceCheckErrors
{
    EInsertSuccess = 0, EInsertQueryAbort, EInsertNotSupported
};

/**
 * This class provides interfaces which validate the media for 
 * insertion into editor and also validates if the mms message
 * can be forwarded.
 * 
 */

class MSGUI_UTILS_DLL_EXPORT MmsConformanceCheck : public QObject
{
    Q_OBJECT
    
public:

    /**
     * Constructor
     */
    MmsConformanceCheck();

    /**
     * Destructor
     */
    ~MmsConformanceCheck();

    /**
     * Checks if the file passes conformance checks 
     * @param file, filepath
     * @param showNote, note is shown if enabled
     * @return EInsertSuccess for successfull cases
     */
    int checkModeForInsert(const QString& file,bool showNote = true);

    /**
     * Validates if message can be forwarded
     * The validation checks include slide count check,MMS size check and
     * media conformance checks and this fucntion should be called only for mms
     * @param  messageId message Id of the message to be validate
     * @return true if message can be forwarded
     *         false if message cant be forwarded
     */
    bool validateMsgForForward(int messageId);

private:

    /*
     * Launch notification dialog
     */
    void showPopup(const QString& text);
    
private slots:
    
	/**
     * This slot is called when insert media dialog is launched.
     * @param action selected action (yes or no).
     */
    void onDialogInsertMedia(HbAction* action);
private:

    /*
     * Mms creation mode
     */
    TInt iCreationMode;
    
    /**
     * Max MMS composition size
     */
    int iMaxMmsSize;    
    
    /**
     * Conformance status
     */
    TUint32 iConfStatus;

};
#endif //MMS_CONFORMANCE_CHECK_OPERATION_H
