]> git.sesse.net Git - vlc/commitdiff
macosx: create playlist columns at runtime instead of relying on the nib file
authorFelix Paul Kühne <fkuehne@videolan.org>
Tue, 29 May 2012 22:08:11 +0000 (00:08 +0200)
committerFelix Paul Kühne <fkuehne@videolan.org>
Wed, 30 May 2012 00:43:44 +0000 (02:43 +0200)
This adds support for the following columns: Track Number, Genre, Album, Description, Date and Language. You can remove and hide them on-the-fly using the Playback menu, since no View menu exists so far.

note that column width and column selection isn't restored on relaunch yet

extras/package/macosx/Resources/English.lproj/MainMenu.xib
modules/gui/macosx/MainMenu.h
modules/gui/macosx/MainMenu.m
modules/gui/macosx/playlist.h
modules/gui/macosx/playlist.m

index f74745614c3403c01c865c5280a64967d1e9e84a..2c19c71a0eb7dbe0a3b6b1215aa4358c853c6094 100644 (file)
     </object>
     <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
       <bool key="EncodedWithXMLCoder">YES</bool>
-      <integer value="4756"/>
-      <integer value="1617"/>
       <integer value="2770"/>
-      <integer value="4850"/>
       <integer value="915"/>
-      <integer value="4596"/>
+      <integer value="4722"/>
+      <integer value="4850"/>
+      <integer value="21"/>
       <integer value="2730"/>
+      <integer value="5100"/>
       <integer value="4948"/>
-      <integer value="4722"/>
-      <integer value="81"/>
+      <integer value="1617"/>
+      <integer value="4596"/>
     </object>
     <object class="NSArray" key="IBDocument.PluginDependencies">
       <bool key="EncodedWithXMLCoder">YES</bool>
                                   <bool key="NSIsEditable">YES</bool>
                                   <reference key="NSTableView" ref="23448837"/>
                                 </object>
-                                <object class="NSTableColumn" id="965199398">
-                                  <string key="NSIdentifier">name</string>
-                                  <double key="NSWidth">142</double>
-                                  <double key="NSMinWidth">16</double>
-                                  <double key="NSMaxWidth">1000</double>
-                                  <object class="NSTableHeaderCell" key="NSHeaderCell">
-                                    <int key="NSCellFlags">75628096</int>
-                                    <int key="NSCellFlags2">2048</int>
-                                    <string key="NSContents">Name</string>
-                                    <reference key="NSSupport" ref="26"/>
-                                    <object class="NSColor" key="NSBackgroundColor" id="320837044">
-                                      <int key="NSColorSpace">3</int>
-                                      <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
-                                    </object>
-                                    <reference key="NSTextColor" ref="141148336"/>
-                                  </object>
-                                  <object class="NSTextFieldCell" key="NSDataCell" id="80936197">
-                                    <int key="NSCellFlags">67239488</int>
-                                    <int key="NSCellFlags2">272761856</int>
-                                    <reference key="NSSupport" ref="26"/>
-                                    <reference key="NSControlView" ref="23448837"/>
-                                    <reference key="NSBackgroundColor" ref="3414043"/>
-                                    <reference key="NSTextColor" ref="306532497"/>
-                                  </object>
-                                  <int key="NSResizingMask">3</int>
-                                  <bool key="NSIsResizeable">YES</bool>
-                                  <reference key="NSTableView" ref="23448837"/>
-                                </object>
-                                <object class="NSTableColumn" id="475692067">
-                                  <string key="NSIdentifier">artist</string>
-                                  <double key="NSWidth">170</double>
-                                  <double key="NSMinWidth">20</double>
-                                  <double key="NSMaxWidth">1000</double>
-                                  <object class="NSTableHeaderCell" key="NSHeaderCell">
-                                    <int key="NSCellFlags">75628096</int>
-                                    <int key="NSCellFlags2">2048</int>
-                                    <string key="NSContents">Artist</string>
-                                    <reference key="NSSupport" ref="26"/>
-                                    <reference key="NSBackgroundColor" ref="320837044"/>
-                                    <reference key="NSTextColor" ref="141148336"/>
-                                  </object>
-                                  <object class="NSTextFieldCell" key="NSDataCell" id="306147575">
-                                    <int key="NSCellFlags">67239488</int>
-                                    <int key="NSCellFlags2">272761856</int>
-                                    <reference key="NSSupport" ref="26"/>
-                                    <reference key="NSControlView" ref="23448837"/>
-                                    <reference key="NSBackgroundColor" ref="3414043"/>
-                                    <reference key="NSTextColor" ref="306532497"/>
-                                  </object>
-                                  <int key="NSResizingMask">2</int>
-                                  <bool key="NSIsResizeable">YES</bool>
-                                  <reference key="NSTableView" ref="23448837"/>
-                                </object>
-                                <object class="NSTableColumn" id="207035020">
-                                  <string key="NSIdentifier">duration</string>
-                                  <double key="NSWidth">60</double>
-                                  <double key="NSMinWidth">60</double>
-                                  <double key="NSMaxWidth">60</double>
-                                  <object class="NSTableHeaderCell" key="NSHeaderCell">
-                                    <int key="NSCellFlags">75628096</int>
-                                    <int key="NSCellFlags2">134219776</int>
-                                    <string key="NSContents">Duration</string>
-                                    <reference key="NSSupport" ref="26"/>
-                                    <reference key="NSBackgroundColor" ref="1018329413"/>
-                                    <reference key="NSTextColor" ref="141148336"/>
-                                  </object>
-                                  <object class="NSTextFieldCell" key="NSDataCell" id="984895421">
-                                    <int key="NSCellFlags">67239488</int>
-                                    <int key="NSCellFlags2">272761856</int>
-                                    <reference key="NSSupport" ref="26"/>
-                                    <reference key="NSControlView" ref="23448837"/>
-                                    <reference key="NSBackgroundColor" ref="3414043"/>
-                                    <reference key="NSTextColor" ref="306532497"/>
-                                  </object>
-                                  <int key="NSResizingMask">2</int>
-                                  <bool key="NSIsResizeable">YES</bool>
-                                  <reference key="NSTableView" ref="23448837"/>
-                                </object>
                               </object>
                               <double key="NSIntercellSpacingWidth">3</double>
                               <double key="NSIntercellSpacingHeight">2</double>
                               <bool key="NSAllowsTypeSelect">YES</bool>
                               <int key="NSTableViewDraggingDestinationStyle">0</int>
                               <int key="NSTableViewGroupRowStyle">1</int>
