messagingapp/msgui/msguiutils/src/msgmediautil.cpp
branchRCL_3
changeset 57 ebe688cedc25
equal deleted inserted replaced
54:fa1df4b99609 57:ebe688cedc25
       
     1 /*
       
     2  * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of "Eclipse Public License v1.0"
       
     6  * which accompanies this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Nokia Corporation - initial contribution.
       
    11  *
       
    12  * Contributors:
       
    13  * 
       
    14  * Description:This class provides duration of media file by parsing it
       
    15  *
       
    16  */
       
    17 #include <MsgMediaResolver.h>
       
    18 #include <xqconversions.h>
       
    19 #include <HbExtendedLocale>
       
    20 #include <QTime>
       
    21 
       
    22 #include "msgmediautil.h"
       
    23 
       
    24 // @see hbi18ndef.h
       
    25 static const char TIME_FORMAT[] = r_qtn_time_durat_min_sec_with_zero;
       
    26 
       
    27 //---------------------------------------------------------------
       
    28 // MsgMediaUtil::MsgMediaUtil
       
    29 // Constructor
       
    30 //---------------------------------------------------------------
       
    31 MsgMediaUtil::MsgMediaUtil()
       
    32     {
       
    33     
       
    34     }
       
    35 
       
    36 //---------------------------------------------------------------
       
    37 // MsgMediaUtil::MsgMediaUtil
       
    38 // Desctructor
       
    39 //---------------------------------------------------------------
       
    40 MsgMediaUtil::~MsgMediaUtil()
       
    41     {
       
    42     
       
    43     }
       
    44 
       
    45 //---------------------------------------------------------------
       
    46 // MsgMediaUtil::mediaDuration
       
    47 // @see header file
       
    48 //---------------------------------------------------------------
       
    49 QString MsgMediaUtil::mediaDuration(const QString& mediaFile)
       
    50     {
       
    51     QString formattedDuration;
       
    52     
       
    53     HBufC *name = XQConversions::qStringToS60Desc(mediaFile);
       
    54     TInt duration = 0;
       
    55     TRAPD(error, duration = mediaDurationL(*name));
       
    56     delete name;
       
    57     
       
    58     if ( error || duration <= 0)
       
    59         return formattedDuration;
       
    60 
       
    61     // Media duration in milliseconds.
       
    62     QTime mediaDuration(0, 0);
       
    63     mediaDuration = mediaDuration.addMSecs(duration);
       
    64     HbExtendedLocale locale = HbExtendedLocale::system();
       
    65     formattedDuration = locale.format(mediaDuration, TIME_FORMAT);
       
    66     return formattedDuration;
       
    67     }
       
    68 
       
    69 //---------------------------------------------------------------
       
    70 // MsgMediaUtil::mediaDurationL
       
    71 // @see header file
       
    72 //---------------------------------------------------------------
       
    73 TInt MsgMediaUtil::mediaDurationL(const TDesC& mediaFile)
       
    74     {
       
    75     CMsgMediaResolver* resolver = CMsgMediaResolver::NewLC();
       
    76     resolver->SetCharacterSetRecognition(EFalse);
       
    77     
       
    78     RFile rFile = resolver->FileHandleL(mediaFile);
       
    79     CleanupClosePushL( rFile );
       
    80 
       
    81     CMsgMediaInfo* info = resolver->CreateMediaInfoL( rFile );
       
    82     resolver->ParseInfoDetailsL(info, rFile);
       
    83     CleanupStack::PushL( info );
       
    84 
       
    85     TInt duration = info->Duration();
       
    86     
       
    87     CleanupStack::PopAndDestroy(3, resolver); // info, rFile, resolver
       
    88     
       
    89     return duration;
       
    90     }
       
    91 
       
    92 
       
    93 // EOF
       
    94