mpxplugins/viewplugins/views/metadataeditordialog/src/mpxmetadataeditordialog.cpp
branchRCL_3
changeset 14 943ff5625028
parent 2 b70d77332e66
child 17 c8156a91d13c
--- a/mpxplugins/viewplugins/views/metadataeditordialog/src/mpxmetadataeditordialog.cpp	Fri Feb 19 22:48:30 2010 +0200
+++ b/mpxplugins/viewplugins/views/metadataeditordialog/src/mpxmetadataeditordialog.cpp	Fri Mar 12 15:42:25 2010 +0200
@@ -268,6 +268,7 @@
             res = ETrue;
             break;
             }
+        case EAknSoftkeyBack:
         case EAknSoftkeyExit:
             {
             RestoreNaviLabelL();
@@ -633,6 +634,8 @@
                 SetControlTextL( EMPXMetadataEditorDlgCtrlIdComposer,
                     iMedia->ValueText( KMPXMediaMusicComposer ), KNullDesC );
                 }
+
+            PopulateFileDetailsL();            
             DrawNow();
             }
         else
@@ -841,12 +844,15 @@
 
     // store the latest navi pane
     iNaviDecorator = iNaviPane->Top();
-
-    // set the new navi label
-    iEmptyNaviDecorator =
+    
+    if(iNaviDecorator)
+        {   
+        // set the new navi label
+        iEmptyNaviDecorator =
         iNaviPane->CreateNavigationLabelL(KNullDesC);
 
-    iNaviPane->PushL( *iEmptyNaviDecorator );
+        iNaviPane->PushL( *iEmptyNaviDecorator );
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -888,6 +894,8 @@
             {
             aMenuPane->SetItemDimmed( EMPXCmdSongDetailsChange, ETrue );
             }
+        aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
+        
         // Dim out the Avkon menu items
         aMenuPane->SetItemDimmed( EAknFormCmdEdit, ETrue );
         aMenuPane->SetItemDimmed( EAknFormCmdAdd, ETrue );
@@ -2379,7 +2387,7 @@
         }
     else
         {
-        resId = R_MPX_CUI_SONG_DETAILS_SOFTKEYS_OPTIONS_EMPTY_DONE;
+        resId = R_MPX_CUI_SONG_DETAILS_SOFTKEYS_OPTIONS_EMPTY_BACK;
         }
 
     ButtonGroupContainer().SetCommandSetL( resId );
@@ -2820,4 +2828,292 @@
     return ret;
     }
 
