From 19ce496a44f11c2fcef86edd02ea0a0a29dfa473 Mon Sep 17 00:00:00 2001 From: Craig Reyenga <craig.reyenga@gmail.com> Date: Sat, 22 Feb 2025 09:43:23 -0500 Subject: [PATCH 1/3] Remove unused code found using 'periphery'. --- Resources/en.lproj/Localizable.strings | 5 - .../NSObject+SettingsReader.swift | 4 +- .../MediaCategories/MediaCategory.swift | 8 - .../MediaCategoryViewController.swift | 3 - .../MediaGridCollectionCell.swift | 1 - .../MediaLibraryModel/ShowEpisodeModel.swift | 73 --------- .../Control/CustomDialogRendererHandler.swift | 43 ------ .../VLCRendererDiscovererManager.swift | 7 - .../Player/AudioPlayer/AudioPlayerView.swift | 4 - .../AudioPlayerViewController.swift | 13 -- .../Player/PlayerViewController.swift | 5 +- .../VideoPlayer-iOS/PlayerController.swift | 8 - .../Subviews/BookmarksView.swift | 5 - .../VideoPlayerViewController.swift | 146 ++---------------- .../Playback/Queue/QueueViewController.swift | 6 +- Sources/Settings/Model/SettingsSection.swift | 4 - .../Settings/Model/SettingsSpecifier.swift | 2 - .../ActionSheetSectionHeader.swift | 7 - .../ActionSheetSortSectionHeader.swift | 7 +- Sources/UI Elements/PopupView.swift | 11 -- .../PagerStripViewController.swift | 11 -- VLC.xcodeproj/project.pbxproj | 6 - 22 files changed, 20 insertions(+), 359 deletions(-) delete mode 100644 Sources/Media Library/MediaLibraryModel/ShowEpisodeModel.swift diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index 628ff8bea..7acb9bef8 100644 --- a/Resources/en.lproj/Localizable.strings +++ b/Resources/en.lproj/Localizable.strings @@ -345,7 +345,6 @@ // MARK: - MediaViewController Swipable Header "ALBUMS" = "Albums"; "ARTISTS" = "Artists"; -"EPISODES" = "Episodes"; "GENRES" = "Genres"; "ALL_VIDEOS" = "All videos"; "SONGS" = "Songs"; @@ -563,10 +562,6 @@ // MARK: - Local Network -"SMBV1_WARN_TITLE" = "SMBv1 Connection Warning"; -"SMBV1_WARN_DESCRIPTION" = "We detected an old protocol (SMBv1).\nAre you really sure to continue with SMBv1?\nWe advise upgrading or changing your server settings."; -"SMBV1_CONTINUE" = "Continue with SMBv1"; -"SMBV1_NEXT_PROTOCOL" = "Try SMBv2/v3"; // MARK: - Preview labels diff --git a/Sources/Extensions/Data Structures/NSObject+SettingsReader.swift b/Sources/Extensions/Data Structures/NSObject+SettingsReader.swift index fd03d7c37..82b16f7c0 100644 --- a/Sources/Extensions/Data Structures/NSObject+SettingsReader.swift +++ b/Sources/Extensions/Data Structures/NSObject+SettingsReader.swift @@ -39,7 +39,9 @@ extension NSObject { specifier.append(newSpecifier) } } - let newSpecifierObject = SettingSpecifier(title: title, preferenceKey: preferenceKey, infobuttonvalue: infobuttonvalue, defaultValue: defaultValue, specifier: specifier) + let newSpecifierObject = SettingSpecifier(title: title, + infobuttonvalue: infobuttonvalue, + specifier: specifier) settingsSpecifierDict = newSpecifierObject } else { diff --git a/Sources/Media Library/MediaCategories/MediaCategory.swift b/Sources/Media Library/MediaCategories/MediaCategory.swift index 50f247889..67f17822f 100644 --- a/Sources/Media Library/MediaCategories/MediaCategory.swift +++ b/Sources/Media Library/MediaCategories/MediaCategory.swift @@ -18,14 +18,6 @@ class MovieCategoryViewController: MediaCategoryViewController { } } -class ShowEpisodeCategoryViewController: MediaCategoryViewController { - init(_ mediaLibraryService: MediaLibraryService) { - let model = ShowEpisodeModel(medialibrary: mediaLibraryService) - super.init(mediaLibraryService: mediaLibraryService, model: model) - model.observable.addObserver(self) - } -} - class PlaylistCategoryViewController: MediaCategoryViewController { init(_ mediaLibraryService: MediaLibraryService) { let model = PlaylistModel(medialibrary: mediaLibraryService) diff --git a/Sources/Media Library/MediaCategories/MediaCategoryViewController.swift b/Sources/Media Library/MediaCategories/MediaCategoryViewController.swift index c221da347..43f3eb326 100644 --- a/Sources/Media Library/MediaCategories/MediaCategoryViewController.swift +++ b/Sources/Media Library/MediaCategories/MediaCategoryViewController.swift @@ -86,7 +86,6 @@ class MediaCategoryViewController: UICollectionViewController, UISearchBarDelega var header: ActionSheetSortSectionHeader var isVideoModel: Bool = false var collectionModelName: String = "" - var secondSortModel: SortModel? = nil if let model = model as? CollectionModel { if model.mediaCollection is VLCMLMediaGroup || model.mediaCollection is VideoModel { @@ -99,13 +98,11 @@ class MediaCategoryViewController: UICollectionViewController, UISearchBarDelega } else if let model = model as? VideoModel { isVideoModel = true collectionModelName = secondModel.name - secondSortModel = model.sortModel } else { collectionModelName = model.name } header = ActionSheetSortSectionHeader(model: model.sortModel, - secondModel: secondSortModel, isVideoModel: isVideoModel, currentModelType: collectionModelName) diff --git a/Sources/Media Library/MediaCategoryCells/MediaGridCollectionCell.swift b/Sources/Media Library/MediaCategoryCells/MediaGridCollectionCell.swift index b77ae39e5..889a081c2 100644 --- a/Sources/Media Library/MediaCategoryCells/MediaGridCollectionCell.swift +++ b/Sources/Media Library/MediaCategoryCells/MediaGridCollectionCell.swift @@ -16,7 +16,6 @@ class MediaGridCollectionCell: BaseCollectionViewCell { private let notificationCenter = NotificationCenter.default private let userDefaults = UserDefaults.standard - private let selectionOverlayColor = UIColor.orange.withAlphaComponent(0.4) private let checkboxImageView: UIImageView = { let imageView = UIImageView() diff --git a/Sources/Media Library/MediaLibraryModel/ShowEpisodeModel.swift b/Sources/Media Library/MediaLibraryModel/ShowEpisodeModel.swift deleted file mode 100644 index debed46d1..000000000 --- a/Sources/Media Library/MediaLibraryModel/ShowEpisodeModel.swift +++ /dev/null @@ -1,73 +0,0 @@ -/***************************************************************************** - * ShowEpisodeModel.swift - * - * Copyright © 2018 VLC authors and VideoLAN - * Copyright © 2018 Videolabs - * - * Authors: Soomin Lee <bubu@mikan.io> - * - * Refer to the COPYING file of the official project for license. - *****************************************************************************/ - -class ShowEpisodeModel: MediaModel { - typealias MLType = VLCMLMedia - - var sortModel = SortModel([.alpha, .duration, .insertionDate, .releaseDate, .fileSize]) - - var observable = Observable<MediaLibraryBaseModelObserver>() - - var files = [VLCMLMedia]() - var fileArrayLock = NSRecursiveLock() - - var cellType: BaseCollectionViewCell.Type { return MovieCollectionViewCell.self } - - var medialibrary: MediaLibraryService - - var name: String = "EPISODES" - - var indicatorName: String = NSLocalizedString("EPISODES", comment: "") - - required init(medialibrary: MediaLibraryService) { - self.medialibrary = medialibrary - medialibrary.observable.addObserver(self) - } - - func append(_ item: VLCMLMedia) { - defer { - fileArrayLock.unlock() - } - fileArrayLock.lock() - files.append(item) - } - - func delete(_ items: [VLCMLMedia]) { - preconditionFailure("ShowEpisodeModel: Cannot delete showEpisode") - } -} - -// MARK: - Sort - -extension ShowEpisodeModel { - func sort(by criteria: VLCMLSortingCriteria, desc: Bool) { - // Currently no show specific getter on medialibrary. - } -} - -// MARK: - MediaLibraryObserver - -extension ShowEpisodeModel: MediaLibraryObserver { - func medialibrary(_ medialibrary: MediaLibraryService, didAddShowEpisodes showEpisodes: [VLCMLMedia]) { - showEpisodes.forEach({ append($0) }) - observable.notifyObservers { - $0.mediaLibraryBaseModelReloadView() - } - } - - func medialibraryDidStartRescan() { - defer { - fileArrayLock.unlock() - } - fileArrayLock.lock() - files.removeAll() - } -} diff --git a/Sources/Playback/Control/CustomDialogRendererHandler.swift b/Sources/Playback/Control/CustomDialogRendererHandler.swift index 15ff8a15c..cc730947c 100644 --- a/Sources/Playback/Control/CustomDialogRendererHandler.swift +++ b/Sources/Playback/Control/CustomDialogRendererHandler.swift @@ -37,29 +37,6 @@ class CustomDialogRendererHandler: NSObject { // MARK: - Private helpers private extension CustomDialogRendererHandler { - private func handleSMBv1(completionHandler: @escaping (Bool) -> Void) { - let alertController = UIAlertController(title: NSLocalizedString("SMBV1_WARN_TITLE", comment: ""), - message: NSLocalizedString("SMBV1_WARN_DESCRIPTION", comment: ""), - preferredStyle: .alert) - - alertController.addAction(UIAlertAction(title: NSLocalizedString("SMBV1_CONTINUE", comment:""), - style: .destructive, handler: { - action in - completionHandler(true) - })) - - alertController.addAction(UIAlertAction(title: NSLocalizedString("SMBV1_NEXT_PROTOCOL", comment:""), - style: .default, handler: { - action in - completionHandler(false) - })) - - if let rootViewController = UIApplication.shared.delegate?.window??.rootViewController { - let presentingController = rootViewController.presentedViewController ?? rootViewController - presentingController.present(alertController, animated: true, completion: nil) - } - } - private func handleLoginAlert(with title: String, message: String, username: String?, askingForStorage: Bool, withReference reference: NSValue) { @@ -156,26 +133,6 @@ extension CustomDialogRendererHandler: VLCCustomDialogRendererProtocol { askingForStorage: false, withReference: reference) - // if !title.contains("SMBv1") || selectedSMBv1 { - // handleLoginAlert(with: title, message: message, - // username: username, - // askingForStorage: askingForStorage, - // withReference: reference) - // return - // } - - // handleSMBv1() { - // [weak self] isSMBv1 in - // if isSMBv1 { - // self?.selectedSMBv1 = true - // self?.handleLoginAlert(with: title, message: message, - // username: username, - // askingForStorage: askingForStorage, - // withReference: reference) - // } else { - // self?.dialogProvider.dismissDialog(withReference: reference) - // } - // } } func showQuestion(withTitle title: String, message: String, diff --git a/Sources/Playback/Control/VLCRendererDiscovererManager.swift b/Sources/Playback/Control/VLCRendererDiscovererManager.swift index 7d1582e19..4ba7d17e3 100644 --- a/Sources/Playback/Control/VLCRendererDiscovererManager.swift +++ b/Sources/Playback/Control/VLCRendererDiscovererManager.swift @@ -48,13 +48,6 @@ class VLCRendererDiscovererManager: NSObject { return discoverers.flatMap { $0.renderers } } - fileprivate func isDuplicateDiscoverer(with description: VLCRendererDiscovererDescription) -> Bool { - for discoverer in discoverers where discoverer.name == description.name { - return true - } - return false - } - @objc func start() { // Gather potential renderer discoverers guard let tmpDiscoverersDescription: [VLCRendererDiscovererDescription] = VLCRendererDiscoverer.list() else { diff --git a/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift b/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift index 1b94c4be2..f9ac9b76e 100644 --- a/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift +++ b/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift @@ -23,10 +23,6 @@ protocol AudioPlayerViewDelegate: AnyObject { func audioPlayerViewDelegateDidTapRepeatButton(_ audioPlayerView: AudioPlayerView) func audioPlayerViewDelegateDidTapPlaybackSpeedButton(_ audioPlayerView: AudioPlayerView) func audioPlayerViewDelegateDidLongPressPlaybackSpeedButton(_ audioPlayerView: AudioPlayerView) - #if os(iOS) - func audioPlayerViewDelegateGetVolumeSlider(_ audioPlayerView: AudioPlayerView) -> VolumeControlView - func audioPlayerViewDelegateGetBrightnessSlider(_ audioPlayerView: AudioPlayerView) -> BrightnessControlView - #endif } class AudioPlayerView: UIView, UIGestureRecognizerDelegate { diff --git a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift index 189fcee32..2648f99be 100644 --- a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift +++ b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift @@ -435,15 +435,6 @@ extension AudioPlayerViewController: AudioPlayerViewDelegate { } } -#if os(iOS) - func audioPlayerViewDelegateGetBrightnessSlider(_ audioPlayerView: AudioPlayerView) -> BrightnessControlView { - return brightnessControlView - } - - func audioPlayerViewDelegateGetVolumeSlider(_ audioPlayerView: AudioPlayerView) -> VolumeControlView { - return volumeControlView - } -#endif } // MARK: - VLCPlaybackServiceDelegate @@ -501,10 +492,6 @@ extension AudioPlayerViewController { comment: "")) } - if currentState == .buffering { - mediaDuration = playbackService.mediaDuration - } - if currentState == .opening || currentState == .stopped { resetABRepeat() } diff --git a/Sources/Playback/Player/PlayerViewController.swift b/Sources/Playback/Player/PlayerViewController.swift index c9fa9d1ac..977d076bd 100644 --- a/Sources/Playback/Player/PlayerViewController.swift +++ b/Sources/Playback/Player/PlayerViewController.swift @@ -90,7 +90,6 @@ class PlayerViewController: UIViewController { var seekBackwardBySwipe: Int = 0 var forwardBackwardEqual: Bool = true var tapSwipeEqual: Bool = true - var numberOfTapSeek: Int = 0 var previousSeekState: PlayerSeekState = .default // MARK: UI Elements @@ -280,8 +279,6 @@ class PlayerViewController: UIViewController { var addBookmarksView: AddBookmarksView? = nil - var mediaDuration: Int = 0 - private var isGestureActive: Bool = false private var currentPanType: PlayerPanType = .none @@ -656,7 +653,7 @@ class PlayerViewController: UIViewController { resetABRepeatMarks(true) break default: - assertionFailure("VideoPlayerViewController: Unvalid button.") + assertionFailure("PlayerViewController: Invalid button.") } } diff --git a/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift b/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift index 07217a3b4..2d88941c7 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift @@ -26,14 +26,10 @@ protocol PlayerControllerDelegate: AnyObject { class PlayerController: NSObject { weak var delegate: PlayerControllerDelegate? - private var playbackService: PlaybackService = PlaybackService.sharedInstance() - // MARK: - States var isControlsHidden: Bool = false - var lockedOrientation: UIInterfaceOrientation = .unknown - var isInterfaceLocked: Bool = false var isTapSeeking: Bool = false @@ -91,10 +87,6 @@ class PlayerController: NSObject { setupObservers() } - func updateUserDefaults() { - - } - private func setupObservers() { let notificationCenter = NotificationCenter.default diff --git a/Sources/Playback/Player/VideoPlayer-iOS/Subviews/BookmarksView.swift b/Sources/Playback/Player/VideoPlayer-iOS/Subviews/BookmarksView.swift index bf35ecc10..5a42bc5a0 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/Subviews/BookmarksView.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/Subviews/BookmarksView.swift @@ -168,11 +168,6 @@ class BookmarksView: UIView { return "" } - func restoreTable() { - bookmarksTableView.delegate = self - bookmarksTableView.dataSource = self - } - func getAddBookmarksView() -> AddBookmarksView { return addBookmarksView } diff --git a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift index 33dde55a8..0aca568b9 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift @@ -26,8 +26,6 @@ protocol VideoPlayerViewControllerDelegate: AnyObject { class VideoPlayerViewController: PlayerViewController { @objc weak var delegate: VideoPlayerViewControllerDelegate? - var playAsAudio: Bool = false - // MARK: - Constants private let ZOOM_SENSITIVITY: CGFloat = 5 @@ -145,8 +143,6 @@ class VideoPlayerViewController: PlayerViewController { return aspectRatioActionSheet }() - let notificationCenter = NotificationCenter.default - private(set) lazy var titleSelectionView: TitleSelectionView = { #if os(iOS) let isLandscape = UIDevice.current.orientation.isLandscape @@ -160,8 +156,6 @@ class VideoPlayerViewController: PlayerViewController { return titleSelectionView }() - private var projectionLocation: CGPoint = .zero - private lazy var longPressPlaybackSpeedView: LongPressPlaybackSpeedView = { let view = LongPressPlaybackSpeedView() view.translatesAutoresizingMaskIntoConstraints = false @@ -279,8 +273,6 @@ class VideoPlayerViewController: PlayerViewController { private var isGestureActive: Bool = false - private var minimizationInitialCenter: CGPoint? - // MARK: - Popup Views lazy var trackSelectorPopupView: PopupView = { @@ -349,7 +341,6 @@ class VideoPlayerViewController: PlayerViewController { super.viewWillAppear(animated) playbackService.delegate = self playbackService.recoverPlaybackState() - playerController.lockedOrientation = .portrait navigationController?.navigationBar.isHidden = true mediaScrubProgressBar.updateInterfacePosition() @@ -1065,31 +1056,6 @@ class VideoPlayerViewController: PlayerViewController { executeSeekFromGesture(.tap) } - private func applyYaw(yaw: CGFloat, pitch: CGFloat) { - //Add and limit new pitch and yaw - deviceMotion.yaw += yaw - deviceMotion.pitch += pitch - - playbackService.updateViewpoint(deviceMotion.yaw, - pitch: deviceMotion.pitch, - roll: 0, - fov: fov, absolute: true) - } - - private func updateProjection(with recognizer: UIPanGestureRecognizer) { - let newLocationInView: CGPoint = recognizer.location(in: view) - - let diffX = newLocationInView.x - projectionLocation.x - let diffY = newLocationInView.y - projectionLocation.y - projectionLocation = newLocationInView - - // ScreenSizePixel width is used twice to get a constant speed on the movement. - let diffYaw = fov * -diffX / screenPixelSize.width - let diffPitch = fov * -diffY / screenPixelSize.width - - applyYaw(yaw: diffYaw, pitch: diffPitch) - } - @objc private func handleLongPressGesture(_ gestureRecognizer: UILongPressGestureRecognizer) { guard playerController.isSpeedUpGestureEnabled, playbackService.isPlaying else { @@ -1384,29 +1350,6 @@ class VideoPlayerViewController: PlayerViewController { displayAndApplySeekDuration(currentSeek) } - private func applyCustomEqualizerProfileIfNeeded() { - let userDefaults = UserDefaults.standard - guard userDefaults.bool(forKey: kVLCCustomProfileEnabled) else { - return - } - - let profileIndex = userDefaults.integer(forKey: kVLCSettingEqualizerProfile) - let encodedData = userDefaults.data(forKey: kVLCCustomEqualizerProfiles) - - guard let encodedData = encodedData, - let customProfiles = NSKeyedUnarchiver(forReadingWith: encodedData).decodeObject(forKey: "root") as? CustomEqualizerProfiles, - profileIndex < customProfiles.profiles.count else { - return - } - - let selectedProfile = customProfiles.profiles[profileIndex] - playbackService.preAmplification = CGFloat(selectedProfile.preAmpLevel) - - for (index, frequency) in selectedProfile.frequencies.enumerated() { - playbackService.setAmplification(CGFloat(frequency), forBand: UInt32(index)) - } - } - private func hideSystemVolumeInfo() { #if os(iOS) volumeView.alpha = 0.00001 @@ -1477,6 +1420,18 @@ class VideoPlayerViewController: PlayerViewController { playerController.isInterfaceLocked = !enabled } + + private func showIcon(button: UIButton) { + UIView.animate(withDuration: 0.5, animations: { + button.isHidden = false + }, completion: nil) + } + + private func hideIcon(button: UIButton) { + UIView.animate(withDuration: 0.5, animations: { + button.isHidden = true + }, completion: nil) + } } // MARK: - Delegation @@ -1806,83 +1761,6 @@ extension VideoPlayerViewController { } } -// MARK: - OptionsNavigationBarDelegate - -extension VideoPlayerViewController { - private func resetVideoFilters() { - hideIcon(button: optionsNavigationBar.videoFiltersButton) - moreOptionsActionSheet.resetVideoFilters() - } - - private func resetPlaybackSpeed() { - hideIcon(button: optionsNavigationBar.playbackSpeedButton) - moreOptionsActionSheet.resetPlaybackSpeed() - } - - private func resetEqualizer() { - moreOptionsActionSheet.resetEqualizer() - hideIcon(button: optionsNavigationBar.equalizerButton) - } - - private func resetSleepTimer() { - hideIcon(button: optionsNavigationBar.sleepTimerButton) - moreOptionsActionSheet.resetSleepTimer() - } - - private func resetABRepeatMarks(_ shouldDisplayView: Bool = false) { - hideIcon(button: optionsNavigationBar.abRepeatMarksButton) - aMark.removeFromSuperview() - aMark.isEnabled = false - - bMark.removeFromSuperview() - bMark.isEnabled = false - - guard let abRepeatView = abRepeatView, - shouldDisplayView else { - return - } - - mediaMoreOptionsActionSheetPresentABRepeatView(with: abRepeatView) - } - - private func showIcon(button: UIButton) { - UIView.animate(withDuration: 0.5, animations: { - button.isHidden = false - }, completion: nil) - } - - private func hideIcon(button: UIButton) { - UIView.animate(withDuration: 0.5, animations: { - button.isHidden = true - }, completion: nil) - } - - private func handleReset(button: UIButton) { - switch button { - case optionsNavigationBar.videoFiltersButton: - resetVideoFilters() - return - case optionsNavigationBar.playbackSpeedButton: - resetPlaybackSpeed() - return - case optionsNavigationBar.equalizerButton: - resetEqualizer() - return - case optionsNavigationBar.sleepTimerButton: - resetSleepTimer() - return - case optionsNavigationBar.abRepeatButton: - resetABRepeat() - return - case optionsNavigationBar.abRepeatMarksButton: - resetABRepeatMarks(true) - return - default: - assertionFailure("VideoPlayerViewController: Invalid button.") - } - } -} - // MARK: - Download More SPU extension VideoPlayerViewController { diff --git a/Sources/Playback/Queue/QueueViewController.swift b/Sources/Playback/Queue/QueueViewController.swift index 7383aaea4..50441268b 100644 --- a/Sources/Playback/Queue/QueueViewController.swift +++ b/Sources/Playback/Queue/QueueViewController.swift @@ -50,16 +50,12 @@ class QueueViewController: UIViewController { private var scrolledCellIndex: IndexPath = IndexPath() private var grabbedCellIndex: IndexPath? - private let cellHeight: CGFloat = 56 - private let sidePadding: CGFloat = 10 private let topPadding: CGFloat = 8 private let bottomPadding: CGFloat = 8 private let darkOverlayAlpha: CGFloat = 0.6 - private var originY: CGFloat = 0 - private var playbackService: PlaybackService { get { PlaybackService.sharedInstance() @@ -300,7 +296,7 @@ class QueueViewController: UIViewController { } func dragDidBegin(_ sender: UIPanGestureRecognizer) { - originY = view.frame.origin.y + // nothing to do } func dragStateDidChange(_ sender: UIPanGestureRecognizer) { diff --git a/Sources/Settings/Model/SettingsSection.swift b/Sources/Settings/Model/SettingsSection.swift index 0522ca902..2f34e6208 100644 --- a/Sources/Settings/Model/SettingsSection.swift +++ b/Sources/Settings/Model/SettingsSection.swift @@ -131,10 +131,6 @@ struct SettingsSection: Equatable { let title: String? let items: [SettingsItem] - var isEmpty: Bool { - items.isEmpty - } - init(title: String? = nil, items: [SettingsItem]) { self.title = title.flatMap(Localizer.localizedTitle(key:)) self.items = items diff --git a/Sources/Settings/Model/SettingsSpecifier.swift b/Sources/Settings/Model/SettingsSpecifier.swift index baf088a73..1a18152c9 100644 --- a/Sources/Settings/Model/SettingsSpecifier.swift +++ b/Sources/Settings/Model/SettingsSpecifier.swift @@ -13,9 +13,7 @@ import Foundation struct SettingSpecifier { let title: String - let preferenceKey: String let infobuttonvalue: String - let defaultValue: Any? let specifier: [Specifier] } diff --git a/Sources/UI Elements/ActionSheet/ActionSheetSectionHeader.swift b/Sources/UI Elements/ActionSheet/ActionSheetSectionHeader.swift index 90cd8c757..8e86f759d 100644 --- a/Sources/UI Elements/ActionSheet/ActionSheetSectionHeader.swift +++ b/Sources/UI Elements/ActionSheet/ActionSheetSectionHeader.swift @@ -119,13 +119,6 @@ class ActionSheetSectionHeader: UIView { separator.topAnchor.constraint(equalTo: bottomAnchor, constant: -1) ]) } - - fileprivate func setupTitle() { - addSubview(title) - NSLayoutConstraint.activate([ - title.leadingAnchor.constraint(equalTo: safeAreaLayoutGuide.leadingAnchor, constant: 20), - ]) - } } protocol ActionSheetAccessoryViewsDelegate { diff --git a/Sources/UI Elements/ActionSheet/ActionSheetSortSectionHeader.swift b/Sources/UI Elements/ActionSheet/ActionSheetSortSectionHeader.swift index 0e277e786..e8a6809e1 100644 --- a/Sources/UI Elements/ActionSheet/ActionSheetSortSectionHeader.swift +++ b/Sources/UI Elements/ActionSheet/ActionSheetSortSectionHeader.swift @@ -29,7 +29,6 @@ class ActionSheetSortSectionHeader: ActionSheetSectionHeader { } private var sortModel: SortModel - private var secondSortModel: SortModel? private let userDefaults = UserDefaults.standard private var isAdditionalOptionShown: Bool = false @@ -187,11 +186,11 @@ class ActionSheetSortSectionHeader: ActionSheetSectionHeader { private var isVideoModel: Bool - init(model: SortModel, secondModel: SortModel?, - isVideoModel: Bool, currentModelType: String) { + init(model: SortModel, + isVideoModel: Bool, + currentModelType: String) { modelType = currentModelType sortModel = model - secondSortModel = secondModel self.isVideoModel = isVideoModel super.init(frame: .zero) actionSwitch.isOn = sortModel.desc diff --git a/Sources/UI Elements/PopupView.swift b/Sources/UI Elements/PopupView.swift index a73e328e3..09e309f56 100644 --- a/Sources/UI Elements/PopupView.swift +++ b/Sources/UI Elements/PopupView.swift @@ -176,17 +176,6 @@ extension PopupView { ]) NSLayoutConstraint.activate(newConstraints) } - - func updateAccessoryViews() { - while titleStackView.arrangedSubviews.count > 2 { - if let subview = titleStackView.arrangedSubviews.last { - titleStackView.removeArrangedSubview(subview) - subview.removeFromSuperview() - } - } - addAccessoryViews() - titleStackView.layoutSubviews() - } } // MARK: - PopupViewDelegate diff --git a/Sources/UI Elements/View Controller/PagerStripViewController.swift b/Sources/UI Elements/View Controller/PagerStripViewController.swift index 54da32c42..d099ae598 100644 --- a/Sources/UI Elements/View Controller/PagerStripViewController.swift +++ b/Sources/UI Elements/View Controller/PagerStripViewController.swift @@ -167,17 +167,6 @@ class PagerTabStripViewController: UIViewController, UIScrollViewDelegate { return (CGFloat(index) * containerView.bounds.width) + ((containerView.bounds.width - view.bounds.width) * 0.5) } - enum PagerTabStripError: Error { - case viewControllerOutOfBounds - } - - func offsetForChild(viewController: UIViewController) throws -> CGFloat { - guard let index = viewControllers.firstIndex(of: viewController) else { - throw PagerTabStripError.viewControllerOutOfBounds - } - return offsetForChild(at: index) - } - func pageFor(contentOffset: CGFloat) -> Int { let result = virtualPageFor(contentOffset: contentOffset) return pageFor(virtualPage: result) diff --git a/VLC.xcodeproj/project.pbxproj b/VLC.xcodeproj/project.pbxproj index 4f743280f..c58720618 100644 --- a/VLC.xcodeproj/project.pbxproj +++ b/VLC.xcodeproj/project.pbxproj @@ -322,7 +322,6 @@ 7D50C6492BBD20DF00B9F1A0 /* SirikitIntentCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9108342A67AC76007EB0D5 /* SirikitIntentCoordinator.swift */; }; 7D50C64A2BBD20DF00B9F1A0 /* MediaLibraryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D66A47220AC61B900FA5B92 /* MediaLibraryService.swift */; }; 7D50C64B2BBD20DF00B9F1A0 /* VLCExternalDisplayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D378491183A98BF009EE944 /* VLCExternalDisplayController.m */; }; - 7D50C64C2BBD20DF00B9F1A0 /* ShowEpisodeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE1888B210B459000A091D2 /* ShowEpisodeModel.swift */; }; 7D50C64D2BBD20DF00B9F1A0 /* MediaViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4170152B209A1D3600802E44 /* MediaViewController.swift */; }; 7D50C64E2BBD20DF00B9F1A0 /* VLCPlaybackService+MediaLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = DD8F84301B00EB3B0009138A /* VLCPlaybackService+MediaLibrary.m */; }; 7D50C64F2BBD20DF00B9F1A0 /* MediaCategoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 418B144620179C00000447AA /* MediaCategoryViewController.swift */; }; @@ -707,7 +706,6 @@ 8DE1879A21060DBE00A091D2 /* MediaCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE1879921060DBE00A091D2 /* MediaCategory.swift */; }; 8DE1887421089B3A00A091D2 /* MediaLibraryBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE1887321089B3A00A091D2 /* MediaLibraryBaseModel.swift */; }; 8DE1887621089BB100A091D2 /* VideoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE1887521089BB100A091D2 /* VideoModel.swift */; }; - 8DE1888C210B459000A091D2 /* ShowEpisodeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE1888B210B459000A091D2 /* ShowEpisodeModel.swift */; }; 8DE18890210B53E000A091D2 /* TrackModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE1888F210B53E000A091D2 /* TrackModel.swift */; }; 8DE18892210B5BAD00A091D2 /* ArtistModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE18891210B5BAD00A091D2 /* ArtistModel.swift */; }; 8DE18894210B5F8200A091D2 /* AlbumModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE18893210B5F8200A091D2 /* AlbumModel.swift */; }; @@ -1453,7 +1451,6 @@ 8DE1879921060DBE00A091D2 /* MediaCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaCategory.swift; sourceTree = "<group>"; }; 8DE1887321089B3A00A091D2 /* MediaLibraryBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaLibraryBaseModel.swift; sourceTree = "<group>"; }; 8DE1887521089BB100A091D2 /* VideoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoModel.swift; sourceTree = "<group>"; }; - 8DE1888B210B459000A091D2 /* ShowEpisodeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowEpisodeModel.swift; sourceTree = "<group>"; }; 8DE1888F210B53E000A091D2 /* TrackModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackModel.swift; sourceTree = "<group>"; }; 8DE18891210B5BAD00A091D2 /* ArtistModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArtistModel.swift; sourceTree = "<group>"; }; 8DE18893210B5F8200A091D2 /* AlbumModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumModel.swift; sourceTree = "<group>"; }; @@ -3291,7 +3288,6 @@ 6D8E6429234CBF2200EBC8FC /* AudioCollectionModel.swift */, 8DE1887321089B3A00A091D2 /* MediaLibraryBaseModel.swift */, 8DE1887521089BB100A091D2 /* VideoModel.swift */, - 8DE1888B210B459000A091D2 /* ShowEpisodeModel.swift */, 8DE1888F210B53E000A091D2 /* TrackModel.swift */, 8DE18891210B5BAD00A091D2 /* ArtistModel.swift */, 8DE18893210B5F8200A091D2 /* AlbumModel.swift */, @@ -4377,7 +4373,6 @@ 7D50C6492BBD20DF00B9F1A0 /* SirikitIntentCoordinator.swift in Sources */, 7D50C64A2BBD20DF00B9F1A0 /* MediaLibraryService.swift in Sources */, 7D50C64B2BBD20DF00B9F1A0 /* VLCExternalDisplayController.m in Sources */, - 7D50C64C2BBD20DF00B9F1A0 /* ShowEpisodeModel.swift in Sources */, 7D50C64D2BBD20DF00B9F1A0 /* MediaViewController.swift in Sources */, 7D65F2222D2C4D4B0042A6C2 /* VLCMLMedia+isWatched.m in Sources */, 7D50C64E2BBD20DF00B9F1A0 /* VLCPlaybackService+MediaLibrary.m in Sources */, @@ -4631,7 +4626,6 @@ 8D66A47320AC61B900FA5B92 /* MediaLibraryService.swift in Sources */, 91562F5A2CAEBC1500D42986 /* PlayMediaIntent.swift in Sources */, 7D378492183A98BF009EE944 /* VLCExternalDisplayController.m in Sources */, - 8DE1888C210B459000A091D2 /* ShowEpisodeModel.swift in Sources */, 4170152C209A1D3600802E44 /* MediaViewController.swift in Sources */, DD8F84311B00EB3B0009138A /* VLCPlaybackService+MediaLibrary.m in Sources */, 418B144720179C00000447AA /* MediaCategoryViewController.swift in Sources */, -- GitLab From 752eafd07f0627f7276fce5a1dcf1ec2de68ae57 Mon Sep 17 00:00:00 2001 From: Craig Reyenga <craig.reyenga@gmail.com> Date: Sat, 22 Feb 2025 10:52:38 -0500 Subject: [PATCH 2/3] Remove duplicate brightness code in player --- .../AudioPlayerViewController.swift | 4 +- .../Player/PlayerViewController.swift | 20 ++++- .../VideoPlayerViewController.swift | 81 ++----------------- 3 files changed, 26 insertions(+), 79 deletions(-) diff --git a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift index 2648f99be..2016594e3 100644 --- a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift +++ b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift @@ -60,8 +60,8 @@ class AudioPlayerViewController: PlayerViewController { // MARK: - Init #if os(iOS) - @objc override init(mediaLibraryService: MediaLibraryService, rendererDiscovererManager: VLCRendererDiscovererManager, playerController: PlayerController) { - super.init(mediaLibraryService: mediaLibraryService, rendererDiscovererManager: rendererDiscovererManager, playerController: playerController) + @objc init(mediaLibraryService: MediaLibraryService, rendererDiscovererManager: VLCRendererDiscovererManager, playerController: PlayerController) { + super.init(mediaLibraryService: mediaLibraryService, rendererDiscovererManager: rendererDiscovererManager, playerController: playerController, isBrightnessControlEnabled: false) NotificationCenter.default.addObserver(self, selector: #selector(playbackSpeedHasChanged(_:)), name: Notification.Name("ChangePlaybackSpeed"), object: nil) self.playerController.delegate = self diff --git a/Sources/Playback/Player/PlayerViewController.swift b/Sources/Playback/Player/PlayerViewController.swift index 977d076bd..7839579ad 100644 --- a/Sources/Playback/Player/PlayerViewController.swift +++ b/Sources/Playback/Player/PlayerViewController.swift @@ -279,6 +279,8 @@ class PlayerViewController: UIViewController { var addBookmarksView: AddBookmarksView? = nil + private let isBrightnessControlEnabled: Bool + private var isGestureActive: Bool = false private var currentPanType: PlayerPanType = .none @@ -365,20 +367,30 @@ class PlayerViewController: UIViewController { // MARK: - Init #if os(iOS) - @objc init(mediaLibraryService: MediaLibraryService, rendererDiscovererManager: VLCRendererDiscovererManager, playerController: PlayerController) { + @objc init(mediaLibraryService: MediaLibraryService, + rendererDiscovererManager: VLCRendererDiscovererManager, + playerController: PlayerController, + isBrightnessControlEnabled: Bool) { self.mediaLibraryService = mediaLibraryService self.rendererDiscovererManager = rendererDiscovererManager self.playerController = playerController + self.isBrightnessControlEnabled = isBrightnessControlEnabled + super.init(nibName: nil, bundle: nil) + mediaNavigationBar.chromeCastButton = rendererButton mediaNavigationBar.addGestureRecognizer(minimizeGestureRecognizer) systemBrightness = UIScreen.main.brightness } #else - @objc init(mediaLibraryService: MediaLibraryService, playerController: PlayerController) { + @objc init(mediaLibraryService: MediaLibraryService, + playerController: PlayerController) { self.mediaLibraryService = mediaLibraryService self.playerController = playerController + self.isBrightnessControlEnabled = false + super.init(nibName: nil, bundle: nil) + mediaNavigationBar.addGestureRecognizer(minimizeGestureRecognizer) } #endif @@ -422,7 +434,7 @@ class PlayerViewController: UIViewController { //update the value of brightness control view //In case of remember brightness option is disabled, this will update the brightness bar with current brightness. - if !playerController.isRememberBrightnessEnabled && self is VideoPlayerViewController { + if !playerController.isRememberBrightnessEnabled && self.isBrightnessControlEnabled { brightnessControlView.updateIcon(level: brightnessControl.fetchAndGetDeviceValue()) } #endif @@ -432,7 +444,7 @@ class PlayerViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - if playerController.isRememberBrightnessEnabled && self is VideoPlayerViewController { + if playerController.isRememberBrightnessEnabled && self.isBrightnessControlEnabled { if let brightness = userDefaults.value(forKey: KVLCPlayerBrightness) as? CGFloat { animateBrightness(to: brightness) self.brightnessControl.value = Float(brightness) diff --git a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift index 0aca568b9..4b92d25a8 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift @@ -311,8 +311,13 @@ class VideoPlayerViewController: PlayerViewController { // MARK: - Init methods #if os(iOS) - @objc override init(mediaLibraryService: MediaLibraryService, rendererDiscovererManager: VLCRendererDiscovererManager, playerController: PlayerController) { - super.init(mediaLibraryService: mediaLibraryService, rendererDiscovererManager: rendererDiscovererManager, playerController: playerController) + @objc init(mediaLibraryService: MediaLibraryService, + rendererDiscovererManager: VLCRendererDiscovererManager, + playerController: PlayerController) { + super.init(mediaLibraryService: mediaLibraryService, + rendererDiscovererManager: rendererDiscovererManager, + playerController: playerController, + isBrightnessControlEnabled: true) self.playerController.delegate = self self.mediaNavigationBar.addGestureRecognizer(minimizeGestureRecognizer) @@ -391,16 +396,6 @@ class VideoPlayerViewController: PlayerViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) -#if os(iOS) - let defaults = UserDefaults.standard - if defaults.bool(forKey: kVLCPlayerShouldRememberBrightness) { - if let brightness = defaults.value(forKey: KVLCPlayerBrightness) as? CGFloat { - animateBrightness(to: brightness) - self.brightnessControl.value = Float(brightness) - } - } -#endif - playbackService.recoverDisplayedMetadata() // The video output view is not initialized when the play as audio option was chosen @@ -457,23 +452,8 @@ class VideoPlayerViewController: PlayerViewController { override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) - deviceMotion.stopDeviceMotion() -#if os(iOS) - let defaults = UserDefaults.standard - if defaults.bool(forKey: kVLCPlayerShouldRememberBrightness) { - let currentBrightness = UIScreen.main.brightness - self.brightnessControl.value = Float(currentBrightness) // helper in indicating change in the system brightness - defaults.set(currentBrightness, forKey: KVLCPlayerBrightness) - } - - //set the value of system brightness after closing the app x - //even if the Player Should Remember Brightness option is disabled - animateBrightness(to: systemBrightness!, duration: 0.35) - // remove the observer when the view disappears to avoid breaking the brightness view value - // when the video player is not shown to save the persisted values - removePlayerBrightnessObservers() -#endif + deviceMotion.stopDeviceMotion() } override func viewDidLoad() { @@ -707,51 +687,6 @@ class VideoPlayerViewController: PlayerViewController { titleSelectionView.mainStackView.distribution = isLandscape ? .fillEqually : .fill } -#if os(iOS) - private func addPlayerBrightnessObservers() { - NotificationCenter.default.addObserver( - self, - selector: #selector(systemBrightnessChanged), - name: UIApplication.didBecomeActiveNotification, - object: nil - ) - - NotificationCenter.default.addObserver( - self, - selector: #selector(playerWillResignActive), - name: UIApplication.willResignActiveNotification, - object: nil - ) - - NotificationCenter.default.addObserver( - self, - selector: #selector(playerWillEnterForeground), - name: UIApplication.willEnterForegroundNotification, - object: nil - ) - } - - private func removePlayerBrightnessObservers() { - NotificationCenter.default.removeObserver( - self, - name: UIApplication.didBecomeActiveNotification, - object: nil - ) - - NotificationCenter.default.removeObserver( - self, - name: UIApplication.willResignActiveNotification, - object: nil - ) - - NotificationCenter.default.removeObserver( - self, - name: UIApplication.willEnterForegroundNotification, - object: nil - ) - } -#endif - // MARK: - Private helpers #if os(iOS) -- GitLab From 5dd93509d999ae001b7ec49ab8a01bccfa797559 Mon Sep 17 00:00:00 2001 From: Craig Reyenga <craig.reyenga@gmail.com> Date: Sat, 22 Feb 2025 12:13:07 -0500 Subject: [PATCH 3/3] Further removal of unused code. --- Buildsystem/Testing/UI/VLCTestMenu.swift | 1 - .../Media Library/Editing/EditActions.swift | 21 ------- .../Editing/EditController.swift | 57 +------------------ .../Media Library/Editing/EditToolbar.swift | 1 - .../MediaCategories/AlbumHeader.swift | 2 - .../MediaCategoryViewController.swift | 44 -------------- .../MediaGroupViewModel.swift | 22 ------- .../MediaLibraryBaseModel.swift | 10 ---- .../MediaLibraryModel/PlaylistModel.swift | 28 --------- .../MediaLibraryModel/VideoModel.swift | 2 - .../Media Library/MediaLibraryService.swift | 19 ------- .../Control/VLCPlayerDisplayController.m | 3 +- .../Player/AudioPlayer/AudioPlayerView.swift | 13 ----- .../MiniPlayer-iOS/AudioMiniPlayer.swift | 4 +- .../VideoPlayer-iOS/PlayerController.swift | 6 -- .../Subviews/AddBookmarksView.swift | 2 +- .../Subviews/BookmarksView.swift | 1 - .../Controller/PasscodeLockController.swift | 1 - .../ActionSheetSectionHeader.swift | 3 - .../ActionSheetSortSectionHeader.swift | 1 - .../PagerStripViewController.swift | 3 +- .../VLCPagingViewController.swift | 5 -- VLC.xcodeproj/project.pbxproj | 6 +- 23 files changed, 9 insertions(+), 246 deletions(-) diff --git a/Buildsystem/Testing/UI/VLCTestMenu.swift b/Buildsystem/Testing/UI/VLCTestMenu.swift index 86caa920f..168d9e730 100644 --- a/Buildsystem/Testing/UI/VLCTestMenu.swift +++ b/Buildsystem/Testing/UI/VLCTestMenu.swift @@ -78,6 +78,5 @@ class VLCTestMenu: XCTestCase { helper.tapTabBarItem(VLCAccessibilityIdentifier.settings) app.navigationBars.buttons[VLCAccessibilityIdentifier.about].tap() XCTAssertNotNil(app.navigationBars.buttons[VLCAccessibilityIdentifier.done]) - XCTAssertNotNil(app.navigationBars.buttons[VLCAccessibilityIdentifier.contribute]) } } diff --git a/Sources/Media Library/Editing/EditActions.swift b/Sources/Media Library/Editing/EditActions.swift index 5fd1b8e53..8224a39c0 100644 --- a/Sources/Media Library/Editing/EditActions.swift +++ b/Sources/Media Library/Editing/EditActions.swift @@ -53,27 +53,6 @@ extension EditActions { rootViewController.present(navigationController, animated: true, completion: nil) } - private func createMediaGroup(from mediaGroupIds: [VLCMLIdentifier], - _ completion: ((completionState) -> Void)? = nil) { - let alertInfo = TextFieldAlertInfo(alertTitle: NSLocalizedString("MEDIA_GROUPS", comment: ""), - placeHolder: NSLocalizedString("MEDIA_GROUPS_PLACEHOLDER", - comment: "")) - - presentTextFieldAlert(with: alertInfo) { - [unowned self] text -> Void in - guard text != "" else { - DispatchQueue.main.async { - VLCAlertViewController.alertViewManager(title: NSLocalizedString("ERROR_EMPTY_NAME", - comment: ""), - viewController: self.rootViewController) - completion?(.fail) - } - return - } - self.createMediaGroup(with: text) - } - } - func addToPlaylist(_ completion: ((completionState) -> Void)? = nil) { self.completion = completion if !mediaLibraryService.playlists().isEmpty { diff --git a/Sources/Media Library/Editing/EditController.swift b/Sources/Media Library/Editing/EditController.swift index 1d832e54a..541fa9180 100644 --- a/Sources/Media Library/Editing/EditController.swift +++ b/Sources/Media Library/Editing/EditController.swift @@ -10,14 +10,11 @@ *****************************************************************************/ protocol EditControllerDelegate: AnyObject { - func editController(editController: EditController, cellforItemAt indexPath: IndexPath) -> BaseCollectionViewCell? - func editController(editController: EditController, present viewController: UIViewController) func editControllerDidSelectMultipleItem(editContrller: EditController) func editControllerDidDeSelectMultipleItem() func editControllerDidFinishEditing(editController: EditController?) func editControllerGetCurrentThumbnail() -> UIImage? func editControllerGetAlbumHeaderSize(with width: CGFloat) -> CGSize - func editControllerUpdateNavigationBar(offset: CGFloat) func editControllerSetNavigationItemTitle(with title: String?) func editControllerUpdateIsAllSelected(with allSelected: Bool) } @@ -26,7 +23,6 @@ class EditController: UIViewController { // Cache selectedIndexPath separately to indexPathsForSelectedItems in order to have persistance private var selectedCellIndexPaths = Set<IndexPath>() private let model: MediaLibraryBaseModel - private let mediaLibraryService: MediaLibraryService private let presentingView: UICollectionView private let searchDataSource: LibrarySearchDataSource private(set) var editActions: EditActions @@ -39,8 +35,8 @@ class EditController: UIViewController { init(mediaLibraryService: MediaLibraryService, model: MediaLibraryBaseModel, - presentingView: UICollectionView, searchDataSource: LibrarySearchDataSource) { - self.mediaLibraryService = mediaLibraryService + presentingView: UICollectionView, + searchDataSource: LibrarySearchDataSource) { self.model = model self.presentingView = presentingView self.editActions = EditActions(model: model, mediaLibraryService: mediaLibraryService) @@ -102,55 +98,6 @@ class EditController: UIViewController { // MARK: - Helpers private extension EditController { - private struct TextFieldAlertInfo { - var alertTitle: String - var alertDescription: String - var placeHolder: String - var textfieldText: String - var confirmActionTitle: String - - init(alertTitle: String = "", - alertDescription: String = "", - placeHolder: String = "", - textfieldText: String = "", - confirmActionTitle: String = NSLocalizedString("BUTTON_DONE", comment: "")) { - self.alertTitle = alertTitle - self.alertDescription = alertDescription - self.placeHolder = placeHolder - self.textfieldText = textfieldText - self.confirmActionTitle = confirmActionTitle - } - } - - private func presentTextFieldAlert(with info: TextFieldAlertInfo, - completionHandler: @escaping (String) -> Void) { - let alertController = UIAlertController(title: info.alertTitle, - message: info.alertDescription, - preferredStyle: .alert) - - alertController.addTextField(configurationHandler: { - textField in - textField.text = info.textfieldText - textField.placeholder = info.placeHolder - }) - - let cancelButton = UIAlertAction(title: NSLocalizedString("BUTTON_CANCEL", comment: ""), - style: .cancel) - - - let confirmAction = UIAlertAction(title: info.confirmActionTitle, style: .default) { - [weak alertController] _ in - guard let alertController = alertController, - let textField = alertController.textFields?.first else { return } - completionHandler(textField.text ?? "") - } - - alertController.addAction(cancelButton) - alertController.addAction(confirmAction) - - present(alertController, animated: true, completion: nil) - } - private func getTitle(for count: Int) -> String { var title = "\(count) " if count == 1 { diff --git a/Sources/Media Library/Editing/EditToolbar.swift b/Sources/Media Library/Editing/EditToolbar.swift index d97d91e78..b9b641344 100644 --- a/Sources/Media Library/Editing/EditToolbar.swift +++ b/Sources/Media Library/Editing/EditToolbar.swift @@ -20,7 +20,6 @@ protocol EditToolbarDelegate: AnyObject { } class EditToolbar: UIView { - static let height: CGFloat = 60 weak var delegate: EditToolbarDelegate? private var stackView: UIStackView = { diff --git a/Sources/Media Library/MediaCategories/AlbumHeader.swift b/Sources/Media Library/MediaCategories/AlbumHeader.swift index 11c8366d6..37b38a402 100644 --- a/Sources/Media Library/MediaCategories/AlbumHeader.swift +++ b/Sources/Media Library/MediaCategories/AlbumHeader.swift @@ -25,8 +25,6 @@ class AlbumHeader: UICollectionReusableView { private var playShuffleButton = UIButton(type: .custom) - private var layoutGuide: UILayoutGuide? - // MARK: - Initializers override init(frame: CGRect) { diff --git a/Sources/Media Library/MediaCategories/MediaCategoryViewController.swift b/Sources/Media Library/MediaCategories/MediaCategoryViewController.swift index 43f3eb326..5aa006dbd 100644 --- a/Sources/Media Library/MediaCategories/MediaCategoryViewController.swift +++ b/Sources/Media Library/MediaCategories/MediaCategoryViewController.swift @@ -228,7 +228,6 @@ class MediaCategoryViewController: UICollectionViewController, UISearchBarDelega self.mediaLibraryService = mediaLibraryService let videoModel = VideoModel(medialibrary: mediaLibraryService) - videoModel.secondName = model.name if model is MediaGroupViewModel { self.model = userDefaults.bool(forKey: kVLCSettingsDisableGrouping) ? videoModel : model @@ -1581,16 +1580,6 @@ extension MediaCategoryViewController: ActionSheetSortSectionHeaderDelegate { // MARK: - EditControllerDelegate extension MediaCategoryViewController: EditControllerDelegate { - func editController(editController: EditController, cellforItemAt indexPath: IndexPath) -> BaseCollectionViewCell? { - return collectionView.cellForItem(at: indexPath) as? BaseCollectionViewCell - } - - func editController(editController: EditController, - present viewController: UIViewController) { - let newNavigationController = UINavigationController(rootViewController: viewController) - navigationController?.present(newNavigationController, animated: true, completion: nil) - } - func editControllerDidSelectMultipleItem(editContrller: EditController) { searchBar.isUserInteractionEnabled = false searchBar.alpha = 0.5 @@ -1634,39 +1623,6 @@ extension MediaCategoryViewController: EditControllerDelegate { return albumFlowLayout.getHeaderSize(with: width) } - func editControllerUpdateNavigationBar(offset: CGFloat) { - if let model = model as? CollectionModel, - model.mediaCollection is VLCMLAlbum { - - let backgroundColor: UIColor - if offset >= 50 { - backgroundColor = PresentationTheme.current.colors.background.withAlphaComponent(0.4 * (offset / 100)) - } else { - backgroundColor = .clear - } - - if #available(iOS 13.0, *) { - let standardAppearance = navigationItem.standardAppearance - let scrollEdgeAppearance = navigationItem.scrollEdgeAppearance - standardAppearance?.backgroundColor = backgroundColor - scrollEdgeAppearance?.backgroundColor = backgroundColor - } - - if let albumHeader = albumHeader, - let navBar = navigationController?.navigationBar { - let padding = statusBarView.frame.maxY + navBar.frame.maxY - let hideNavigationBarTitle: Bool - if offset >= albumHeader.frame.maxY - padding { - hideNavigationBarTitle = false - } else { - hideNavigationBarTitle = true - } - - navigationItem.titleView?.isHidden = hideNavigationBarTitle - } - } - } - func editControllerSetNavigationItemTitle(with title: String?) { var newTitle = title diff --git a/Sources/Media Library/MediaLibraryModel/MediaGroupViewModel.swift b/Sources/Media Library/MediaLibraryModel/MediaGroupViewModel.swift index 43bdd193d..2bf3660ea 100644 --- a/Sources/Media Library/MediaLibraryModel/MediaGroupViewModel.swift +++ b/Sources/Media Library/MediaLibraryModel/MediaGroupViewModel.swift @@ -115,28 +115,6 @@ class MediaGroupViewModel: MLBaseModel { } return true } - - func create(with name: String, from mediaContent: [VLCMLMedia]) -> Bool { - let originIds = originMediaGroupsIds(from: mediaContent) - return create(with: name, from: originIds, content: mediaContent) - } - - func unGroupMedia(_ media: [VLCMLMedia], from originMediaGroup: VLCMLMediaGroup) -> Bool { - for medium in media { - medium.removeFromGroup() - guard let newGroup = medialibrary.medialib.createMediaGroup(withName: medium.title) else { - return false - } - newGroup.add(medium) - } - if originMediaGroup.nbTotalMedia() == 0 { - fileArrayQueue.sync { - filterFilesFromDeletion(of: [originMediaGroup]) - } - medialibrary.medialib.deleteMediaGroup(withIdentifier: originMediaGroup.identifier()) - } - return true - } } extension VLCMLMediaGroup { diff --git a/Sources/Media Library/MediaLibraryModel/MediaLibraryBaseModel.swift b/Sources/Media Library/MediaLibraryModel/MediaLibraryBaseModel.swift index 34360210d..e8a969265 100644 --- a/Sources/Media Library/MediaLibraryModel/MediaLibraryBaseModel.swift +++ b/Sources/Media Library/MediaLibraryModel/MediaLibraryBaseModel.swift @@ -28,7 +28,6 @@ protocol MediaLibraryBaseModel { var indicatorName: String { get } var cellType: BaseCollectionViewCell.Type { get } - func anyAppend(_ item: VLCMLObject) func anyDelete(_ items: [VLCMLObject]) func sort(by criteria: VLCMLSortingCriteria, desc: Bool) @@ -46,8 +45,6 @@ protocol MLBaseModel: AnyObject, MediaLibraryBaseModel { var medialibrary: MediaLibraryService { get } - var observable: Observable<MediaLibraryBaseModelObserver> { get } - var indicatorName: String { get } func append(_ item: MLType) @@ -60,13 +57,6 @@ extension MLBaseModel { return files } - func anyAppend(_ item: VLCMLObject) { - guard let item = item as? MLType else { - preconditionFailure("MLBaseModel: Wrong underlying ML type.") - } - append(item) - } - func anyDelete(_ items: [VLCMLObject]) { guard let items = items as? [MLType] else { preconditionFailure("MLBaseModel: Wrong underlying ML type.") diff --git a/Sources/Media Library/MediaLibraryModel/PlaylistModel.swift b/Sources/Media Library/MediaLibraryModel/PlaylistModel.swift index 25c1e9732..51cca785d 100644 --- a/Sources/Media Library/MediaLibraryModel/PlaylistModel.swift +++ b/Sources/Media Library/MediaLibraryModel/PlaylistModel.swift @@ -81,34 +81,6 @@ class PlaylistModel: MLBaseModel { $0.mediaLibraryBaseModelReloadView() } } - - // Creates a VLCMLPlaylist appending it and updates linked view - func create(name: String) { - guard let playlist = medialibrary.createPlaylist(with: name) else { - assertionFailure("PlaylistModel: create: Failed to create a playlist.") - return - } - append(playlist) - observable.notifyObservers { - $0.mediaLibraryBaseModelReloadView() - } - } -} - -// MARK: - Sort -extension PlaylistModel { - func sort(by criteria: VLCMLSortingCriteria, desc: Bool) { - defer { - fileArrayLock.unlock() - } - fileArrayLock.lock() - files = medialibrary.playlists(sortingCriteria: criteria, desc: desc) - sortModel.currentSort = criteria - sortModel.desc = desc - observable.notifyObservers { - $0.mediaLibraryBaseModelReloadView() - } - } } // MARK: - Search diff --git a/Sources/Media Library/MediaLibraryModel/VideoModel.swift b/Sources/Media Library/MediaLibraryModel/VideoModel.swift index d438d50f4..85f21c914 100644 --- a/Sources/Media Library/MediaLibraryModel/VideoModel.swift +++ b/Sources/Media Library/MediaLibraryModel/VideoModel.swift @@ -27,8 +27,6 @@ class VideoModel: MediaModel { var name: String = "ALL_VIDEOS" - var secondName: String = "" - var indicatorName: String = NSLocalizedString("ALL_VIDEOS", comment: "") required init(medialibrary: MediaLibraryService) { diff --git a/Sources/Media Library/MediaLibraryService.swift b/Sources/Media Library/MediaLibraryService.swift index 4a218f2e7..d920c1f1b 100644 --- a/Sources/Media Library/MediaLibraryService.swift +++ b/Sources/Media Library/MediaLibraryService.swift @@ -139,8 +139,6 @@ class MediaLibraryService: NSObject { private static let didForceRescan: String = "MediaLibraryDidForceRescan" private var triedToRecoverFromInitializationErrorOnce = false - private var didFinishDiscovery = false - private var desiredThumbnailWidth = UInt(320) private var desiredThumbnailHeight = UInt(200) @@ -678,23 +676,6 @@ extension MediaLibraryService { } } -// MARK: - VLCMediaLibraryDelegate - Discovery - -extension MediaLibraryService { - func medialibrary(_ medialibrary: VLCMediaLibrary, didStartDiscovery entryPoint: String) { - } - - func medialibrary(_ medialibrary: VLCMediaLibrary, didCompleteDiscovery entryPoint: String) { - didFinishDiscovery = true - } - - func medialibrary(_ medialibrary: VLCMediaLibrary, didProgressDiscovery entryPoint: String) { - } - - func medialibrary(_ medialibrary: VLCMediaLibrary, didUpdateParsingStatsWithPercent percent: UInt32) { - } -} - // MARK: - VLCMediaLibraryDelegate - Exception handling extension MediaLibraryService { diff --git a/Sources/Playback/Control/VLCPlayerDisplayController.m b/Sources/Playback/Control/VLCPlayerDisplayController.m index 0ce8275dc..fc92640cb 100644 --- a/Sources/Playback/Control/VLCPlayerDisplayController.m +++ b/Sources/Playback/Control/VLCPlayerDisplayController.m @@ -449,8 +449,7 @@ NSString *const VLCPlayerDisplayControllerHideMiniPlayer = @"VLCPlayerDisplayCon UIViewController *rootViewController = [[[UIApplication sharedApplication] delegate] window].rootViewController; // Until VideoMiniPlayer is integrated, only AudioMiniPlayer is used. - self.miniPlaybackView = miniPlaybackView = [[VLCAudioMiniPlayer alloc] initWithService:[VLCAppCoordinator sharedInstance].mediaLibraryService - draggingDelegate:self]; + self.miniPlaybackView = miniPlaybackView = [[VLCAudioMiniPlayer alloc] initWithDraggingDelegate:self]; if (!_queueViewController) { [self initQueueViewController]; } diff --git a/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift b/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift index f9ac9b76e..bd67bee38 100644 --- a/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift +++ b/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift @@ -166,8 +166,6 @@ class AudioPlayerView: UIView, UIGestureRecognizerDelegate { lazy var progressionView: UIView = UIView() - private var thumbnailImageViewWidthConstant: CGFloat = 270.0 - private lazy var progressionViewBottomConstant: CGFloat = { #if os(iOS) let isSmallerScreen: Bool = UIScreen.main.bounds.width <= DeviceDimensions.iPhone4sPortrait.rawValue @@ -244,17 +242,6 @@ class AudioPlayerView: UIView, UIGestureRecognizerDelegate { artistLabel.textColor = .white } - func setupPlayqueueView(with qvc: UIView) { - playqueueView.addSubview(qvc) - playqueueView.bringSubviewToFront(qvc) - NSLayoutConstraint.activate([ - qvc.topAnchor.constraint(equalTo: playqueueView.topAnchor), - qvc.leadingAnchor.constraint(equalTo: playqueueView.leadingAnchor), - qvc.trailingAnchor.constraint(equalTo: playqueueView.trailingAnchor), - qvc.bottomAnchor.constraint(equalTo: playqueueView.bottomAnchor) - ]) - } - func setupProgressView(with view: MediaScrubProgressBar) { view.translatesAutoresizingMaskIntoConstraints = false progressionView.addSubview(view) diff --git a/Sources/Playback/Player/MiniPlayer-iOS/AudioMiniPlayer.swift b/Sources/Playback/Player/MiniPlayer-iOS/AudioMiniPlayer.swift index 961431cc9..41c96f2a1 100644 --- a/Sources/Playback/Player/MiniPlayer-iOS/AudioMiniPlayer.swift +++ b/Sources/Playback/Player/MiniPlayer-iOS/AudioMiniPlayer.swift @@ -61,7 +61,6 @@ class AudioMiniPlayer: UIView, MiniPlayer, QueueViewControllerDelegate { private let animationDuration = 0.2 - private var mediaService: MediaLibraryService private lazy var playbackService = PlaybackService.sharedInstance() private var queueViewController: QueueViewController? @@ -79,8 +78,7 @@ class AudioMiniPlayer: UIView, MiniPlayer, QueueViewControllerDelegate { } } - @objc init(service: MediaLibraryService, draggingDelegate: MiniPlayerDraggingDelegate) { - self.mediaService = service + @objc init(draggingDelegate: MiniPlayerDraggingDelegate) { self.draggingDelegate = draggingDelegate super.init(frame: .zero) initView() diff --git a/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift b/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift index 2d88941c7..261fc9c25 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift @@ -32,14 +32,8 @@ class PlayerController: NSObject { var isInterfaceLocked: Bool = false - var isTapSeeking: Bool = false - // MARK: - UserDefaults computed properties getters - var displayRemainingTime: Bool { - return UserDefaults.standard.bool(forKey: kVLCShowRemainingTime) - } - var isVolumeGestureEnabled: Bool { return UserDefaults.standard.bool(forKey: kVLCSettingVolumeGesture) } diff --git a/Sources/Playback/Player/VideoPlayer-iOS/Subviews/AddBookmarksView.swift b/Sources/Playback/Player/VideoPlayer-iOS/Subviews/AddBookmarksView.swift index 0a1a6dab0..13aca341a 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/Subviews/AddBookmarksView.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/Subviews/AddBookmarksView.swift @@ -25,7 +25,7 @@ class AddBookmarksView: UIView { private var bookmarksTableView: UITableView = UITableView() - weak var delegate: BookmarksView? + weak var delegate: AddBookmarksViewDelegate? init(frame: CGRect, tableView: UITableView) { super.init(frame: frame) diff --git a/Sources/Playback/Player/VideoPlayer-iOS/Subviews/BookmarksView.swift b/Sources/Playback/Player/VideoPlayer-iOS/Subviews/BookmarksView.swift index 5a42bc5a0..3d8baefd9 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/Subviews/BookmarksView.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/Subviews/BookmarksView.swift @@ -16,7 +16,6 @@ protocol BookmarksViewDelegate: AnyObject { func bookmarksViewDidSelectBookmark(value: Float) func bookmarksViewShouldDisableGestures(_ disable: Bool) func bookmarksViewDisplayAlert(action: BookmarkActionIdentifier, index: Int, isEditing: Bool) - func bookmarksViewOpenBookmarksView() func bookmarksViewOpenAddBookmarksView() func bookmarksViewCloseAddBookmarksView() } diff --git a/Sources/Settings/Controller/PasscodeLockController.swift b/Sources/Settings/Controller/PasscodeLockController.swift index 6bfedb1a3..dc76f7855 100644 --- a/Sources/Settings/Controller/PasscodeLockController.swift +++ b/Sources/Settings/Controller/PasscodeLockController.swift @@ -24,7 +24,6 @@ enum PasscodeAction { class PasscodeLockController: UIViewController { // - MARK: Properties - private let userDefaults = UserDefaults.standard private let notificationCenter = NotificationCenter.default let action: PasscodeAction diff --git a/Sources/UI Elements/ActionSheet/ActionSheetSectionHeader.swift b/Sources/UI Elements/ActionSheet/ActionSheetSectionHeader.swift index 8e86f759d..ed4adfc66 100644 --- a/Sources/UI Elements/ActionSheet/ActionSheetSectionHeader.swift +++ b/Sources/UI Elements/ActionSheet/ActionSheetSectionHeader.swift @@ -10,9 +10,6 @@ *****************************************************************************/ class ActionSheetSectionHeader: UIView { - - static let identifier = "VLCActionSheetSectionHeader" - public var accessoryViewsDelegate: ActionSheetAccessoryViewsDelegate? { didSet { addAccessoryViews() diff --git a/Sources/UI Elements/ActionSheet/ActionSheetSortSectionHeader.swift b/Sources/UI Elements/ActionSheet/ActionSheetSortSectionHeader.swift index e8a6809e1..5ae442846 100644 --- a/Sources/UI Elements/ActionSheet/ActionSheetSortSectionHeader.swift +++ b/Sources/UI Elements/ActionSheet/ActionSheetSortSectionHeader.swift @@ -29,7 +29,6 @@ class ActionSheetSortSectionHeader: ActionSheetSectionHeader { } private var sortModel: SortModel - private let userDefaults = UserDefaults.standard private var isAdditionalOptionShown: Bool = false private let descendingStackView: UIStackView = { diff --git a/Sources/UI Elements/View Controller/PagerStripViewController.swift b/Sources/UI Elements/View Controller/PagerStripViewController.swift index d099ae598..6f2a8310a 100644 --- a/Sources/UI Elements/View Controller/PagerStripViewController.swift +++ b/Sources/UI Elements/View Controller/PagerStripViewController.swift @@ -229,8 +229,7 @@ class PagerTabStripViewController: UIViewController, UIScrollViewDelegate { preCurrentIndex = currentIndex let changeCurrentIndex = newCurrentIndex != oldCurrentIndex - if let progressiveDelegate = self as? PagerTabStripIsProgressiveDelegate { - + if let progressiveDelegate = delegate { let (fromIndex, toIndex, scrollPercentage) = progressiveIndicatorData(virtualPage) progressiveDelegate.updateIndicator(for: self, fromIndex: fromIndex, toIndex: toIndex, withProgressPercentage: scrollPercentage, indexWasChanged: changeCurrentIndex) } diff --git a/Sources/UI Elements/View Controller/VLCPagingViewController.swift b/Sources/UI Elements/View Controller/VLCPagingViewController.swift index f55e99dc4..3e06f50f3 100644 --- a/Sources/UI Elements/View Controller/VLCPagingViewController.swift +++ b/Sources/UI Elements/View Controller/VLCPagingViewController.swift @@ -176,11 +176,6 @@ class VLCPagingViewController<ButtonBarCellType: UICollectionViewCell>: PagerTab return calculateStretchedCellWidths(minimumCellWidths, suggestedStretchedCellWidth: newSuggestedStretchedCellWidth, previousNumberOfLargeCells: numberOfLargeCells) } - func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int) { - guard shouldUpdateButtonBarView else { return } - buttonBarView.moveTo(index: toIndex, animated: true, swipeDirection: toIndex < fromIndex ? .right : .left, pagerScroll: .yes) - } - func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool) { guard shouldUpdateButtonBarView else { return } buttonBarView.move(fromIndex: fromIndex, toIndex: toIndex, progressPercentage: progressPercentage, pagerScroll: .yes) diff --git a/VLC.xcodeproj/project.pbxproj b/VLC.xcodeproj/project.pbxproj index c58720618..8b9e6c63f 100644 --- a/VLC.xcodeproj/project.pbxproj +++ b/VLC.xcodeproj/project.pbxproj @@ -5117,7 +5117,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = Buildsystem/Testing/Unit/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.4; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -5160,7 +5160,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = Buildsystem/Testing/Unit/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.4; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -5202,7 +5202,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = Buildsystem/Testing/Unit/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.4; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", -- GitLab