-                              <reference key="NSOutlineViewOutlineTableColumnKey" ref="965199398"/>
                             </object>
                           </object>
                           <string key="NSFrame">{{1, 17}, {402, 236}}</string>
                         <object class="NSScroller" id="297523533">
                           <reference key="NSNextResponder" ref="915491793"/>
                           <int key="NSvFlags">-2147483392</int>
-                          <string key="NSFrame">{{1, 238}, {480, 15}}</string>
+                          <string key="NSFrame">{{1, 238}, {402, 15}}</string>
                           <reference key="NSSuperview" ref="915491793"/>
                           <int key="NSsFlags">1</int>
                           <reference key="NSTarget" ref="915491793"/>
                           <string key="NSAction">_doScroller:</string>
-                          <double key="NSPercent">0.99585062240663902</double>
+                          <double key="NSPercent">0.9095022624434389</double>
                         </object>
                         <object class="NSClipView" id="576307303">
                           <reference key="NSNextResponder" ref="915491793"/>
                   <reference key="NSOnImage" ref="447396056"/>
                   <reference key="NSMixedImage" ref="100133332"/>
                 </object>
+                <object class="NSMenuItem" id="221438055">
+                  <reference key="NSMenu" ref="1017583928"/>
+                  <string key="NSTitle">Playlist Table Columns</string>
+                  <string key="NSKeyEquiv"/>
+                  <int key="NSMnemonicLoc">2147483647</int>
+                  <reference key="NSOnImage" ref="447396056"/>
+                  <reference key="NSMixedImage" ref="100133332"/>
+                  <string key="NSAction">submenuAction:</string>
+                  <object class="NSMenu" key="NSSubmenu" id="797476210">
+                    <string key="NSTitle">Playlist Table Columns</string>
+                    <object class="NSMutableArray" key="NSMenuItems">
+                      <bool key="EncodedWithXMLCoder">YES</bool>
+                      <object class="NSMenuItem" id="698601507">
+                        <reference key="NSMenu" ref="797476210"/>
+                        <string key="NSTitle">Track Number</string>
+                        <string key="NSKeyEquiv"/>
+                        <int key="NSMnemonicLoc">2147483647</int>
+                        <reference key="NSOnImage" ref="447396056"/>
+                        <reference key="NSMixedImage" ref="100133332"/>
+                      </object>
+                      <object class="NSMenuItem" id="430145115">
+                        <reference key="NSMenu" ref="797476210"/>
+                        <string key="NSTitle">Title</string>
+                        <string key="NSKeyEquiv"/>
+                        <int key="NSMnemonicLoc">2147483647</int>
+                        <reference key="NSOnImage" ref="447396056"/>
+                        <reference key="NSMixedImage" ref="100133332"/>
+                      </object>
+                      <object class="NSMenuItem" id="447172608">
+                        <reference key="NSMenu" ref="797476210"/>
+                        <string key="NSTitle">Artist</string>
+                        <string key="NSKeyEquiv"/>
+                        <int key="NSMnemonicLoc">2147483647</int>
+                        <reference key="NSOnImage" ref="447396056"/>
+                        <reference key="NSMixedImage" ref="100133332"/>
+                      </object>
+                      <object class="NSMenuItem" id="1025970654">
+                        <reference key="NSMenu" ref="797476210"/>
+                        <string key="NSTitle">Duration</string>
+                        <string key="NSKeyEquiv"/>
+                        <int key="NSMnemonicLoc">2147483647</int>
+                        <reference key="NSOnImage" ref="447396056"/>
+                        <reference key="NSMixedImage" ref="100133332"/>
+                      </object>
+                      <object class="NSMenuItem" id="81224764">
+                        <reference key="NSMenu" ref="797476210"/>
+                        <string key="NSTitle">Genre</string>
+                        <string key="NSKeyEquiv"/>
+                        <int key="NSMnemonicLoc">2147483647</int>
+                        <reference key="NSOnImage" ref="447396056"/>
+                        <reference key="NSMixedImage" ref="100133332"/>
+                      </object>
+                      <object class="NSMenuItem" id="939545655">
+                        <reference key="NSMenu" ref="797476210"/>
+                        <string key="NSTitle">Album</string>
+                        <string key="NSKeyEquiv"/>
+                        <int key="NSMnemonicLoc">2147483647</int>
+                        <reference key="NSOnImage" ref="447396056"/>
+                        <reference key="NSMixedImage" ref="100133332"/>
+                      </object>
+                      <object class="NSMenuItem" id="445879076">
+                        <reference key="NSMenu" ref="797476210"/>
+                        <string key="NSTitle">Description</string>
+                        <string key="NSKeyEquiv"/>
+                        <int key="NSMnemonicLoc">2147483647</int>
+                        <reference key="NSOnImage" ref="447396056"/>
+                        <reference key="NSMixedImage" ref="100133332"/>
+                      </object>
+                      <object class="NSMenuItem" id="744308072">
+                        <reference key="NSMenu" ref="797476210"/>
+                        <string key="NSTitle">Date</string>
+                        <string key="NSKeyEquiv"/>
+                        <int key="NSMnemonicLoc">2147483647</int>
+                        <reference key="NSOnImage" ref="447396056"/>
+                        <reference key="NSMixedImage" ref="100133332"/>
+                      </object>
+                      <object class="NSMenuItem" id="393274870">
+                        <reference key="NSMenu" ref="797476210"/>
+                        <string key="NSTitle">Language</string>
+                        <string key="NSKeyEquiv"/>
+                        <int key="NSMnemonicLoc">2147483647</int>
+                        <reference key="NSOnImage" ref="447396056"/>
+                        <reference key="NSMixedImage" ref="100133332"/>
+                      </object>
+                    </object>
+                  </object>
+                </object>
               </object>
             </object>
           </object>
