Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (47)
Showing
with 616 additions and 565 deletions
......@@ -23,8 +23,6 @@
1C3113A91E508C6900D4DD76 /* VLCDocumentController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C39ABBD1DA9AB9B00FE052A /* VLCDocumentController.m */; };
1C3113AB1E508C6900D4DD76 /* VLCExtensionsDialogProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CCED71114C0D4A90057F8D1 /* VLCExtensionsDialogProvider.m */; };
1C3113AD1E508C6900D4DD76 /* VLCExtensionsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CCED71314C0D4A90057F8D1 /* VLCExtensionsManager.m */; };
1C3113AF1E508C6900D4DD76 /* VLCFSPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BCB590A1DA247CD009BCA66 /* VLCFSPanelController.m */; };
1C3113B11E508C6900D4DD76 /* VLCFSPanelDraggableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CAEBC001E1EC0A400A99E49 /* VLCFSPanelDraggableView.m */; };
1C3113B41E508C6900D4DD76 /* VLCPlaybackContinuityController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DF812EE1B555A340052293C /* VLCPlaybackContinuityController.m */; };
1C3113B61E508C6900D4DD76 /* VLCMain+OldPrefs.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D871D381B5E6844000B56C0 /* VLCMain+OldPrefs.m */; };
1C3113B81E508C6900D4DD76 /* VLCMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 8ED6C27D03E2EB1C0059A3A7 /* VLCMain.m */; };
......@@ -63,7 +61,6 @@
1CCC88F62078A3D500E5626F /* VLCInformationWindow.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B82240B1E4D2A9000833BE1 /* VLCInformationWindow.xib */; };
1CCC88F72078A3D500E5626F /* ConvertAndSave.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B8224031E4D2A9000833BE1 /* ConvertAndSave.xib */; };
1CCC88F82078A3D500E5626F /* CoreDialogs.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B8224041E4D2A9000833BE1 /* CoreDialogs.xib */; };
1CCC88F92078A3D500E5626F /* DetachedVideoWindow.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B8224051E4D2A9000833BE1 /* DetachedVideoWindow.xib */; };
1CCC88FA2078A3D500E5626F /* ErrorPanel.xib in Sources */ = {isa = PBXBuildFile; fileRef = 1CFE8D561EA0D3D300E94451 /* ErrorPanel.xib */; };
1CCC88FB2078A3D500E5626F /* Help.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B8224071E4D2A9000833BE1 /* Help.xib */; };
1CCC88FC2078A3D500E5626F /* LogMessageWindow.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B8224081E4D2A9000833BE1 /* LogMessageWindow.xib */; };
......@@ -79,9 +76,9 @@
1CFE8D591EA0D42A00E94451 /* VLCErrorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CFE8D581EA0D42A00E94451 /* VLCErrorWindowController.m */; };
5307A6F52967859F001E0C6A /* NSImage+VLCAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5307A6F42967859F001E0C6A /* NSImage+VLCAdditions.m */; };
5307A6F82969904D001E0C6A /* VLCLibraryMediaSourceViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5307A6F72969904D001E0C6A /* VLCLibraryMediaSourceViewController.m */; };
5307E5C3298745AB005F42C1 /* VLCLibraryWindowAutohideToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 5307E5C2298745AB005F42C1 /* VLCLibraryWindowAutohideToolbar.m */; };
5317FE04294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5317FE03294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.m */; };
5325C57D29302E6800B2B63A /* VLCLibraryAudioViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5325C57B29302E6800B2B63A /* VLCLibraryAudioViewController.m */; };
534E8E3A29A06325009503F8 /* VLCMainVideoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 534E8E3929A06325009503F8 /* VLCMainVideoViewController.m */; };
5362550D293FD639005D64FA /* VLCLibraryWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5362550C293FD639005D64FA /* VLCLibraryWindowController.m */; };
536283F0291146BC00640C15 /* VLCLibraryTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 536283DE291146BC00640C15 /* VLCLibraryTableView.m */; };
536283F1291146BC00640C15 /* VLCLibraryAlbumTracksDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 536283DF291146BC00640C15 /* VLCLibraryAlbumTracksDataSource.m */; };
......@@ -97,6 +94,7 @@
53628403291147C500640C15 /* VLCSubScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 53628400291147C500640C15 /* VLCSubScrollView.m */; };
536EFBF5295BCB8300F4CB13 /* VLCLibraryUIUnits.m in Sources */ = {isa = PBXBuildFile; fileRef = 536EFBF4295BCB8300F4CB13 /* VLCLibraryUIUnits.m */; };
536EFC39295E521600F4CB13 /* VLCLibraryVideoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 536EFC38295E521600F4CB13 /* VLCLibraryVideoViewController.m */; };
538A7EDA29A63EE40068AD4F /* VLCFullVideoViewWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 538A7ED929A63EE40068AD4F /* VLCFullVideoViewWindow.m */; };
53903D3A29576ED500D0B308 /* VLCLibraryAudioGroupDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 53903D3929576ED500D0B308 /* VLCLibraryAudioGroupDataSource.m */; };
539BA79F298C726200918C36 /* VLCAspectRatioRetainingVideoWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 539BA79E298C726200918C36 /* VLCAspectRatioRetainingVideoWindow.m */; };
53B447CA2939823E00857588 /* VLCLibrarySongsTableViewSongPlayingTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 53B447C92939823E00857588 /* VLCLibrarySongsTableViewSongPlayingTableCellView.m */; };
......@@ -155,7 +153,6 @@
7D61DCE4236C1937008133CF /* VLCCustomWindowButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D61DCE3236C1937008133CF /* VLCCustomWindowButton.m */; };
7D66D4362200BC340040D04A /* VLCClickerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D66D4352200BC340040D04A /* VLCClickerManager.m */; };
7D66D4392200C5B80040D04A /* VLCVideoFilterHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D66D4382200C5B80040D04A /* VLCVideoFilterHelper.m */; };
7D66D43C2200D6090040D04A /* VLCDetachedVideoWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D66D43B2200D6090040D04A /* VLCDetachedVideoWindow.m */; };
7D67318622C8F4060000AD40 /* VLCMediaSourceCollectionViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D67318422C8F4050000AD40 /* VLCMediaSourceCollectionViewItem.m */; };
7D713D322201AE350042BEB7 /* VLCLibraryWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D713D312201AE350042BEB7 /* VLCLibraryWindow.m */; };
7D713D362201DC640042BEB7 /* VLCLibraryWindow.xib in Sources */ = {isa = PBXBuildFile; fileRef = 7D713D332201BB130042BEB7 /* VLCLibraryWindow.xib */; };
......@@ -234,8 +231,6 @@
1C864182217D318900D2CF7C /* vlc-hardening.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "vlc-hardening.entitlements"; sourceTree = "<group>"; };
1CAC3EE620CD1B3B00613DB2 /* VLCVideoOutputProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCVideoOutputProvider.m; sourceTree = "<group>"; };
1CAC3EE720CD1B3B00613DB2 /* VLCVideoOutputProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCVideoOutputProvider.h; sourceTree = "<group>"; };
1CAEBBFF1E1EC0A400A99E49 /* VLCFSPanelDraggableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCFSPanelDraggableView.h; sourceTree = "<group>"; };
1CAEBC001E1EC0A400A99E49 /* VLCFSPanelDraggableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCFSPanelDraggableView.m; sourceTree = "<group>"; };
1CC25CA71B2C585D0003F994 /* darwinvlc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = darwinvlc.m; path = ../../../bin/darwinvlc.m; sourceTree = "<group>"; };
1CCB5F2F1A62A6A5004C3E90 /* Pseudo-VLC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Pseudo-VLC.app"; sourceTree = BUILT_PRODUCTS_DIR; };
1CCD8F9F2117957600407114 /* avaudiocapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = avaudiocapture.m; path = ../../../modules/access/avaudiocapture.m; sourceTree = "<group>"; };
......@@ -248,13 +243,14 @@
5307A6F42967859F001E0C6A /* NSImage+VLCAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSImage+VLCAdditions.m"; sourceTree = "<group>"; };
5307A6F62969904D001E0C6A /* VLCLibraryMediaSourceViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryMediaSourceViewController.h; sourceTree = "<group>"; };
5307A6F72969904D001E0C6A /* VLCLibraryMediaSourceViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryMediaSourceViewController.m; sourceTree = "<group>"; };
5307E5C1298745AB005F42C1 /* VLCLibraryWindowAutohideToolbar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryWindowAutohideToolbar.h; sourceTree = "<group>"; };
5307E5C2298745AB005F42C1 /* VLCLibraryWindowAutohideToolbar.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryWindowAutohideToolbar.m; sourceTree = "<group>"; };
5317FE02294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryCollectionViewDelegate.h; sourceTree = "<group>"; };
5317FE03294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryCollectionViewDelegate.m; sourceTree = "<group>"; };
5317FE05294E8D1A001702F0 /* VLCLibraryCollectionViewDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryCollectionViewDataSource.h; sourceTree = "<group>"; };
5325C57B29302E6800B2B63A /* VLCLibraryAudioViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryAudioViewController.m; sourceTree = "<group>"; };
5325C57C29302E6800B2B63A /* VLCLibraryAudioViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCLibraryAudioViewController.h; sourceTree = "<group>"; };
534E8E3729A04F95009503F8 /* VLCMainVideoView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = VLCMainVideoView.xib; sourceTree = "<group>"; };
534E8E3829A06325009503F8 /* VLCMainVideoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCMainVideoViewController.h; sourceTree = "<group>"; };
534E8E3929A06325009503F8 /* VLCMainVideoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCMainVideoViewController.m; sourceTree = "<group>"; };
5362550B293FD639005D64FA /* VLCLibraryWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryWindowController.h; sourceTree = "<group>"; };
5362550C293FD639005D64FA /* VLCLibraryWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryWindowController.m; sourceTree = "<group>"; };
536283DC291146BC00640C15 /* VLCLibraryAlbumTracksDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCLibraryAlbumTracksDataSource.h; sourceTree = "<group>"; };
......@@ -290,6 +286,8 @@
536EFC37295E521600F4CB13 /* VLCLibraryVideoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryVideoViewController.h; sourceTree = "<group>"; };
536EFC38295E521600F4CB13 /* VLCLibraryVideoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryVideoViewController.m; sourceTree = "<group>"; };
536EFC3A295F828000F4CB13 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
538A7ED829A63EE40068AD4F /* VLCFullVideoViewWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCFullVideoViewWindow.h; sourceTree = "<group>"; };
538A7ED929A63EE40068AD4F /* VLCFullVideoViewWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCFullVideoViewWindow.m; sourceTree = "<group>"; };
53903D3829576ED500D0B308 /* VLCLibraryAudioGroupDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryAudioGroupDataSource.h; sourceTree = "<group>"; };
53903D3929576ED500D0B308 /* VLCLibraryAudioGroupDataSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryAudioGroupDataSource.m; sourceTree = "<group>"; };
539BA79D298C726200918C36 /* VLCAspectRatioRetainingVideoWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCAspectRatioRetainingVideoWindow.h; sourceTree = "<group>"; };
......@@ -354,7 +352,6 @@
6B8224011E4D2A9000833BE1 /* Bookmarks.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Bookmarks.xib; sourceTree = "<group>"; };
6B8224031E4D2A9000833BE1 /* ConvertAndSave.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConvertAndSave.xib; sourceTree = "<group>"; };
6B8224041E4D2A9000833BE1 /* CoreDialogs.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CoreDialogs.xib; sourceTree = "<group>"; };
6B8224051E4D2A9000833BE1 /* DetachedVideoWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DetachedVideoWindow.xib; sourceTree = "<group>"; };
6B8224071E4D2A9000833BE1 /* Help.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Help.xib; sourceTree = "<group>"; };
6B8224081E4D2A9000833BE1 /* LogMessageWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LogMessageWindow.xib; sourceTree = "<group>"; };
6B8224091E4D2A9000833BE1 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; };
......@@ -524,8 +521,6 @@
6BBBB8B61D114628001BD9BA /* VLCRendererDiscovery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCRendererDiscovery.m; sourceTree = "<group>"; };
6BBBF9831F7B257100B404CD /* VLCLogMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLogMessage.h; sourceTree = "<group>"; };
6BBBF9841F7B257100B404CD /* VLCLogMessage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLogMessage.m; sourceTree = "<group>"; };
6BCB59091DA247CD009BCA66 /* VLCFSPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCFSPanelController.h; sourceTree = "<group>"; };
6BCB590A1DA247CD009BCA66 /* VLCFSPanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCFSPanelController.m; sourceTree = "<group>"; };
6BF093F71EE0182B0049D8B0 /* VLCTimeField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCTimeField.h; sourceTree = "<group>"; };
6BF093F81EE0182B0049D8B0 /* VLCTimeField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCTimeField.m; sourceTree = "<group>"; };
6BF557CF1E4E0E2500C03C9D /* VLCPauseTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCPauseTemplate.pdf; path = "Button-Icons/VLCPauseTemplate.pdf"; sourceTree = "<group>"; };
......@@ -614,8 +609,6 @@
7D66D4352200BC340040D04A /* VLCClickerManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCClickerManager.m; sourceTree = "<group>"; };
7D66D4372200C5B80040D04A /* VLCVideoFilterHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCVideoFilterHelper.h; sourceTree = "<group>"; };
7D66D4382200C5B80040D04A /* VLCVideoFilterHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCVideoFilterHelper.m; sourceTree = "<group>"; };
7D66D43A2200D6090040D04A /* VLCDetachedVideoWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCDetachedVideoWindow.h; sourceTree = "<group>"; };
7D66D43B2200D6090040D04A /* VLCDetachedVideoWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCDetachedVideoWindow.m; sourceTree = "<group>"; };
7D67318322C8F3F60000AD40 /* VLCMediaSourceCollectionViewItem.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = VLCMediaSourceCollectionViewItem.xib; sourceTree = "<group>"; };
7D67318422C8F4050000AD40 /* VLCMediaSourceCollectionViewItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCMediaSourceCollectionViewItem.m; sourceTree = "<group>"; };
7D67318522C8F4050000AD40 /* VLCMediaSourceCollectionViewItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCMediaSourceCollectionViewItem.h; sourceTree = "<group>"; };
......@@ -918,10 +911,8 @@
1C1ED5052204AA5800811EC0 /* video */ = {
isa = PBXGroup;
children = (
7D66D43A2200D6090040D04A /* VLCDetachedVideoWindow.h */,
7D66D43B2200D6090040D04A /* VLCDetachedVideoWindow.m */,
6BCB59091DA247CD009BCA66 /* VLCFSPanelController.h */,
6BCB590A1DA247CD009BCA66 /* VLCFSPanelController.m */,
534E8E3829A06325009503F8 /* VLCMainVideoViewController.h */,
534E8E3929A06325009503F8 /* VLCMainVideoViewController.m */,
1CAC3EE720CD1B3B00613DB2 /* VLCVideoOutputProvider.h */,
1CAC3EE620CD1B3B00613DB2 /* VLCVideoOutputProvider.m */,
7D2E0EDC20CD206F0033A221 /* VLCVideoWindowCommon.h */,
......@@ -932,6 +923,8 @@
7D2E0ED920CD204D0033A221 /* VLCWindow.m */,
539BA79D298C726200918C36 /* VLCAspectRatioRetainingVideoWindow.h */,
539BA79E298C726200918C36 /* VLCAspectRatioRetainingVideoWindow.m */,
538A7ED829A63EE40068AD4F /* VLCFullVideoViewWindow.h */,
538A7ED929A63EE40068AD4F /* VLCFullVideoViewWindow.m */,
);
path = video;
sourceTree = "<group>";
......@@ -951,8 +944,6 @@
6B6A499D1DFD9B23009128AC /* VLCDefaultValueSliderCell.m */,
7D460B0A229EB4C700097948 /* VLCDragDropView.h */,
7D460B0B229EB4C700097948 /* VLCDragDropView.m */,
1CAEBBFF1E1EC0A400A99E49 /* VLCFSPanelDraggableView.h */,
1CAEBC001E1EC0A400A99E49 /* VLCFSPanelDraggableView.m */,
6BBB05D81EEFEA29003A1019 /* VLCHUDOutlineView.h */,
6BBB05D91EEFEA29003A1019 /* VLCHUDOutlineView.m */,
6BBB05DE1EEFF165003A1019 /* VLCHUDTableCornerView.h */,
......@@ -1182,8 +1173,6 @@
536283DE291146BC00640C15 /* VLCLibraryTableView.m */,
7D713D302201AE350042BEB7 /* VLCLibraryWindow.h */,
7D713D312201AE350042BEB7 /* VLCLibraryWindow.m */,
5307E5C1298745AB005F42C1 /* VLCLibraryWindowAutohideToolbar.h */,
5307E5C2298745AB005F42C1 /* VLCLibraryWindowAutohideToolbar.m */,
5362550B293FD639005D64FA /* VLCLibraryWindowController.h */,
5362550C293FD639005D64FA /* VLCLibraryWindowController.m */,
5317FE02294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.h */,
......@@ -1737,7 +1726,6 @@
6B8224011E4D2A9000833BE1 /* Bookmarks.xib */,
6B8224031E4D2A9000833BE1 /* ConvertAndSave.xib */,
6B8224041E4D2A9000833BE1 /* CoreDialogs.xib */,
6B8224051E4D2A9000833BE1 /* DetachedVideoWindow.xib */,
1CFE8D561EA0D3D300E94451 /* ErrorPanel.xib */,
6B8224071E4D2A9000833BE1 /* Help.xib */,
6B8224081E4D2A9000833BE1 /* LogMessageWindow.xib */,
......@@ -1766,6 +1754,7 @@
536283FA2911476A00640C15 /* VLCLibrarySongTableCellView.xib */,
7DE2F0482282D7980040DD0A /* VLCLibraryTableCellView.xib */,
7D713D332201BB130042BEB7 /* VLCLibraryWindow.xib */,
534E8E3729A04F95009503F8 /* VLCMainVideoView.xib */,
7D67318322C8F3F60000AD40 /* VLCMediaSourceCollectionViewItem.xib */,
7DF14FBC2270CB1C0008ABE4 /* VLCMediaSourceDeviceCollectionViewItem.xib */,
7D0F64002201F66D00FDB91F /* VLCPlaylistTableCellView.xib */,
......@@ -1876,7 +1865,6 @@
6BAF886024DB1CEA001044C8 /* VLCSystemVolume.m in Sources */,
1CCC88F72078A3D500E5626F /* ConvertAndSave.xib in Sources */,
1CCC88F82078A3D500E5626F /* CoreDialogs.xib in Sources */,
1CCC88F92078A3D500E5626F /* DetachedVideoWindow.xib in Sources */,
1CCC88FA2078A3D500E5626F /* ErrorPanel.xib in Sources */,
1CCC88FB2078A3D500E5626F /* Help.xib in Sources */,
1CCC88FC2078A3D500E5626F /* LogMessageWindow.xib in Sources */,
......@@ -1892,6 +1880,7 @@
536283F6291146BC00640C15 /* VLCLibraryCollectionViewAudioGroupSupplementaryDetailView.m in Sources */,
1CCC89022078A3D500E5626F /* ResumeDialog.xib in Sources */,
7DE7232E22A51F8D00D72616 /* VLCPositionFormatter.m in Sources */,
534E8E3A29A06325009503F8 /* VLCMainVideoViewController.m in Sources */,
536EFBF5295BCB8300F4CB13 /* VLCLibraryUIUnits.m in Sources */,
1CCC89032078A3D500E5626F /* SimplePreferences.xib in Sources */,
7DE82E7922843781002D341A /* VLCLibraryAlbumTableCellView.m in Sources */,
......@@ -1900,7 +1889,6 @@
536283F1291146BC00640C15 /* VLCLibraryAlbumTracksDataSource.m in Sources */,
5307A6F52967859F001E0C6A /* NSImage+VLCAdditions.m in Sources */,
1CCC89042078A3D500E5626F /* StreamOutput.xib in Sources */,
5307E5C3298745AB005F42C1 /* VLCLibraryWindowAutohideToolbar.m in Sources */,
536283F7291146BC00640C15 /* VLCLibraryNavigationState.m in Sources */,
1CCC89052078A3D500E5626F /* TextfieldPanel.xib in Sources */,
1CCC89062078A3D500E5626F /* TimeSelectionPanel.xib in Sources */,
......@@ -1920,7 +1908,6 @@
1C3113F31E508C7600D4DD76 /* VLCRendererMenuController.m in Sources */,
6B4D50931E7979CB004479B5 /* VLCSimplePrefsWindow.m in Sources */,
6B397C4F216C8EB200403ED0 /* NSString+Helpers.m in Sources */,
7D66D43C2200D6090040D04A /* VLCDetachedVideoWindow.m in Sources */,
1C31138E1E508C6900D4DD76 /* VLCAboutWindowController.m in Sources */,
1C3113901E508C6900D4DD76 /* VLCHelpWindowController.m in Sources */,
7D1BF28D22A192000027C50F /* VLCPlaylistSortingMenuController.m in Sources */,
......@@ -1965,10 +1952,8 @@
7DE2F0442282C84A0040DD0A /* VLCLibraryAudioDataSource.m in Sources */,
7D0F640C2202163E00FDB91F /* VLCPlaylistDataSource.m in Sources */,
1C3113AD1E508C6900D4DD76 /* VLCExtensionsManager.m in Sources */,
1C3113AF1E508C6900D4DD76 /* VLCFSPanelController.m in Sources */,
7DFBDCBB226CED6300B700A5 /* VLCMediaSourceProvider.m in Sources */,
7D66D4362200BC340040D04A /* VLCClickerManager.m in Sources */,
1C3113B11E508C6900D4DD76 /* VLCFSPanelDraggableView.m in Sources */,
53B447F9293BB47B00857588 /* VLCLibraryVideoTableViewDataSource.m in Sources */,
1C3113B41E508C6900D4DD76 /* VLCPlaybackContinuityController.m in Sources */,
7D28E6392275B7340098D30E /* NSFont+VLCAdditions.m in Sources */,
......@@ -2008,6 +1993,7 @@
7DFBDCC4226E445500B700A5 /* VLCMediaSourceBaseDataSource.m in Sources */,
6B2EFC601F2819F700F3C0EA /* VLCVolumeSlider.m in Sources */,
7DE2F0472282D5D10040DD0A /* VLCLibraryTableCellView.m in Sources */,
538A7EDA29A63EE40068AD4F /* VLCFullVideoViewWindow.m in Sources */,
7D2E0EDB20CD204D0033A221 /* VLCWindow.m in Sources */,
6B4D50A71E7AB52C004479B5 /* NSScreen+VLCAdditions.m in Sources */,
1C3113DD1E508C6900D4DD76 /* VLCTrackSynchronizationWindowController.m in Sources */,
......
......@@ -128,8 +128,6 @@ libmacosx_plugin_la_SOURCES = \
gui/macosx/library/VLCLibraryUIUnits.m \
gui/macosx/library/VLCLibraryWindow.h \
gui/macosx/library/VLCLibraryWindow.m \
gui/macosx/library/VLCLibraryWindowAutohideToolbar.h \
gui/macosx/library/VLCLibraryWindowAutohideToolbar.m \
gui/macosx/library/VLCLibraryWindowController.h \
gui/macosx/library/VLCLibraryWindowController.m \
gui/macosx/library/video-library/VLCLibraryVideoViewController.h \
......@@ -273,8 +271,6 @@ libmacosx_plugin_la_SOURCES = \
gui/macosx/views/VLCDefaultValueSliderCell.m \
gui/macosx/views/VLCDragDropView.h \
gui/macosx/views/VLCDragDropView.m \
gui/macosx/views/VLCFSPanelDraggableView.h \
gui/macosx/views/VLCFSPanelDraggableView.m \
gui/macosx/views/VLCHUDOutlineView.h \
gui/macosx/views/VLCHUDOutlineView.m \
gui/macosx/views/VLCHUDTableCornerView.h \
......@@ -343,10 +339,10 @@ libmacosx_plugin_la_SOURCES = \
gui/macosx/windows/mainwindow/VLCMainWindowControlsBar.m \
gui/macosx/windows/video/VLCAspectRatioRetainingVideoWindow.h \
gui/macosx/windows/video/VLCAspectRatioRetainingVideoWindow.m \
gui/macosx/windows/video/VLCDetachedVideoWindow.h \
gui/macosx/windows/video/VLCDetachedVideoWindow.m \
gui/macosx/windows/video/VLCFSPanelController.h \
gui/macosx/windows/video/VLCFSPanelController.m \
gui/macosx/windows/video/VLCFullVideoViewWindow.h \
gui/macosx/windows/video/VLCFullVideoViewWindow.m \
gui/macosx/windows/video/VLCMainVideoViewController.h \
gui/macosx/windows/video/VLCMainVideoViewController.m \
gui/macosx/windows/video/VLCVideoOutputProvider.h \
gui/macosx/windows/video/VLCVideoOutputProvider.m \
gui/macosx/windows/video/VLCVideoWindowCommon.h \
......@@ -366,7 +362,6 @@ libmacosx_plugin_la_XIB_SOURCES = \
gui/macosx/UI/Bookmarks.xib \
gui/macosx/UI/ConvertAndSave.xib \
gui/macosx/UI/CoreDialogs.xib \
gui/macosx/UI/DetachedVideoWindow.xib \
gui/macosx/UI/ErrorPanel.xib \
gui/macosx/UI/Help.xib \
gui/macosx/UI/LogMessageWindow.xib \
......@@ -383,6 +378,7 @@ libmacosx_plugin_la_XIB_SOURCES = \
gui/macosx/UI/VLCLibraryCollectionViewAudioGroupSupplementaryDetailView.xib \
gui/macosx/UI/VLCLibraryCollectionViewMediaItemSupplementaryDetailView.xib \
gui/macosx/UI/VLCLibrarySongTableCellView.xib \
gui/macosx/UI/VLCMainVideoView.xib \
gui/macosx/UI/VLCMediaSourceCollectionViewItem.xib \
gui/macosx/UI/VLCMediaSourceDeviceCollectionViewItem.xib \
gui/macosx/UI/VLCInformationWindow.xib \
......
<?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">
<dependencies>
<deployment identifier="macosx"/>
<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="NSWindowController">
<connections>
<outlet property="window" destination="2" id="62"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="VLC media player" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="detachedvideowindow" animationBehavior="default" id="2" userLabel="Detached Video Window" customClass="VLCDetachedVideoWindow">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" topStrut="YES"/>
<rect key="contentRect" x="91" y="467" width="363" height="239"/>
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1177"/>
<view key="contentView" id="4">
<rect key="frame" x="0.0" y="0.0" width="363" height="239"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="5" customClass="VLCBottomBarView">
<rect key="frame" x="0.0" y="0.0" width="363" height="36"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="65" customClass="VLCDragDropView">
<rect key="frame" x="0.0" y="0.0" width="363" height="36"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Vae-cT-EEI" userLabel="Play controls group">
<rect key="frame" x="8" y="7" width="85" height="23"/>
<subviews>
<button translatesAutoresizingMaskIntoConstraints="NO" id="11">
<rect key="frame" x="0.0" y="0.0" width="29" height="23"/>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="backward-3btns" imagePosition="only" alignment="center" alternateImage="backward-3btns-pressed" continuous="YES" enabled="NO" id="14">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="label"/>
</buttonCell>
<connections>
<action selector="bwd:" target="3" id="56"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="10">
<rect key="frame" x="29" y="0.0" width="27" height="23"/>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="play" imagePosition="only" alignment="center" alternateImage="play-pressed" id="15">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="titleBar" size="12"/>
</buttonCell>
<connections>
<action selector="play:" target="3" id="39"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="12">
<rect key="frame" x="56" y="0.0" width="29" height="23"/>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="forward-3btns" imagePosition="only" alignment="center" alternateImage="forward-3btns-pressed" continuous="YES" enabled="NO" id="13">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="label"/>
</buttonCell>
<connections>
<action selector="fwd:" target="3" id="51"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="11" firstAttribute="top" secondItem="Vae-cT-EEI" secondAttribute="top" id="11i-jS-o5W"/>
<constraint firstItem="10" firstAttribute="left" secondItem="11" secondAttribute="right" id="496-Ip-nTd"/>
<constraint firstItem="10" firstAttribute="top" secondItem="Vae-cT-EEI" secondAttribute="top" id="9Kr-xx-Ssf"/>
<constraint firstAttribute="right" secondItem="12" secondAttribute="right" id="KOc-oW-4iH"/>
<constraint firstAttribute="height" constant="23" id="bN7-k9-7Iy"/>
<constraint firstAttribute="bottom" secondItem="11" secondAttribute="bottom" id="fFe-7J-ver"/>
<constraint firstItem="12" firstAttribute="top" secondItem="Vae-cT-EEI" secondAttribute="top" id="gwB-yN-SK0"/>
<constraint firstAttribute="bottom" secondItem="12" secondAttribute="bottom" id="l2h-EI-MAG"/>
<constraint firstItem="12" firstAttribute="left" secondItem="10" secondAttribute="right" id="mOu-KM-Uo8"/>
<constraint firstItem="11" firstAttribute="left" secondItem="Vae-cT-EEI" secondAttribute="left" id="rI6-bN-oCM"/>
<constraint firstAttribute="bottom" secondItem="10" secondAttribute="bottom" id="yGM-Jx-9fD"/>
</constraints>
</customView>
<slider hidden="YES" horizontalHuggingPriority="200" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="20" customClass="VLCSlider">
<rect key="frame" x="101" y="10" width="157" height="16"/>
<constraints>
<constraint firstAttribute="height" constant="14" id="MYp-CS-yPe"/>
</constraints>
<sliderCell key="cell" controlSize="small" continuous="YES" state="on" alignment="left" maxValue="1" doubleValue="0.32600000000000001" tickMarkPosition="above" sliderType="linear" id="23" customClass="VLCSliderCell">
<font key="font" size="12" name="Helvetica"/>
</sliderCell>
<connections>
<action selector="timeSliderAction:" target="3" id="46"/>
</connections>
</slider>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="VLCTimeField">
<rect key="frame" x="264" y="12" width="56" height="13"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="52" id="EvZ-Sy-m25"/>
<constraint firstAttribute="height" constant="13" id="LYT-Sd-Gf6"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" alignment="center" title="00:00" id="16">
<font key="font" metaFont="label"/>
<color key="textColor" white="0.25" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button translatesAutoresizingMaskIntoConstraints="NO" id="8">
<rect key="frame" x="326" y="7" width="29" height="23"/>
<constraints>
<constraint firstAttribute="width" constant="29" id="VjW-79-ABX"/>
<constraint firstAttribute="height" constant="23" id="fNg-pN-oQw"/>
</constraints>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="fullscreen-one-button" imagePosition="only" alignment="center" alternateImage="fullscreen-one-button-pressed" id="17">
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
<font key="font" metaFont="label"/>
</buttonCell>
<connections>
<action selector="fullscreen:" target="3" id="37"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="9" firstAttribute="leading" secondItem="20" secondAttribute="trailing" constant="8" id="7ak-Mt-KYW"/>
<constraint firstItem="8" firstAttribute="centerY" secondItem="65" secondAttribute="centerY" id="7yx-e0-WmY"/>
<constraint firstItem="8" firstAttribute="centerY" secondItem="9" secondAttribute="centerY" id="IBe-RR-daQ"/>
<constraint firstAttribute="trailing" secondItem="8" secondAttribute="trailing" constant="8" id="Kfi-X6-dCb"/>
<constraint firstItem="Vae-cT-EEI" firstAttribute="centerY" secondItem="65" secondAttribute="centerY" id="L8J-t8-eZg"/>
<constraint firstItem="20" firstAttribute="centerY" secondItem="65" secondAttribute="centerY" id="QoR-o1-tfE"/>
<constraint firstItem="20" firstAttribute="leading" secondItem="Vae-cT-EEI" secondAttribute="trailing" constant="8" id="T6G-xN-FkQ"/>
<constraint firstItem="Vae-cT-EEI" firstAttribute="leading" secondItem="65" secondAttribute="leading" constant="8" id="ju1-w7-CzH"/>
<constraint firstItem="8" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="qs6-O2-pGr"/>
</constraints>
</customView>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="65" secondAttribute="trailing" id="1uG-1s-rI0"/>
<constraint firstItem="65" firstAttribute="leading" secondItem="5" secondAttribute="leading" id="84j-is-ZZ4"/>
<constraint firstAttribute="bottom" secondItem="65" secondAttribute="bottom" id="WrS-PS-vpi"/>
<constraint firstItem="65" firstAttribute="top" secondItem="5" secondAttribute="top" id="ecn-UJ-dvK"/>
<constraint firstAttribute="height" constant="36" id="z2X-5w-wme"/>
</constraints>
</customView>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="63" customClass="VLCVoutView">
<rect key="frame" x="0.0" y="36" width="363" height="203"/>
</customView>
</subviews>
<constraints>
<constraint firstItem="5" firstAttribute="leading" secondItem="4" secondAttribute="leading" id="9Ml-c7-Mey"/>
<constraint firstItem="63" firstAttribute="top" secondItem="4" secondAttribute="top" id="SR5-da-lz7">
<attributedString key="userComments">
<fragment content="Optional constraint if no titlebar">
<attributes>
<font key="NSFont" metaFont="smallSystem"/>
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
</attributedString>
</constraint>
<constraint firstItem="5" firstAttribute="top" secondItem="63" secondAttribute="bottom" priority="999" id="VbV-nq-qDN"/>
<constraint firstAttribute="bottom" secondItem="63" secondAttribute="bottom" priority="750" id="Xml-gb-MF1"/>
<constraint firstItem="63" firstAttribute="leading" secondItem="4" secondAttribute="leading" id="b8K-0j-YLT"/>
<constraint firstAttribute="trailing" secondItem="63" secondAttribute="trailing" id="b8X-Kc-BfD"/>
<constraint firstAttribute="trailing" secondItem="5" secondAttribute="trailing" id="jZw-zr-cck"/>
<constraint firstAttribute="bottom" secondItem="5" secondAttribute="bottom" id="mhi-VL-aFb"/>
</constraints>
</view>
<connections>
<outlet property="controlsBar" destination="3" id="69"/>
<outlet property="videoView" destination="63" id="68"/>
<outlet property="videoViewBottomConstraint" destination="VbV-nq-qDN" id="twJ-2J-MZX"/>
</connections>
</window>
<customObject id="3" userLabel="Detached Window Controls Bar" customClass="VLCControlsBarCommon">
<connections>
<outlet property="backwardButton" destination="11" id="aQU-S3-4ZI"/>
<outlet property="bottomBarView" destination="5" id="67"/>
<outlet property="dropView" destination="65" id="9kL-XQ-Akn"/>
<outlet property="forwardButton" destination="12" id="f7L-YR-p1H"/>
<outlet property="fullscreenButton" destination="8" id="HTb-D0-BTG"/>
<outlet property="fullscreenButtonWidthConstraint" destination="VjW-79-ABX" id="D5Z-dr-RIN"/>
<outlet property="playButton" destination="10" id="Gsq-tx-qf3"/>
<outlet property="timeField" destination="9" id="uzI-2c-bs3"/>
<outlet property="timeSlider" destination="20" id="AFS-sq-vuw"/>
</connections>
</customObject>
</objects>
<resources>
<image name="backward-3btns" width="29" height="23"/>
<image name="backward-3btns-pressed" width="29" height="23"/>
<image name="forward-3btns" width="29" height="23"/>
<image name="forward-3btns-pressed" width="29" height="23"/>
<image name="fullscreen-one-button" width="29" height="23"/>
<image name="fullscreen-one-button-pressed" width="29" height="23"/>
<image name="play" width="27" height="23"/>
<image name="play-pressed" width="27" height="23"/>
</resources>
</document>
......@@ -617,7 +617,7 @@
<constraint firstAttribute="bottom" secondItem="vUy-jt-gjY" secondAttribute="bottom" id="vMr-VQ-r4P"/>
</constraints>
</visualEffectView>
<toolbar key="toolbar" implicitIdentifier="CAE4F278-DC20-4A58-B07E-1580E7B14C87" centeredItem="KnW-Lr-R1d" autosavesConfiguration="NO" allowsUserCustomization="NO" displayMode="iconOnly" sizeMode="regular" id="pr3-TD-J2z" customClass="VLCLibraryWindowAutohideToolbar">
<toolbar key="toolbar" implicitIdentifier="CAE4F278-DC20-4A58-B07E-1580E7B14C87" centeredItem="KnW-Lr-R1d" autosavesConfiguration="NO" allowsUserCustomization="NO" displayMode="iconOnly" sizeMode="regular" id="pr3-TD-J2z">
<allowedToolbarItems>
<toolbarItem implicitItemIdentifier="71EED6C9-B0A2-4964-8846-16159F10619E" label="Sort Order" paletteLabel="Sort Order" image="arrow.up.arrow.down" catalog="system" sizingBehavior="auto" id="Tbc-Ik-FaO">
<nil key="toolTip"/>
......@@ -834,7 +834,7 @@
<outlet property="timeField" destination="zOB-QJ-TUy" id="mJL-1V-2lQ"/>
<outlet property="timeSlider" destination="9Hg-t2-K5z" id="sVe-s8-xW6"/>
<outlet property="trailingTimeField" destination="oGd-mG-cFw" id="geo-iq-0th"/>
<outlet property="volumeDownButton" destination="IAy-58-UPp" id="dDN-pE-Vmj"/>
<outlet property="muteVolumeButton" destination="IAy-58-UPp" id="dDN-pE-Vmj"/>
<outlet property="volumeSlider" destination="noz-yJ-oH4" id="nbe-1c-lFH"/>
<outlet property="volumeUpButton" destination="75c-FF-mgb" id="xRz-F4-n0Z"/>
</connections>
......
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment version="101000" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
<capability name="Image references" minToolsVersion="12.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="VLCMainVideoViewController">
<connections>
<outlet property="controlsBar" destination="3" id="Mfq-2w-2uR"/>
<outlet property="mainControlsView" destination="D4V-Zd-qvB" id="KwM-ya-ETn"/>
<outlet property="playlistButton" destination="Drq-if-dw4" id="BZe-Cr-mzZ"/>
<outlet property="playlistButtonTopConstraint" destination="VyM-t4-y6F" id="V94-GS-KcS"/>
<outlet property="returnButton" destination="UoQ-34-Pox" id="nyY-OF-9zj"/>
<outlet property="returnButtonTopConstraint" destination="0l2-eC-67c" id="78K-sz-kmV"/>
<outlet property="view" destination="WRu-Ic-lQK" id="B9p-x5-Kd8"/>
<outlet property="voutView" destination="mAS-4a-RS8" id="GeX-XO-HYC"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="3" userLabel="Main Video View Controls Bar" customClass="VLCControlsBarCommon">
<connections>
<outlet property="backwardButton" destination="V9d-hX-iyg" id="ZFn-jn-7OB"/>
<outlet property="bottomBarView" destination="1GA-GG-Sdx" id="hk1-nG-zqb"/>
<outlet property="forwardButton" destination="sF5-Z0-bef" id="H6w-Le-NAK"/>
<outlet property="fullscreenButton" destination="dYZ-ri-Kra" id="Cw2-BS-QG9"/>
<outlet property="fullscreenButtonWidthConstraint" destination="quS-fD-Od7" id="6hT-nR-yQI"/>
<outlet property="muteVolumeButton" destination="tVB-Xs-sJJ" id="snj-OU-aTI"/>
<outlet property="playButton" destination="PCC-8a-sVF" id="ddT-ZM-Jhz"/>
<outlet property="songNameTextField" destination="lEW-MN-FFU" id="btX-L9-7TO"/>
<outlet property="timeField" destination="3ri-8b-8mw" id="f0i-Gh-R8V"/>
<outlet property="timeSlider" destination="qNZ-Fh-W8i" id="Fkk-fj-s5Q"/>
<outlet property="trailingTimeField" destination="f4v-2z-dQ1" id="AXX-AU-lF0"/>
<outlet property="volumeSlider" destination="lyY-Zo-4aH" id="HbX-7f-pNR"/>
</connections>
</customObject>
<customView id="WRu-Ic-lQK">
<rect key="frame" x="0.0" y="0.0" width="720" height="480"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="mAS-4a-RS8" customClass="VLCVoutView">
<rect key="frame" x="0.0" y="0.0" width="720" height="480"/>
</customView>
<box boxType="custom" borderType="none" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="D4V-Zd-qvB">
<rect key="frame" x="0.0" y="0.0" width="720" height="480"/>
<view key="contentView" id="1tI-8K-e3c">
<rect key="frame" x="0.0" y="0.0" width="720" height="480"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button translatesAutoresizingMaskIntoConstraints="NO" id="UoQ-34-Pox">
<rect key="frame" x="7" y="434" width="38" height="39"/>
<constraints>
<constraint firstAttribute="width" secondItem="UoQ-34-Pox" secondAttribute="height" multiplier="1:1" id="Mvu-rV-2bc"/>
<constraint firstAttribute="width" constant="32" id="cjt-DQ-vMP"/>
</constraints>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="CU4-UE-tsW">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<imageReference key="image" image="arrow.backward" catalog="system" symbolScale="small"/>
</buttonCell>
<color key="bezelColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<connections>
<action selector="returnToLibrary:" target="-2" id="rnL-S1-zSR"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="Drq-if-dw4">
<rect key="frame" x="675" y="434" width="38" height="39"/>
<constraints>
<constraint firstAttribute="width" constant="32" id="9vC-fK-tZu"/>
<constraint firstAttribute="width" secondItem="Drq-if-dw4" secondAttribute="height" multiplier="1:1" id="cVK-cW-Opa"/>
</constraints>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="music.note.list" catalog="system" imagePosition="overlaps" borderStyle="border" inset="2" id="VDP-ql-lW8">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<color key="bezelColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<connections>
<action selector="togglePlaylist:" target="-2" id="WrP-vg-etw"/>
</connections>
</button>
<visualEffectView blendingMode="withinWindow" material="titlebar" state="followsWindowActiveState" translatesAutoresizingMaskIntoConstraints="NO" id="1GA-GG-Sdx" customClass="VLCBottomBarView">
<rect key="frame" x="0.0" y="0.0" width="720" height="91"/>
<subviews>
<textField wantsLayer="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="f4v-2z-dQ1" customClass="VLCTimeField">
<rect key="frame" x="623" y="10" width="79" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="75" id="8Zz-X6-yY1"/>
</constraints>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="right" placeholderString="0:00" id="FlV-4J-8Jc">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField wantsLayer="YES" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="lEW-MN-FFU" customClass="VLCWrappableTextField">
<rect key="frame" x="18" y="49" width="503" height="32"/>
<textFieldCell key="cell" controlSize="small" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" placeholderString="Nothing Playing" usesSingleLineMode="YES" id="8l0-zS-fOa">
<font key="font" textStyle="largeTitle" name=".SFNS-Regular"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qNZ-Fh-W8i" customClass="VLCSlider">
<rect key="frame" x="18" y="27" width="684" height="19"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="xm6-li-LpC"/>
</constraints>
<sliderCell key="cell" controlSize="small" continuous="YES" state="on" alignment="left" maxValue="1" tickMarkPosition="above" sliderType="linear" id="dZM-dm-qvL" customClass="VLCSliderCell"/>
<connections>
<action selector="timeSliderAction:" target="3" id="W32-wA-rN9"/>
</connections>
</slider>
<stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="20" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sJu-ZK-5QH">
<rect key="frame" x="539" y="49" width="161" height="32"/>
<subviews>
<stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Y8F-hr-iaW">
<rect key="frame" x="0.0" y="4" width="109" height="24"/>
<subviews>
<button translatesAutoresizingMaskIntoConstraints="NO" id="tVB-Xs-sJJ" customClass="VLCImageButton">
<rect key="frame" x="0.0" y="-3" width="24" height="30"/>
<constraints>
<constraint firstAttribute="width" constant="24" id="PGL-rL-Qcp"/>
<constraint firstAttribute="width" secondItem="tVB-Xs-sJJ" secondAttribute="height" multiplier="1:1" id="qTO-ie-xwE"/>
</constraints>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="volume.3.fill" catalog="system" imagePosition="only" alignment="center" alternateImage="volume.fill" imageScaling="proportionallyUpOrDown" inset="2" id="skE-5H-zgX">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="volumeAction:" target="3" id="4W0-Ft-7pO"/>
</connections>
</button>
<slider verticalHuggingPriority="750" horizontalCompressionResistancePriority="800" translatesAutoresizingMaskIntoConstraints="NO" id="lyY-Zo-4aH" customClass="VLCVolumeSlider">
<rect key="frame" x="27" y="4" width="84" height="17"/>
<constraints>
<constraint firstAttribute="width" constant="80" id="SeC-cP-5Dr"/>
</constraints>
<sliderCell key="cell" controlSize="mini" continuous="YES" state="on" alignment="left" maxValue="512" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="Zws-Wl-Ctp" customClass="VLCVolumeSliderCell"/>
<connections>
<action selector="volumeAction:" target="3" id="rPg-yg-qAG"/>
</connections>
</slider>
</subviews>
<visibilityPriorities>
<integer value="1000"/>
<integer value="1000"/>
</visibilityPriorities>
<customSpacing>
<real value="3.4028234663852886e+38"/>
<real value="3.4028234663852886e+38"/>
</customSpacing>
</stackView>
<button translatesAutoresizingMaskIntoConstraints="NO" id="dYZ-ri-Kra" customClass="VLCImageButton">
<rect key="frame" x="129" y="-3" width="32" height="38"/>
<constraints>
<constraint firstAttribute="width" secondItem="dYZ-ri-Kra" secondAttribute="height" multiplier="1:1" id="cHQ-Fu-L8k"/>
<constraint firstAttribute="width" constant="32" id="quS-fD-Od7"/>
</constraints>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSEnterFullScreenTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="Z8g-js-0W6">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="fullscreen:" target="3" id="0Kk-UV-WtF"/>
</connections>
</button>
</subviews>
<visibilityPriorities>
<integer value="1000"/>
<integer value="1000"/>
</visibilityPriorities>
<customSpacing>
<real value="3.4028234663852886e+38"/>
<real value="3.4028234663852886e+38"/>
</customSpacing>
</stackView>
<textField wantsLayer="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3ri-8b-8mw" customClass="VLCTimeField">
<rect key="frame" x="18" y="10" width="79" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="75" id="S9v-aM-nfL"/>
</constraints>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" placeholderString="0:00" usesSingleLineMode="YES" id="0ya-Dd-ecT">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstItem="f4v-2z-dQ1" firstAttribute="trailing" secondItem="qNZ-Fh-W8i" secondAttribute="trailing" id="0DA-7x-5iR"/>
<constraint firstAttribute="bottom" secondItem="3ri-8b-8mw" secondAttribute="bottom" constant="10" id="2r5-04-JeD"/>
<constraint firstItem="sJu-ZK-5QH" firstAttribute="trailing" secondItem="qNZ-Fh-W8i" secondAttribute="trailing" id="A0O-Nw-jLo"/>
<constraint firstItem="f4v-2z-dQ1" firstAttribute="top" secondItem="qNZ-Fh-W8i" secondAttribute="bottom" constant="5" id="CT6-59-4xB"/>
<constraint firstItem="lEW-MN-FFU" firstAttribute="trailing" secondItem="sJu-ZK-5QH" secondAttribute="leading" constant="-20" id="DXE-mO-c4m"/>
<constraint firstItem="lEW-MN-FFU" firstAttribute="leading" secondItem="qNZ-Fh-W8i" secondAttribute="leading" id="Qc0-Ft-6Na"/>
<constraint firstItem="sJu-ZK-5QH" firstAttribute="top" relation="greaterThanOrEqual" secondItem="1GA-GG-Sdx" secondAttribute="top" constant="10" id="Vjf-YQ-NXR"/>
<constraint firstItem="3ri-8b-8mw" firstAttribute="leading" secondItem="qNZ-Fh-W8i" secondAttribute="leading" id="WfQ-8B-O7I"/>
<constraint firstAttribute="trailing" secondItem="qNZ-Fh-W8i" secondAttribute="trailing" constant="20" id="YDi-aH-oOI"/>
<constraint firstItem="lEW-MN-FFU" firstAttribute="top" secondItem="1GA-GG-Sdx" secondAttribute="top" constant="10" id="aCc-Gf-kqc"/>
<constraint firstItem="lEW-MN-FFU" firstAttribute="bottom" secondItem="qNZ-Fh-W8i" secondAttribute="top" constant="-5" id="dxq-b6-tct"/>
<constraint firstItem="qNZ-Fh-W8i" firstAttribute="leading" secondItem="1GA-GG-Sdx" secondAttribute="leading" constant="20" id="gYg-Ig-cLg"/>
<constraint firstItem="3ri-8b-8mw" firstAttribute="top" secondItem="qNZ-Fh-W8i" secondAttribute="bottom" constant="5" id="jze-EU-1TL"/>
<constraint firstItem="sJu-ZK-5QH" firstAttribute="bottom" secondItem="qNZ-Fh-W8i" secondAttribute="top" constant="-5" id="xsM-6a-gdn"/>
</constraints>
</visualEffectView>
<stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="20" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="CvV-yX-Nbh">
<rect key="frame" x="260" y="208" width="200" height="64"/>
<subviews>
<button translatesAutoresizingMaskIntoConstraints="NO" id="V9d-hX-iyg" customClass="VLCImageButton">
<rect key="frame" x="0.0" y="7" width="48" height="51"/>
<constraints>
<constraint firstAttribute="width" constant="48" id="XBm-GM-29d"/>
<constraint firstAttribute="width" secondItem="V9d-hX-iyg" secondAttribute="height" multiplier="1:1" id="mjk-wN-72b"/>
</constraints>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="backward.fill" catalog="system" imagePosition="only" alignment="center" continuous="YES" imageScaling="proportionallyUpOrDown" inset="2" id="fFm-ZG-R1p">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.70445365650000002" colorSpace="custom" customColorSpace="sRGB"/>
<connections>
<action selector="bwd:" target="3" id="nDS-qm-Htv"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="PCC-8a-sVF" customClass="VLCImageButton">
<rect key="frame" x="68" y="-2" width="64" height="68"/>
<constraints>
<constraint firstAttribute="width" secondItem="PCC-8a-sVF" secondAttribute="height" multiplier="1:1" id="2jF-Y0-kn3"/>
<constraint firstAttribute="width" constant="64" id="OHb-xJ-sqM"/>
</constraints>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="play.fill" catalog="system" imagePosition="overlaps" alignment="center" alternateImage="VLCPauseTemplate" imageScaling="proportionallyUpOrDown" inset="2" id="Jk0-sw-EOp">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.70445365646258506" colorSpace="custom" customColorSpace="sRGB"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="toggle" value="YES"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="play:" target="3" id="owy-mi-Djp"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="sF5-Z0-bef" customClass="VLCImageButton">
<rect key="frame" x="152" y="7" width="48" height="51"/>
<constraints>
<constraint firstAttribute="width" constant="48" id="M5n-CD-fd3"/>
<constraint firstAttribute="width" secondItem="sF5-Z0-bef" secondAttribute="height" multiplier="1:1" id="b5c-td-Idb"/>
</constraints>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="forward.fill" catalog="system" imagePosition="only" alignment="center" continuous="YES" imageScaling="proportionallyUpOrDown" inset="2" id="I4n-VO-oYa">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.70445365650000002" colorSpace="custom" customColorSpace="sRGB"/>
<connections>
<action selector="fwd:" target="3" id="uPX-Xa-CwO"/>
</connections>
</button>
</subviews>
<visibilityPriorities>
<integer value="1000"/>
<integer value="1000"/>
<integer value="1000"/>
</visibilityPriorities>
<customSpacing>
<real value="3.4028234663852886e+38"/>
<real value="3.4028234663852886e+38"/>
<real value="3.4028234663852886e+38"/>
</customSpacing>
</stackView>
</subviews>
<constraints>
<constraint firstItem="UoQ-34-Pox" firstAttribute="top" secondItem="1tI-8K-e3c" secondAttribute="top" constant="10" id="0l2-eC-67c"/>
<constraint firstItem="UoQ-34-Pox" firstAttribute="leading" secondItem="1tI-8K-e3c" secondAttribute="leading" constant="10" id="BkP-RA-uxn"/>
<constraint firstAttribute="bottom" secondItem="1GA-GG-Sdx" secondAttribute="bottom" id="KQN-vk-oha"/>
<constraint firstItem="1GA-GG-Sdx" firstAttribute="leading" secondItem="1tI-8K-e3c" secondAttribute="leading" id="Qn0-ts-S0d"/>
<constraint firstItem="Drq-if-dw4" firstAttribute="top" secondItem="1tI-8K-e3c" secondAttribute="top" constant="10" id="VyM-t4-y6F"/>
<constraint firstItem="CvV-yX-Nbh" firstAttribute="centerX" secondItem="1tI-8K-e3c" secondAttribute="centerX" id="YMh-Zl-NSA"/>
<constraint firstAttribute="trailing" secondItem="1GA-GG-Sdx" secondAttribute="trailing" id="dWk-NI-ekN"/>
<constraint firstItem="CvV-yX-Nbh" firstAttribute="centerY" secondItem="1tI-8K-e3c" secondAttribute="centerY" id="l2Y-IR-aus"/>
<constraint firstAttribute="trailing" secondItem="Drq-if-dw4" secondAttribute="trailing" constant="10" id="rWa-NJ-Aju"/>
</constraints>
</view>
<color key="fillColor" red="0.0" green="0.0" blue="0.0" alpha="0.60225340136054417" colorSpace="custom" customColorSpace="sRGB"/>
</box>
</subviews>
<constraints>
<constraint firstItem="D4V-Zd-qvB" firstAttribute="bottom" secondItem="mAS-4a-RS8" secondAttribute="bottom" id="AaN-hq-IgD"/>
<constraint firstItem="mAS-4a-RS8" firstAttribute="top" secondItem="WRu-Ic-lQK" secondAttribute="top" id="F3X-8V-3Hg"/>
<constraint firstAttribute="bottom" secondItem="mAS-4a-RS8" secondAttribute="bottom" id="RPX-tv-ZTb"/>
<constraint firstItem="D4V-Zd-qvB" firstAttribute="top" secondItem="mAS-4a-RS8" secondAttribute="top" id="RUD-Fr-n5w"/>
<constraint firstItem="mAS-4a-RS8" firstAttribute="leading" secondItem="WRu-Ic-lQK" secondAttribute="leading" id="Ygq-Dt-Lbg"/>
<constraint firstAttribute="trailing" secondItem="mAS-4a-RS8" secondAttribute="trailing" id="jOZ-5U-ips"/>
<constraint firstItem="D4V-Zd-qvB" firstAttribute="leading" secondItem="mAS-4a-RS8" secondAttribute="leading" id="rIC-FU-Uxl"/>
<constraint firstItem="D4V-Zd-qvB" firstAttribute="trailing" secondItem="mAS-4a-RS8" secondAttribute="trailing" id="z4h-I8-bGU"/>
</constraints>
<point key="canvasLocation" x="66" y="-232"/>
</customView>
</objects>
<resources>
<image name="NSEnterFullScreenTemplate" width="20" height="18"/>
<image name="VLCPauseTemplate" width="128" height="128"/>
<image name="arrow.backward" catalog="system" width="12" height="10"/>
<image name="backward.fill" catalog="system" width="20" height="12"/>
<image name="forward.fill" catalog="system" width="20" height="12"/>
<image name="music.note.list" catalog="system" width="17" height="15"/>
<image name="play.fill" catalog="system" width="12" height="13"/>
<image name="volume.3.fill" catalog="system" width="22" height="15"/>
<image name="volume.fill" catalog="system" width="13" height="14"/>
</resources>
</document>
......@@ -20,10 +20,11 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import "windows/video/VLCVideoWindowCommon.h"
#import "windows/video/VLCFullVideoViewWindow.h"
NS_ASSUME_NONNULL_BEGIN
@class VLCControlsBarCommon;
@class VLCDragDropView;
@class VLCRoundedCornerTextField;
@class VLCInputNodePathControl;
......@@ -35,7 +36,6 @@ NS_ASSUME_NONNULL_BEGIN
@class VLCPlaylistDataSource;
@class VLCPlaylistController;
@class VLCPlaylistSortingMenuController;
@class VLCFSPanelController;
@class VLCCustomEmptyLibraryBrowseButton;
typedef NS_ENUM(NSUInteger, VLCLibrarySegment) {
......@@ -50,12 +50,14 @@ typedef NS_ENUM(NSUInteger, VLCViewModeSegment) {
VLCListViewModeSegment
};
@interface VLCLibraryWindow : VLCVideoWindowCommon<NSUserInterfaceItemIdentification>
@interface VLCLibraryWindow : VLCFullVideoViewWindow<NSUserInterfaceItemIdentification>
extern const CGFloat VLCLibraryWindowMinimalWidth;
extern const CGFloat VLCLibraryWindowMinimalHeight;
extern const NSUserInterfaceItemIdentifier VLCLibraryWindowIdentifier;
@property (nonatomic, weak) IBOutlet VLCControlsBarCommon* controlsBar;
@property (readwrite, weak) IBOutlet NSLayoutConstraint *videoViewBottomConstraint;
@property (readwrite, weak) IBOutlet NSSegmentedControl *segmentedTitleControl;
@property (readwrite, weak) IBOutlet NSSegmentedControl *gridVsListSegmentedControl;
@property (readwrite, weak) IBOutlet NSSplitView *mainSplitView;
......@@ -137,10 +139,12 @@ extern const NSUserInterfaceItemIdentifier VLCLibraryWindowIdentifier;
@property (readonly) VLCPlaylistDataSource *playlistDataSource;
@property (readonly) VLCPlaylistSortingMenuController *playlistSortingMenuController;
@property (readonly) VLCPlaylistController *playlistController;
@property (readonly) VLCFSPanelController *fspanel;
- (void)reopenVideoView;
- (void)disableVideoPlaybackAppearance;
- (void)togglePlaylist;
- (void)hideControlsBar;
- (void)showControlsBar;
- (IBAction)playlistDoubleClickAction:(id)sender;
- (IBAction)shuffleAction:(id)sender;
......
......@@ -40,7 +40,6 @@
#import "library/VLCLibrarySortingMenuController.h"
#import "library/VLCLibraryNavigationStack.h"
#import "library/VLCLibraryUIUnits.h"
#import "library/VLCLibraryWindowAutohideToolbar.h"
#import "library/video-library/VLCLibraryVideoCollectionViewsStackViewController.h"
#import "library/video-library/VLCLibraryVideoTableViewDataSource.h"
......@@ -52,14 +51,17 @@
#import "media-source/VLCMediaSourceBaseDataSource.h"
#import "media-source/VLCLibraryMediaSourceViewController.h"
#import "views/VLCBottomBarView.h"
#import "views/VLCCustomWindowButton.h"
#import "views/VLCDragDropView.h"
#import "views/VLCRoundedCornerTextField.h"
#import "windows/mainwindow/VLCControlsBarCommon.h"
#import "windows/video/VLCFSPanelController.h"
#import "windows/video/VLCVoutView.h"
#import "windows/video/VLCVideoOutputProvider.h"
#import "windows/video/VLCMainVideoViewController.h"
#import "windows/VLCOpenWindowController.h"
#import "windows/VLCOpenInputMetadata.h"
......@@ -78,8 +80,6 @@ const NSUserInterfaceItemIdentifier VLCLibraryWindowIdentifier = @"VLCLibraryWin
NSInteger _currentSelectedSegment;
NSInteger _currentSelectedViewModeSegment;
NSTimer *_hideToolbarTimer;
}
- (IBAction)goToBrowseSection:(id)sender;
......@@ -128,7 +128,9 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
- (void)awakeFromNib
{
[super awakeFromNib];
self.identifier = VLCLibraryWindowIdentifier;
self.minSize = NSMakeSize(VLCLibraryWindowMinimalWidth, VLCLibraryWindowMinimalHeight);
if(@available(macOS 10.12, *)) {
self.tabbingMode = NSWindowTabbingModeDisallowed;
......@@ -146,8 +148,9 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
self.navigationStack = [[VLCLibraryNavigationStack alloc] init];
self.navigationStack.delegate = self;
self.videoView = [[VLCVoutView alloc] initWithFrame:self.mainSplitView.frame];
self.videoView.hidden = YES;
self.videoViewController.view.frame = self.mainSplitView.frame;
self.videoViewController.view.hidden = YES;
self.videoViewController.displayLibraryControls = YES;
[self hideControlsBar];
[self.gridVsListSegmentedControl setToolTip: _NS("Grid View or List View")];
......@@ -159,10 +162,6 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
[self.librarySearchField setEnabled:YES];
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self
selector:@selector(shouldShowFullscreenController:)
name:VLCVideoWindowShouldShowFullscreenController
object:nil];
[notificationCenter addObserver:self
selector:@selector(shouldShowController:)
name:VLCWindowShouldShowController
......@@ -197,9 +196,6 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
_mediaToolBar.centeredItemIdentifier = _segmentedTitleControlToolbarItem.itemIdentifier;
}
_fspanel = [[VLCFSPanelController alloc] init];
[_fspanel showWindow:self];
_currentSelectedSegment = -1; // To enforce action on the selected segment
_segmentedTitleControl.segmentCount = 4;
[_segmentedTitleControl setTarget:self];
......@@ -253,11 +249,7 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
[self toggleToolbarShown:self];
[self toggleToolbarShown:self];
// The playlist toggle button's default state is OFF so we set it to ON if the playlist
// is not collapsed when we open the library window
if (![_mainSplitView isSubviewCollapsed:_playlistView]) {
_playQueueToggle.state = NSControlStateValueOn;
}
[self updatePlayqueueToggleState];
}
- (void)dealloc
......@@ -495,6 +487,12 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
[self insertToolbarItem:_librarySearchToolbarItem inFrontOf:reversedCurrentToolbarItems];
}
- (void)updatePlayqueueToggleState
{
_playQueueToggle.state = [_mainSplitView isSubviewCollapsed:_playlistView] ?
NSControlStateValueOff : NSControlStateValueOn;
}
- (void)showVideoLibrary
{
[self setForwardsBackwardsToolbarItemsVisible:NO];
......@@ -673,9 +671,11 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
if ([_mainSplitView isSubviewCollapsed:_playlistView]) {
[_mainSplitView setPosition:splitViewWidth - _lastPlaylistWidthBeforeCollaps ofDividerAtIndex:0];
_playQueueToggle.state = NSControlStateValueOn;
self.videoViewController.playlistButton.state = NSControlStateValueOn;
} else {
[_mainSplitView setPosition:splitViewWidth ofDividerAtIndex:0];
_playQueueToggle.state = NSControlStateValueOff;
self.videoViewController.playlistButton.state = NSControlStateValueOff;
}
}
......@@ -686,7 +686,7 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
- (IBAction)backwardsNavigationAction:(id)sender
{
self.videoView.hidden ? [_navigationStack backwards] : [self disableVideoPlaybackAppearance];
self.videoViewController.view.hidden ? [_navigationStack backwards] : [self disableVideoPlaybackAppearance];
}
- (IBAction)forwardsNavigationAction:(id)sender
......@@ -713,7 +713,9 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
[self reopenVideoView];
}
[self showControlsBar];
if (self.videoViewController.view.isHidden) {
[self showControlsBar];
}
}
// This handles reopening the video view when the user has closed it.
......@@ -734,7 +736,8 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
- (void)hideControlsBar
{
[super hideControlsBar];
_controlsBar.bottomBarView.hidden = YES;
_videoViewBottomConstraint.priority = 1;
_splitViewBottomConstraintToBottomBar.priority = 1;
_splitViewBottomConstraintToSuperView.priority = 999;
......@@ -742,7 +745,8 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
- (void)showControlsBar
{
[super showControlsBar];
_controlsBar.bottomBarView.hidden = NO;
_videoViewBottomConstraint.priority = 999;
_splitViewBottomConstraintToBottomBar.priority = 999;
_splitViewBottomConstraintToSuperView.priority = 1;
}
......@@ -755,20 +759,42 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
NSLog(@"Presenting video view in main library window.");
VLCVoutView *videoView = self.videoView;
NSView *videoView = self.videoViewController.view;
videoView.translatesAutoresizingMaskIntoConstraints = NO;
videoView.hidden = NO;
[_libraryTargetView addSubview:videoView];
NSDictionary *dict = NSDictionaryOfVariableBindings(videoView);
[_libraryTargetView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[videoView(>=572.)]|"
options:0
metrics:0
views:dict]];
[_libraryTargetView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[videoView(>=444.)]|"
options:0
metrics:0
views:dict]];
[_libraryTargetView addConstraints:@[
[NSLayoutConstraint constraintWithItem:videoView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:_libraryTargetView
attribute:NSLayoutAttributeTop
multiplier:1.
constant:0.],
[NSLayoutConstraint constraintWithItem:videoView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:_libraryTargetView
attribute:NSLayoutAttributeBottom
multiplier:1.
constant:0.],
[NSLayoutConstraint constraintWithItem:videoView
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:_libraryTargetView
attribute:NSLayoutAttributeLeft
multiplier:1.
constant:0.],
[NSLayoutConstraint constraintWithItem:videoView
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:_libraryTargetView
attribute:NSLayoutAttributeRight
multiplier:1.
constant:0.]
]];
}
- (void)enableVideoPlaybackAppearance
......@@ -790,10 +816,12 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
if (self.isInNativeFullscreen && [self hasActiveVideo] && [self fullscreen]) {
[self hideControlsBar];
[_fspanel shouldBecomeActive:nil];
[self.videoViewController showControls];
}
[(VLCLibraryWindowAutohideToolbar *)self.toolbar setAutohide:YES];
[self enableVideoTitleBarMode];
[self hideControlsBar];
[self.videoViewController showControls];
}
- (void)disableVideoPlaybackAppearance
......@@ -803,7 +831,7 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
// restore alpha value to 1 for the case that macosx-opaqueness is set to < 1
[self setAlphaValue:1.0];
self.videoView.hidden = YES;
self.videoViewController.view.hidden = YES;
[self.segmentedTitleControl setHidden:NO];
[self.forwardsNavigationButton setHidden:NO];
......@@ -818,15 +846,15 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
if (self.isInNativeFullscreen) {
[self showControlsBar];
[_fspanel shouldBecomeInactive:nil];
}
[(VLCLibraryWindowAutohideToolbar *)self.toolbar setAutohide:NO];
[self disableVideoTitleBarMode];
[self showControlsBar];
}
- (void)mouseMoved:(NSEvent *)o_event
{
if (!self.videoView.hidden) {
if (!self.videoViewController.view.hidden) {
NSPoint mouseLocation = [o_event locationInWindow];
NSRect windowRectWithFrame = [self frameRectForContentRect:self.contentView.frame];
......@@ -845,18 +873,28 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
- (void)shouldShowController:(NSNotification *)aNotification
{
[self makeKeyAndOrderFront:nil];
[self showControlsBar];
if (self.videoViewController.view.isHidden) {
[self showControlsBar];
NSView *standardWindowButtonsSuperView = [self standardWindowButton:NSWindowCloseButton].superview;
standardWindowButtonsSuperView.hidden = NO;
}
}
- (void)shouldShowFullscreenController:(NSNotification *)aNotification
- (void)windowWillEnterFullScreen:(NSNotification *)notification
{
id currentWindow = [NSApp keyWindow];
if ([currentWindow respondsToSelector:@selector(hasActiveVideo)] && [currentWindow hasActiveVideo]) {
if ([currentWindow respondsToSelector:@selector(fullscreen)] && [currentWindow fullscreen] && ![[currentWindow videoView] isHidden]) {
if ([_playlistController.playerController activeVideoPlayback]) {
[_fspanel fadeIn];
}
}
[super windowWillEnterFullScreen:notification];
if (!self.videoViewController.view.hidden) {
[self hideControlsBar];
}
}
- (void)windowDidEnterFullScreen:(NSNotification *)notification
{
[super windowDidEnterFullScreen:notification];
if (!self.videoViewController.view.hidden) {
[self showControlsBar];
}
}
......
......@@ -40,6 +40,7 @@
#import "main/VLCMain.h"
#import "windows/video/VLCVoutView.h"
#import "windows/video/VLCMainVideoViewController.h"
NSString *VLCLibraryPlaceholderAudioViewIdentifier = @"VLCLibraryPlaceholderAudioViewIdentifier";
......@@ -380,7 +381,7 @@ NSString *VLCLibraryPlaceholderAudioViewIdentifier = @"VLCLibraryPlaceholderAudi
if (_segmentedTitleControl.selectedSegment == VLCLibraryMusicSegment &&
((audioList.count == 0 && ![_libraryTargetView.subviews containsObject:_emptyLibraryView]) ||
(audioList.count > 0 && ![_libraryTargetView.subviews containsObject:_audioLibraryView])) &&
_libraryWindow.videoView.hidden) {
_libraryWindow.videoViewController.view.hidden) {
[self updatePresentedView];
}
......
......@@ -37,6 +37,7 @@
#import "main/VLCMain.h"
#import "windows/video/VLCVoutView.h"
#import "windows/video/VLCMainVideoViewController.h"
@implementation VLCLibraryVideoViewController
......@@ -205,7 +206,7 @@
if (_segmentedTitleControl.selectedSegment == VLCLibraryVideoSegment &&
((videoList.count == 0 && ![_libraryTargetView.subviews containsObject:_emptyLibraryView]) ||
(videoList.count > 0 && ![_libraryTargetView.subviews containsObject:_videoLibraryView])) &&
_libraryWindow.videoView.hidden) {
_libraryWindow.videoViewController.view.hidden) {
[self updatePresentedView];
}
......
......@@ -59,10 +59,6 @@ int WindowOpen (vlc_window_t *);
#define BLACK_LONGTEXT N_("In fullscreen mode, keep screen where there is no " \
"video displayed black")
#define FSPANEL_TEXT N_("Show Fullscreen controller")
#define FSPANEL_LONGTEXT N_("Shows a lucent controller when moving the mouse " \
"in fullscreen mode.")
#define AUTOPLAY_OSX_TEST N_("Auto-playback of new items")
#define AUTOPLAY_OSX_LONGTEXT N_("Start playback of new items immediately " \
"once they were added.")
......@@ -148,7 +144,6 @@ vlc_module_begin()
set_section(N_("Behavior"), 0)
add_bool("macosx-autoplay", true, AUTOPLAY_OSX_TEST, AUTOPLAY_OSX_LONGTEXT)
add_bool("macosx-recentitems", true, RECENT_ITEMS_TEXT, RECENT_ITEMS_LONGTEXT)
add_bool("macosx-fspanel", true, FSPANEL_TEXT, FSPANEL_LONGTEXT)
add_bool("macosx-video-autoresize", true, KEEPSIZE_TEXT, KEEPSIZE_LONGTEXT)
add_bool("macosx-pause-minimized", false, PAUSE_MINIMIZED_TEXT, PAUSE_MINIMIZED_LONGTEXT)
add_bool("macosx-lock-aspect-ratio", true, LOCK_ASPECT_RATIO_TEXT, NULL)
......
......@@ -32,6 +32,7 @@
#import "library/VLCInputItem.h"
#import "windows/video/VLCVoutView.h"
#import "windows/video/VLCMainVideoViewController.h"
#import "windows/video/VLCVideoWindowCommon.h"
NSString *VLCPlayerElementaryStreamID = @"VLCPlayerElementaryStreamID";
......@@ -1622,7 +1623,8 @@ static int BossCallback(vlc_object_t *p_this,
id currentWindow = [NSApp keyWindow];
if ([currentWindow respondsToSelector:@selector(videoView)]) {
VLCVoutView *videoView = [(VLCVideoWindowCommon *)currentWindow videoView];
VLCVideoWindowCommon *videoWindow = (VLCVideoWindowCommon *)currentWindow;
VLCVoutView *videoView = videoWindow.videoViewController.voutView;
if (videoView) {
p_vout = [videoView voutThread];
}
......
/*****************************************************************************
* VLCFSPanelDraggableView.m
*****************************************************************************
* Copyright (C) 2017 VLC authors and VideoLAN
*
* Authors: David Fuhrmann <dfuhrmann 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.
*****************************************************************************/
#import "VLCFSPanelDraggableView.h"
#import "windows/video/VLCFSPanelController.h"
@implementation VLCFSPanelDraggableView
- (BOOL)mouseDownCanMoveWindow
{
return NO;
}
- (void)mouseDown:(NSEvent *)event
{
NSWindow *window = [self window];
NSRect mouseLocationInWindow = {[event locationInWindow], {0,0}};
NSPoint originalMouseLocation = [window convertRectToScreen:mouseLocationInWindow].origin;
NSRect originalFrame = [window frame];
while (YES)
{
// Get all dragged and mouse up events during dragging
NSEvent *newEvent = [window nextEventMatchingMask:(NSLeftMouseDraggedMask | NSLeftMouseUpMask)];
if ([newEvent type] == NSLeftMouseUp) {
break;
}
// Calculate delta of dragging
NSRect newMouseLocationInWindow = {[newEvent locationInWindow], {0,0}};
NSPoint newMouseLocation = [window convertRectToScreen:newMouseLocationInWindow].origin;
NSPoint delta = NSMakePoint(newMouseLocation.x - originalMouseLocation.x,
newMouseLocation.y - originalMouseLocation.y);
NSRect newFrame = originalFrame;
newFrame.origin.x += delta.x;
newFrame.origin.y += delta.y;
newFrame = [(VLCFSPanelController *)[[self window] delegate] contrainFrameToAssociatedVoutWindow: newFrame];
[window setFrame:newFrame display:YES animate:NO];
}
}
@end
......@@ -25,6 +25,7 @@
@class VLCDragDropView;
@class VLCSlider;
@class VLCVolumeSlider;
@class VLCTimeField;
@class VLCImageView;
@class VLCBottomBarView;
......@@ -44,10 +45,10 @@
@property (readwrite, strong) IBOutlet NSButton *playButton;
@property (readwrite, strong) IBOutlet NSButton *backwardButton;
@property (readwrite, strong) IBOutlet NSButton *forwardButton;
@property (readwrite, strong) IBOutlet NSButton *repeatButton;
@property (readwrite, strong) IBOutlet NSButton *shuffleButton;
@property (readwrite, strong) IBOutlet VLCSlider *timeSlider;
@property (readwrite, strong) IBOutlet VLCVolumeSlider *volumeSlider;
@property (readwrite, strong) IBOutlet NSButton *muteVolumeButton;
@property (readwrite, strong) IBOutlet VLCImageView *artworkImageView;
@property (readwrite, strong) IBOutlet NSButton *artworkButton;
......@@ -59,7 +60,6 @@
@property (readwrite, strong) IBOutlet NSButton *fullscreenButton;
@property (readwrite, strong) IBOutlet NSLayoutConstraint *fullscreenButtonWidthConstraint;
@property (readwrite, strong) IBOutlet NSView *nowPlayingView;
@property (readwrite, strong) IBOutlet VLCBottomBarView *bottomBarView;
@property (readonly) BOOL nativeFullscreenMode;
......@@ -71,7 +71,13 @@
- (IBAction)fwd:(id)sender;
- (IBAction)timeSliderAction:(id)sender;
- (IBAction)volumeAction:(id)sender;
- (IBAction)fullscreen:(id)sender;
- (void)updateMuteVolumeButtonImage;
- (void)updateTimeSlider:(NSNotification *)aNotification;
- (void)updateVolumeSlider:(NSNotification *)aNotification;
- (void)updateMuteVolumeButton:(NSNotification *)aNotification;
@end
......@@ -24,7 +24,6 @@
#import "VLCControlsBarCommon.h"
#import "extensions/NSString+Helpers.h"
#import "extensions/NSColor+VLCAdditions.h"
#import "main/VLCMain.h"
#import "playlist/VLCPlaylistController.h"
#import "playlist/VLCPlayerController.h"
......@@ -35,6 +34,7 @@
#import "views/VLCImageView.h"
#import "views/VLCTimeField.h"
#import "views/VLCSlider.h"
#import "views/VLCVolumeSlider.h"
#import "views/VLCWrappableTextField.h"
/*****************************************************************************
......@@ -50,11 +50,6 @@
NSImage *_pressedPauseImage;
NSImage *_playImage;
NSImage *_pressedPlayImage;
NSImage *_repeatOffImage;
NSImage *_repeatAllImage;
NSImage *_repeatOneImage;
NSImage *_shuffleOffImage;
NSImage *_shuffleOnImage;
NSTimeInterval last_fwd_event;
NSTimeInterval last_bwd_event;
......@@ -80,6 +75,18 @@
selector:@selector(updateTimeSlider:)
name:VLCPlayerTimeAndPositionChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(updateVolumeSlider:)
name:VLCPlayerVolumeChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(updateVolumeSlider:)
name:VLCPlayerMuteChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(updateMuteVolumeButton:)
name:VLCPlayerMuteChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(playerStateUpdated:)
name:VLCPlayerStateChanged
......@@ -91,14 +98,6 @@
selector:@selector(fullscreenStateUpdated:)
name:VLCPlayerFullscreenChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(shuffleStateUpdated:)
name:VLCPlaybackOrderChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(repeatStateUpdated:)
name:VLCPlaybackRepeatChanged
object:nil];
_nativeFullscreenMode = var_InheritBool(getIntf(), "macosx-nativefullscreenmode");
......@@ -139,11 +138,22 @@
[self.timeSlider setHidden:NO];
[self updateTimeSlider:nil];
NSString *volumeTooltip = [NSString stringWithFormat:_NS("Volume: %i %%"), 100];
[self.volumeSlider setToolTip: volumeTooltip];
self.volumeSlider.accessibilityLabel = _NS("Volume");
[self.volumeSlider setMaxValue: VLCVolumeMaximum];
[self.volumeSlider setDefaultValue: VLCVolumeDefault];
[self updateVolumeSlider:nil];
[self.muteVolumeButton setToolTip: _NS("Mute")];
self.muteVolumeButton.accessibilityLabel = self.muteVolumeButton.toolTip;
[self updateMuteVolumeButtonImage];
NSColor *timeFieldTextColor = [NSColor controlTextColor];
[self.timeField setTextColor: timeFieldTextColor];
[self.timeField setFont:[NSFont titleBarFontOfSize:10.0]];
[self.timeField setAlignment: NSCenterTextAlignment];
[self.timeField setNeedsDisplay:YES];
[self.timeField setRemainingIdentifier:VLCTimeFieldDisplayTimeAsElapsed];
self.trailingTimeField.isTimeRemaining = NO;
......@@ -152,7 +162,6 @@
self.trailingTimeField.isTimeRemaining = !self.timeField.isTimeRemaining;
[self.trailingTimeField setTextColor: timeFieldTextColor];
[self.trailingTimeField setFont:[NSFont titleBarFontOfSize:10.0]];
[self.trailingTimeField setAlignment: NSCenterTextAlignment];
[self.trailingTimeField setNeedsDisplay:YES];
[self.trailingTimeField setRemainingIdentifier:VLCTimeFieldDisplayTimeAsRemaining];
self.trailingTimeField.isTimeRemaining = YES;
......@@ -172,23 +181,11 @@
[self.forwardButton setAction:@selector(fwd:)];
[self.backwardButton setAction:@selector(bwd:)];
self.repeatButton.action = @selector(repeatAction:);
self.shuffleButton.action = @selector(shuffleAction:);
[self playerStateUpdated:nil];
[self repeatStateUpdated:nil];
[self shuffleStateUpdated:nil];
[_artworkImageView setCropsImagesToRoundedCorners:YES];
[_artworkImageView setImage:[NSImage imageNamed:@"noart"]];
[_artworkImageView setContentGravity:VLCImageViewContentGravityResize];
_repeatAllImage = [NSImage imageNamed:@"repeatAll"];
_repeatOffImage = [NSImage imageNamed:@"repeatOff"];
_repeatOneImage = [NSImage imageNamed:@"repeatOne"];
_shuffleOffImage = [NSImage imageNamed:@"shuffleOff"];
_shuffleOnImage = [NSImage imageNamed:@"shuffleOn"];
}
- (void)dealloc
......@@ -311,35 +308,19 @@
[self.timeSlider setFloatValue:newPosition];
}
- (IBAction)fullscreen:(id)sender
{
[_playerController toggleFullscreen];
}
- (IBAction)shuffleAction:(id)sender
- (IBAction)volumeAction:(id)sender
{
if (_playlistController.playbackOrder == VLC_PLAYLIST_PLAYBACK_ORDER_NORMAL) {
_playlistController.playbackOrder = VLC_PLAYLIST_PLAYBACK_ORDER_RANDOM;
} else {
_playlistController.playbackOrder = VLC_PLAYLIST_PLAYBACK_ORDER_NORMAL;
if (sender == self.volumeSlider) {
[_playerController setVolume:[sender floatValue]];
} else if (sender == self.muteVolumeButton) {
[_playerController toggleMute];
[self updateMuteVolumeButtonImage];
}
}
- (IBAction)repeatAction:(id)sender
- (IBAction)fullscreen:(id)sender
{
enum vlc_playlist_playback_repeat currentRepeatState = _playlistController.playbackRepeat;
switch (currentRepeatState) {
case VLC_PLAYLIST_PLAYBACK_REPEAT_ALL:
_playlistController.playbackRepeat = VLC_PLAYLIST_PLAYBACK_REPEAT_NONE;
break;
case VLC_PLAYLIST_PLAYBACK_REPEAT_CURRENT:
_playlistController.playbackRepeat = VLC_PLAYLIST_PLAYBACK_REPEAT_ALL;
break;
default:
_playlistController.playbackRepeat = VLC_PLAYLIST_PLAYBACK_REPEAT_CURRENT;
break;
}
[_playerController toggleFullscreen];
}
#pragma mark -
......@@ -357,7 +338,6 @@
[self.timeSlider setIndefinite:NO];
[self.timeSlider setEnabled:NO];
[self.timeSlider setHidden:YES];
[self.nowPlayingView setHidden:YES];
return;
}
......@@ -372,7 +352,6 @@
_artworkImageView.image = [NSImage imageNamed:@"noart"];
}
[self.nowPlayingView setHidden:NO];
[self.timeSlider setHidden:NO];
[self.timeSlider setKnobHidden:NO];
[self.timeSlider setFloatValue:_playerController.position];
......@@ -401,46 +380,38 @@
[self.trailingTimeField setNeedsDisplay:YES];
}
- (void)playerStateUpdated:(NSNotification *)aNotification
- (void)updateVolumeSlider:(NSNotification *)aNotification
{
if (_playerController.playerState == VLC_PLAYER_STATE_PLAYING) {
[self setPause];
} else {
[self setPlay];
}
}
float f_volume = _playerController.volume;
BOOL b_muted = _playerController.mute;
- (void)repeatStateUpdated:(NSNotification *)aNotification
{
enum vlc_playlist_playback_repeat currentRepeatState = _playlistController.playbackRepeat;
if (b_muted)
f_volume = 0.f;
switch (currentRepeatState) {
case VLC_PLAYLIST_PLAYBACK_REPEAT_CURRENT:
self.repeatButton.image = _repeatOneImage;
break;
case VLC_PLAYLIST_PLAYBACK_REPEAT_ALL:
self.repeatButton.image = _repeatAllImage;
break;
case VLC_PLAYLIST_PLAYBACK_REPEAT_NONE:
default:
self.repeatButton.image = _repeatOffImage;
break;
}
[self.volumeSlider setFloatValue: f_volume];
NSString *volumeTooltip = [NSString stringWithFormat:_NS("Volume: %i %%"), (int)(f_volume * 100.0f)];
[self.volumeSlider setToolTip:volumeTooltip];
if (@available(macOS 11.0, *)) {
self.repeatButton.contentTintColor = currentRepeatState == VLC_PLAYLIST_PLAYBACK_REPEAT_NONE ?
nil : [NSColor VLCAccentColor];
}
[self.volumeSlider setEnabled: !b_muted];
}
- (void)shuffleStateUpdated:(NSNotification *)aNotification
- (void)updateMuteVolumeButton:(NSNotification*)aNotification
{
self.shuffleButton.image = _playlistController.playbackOrder == VLC_PLAYLIST_PLAYBACK_ORDER_NORMAL ?
_shuffleOffImage : _shuffleOnImage;
[self updateMuteVolumeButtonImage];
}
- (void)updateMuteVolumeButtonImage
{
_muteVolumeButton.image = _playerController.mute ?
imageFromRes(@"volume-low") : imageFromRes(@"volume-high");
}
if (@available(macOS 11.0, *)) {
self.shuffleButton.contentTintColor = _playlistController.playbackOrder == VLC_PLAYLIST_PLAYBACK_ORDER_NORMAL ?
nil : [NSColor VLCAccentColor];
- (void)playerStateUpdated:(NSNotification *)aNotification
{
if (_playerController.playerState == VLC_PLAYER_STATE_PLAYING) {
[self setPause];
} else {
[self setPlay];
}
}
......
......@@ -40,16 +40,15 @@
@property (readwrite, strong) IBOutlet NSButton *prevButton;
@property (readwrite, strong) IBOutlet NSButton *nextButton;
@property (readwrite, strong) IBOutlet NSButton *repeatButton;
@property (readwrite, strong) IBOutlet NSButton *shuffleButton;
@property (readwrite, strong) IBOutlet NSLayoutConstraint *artistNameTextFieldWidthConstraint;
@property (readwrite, strong) IBOutlet NSTextField *songArtistSeparatorTextField;
@property (readwrite, strong) IBOutlet VLCVolumeSlider *volumeSlider;
@property (readwrite, strong) IBOutlet NSButton *volumeDownButton;
@property (readwrite, strong) IBOutlet NSButton *volumeUpButton;
- (IBAction)stop:(id)sender;
- (IBAction)volumeAction:(id)sender;
@end
......@@ -24,6 +24,7 @@
#import "VLCMainWindowControlsBar.h"
#import "VLCControlsBarCommon.h"
#import "extensions/NSColor+VLCAdditions.h"
#import "extensions/NSString+Helpers.h"
#import "library/VLCInputItem.h"
......@@ -34,6 +35,7 @@
#import "playlist/VLCPlaylistController.h"
#import "playlist/VLCPlayerController.h"
#import "views/VLCTimeField.h"
#import "views/VLCVolumeSlider.h"
#import "views/VLCWrappableTextField.h"
......@@ -45,6 +47,12 @@
@interface VLCMainWindowControlsBar()
{
NSImage *_repeatOffImage;
NSImage *_repeatAllImage;
NSImage *_repeatOneImage;
NSImage *_shuffleOffImage;
NSImage *_shuffleOnImage;
VLCPlaylistController *_playlistController;
VLCPlayerController *_playerController;
}
......@@ -59,20 +67,38 @@
_playerController = _playlistController.playerController;
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self selector:@selector(updatePlaybackControls:) name:VLCPlaylistCurrentItemChanged object:nil];
[notificationCenter addObserver:self selector:@selector(updateVolumeSlider:) name:VLCPlayerVolumeChanged object:nil];
[notificationCenter addObserver:self selector:@selector(updateVolumeSlider:) name:VLCPlayerMuteChanged object:nil];
[notificationCenter addObserver:self selector:@selector(playbackStateChanged:) name:VLCPlayerStateChanged object:nil];
[notificationCenter addObserver:self
selector:@selector(updatePlaybackControls:)
name:VLCPlaylistCurrentItemChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(playbackStateChanged:)
name:VLCPlayerStateChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(shuffleStateUpdated:)
name:VLCPlaybackOrderChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(repeatStateUpdated:)
name:VLCPlaybackRepeatChanged
object:nil];
_repeatAllImage = [NSImage imageNamed:@"repeatAll"];
_repeatOffImage = [NSImage imageNamed:@"repeatOff"];
_repeatOneImage = [NSImage imageNamed:@"repeatOne"];
_shuffleOffImage = [NSImage imageNamed:@"shuffleOff"];
_shuffleOnImage = [NSImage imageNamed:@"shuffleOn"];
self.repeatButton.action = @selector(repeatAction:);
self.shuffleButton.action = @selector(shuffleAction:);
[self repeatStateUpdated:nil];
[self shuffleStateUpdated:nil];
[self.stopButton setToolTip: _NS("Stop")];
self.stopButton.accessibilityLabel = self.stopButton.toolTip;
NSString *volumeTooltip = [NSString stringWithFormat:_NS("Volume: %i %%"), 100];
[self.volumeSlider setToolTip: volumeTooltip];
self.volumeSlider.accessibilityLabel = _NS("Volume");
[self.volumeDownButton setToolTip: _NS("Mute")];
self.volumeDownButton.accessibilityLabel = self.volumeDownButton.toolTip;
[self.volumeUpButton setToolTip: _NS("Full Volume")];
self.volumeUpButton.accessibilityLabel = self.volumeUpButton.toolTip;
......@@ -80,7 +106,6 @@
[self.stopButton setImage: imageFromRes(@"stop")];
[self.stopButton setAlternateImage: imageFromRes(@"stop-pressed")];
[self.volumeDownButton setImage: imageFromRes(@"volume-low")];
[self.volumeUpButton setImage: imageFromRes(@"volume-high")];
[self.fullscreenButton setImage: imageFromRes(@"VLCFullscreenOffTemplate")];
......@@ -91,12 +116,11 @@
[self.nextButton setImage: imageFromRes(@"next-6btns")];
[self.nextButton setAlternateImage: imageFromRes(@"next-6btns-pressed")];
[self.volumeSlider setMaxValue: VLCVolumeMaximum];
[self.volumeSlider setDefaultValue: VLCVolumeDefault];
[self updateVolumeSlider:nil];
[self playbackStateChanged:nil];
[self.stopButton setHidden:YES];
[self.timeField setAlignment: NSCenterTextAlignment];
[self.trailingTimeField setAlignment: NSCenterTextAlignment];
}
#pragma mark -
......@@ -120,12 +144,11 @@
- (IBAction)volumeAction:(id)sender
{
if (sender == self.volumeSlider)
[_playerController setVolume:[sender floatValue]];
else if (sender == self.volumeDownButton)
[_playerController toggleMute];
else
if (sender == self.volumeUpButton) {
[_playerController setVolume:VLCVolumeMaximum];
} else {
[super volumeAction:sender];
}
}
- (IBAction)artworkButtonAction:(id)sender
......@@ -133,38 +156,47 @@
[[VLCMain sharedInstance].libraryWindow reopenVideoView];
}
#pragma mark -
#pragma mark Extra updaters
- (IBAction)shuffleAction:(id)sender
{
if (_playlistController.playbackOrder == VLC_PLAYLIST_PLAYBACK_ORDER_NORMAL) {
_playlistController.playbackOrder = VLC_PLAYLIST_PLAYBACK_ORDER_RANDOM;
} else {
_playlistController.playbackOrder = VLC_PLAYLIST_PLAYBACK_ORDER_NORMAL;
}
}
- (void)updateTimeSlider:(NSNotification *)aNotification
- (IBAction)repeatAction:(id)sender
{
[super updateTimeSlider:aNotification];
enum vlc_playlist_playback_repeat currentRepeatState = _playlistController.playbackRepeat;
switch (currentRepeatState) {
case VLC_PLAYLIST_PLAYBACK_REPEAT_ALL:
_playlistController.playbackRepeat = VLC_PLAYLIST_PLAYBACK_REPEAT_NONE;
break;
case VLC_PLAYLIST_PLAYBACK_REPEAT_CURRENT:
_playlistController.playbackRepeat = VLC_PLAYLIST_PLAYBACK_REPEAT_ALL;
break;
VLCInputItem *inputItem = _playerController.currentMedia;
if (inputItem == nil) {
return;
default:
_playlistController.playbackRepeat = VLC_PLAYLIST_PLAYBACK_REPEAT_CURRENT;
break;
}
_artistNameTextFieldWidthConstraint.active = inputItem.artist.length != 0;
_songArtistSeparatorTextField.hidden = inputItem.artist.length == 0;
}
#pragma mark -
#pragma mark Extra updaters
- (void)updateVolumeSlider:(NSNotification *)aNotification
{
float f_volume = _playerController.volume;
[super updateVolumeSlider:aNotification];
BOOL b_muted = _playerController.mute;
if (b_muted)
f_volume = 0.f;
[self.volumeSlider setFloatValue: f_volume];
NSString *volumeTooltip = [NSString stringWithFormat:_NS("Volume: %i %%"), (int)(f_volume * 100.0f)];
[self.volumeSlider setToolTip:volumeTooltip];
[self.volumeSlider setEnabled: !b_muted];
[self.volumeUpButton setEnabled: !b_muted];
}
- (void)updateMuteVolumeButtonImage
{
self.muteVolumeButton.image = imageFromRes(@"volume-low");
}
- (void)playbackStateChanged:(NSNotification *)aNotification
{
switch (_playerController.playerState) {
......@@ -179,6 +211,40 @@
}
}
- (void)repeatStateUpdated:(NSNotification *)aNotification
{
enum vlc_playlist_playback_repeat currentRepeatState = _playlistController.playbackRepeat;
switch (currentRepeatState) {
case VLC_PLAYLIST_PLAYBACK_REPEAT_CURRENT:
self.repeatButton.image = _repeatOneImage;
break;
case VLC_PLAYLIST_PLAYBACK_REPEAT_ALL:
self.repeatButton.image = _repeatAllImage;
break;
case VLC_PLAYLIST_PLAYBACK_REPEAT_NONE:
default:
self.repeatButton.image = _repeatOffImage;
break;
}
if (@available(macOS 11.0, *)) {
self.repeatButton.contentTintColor = currentRepeatState == VLC_PLAYLIST_PLAYBACK_REPEAT_NONE ?
nil : [NSColor VLCAccentColor];
}
}
- (void)shuffleStateUpdated:(NSNotification *)aNotification
{
self.shuffleButton.image = _playlistController.playbackOrder == VLC_PLAYLIST_PLAYBACK_ORDER_NORMAL ?
_shuffleOffImage : _shuffleOnImage;
if (@available(macOS 11.0, *)) {
self.shuffleButton.contentTintColor = _playlistController.playbackOrder == VLC_PLAYLIST_PLAYBACK_ORDER_NORMAL ?
nil : [NSColor VLCAccentColor];
}
}
- (void)updatePlaybackControls:(NSNotification *)aNotification
{
bool b_seekable = _playerController.seekable;
......
......@@ -20,11 +20,11 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import "VLCVideoWindowCommon.h"
#import "VLCFullVideoViewWindow.h"
NS_ASSUME_NONNULL_BEGIN
@interface VLCAspectRatioRetainingVideoWindow : VLCVideoWindowCommon
@interface VLCAspectRatioRetainingVideoWindow : VLCFullVideoViewWindow
@property (nonatomic, readwrite, assign) NSSize nativeVideoSize;
......
......@@ -24,6 +24,7 @@
#import "main/VLCMain.h"
#import "playlist/VLCPlayerController.h"
#import "windows/video/VLCMainVideoViewController.h"
#import "windows/video/VLCVoutView.h"
@implementation VLCAspectRatioRetainingVideoWindow
......@@ -48,8 +49,8 @@
/* Calculate the window's new size */
NSRect new_frame;
new_frame.size.width = [self frame].size.width - [self.videoView frame].size.width + f_width;
new_frame.size.height = [self frame].size.height - [self.videoView frame].size.height + f_height;
new_frame.size.width = [self frame].size.width - [self.videoViewController.view frame].size.width + f_width;
new_frame.size.height = [self frame].size.height - [self.videoViewController.view frame].size.height + f_height;
new_frame.origin.x = topleftscreen.x;
new_frame.origin.y = topleftscreen.y - new_frame.size.height;
......@@ -103,12 +104,12 @@
if (self.inFullscreenTransition || [self fullscreen] || [self isInNativeFullscreen])
return proposedFrameSize;
if ([self.videoView isHidden])
if ([self.videoViewController.view isHidden])
return proposedFrameSize;
if ([self.playerController aspectRatioIsLocked]) {
NSRect videoWindowFrame = [self frame];
NSRect viewRect = [self.videoView convertRect:[self.videoView bounds] toView: nil];
NSRect viewRect = [self.videoViewController.view convertRect:[self.videoViewController.view bounds] toView: nil];
NSRect contentRect = [self contentRectForFrameRect:videoWindowFrame];
CGFloat marginy = viewRect.origin.y + videoWindowFrame.size.height - contentRect.size.height;
CGFloat marginx = contentRect.size.width - viewRect.size.width;
......
/*****************************************************************************
* VLCDetachedVideoWindow.m: MacOS X interface module
*****************************************************************************
* Copyright (C) 2002-2019 VLC authors and VideoLAN
*
* Authors: Felix Paul Kühne <fkuehne -at- videolan -dot- org>
* David Fuhrmann <david dot fuhrmann at googlemail dot com>
*
* 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 "VLCAspectRatioRetainingVideoWindow.h"
@interface VLCDetachedVideoWindow : VLCAspectRatioRetainingVideoWindow
@end
/*****************************************************************************
* VLCDetachedVideoWindow.m: MacOS X interface module
*****************************************************************************
* Copyright (C) 2002-2019 VLC authors and VideoLAN
*
* Authors: Felix Paul Kühne <fkuehne -at- videolan -dot- org>
* David Fuhrmann <david dot fuhrmann at googlemail dot com>
*
* 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 "VLCDetachedVideoWindow.h"
#import "windows/mainwindow/VLCControlsBarCommon.h"
@implementation VLCDetachedVideoWindow
- (void)awakeFromNib
{
// sets lion fullscreen behaviour
[super awakeFromNib];
[self setAcceptsMouseMovedEvents: YES];
[self setContentMinSize: NSMakeSize(363., VLCVideoWindowCommonMinimalHeight + [[self controlsBar] height])];
}
@end