[vlc-commits] macosx: save the expanded/collapsed state of the sidebar items (close #6389 )
Felix Paul Kühne
git at videolan.org
Mon Apr 9 20:36:48 CEST 2012
vlc/vlc-2.0 | branch: master | Felix Paul Kühne <fkuehne at videolan.org> | Mon Apr 9 18:56:00 2012 +0200| [1bf284b014211dff18ea765cc37a8c1631847ad7] | committer: Felix Paul Kühne
macosx: save the expanded/collapsed state of the sidebar items (close #6389)
(cherry picked from commit 815b2ce8389f038c12552b26df59fea67a96ad43)
> http://git.videolan.org/gitweb.cgi/vlc/vlc-2.0.git/?a=commit;h=1bf284b014211dff18ea765cc37a8c1631847ad7
---
NEWS | 1 +
.../macosx/Resources/English.lproj/MainMenu.xib | 30 ++++-------------
modules/gui/macosx/MainWindow.h | 1 +
modules/gui/macosx/MainWindow.m | 34 ++++++++++++++++++--
4 files changed, 40 insertions(+), 26 deletions(-)
diff --git a/NEWS b/NEWS
index bc204b1..1d4aced 100644
--- a/NEWS
+++ b/NEWS
@@ -41,6 +41,7 @@ Mac OS X:
* Keep Aspect Ratio when resizing is back
* Added controls to manipulate the Subtitles Duration to the Track
Synchronization panel
+ * Hidden items in the sidebar are being retained for the next launch now
* Fix crash when trying to open an Audio CD by drag & drop
* Improve reliability when opening DVDs or BRs by drag & drop
* Fix crash on exit
diff --git a/extras/package/macosx/Resources/English.lproj/MainMenu.xib b/extras/package/macosx/Resources/English.lproj/MainMenu.xib
index 11ee3ff..7b59dd3 100644
--- a/extras/package/macosx/Resources/English.lproj/MainMenu.xib
+++ b/extras/package/macosx/Resources/English.lproj/MainMenu.xib
@@ -21,16 +21,16 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="4850"/>
<integer value="2770"/>
- <integer value="4596"/>
- <integer value="1617"/>
- <integer value="29"/>
+ <integer value="2730"/>
+ <integer value="915"/>
<integer value="4722"/>
<integer value="4948"/>
- <integer value="915"/>
- <integer value="2730"/>
- <integer value="21"/>
+ <integer value="4596"/>
+ <integer value="4713"/>
+ <integer value="29"/>
+ <integer value="4850"/>
+ <integer value="1617"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -7407,22 +7407,6 @@ LCAuLi4</string>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">dataSource</string>
- <reference key="source" ref="1064884668"/>
- <reference key="destination" ref="498338108"/>
- </object>
- <int key="connectionID">4719</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="1064884668"/>
- <reference key="destination" ref="498338108"/>
- </object>
- <int key="connectionID">4720</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
<string key="label">o_sidebar_view</string>
<reference key="source" ref="498338108"/>
<reference key="destination" ref="1064884668"/>
diff --git a/modules/gui/macosx/MainWindow.h b/modules/gui/macosx/MainWindow.h
index cbd7bae..e47efcb 100644
--- a/modules/gui/macosx/MainWindow.h
+++ b/modules/gui/macosx/MainWindow.h
@@ -27,6 +27,7 @@
#import <Cocoa/Cocoa.h>
#import "CompatibilityFixes.h"
#import "PXSourceList.h"
+#import "PXSourceListDataSource.h"
#import <vlc_input.h>
#import "misc.h"
#import "fspanel.h"
diff --git a/modules/gui/macosx/MainWindow.m b/modules/gui/macosx/MainWindow.m
index facab5e..aceb404 100644
--- a/modules/gui/macosx/MainWindow.m
+++ b/modules/gui/macosx/MainWindow.m
@@ -442,13 +442,16 @@ static VLCMainWindow *_o_sharedInstance = nil;
[o_sidebaritems addObject: internetItem];
[o_sidebar_view reloadData];
- NSUInteger i_sidebaritem_count = [o_sidebaritems count];
- for (NSUInteger x = 0; x < i_sidebaritem_count; x++)
- [o_sidebar_view expandItem: [o_sidebaritems objectAtIndex: x] expandChildren: YES];
+ [o_sidebar_view expandItem: libraryItem expandChildren: YES];
[o_sidebar_view selectRowIndexes:[NSIndexSet indexSetWithIndex:1] byExtendingSelection:NO];
[o_sidebar_view setDropItem:playlistItem dropChildIndex:NSOutlineViewDropOnItemIndex];
[o_sidebar_view registerForDraggedTypes:[NSArray arrayWithObjects: NSFilenamesPboardType, @"VLCPlaylistItemPboardType", nil]];
+ [o_sidebar_view setAutosaveName:@"mainwindow-sidebar"];
+ [(PXSourceList *)o_sidebar_view setDataSource:self];
+ [o_sidebar_view setDelegate:self];
+ [o_sidebar_view setAutosaveExpandedItems:YES];
+
if( b_dark_interface )
{
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(windowResizedOrMoved:) name: NSWindowDidResizeNotification object: nil];
@@ -2307,6 +2310,31 @@ static VLCMainWindow *_o_sharedInstance = nil;
}
return NO;
}
+
+- (id)sourceList:(PXSourceList *)aSourceList persistentObjectForItem:(id)item
+{
+ return [item identifier];
+}
+
+- (id)sourceList:(PXSourceList *)aSourceList itemForPersistentObject:(id)object
+{
+ /* the following code assumes for sakes of simplicity that only the top level
+ * items are allowed to have children */
+
+ NSArray * array = [NSArray arrayWithArray: o_sidebaritems]; // read-only arrays are noticebly faster
+ NSUInteger count = [array count];
+ if (count < 1)
+ return nil;
+
+ for (NSUInteger x = 0; x < count; x++)
+ {
+ id item = [array objectAtIndex: x]; // save one objc selector call
+ if ([[item identifier] isEqualToString:object])
+ return item;
+ }
+
+ return nil;
+}
@end
@implementation VLCDetachedVideoWindow
More information about the vlc-commits
mailing list