--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/msguiutils/src/msgmediautil.cpp Mon May 03 12:29:07 2010 +0300
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2010 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:This class provides duration of media file by parsing it
+ *
+ */
+#include <MsgMediaResolver.h>
+#include <XQConversions.h>
+
+#include "msgmediautil.h"
+
+//---------------------------------------------------------------
+// MsgMediaUtil::MsgMediaUtil
+// Constructor
+//---------------------------------------------------------------
+MsgMediaUtil::MsgMediaUtil()
+ {
+
+ }
+
+//---------------------------------------------------------------
+// MsgMediaUtil::MsgMediaUtil
+// Desctructor
+//---------------------------------------------------------------
+MsgMediaUtil::~MsgMediaUtil()
+ {
+
+ }
+
+//---------------------------------------------------------------
+// MsgMediaUtil::mediaDuration
+// @see header file
+//---------------------------------------------------------------
+QString MsgMediaUtil::mediaDuration(const QString& mediaFile)
+ {
+ QString formattedDuration(" ");
+
+ HBufC *name = XQConversions::qStringToS60Desc(mediaFile);
+ TInt duration = 0;
+ TRAPD(error, duration = mediaDurationL(*name));
+ delete name;
+
+ if ( error )
+ return formattedDuration;
+
+ int sec_duration = duration / 1000;
+ int hour_component = sec_duration / (60*60);
+ int min_component = (sec_duration - (hour_component*60*60))/60;
+ int sec_component = (sec_duration - (hour_component*60*60) - (min_component*60));
+
+ if( hour_component > 0)
+ {
+ formattedDuration = QString("%1:%2:%3").arg(hour_component, 2, 10, QChar('0')).
+ arg(min_component, 2, 10, QChar('0')).arg(sec_component, 2, 10, QChar('0'));
+ }
+ else
+ {
+ formattedDuration = QString("%1:%2").arg(min_component, 2, 10, QChar('0')).
+ arg(sec_component, 2, 10, QChar('0'));
+ }
+
+ return formattedDuration;
+ }
+
+//---------------------------------------------------------------
+// MsgMediaUtil::mediaDurationL
+// @see header file
+//---------------------------------------------------------------
+TInt MsgMediaUtil::mediaDurationL(const TDesC& mediaFile)
+ {
+ CMsgMediaResolver* resolver = CMsgMediaResolver::NewLC();
+ resolver->SetCharacterSetRecognition(EFalse);
+
+ RFile rFile = resolver->FileHandleL(mediaFile);
+ CleanupClosePushL( rFile );
+
+ CMsgMediaInfo* info = resolver->CreateMediaInfoL( rFile );
+ resolver->ParseInfoDetailsL(info, rFile);
+ CleanupStack::PushL( info );
+
+ TInt duration = info->Duration();
+
+ CleanupStack::PopAndDestroy(3, resolver); // info, rFile, resolver
+
+ return duration;
+ }
+
+
+// EOF
+