[haiku-commits] r38688 - haiku/trunk/src/apps/mediaplayer

  • From: superstippi@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 17 Sep 2010 10:33:26 +0200 (CEST)

Author: stippi
Date: 2010-09-17 10:33:25 +0200 (Fri, 17 Sep 2010)
New Revision: 38688
Changeset: http://dev.haiku-os.org/changeset/38688

Modified:
   haiku/trunk/src/apps/mediaplayer/Controller.cpp
   haiku/trunk/src/apps/mediaplayer/Controller.h
   haiku/trunk/src/apps/mediaplayer/Jamfile
   haiku/trunk/src/apps/mediaplayer/MainWin.cpp
Log:
Make use of the new meta-data API and display the
audio track menu item label as the language of the
track.


Modified: haiku/trunk/src/apps/mediaplayer/Controller.cpp
===================================================================
--- haiku/trunk/src/apps/mediaplayer/Controller.cpp     2010-09-17 08:32:27 UTC 
(rev 38687)
+++ haiku/trunk/src/apps/mediaplayer/Controller.cpp     2010-09-17 08:33:25 UTC 
(rev 38688)
@@ -852,6 +852,41 @@
 }
 
 
+status_t
+Controller::GetMetaData(BMessage* metaData)
+{
+       // TODO: Move API into supplier classes
+       if (fMediaFile == NULL)
+               return B_NO_INIT;
+
+       return fMediaFile->GetMetaData(metaData);
+}
+
+
+status_t
+Controller::GetVideoMetaData(int32 index, BMessage* metaData)
+{
+       // TODO: Move API into supplier classes
+       BMediaTrack* track = (BMediaTrack*)fVideoTrackList.ItemAt(index);
+       if (track == NULL)
+               return B_BAD_INDEX;
+
+       return track->GetMetaData(metaData);
+}
+
+
+status_t
+Controller::GetAudioMetaData(int32 index, BMessage* metaData)
+{
+       // TODO: Move API into supplier classes
+       BMediaTrack* track = (BMediaTrack*)fAudioTrackList.ItemAt(index);
+       if (track == NULL)
+               return B_BAD_INDEX;
+
+       return track->GetMetaData(metaData);
+}
+
+
 // #pragma mark -
 
 

Modified: haiku/trunk/src/apps/mediaplayer/Controller.h
===================================================================
--- haiku/trunk/src/apps/mediaplayer/Controller.h       2010-09-17 08:32:27 UTC 
(rev 38687)
+++ haiku/trunk/src/apps/mediaplayer/Controller.h       2010-09-17 08:33:25 UTC 
(rev 38688)
@@ -134,6 +134,12 @@
                        status_t                        
GetEncodedAudioFormat(media_format* format);
                        status_t                        
GetAudioCodecInfo(media_codec_info* info);
 
+                       status_t                        GetMetaData(BMessage* 
metaData);
+                       status_t                        GetVideoMetaData(int32 
track,
+                                                                       
BMessage* metaData);
+                       status_t                        GetAudioMetaData(int32 
track,
+                                                                       
BMessage* metaData);
+
        // video view
                        void                            SetVideoView(VideoView 
*view);
 

Modified: haiku/trunk/src/apps/mediaplayer/Jamfile
===================================================================
--- haiku/trunk/src/apps/mediaplayer/Jamfile    2010-09-17 08:32:27 UTC (rev 
38687)
+++ haiku/trunk/src/apps/mediaplayer/Jamfile    2010-09-17 08:33:25 UTC (rev 
38688)
@@ -108,7 +108,7 @@
        MainWin.cpp
        VideoView.cpp
 
-       : be game media tracker translation textencoding $(TARGET_LIBSTDC++)
+       : be game locale media tracker translation textencoding 
$(TARGET_LIBSTDC++)
        : MediaPlayer.rdef
 ;
 

Modified: haiku/trunk/src/apps/mediaplayer/MainWin.cpp
===================================================================
--- haiku/trunk/src/apps/mediaplayer/MainWin.cpp        2010-09-17 08:32:27 UTC 
(rev 38687)
+++ haiku/trunk/src/apps/mediaplayer/MainWin.cpp        2010-09-17 08:33:25 UTC 
(rev 38688)
@@ -32,6 +32,7 @@
 #include <Autolock.h>
 #include <Debug.h>
 #include <fs_attr.h>
+#include <Language.h>
 #include <Menu.h>
 #include <MenuBar.h>
 #include <MenuItem.h>
@@ -1548,7 +1549,18 @@
        int count = fController->AudioTrackCount();
        int current = fController->CurrentAudioTrack();
        for (int i = 0; i < count; i++) {
-               sprintf(s, "Track %d", i + 1);
+               BMessage metaData;
+               const char* languageString = NULL;
+               if (fController->GetAudioMetaData(i, &metaData) == B_OK)
+                       metaData.FindString("language", &languageString);
+               if (languageString != NULL) {
+                       BLanguage language(languageString);
+                       BString languageName;
+                       if (language.GetTranslatedName(languageName) == B_OK)
+                               languageString = languageName.String();
+                       snprintf(s, sizeof(s), "%s", languageString);
+               } else
+                       snprintf(s, sizeof(s), "Track %d", i + 1);
                BMenuItem* item = new BMenuItem(s,
                        new BMessage(M_SELECT_AUDIO_TRACK + i));
                item->SetMarked(i == current);
@@ -1563,7 +1575,7 @@
        count = fController->VideoTrackCount();
        current = fController->CurrentVideoTrack();
        for (int i = 0; i < count; i++) {
-               sprintf(s, "Track %d", i + 1);
+               snprintf(s, sizeof(s), "Track %d", i + 1);
                BMenuItem* item = new BMenuItem(s,
                        new BMessage(M_SELECT_VIDEO_TRACK + i));
                item->SetMarked(i == current);


Other related posts:

  • » [haiku-commits] r38688 - haiku/trunk/src/apps/mediaplayer - superstippi