@@ -5801,30 +5809,6 @@ LCAuLi4</string>
           </object>
           <int key="connectionID">4385</int>
         </object>
-        <object class="IBConnectionRecord">
-          <object class="IBOutletConnection" key="connection">
-            <string key="label">o_tc_duration</string>
-            <reference key="source" ref="998338913"/>
-            <reference key="destination" ref="207035020"/>
-          </object>
-          <int key="connectionID">4386</int>
-        </object>
-        <object class="IBConnectionRecord">
-          <object class="IBOutletConnection" key="connection">
-            <string key="label">o_tc_author</string>
-            <reference key="source" ref="998338913"/>
-            <reference key="destination" ref="475692067"/>
-          </object>
-          <int key="connectionID">4387</int>
-        </object>
-        <object class="IBConnectionRecord">
-          <object class="IBOutletConnection" key="connection">
-            <string key="label">o_tc_name</string>
-            <reference key="source" ref="998338913"/>
-            <reference key="destination" ref="965199398"/>
-          </object>
-          <int key="connectionID">4388</int>
-        </object>
         <object class="IBConnectionRecord">
           <object class="IBActionConnection" key="connection">
             <string key="label">quitAfterPlayback:</string>
@@ -7977,6 +7961,150 @@ LCAuLi4</string>
           </object>
           <int key="connectionID">5098</int>
         </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">togglePlaylistColumnTable:</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="430145115"/>
+          </object>
+          <int key="connectionID">5110</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">togglePlaylistColumnTable:</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="698601507"/>
+          </object>
+          <int key="connectionID">5111</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">togglePlaylistColumnTable:</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="447172608"/>
+          </object>
+          <int key="connectionID">5112</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">togglePlaylistColumnTable:</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="1025970654"/>
+          </object>
+          <int key="connectionID">5113</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">togglePlaylistColumnTable:</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="81224764"/>
+          </object>
+          <int key="connectionID">5114</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">togglePlaylistColumnTable:</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="939545655"/>
+          </object>
+          <int key="connectionID">5115</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">togglePlaylistColumnTable:</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="445879076"/>
+          </object>
+          <int key="connectionID">5116</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">togglePlaylistColumnTable:</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="744308072"/>
+          </object>
+          <int key="connectionID">5117</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">togglePlaylistColumnTable:</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="393274870"/>
+          </object>
+          <int key="connectionID">5118</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">o_mi_ptc_album</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="939545655"/>
+          </object>
+          <int key="connectionID">5119</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">o_mi_ptc_artist</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="447172608"/>
+          </object>
+          <int key="connectionID">5120</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">o_mi_ptc_date</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="744308072"/>
+          </object>
+          <int key="connectionID">5121</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">o_mi_ptc_description</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="445879076"/>
+          </object>
+          <int key="connectionID">5122</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">o_mi_ptc_duration</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="1025970654"/>
+          </object>
+          <int key="connectionID">5123</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">o_mi_ptc_genre</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="81224764"/>
+          </object>
+          <int key="connectionID">5124</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">o_mi_ptc_language</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="393274870"/>
+          </object>
+          <int key="connectionID">5125</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">o_mi_ptc_title</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="430145115"/>
+          </object>
+          <int key="connectionID">5126</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">o_mi_ptc_tracknum</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="698601507"/>
+          </object>
+          <int key="connectionID">5127</int>
+        </object>
       </object>
       <object class="IBMutableOrderedSet" key="objectRecords">
         <object class="NSArray" key="orderedObjects">
@@ -8438,6 +8566,7 @@ LCAuLi4</string>
               <reference ref="57503205"/>
               <reference ref="835383299"/>
               <reference ref="833088677"/>
+              <reference ref="221438055"/>
             </object>
             <reference key="parent" ref="565445175"/>
           </object>
@@ -10056,40 +10185,10 @@ LCAuLi4</string>
             <reference key="object" ref="23448837"/>
             <object class="NSMutableArray" key="children">
               <bool key="EncodedWithXMLCoder">YES</bool>
-              <reference ref="965199398"/>
-              <reference ref="475692067"/>
-              <reference ref="207035020"/>
               <reference ref="803225886"/>
             </object>
             <reference key="parent" ref="915491793"/>
           </object>
-          <object class="IBObjectRecord">
-            <int key="objectID">4377</int>
-            <reference key="object" ref="965199398"/>
-            <object class="NSMutableArray" key="children">
-              <bool key="EncodedWithXMLCoder">YES</bool>
-              <reference ref="80936197"/>
-            </object>
-            <reference key="parent" ref="23448837"/>
-          </object>
-          <object class="IBObjectRecord">
-            <int key="objectID">4378</int>
-            <reference key="object" ref="475692067"/>
-            <object class="NSMutableArray" key="children">
-              <bool key="EncodedWithXMLCoder">YES</bool>
-              <reference ref="306147575"/>
-            </object>
-            <reference key="parent" ref="23448837"/>
-          </object>
-          <object class="IBObjectRecord">
-            <int key="objectID">4379</int>
-            <reference key="object" ref="207035020"/>
-            <object class="NSMutableArray" key="children">
-              <bool key="EncodedWithXMLCoder">YES</bool>
-              <reference ref="984895421"/>
-            </object>
-            <reference key="parent" ref="23448837"/>
-          </object>
           <object class="IBObjectRecord">
             <int key="objectID">4380</int>
             <reference key="object" ref="803225886"/>
@@ -10104,21 +10203,6 @@ LCAuLi4</string>
             <reference key="object" ref="1059212168"/>
             <reference key="parent" ref="803225886"/>
           </object>
-          <object class="IBObjectRecord">
-            <int key="objectID">4382</int>
-            <reference key="object" ref="984895421"/>
-            <reference key="parent" ref="207035020"/>
-          </object>
-          <object class="IBObjectRecord">
-            <int key="objectID">4383</int>
-            <reference key="object" ref="306147575"/>
-            <reference key="parent" ref="475692067"/>
-          </object>
-          <object class="IBObjectRecord">
-            <int key="objectID">4384</int>
-            <reference key="object" ref="80936197"/>
-            <reference key="parent" ref="965199398"/>
-          </object>
           <object class="IBObjectRecord">
             <int key="objectID">4665</int>
             <reference key="object" ref="515305233"/>
