Commit d216605a authored by Benjamin Pracht's avatar Benjamin Pracht

* Support for saving xspf playlist files

parent 53eabb3f
...@@ -371,6 +371,9 @@ ...@@ -371,6 +371,9 @@
"o_outline_view" = id; "o_outline_view" = id;
"o_playlist_view" = id; "o_playlist_view" = id;
"o_random_ckb" = id; "o_random_ckb" = id;
"o_save_accessory_popup" = id;
"o_save_accessory_text" = id;
"o_save_accessory_view" = id;
"o_search_field" = id; "o_search_field" = id;
"o_status_field" = id; "o_status_field" = id;
"o_tc_author" = id; "o_tc_author" = id;
......
...@@ -3,13 +3,15 @@ ...@@ -3,13 +3,15 @@
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>IBDocumentLocation</key> <key>IBDocumentLocation</key>
<string>43 22 478 430 0 0 1024 746 </string> <string>90 147 478 430 0 0 1024 746 </string>
<key>IBEditorPositions</key> <key>IBEditorPositions</key>
<dict> <dict>
<key>1617</key> <key>1617</key>
<string>788 586 109 149 0 0 1440 878 </string> <string>788 586 109 149 0 0 1440 878 </string>
<key>2197</key> <key>2197</key>
<string>422 532 596 143 0 0 1440 878 </string> <string>172 420 596 143 0 0 1024 746 </string>
<key>2709</key>
<string>305 626 508 82 0 0 1024 746 </string>
<key>29</key> <key>29</key>
<string>76 675 438 44 0 0 1024 746 </string> <string>76 675 438 44 0 0 1024 746 </string>
<key>915</key> <key>915</key>
...@@ -24,6 +26,6 @@ ...@@ -24,6 +26,6 @@
<integer>21</integer> <integer>21</integer>
</array> </array>
<key>IBSystem Version</key> <key>IBSystem Version</key>
<string>8H14</string> <string>8I127</string>
</dict> </dict>
</plist> </plist>
...@@ -96,6 +96,11 @@ ...@@ -96,6 +96,11 @@
IBOutlet id o_mm_mi_services; IBOutlet id o_mm_mi_services;
IBOutlet id o_mm_mu_services; IBOutlet id o_mm_mu_services;
IBOutlet id o_save_accessory_view;
IBOutlet id o_save_accessory_popup;
IBOutlet id o_save_accessory_text;
NSImage *o_descendingSortingImage; NSImage *o_descendingSortingImage;
NSImage *o_ascendingSortingImage; NSImage *o_ascendingSortingImage;
......
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
o_outline_dict = [[NSMutableDictionary alloc] init]; o_outline_dict = [[NSMutableDictionary alloc] init];
} }
return self; return self;
} }
- (void)awakeFromNib - (void)awakeFromNib
{ {
playlist_t * p_playlist = vlc_object_find( VLCIntf, VLC_OBJECT_PLAYLIST, playlist_t * p_playlist = vlc_object_find( VLCIntf, VLC_OBJECT_PLAYLIST,
...@@ -498,6 +498,10 @@ belongs to an Apple hidden private API, and then can "disapear" at any time*/ ...@@ -498,6 +498,10 @@ belongs to an Apple hidden private API, and then can "disapear" at any time*/
[[o_loop_popup itemAtIndex:1] setTitle: _NS("Repeat One")]; [[o_loop_popup itemAtIndex:1] setTitle: _NS("Repeat One")];
[[o_loop_popup itemAtIndex:2] setTitle: _NS("Repeat All")]; [[o_loop_popup itemAtIndex:2] setTitle: _NS("Repeat All")];
[o_mi_addNode setTitle: _NS("Add Folder to Playlist")]; [o_mi_addNode setTitle: _NS("Add Folder to Playlist")];
[o_save_accessory_text setStringValue: _NS("File Format:")];
[[o_save_accessory_popup itemAtIndex:0] setTitle: _NS("Extended M3U")];
[[o_save_accessory_popup itemAtIndex:1] setTitle: _NS("XML Shareable Playlist Format (XSPF)")];
} }
- (void)playlistUpdated - (void)playlistUpdated
...@@ -745,19 +749,58 @@ belongs to an Apple hidden private API, and then can "disapear" at any time*/ ...@@ -745,19 +749,58 @@ belongs to an Apple hidden private API, and then can "disapear" at any time*/
FIND_ANYWHERE ); FIND_ANYWHERE );
NSSavePanel *o_save_panel = [NSSavePanel savePanel]; NSSavePanel *o_save_panel = [NSSavePanel savePanel];
NSString * o_name = [NSString stringWithFormat: @"%@.m3u", _NS("Untitled")]; NSString * o_name = [NSString stringWithFormat: @"%@", _NS("Untitled")];
//[o_save_panel setAllowedFileTypes: [NSArray arrayWithObjects: @"m3u", @"xpf", nil] ];
[o_save_panel setTitle: _NS("Save Playlist")]; [o_save_panel setTitle: _NS("Save Playlist")];
[o_save_panel setPrompt: _NS("Save")]; [o_save_panel setPrompt: _NS("Save")];
[o_save_panel setAccessoryView: o_save_accessory_view];
if( [o_save_panel runModalForDirectory: nil if( [o_save_panel runModalForDirectory: nil
file: o_name] == NSOKButton ) file: o_name] == NSOKButton )
{ {
playlist_Export( p_playlist, [[o_save_panel filename] fileSystemRepresentation], "export-m3u" ); NSString *o_filename = [o_save_panel filename];
if( [o_save_accessory_popup indexOfSelectedItem] == 1 )
{
NSString * o_real_filename;
NSRange range;
range.location = [o_filename length] - [@".xspf" length];
range.length = [@".xspf" length];
if( [o_filename compare:@".xspf" options: NSCaseInsensitiveSearch
range: range] != NSOrderedSame )
{
o_real_filename = [NSString stringWithFormat: @"%@.xspf", o_filename];
}
else
{
o_real_filename = o_filename;
}
playlist_Export( p_playlist, [o_real_filename fileSystemRepresentation], "export-xspf" );
}
else
{
NSString * o_real_filename;
NSRange range;
range.location = [o_filename length] - [@".m3u" length];
range.length = [@".m3u" length];
if( [o_filename compare:@".m3u" options: NSCaseInsensitiveSearch
range: range] != NSOrderedSame )
{
o_real_filename = [NSString stringWithFormat: @"%@.m3u", o_filename];
}
else
{
o_real_filename = o_filename;
}
playlist_Export( p_playlist, [o_real_filename fileSystemRepresentation], "export-m3u" );
}
} }
vlc_object_release( p_playlist ); vlc_object_release( p_playlist );
} }
/* When called retrieves the selected outlineview row and plays that node or item */ /* When called retrieves the selected outlineview row and plays that node or item */
- (IBAction)playItem:(id)sender - (IBAction)playItem:(id)sender
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment