vlc | branch: master | Felix Paul Kühne <[email protected]> | Thu May 30 21:04:59 2019 +0200| [9ee4545085776b2505361887a21eed9abb94eb93] | committer: Felix Paul Kühne
macosx: merge library folder management window to simple preferences > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9ee4545085776b2505361887a21eed9abb94eb93 --- .../package/macosx/VLC.xcodeproj/project.pbxproj | 8 - modules/gui/macosx/Makefile.am | 3 - modules/gui/macosx/UI/MainMenu.xib | 7 - modules/gui/macosx/UI/SimplePreferences.xib | 140 +++++++++++++- .../macosx/UI/VLCLibraryFolderManagementWindow.xib | 168 ----------------- .../library/VLCLibraryFolderManagementWindow.h | 48 ----- .../library/VLCLibraryFolderManagementWindow.m | 157 ---------------- modules/gui/macosx/menus/VLCMainMenu.h | 3 - modules/gui/macosx/menus/VLCMainMenu.m | 11 -- .../macosx/preferences/VLCSimplePrefsController.h | 52 ++++-- .../macosx/preferences/VLCSimplePrefsController.m | 206 ++++++++++++++++++--- po/POTFILES.in | 2 - 12 files changed, 352 insertions(+), 453 deletions(-) diff --git a/extras/package/macosx/VLC.xcodeproj/project.pbxproj b/extras/package/macosx/VLC.xcodeproj/project.pbxproj index a1fadb9f6c..5701bc5974 100644 --- a/extras/package/macosx/VLC.xcodeproj/project.pbxproj +++ b/extras/package/macosx/VLC.xcodeproj/project.pbxproj @@ -132,7 +132,6 @@ 7D903EAF224392B400917358 /* timespec_get.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D903EAE224392B400917358 /* timespec_get.c */; }; 7D903EB6224394BE00917358 /* specific.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D903EB5224394BE00917358 /* specific.c */; }; 7D903EB92243952100917358 /* threads.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D903EB82243952100917358 /* threads.c */; }; - 7D94E28D2274D2140008057F /* VLCLibraryFolderManagementWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D94E28B2274D2140008057F /* VLCLibraryFolderManagementWindow.m */; }; 7DB40D2A20CBCEB500F63173 /* VLCMainMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DB40D2920CBCEB500F63173 /* VLCMainMenu.m */; }; 7DB40D2D20CBCEC200F63173 /* VLCStatusBarIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DB40D2B20CBCEC200F63173 /* VLCStatusBarIcon.m */; }; 7DB7F1EC20CC036D00C2CAED /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB7F1EB20CC036D00C2CAED /* AudioUnit.framework */; }; @@ -512,9 +511,6 @@ 7D903EAE224392B400917358 /* timespec_get.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = timespec_get.c; path = ../../../../compat/timespec_get.c; sourceTree = "<group>"; }; 7D903EB5224394BE00917358 /* specific.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = specific.c; path = ../../../src/darwin/specific.c; sourceTree = "<group>"; }; 7D903EB82243952100917358 /* threads.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = threads.c; path = ../../../../src/misc/threads.c; sourceTree = "<group>"; }; - 7D94E28A2274D2140008057F /* VLCLibraryFolderManagementWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryFolderManagementWindow.h; sourceTree = "<group>"; }; - 7D94E28B2274D2140008057F /* VLCLibraryFolderManagementWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryFolderManagementWindow.m; sourceTree = "<group>"; }; - 7D94E28C2274D2140008057F /* VLCLibraryFolderManagementWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VLCLibraryFolderManagementWindow.xib; sourceTree = "<group>"; }; 7DB40D2820CBCEB500F63173 /* VLCMainMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCMainMenu.h; sourceTree = "<group>"; }; 7DB40D2920CBCEB500F63173 /* VLCMainMenu.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCMainMenu.m; sourceTree = "<group>"; }; 7DB40D2B20CBCEC200F63173 /* VLCStatusBarIcon.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCStatusBarIcon.m; sourceTree = "<group>"; }; @@ -1027,8 +1023,6 @@ 7DE2F0432282C84A0040DD0A /* VLCLibraryAudioDataSource.m */, 7DFBDCAF226A518400B700A5 /* VLCLibraryMenuController.h */, 7DFBDCB0226A518400B700A5 /* VLCLibraryMenuController.m */, - 7D94E28A2274D2140008057F /* VLCLibraryFolderManagementWindow.h */, - 7D94E28B2274D2140008057F /* VLCLibraryFolderManagementWindow.m */, 7DFBDCBF226DC16200B700A5 /* VLCInputItem.h */, 7DFBDCC0226DC16200B700A5 /* VLCInputItem.m */, ); @@ -1518,7 +1512,6 @@ children = ( 6B8224091E4D2A9000833BE1 /* MainMenu.xib */, 7D713D332201BB130042BEB7 /* VLCLibraryWindow.xib */, - 7D94E28C2274D2140008057F /* VLCLibraryFolderManagementWindow.xib */, 7D0F64002201F66D00FDB91F /* VLCPlaylistTableCellView.xib */, 7D445D8F220339D400263D34 /* VLCPlaylistMenu.xib */, 7D0F64052202047900FDB91F /* VLCLibraryCollectionViewItem.xib */, @@ -1662,7 +1655,6 @@ 1CCC89012078A3D500E5626F /* Preferences.xib in Sources */, 7DC21A7422049A6600F98A02 /* VLCOpenInputMetadata.m in Sources */, 1CCC89022078A3D500E5626F /* ResumeDialog.xib in Sources */, - 7D94E28D2274D2140008057F /* VLCLibraryFolderManagementWindow.m in Sources */, 1CCC89032078A3D500E5626F /* SimplePreferences.xib in Sources */, 7DE82E7922843781002D341A /* VLCLibraryAlbumTableCellView.m in Sources */, 1CCC89042078A3D500E5626F /* StreamOutput.xib in Sources */, diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am index d9f2aa1c58..49e8e04a19 100644 --- a/modules/gui/macosx/Makefile.am +++ b/modules/gui/macosx/Makefile.am @@ -66,8 +66,6 @@ libmacosx_plugin_la_SOURCES = \ gui/macosx/library/VLCLibraryController.m \ gui/macosx/library/VLCLibraryDataTypes.h \ gui/macosx/library/VLCLibraryDataTypes.m \ - gui/macosx/library/VLCLibraryFolderManagementWindow.h \ - gui/macosx/library/VLCLibraryFolderManagementWindow.m \ gui/macosx/library/VLCLibraryMenuController.h \ gui/macosx/library/VLCLibraryMenuController.m \ gui/macosx/library/VLCLibraryModel.h \ @@ -265,7 +263,6 @@ libmacosx_plugin_la_XIB_SOURCES = \ gui/macosx/UI/MainMenu.xib \ gui/macosx/UI/VLCLibraryAlbumTableCellView.xib \ gui/macosx/UI/VLCLibraryWindow.xib \ - gui/macosx/UI/VLCLibraryFolderManagementWindow.xib \ gui/macosx/UI/VLCLibraryTableCellView.xib \ gui/macosx/UI/VLCPlaylistMenu.xib \ gui/macosx/UI/VLCPlaylistTableCellView.xib \ diff --git a/modules/gui/macosx/UI/MainMenu.xib b/modules/gui/macosx/UI/MainMenu.xib index e543134225..0b1a8cd1f8 100644 --- a/modules/gui/macosx/UI/MainMenu.xib +++ b/modules/gui/macosx/UI/MainMenu.xib @@ -116,7 +116,6 @@ <outlet property="screenMenu" destination="1015" id="l5t-0E-DfG"/> <outlet property="select_all" destination="198" id="Is0-ct-CbR"/> <outlet property="services" destination="1996" id="X3H-XI-xFK"/> - <outlet property="showLibraryFolders" destination="5413" id="Yfe-WM-WVa"/> <outlet property="show_all" destination="150" id="XQ2-CW-0PI"/> <outlet property="snapshot" destination="2249" id="6bO-HY-I3I"/> <outlet property="stop" destination="5156" id="irh-Cr-vBT"/> @@ -366,12 +365,6 @@ <modifierMask key="keyEquivalentModifierMask"/> <menu key="submenu" title="View" id="5238"> <items> - <menuItem title="Show Library Folders..." id="5413"> - <modifierMask key="keyEquivalentModifierMask"/> - <connections> - <action selector="showLibraryFolders:" target="-2" id="7L9-pf-bP7"/> - </connections> - </menuItem> <menuItem isSeparatorItem="YES" id="5250"/> <menuItem title="Playlist Table Columns" id="5247"> <modifierMask key="keyEquivalentModifierMask"/> diff --git a/modules/gui/macosx/UI/SimplePreferences.xib b/modules/gui/macosx/UI/SimplePreferences.xib index 1366b78cc7..37608c6262 100644 --- a/modules/gui/macosx/UI/SimplePreferences.xib +++ b/modules/gui/macosx/UI/SimplePreferences.xib @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.13.2" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> <dependencies> <deployment identifier="macosx"/> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.13.2"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> <objects> @@ -81,6 +81,15 @@ <outlet property="intf_playbackControlBox" destination="CZP-ZN-k6p" id="voN-Ji-9aw"/> <outlet property="intf_statusIconCheckbox" destination="r3P-eU-tEX" id="ixl-Al-ddh"/> <outlet property="intf_updateCheckbox" destination="3556" id="YsJ-GG-xVt"/> + <outlet property="mediaLibraryAddFolderButton" destination="AsR-G7-aHo" id="rWZ-Ns-RgB"/> + <outlet property="mediaLibraryBanFolderButton" destination="Yvu-g1-fLU" id="FIb-RT-Ymv"/> + <outlet property="mediaLibraryBannedTableColumn" destination="bjG-Ru-jiX" id="4KB-Y9-maP"/> + <outlet property="mediaLibraryFolderTableView" destination="uR2-Au-IEe" id="5kB-Wd-fSH"/> + <outlet property="mediaLibraryNameTableColumn" destination="wAS-Qh-rAS" id="2ei-jH-cvI"/> + <outlet property="mediaLibraryPathTableColumn" destination="QBg-HT-Vvb" id="4AQ-jb-HLf"/> + <outlet property="mediaLibraryPresentTableColumn" destination="kVl-Wj-9vm" id="cmW-Jn-uIQ"/> + <outlet property="mediaLibraryRemoveFolderButton" destination="WnC-lv-27l" id="EUb-bH-L13"/> + <outlet property="mediaLibraryView" destination="eei-wi-f9H" id="Oh4-jV-mOk"/> <outlet property="osdView" destination="2523" id="d1o-FZ-hXa"/> <outlet property="osd_encodingLabel" destination="2531" id="yyW-qD-zJ0"/> <outlet property="osd_encodingPopup" destination="2532" id="mBO-m6-lIV"/> @@ -1887,7 +1896,7 @@ Gw <rect key="frame" x="20" y="60" width="530" height="311"/> <clipView key="contentView" id="EbT-aN-Pgg"> <rect key="frame" x="1" y="0.0" width="528" height="310"/> - <autoresizingMask key="autoresizingMask"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" alternatingRowBackgroundColors="YES" columnReordering="NO" multipleSelection="NO" emptySelection="NO" autosaveName="sprefs_hotkeys_view" headerView="3541" id="2670"> <rect key="frame" x="0.0" y="0.0" width="528" height="287"/> @@ -2354,5 +2363,130 @@ Gw </constraints> </view> </window> + <customView translatesAutoresizingMaskIntoConstraints="NO" id="eei-wi-f9H" userLabel="Library"> + <rect key="frame" x="0.0" y="0.0" width="570" height="426"/> + <subviews> + <scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gbE-0a-hRm"> + <rect key="frame" x="20" y="55" width="530" height="311"/> + <clipView key="contentView" ambiguous="YES" id="2Qm-UL-Q5r"> + <rect key="frame" x="1" y="0.0" width="528" height="310"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" headerView="ZJl-qT-3EL" id="uR2-Au-IEe"> + <rect key="frame" x="0.0" y="0.0" width="528" height="285"/> + <autoresizingMask key="autoresizingMask"/> + <size key="intercellSpacing" width="3" height="2"/> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> + <tableColumns> + <tableColumn editable="NO" width="116" minWidth="40" maxWidth="1000" id="wAS-Qh-rAS"> + <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border"> + <font key="font" metaFont="smallSystem"/> + <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> + </tableHeaderCell> + <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" id="HF2-k9-u2L"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> + </tableColumn> + <tableColumn editable="NO" width="116" minWidth="40" maxWidth="1000" id="kVl-Wj-9vm"> + <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border"> + <font key="font" metaFont="smallSystem"/> + <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> + </tableHeaderCell> + <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="BzP-8N-ePz"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> + </tableColumn> + <tableColumn editable="NO" width="116" minWidth="40" maxWidth="1000" id="bjG-Ru-jiX"> + <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border"> + <font key="font" metaFont="smallSystem"/> + <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> + </tableHeaderCell> + <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="Tvq-Lx-Bg9"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> + </tableColumn> + <tableColumn editable="NO" width="168" minWidth="40" maxWidth="1000" id="QBg-HT-Vvb"> + <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border"> + <font key="font" metaFont="smallSystem"/> + <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> + </tableHeaderCell> + <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" id="w2t-R8-nAs" customClass="NSPathComponentCell"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> + </tableColumn> + </tableColumns> + </tableView> + </subviews> + </clipView> + <constraints> + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="311" id="g8D-ve-asl"/> + </constraints> + <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="T9s-hf-wxH"> + <rect key="frame" x="1" y="273" width="528" height="16"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="Qb5-gH-ISt"> + <rect key="frame" x="224" y="17" width="15" height="102"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <tableHeaderView key="headerView" id="ZJl-qT-3EL"> + <rect key="frame" x="0.0" y="0.0" width="528" height="25"/> + <autoresizingMask key="autoresizingMask"/> + </tableHeaderView> + </scrollView> + <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AsR-G7-aHo"> + <rect key="frame" x="14" y="13" width="117" height="32"/> + <buttonCell key="cell" type="push" title="Add Folder..." bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="TE0-DV-iku"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + </button> + <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WnC-lv-27l"> + <rect key="frame" x="131" y="13" width="131" height="32"/> + <buttonCell key="cell" type="push" title="Remove Folder" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="5lO-dg-v02"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + </button> + <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Yvu-g1-fLU"> + <rect key="frame" x="262" y="13" width="64" height="32"/> + <buttonCell key="cell" type="push" title="Ban" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ga6-ZJ-oef"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + </button> + </subviews> + <constraints> + <constraint firstItem="AsR-G7-aHo" firstAttribute="leading" secondItem="eei-wi-f9H" secondAttribute="leading" constant="20" id="3jm-3z-Xs7"/> + <constraint firstItem="AsR-G7-aHo" firstAttribute="centerY" secondItem="WnC-lv-27l" secondAttribute="centerY" id="Aj1-lf-d90"/> + <constraint firstItem="WnC-lv-27l" firstAttribute="centerY" secondItem="Yvu-g1-fLU" secondAttribute="centerY" id="Rsb-k3-Qtk"/> + <constraint firstItem="gbE-0a-hRm" firstAttribute="top" secondItem="eei-wi-f9H" secondAttribute="top" constant="60" id="VDk-uE-IWD"/> + <constraint firstItem="Yvu-g1-fLU" firstAttribute="leading" secondItem="WnC-lv-27l" secondAttribute="trailing" constant="12" id="YM9-u7-u7m"/> + <constraint firstItem="AsR-G7-aHo" firstAttribute="top" secondItem="uR2-Au-IEe" secondAttribute="bottom" constant="10" id="elE-dp-8C5"/> + <constraint firstItem="gbE-0a-hRm" firstAttribute="leading" secondItem="eei-wi-f9H" secondAttribute="leading" constant="20" id="ggB-z1-D2B"/> + <constraint firstAttribute="bottom" secondItem="AsR-G7-aHo" secondAttribute="bottom" constant="20" id="hxw-eg-Qfw"/> + <constraint firstAttribute="trailing" secondItem="gbE-0a-hRm" secondAttribute="trailing" constant="20" id="n4Z-j5-Mtr"/> + <constraint firstItem="WnC-lv-27l" firstAttribute="leading" secondItem="AsR-G7-aHo" secondAttribute="trailing" constant="12" id="nX8-gx-X3w"/> + <constraint firstItem="AsR-G7-aHo" firstAttribute="top" secondItem="gbE-0a-hRm" secondAttribute="bottom" constant="14" id="tvU-aS-f8N"/> + </constraints> + <point key="canvasLocation" x="139" y="1098"/> + </customView> </objects> </document> diff --git a/modules/gui/macosx/UI/VLCLibraryFolderManagementWindow.xib b/modules/gui/macosx/UI/VLCLibraryFolderManagementWindow.xib deleted file mode 100644 index aea4d05f9a..0000000000 --- a/modules/gui/macosx/UI/VLCLibraryFolderManagementWindow.xib +++ /dev/null @@ -1,168 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> - <dependencies> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/> - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> - </dependencies> - <objects> - <customObject id="-2" userLabel="File's Owner" customClass="VLCLibraryFolderManagementWindow"> - <connections> - <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/> - </connections> - </customObject> - <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> - <customObject id="-3" userLabel="Application" customClass="NSObject"/> - <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5" customClass="VLCLibraryFolderManagementWindow"> - <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/> - <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/> - <rect key="contentRect" x="196" y="240" width="638" height="375"/> - <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1177"/> - <view key="contentView" id="se5-gp-TjO"> - <rect key="frame" x="0.0" y="0.0" width="638" height="375"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cN4-CV-0ZY"> - <rect key="frame" x="0.0" y="40" width="638" height="335"/> - <clipView key="contentView" id="iBY-dM-gpy"> - <rect key="frame" x="1" y="0.0" width="636" height="319"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <subviews> - <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" headerView="qUX-xV-r50" id="yXW-Oh-c8y"> - <rect key="frame" x="0.0" y="0.0" width="874" height="294"/> - <autoresizingMask key="autoresizingMask"/> - <size key="intercellSpacing" width="3" height="2"/> - <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> - <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> - <tableColumns> - <tableColumn editable="NO" width="116" minWidth="40" maxWidth="1000" id="yeU-u1-CWG"> - <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border"> - <font key="font" metaFont="smallSystem"/> - <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> - </tableHeaderCell> - <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" id="i4B-9b-CSN"> - <font key="font" metaFont="system"/> - <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> - </tableColumn> - <tableColumn editable="NO" width="116" minWidth="40" maxWidth="1000" id="Bs6-l7-T2R"> - <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border"> - <font key="font" metaFont="smallSystem"/> - <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> - </tableHeaderCell> - <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="s5u-MH-82l"> - <font key="font" metaFont="system"/> - <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> - </tableColumn> - <tableColumn editable="NO" width="116" minWidth="40" maxWidth="1000" id="MyB-sf-7Zj"> - <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border"> - <font key="font" metaFont="smallSystem"/> - <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> - </tableHeaderCell> - <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="BTa-z6-tCC"> - <font key="font" metaFont="system"/> - <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> - </tableColumn> - <tableColumn editable="NO" width="514" minWidth="40" maxWidth="1000" id="oY3-Hl-Pyi"> - <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border"> - <font key="font" metaFont="smallSystem"/> - <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> - </tableHeaderCell> - <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" id="rue-hK-UWM" customClass="NSPathComponentCell"> - <font key="font" metaFont="system"/> - <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> - </tableColumn> - </tableColumns> - <connections> - <outlet property="dataSource" destination="F0z-JX-Cv5" id="8f8-Oz-6wF"/> - <outlet property="delegate" destination="F0z-JX-Cv5" id="p5g-fz-zBe"/> - </connections> - </tableView> - </subviews> - </clipView> - <scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="AbQ-Qa-KFB"> - <rect key="frame" x="1" y="319" width="636" height="15"/> - <autoresizingMask key="autoresizingMask"/> - </scroller> - <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="wbF-0g-t3S"> - <rect key="frame" x="224" y="17" width="15" height="102"/> - <autoresizingMask key="autoresizingMask"/> - </scroller> - <tableHeaderView key="headerView" id="qUX-xV-r50"> - <rect key="frame" x="0.0" y="0.0" width="874" height="25"/> - <autoresizingMask key="autoresizingMask"/> - </tableHeaderView> - </scrollView> - <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="M6Q-FK-KFM"> - <rect key="frame" x="4" y="3" width="117" height="32"/> - <buttonCell key="cell" type="push" title="Add Folder..." bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="dz7-Ho-opb"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" metaFont="system"/> - </buttonCell> - <connections> - <action selector="addFolder:" target="F0z-JX-Cv5" id="ESX-mj-rsH"/> - </connections> - </button> - <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="TXg-4i-ifD"> - <rect key="frame" x="121" y="3" width="131" height="32"/> - <buttonCell key="cell" type="push" title="Remove Folder" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ntF-De-N3a"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" metaFont="system"/> - </buttonCell> - <connections> - <action selector="removeFolder:" target="F0z-JX-Cv5" id="0va-hY-kub"/> - </connections> - </button> - <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7YE-Q5-Ga6"> - <rect key="frame" x="252" y="3" width="64" height="32"/> - <buttonCell key="cell" type="push" title="Ban" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="aeQ-5m-txD"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" metaFont="system"/> - </buttonCell> - <connections> - <action selector="banFolder:" target="F0z-JX-Cv5" id="hwx-lv-G4o"/> - </connections> - </button> - </subviews> - <constraints> - <constraint firstItem="TXg-4i-ifD" firstAttribute="leading" secondItem="M6Q-FK-KFM" secondAttribute="trailing" constant="12" id="3Aa-O9-FDM"/> - <constraint firstAttribute="trailing" secondItem="cN4-CV-0ZY" secondAttribute="trailing" id="9fQ-kS-fVl"/> - <constraint firstAttribute="bottom" secondItem="cN4-CV-0ZY" secondAttribute="bottom" constant="40" id="JcK-pt-MPl"/> - <constraint firstAttribute="bottom" secondItem="M6Q-FK-KFM" secondAttribute="bottom" constant="10" id="QBc-i9-VOn"/> - <constraint firstItem="TXg-4i-ifD" firstAttribute="centerY" secondItem="7YE-Q5-Ga6" secondAttribute="centerY" id="a1p-pU-qbP"/> - <constraint firstItem="M6Q-FK-KFM" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="10" id="aaN-ZG-9yy"/> - <constraint firstItem="7YE-Q5-Ga6" firstAttribute="leading" secondItem="TXg-4i-ifD" secondAttribute="trailing" constant="12" id="f4V-bp-uA6"/> - <constraint firstItem="cN4-CV-0ZY" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" id="jtK-jp-ohZ"/> - <constraint firstItem="M6Q-FK-KFM" firstAttribute="centerY" secondItem="TXg-4i-ifD" secondAttribute="centerY" id="lIc-z2-MZT"/> - <constraint firstItem="cN4-CV-0ZY" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="xqp-sF-QJZ"/> - </constraints> - </view> - <connections> - <outlet property="addFolderButton" destination="M6Q-FK-KFM" id="kjf-Yh-hL2"/> - <outlet property="banFolderButton" destination="7YE-Q5-Ga6" id="2Ef-2r-gFE"/> - <outlet property="bannedTableColumn" destination="MyB-sf-7Zj" id="ViU-oo-A7U"/> - <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/> - <outlet property="libraryFolderTableView" destination="yXW-Oh-c8y" id="pKb-oj-bkV"/> - <outlet property="nameTableColumn" destination="yeU-u1-CWG" id="Dxp-QO-oXu"/> - <outlet property="pathTableColumn" destination="oY3-Hl-Pyi" id="fZs-RB-NLB"/> - <outlet property="presentTableColumn" destination="Bs6-l7-T2R" id="BLH-Ag-kYm"/> - <outlet property="removeFolderButton" destination="TXg-4i-ifD" id="h1S-AS-JhG"/> - </connections> - <point key="canvasLocation" x="60" y="199.5"/> - </window> - </objects> -</document> diff --git a/modules/gui/macosx/library/VLCLibraryFolderManagementWindow.h b/modules/gui/macosx/library/VLCLibraryFolderManagementWindow.h deleted file mode 100644 index 4bf8e3d486..0000000000 --- a/modules/gui/macosx/library/VLCLibraryFolderManagementWindow.h +++ /dev/null @@ -1,48 +0,0 @@ -/***************************************************************************** - * VLCLibraryFolderManagementWindow.h: MacOS X interface module - ***************************************************************************** - * Copyright (C) 2019 VLC authors and VideoLAN - * - * Authors: Felix Paul Kühne <fkuehne # videolan -dot- org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - *****************************************************************************/ - -#import <Cocoa/Cocoa.h> - -NS_ASSUME_NONNULL_BEGIN - -@interface VLCLibraryFolderManagementWindowController : NSWindowController - -@end - -@interface VLCLibraryFolderManagementWindow : NSWindow <NSTableViewDelegate, NSTableViewDataSource> - -@property (readwrite, weak) IBOutlet NSTableView *libraryFolderTableView; -@property (readwrite, weak) IBOutlet NSTableColumn *nameTableColumn; -@property (readwrite, weak) IBOutlet NSTableColumn *pathTableColumn; -@property (readwrite, weak) IBOutlet NSTableColumn *presentTableColumn; -@property (readwrite, weak) IBOutlet NSTableColumn *bannedTableColumn; -@property (readwrite, weak) IBOutlet NSButton *addFolderButton; -@property (readwrite, weak) IBOutlet NSButton *removeFolderButton; -@property (readwrite, weak) IBOutlet NSButton *banFolderButton; - -- (IBAction)addFolder:(id)sender; -- (IBAction)removeFolder:(id)sender; -- (IBAction)banFolder:(id)sender; - -@end - -NS_ASSUME_NONNULL_END diff --git a/modules/gui/macosx/library/VLCLibraryFolderManagementWindow.m b/modules/gui/macosx/library/VLCLibraryFolderManagementWindow.m deleted file mode 100644 index 097ab18c0d..0000000000 --- a/modules/gui/macosx/library/VLCLibraryFolderManagementWindow.m +++ /dev/null @@ -1,157 +0,0 @@ -/***************************************************************************** - * VLCLibraryFolderManagementWindow.m: MacOS X interface module - ***************************************************************************** - * Copyright (C) 2019 VLC authors and VideoLAN - * - * Authors: Felix Paul Kühne <fkuehne # videolan -dot- org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - *****************************************************************************/ - -#import "VLCLibraryFolderManagementWindow.h" - -#import "main/VLCMain.h" -#import "library/VLCLibraryController.h" -#import "library/VLCLibraryModel.h" -#import "library/VLCLibraryDataTypes.h" -#import "extensions/NSString+Helpers.h" - -@implementation VLCLibraryFolderManagementWindowController - -- (void)windowDidLoad { - [super windowDidLoad]; - - VLCLibraryFolderManagementWindow *window = (VLCLibraryFolderManagementWindow *)self.window; - [window setTitle:_NS("Media Library")]; - [window.addFolderButton setTitle:_NS("Add Folder...")]; - [window.banFolderButton setTitle:_NS("Ban Folder")]; - [window.removeFolderButton setTitle:_NS("Remove Folder")]; - [window.nameTableColumn setTitle:_NS("Name")]; - [window.presentTableColumn setTitle:_NS("Present")]; - [window.bannedTableColumn setTitle:_NS("Banned")]; - [window.pathTableColumn setTitle:_NS("Location")]; -} - -@end - -@interface VLCLibraryFolderManagementWindow () -{ - NSArray *_cachedFolderList; - VLCLibraryController *_libraryController; -} -@end - -@implementation VLCLibraryFolderManagementWindow - -- (instancetype)initWithContentRect:(NSRect)contentRect styleMask:(NSWindowStyleMask)style backing:(NSBackingStoreType)backingStoreType defer:(BOOL)flag -{ - self = [super initWithContentRect:contentRect styleMask:style backing:backingStoreType defer:flag]; - if (self) { - _libraryController = [[VLCMain sharedInstance] libraryController]; - } - return self; -} - -- (void)awakeFromNib -{ - self.banFolderButton.enabled = self.removeFolderButton.enabled = NO; -} - -- (void)makeKeyAndOrderFront:(id)sender -{ - [super makeKeyAndOrderFront:sender]; - [self.libraryFolderTableView reloadData]; -} - -- (IBAction)addFolder:(id)sender -{ - NSOpenPanel *openPanel = [NSOpenPanel openPanel]; - [openPanel setTitle:_NS("Add Folder")]; - [openPanel setCanChooseFiles:NO]; - [openPanel setCanChooseDirectories:YES]; - [openPanel setAllowsMultipleSelection:YES]; - - NSModalResponse returnValue = [openPanel runModal]; - - if (returnValue == NSModalResponseOK) { - NSArray *URLs = [openPanel URLs]; - NSUInteger count = [URLs count]; - for (NSUInteger i = 0; i < count ; i++) { - NSURL *url = URLs[i]; - [_libraryController addFolderWithFileURL:url]; - } - - _cachedFolderList = nil; - [self.libraryFolderTableView reloadData]; - } -} - -- (IBAction)banFolder:(id)sender -{ - VLCMediaLibraryEntryPoint *entryPoint = _cachedFolderList[self.libraryFolderTableView.selectedRow]; - if (entryPoint.isBanned) { - [_libraryController unbanFolderWithFileURL:[NSURL URLWithString:entryPoint.MRL]]; - } else { - [_libraryController banFolderWithFileURL:[NSURL URLWithString:entryPoint.MRL]]; - } - - _cachedFolderList = nil; - [self.libraryFolderTableView reloadData]; -} - -- (IBAction)removeFolder:(id)sender -{ - VLCMediaLibraryEntryPoint *entryPoint = _cachedFolderList[self.libraryFolderTableView.selectedRow]; - [_libraryController removeFolderWithFileURL:[NSURL URLWithString:entryPoint.MRL]]; - - _cachedFolderList = nil; - [self.libraryFolderTableView reloadData]; -} - -- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView -{ - if (!_cachedFolderList) { - _cachedFolderList = [[_libraryController libraryModel] listOfMonitoredFolders]; - } - return _cachedFolderList.count; -} - -- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row -{ - VLCMediaLibraryEntryPoint *entryPoint = _cachedFolderList[row]; - if (tableColumn == self.nameTableColumn) { - return [entryPoint.decodedMRL lastPathComponent]; - } else if (tableColumn == self.presentTableColumn) { - return entryPoint.isPresent ? @"✔" : @"✘"; - } else if (tableColumn == self.bannedTableColumn) { - return entryPoint.isBanned ? @"✔" : @"✘"; - } else { - return entryPoint.decodedMRL; - } -} - -- (void)tableViewSelectionDidChange:(NSNotification *)notification -{ - NSInteger selectedRow = self.libraryFolderTableView.selectedRow; - if (selectedRow == -1) { - self.banFolderButton.enabled = self.removeFolderButton.enabled = NO; - return; - } - self.banFolderButton.enabled = self.removeFolderButton.enabled = YES; - VLCMediaLibraryEntryPoint *entryPoint = _cachedFolderList[selectedRow]; - [self.banFolderButton setTitle:entryPoint.isBanned ? _NS("Unban Folder") : _NS("Ban Folder")]; -} - -@end diff --git a/modules/gui/macosx/menus/VLCMainMenu.h b/modules/gui/macosx/menus/VLCMainMenu.h index 4b6ea5cfaf..049f610a30 100644 --- a/modules/gui/macosx/menus/VLCMainMenu.h +++ b/modules/gui/macosx/menus/VLCMainMenu.h @@ -66,7 +66,6 @@ @property (readwrite, weak) IBOutlet NSMenuItem *toggleJumpButtons; @property (readwrite, weak) IBOutlet NSMenuItem *togglePlaymodeButtons; @property (readwrite, weak) IBOutlet NSMenuItem *toggleEffectsButton; -@property (readwrite, weak) IBOutlet NSMenuItem *showLibraryFolders; @property (readwrite, weak) IBOutlet NSMenu *playlistTableColumnsMenu; @property (readwrite, weak) IBOutlet NSMenuItem *playlistTableColumns; @@ -220,8 +219,6 @@ - (IBAction)intfOpenCapture:(id)sender; - (IBAction)savePlaylist:(id)sender; -- (IBAction)showLibraryFolders:(id)sender; - - (IBAction)play:(id)sender; - (IBAction)stop:(id)sender; diff --git a/modules/gui/macosx/menus/VLCMainMenu.m b/modules/gui/macosx/menus/VLCMainMenu.m index e2b67ec4e4..655ab9da88 100644 --- a/modules/gui/macosx/menus/VLCMainMenu.m +++ b/modules/gui/macosx/menus/VLCMainMenu.m @@ -29,7 +29,6 @@ #import "extensions/NSString+Helpers.h" #import "library/VLCLibraryWindow.h" -#import "library/VLCLibraryFolderManagementWindow.h" #import "menus/renderers/VLCRendererMenuController.h" @@ -95,7 +94,6 @@ typedef NS_ENUM(NSInteger, VLCObjectType) { VLCRendererMenuController *_rendererMenuController; VLCPlaylistController *_playlistController; VLCPlayerController *_playerController; - VLCLibraryFolderManagementWindowController *_libraryFoldersController; NSTimer *_cancelRendererDiscoveryTimer; NSMenu *_playlistTableColumnsContextMenu; @@ -365,7 +363,6 @@ typedef NS_ENUM(NSInteger, VLCObjectType) { [_findItem setTitle: _NS("Find")]; [_viewMenu setTitle: _NS("View")]; - [_showLibraryFolders setTitle: _NS("Show Library Folders...")]; [_playlistTableColumns setTitle: _NS("Playlist Table Columns")]; [_controlsMenu setTitle: _NS("Playback")]; @@ -733,14 +730,6 @@ typedef NS_ENUM(NSInteger, VLCObjectType) { #pragma mark - View -- (IBAction)showLibraryFolders:(id)sender -{ - if (!_libraryFoldersController) { - _libraryFoldersController = [[VLCLibraryFolderManagementWindowController alloc] initWithWindowNibName:@"VLCLibraryFolderManagementWindow"]; - } - [_libraryFoldersController showWindow:sender]; -} - #pragma mark - Playback - (IBAction)play:(id)sender diff --git a/modules/gui/macosx/preferences/VLCSimplePrefsController.h b/modules/gui/macosx/preferences/VLCSimplePrefsController.h index b7d0b49141..8b5fc5fbef 100644 --- a/modules/gui/macosx/preferences/VLCSimplePrefsController.h +++ b/modules/gui/macosx/preferences/VLCSimplePrefsController.h @@ -1,24 +1,25 @@ /***************************************************************************** -* VLCSimplePrefsController.h: Simple Preferences for Mac OS X -***************************************************************************** -* Copyright (C) 2008-2014 VLC authors and VideoLAN -* -* Authors: Felix Paul Kühne <fkuehne at videolan dot org> -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. -*****************************************************************************/ + * VLCSimplePrefsController.h: Simple Preferences for Mac OS X + ***************************************************************************** + * Copyright (C) 2008-2019 VLC authors and VideoLAN + * + * Authors: Felix Paul Kühne <fkuehne # videolan dot org> + * David Fuhrmann <dfuhrmann # videolan dot org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ #import <Cocoa/Cocoa.h> @@ -58,6 +59,17 @@ @property (readwrite, weak) IBOutlet NSButtonCell *audio_autosavevol_yesButtonCell; @property (readwrite, weak) IBOutlet NSButtonCell *audio_autosavevol_noButtonCell; +// library pane +@property (readwrite, strong) IBOutlet NSView *mediaLibraryView; +@property (readwrite, weak) IBOutlet NSTableView *mediaLibraryFolderTableView; +@property (readwrite, weak) IBOutlet NSTableColumn *mediaLibraryNameTableColumn; +@property (readwrite, weak) IBOutlet NSTableColumn *mediaLibraryPathTableColumn; +@property (readwrite, weak) IBOutlet NSTableColumn *mediaLibraryPresentTableColumn; +@property (readwrite, weak) IBOutlet NSTableColumn *mediaLibraryBannedTableColumn; +@property (readwrite, weak) IBOutlet NSButton *mediaLibraryAddFolderButton; +@property (readwrite, weak) IBOutlet NSButton *mediaLibraryRemoveFolderButton; +@property (readwrite, weak) IBOutlet NSButton *mediaLibraryBanFolderButton; + // hotkeys pane @property (readwrite, strong) IBOutlet NSView *hotkeysView; diff --git a/modules/gui/macosx/preferences/VLCSimplePrefsController.m b/modules/gui/macosx/preferences/VLCSimplePrefsController.m index 3884f7f05e..0f078fb711 100644 --- a/modules/gui/macosx/preferences/VLCSimplePrefsController.m +++ b/modules/gui/macosx/preferences/VLCSimplePrefsController.m @@ -1,24 +1,26 @@ /***************************************************************************** -* VLCSimplePrefsController.m: Simple Preferences for Mac OS X -***************************************************************************** -* Copyright (C) 2008-2014 VLC authors and VideoLAN -* -* Authors: Felix Paul Kühne <fkuehne at videolan dot org> -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. -*****************************************************************************/ + * VLCSimplePrefsController.m: Simple Preferences for Mac OS X + ***************************************************************************** + * Copyright (C) 2008-2019 VLC authors and VideoLAN + * + * Authors: Felix Paul Kühne <fkuehne # videolan dot org> + * David Fuhrmann <dfuhrmann # videolan dot org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -45,6 +47,9 @@ #import "main/VLCMain+OldPrefs.h" #import "os-integration/VLCClickerManager.h" #import "preferences/prefs.h" +#import "library/VLCLibraryController.h" +#import "library/VLCLibraryModel.h" +#import "library/VLCLibraryDataTypes.h" static struct { const char iso[6]; @@ -125,8 +130,28 @@ static NSString* VLCAudioSettingToolbarIdentifier = @"Audio Settings Item Identi static NSString* VLCVideoSettingToolbarIdentifier = @"Video Settings Item Identifier"; static NSString* VLCOSDSettingToolbarIdentifier = @"Subtitles Settings Item Identifier"; static NSString* VLCInputSettingToolbarIdentifier = @"Input Settings Item Identifier"; +static NSString* VLCMediaLibrarySettingToolbarIdentifier = @"Media Library Settings Item Identifier"; static NSString* VLCHotkeysSettingToolbarIdentifier = @"Hotkeys Settings Item Identifier"; +@interface VLCMediaLibraryFolderManagementController : NSObject <NSTableViewDelegate, NSTableViewDataSource> +{ + NSArray *_cachedFolderList; + VLCLibraryController *_libraryController; +} + +@property (readwrite, weak) NSTableView *libraryFolderTableView; +@property (readwrite, weak) NSTableColumn *nameTableColumn; +@property (readwrite, weak) NSTableColumn *pathTableColumn; +@property (readwrite, weak) NSTableColumn *presentTableColumn; +@property (readwrite, weak) NSTableColumn *bannedTableColumn; +@property (readwrite, weak) NSButton *removeFolderButton; +@property (readwrite, weak) NSButton *banFolderButton; + +- (IBAction)addFolder:(id)sender; +- (IBAction)removeFolder:(id)sender; +- (IBAction)banFolder:(id)sender; +@end + @interface VLCSimplePrefsController() <NSToolbarDelegate, NSWindowDelegate> { BOOL _audioSettingChanged; @@ -142,6 +167,7 @@ static NSString* VLCHotkeysSettingToolbarIdentifier = @"Hotkeys Settings Item Id NSArray *_hotkeysNonUseableKeys; NSMutableArray *_hotkeySettings; NSString *_keyInTransition; + VLCMediaLibraryFolderManagementController *_mediaLibraryManagementController; intf_thread_t *p_intf; } @@ -199,6 +225,31 @@ static NSString* VLCHotkeysSettingToolbarIdentifier = @"Hotkeys Settings Item Id NSDictionary *views = @{ @"view": _contentView }; NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|[view]|" options:0 metrics:nil views:views]; [clipView addConstraints:constraints]; + + [self setupMediaLibraryControlInterface]; +} + +- (void)setupMediaLibraryControlInterface +{ + _mediaLibraryManagementController = [[VLCMediaLibraryFolderManagementController alloc] init]; + _mediaLibraryBanFolderButton.enabled = _mediaLibraryRemoveFolderButton.enabled = NO; + + _mediaLibraryFolderTableView.delegate = _mediaLibraryManagementController; + _mediaLibraryFolderTableView.dataSource = _mediaLibraryManagementController; + + _mediaLibraryManagementController.nameTableColumn = _mediaLibraryNameTableColumn; + _mediaLibraryManagementController.presentTableColumn = _mediaLibraryPresentTableColumn; + _mediaLibraryManagementController.bannedTableColumn = _mediaLibraryBannedTableColumn; + _mediaLibraryManagementController.pathTableColumn = _mediaLibraryPathTableColumn; + _mediaLibraryManagementController.removeFolderButton = _mediaLibraryRemoveFolderButton; + _mediaLibraryManagementController.banFolderButton = _mediaLibraryBanFolderButton; + + _mediaLibraryAddFolderButton.target = _mediaLibraryManagementController; + _mediaLibraryAddFolderButton.action = @selector(addFolder:); + _mediaLibraryBanFolderButton.target = _mediaLibraryManagementController; + _mediaLibraryBanFolderButton.action = @selector(banFolder:); + _mediaLibraryRemoveFolderButton.target = _mediaLibraryManagementController; + _mediaLibraryRemoveFolderButton.action = @selector(removeFolder:); } #define CreateToolbarItem(name, desc, img, sel) \ @@ -239,6 +290,8 @@ create_toolbar_item(NSString *itemIdent, NSString *name, NSString *desc, NSStrin CreateToolbarItem(_NS(SUBPIC_TITLE), _NS("Subtitle & On Screen Display Settings"), @"VLCSubtitleCone", showOSDSettings); } else if ([itemIdent isEqual: VLCInputSettingToolbarIdentifier]) { CreateToolbarItem(_NS(INPUT_TITLE), _NS("Input & Codec Settings"), @"VLCInputCone", showInputSettings); + } else if ([itemIdent isEqual: VLCMediaLibrarySettingToolbarIdentifier]) { + CreateToolbarItem(_NS("Media Library"), _NS("Media Library settings"), @"NXHelpBacktrack", showMediaLibrarySettings); } else if ([itemIdent isEqual: VLCHotkeysSettingToolbarIdentifier]) { CreateToolbarItem(_NS("Hotkeys"), _NS("Hotkeys settings"), @"VLCHotkeysCone", showHotkeySettings); } @@ -249,21 +302,21 @@ create_toolbar_item(NSString *itemIdent, NSString *name, NSString *desc, NSStrin - (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar { return [NSArray arrayWithObjects:VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, VLCVideoSettingToolbarIdentifier, - VLCOSDSettingToolbarIdentifier, VLCInputSettingToolbarIdentifier, VLCHotkeysSettingToolbarIdentifier, + VLCOSDSettingToolbarIdentifier, VLCInputSettingToolbarIdentifier, VLCMediaLibrarySettingToolbarIdentifier, VLCHotkeysSettingToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; } - (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar { return [NSArray arrayWithObjects:VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, VLCVideoSettingToolbarIdentifier, - VLCOSDSettingToolbarIdentifier, VLCInputSettingToolbarIdentifier, VLCHotkeysSettingToolbarIdentifier, + VLCOSDSettingToolbarIdentifier, VLCInputSettingToolbarIdentifier, VLCMediaLibrarySettingToolbarIdentifier, VLCHotkeysSettingToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; } - (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar { return [NSArray arrayWithObjects:VLCIntfSettingToolbarIdentifier, VLCAudioSettingToolbarIdentifier, VLCVideoSettingToolbarIdentifier, - VLCOSDSettingToolbarIdentifier, VLCInputSettingToolbarIdentifier, VLCHotkeysSettingToolbarIdentifier, nil]; + VLCOSDSettingToolbarIdentifier, VLCInputSettingToolbarIdentifier, VLCMediaLibrarySettingToolbarIdentifier, VLCHotkeysSettingToolbarIdentifier, nil]; } - (void)initStrings @@ -376,6 +429,15 @@ create_toolbar_item(NSString *itemIdent, NSString *name, NSString *desc, NSStrin [_video_deinterlace_modeLabel setStringValue: _NS("Deinterlace mode")]; [_video_videoBox setTitle: _NS("Video")]; + /* media library */ + [_mediaLibraryAddFolderButton setTitle:_NS("Add Folder...")]; + [_mediaLibraryBanFolderButton setTitle:_NS("Ban Folder")]; + [_mediaLibraryRemoveFolderButton setTitle:_NS("Remove Folder")]; + [_mediaLibraryNameTableColumn setTitle:_NS("Name")]; + [_mediaLibraryPresentTableColumn setTitle:_NS("Present")]; + [_mediaLibraryBannedTableColumn setTitle:_NS("Banned")]; + [_mediaLibraryPathTableColumn setTitle:_NS("Location")]; + /* generic stuff */ [_showAllButton setTitle: _NS("Show All")]; [_cancelButton setTitle: _NS("Cancel")]; @@ -1458,4 +1520,102 @@ static inline void save_string_list(intf_thread_t * p_intf, id object, const cha } } +- (void)showMediaLibrarySettings +{ + [self showSettingsForCategory:_mediaLibraryView]; +} + + +@end + +@implementation VLCMediaLibraryFolderManagementController + +- (instancetype)init +{ + self = [super init]; + if (self) { + _libraryController = [[VLCMain sharedInstance] libraryController]; + } + return self; +} + +- (IBAction)addFolder:(id)sender +{ + NSOpenPanel *openPanel = [NSOpenPanel openPanel]; + [openPanel setTitle:_NS("Add Folder")]; + [openPanel setCanChooseFiles:NO]; + [openPanel setCanChooseDirectories:YES]; + [openPanel setAllowsMultipleSelection:YES]; + + NSModalResponse returnValue = [openPanel runModal]; + + if (returnValue == NSModalResponseOK) { + NSArray *URLs = [openPanel URLs]; + NSUInteger count = [URLs count]; + for (NSUInteger i = 0; i < count ; i++) { + NSURL *url = URLs[i]; + [_libraryController addFolderWithFileURL:url]; + } + + _cachedFolderList = nil; + [self.libraryFolderTableView reloadData]; + } +} + +- (IBAction)banFolder:(id)sender +{ + VLCMediaLibraryEntryPoint *entryPoint = _cachedFolderList[self.libraryFolderTableView.selectedRow]; + if (entryPoint.isBanned) { + [_libraryController unbanFolderWithFileURL:[NSURL URLWithString:entryPoint.MRL]]; + } else { + [_libraryController banFolderWithFileURL:[NSURL URLWithString:entryPoint.MRL]]; + } + + _cachedFolderList = nil; + [self.libraryFolderTableView reloadData]; +} + +- (IBAction)removeFolder:(id)sender +{ + VLCMediaLibraryEntryPoint *entryPoint = _cachedFolderList[self.libraryFolderTableView.selectedRow]; + [_libraryController removeFolderWithFileURL:[NSURL URLWithString:entryPoint.MRL]]; + + _cachedFolderList = nil; + [self.libraryFolderTableView reloadData]; +} + +- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView +{ + if (!_cachedFolderList) { + _cachedFolderList = [[_libraryController libraryModel] listOfMonitoredFolders]; + } + return _cachedFolderList.count; +} + +- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row +{ + VLCMediaLibraryEntryPoint *entryPoint = _cachedFolderList[row]; + if (tableColumn == self.nameTableColumn) { + return [entryPoint.decodedMRL lastPathComponent]; + } else if (tableColumn == self.presentTableColumn) { + return entryPoint.isPresent ? @"✔" : @"✘"; + } else if (tableColumn == self.bannedTableColumn) { + return entryPoint.isBanned ? @"✔" : @"✘"; + } else { + return entryPoint.decodedMRL; + } +} + +- (void)tableViewSelectionDidChange:(NSNotification *)notification +{ + NSInteger selectedRow = self.libraryFolderTableView.selectedRow; + if (selectedRow == -1) { + self.banFolderButton.enabled = self.removeFolderButton.enabled = NO; + return; + } + self.banFolderButton.enabled = self.removeFolderButton.enabled = YES; + VLCMediaLibraryEntryPoint *entryPoint = _cachedFolderList[selectedRow]; + [self.banFolderButton setTitle:entryPoint.isBanned ? _NS("Unban Folder") : _NS("Ban Folder")]; +} + @end diff --git a/po/POTFILES.in b/po/POTFILES.in index 0f8804d3a9..8b4f5d00d1 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -472,8 +472,6 @@ modules/gui/macosx/library/VLCLibraryController.h modules/gui/macosx/library/VLCLibraryController.m modules/gui/macosx/library/VLCLibraryDataTypes.h modules/gui/macosx/library/VLCLibraryDataTypes.m -modules/gui/macosx/library/VLCLibraryFolderManagementWindow.h -modules/gui/macosx/library/VLCLibraryFolderManagementWindow.m modules/gui/macosx/library/VLCLibraryMenuController.h modules/gui/macosx/library/VLCLibraryMenuController.m modules/gui/macosx/library/VLCLibraryModel.h _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
