[vlc-devel] commit: Implementing meta tag writing and cleaned a bit up ( Felix Paul Kühne )
git version control
git at videolan.org
Thu Mar 27 15:07:42 CET 2008
vlc | branch: master | Felix Paul Kühne <fkuehne at videolan.org> | Thu Mar 27 15:08:14 2008 +0100| [1886ae1a376ebd893ed2941197e8872d27f8d6c0]
Implementing meta tag writing and cleaned a bit up
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1886ae1a376ebd893ed2941197e8872d27f8d6c0
---
.../English.lproj/MediaInfo.nib/classes.nib | 14 ++-
.../Resources/English.lproj/MediaInfo.nib/info.nib | 2 +-
.../English.lproj/MediaInfo.nib/keyedobjects.nib | Bin 29433 -> 29732 bytes
modules/gui/macosx/playlistinfo.h | 1 +
modules/gui/macosx/playlistinfo.m | 93 +++++++++++++++-----
5 files changed, 83 insertions(+), 27 deletions(-)
diff --git a/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/classes.nib b/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/classes.nib
index d3e9a37..5dd1fdb 100644
--- a/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/classes.nib
+++ b/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/classes.nib
@@ -14,6 +14,14 @@
</dict>
<dict>
<key>CLASS</key>
+ <string>NSTextField</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSControl</string>
+ </dict>
+ <dict>
+ <key>CLASS</key>
<string>NSObject</string>
<key>LANGUAGE</key>
<string>ObjC</string>
@@ -25,11 +33,9 @@
<string>id</string>
<key>deleteOutlineGroup</key>
<string>id</string>
- <key>saveMetaData</key>
- <string>id</string>
- <key>toggleInfoPanel</key>
+ <key>metaFieldChanged</key>
<string>id</string>
- <key>togglePlaylistInfoPanel</key>
+ <key>saveMetaData</key>
<string>id</string>
</dict>
<key>CLASS</key>
diff --git a/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/info.nib b/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/info.nib
index 2c9d7aa..d54ea32 100644
--- a/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/info.nib
+++ b/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/info.nib
@@ -10,7 +10,7 @@
<integer>5</integer>
<key>IBOpenObjects</key>
<array>
- <integer>8</integer>
+ <integer>3</integer>
</array>
<key>IBSystem Version</key>
<string>9C31</string>
diff --git a/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/keyedobjects.nib b/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/keyedobjects.nib
index e4242fa..6936ec9 100644
Binary files a/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/keyedobjects.nib and b/extras/package/macosx/Resources/English.lproj/MediaInfo.nib/keyedobjects.nib differ
diff --git a/modules/gui/macosx/playlistinfo.h b/modules/gui/macosx/playlistinfo.h
index 39b8d25..d084f7c 100644
--- a/modules/gui/macosx/playlistinfo.h
+++ b/modules/gui/macosx/playlistinfo.h
@@ -99,6 +99,7 @@
}
- (void)initPanel;
+- (IBAction)metaFieldChanged:(id)sender;
- (IBAction)saveMetaData:(id)sender;
- (void)updatePanel;
- (playlist_item_t *)getItem;
diff --git a/modules/gui/macosx/playlistinfo.m b/modules/gui/macosx/playlistinfo.m
index 5f0cb1f..5f6a009 100644
--- a/modules/gui/macosx/playlistinfo.m
+++ b/modules/gui/macosx/playlistinfo.m
@@ -85,29 +85,31 @@ static VLCInfo *_o_sharedInstance = nil;
[o_language_lbl setStringValue: _NS(VLC_META_LANGUAGE)];
[o_nowPlaying_lbl setStringValue: _NS(VLC_META_NOW_PLAYING)];
[o_publisher_lbl setStringValue: _NS(VLC_META_PUBLISHER)];
-
+
/* statistics */
[o_input_box setTitle: _NS("Input")];
[o_read_bytes_lbl setStringValue: _NS("Read at media")];
[o_input_bitrate_lbl setStringValue: _NS("Input bitrate")];
[o_demux_bytes_lbl setStringValue: _NS("Demuxed")];
[o_demux_bitrate_lbl setStringValue: _NS("Stream bitrate")];
-
+
[o_video_box setTitle: _NS("Video")];
[o_video_decoded_lbl setStringValue: _NS("Decoded blocks")];
[o_displayed_lbl setStringValue: _NS("Displayed frames")];
[o_lost_frames_lbl setStringValue: _NS("Lost frames")];
[o_fps_lbl setStringValue: _NS("Frames per Second")];
-
+
[o_sout_box setTitle: _NS("Streaming")];
[o_sent_packets_lbl setStringValue: _NS("Sent packets")];
[o_sent_bytes_lbl setStringValue: _NS("Sent bytes")];
[o_sent_bitrate_lbl setStringValue: _NS("Send rate")];
-
+
[o_audio_box setTitle: _NS("Audio")];
[o_audio_decoded_lbl setStringValue: _NS("Decoded blocks")];
[o_played_abuffers_lbl setStringValue: _NS("Played buffers")];
[o_lost_abuffers_lbl setStringValue: _NS("Lost buffers")];
+
+ [o_info_window setInitialFirstResponder: o_uri_txt];
}
- (void)dealloc
@@ -156,12 +158,10 @@ static VLCInfo *_o_sharedInstance = nil;
if(! [self isItemInPlaylist: p_item] ) return;
/* fill uri info */
- char *psz_uri = input_item_GetURI( p_item->p_input );
- if( psz_uri )
+ if( input_item_GetURI( p_item->p_input ) != NULL )
{
- [o_uri_txt setStringValue: [NSString stringWithUTF8String:psz_uri]];
+ [o_uri_txt setStringValue: [NSString stringWithUTF8String: input_item_GetURI( p_item->p_input ) ]];
}
- free( psz_uri );
#define SET( foo, bar ) \
char *psz_##foo = input_item_Get##bar ( p_item->p_input ); \
@@ -179,20 +179,20 @@ static VLCInfo *_o_sharedInstance = nil;
SET( nowPlaying, NowPlaying );
SET( language, Language );
SET( date, Date );
+ SET( description, Description );
#undef SET
-
+
char *psz_meta;
NSImage *o_image;
- /* FIXME!!
- psz_meta = input_item_GetArtURL( p_item );
+ psz_meta = input_item_GetArtURL( p_item->p_input );
if( psz_meta && !strncmp( psz_meta, "file://", 7 ) )
o_image = [[NSImage alloc] initWithContentsOfURL: [NSURL URLWithString: [NSString stringWithUTF8String: psz_meta]]];
- else */
+ else
o_image = [[NSImage imageNamed: @"noart.png"] retain];
[o_image_well setImage: o_image];
[o_image release];
- //free( psz_meta );
+ FREENULL( psz_meta );
/* reload the advanced table */
[[VLCInfoTreeItem rootItem] refresh];
@@ -206,6 +206,8 @@ static VLCInfo *_o_sharedInstance = nil;
{
if( psz_meta != NULL && *psz_meta)
[theItem setStringValue: [NSString stringWithUTF8String:psz_meta]];
+ else
+ [theItem setStringValue: @""];
}
- (void)updateStatistics:(NSTimer*)theTimer
@@ -229,7 +231,7 @@ static VLCInfo *_o_sharedInstance = nil;
[o_displayed_txt setIntValue: p_item->p_input->p_stats->i_displayed_pictures];
[o_lost_frames_txt setIntValue: p_item->p_input->p_stats->i_lost_pictures];
float f_fps = 0;
- /* FIXME! input_Control( p_item->p_input, INPUT_GET_VIDEO_FPS, &f_fps ); */
+ /* FIXME: input_Control( p_item->p_input, INPUT_GET_VIDEO_FPS, &f_fps ); */
[o_fps_txt setFloatValue: f_fps];
/* Sout */
@@ -248,26 +250,73 @@ static VLCInfo *_o_sharedInstance = nil;
}
}
+- (IBAction)metaFieldChanged:(id)sender
+{
+ [o_saveMetaData_btn setEnabled: YES];
+}
+
- (IBAction)saveMetaData:(id)sender
{
- /* TODO: implement this feature
intf_thread_t * p_intf = VLCIntf;
playlist_t * p_playlist = pl_Yield( p_intf );
vlc_value_t val;
if( [self isItemInPlaylist: p_item] )
{
- input_item_SetName( p_item->p_input, (char*)
- [[o_title_txt stringValue] UTF8String] );
- input_item_SetURI( p_item->p_input, (char*)
- [[o_uri_txt stringValue] UTF8String] );
- input_item_SetArtist( p_item->p_input, (char*)
- [[o_author_txt stringValue] UTF8String] );
+ meta_export_t p_export;
+ p_export.p_item = p_item->p_input;
+
+ if( p_item->p_input == NULL )
+ goto end;
+
+ /* we can write meta data only in a file */
+ vlc_mutex_lock( &p_item->p_input->lock );
+ int i_type = p_item->p_input->i_type;
+ vlc_mutex_unlock( &p_item->p_input->lock );
+ if( i_type == ITEM_TYPE_FILE )
+ {
+ char *psz_uri_orig = input_item_GetURI( p_item->p_input );
+ char *psz_uri = psz_uri_orig;
+ if( !strncmp( psz_uri, "file://", 7 ) )
+ psz_uri += 7; /* strlen("file://") = 7 */
+
+ p_export.psz_file = strndup( psz_uri, PATH_MAX );
+ free( psz_uri_orig );
+ }
+ else
+ goto end;
+
+ #define utf8( o_blub ) \
+ [[o_blub stringValue] UTF8String]
+
+ input_item_SetName( p_item->p_input, utf8( o_title_txt ) );
+ input_item_SetTitle( p_item->p_input, utf8( o_title_txt ) );
+ input_item_SetArtist( p_item->p_input, utf8( o_author_txt ) );
+ input_item_SetAlbum( p_item->p_input, utf8( o_collection_txt ) );
+ input_item_SetGenre( p_item->p_input, utf8( o_genre_txt ) );
+ input_item_SetTrackNum( p_item->p_input, utf8( o_seqNum_txt ) );
+ input_item_SetDate( p_item->p_input, utf8( o_date_txt ) );
+ input_item_SetCopyright( p_item->p_input, utf8( o_copyright_txt ) );
+ input_item_SetPublisher( p_item->p_input, utf8( o_publisher_txt ) );
+ input_item_SetDescription( p_item->p_input, utf8( o_description_txt ) );
+ input_item_SetLanguage( p_item->p_input, utf8( o_language_txt ) );
+
+ PL_LOCK;
+ p_playlist->p_private = &p_export;
+
+ module_t *p_mod = module_Need( p_playlist, "meta writer", NULL, 0 );
+ if( p_mod )
+ module_Unneed( p_playlist, p_mod );
+ PL_UNLOCK;
val.b_bool = VLC_TRUE;
var_Set( p_playlist, "intf-change", val );
+ [self updatePanel];
}
- vlc_object_release( p_playlist );*/
+
+ end:
+ vlc_object_release( p_playlist );
+ [o_saveMetaData_btn setEnabled: NO];
}
- (playlist_item_t *)getItem
More information about the vlc-devel
mailing list