@@ -11018,6 +11102,77 @@ LCAuLi4</string>
             <reference key="object" ref="964223566"/>
             <reference key="parent" ref="1050252183"/>
           </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5099</int>
+            <reference key="object" ref="221438055"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="797476210"/>
+            </object>
+            <reference key="parent" ref="1017583928"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5100</int>
+            <reference key="object" ref="797476210"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="430145115"/>
+              <reference ref="447172608"/>
+              <reference ref="1025970654"/>
+              <reference ref="81224764"/>
+              <reference ref="939545655"/>
+              <reference ref="445879076"/>
+              <reference ref="698601507"/>
+              <reference ref="744308072"/>
+              <reference ref="393274870"/>
+            </object>
+            <reference key="parent" ref="221438055"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5101</int>
+            <reference key="object" ref="430145115"/>
+            <reference key="parent" ref="797476210"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5102</int>
+            <reference key="object" ref="447172608"/>
+            <reference key="parent" ref="797476210"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5103</int>
+            <reference key="object" ref="1025970654"/>
+            <reference key="parent" ref="797476210"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5104</int>
+            <reference key="object" ref="81224764"/>
+            <reference key="parent" ref="797476210"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5105</int>
+            <reference key="object" ref="939545655"/>
+            <reference key="parent" ref="797476210"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5106</int>
+            <reference key="object" ref="698601507"/>
+            <reference key="parent" ref="797476210"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5107</int>
+            <reference key="object" ref="445879076"/>
+            <reference key="parent" ref="797476210"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5108</int>
+            <reference key="object" ref="744308072"/>
+            <reference key="parent" ref="797476210"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5109</int>
+            <reference key="object" ref="393274870"/>
+            <reference key="parent" ref="797476210"/>
+          </object>
         </object>
       </object>
       <object class="NSMutableDictionary" key="flattenedProperties">
@@ -11576,22 +11731,10 @@ LCAuLi4</string>
           <string>4376.CustomClassName</string>
           <string>4376.IBPluginDependency</string>
           <string>4376.ImportedFromIB2</string>
-          <string>4377.IBPluginDependency</string>
-          <string>4377.ImportedFromIB2</string>
-          <string>4378.IBPluginDependency</string>
-          <string>4378.ImportedFromIB2</string>
-          <string>4379.IBPluginDependency</string>
-          <string>4379.ImportedFromIB2</string>
           <string>4380.IBPluginDependency</string>
           <string>4380.ImportedFromIB2</string>
           <string>4381.IBPluginDependency</string>
           <string>4381.ImportedFromIB2</string>
-          <string>4382.IBPluginDependency</string>
-          <string>4382.ImportedFromIB2</string>
-          <string>4383.IBPluginDependency</string>
-          <string>4383.ImportedFromIB2</string>
-          <string>4384.IBPluginDependency</string>
-          <string>4384.ImportedFromIB2</string>
           <string>4392.IBPluginDependency</string>
           <string>4393.IBPluginDependency</string>
           <string>4397.IBPluginDependency</string>
@@ -11822,6 +11965,18 @@ LCAuLi4</string>
           <string>5091.IBPluginDependency</string>
           <string>5095.IBPluginDependency</string>
           <string>5095.ImportedFromIB2</string>
+          <string>5099.IBPluginDependency</string>
+          <string>5100.IBEditorWindowLastContentRect</string>
+          <string>5100.IBPluginDependency</string>
+          <string>5101.IBPluginDependency</string>
+          <string>5102.IBPluginDependency</string>
+          <string>5103.IBPluginDependency</string>
+          <string>5104.IBPluginDependency</string>
+          <string>5105.IBPluginDependency</string>
+          <string>5106.IBPluginDependency</string>
+          <string>5107.IBPluginDependency</string>
+          <string>5108.IBPluginDependency</string>
+          <string>5109.IBPluginDependency</string>
           <string>56.IBPluginDependency</string>
           <string>56.ImportedFromIB2</string>
           <string>57.IBEditorWindowLastContentRect</string>
