--- a/messagingapp/msgui/msguiutils/src/mmsconformancecheck.cpp Mon May 03 12:29:07 2010 +0300
+++ b/messagingapp/msgui/msguiutils/src/mmsconformancecheck.cpp Fri Jun 25 15:47:40 2010 +0530
@@ -21,24 +21,26 @@
#include <MmsConformance.h>
#include <centralrepository.h>
#include <mmsconst.h>
-#include <msgmediainfo.h>
+#include <MsgMediaInfo.h>
#include <fileprotectionresolver.h>
#include <MsgMediaResolver.h>
#include <DRMHelper.h>
#include <MmsEngineInternalCRKeys.h>
#include <hbmessagebox.h>
-#include <hbnotificationdialog>
+#include <HbNotificationDialog>
+#include <hbaction.h>
#include "unidatamodelloader.h"
#include "unidatamodelplugininterface.h"
-#include "unieditorgenutils.h" // This is needed for KDefaultMaxSize
-#include "s60qconversions.h"
+#include "UniEditorGenUtils.h" // This is needed for KDefaultMaxSize
+#include <xqconversions.h>
#include "debugtraces.h"
//DEFINES
#define RMODE_INSERT_ERROR hbTrId("Unable to insert. Object format not supported in restricted creation mode.")
#define INSERT_ERROR hbTrId("txt_messaging_dpopinfo_unable_to_attach_item_file")
+#define INSERT_PROTECTED_ERROR hbTrId("txt_messaging_dpopinfo_unable_to_attach_protected")
#define INSERT_QUERY_CONFRM hbTrId("The receiving phone may not support this object. Continue?")
// -----------------------------------------------------------------------------
// MmsConformanceCheck::MmsConformanceCheck
@@ -48,7 +50,7 @@
{
QDEBUG_WRITE("MmsConformanceCheck::MmsConformanceCheck start");
- TRAP_IGNORE(
+ TRAP_IGNORE(
CRepository* repository = CRepository::NewL(KCRUidMmsEngine);
CleanupStack::PushL(repository);
@@ -62,7 +64,7 @@
repository->Get( KMmsEngineMaximumSendSize, maxSize );
iMaxMmsSize = maxSize;
- CleanupStack::PopAndDestroy(repository);
+ CleanupStack::PopAndDestroy(repository);
);
QDEBUG_WRITE("MmsConformanceCheck::MmsConformanceCheck end");
@@ -85,33 +87,33 @@
bool showNote)
{
QDEBUG_WRITE("MmsConformanceCheck::CheckModeForInsert start");
- HBufC* filePath = S60QConversions::qStringToS60Desc(file);
+ HBufC* filePath = XQConversions::qStringToS60Desc(file);
if (filePath)
{
CleanupStack::PushL(filePath);
CMmsConformance* mmsConformance = CMmsConformance::NewL();
mmsConformance->CheckCharacterSet(EFalse);
-
+
CleanupStack::PushL(mmsConformance);
-
- CMsgMediaResolver* mediaResolver = CMsgMediaResolver::NewL();
+
+ CMsgMediaResolver* mediaResolver = CMsgMediaResolver::NewL();
mediaResolver->SetCharacterSetRecognition(EFalse);
-
+
CleanupStack::PushL(mediaResolver);
-
+
RFile fileHandle = mediaResolver->FileHandleL(*filePath);
CleanupClosePushL(fileHandle);
CMsgMediaInfo* info = mediaResolver->CreateMediaInfoL(fileHandle);
mediaResolver->ParseInfoDetailsL(info,fileHandle);
-
+
TMmsConformance conformance = mmsConformance->MediaConformance(*info);
- TUint32 confStatus = conformance.iConfStatus;
+ iConfStatus = conformance.iConfStatus;
CleanupStack::PopAndDestroy(4);
-
+
// In "free" mode user can insert images that are larger by dimensions than allowed by conformance
if (iCreationMode != EMmsCreationModeRestricted)
{
@@ -121,22 +123,21 @@
| EMmsConfNokTooBig);
// If user answers yes to Guided mode confirmation query he/she moves to free mode
- if ( (confStatus & i) && ! (confStatus & j))
+ if ( (iConfStatus & i) && ! (iConfStatus & j))
{
if (iCreationMode == EMmsCreationModeFree || info->Protection()
& EFileProtSuperDistributable)
{
// SuperDistribution not checked here
// Mask "FreeModeOnly" and "ScalingNeeded" away in free mode
- confStatus &= ~EMmsConfNokFreeModeOnly;
- confStatus &= ~EMmsConfNokScalingNeeded;
+ iConfStatus &= ~EMmsConfNokFreeModeOnly;
+ iConfStatus &= ~EMmsConfNokScalingNeeded;
}
- else if (showNote && launchEditorQuery())
+ else if (showNote)
{
- // Query accepted.
- // Mask "FreeModeOnly" and "ScalingNeeded" away in free mode
- confStatus &= ~EMmsConfNokFreeModeOnly;
- confStatus &= ~EMmsConfNokScalingNeeded;
+ HbMessageBox::question(INSERT_QUERY_CONFRM, this,
+ SLOT(onDialogInsertMedia(HbAction*)),
+ HbMessageBox::Yes | HbMessageBox::No);
}
else
{
@@ -145,16 +146,24 @@
}
}
}
- else if (confStatus & EMmsConfNokDRM || confStatus
- & EMmsConfNokNotEnoughInfo || confStatus
- & EMmsConfNokNotSupported || confStatus
- & EMmsConfNokFreeModeOnly || confStatus & EMmsConfNokCorrupt)
+ else if (iConfStatus & EMmsConfNokDRM || iConfStatus
+ & EMmsConfNokNotEnoughInfo || iConfStatus
+ & EMmsConfNokNotSupported || iConfStatus
+ & EMmsConfNokFreeModeOnly || iConfStatus & EMmsConfNokCorrupt)
{
// Sanity check
// "Not conformant" assumed if check fails.
if(showNote)
{
- showPopup(INSERT_ERROR);
+ // For protected objects.
+ if (EFileProtNoProtection != info->Protection())
+ {
+ showPopup(INSERT_PROTECTED_ERROR);
+ }
+ else
+ {
+ showPopup(INSERT_ERROR);
+ }
}
return EInsertNotSupported;
@@ -174,18 +183,20 @@
UniDataModelLoader* pluginLoader = new UniDataModelLoader();
UniDataModelPluginInterface* pluginInterface =
pluginLoader->getDataModelPlugin(ConvergedMessage::Mms);
- pluginInterface->setMessageId(messageId);
+ int id = pluginInterface->setMessageId(messageId);
- //Check if slide count is greater than 1
- if (pluginInterface->slideCount() > 1)
+ //Check if invalid id and slide count is greater than 1
+ if ( ( id <= 0 ) ||
+ (pluginInterface->slideCount() > 1) )
{
delete pluginLoader;
return false;
}
- //Check if message size is inside max mms composition limits
+ //Check if message size is inside max mms composition limits
if (pluginInterface->messageSize() > iMaxMmsSize)
{
+ delete pluginLoader;
return false;
}
@@ -211,7 +222,6 @@
if (!retValue)
{
delete pluginLoader;
-
return false;
}
@@ -233,17 +243,23 @@
}
delete pluginLoader;
-
return retValue;
}
-// ---------------------------------------------------------
-// MmsConformanceCheck::launchEditorQuery
-// ---------------------------------------------------------
+// -----------------------------------------------------------------------------
+// MmsConformanceCheck::onDialogInsertMedia
+// -----------------------------------------------------------------------------
//
-bool MmsConformanceCheck::launchEditorQuery()
+void MmsConformanceCheck::onDialogInsertMedia(HbAction* action)
{
- return HbMessageBox::question(INSERT_QUERY_CONFRM);
+ HbMessageBox *dlg = qobject_cast<HbMessageBox*> (sender());
+ if (action == dlg->actions().at(0)) {
+ // Query accepted.
+ // Mask "FreeModeOnly" and "ScalingNeeded" away in free mode
+ iConfStatus &= ~EMmsConfNokFreeModeOnly;
+ iConfStatus &= ~EMmsConfNokScalingNeeded;
+ }
+
}
// -----------------------------------------------------------------------------