+
+
+// -----------------------------------------------------------------------------
+// CMPXMetadataEditorDialog::PopulateFileDetailsL
+// -----------------------------------------------------------------------------
+//
+void CMPXMetadataEditorDialog::PopulateFileDetailsL()
+    {
+    MPX_FUNC( "CMPXMetadataEditorDialog::PopulateFileDetailsL" );
+    
+    ASSERT(iMedia);
+    TBool drmProtected(iMedia->ValueTObjectL<TBool> (KMPXMediaDrmProtected));
+    MPX_DEBUG2( "CMPXMetadataEditorDialog::PopulateFileDetailsL drm protected: %d", drmProtected );
+
+    if (drmProtected)
+        {
+          //TODO: Pending for UI Spec and localisation
+        }
+   
+    // Get filename
+    const TDesC& uri = iMedia->ValueText(KMPXMediaGeneralUri);
+    TParsePtrC parse(uri);
+
+    SetControlTextL(EMPXMetadataEditorDlgCtrlIdFileName, parse.Name(),
+            KNullDesC);
+
+    // Get mime type
+    SetControlTextL(EMPXMetadataEditorDlgCtrlIdFileFormat, iMedia->ValueText(
+            KMPXMediaGeneralMimeType), KNullDesC);
+
+    // Get duration
+    TInt duration(iMedia->ValueTObjectL<TInt> (KMPXMediaGeneralDuration));
+    if (duration > 0)
+        {
+        // convert milliseconds to seconds
+        duration = duration / KSecondInMilliseconds;
+        CMPXCommonUiHelper::TMPXDuratDisplayMode durationMode =
+        CMPXCommonUiHelper::EMPXDuratAuto;
+        if (duration > KOneHourInSeconds)
+            {
+            durationMode = CMPXCommonUiHelper::EMPXDuratHMS;
+            }
+        HBufC* stringBuf = iCommonUiHelper->DisplayableDurationL(duration,
+                durationMode);
+        CleanupStack::PushL(stringBuf);
+        SetControlTextL(EMPXMetadataEditorDlgCtrlIdFileDuration, *stringBuf,
+                KNullDesC);
+        CleanupStack::PopAndDestroy(stringBuf);
+        }
+    else
+        {
+        SetControlTextL(EMPXMetadataEditorDlgCtrlIdFileDuration, KNullDesC,
+                KNullDesC);
+        }
+
+    // Get bitrate
+    TInt bitrate(iMedia->ValueTObjectL<TInt> (KMPXMediaAudioBitrate));
+    if (bitrate > 0)
+        {
+        // convert bitrate to kpbs
+        bitrate = bitrate / KMPXBitrateFactor;
+        HBufC* bitrateText = StringLoader::LoadLC(
+                R_MPX_CUI_METADATAEDITOR_BITRATE_TXT, bitrate);
+        SetControlTextL(EMPXMetadataEditorDlgCtrlIdFileBitrate,
+                bitrateText->Des(), KNullDesC);
+        CleanupStack::PopAndDestroy(bitrateText);
+        }
+    else
+        {
+        SetControlTextL(EMPXMetadataEditorDlgCtrlIdFileBitrate, KNullDesC,
+                KNullDesC);
+        }
+
+    // Get sampling rate
+    TInt samplingRateNum((TInt) iMedia->ValueTObjectL<TInt> (
+            KMPXMediaAudioSamplerate));
+    if (samplingRateNum > 0)
+        {
+        HBufC* stringBuf = HBufC::NewLC(KMPXFileDetailsMaxBufferLen);
+        TPtr stringBufPtr = stringBuf->Des();
+        stringBufPtr.AppendNum(samplingRateNum);
+        HBufC* samplingrate = StringLoader::LoadLC(
+                R_MPX_CUI_METADATAEDITOR_SAMPLINGRATE_TXT, stringBufPtr);
+        SetControlTextL(EMPXMetadataEditorDlgCtrlIdSamplingrate,
+                samplingrate->Des(), KNullDesC);
+        CleanupStack::PopAndDestroy(samplingrate);
+        CleanupStack::PopAndDestroy(stringBuf);
+        }
+    else
+        {
+        SetControlTextL(EMPXMetadataEditorDlgCtrlIdSamplingrate, KNullDesC,
+                KNullDesC);
+        }
+
+    // Get size, not stored in collection, have to use RFile
+    //
+    RFs& fs = CEikonEnv::Static()->FsSession();
+    RFile file;
+    TInt sizeNum(0);
+    TInt err(file.Open(fs, uri, EFileRead | EFileShareReadersOrWriters));
+    if (err == KErrNone)
+        {
+        file.Size(sizeNum);
+        file.Close();
+        }
+
+    if (sizeNum > 0)
+        {
+        HBufC* stringBuf = iCommonUiHelper->UnitConversionL(sizeNum);
+        CleanupStack::PushL(stringBuf);
+        SetControlTextL(EMPXMetadataEditorDlgCtrlIdSize, *stringBuf,
+                KNullDesC);
+        CleanupStack::PopAndDestroy(stringBuf);
+        }
+    else
+        {
+        SetControlTextL(EMPXMetadataEditorDlgCtrlIdSize, KNullDesC, KNullDesC);
+        }
+
+    if (iCurrentLibrary == EMPXMetadataEditorDlgPodcast)
+        {
+          PopulatePodcastFileDetailsL();
+        }
+// Get modified
+if ( iMedia->IsSupported( KMPXMediaGeneralDate ) )
+    {
+    TInt64 timeInt( ( TInt64 )iMedia->ValueTObjectL<TInt64>(
+            KMPXMediaGeneralDate ) );
+    TTime time( timeInt );
+    ConvertToLocalTimeL(time);
+    HBufC* modDateTime = HBufC::NewLC(
+            KMPXMaxTimeLength + KMPXDurationDisplayResvLen );
+    HBufC* format = StringLoader::LoadLC(
+            R_QTN_DATE_USUAL_WITH_ZERO );
+    TPtr modDatePtr = modDateTime->Des();
+    MPX_TRAPD( err, time.FormatL( modDatePtr, *format ) );
+    CleanupStack::PopAndDestroy( format );
+    if (err != KErrNone)
+        {
+        SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastModified,
+                KNullDesC, KNullDesC);
+
+        }
+    else
+        {
+        format = StringLoader::LoadLC(
+                R_QTN_TIME_USUAL_WITH_ZERO );
+        HBufC* modTime = HBufC::NewLC(
+                format->Length() + KMPXDurationDisplayResvLen );
+        TPtr modTimePtr = modTime->Des();
+        MPX_TRAPD( err, time.FormatL( modTimePtr, *format ) );
+        if ( err != KErrNone )
+            {
+            SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastModified,
+                    KNullDesC, KNullDesC);
+
+            }
+        else
+            {
+            modDatePtr.Append( KMPXSpace );
+            modDatePtr.Append( modTimePtr );
+            SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastModified,
+                    modDatePtr,
+                    KNullDesC);
+            }
+        CleanupStack::PopAndDestroy( modTime );
+        CleanupStack::PopAndDestroy( format );
+        }
+    CleanupStack::PopAndDestroy( modDateTime );
+    }
+else
+    {
+    SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastModified,
+            KNullDesC, KNullDesC);
+
+    }
+
+// Get filename
+SetControlTextL(EMPXMetadataEditorDlgCtrlIdCopyright,
+        iMedia->ValueText(
+                KMPXMediaGeneralCopyright ), KNullDesC);
+
+// Get URL
+SetControlTextL(EMPXMetadataEditorDlgCtrlIdWebaddress,
+        iMedia->ValueText(
+                KMPXMediaMusicURL ), KNullDesC);
+
+CAknForm::SetInitialCurrentLine();
+}
+
+// -----------------------------------------------------------------------------
+// CMPXMetadataEditorDialog::PopulatePodcastFileDetailsL
+// -----------------------------------------------------------------------------
+//
+void CMPXMetadataEditorDialog::PopulatePodcastFileDetailsL()
+    {
+      InsertLineL(13,R_MPX_CUI_LAST_PLAYBACK_POSITION,ActivePageId() );
+                    
+            TInt lastPbPosition((TInt) iMedia->ValueTObjectL<TInt> (
+                    KMPXMediaGeneralLastPlaybackPosition));
+
+            if (lastPbPosition > 0)
+                {
+                // convert milliseconds to seconds
+                lastPbPosition = lastPbPosition / KSecondInMilliseconds;
+                CMPXCommonUiHelper::TMPXDuratDisplayMode lastPbPositionMode =
+                CMPXCommonUiHelper::EMPXDuratAuto;
+                if (lastPbPosition > KOneHourInSeconds)
+                    {
+                    lastPbPositionMode = CMPXCommonUiHelper::EMPXDuratHMS;
+                    }
+                HBufC* stringBuf = iCommonUiHelper->DisplayableDurationL(
+                        lastPbPosition, lastPbPositionMode);
+                CleanupStack::PushL(stringBuf);
+                SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastPlayedPosition,
+                        *stringBuf, KNullDesC);
+                CleanupStack::PopAndDestroy(stringBuf);
+                }
+            else if (lastPbPosition == 0 && iMedia->IsSupported(
+                    KMPXMediaGeneralPlayCount) && iMedia->ValueTObjectL<TInt> (
+                            KMPXMediaGeneralPlayCount) > 0)
+                {
+                HBufC* stringBuf = StringLoader::LoadLC(
+                        R_MPX_CUI_METADATAEDITOR_PLAYBACK_COMPLETE);
+                SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastPlayedPosition,
+                        *stringBuf, KNullDesC);
+                CleanupStack::PopAndDestroy(stringBuf);
+
+                }
+            else
+                {
+                SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastPlayedPosition,
+                        KNullDesC, KNullDesC);
+                }
+           
+            InsertLineL(14,R_MPX_CUI_DETAILS_PUBLISHED,ActivePageId() );
+            
+            // Get published
+            if (iMedia->IsSupported(TMPXAttribute(KMPXMediaIdPodcast,
+                    EMPXMediaPodcastPubDate)))
+                {
+                TInt64 timeInt(
+                        (TInt64) iMedia->ValueTObjectL<TInt64> (TMPXAttribute(
+                                KMPXMediaIdPodcast, EMPXMediaPodcastPubDate)));
+                TTime time(timeInt);
+                ConvertToLocalTimeL(time);
+                HBufC* modDateTime = HBufC::NewLC(KMPXMaxTimeLength
+                        + KMPXDurationDisplayResvLen);
+                HBufC* format = StringLoader::LoadLC(R_QTN_DATE_USUAL_WITH_ZERO);
+                TPtr modDatePtr = modDateTime->Des();
+                MPX_TRAPD( err, time.FormatL( modDatePtr, *format ) );
+                CleanupStack::PopAndDestroy(format);
+                if (err != KErrNone || time == 0)
+                    {
+                    SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastPublished,
+                            KNullDesC, KNullDesC);
+                    }
+                else
+                    {
+                    format = StringLoader::LoadLC(R_QTN_TIME_USUAL_WITH_ZERO);
+                    HBufC* modTime = HBufC::NewLC(format->Length()
+                            + KMPXDurationDisplayResvLen);
+                    TPtr modTimePtr = modTime->Des();
+                    MPX_TRAPD( err, time.FormatL( modTimePtr, *format ) );
+                    if (err != KErrNone)
+                        {
+                        SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastPublished,
+                                KNullDesC, KNullDesC);
+                        }
+                    else
+                        {
+                        modDatePtr.Append(KMPXSpace);
+                        modDatePtr.Append(modTimePtr);
+                        SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastPublished,
+                                modTimePtr, KNullDesC);
+                        }
+                    CleanupStack::PopAndDestroy(modTime);
+                    CleanupStack::PopAndDestroy(format);
+                    }
+                CleanupStack::PopAndDestroy(modDateTime);
+                }
+            else
+                {
+                SetControlTextL(EMPXMetadataEditorDlgCtrlIdLastPublished,
+                        KNullDesC, KNullDesC);
+                }
+      }
+
 // End of File