@@ -12090,7 +12245,7 @@ LCAuLi4</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
-          <string>{{956, 323}, {302, 413}}</string>
+          <string>{{144, 299}, {302, 433}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -12259,7 +12414,7 @@ LCAuLi4</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
-          <string>{{500, 736}, {468, 20}}</string>
+          <string>{{0, 732}, {468, 20}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -12447,18 +12602,6 @@ LCAuLi4</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-          <boolean value="YES"/>
-          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-          <boolean value="YES"/>
-          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-          <boolean value="YES"/>
-          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-          <boolean value="YES"/>
-          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-          <boolean value="YES"/>
-          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-          <boolean value="YES"/>
-          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
@@ -12775,6 +12918,18 @@ LCAuLi4</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>{{446, 139}, {149, 183}}</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>{{329, 186}, {267, 263}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -12831,7 +12986,7 @@ LCAuLi4</string>
         </object>
       </object>
       <nil key="sourceID"/>
-      <int key="maxID">5098</int>
+      <int key="maxID">5131</int>
     </object>
     <object class="IBClassDescriber" key="IBDocument.Classes">
       <object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -15639,6 +15794,7 @@ LCAuLi4</string>
               <string>toggleFullscreen:</string>
               <string>toggleFullscreenDevice:</string>
               <string>toggleJumpButtons:</string>
+              <string>togglePlaylistColumnTable:</string>
               <string>togglePlaymodeButtons:</string>
               <string>toggleRecord:</string>
               <string>toggleVar:</string>
@@ -15681,6 +15837,7 @@ LCAuLi4</string>
               <string>id</string>
               <string>id</string>
               <string>id</string>
+              <string>id</string>
             </object>
           </object>
           <object class="NSMutableDictionary" key="actionInfosByName">
@@ -15712,6 +15869,7 @@ LCAuLi4</string>
               <string>toggleFullscreen:</string>
               <string>toggleFullscreenDevice:</string>
               <string>toggleJumpButtons:</string>
+              <string>togglePlaylistColumnTable:</string>
               <string>togglePlaymodeButtons:</string>
               <string>toggleRecord:</string>
               <string>toggleVar:</string>
@@ -15822,6 +15980,10 @@ LCAuLi4</string>
                 <string key="name">toggleJumpButtons:</string>
                 <string key="candidateClassName">id</string>
               </object>
+              <object class="IBActionInfo">
+                <string key="name">togglePlaylistColumnTable:</string>
+                <string key="candidateClassName">id</string>
+              </object>
               <object class="IBActionInfo">
                 <string key="name">togglePlaymodeButtons:</string>
                 <string key="candidateClassName">id</string>
@@ -15925,6 +16087,15 @@ LCAuLi4</string>
               <string>o_mi_prefs</string>
               <string>o_mi_previous</string>
               <string>o_mi_program</string>
+              <string>o_mi_ptc_album</string>
+              <string>o_mi_ptc_artist</string>
+              <string>o_mi_ptc_date</string>
+              <string>o_mi_ptc_description</string>
+              <string>o_mi_ptc_duration</string>
+              <string>o_mi_ptc_genre</string>
+              <string>o_mi_ptc_language</string>
+              <string>o_mi_ptc_title</string>
+              <string>o_mi_ptc_tracknum</string>
               <string>o_mi_quit</string>
               <string>o_mi_quitAfterPB</string>
               <string>o_mi_random</string>
@@ -15980,6 +16151,7 @@ LCAuLi4</string>
               <string>o_mu_ffmpeg_pp</string>
               <string>o_mu_file</string>
               <string>o_mu_help</string>
+              <string>o_mu_playlistTableColumns</string>
               <string>o_mu_program</string>
               <string>o_mu_screen</string>
               <string>o_mu_subtitle</string>
@@ -16076,6 +16248,15 @@ LCAuLi4</string>
               <string>NSMenuItem</string>
               <string>NSMenuItem</string>
               <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
               <string>id</string>
               <string>id</string>
               <string>id</string>
@@ -16135,6 +16316,7 @@ LCAuLi4</string>
               <string>NSMenu</string>
               <string>NSMenu</string>
               <string>NSMenu</string>
+              <string>NSMenu</string>
               <string>id</string>
               <string>id</string>
               <string>NSMenuItem</string>
@@ -16222,6 +16404,15 @@ LCAuLi4</string>
               <string>o_mi_prefs</string>
               <string>o_mi_previous</string>
               <string>o_mi_program</string>
+              <string>o_mi_ptc_album</string>
+              <string>o_mi_ptc_artist</string>
+              <string>o_mi_ptc_date</string>
+              <string>o_mi_ptc_description</string>
+              <string>o_mi_ptc_duration</string>
+              <string>o_mi_ptc_genre</string>
+              <string>o_mi_ptc_language</string>
+              <string>o_mi_ptc_title</string>
+              <string>o_mi_ptc_tracknum</string>
               <string>o_mi_quit</string>
               <string>o_mi_quitAfterPB</string>
               <string>o_mi_random</string>
@@ -16277,6 +16468,7 @@ LCAuLi4</string>
               <string>o_mu_ffmpeg_pp</string>
               <string>o_mu_file</string>
               <string>o_mu_help</string>
+              <string>o_mu_playlistTableColumns</string>
               <string>o_mu_program</string>
               <string>o_mu_screen</string>
               <string>o_mu_subtitle</string>
@@ -16576,6 +16768,42 @@ LCAuLi4</string>
                 <string key="name">o_mi_program</string>
                 <string key="candidateClassName">NSMenuItem</string>
               </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_ptc_album</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_ptc_artist</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_ptc_date</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_ptc_description</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_ptc_duration</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_ptc_genre</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_ptc_language</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_ptc_title</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_ptc_tracknum</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
               <object class="IBToOneOutletInfo">
                 <string key="name">o_mi_quit</string>
                 <string key="candidateClassName">NSMenuItem</string>
@@ -16796,6 +17024,10 @@ LCAuLi4</string>
                 <string key="name">o_mu_help</string>
                 <string key="candidateClassName">NSMenu</string>
               </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_playlistTableColumns</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
               <object class="IBToOneOutletInfo">
                 <string key="name">o_mu_program</string>
                 <string key="candidateClassName">NSMenu</string>
index 8561c6de0a434f1632d0039a8b81bb1f6a0fad9d..658aa65a04f43aa8681ab5a6bbeee8d396db1fe7 100644 (file)
     IBOutlet NSMenu * o_mu_chapter;
     IBOutlet NSMenuItem * o_mi_toggleJumpButtons;
     IBOutlet NSMenuItem * o_mi_togglePlaymodeButtons;
+    IBOutlet NSMenu * o_mu_playlistTableColumns;
+    IBOutlet NSMenuItem * o_mi_ptc_tracknum;
+    IBOutlet NSMenuItem * o_mi_ptc_title;
+    IBOutlet NSMenuItem * o_mi_ptc_artist;
+    IBOutlet NSMenuItem * o_mi_ptc_duration;
+    IBOutlet NSMenuItem * o_mi_ptc_genre;
+    IBOutlet NSMenuItem * o_mi_ptc_album;
+    IBOutlet NSMenuItem * o_mi_ptc_description;
+    IBOutlet NSMenuItem * o_mi_ptc_date;
+    IBOutlet NSMenuItem * o_mi_ptc_language;
 
     IBOutlet NSMenu * o_mu_audio;
     IBOutlet NSMenuItem * o_mi_vol_up;
 - (void)updatePlaybackRate;
 - (IBAction)toggleJumpButtons:(id)sender;
 - (IBAction)togglePlaymodeButtons:(id)sender;
+- (IBAction)togglePlaylistColumnTable:(id)sender;
+- (void)setPlaylistColumnTableState:(NSInteger)i_state forColumn:(NSString *)o_column;
 
 - (IBAction)toggleFullscreen:(id)sender;
 - (IBAction)resizeVideoWindow:(id)sender;
index 591fe6016aeb01c3a19926215657d44571335d87..16aef582fab17dde1568e52a2f4af506c9849e37 100644 (file)
@@ -36,6 +36,7 @@
 #import "simple_prefs.h"
 #import "coredialogs.h"
 #import "controls.h"
+#import "playlist.h"
 #import "playlistinfo.h"
 #import "VideoView.h"
 #import "CoreInteraction.h"
@@ -290,6 +291,16 @@ static VLCMainMenu *_o_sharedInstance = nil;
     [o_mi_toggleJumpButtons setState: config_GetInt( VLCIntf, "macosx-show-playback-buttons")];
     [o_mi_togglePlaymodeButtons setTitle: _NS("Show Shuffle & Repeat Buttons")];
     [o_mi_togglePlaymodeButtons setState: config_GetInt( VLCIntf, "macosx-show-playmode-buttons")];
+    [o_mu_playlistTableColumns setTitle: _NS("Playlist Table Columns")];
+    [o_mi_ptc_tracknum setTitle: _NS("Track Number")];
+    [o_mi_ptc_title setTitle: _NS("Title")];
+    [o_mi_ptc_artist setTitle: _NS("Artist")];
+    [o_mi_ptc_duration setTitle: _NS("Duration")];
+    [o_mi_ptc_genre setTitle: _NS("Genre")];
+    [o_mi_ptc_album setTitle: _NS("Album")];
+    [o_mi_ptc_description setTitle: _NS("Description")];
+    [o_mi_ptc_date setTitle: _NS("Date")];
+    [o_mi_ptc_language setTitle: _NS("Language")];
 
     [o_mi_program setTitle: _NS("Program")];
     [o_mu_program setTitle: _NS("Program")];
@@ -634,6 +645,56 @@ static VLCMainMenu *_o_sharedInstance = nil;
     [o_mi_togglePlaymodeButtons setState: b_value];
 }
 
+- (IBAction)togglePlaylistColumnTable:(id)sender
+{
+    [sender setState: ![sender state]];
+
+    NSString * o_column;
+
+    if (sender == o_mi_ptc_tracknum)
+        o_column = TRACKNUM_COLUMN;
+    else if (sender == o_mi_ptc_title)
+        o_column = TITLE_COLUMN;
+    else if (sender == o_mi_ptc_artist)
+        o_column = ARTIST_COLUMN;
+    else if (sender == o_mi_ptc_duration)
+        o_column = DURATION_COLUMN;
+    else if (sender == o_mi_ptc_genre)
+        o_column = GENRE_COLUMN;
+    else if (sender == o_mi_ptc_album)
+        o_column = ALBUM_COLUMN;
+    else if (sender == o_mi_ptc_description)
+        o_column = DESCRIPTION_COLUMN;
+    else if (sender == o_mi_ptc_date)
+        o_column = DATE_COLUMN;
+    else if (sender == o_mi_ptc_language)
+        o_column = LANGUAGE_COLUMN;
+
+    [[[VLCMain sharedInstance] playlist] setColumn: o_column state: [sender state]];
+}
+
+- (void)setPlaylistColumnTableState:(NSInteger)i_state forColumn:(NSString *)o_column
+{
+    if ([o_column isEqualToString: TRACKNUM_COLUMN])
+        [o_mi_ptc_tracknum setState: i_state];
+    else if ([o_column isEqualToString: TITLE_COLUMN])
+        [o_mi_ptc_title setState: i_state];
+    else if ([o_column isEqualToString: ARTIST_COLUMN])
+        [o_mi_ptc_artist setState: i_state];
+    else if ([o_column isEqualToString: DURATION_COLUMN])
+        [o_mi_ptc_duration setState: i_state];
+    else if ([o_column isEqualToString: GENRE_COLUMN])
+        [o_mi_ptc_genre setState: i_state];
+    else if ([o_column isEqualToString: ALBUM_COLUMN])
+        [o_mi_ptc_album setState: i_state];
+    else if ([o_column isEqualToString: DESCRIPTION_COLUMN])
+        [o_mi_ptc_description setState: i_state];
+    else if ([o_column isEqualToString: DATE_COLUMN])
+        [o_mi_ptc_date setState: i_state];
+    else if ([o_column isEqualToString: LANGUAGE_COLUMN])
+        [o_mi_ptc_language setState: i_state];
+}
+
 #pragma mark -
 #pragma mark video menu
 - (IBAction)toggleFullscreen:(id)sender
index 50a2b9210e8667b00e2b8a9e3f84c43e0bffd825..2d770a26644af5c9c048d8402d49d72242d533e0 100644 (file)
 
 #import "PXSourceList.h"
 
+/* playlist column definitions */
+#define TRACKNUM_COLUMN @"tracknumber"
+#define TITLE_COLUMN @"name"
+#define ARTIST_COLUMN @"artist"
+#define DURATION_COLUMN @"duration"
+#define GENRE_COLUMN @"genre"
+#define ALBUM_COLUMN @"album"
+#define DESCRIPTION_COLUMN @"description"
+#define DATE_COLUMN @"date"
+#define LANGUAGE_COLUMN @"language"
+
 /*****************************************************************************
  * VLCPlaylistView interface
  *****************************************************************************/
@@ -39,9 +50,6 @@
  *****************************************************************************/
 @interface VLCPlaylistCommon : NSObject <NSOutlineViewDataSource, NSOutlineViewDelegate>
 {
-    IBOutlet id o_tc_name;
-    IBOutlet id o_tc_author;
-    IBOutlet id o_tc_duration;
     IBOutlet VLCPlaylistView* o_outline_view;
 
     IBOutlet id o_tc_name_other;
 
 - (void)setPlaylistRoot: (playlist_item_t *)root_item;
 - (playlist_item_t *)currentPlaylistRoot;
-- (void)initStrings;
 - (playlist_item_t *)selectedPlaylistItem;
 - (NSOutlineView *)outlineView;
-- (void)swapPlaylists:(id)newList;
+
+- (void)setColumn: (NSString *)o_column state: (NSInteger)i_state;
 @end
 
 /*****************************************************************************
 
 - (void)appendArray:(NSArray*)o_array atPos:(int)i_position enqueue:(BOOL)b_enqueue;
 - (void)appendNodeArray:(NSArray*)o_array inNode:(playlist_item_t *)p_node atPos:(int)i_position enqueue:(BOOL)b_enqueue;
-
 @end
index 82a7fd3edf5b9e7dbf096fdf11806d8da0909ad5..a264cbbfc9a4b3df9effc284be9870864aed6845 100644 (file)
@@ -47,6 +47,7 @@
 #import "controls.h"
 #import "misc.h"
 #import "open.h"
+#import "MainMenu.h"
 
 #include <vlc_keys.h>
 #import <vlc_osd.h>
@@ -54,7 +55,6 @@
 
 #include <vlc_url.h>
 
-
 /*****************************************************************************
  * VLCPlaylistView implementation
  *****************************************************************************/
     [o_outline_view_other setDataSource: self];
     [o_outline_view_other setAllowsEmptySelection: NO];
 
-    [self initStrings];
-}
-
-- (void)initStrings
-{
-    [[o_tc_name headerCell] setStringValue:_NS("Name")];
-    [[o_tc_author headerCell] setStringValue:_NS("Author")];
-    [[o_tc_duration headerCell] setStringValue:_NS("Duration")];
-
     [[o_tc_name_other headerCell] setStringValue:_NS("Name")];
     [[o_tc_author_other headerCell] setStringValue:_NS("Author")];
     [[o_tc_duration_other headerCell] setStringValue:_NS("Duration")];
+
+    [self setColumn: TITLE_COLUMN state: NSOnState];
+    [self setColumn: ARTIST_COLUMN state: NSOnState];
+    [self setColumn: DURATION_COLUMN state: NSOnState];
+    id o_menu = [[VLCMain sharedInstance] mainMenu];
+    [o_menu setPlaylistColumnTableState: NSOnState forColumn: TITLE_COLUMN];
+    [o_menu setPlaylistColumnTableState: NSOnState forColumn: ARTIST_COLUMN];
+    [o_menu setPlaylistColumnTableState: NSOnState forColumn: DURATION_COLUMN];
 }
 
 - (void)setPlaylistRoot: (playlist_item_t *)root_item
     return p_current_root_item;
 }
 
-- (void)swapPlaylists:(id)newList
-{
-    if(newList != o_outline_view)
-    {
-        id o_outline_view_temp = o_outline_view;
-        id o_tc_author_temp = o_tc_author;
-        id o_tc_duration_temp = o_tc_duration;
-        id o_tc_name_temp = o_tc_name;
-        o_outline_view = o_outline_view_other;
-        o_tc_author = o_tc_author_other;
-        o_tc_duration = o_tc_duration_other;
-        o_tc_name = o_tc_name_other;
-        o_outline_view_other = o_outline_view_temp;
-        o_tc_author_other = o_tc_author_temp;
-        o_tc_duration_other = o_tc_duration_temp;
-        o_tc_name_other = o_tc_name_temp;
-    }
-}
-
 - (NSOutlineView *)outlineView
 {
     return o_outline_view;
                                                                 pointerValue];
 }
 
+- (void)setColumn: (NSString *)o_column state: (NSInteger)i_state
+{
+    NSTableColumn * o_work_tc;
+
+    if (i_state == NSOnState)
+    {
+        o_work_tc = [[NSTableColumn alloc] initWithIdentifier: o_column];
+        [o_work_tc setEditable: NO];
+        [[o_work_tc dataCell] setFont: [NSFont controlContentFontOfSize:11.]];
+
+        /* we cannot use a makro here, because gettext isn't clever enough for that */
+        if ([o_column isEqualToString: TRACKNUM_COLUMN])
+        {
+            [o_work_tc setMaxWidth: 20.];
+            [[o_work_tc headerCell] setStringValue: @"#"];
+        }
+        else if ([o_column isEqualToString: TITLE_COLUMN])
+            [[o_work_tc headerCell] setStringValue: _NS("Name")];
+        else if ([o_column isEqualToString: ARTIST_COLUMN])
+            [[o_work_tc headerCell] setStringValue: _NS("Author")];
+        else if ([o_column isEqualToString: DURATION_COLUMN])
+            [[o_work_tc headerCell] setStringValue: _NS("Duration")];
+        else if ([o_column isEqualToString: GENRE_COLUMN])
+            [[o_work_tc headerCell] setStringValue: _NS("Genre")];
+        else if ([o_column isEqualToString: ALBUM_COLUMN])
+            [[o_work_tc headerCell] setStringValue: _NS("Album")];
+        else if ([o_column isEqualToString: DESCRIPTION_COLUMN])
+            [[o_work_tc headerCell] setStringValue: _NS("Description")];
+        else if ([o_column isEqualToString: DATE_COLUMN])
+            [[o_work_tc headerCell] setStringValue: _NS("Date")];
+        else if ([o_column isEqualToString: LANGUAGE_COLUMN])
+            [[o_work_tc headerCell] setStringValue: _NS("Language")];
+
+        [o_outline_view addTableColumn: o_work_tc];
+        [o_work_tc release];
+        [o_outline_view reloadData];
+        [o_outline_view setNeedsDisplay: YES];
+    }
+    else
+        [o_outline_view removeTableColumn: [o_outline_view tableColumnWithIdentifier: o_column]];
+}
+
 @end
 
 @implementation VLCPlaylistCommon (NSOutlineViewDataSource)
 - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)o_tc byItem:(id)item
 {
     id o_value = nil;
+    char * psz_value;
     playlist_item_t *p_item;
 
     /* For error handling */
     }
 
     attempted_reload = NO;
+    NSString * o_identifier = [o_tc identifier];
 
-    if( [[o_tc identifier] isEqualToString:@"name"] )
+    if( [o_identifier isEqualToString:TRACKNUM_COLUMN] )
+    {
+        psz_value = input_item_GetTrackNumber( p_item->p_input ); \
+        if (psz_value) { \
+            o_value = [NSString stringWithUTF8String: psz_value]; \
+            free( psz_value ); \
+        }
+    }
+    else if( [o_identifier isEqualToString:TITLE_COLUMN] )
     {
         /* sanity check to prevent the NSString class from crashing */
         char *psz_title =  input_item_GetTitleFbName( p_item->p_input );
             free( psz_title );
         }
     }
-    else if( [[o_tc identifier] isEqualToString:@"artist"] )
+    else if( [o_identifier isEqualToString:ARTIST_COLUMN] )
     {
-        char *psz_artist = input_item_GetArtist( p_item->p_input );
-        if( psz_artist )
-            o_value = [NSString stringWithUTF8String: psz_artist];
-        free( psz_artist );
+        psz_value = input_item_GetArtist( p_item->p_input ); \
+        if (psz_value) { \
+            o_value = [NSString stringWithUTF8String: psz_value]; \
+            free( psz_value ); \
+        }
     }
-    else if( [[o_tc identifier] isEqualToString:@"duration"] )
+    else if( [o_identifier isEqualToString:@"duration"] )
     {
         char psz_duration[MSTRTIME_MAX_SIZE];
         mtime_t dur = input_item_GetDuration( p_item->p_input );
         else
             o_value = @"--:--";
     }
-    else if( [[o_tc identifier] isEqualToString:@"status"] )
+    else if( [o_identifier isEqualToString:GENRE_COLUMN] )
+    {
+        psz_value = input_item_GetGenre( p_item->p_input ); \
+        if (psz_value) { \
+            o_value = [NSString stringWithUTF8String: psz_value]; \
+            free( psz_value ); \
+        }
+    }
+    else if( [o_identifier isEqualToString:ALBUM_COLUMN] )
+    {
+        psz_value = input_item_GetAlbum( p_item->p_input ); \
+        if (psz_value) { \
+            o_value = [NSString stringWithUTF8String: psz_value]; \
+            free( psz_value ); \
+        }
+    }
+    else if( [o_identifier isEqualToString:DESCRIPTION_COLUMN] )
+    {
+        psz_value = input_item_GetDescription( p_item->p_input ); \
+        if (psz_value) { \
+            o_value = [NSString stringWithUTF8String: psz_value]; \
+            free( psz_value ); \
+        }
+    }
+    else if( [o_identifier isEqualToString:DATE_COLUMN] )
+    {
+        psz_value = input_item_GetDate( p_item->p_input ); \
+        if (psz_value) { \
+            o_value = [NSString stringWithUTF8String: psz_value]; \
+            free( psz_value ); \
+        }
+    }
+    else if( [o_identifier isEqualToString:LANGUAGE_COLUMN] )
+    {
+        psz_value = input_item_GetLanguage( p_item->p_input ); \
+        if (psz_value) { \
+            o_value = [NSString stringWithUTF8String: psz_value]; \
+            free( psz_value ); \
+        }
+    }
+    else if( [o_identifier isEqualToString:@"status"] )
     {
         if( input_item_HasErrorWhenReading( p_item->p_input ) )
         {
             [o_value setSize: NSMakeSize(16,16)];
         }
     }
+
     return o_value;
 }
 
 
 - (void)initStrings
 {
-    [super initStrings];
-
     [o_mi_save_playlist setTitle: _NS("Save Playlist...")];
     [o_mi_play setTitle: _NS("Play")];
     [o_mi_delete setTitle: _NS("Delete")];
     [[o_save_accessory_popup itemAtIndex:2] setTitle: _NS("HTML Playlist")];
 }
 
-- (void)swapPlaylists:(id)newList
-{
-    if(newList != o_outline_view)
-    {
-        id o_search_field_temp = o_search_field;
-        o_search_field = o_search_field_other;
-        o_search_field_other = o_search_field_temp;
-        [super swapPlaylists:newList];
-        [self playlistUpdated];
-    }
-}
-
 - (void)playlistUpdated
 {
     /* Clear indications of any existing column sorting */
 {
     int i_mode, i_type = 0;
     intf_thread_t *p_intf = VLCIntf;
+    NSString * o_identifier = [o_tc identifier];
 
     playlist_t *p_playlist = pl_Get( p_intf );
 
     /* Check whether the selected table column header corresponds to a
        sortable table column*/
-    if( !( o_tc == o_tc_name || o_tc == o_tc_author || o_tc == o_tc_duration ) )
-    {
+    if( !( [o_identifier isEqualToString:TITLE_COLUMN] || [o_identifier isEqualToString:ARTIST_COLUMN] || [o_identifier isEqualToString:DURATION_COLUMN] ) )
         return;
-    }
 
     if( o_tc_sortColumn == o_tc )
-    {
         b_isSortDescending = !b_isSortDescending;
-    }
     else
-    {
         b_isSortDescending = false;
-    }
 
-    if( o_tc == o_tc_name )
-    {
+    if( [o_identifier isEqualToString:TITLE_COLUMN] )
         i_mode = SORT_TITLE;
-    }
-    else if( o_tc == o_tc_author )
-    {
+    else if( [o_identifier isEqualToString:ARTIST_COLUMN] )
         i_mode = SORT_ARTIST;
-    }
-    else if( o_tc == o_tc_duration )
-    {
+    else if( [o_identifier isEqualToString:DURATION_COLUMN] )
         i_mode = SORT_DURATION;
-    }
 
     if( b_isSortDescending )
-    {
         i_type = ORDER_REVERSE;
-    }
     else
-    {
         i_type = ORDER_NORMAL;
-    }
 
     PL_LOCK;
     playlist_RecursiveNodeSort( p_playlist, [self currentPlaylistRoot], i_mode, i_type );
     [o_outline_view setHighlightedTableColumn:o_tc];
 
     if( b_isSortDescending )
-    {
-        [o_outline_view setIndicatorImage:o_descendingSortingImage
-                                                        inTableColumn:o_tc];
-    }
+        [o_outline_view setIndicatorImage:o_descendingSortingImage inTableColumn:o_tc];
     else
-    {
-        [o_outline_view setIndicatorImage:o_ascendingSortingImage
-                                                        inTableColumn:o_tc];
-    }
+        [o_outline_view setIndicatorImage:o_ascendingSortingImage inTableColumn:o_tc];
 }
 
 
     }
     return NO;
 }
-@end
-
 
+@end