From 60ccfdb6247208e54fd924eff867ae39b09c1090 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Fri, 10 Jul 2020 14:42:57 +0200 Subject: [PATCH 01/55] Bump version and build numbers --- PlaySRG.xcodeproj/project.pbxproj | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/PlaySRG.xcodeproj/project.pbxproj b/PlaySRG.xcodeproj/project.pbxproj index b66f193fa..da3bd045f 100644 --- a/PlaySRG.xcodeproj/project.pbxproj +++ b/PlaySRG.xcodeproj/project.pbxproj @@ -7457,7 +7457,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 338; + CURRENT_PROJECT_VERSION = 339; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -7476,7 +7476,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MARKETING_VERSION = 3.1.0; + MARKETING_VERSION = 3.1.1; MARKETING_VERSION_SUFFIX = "-debug"; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; @@ -7525,7 +7525,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 338; + CURRENT_PROJECT_VERSION = 339; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -7538,7 +7538,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MARKETING_VERSION = 3.1.0; + MARKETING_VERSION = 3.1.1; MARKETING_VERSION_SUFFIX = ""; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; @@ -7870,7 +7870,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 338; + CURRENT_PROJECT_VERSION = 339; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -7884,7 +7884,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MARKETING_VERSION = 3.1.0; + MARKETING_VERSION = 3.1.1; MARKETING_VERSION_SUFFIX = "-beta"; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; @@ -8077,7 +8077,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 338; + CURRENT_PROJECT_VERSION = 339; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -8091,7 +8091,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MARKETING_VERSION = 3.1.0; + MARKETING_VERSION = 3.1.1; MARKETING_VERSION_SUFFIX = "-nightly"; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; From b9eb5508b0a9686c7ec6c651b778d9034d8c5f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 9 Jul 2020 19:37:04 +0200 Subject: [PATCH 02/55] Always hide togglable controls when entering full screen This fixes #155. --- .../Player/MediaPlayerViewController.m | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/Application/Sources/Player/MediaPlayerViewController.m b/Application/Sources/Player/MediaPlayerViewController.m index c9072222b..209210714 100755 --- a/Application/Sources/Player/MediaPlayerViewController.m +++ b/Application/Sources/Player/MediaPlayerViewController.m @@ -609,11 +609,8 @@ - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id size.height); [self.letterboxView setFullScreen:isLandscape animated:NO /* will be animated with the view transition */]; - if (isLandscape && self.letterboxView.userInterfaceTogglable - && ! UIAccessibilityIsVoiceOverRunning() - && self.letterboxController.playbackState != SRGMediaPlayerPlaybackStatePaused - && self.letterboxController.playbackState != SRGMediaPlayerPlaybackStateEnded) { - [self.letterboxView setUserInterfaceHidden:YES animated:NO /* will be animated with the view transition */]; + if (isLandscape) { + [self hidePlayerUserInterfaceAnimated:NO /* will be animated with the view transition */]; } } [self scrollToNearestProgramAnimated:NO]; @@ -1083,6 +1080,16 @@ - (void)setFullScreen:(BOOL)fullScreen [self setNeedsStatusBarAppearanceUpdate]; } +- (void)hidePlayerUserInterfaceAnimated:(BOOL)animated +{ + if (self.letterboxView.userInterfaceTogglable + && ! UIAccessibilityIsVoiceOverRunning() + && self.letterboxController.playbackState != SRGMediaPlayerPlaybackStatePaused + && self.letterboxController.playbackState != SRGMediaPlayerPlaybackStateEnded) { + [self.letterboxView setUserInterfaceHidden:YES animated:animated]; + } +} + - (void)setDetailsExpanded:(BOOL)expanded animated:(BOOL)animated { if (self.detailsExpanded == expanded) { @@ -1570,6 +1577,10 @@ - (void)letterboxView:(SRGLetterboxView *)letterboxView toggleFullScreen:(BOOL)f [self setFullScreen:fullScreen]; [self updateTimelineVisibilityForFullScreen:fullScreen animated:NO]; [self updateSongPanelFor:self.traitCollection fullScreen:fullScreen]; + + if (fullScreen) { + [self hidePlayerUserInterfaceAnimated:NO]; + } }; void (^completion)(BOOL) = ^(BOOL finished) { From 77f3a676e3faf74957aa6f351f05b9bda6c57734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 9 Jul 2020 20:44:43 +0200 Subject: [PATCH 03/55] Pop to root when opening the active section again (e.g. tap current cell again) --- Application/Sources/Library/ProfileViewController.m | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Application/Sources/Library/ProfileViewController.m b/Application/Sources/Library/ProfileViewController.m index 901407596..3a1c667a2 100755 --- a/Application/Sources/Library/ProfileViewController.m +++ b/Application/Sources/Library/ProfileViewController.m @@ -230,8 +230,16 @@ - (BOOL)openApplicationSectionInfo:(ApplicationSectionInfo *)applicationSectionI return NO; } - // Do not reload a section if already the current one + // Do not reload a section if already the current one (just return to the navigation root if possible) if (! self.splitViewController.collapsed && [applicationSectionInfo isEqual:self.currentSectionInfo]) { + NSArray *viewControllers = self.splitViewController.viewControllers; + if (viewControllers.count == 2) { + UIViewController *detailViewController = viewControllers[1]; + if ([detailViewController isKindOfClass:UINavigationController.class]) { + UINavigationController *detailNavigationController = (UINavigationController *)detailViewController; + [detailNavigationController popToRootViewControllerAnimated:animated]; + } + } return YES; } From 6160a6cbfc2663df0febbd4b4361a1b738337b2b Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 27 Jul 2020 20:15:42 +0200 Subject: [PATCH 04/55] Update dependencies with MP fixies --- .../com.mono0926.LicensePlist.latest_result.txt | 6 +++--- .../Settings.bundle/com.mono0926.LicensePlist.plist | 6 +++--- Cartfile | 2 +- Cartfile.resolved.proprietary | 6 +++--- Cartfile.resolved.public | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt index f7491a38f..534db9623 100755 --- a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt +++ b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt @@ -450,7 +450,7 @@ name: Mantle, nameSpecified: , owner: Mantle, version: 2.1.1 name: Masonry, nameSpecified: , owner: SRGSSR, version: v1.1.0_srg1 -name: srganalytics-apple, nameSpecified: , owner: SRGSSR, version: 4.2.0 +name: srganalytics-apple, nameSpecified: , owner: SRGSSR, version: 6034917 name: srgappearance-apple, nameSpecified: , owner: SRGSSR, version: 2.1.0 @@ -462,11 +462,11 @@ name: srgdiagnostics-apple, nameSpecified: , owner: SRGSSR, version: 2.0.1 name: srgidentity-apple, nameSpecified: , owner: SRGSSR, version: 2.0.3 -name: srgletterbox-apple, nameSpecified: , owner: SRGSSR, version: 5.0.0 +name: srgletterbox-apple, nameSpecified: , owner: SRGSSR, version: 3b56223 name: srglogger-apple, nameSpecified: , owner: SRGSSR, version: 2.0.1 -name: srgmediaplayer-apple, nameSpecified: , owner: SRGSSR, version: 5.0.0 +name: srgmediaplayer-apple, nameSpecified: , owner: SRGSSR, version: 887a066 name: srgnetwork-apple, nameSpecified: , owner: SRGSSR, version: 2.0.2 diff --git a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist index 915525486..afa7b08af 100755 --- a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist +++ b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist @@ -248,7 +248,7 @@ File com.mono0926.LicensePlist/srganalytics-apple Title - srganalytics-apple (4.2.0) + srganalytics-apple (6034917) Type PSChildPaneSpecifier @@ -296,7 +296,7 @@ File com.mono0926.LicensePlist/srgletterbox-apple Title - srgletterbox-apple (5.0.0) + srgletterbox-apple (3b56223) Type PSChildPaneSpecifier @@ -312,7 +312,7 @@ File com.mono0926.LicensePlist/srgmediaplayer-apple Title - srgmediaplayer-apple (5.0.0) + srgmediaplayer-apple (887a066) Type PSChildPaneSpecifier diff --git a/Cartfile b/Cartfile index fc65cfd1b..dacd6a2ab 100755 --- a/Cartfile +++ b/Cartfile @@ -6,5 +6,5 @@ github "microsoft/appcenter-sdk-apple" ~> 3.1.0 github "SRGSSR/DZNEmptyDataSet" "v1.8.1_srg1" github "SRGSSR/Masonry" "v1.1.0_srg1" github "urbanairship/ios-library" ~> 13.3.2 -github "SRGSSR/srgletterbox-apple" "5.0.0" +github "SRGSSR/srgletterbox-apple" "3b5622388e81acd88dd3398420b5159e53694c6b" github "SRGSSR/srguserdata-apple" "2.0.3" diff --git a/Cartfile.resolved.proprietary b/Cartfile.resolved.proprietary index 8487554d8..e98732a59 100755 --- a/Cartfile.resolved.proprietary +++ b/Cartfile.resolved.proprietary @@ -9,15 +9,15 @@ github "SRGSSR/Masonry" "v1.1.0_srg1" github "SRGSSR/UICKeyChainStore" "v2.1.2_srg1" github "SRGSSR/YYWebImage" "1.0.5_srg2" github "SRGSSR/libextobjc" "0.6_srg2" -github "SRGSSR/srganalytics-apple" "4.2.0" +github "SRGSSR/srganalytics-apple" "6034917d324332b61123c94fd7bed59ee957f9d7" github "SRGSSR/srgappearance-apple" "2.1.0" github "SRGSSR/srgcontentprotection-apple" "2.0.2" github "SRGSSR/srgdataprovider-apple" "8.0.0" github "SRGSSR/srgdiagnostics-apple" "2.0.1" github "SRGSSR/srgidentity-apple" "2.0.3" -github "SRGSSR/srgletterbox-apple" "5.0.0" +github "SRGSSR/srgletterbox-apple" "3b5622388e81acd88dd3398420b5159e53694c6b" github "SRGSSR/srglogger-apple" "2.0.1" -github "SRGSSR/srgmediaplayer-apple" "5.0.0" +github "SRGSSR/srgmediaplayer-apple" "887a066d3d207e68701885d0833ccdcb04f32d16" github "SRGSSR/srgnetwork-apple" "2.0.2" github "SRGSSR/srguserdata-apple" "2.0.3" github "SRGSSR/tagcommander-apple" "4.5.4_4.4.1_srg3" diff --git a/Cartfile.resolved.public b/Cartfile.resolved.public index eed80646b..0596d818d 100755 --- a/Cartfile.resolved.public +++ b/Cartfile.resolved.public @@ -9,15 +9,15 @@ github "SRGSSR/Masonry" "v1.1.0_srg1" github "SRGSSR/UICKeyChainStore" "v2.1.2_srg1" github "SRGSSR/YYWebImage" "1.0.5_srg2" github "SRGSSR/libextobjc" "0.6_srg2" -github "SRGSSR/srganalytics-apple" "4.2.0" +github "SRGSSR/srganalytics-apple" "6034917d324332b61123c94fd7bed59ee957f9d7" github "SRGSSR/srgappearance-apple" "2.1.0" github "SRGSSR/srgcontentprotection-fake-apple" "2.0.2" github "SRGSSR/srgdataprovider-apple" "8.0.0" github "SRGSSR/srgdiagnostics-apple" "2.0.1" github "SRGSSR/srgidentity-apple" "2.0.3" -github "SRGSSR/srgletterbox-apple" "5.0.0" +github "SRGSSR/srgletterbox-apple" "3b5622388e81acd88dd3398420b5159e53694c6b" github "SRGSSR/srglogger-apple" "2.0.1" -github "SRGSSR/srgmediaplayer-apple" "5.0.0" +github "SRGSSR/srgmediaplayer-apple" "887a066d3d207e68701885d0833ccdcb04f32d16" github "SRGSSR/srgnetwork-apple" "2.0.2" github "SRGSSR/srguserdata-apple" "2.0.3" github "SRGSSR/tagcommander-apple" "4.5.4_4.4.1_srg3" From 589650192f68e6156a021e41dcfee180b57f42d6 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 27 Jul 2020 20:26:54 +0200 Subject: [PATCH 05/55] Update AppCenter dependency --- .../Settings.bundle/com.mono0926.LicensePlist.latest_result.txt | 2 +- .../Resources/Settings.bundle/com.mono0926.LicensePlist.plist | 2 +- Cartfile.resolved.proprietary | 2 +- Cartfile.resolved.public | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt index 534db9623..582d78251 100755 --- a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt +++ b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt @@ -430,7 +430,7 @@ version: 7.0.1 name: Aiolos, nameSpecified: , owner: IdeasOnCanvas, version: 1.3.0 -name: appcenter-sdk-apple, nameSpecified: , owner: microsoft, version: 3.3.1 +name: appcenter-sdk-apple, nameSpecified: , owner: microsoft, version: 3.3.2 name: CoconutKit, nameSpecified: , owner: defagos, version: 3.4 diff --git a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist index afa7b08af..735717cb4 100755 --- a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist +++ b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist @@ -16,7 +16,7 @@ File com.mono0926.LicensePlist/appcenter-sdk-apple Title - appcenter-sdk-apple (3.3.1) + appcenter-sdk-apple (3.3.2) Type PSChildPaneSpecifier diff --git a/Cartfile.resolved.proprietary b/Cartfile.resolved.proprietary index e98732a59..dd2618e98 100755 --- a/Cartfile.resolved.proprietary +++ b/Cartfile.resolved.proprietary @@ -23,5 +23,5 @@ github "SRGSSR/srguserdata-apple" "2.0.3" github "SRGSSR/tagcommander-apple" "4.5.4_4.4.1_srg3" github "defagos/CoconutKit" "3.4" github "mapbox/Fingertips" "cdffabac5506103a2c7cc5aedeed4021df2501da" -github "microsoft/appcenter-sdk-apple" "3.3.1" github "urbanairship/ios-library" "13.4.0" +github "microsoft/appcenter-sdk-apple" "3.3.2" diff --git a/Cartfile.resolved.public b/Cartfile.resolved.public index 0596d818d..1dbd34e5d 100755 --- a/Cartfile.resolved.public +++ b/Cartfile.resolved.public @@ -23,5 +23,5 @@ github "SRGSSR/srguserdata-apple" "2.0.3" github "SRGSSR/tagcommander-apple" "4.5.4_4.4.1_srg3" github "defagos/CoconutKit" "3.4" github "mapbox/Fingertips" "cdffabac5506103a2c7cc5aedeed4021df2501da" -github "microsoft/appcenter-sdk-apple" "3.3.1" github "urbanairship/ios-library" "13.4.0" +github "microsoft/appcenter-sdk-apple" "3.3.2" From a74a77a1404d8d0b62c359e4ab44152e19e645f5 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 27 Jul 2020 20:27:36 +0200 Subject: [PATCH 06/55] Update AirShip dependency --- .../Settings.bundle/com.mono0926.LicensePlist.latest_result.txt | 2 +- .../Resources/Settings.bundle/com.mono0926.LicensePlist.plist | 2 +- Cartfile.resolved.proprietary | 2 +- Cartfile.resolved.public | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt index 582d78251..46b66a448 100755 --- a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt +++ b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt @@ -440,7 +440,7 @@ name: DZNEmptyDataSet, nameSpecified: , owner: SRGSSR, version: v1.8.1_srg1 name: FXReachability, nameSpecified: , owner: SRGSSR, version: 1.3.2_srg4 -name: ios-library, nameSpecified: , owner: urbanairship, version: 13.4.0 +name: ios-library, nameSpecified: , owner: urbanairship, version: 13.5.1 name: libextobjc, nameSpecified: , owner: SRGSSR, version: 0.6_srg2 diff --git a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist index 735717cb4..d795ab085 100755 --- a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist +++ b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist @@ -160,7 +160,7 @@ File com.mono0926.LicensePlist/ios-library Title - ios-library (13.4.0) + ios-library (13.5.1) Type PSChildPaneSpecifier diff --git a/Cartfile.resolved.proprietary b/Cartfile.resolved.proprietary index dd2618e98..18e4ba74d 100755 --- a/Cartfile.resolved.proprietary +++ b/Cartfile.resolved.proprietary @@ -23,5 +23,5 @@ github "SRGSSR/srguserdata-apple" "2.0.3" github "SRGSSR/tagcommander-apple" "4.5.4_4.4.1_srg3" github "defagos/CoconutKit" "3.4" github "mapbox/Fingertips" "cdffabac5506103a2c7cc5aedeed4021df2501da" -github "urbanairship/ios-library" "13.4.0" github "microsoft/appcenter-sdk-apple" "3.3.2" +github "urbanairship/ios-library" "13.5.1" diff --git a/Cartfile.resolved.public b/Cartfile.resolved.public index 1dbd34e5d..0fbc44832 100755 --- a/Cartfile.resolved.public +++ b/Cartfile.resolved.public @@ -23,5 +23,5 @@ github "SRGSSR/srguserdata-apple" "2.0.3" github "SRGSSR/tagcommander-apple" "4.5.4_4.4.1_srg3" github "defagos/CoconutKit" "3.4" github "mapbox/Fingertips" "cdffabac5506103a2c7cc5aedeed4021df2501da" -github "urbanairship/ios-library" "13.4.0" github "microsoft/appcenter-sdk-apple" "3.3.2" +github "urbanairship/ios-library" "13.5.1" From 4eabcbf7512eeabe6cef1c23f68b1f537b9ddea2 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 27 Jul 2020 20:54:36 +0200 Subject: [PATCH 07/55] Fastlane: Use Xcode 11.x to build apps --- Gemfile | 1 + Gemfile.lock | 38 +++++++++++++++++++++----------------- fastlane/Fastfile | 3 +++ 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/Gemfile b/Gemfile index ea0afbf80..5d378ba3b 100644 --- a/Gemfile +++ b/Gemfile @@ -7,6 +7,7 @@ source 'https://rubygems.org' gem 'fastlane' +gem 'xcode-install' plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') eval_gemfile(plugins_path) if File.exist?(plugins_path) diff --git a/Gemfile.lock b/Gemfile.lock index b0521994d..b14ceb907 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,8 +6,8 @@ GEM public_suffix (>= 2.0.2, < 5.0) atomos (0.1.3) aws-eventstream (1.1.0) - aws-partitions (1.340.0) - aws-sdk-core (3.103.0) + aws-partitions (1.345.0) + aws-sdk-core (3.104.3) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.239.0) aws-sigv4 (~> 1.1) @@ -15,8 +15,8 @@ GEM aws-sdk-kms (1.36.0) aws-sdk-core (~> 3, >= 3.99.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.74.0) - aws-sdk-core (~> 3, >= 3.102.1) + aws-sdk-s3 (1.75.0) + aws-sdk-core (~> 3, >= 3.104.1) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.1) aws-sigv4 (1.2.1) @@ -33,9 +33,9 @@ GEM rake (~> 13.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - dotenv (2.7.5) + dotenv (2.7.6) emoji_regex (3.0.0) - excon (0.75.0) + excon (0.76.0) faraday (1.0.1) multipart-post (>= 1.2, < 3) faraday-cookie_jar (0.0.6) @@ -43,8 +43,8 @@ GEM http-cookie (~> 1.0.0) faraday_middleware (1.0.0) faraday (~> 1.0) - fastimage (2.1.7) - fastlane (2.151.2) + fastimage (2.2.0) + fastlane (2.153.1) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.3, < 3.0.0) aws-sdk-s3 (~> 1.0) @@ -55,9 +55,9 @@ GEM dotenv (>= 2.1.1, < 3.0.0) emoji_regex (>= 0.1, < 4.0) excon (>= 0.71.0, < 1.0.0) - faraday (>= 0.17, < 2.0) + faraday (~> 1.0) faraday-cookie_jar (~> 0.0.6) - faraday_middleware (>= 0.13.1, < 2.0) + faraday_middleware (~> 1.0) fastimage (>= 2.1.0, < 3.0.0) gh_inspector (>= 1.1.2, < 2.0.0) google-api-client (>= 0.37.0, < 0.39.0) @@ -80,7 +80,7 @@ GEM xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) - fastlane-plugin-appcenter (1.8.0) + fastlane-plugin-appcenter (1.9.0) gh_inspector (1.1.3) google-api-client (0.38.0) addressable (~> 2.5, >= 2.5.1) @@ -93,7 +93,7 @@ GEM google-cloud-core (1.5.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) - google-cloud-env (1.3.2) + google-cloud-env (1.3.3) faraday (>= 0.17.3, < 2.0) google-cloud-errors (1.0.1) google-cloud-storage (1.26.2) @@ -120,9 +120,9 @@ GEM memoist (0.16.2) mini_magick (4.10.1) mini_mime (1.0.2) - multi_json (1.14.1) + multi_json (1.15.0) multipart-post (2.0.0) - nanaimo (0.2.6) + nanaimo (0.3.0) naturally (2.2.0) os (1.1.0) plist (3.5.0) @@ -149,7 +149,7 @@ GEM terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) tty-cursor (0.7.1) - tty-screen (0.8.0) + tty-screen (0.8.1) tty-spinner (0.9.3) tty-cursor (~> 0.7) uber (0.1.0) @@ -158,12 +158,15 @@ GEM unf_ext (0.0.7.7) unicode-display_width (1.7.0) word_wrap (1.0.0) - xcodeproj (1.17.0) + xcode-install (2.6.6) + claide (>= 0.9.1, < 1.1.0) + fastlane (>= 2.1.0, < 3.0.0) + xcodeproj (1.17.1) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) - nanaimo (~> 0.2.6) + nanaimo (~> 0.3.0) xcpretty (0.3.0) rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.0) @@ -175,6 +178,7 @@ PLATFORMS DEPENDENCIES fastlane fastlane-plugin-appcenter + xcode-install BUNDLED WITH 1.17.2 diff --git a/fastlane/Fastfile b/fastlane/Fastfile index dbe26aba2..d1ed06209 100755 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -27,6 +27,9 @@ platform :ios do end end + # Only used by FastLane actions + xcversion(version: '~> 11') + if cleaned_lane_condition(lane) ensure_git_status_clean Dir.chdir('..') { sh 'make bootstrap' } From cecc6c542a09d7fd42c4f6ff9cd6fce2169e3fdb Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 27 Jul 2020 22:24:38 +0200 Subject: [PATCH 08/55] Update LB dependency with completion block improvement --- .../Settings.bundle/com.mono0926.LicensePlist.latest_result.txt | 2 +- .../Resources/Settings.bundle/com.mono0926.LicensePlist.plist | 2 +- Cartfile | 2 +- Cartfile.resolved.proprietary | 2 +- Cartfile.resolved.public | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt index 46b66a448..e6a90cc62 100755 --- a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt +++ b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt @@ -462,7 +462,7 @@ name: srgdiagnostics-apple, nameSpecified: , owner: SRGSSR, version: 2.0.1 name: srgidentity-apple, nameSpecified: , owner: SRGSSR, version: 2.0.3 -name: srgletterbox-apple, nameSpecified: , owner: SRGSSR, version: 3b56223 +name: srgletterbox-apple, nameSpecified: , owner: SRGSSR, version: db061d7 name: srglogger-apple, nameSpecified: , owner: SRGSSR, version: 2.0.1 diff --git a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist index d795ab085..098a2407f 100755 --- a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist +++ b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist @@ -296,7 +296,7 @@ File com.mono0926.LicensePlist/srgletterbox-apple Title - srgletterbox-apple (3b56223) + srgletterbox-apple (db061d7) Type PSChildPaneSpecifier diff --git a/Cartfile b/Cartfile index dacd6a2ab..a2ebca0a2 100755 --- a/Cartfile +++ b/Cartfile @@ -6,5 +6,5 @@ github "microsoft/appcenter-sdk-apple" ~> 3.1.0 github "SRGSSR/DZNEmptyDataSet" "v1.8.1_srg1" github "SRGSSR/Masonry" "v1.1.0_srg1" github "urbanairship/ios-library" ~> 13.3.2 -github "SRGSSR/srgletterbox-apple" "3b5622388e81acd88dd3398420b5159e53694c6b" +github "SRGSSR/srgletterbox-apple" "db061d74a75048e7fb36702d43cd36e0889802af" github "SRGSSR/srguserdata-apple" "2.0.3" diff --git a/Cartfile.resolved.proprietary b/Cartfile.resolved.proprietary index 18e4ba74d..b652ec80d 100755 --- a/Cartfile.resolved.proprietary +++ b/Cartfile.resolved.proprietary @@ -15,7 +15,7 @@ github "SRGSSR/srgcontentprotection-apple" "2.0.2" github "SRGSSR/srgdataprovider-apple" "8.0.0" github "SRGSSR/srgdiagnostics-apple" "2.0.1" github "SRGSSR/srgidentity-apple" "2.0.3" -github "SRGSSR/srgletterbox-apple" "3b5622388e81acd88dd3398420b5159e53694c6b" +github "SRGSSR/srgletterbox-apple" "db061d74a75048e7fb36702d43cd36e0889802af" github "SRGSSR/srglogger-apple" "2.0.1" github "SRGSSR/srgmediaplayer-apple" "887a066d3d207e68701885d0833ccdcb04f32d16" github "SRGSSR/srgnetwork-apple" "2.0.2" diff --git a/Cartfile.resolved.public b/Cartfile.resolved.public index 0fbc44832..75ccf4920 100755 --- a/Cartfile.resolved.public +++ b/Cartfile.resolved.public @@ -15,7 +15,7 @@ github "SRGSSR/srgcontentprotection-fake-apple" "2.0.2" github "SRGSSR/srgdataprovider-apple" "8.0.0" github "SRGSSR/srgdiagnostics-apple" "2.0.1" github "SRGSSR/srgidentity-apple" "2.0.3" -github "SRGSSR/srgletterbox-apple" "3b5622388e81acd88dd3398420b5159e53694c6b" +github "SRGSSR/srgletterbox-apple" "db061d74a75048e7fb36702d43cd36e0889802af" github "SRGSSR/srglogger-apple" "2.0.1" github "SRGSSR/srgmediaplayer-apple" "887a066d3d207e68701885d0833ccdcb04f32d16" github "SRGSSR/srgnetwork-apple" "2.0.2" From d0f0e89cce4de60ae71974e61abb3f83067a67ea Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Tue, 28 Jul 2020 22:00:51 +0200 Subject: [PATCH 09/55] Update what's new --- WhatsNew-beta.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WhatsNew-beta.json b/WhatsNew-beta.json index df4bedbc0..f77ca45d9 100755 --- a/WhatsNew-beta.json +++ b/WhatsNew-beta.json @@ -114,5 +114,6 @@ "3.1.0-335": "- Fix crash when updating settings.", "3.1.0-336": "- Update german translation.", "3.1.0-337": "- Display waveform for song currently being played.\n- Display current show in show list for livestreams without timeshift.\n- Apply snapping in search results for shows.", - "3.1.0-338": "- UI improvement for video livestreams.\n- Long press to copy the song title and artist name." + "3.1.0-338": "- UI improvement for video livestreams.\n- Long press to copy the song title and artist name.", + "3.1.1-339": "- Always hide the playback controls after entering full screen.\n- Fix screen incorrectly turning off when watching videos with sound over AirPlay.\n- Fix issue leading to the loading indicator being displayed more than necessary.\n- iPad profile split view: Reset right navigation to its root when tapping again on left cells." } \ No newline at end of file From f12b51ff7a68e39d0499f0cd0218961885379193 Mon Sep 17 00:00:00 2001 From: RTS Devops Date: Tue, 28 Jul 2020 23:31:22 +0200 Subject: [PATCH 10/55] Bump build number to 340 --- PlaySRG.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PlaySRG.xcodeproj/project.pbxproj b/PlaySRG.xcodeproj/project.pbxproj index da3bd045f..3c92cafac 100644 --- a/PlaySRG.xcodeproj/project.pbxproj +++ b/PlaySRG.xcodeproj/project.pbxproj @@ -7457,7 +7457,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 339; + CURRENT_PROJECT_VERSION = 340; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -7525,7 +7525,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 339; + CURRENT_PROJECT_VERSION = 340; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -7870,7 +7870,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 339; + CURRENT_PROJECT_VERSION = 340; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -8077,7 +8077,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 339; + CURRENT_PROJECT_VERSION = 340; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; From 70fa3451031736066169fe065e4569c6f4c6d80b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Sun, 14 Jun 2020 11:12:22 +0200 Subject: [PATCH 11/55] Add new setting for sorting search results by date --- .../Settings/SearchSettingsViewController.m | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/Application/Sources/Search/Settings/SearchSettingsViewController.m b/Application/Sources/Search/Settings/SearchSettingsViewController.m index f3bbfde27..5f1d877e1 100644 --- a/Application/Sources/Search/Settings/SearchSettingsViewController.m +++ b/Application/Sources/Search/Settings/SearchSettingsViewController.m @@ -26,6 +26,7 @@ typedef NSString * SearchSettingSectionType NS_STRING_ENUM; +static SearchSettingSectionType const SearchSettingSectionTypeSortCriterium = @"sort_criterium"; static SearchSettingSectionType const SearchSettingSectionTypeMediaType = @"media_type"; static SearchSettingSectionType const SearchSettingSectionTypeTopics = @"topics"; static SearchSettingSectionType const SearchSettingSectionTypeShows = @"shows"; @@ -35,6 +36,7 @@ typedef NSString * SearchSettingRowType NS_STRING_ENUM; +static SearchSettingRowType const SearchSettingRowTypeSortCriterium = @"sort_criterium"; static SearchSettingRowType const SearchSettingRowTypeMediaType = @"media_type"; static SearchSettingRowType const SearchSettingRowTypeTopics = @"topics"; static SearchSettingRowType const SearchSettingRowTypeShows = @"shows"; @@ -304,7 +306,8 @@ - (void)updateRightBarButtonItems - (NSArray *)sectionTypesForTableView:(UITableView *)tableView { - return @[ SearchSettingSectionTypeMediaType, + return @[ SearchSettingSectionTypeSortCriterium, + SearchSettingSectionTypeMediaType, SearchSettingSectionTypeTopics, SearchSettingSectionTypeShows, SearchSettingSectionTypePeriod, @@ -314,7 +317,8 @@ - (void)updateRightBarButtonItems - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSectionWithType:(SearchSettingSectionType)type { - NSDictionary *titles = @{ SearchSettingSectionTypeMediaType : NSLocalizedString(@"Content", @"Settings section header"), + NSDictionary *titles = @{ SearchSettingSectionTypeSortCriterium : NSLocalizedString(@"Sort by", @"Settings section header"), + SearchSettingSectionTypeMediaType : NSLocalizedString(@"Content", @"Settings section header"), SearchSettingSectionTypePeriod : NSLocalizedString(@"Period", @"Settings section header"), SearchSettingSectionTypeDuration : NSLocalizedString(@"Duration", @"Settings section header"), SearchSettingSectionTypeProperties : NSLocalizedString(@"Properties", @"Settings section header") }; @@ -333,7 +337,8 @@ - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSectionWithType propertiesRowTypes = @[ SearchSettingRowTypeDownloadAvailable, SearchSettingRowTypePlayableAbroad ]; } - NSDictionary *> *types = @{ SearchSettingSectionTypeMediaType : @[ SearchSettingRowTypeMediaType ], + NSDictionary *> *types = @{ SearchSettingSectionTypeSortCriterium : @[ SearchSettingRowTypeSortCriterium ], + SearchSettingSectionTypeMediaType : @[ SearchSettingRowTypeMediaType ], SearchSettingSectionTypeTopics : @[ SearchSettingRowTypeTopics ], SearchSettingSectionTypeShows : @[ SearchSettingRowTypeShows ], SearchSettingSectionTypePeriod : @[ SearchSettingRowTypeToday, SearchSettingRowTypeYesterday, SearchSettingRowTypeThisWeek, SearchSettingRowTypeLastWeek ], @@ -344,7 +349,8 @@ - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSectionWithType - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowWithType:(SearchSettingRowType)type atIndexPath:(NSIndexPath *)indexPath { - NSDictionary *cellClasses = @{ SearchSettingRowTypeMediaType : SearchSettingSegmentCell.class, + NSDictionary *cellClasses = @{ SearchSettingRowTypeSortCriterium : SearchSettingSegmentCell.class, + SearchSettingRowTypeMediaType : SearchSettingSegmentCell.class, SearchSettingRowTypeTopics : SearchSettingMultiSelectionCell.class, SearchSettingRowTypeShows : SearchSettingMultiSelectionCell.class, SearchSettingRowTypeToday : SearchSettingSelectorCell.class, @@ -413,6 +419,26 @@ - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)ce [self updateResults]; }]; } + else if ([type isEqualToString:SearchSettingRowTypeSortCriterium]) { + SearchSettingSegmentCell *segmentCell = (SearchSettingSegmentCell *)cell; + + static dispatch_once_t s_onceToken; + static NSDictionary *s_sortCriteria; + dispatch_once(&s_onceToken, ^{ + s_sortCriteria = @{ @0 : @(SRGSortCriteriumDefault), + @1 : @(SRGSortCriteriumDate) }; + }); + + @weakify(self) + [segmentCell setItems:@[ NSLocalizedString(@"Relevance", @"Sort by relevance option"), NSLocalizedString(@"Date", @"Sort by date option") ] reader:^NSInteger{ + return [s_sortCriteria allKeysForObject:@(settings.sortCriterium)].firstObject.integerValue; + } writer:^(NSInteger index) { + @strongify(self) + + settings.sortCriterium = [s_sortCriteria[@(index)] integerValue]; + [self updateResults]; + }]; + } else if ([type isEqualToString:SearchSettingRowTypeToday]) { SearchSettingSelectorCell *selectorCell = (SearchSettingSelectorCell *)cell; selectorCell.name = NSLocalizedString(@"Today", @"Period setting option"); From da04f37b22c66591c1a4e50d9da57ae8c7dbbfc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Wed, 29 Jul 2020 14:38:57 +0200 Subject: [PATCH 12/55] Hide sorting criterium for RTS --- .../Play RTS/ApplicationConfiguration.json | 1 + .../Configuration/ApplicationConfiguration.h | 1 + .../Configuration/ApplicationConfiguration.m | 2 ++ .../Settings/SearchSettingsViewController.m | 20 ++++++++++++------- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Application/Resources/Apps/Play RTS/ApplicationConfiguration.json b/Application/Resources/Apps/Play RTS/ApplicationConfiguration.json index e781811fd..13d8c340c 100755 --- a/Application/Resources/Apps/Play RTS/ApplicationConfiguration.json +++ b/Application/Resources/Apps/Play RTS/ApplicationConfiguration.json @@ -34,6 +34,7 @@ "endToleranceRatio": 0.01, "hiddenOnboardings": "favorites,resume_playback,watch_later", "searchSettingSubtitledHidden": true, + "searchSortingCriteriumHidden": true, "subtitleAvailabilityHidden": true, "audioDescriptionAvailabilityHidden": true } diff --git a/Application/Sources/Configuration/ApplicationConfiguration.h b/Application/Sources/Configuration/ApplicationConfiguration.h index 3aa5d733b..557d69a91 100755 --- a/Application/Sources/Configuration/ApplicationConfiguration.h +++ b/Application/Sources/Configuration/ApplicationConfiguration.h @@ -156,6 +156,7 @@ OBJC_EXPORT NSString * const ApplicationConfigurationDidChangeNotification; @property (nonatomic, readonly, getter=areSearchSettingsHidden) BOOL searchSettingsHidden; @property (nonatomic, readonly, getter=isSearchSettingSubtitledHidden) BOOL searchSettingSubtitledHidden; +@property (nonatomic, readonly, getter=isSearchSortingCriteriumHidden) BOOL searchSortingCriteriumHidden; @property (nonatomic, readonly, getter=isShowsSearchHidden) BOOL showsSearchHidden; - (nullable RadioChannel *)radioChannelForUid:(NSString *)uid; diff --git a/Application/Sources/Configuration/ApplicationConfiguration.m b/Application/Sources/Configuration/ApplicationConfiguration.m index deb5e035c..b2c00516b 100755 --- a/Application/Sources/Configuration/ApplicationConfiguration.m +++ b/Application/Sources/Configuration/ApplicationConfiguration.m @@ -283,6 +283,7 @@ @interface ApplicationConfiguration () @property (nonatomic, getter=areSearchSettingsHidden) BOOL searchSettingsHidden; @property (nonatomic, getter=isSearchSettingSubtitledHidden) BOOL searchSettingSubtitledHidden; +@property (nonatomic, getter=isSearchSortingCriteriumHidden) BOOL searchSortingCriteriumHidden; @property (nonatomic, getter=isShowsSearchHidden) BOOL showsSearchHidden; #if defined(DEBUG) || defined(NIGHTLY) || defined(BETA) @@ -636,6 +637,7 @@ - (BOOL)synchronizeRemoteConfiguration self.searchSettingsHidden = [self.remoteConfig configValueForKey:@"searchSettingsHidden"].boolValue; self.searchSettingSubtitledHidden = [self.remoteConfig configValueForKey:@"searchSettingSubtitledHidden"].boolValue; + self.searchSortingCriteriumHidden = [self.remoteConfig configValueForKey:@"searchSortingCriteriumHidden"].boolValue; self.showsSearchHidden = [self.remoteConfig configValueForKey:@"showsSearchHidden"].boolValue; self.logoutMenuEnabled = [self.remoteConfig configValueForKey:@"logoutMenuEnabled"].boolValue; diff --git a/Application/Sources/Search/Settings/SearchSettingsViewController.m b/Application/Sources/Search/Settings/SearchSettingsViewController.m index 5f1d877e1..e5727f6a2 100644 --- a/Application/Sources/Search/Settings/SearchSettingsViewController.m +++ b/Application/Sources/Search/Settings/SearchSettingsViewController.m @@ -306,13 +306,19 @@ - (void)updateRightBarButtonItems - (NSArray *)sectionTypesForTableView:(UITableView *)tableView { - return @[ SearchSettingSectionTypeSortCriterium, - SearchSettingSectionTypeMediaType, - SearchSettingSectionTypeTopics, - SearchSettingSectionTypeShows, - SearchSettingSectionTypePeriod, - SearchSettingSectionTypeDuration, - SearchSettingSectionTypeProperties ]; + NSMutableArray *sectionTypes = [NSMutableArray array]; + + ApplicationConfiguration *applicationConfiguration = ApplicationConfiguration.sharedApplicationConfiguration; + if (! applicationConfiguration.searchSortingCriteriumHidden) { + [sectionTypes addObject:SearchSettingSectionTypeSortCriterium]; + } + [sectionTypes addObjectsFromArray:@[ SearchSettingSectionTypeMediaType, + SearchSettingSectionTypeTopics, + SearchSettingSectionTypeShows, + SearchSettingSectionTypePeriod, + SearchSettingSectionTypeDuration, + SearchSettingSectionTypeProperties ]]; + return sectionTypes.copy; } - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSectionWithType:(SearchSettingSectionType)type From 2c19a2f721d692f3fcea3cf42010d15d9f5397b5 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Thu, 30 Jul 2020 13:43:54 +0200 Subject: [PATCH 13/55] Add remote config property in the documentation --- docs/REMOTE_CONFIGURATION.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/REMOTE_CONFIGURATION.md b/docs/REMOTE_CONFIGURATION.md index 885e782fe..8086423a8 100755 --- a/docs/REMOTE_CONFIGURATION.md +++ b/docs/REMOTE_CONFIGURATION.md @@ -122,6 +122,7 @@ The keys common to both TV and radio channels JSON dictionaries are: * `searchSettingsHidden` (optional, boolean): Set to `true` to hide support for search settings. * `searchSettingSubtitledHidden` (optional, boolean): Set to `true` to hide the subtitled option in the search settings. +* `searchSortingCriteriumHidden` (optional, boolean): Set to `true` to hide the sorting criterium option in the search settings. * `showsSearchHidden ` (optional, boolean): Set to `true` to hide show search results. ## Continuous playback From 7f0a7c2f1efc15c0a6be203d1e1c5d75219dc7f6 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Fri, 31 Jul 2020 14:37:25 +0200 Subject: [PATCH 14/55] Fastlane: support new ios tag format --- fastlane/Fastfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index d1ed06209..6d579a93f 100755 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -499,7 +499,7 @@ def bump_build_number_beta_workflow return if is_in_release_process - add_git_tag(tag: tag_version) + add_git_tag(tag: 'ios/' + tag_version) bump_build_number_commit push_to_git_remote end From e6cc924617350dc96a4e907aadab2fddf19a18ec Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Thu, 9 Jul 2020 00:26:24 +0200 Subject: [PATCH 15/55] Add prediction on livestreams and show pages --- .../Sources/Player/MediaPlayerViewController.m | 11 ++++++++++- Application/Sources/Shows/ShowViewController.m | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Application/Sources/Player/MediaPlayerViewController.m b/Application/Sources/Player/MediaPlayerViewController.m index 209210714..9fd430313 100755 --- a/Application/Sources/Player/MediaPlayerViewController.m +++ b/Application/Sources/Player/MediaPlayerViewController.m @@ -58,6 +58,7 @@ #import #import +#import #import #import #import @@ -703,10 +704,11 @@ - (void)synchronizeUserActivity:(NSUserActivity *)userActivity if (mainChapterMedia.endDate) { userActivity.expirationDate = mainChapterMedia.endDate; } + BOOL isLiveStream = (mainChapterMedia.contentType == SRGContentTypeLivestream); NSNumber *position = nil; CMTime currentTime = self.letterboxController.currentTime; - if (CMTIME_IS_VALID(currentTime) + if (! isLiveStream && CMTIME_IS_VALID(currentTime) && self.letterboxController.playbackState != SRGMediaPlayerPlaybackStateIdle && self.letterboxController.playbackState != SRGMediaPlayerPlaybackStatePreparing && self.letterboxController.playbackState != SRGMediaPlayerPlaybackStateEnded) { @@ -721,6 +723,13 @@ - (void)synchronizeUserActivity:(NSUserActivity *)userActivity @"applicationVersion" : [NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"] }]; userActivity.requiredUserInfoKeys = [NSSet setWithArray:userActivity.userInfo.allKeys]; userActivity.webpageURL = [ApplicationConfiguration.sharedApplicationConfiguration sharingURLForMediaMetadata:mainChapterMedia atTime:currentTime]; + + if (isLiveStream) { + userActivity.eligibleForPrediction = YES; + userActivity.persistentIdentifier = mainChapterMedia.URN; + NSString * suggestedInvocationPhraseFormat = (mainChapterMedia.mediaType == SRGMediaTypeAudio) ? NSLocalizedString(@"Listen %@", @"Suggested invocation phrase to listen an audio") : NSLocalizedString(@"Watch %@", @"Suggested invocation phrase to watch a video"); + userActivity.suggestedInvocationPhrase = [NSString stringWithFormat:suggestedInvocationPhraseFormat, mainChapterMedia.channel.title]; + } } else { [userActivity resignCurrent]; diff --git a/Application/Sources/Shows/ShowViewController.m b/Application/Sources/Shows/ShowViewController.m index 8db62c047..85b10a140 100755 --- a/Application/Sources/Shows/ShowViewController.m +++ b/Application/Sources/Shows/ShowViewController.m @@ -20,6 +20,7 @@ #import "UIColor+PlaySRG.h" #import "UIViewController+PlaySRG.h" +#import #import #import @@ -272,6 +273,11 @@ - (void)updateUserActivityState:(NSUserActivity *)userActivity @"SRGShowData" : [NSKeyedArchiver archivedDataWithRootObject:self.show requiringSecureCoding:NO error:NULL], @"applicationVersion" : [NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"] }]; userActivity.webpageURL = [ApplicationConfiguration.sharedApplicationConfiguration sharingURLForShow:self.show]; + + userActivity.eligibleForPrediction = YES; + userActivity.persistentIdentifier = self.show.URN; + NSString * suggestedInvocationPhraseFormat = (self.show.transmission == SRGTransmissionRadio) ? NSLocalizedString(@"Listen %@", @"Suggested invocation phrase to listen a show") : NSLocalizedString(@"Watch %@", @"Suggested invocation phrase to watch a show"); + userActivity.suggestedInvocationPhrase = [NSString stringWithFormat:suggestedInvocationPhraseFormat, self.show.title]; } #pragma mark UI From 9bb5717f034948af9147be9285b3892bcd2de63c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 9 Jul 2020 17:39:40 +0200 Subject: [PATCH 16/55] Check channel availability --- Application/Sources/Player/MediaPlayerViewController.m | 4 ++-- Application/Sources/Shows/ShowViewController.m | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Application/Sources/Player/MediaPlayerViewController.m b/Application/Sources/Player/MediaPlayerViewController.m index 9fd430313..c813e7f93 100755 --- a/Application/Sources/Player/MediaPlayerViewController.m +++ b/Application/Sources/Player/MediaPlayerViewController.m @@ -724,10 +724,10 @@ - (void)synchronizeUserActivity:(NSUserActivity *)userActivity userActivity.requiredUserInfoKeys = [NSSet setWithArray:userActivity.userInfo.allKeys]; userActivity.webpageURL = [ApplicationConfiguration.sharedApplicationConfiguration sharingURLForMediaMetadata:mainChapterMedia atTime:currentTime]; - if (isLiveStream) { + if (isLiveStream && mainChapterMedia.channel) { userActivity.eligibleForPrediction = YES; userActivity.persistentIdentifier = mainChapterMedia.URN; - NSString * suggestedInvocationPhraseFormat = (mainChapterMedia.mediaType == SRGMediaTypeAudio) ? NSLocalizedString(@"Listen %@", @"Suggested invocation phrase to listen an audio") : NSLocalizedString(@"Watch %@", @"Suggested invocation phrase to watch a video"); + NSString *suggestedInvocationPhraseFormat = (mainChapterMedia.mediaType == SRGMediaTypeAudio) ? NSLocalizedString(@"Listen %@", @"Suggested invocation phrase to listen an audio") : NSLocalizedString(@"Watch %@", @"Suggested invocation phrase to watch a video"); userActivity.suggestedInvocationPhrase = [NSString stringWithFormat:suggestedInvocationPhraseFormat, mainChapterMedia.channel.title]; } } diff --git a/Application/Sources/Shows/ShowViewController.m b/Application/Sources/Shows/ShowViewController.m index 85b10a140..f59ad1220 100755 --- a/Application/Sources/Shows/ShowViewController.m +++ b/Application/Sources/Shows/ShowViewController.m @@ -276,7 +276,7 @@ - (void)updateUserActivityState:(NSUserActivity *)userActivity userActivity.eligibleForPrediction = YES; userActivity.persistentIdentifier = self.show.URN; - NSString * suggestedInvocationPhraseFormat = (self.show.transmission == SRGTransmissionRadio) ? NSLocalizedString(@"Listen %@", @"Suggested invocation phrase to listen a show") : NSLocalizedString(@"Watch %@", @"Suggested invocation phrase to watch a show"); + NSString *suggestedInvocationPhraseFormat = (self.show.transmission == SRGTransmissionRadio) ? NSLocalizedString(@"Listen %@", @"Suggested invocation phrase to listen a show") : NSLocalizedString(@"Watch %@", @"Suggested invocation phrase to watch a show"); userActivity.suggestedInvocationPhrase = [NSString stringWithFormat:suggestedInvocationPhraseFormat, self.show.title]; } From 85db407516f71242413acbc531206cce5b63ffe8 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Wed, 29 Jul 2020 14:32:09 +0200 Subject: [PATCH 17/55] Improve english sentence --- Application/Sources/Player/MediaPlayerViewController.m | 2 +- Application/Sources/Shows/ShowViewController.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Application/Sources/Player/MediaPlayerViewController.m b/Application/Sources/Player/MediaPlayerViewController.m index c813e7f93..9e619dcc6 100755 --- a/Application/Sources/Player/MediaPlayerViewController.m +++ b/Application/Sources/Player/MediaPlayerViewController.m @@ -727,7 +727,7 @@ - (void)synchronizeUserActivity:(NSUserActivity *)userActivity if (isLiveStream && mainChapterMedia.channel) { userActivity.eligibleForPrediction = YES; userActivity.persistentIdentifier = mainChapterMedia.URN; - NSString *suggestedInvocationPhraseFormat = (mainChapterMedia.mediaType == SRGMediaTypeAudio) ? NSLocalizedString(@"Listen %@", @"Suggested invocation phrase to listen an audio") : NSLocalizedString(@"Watch %@", @"Suggested invocation phrase to watch a video"); + NSString *suggestedInvocationPhraseFormat = (mainChapterMedia.mediaType == SRGMediaTypeAudio) ? NSLocalizedString(@"Listen to %@", @"Suggested invocation phrase to listen to an audio") : NSLocalizedString(@"Watch %@", @"Suggested invocation phrase to watch a video"); userActivity.suggestedInvocationPhrase = [NSString stringWithFormat:suggestedInvocationPhraseFormat, mainChapterMedia.channel.title]; } } diff --git a/Application/Sources/Shows/ShowViewController.m b/Application/Sources/Shows/ShowViewController.m index f59ad1220..187ef710c 100755 --- a/Application/Sources/Shows/ShowViewController.m +++ b/Application/Sources/Shows/ShowViewController.m @@ -276,7 +276,7 @@ - (void)updateUserActivityState:(NSUserActivity *)userActivity userActivity.eligibleForPrediction = YES; userActivity.persistentIdentifier = self.show.URN; - NSString *suggestedInvocationPhraseFormat = (self.show.transmission == SRGTransmissionRadio) ? NSLocalizedString(@"Listen %@", @"Suggested invocation phrase to listen a show") : NSLocalizedString(@"Watch %@", @"Suggested invocation phrase to watch a show"); + NSString *suggestedInvocationPhraseFormat = (self.show.transmission == SRGTransmissionRadio) ? NSLocalizedString(@"Listen to %@", @"Suggested invocation phrase to listen to a show") : NSLocalizedString(@"Watch %@", @"Suggested invocation phrase to watch a show"); userActivity.suggestedInvocationPhrase = [NSString stringWithFormat:suggestedInvocationPhraseFormat, self.show.title]; } From 3dd5fb3a8e34c419fd4d0f2f35abd4f13d4c88ad Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 3 Aug 2020 13:07:25 +0200 Subject: [PATCH 18/55] Improve user activity titles --- Application/Sources/Player/MediaPlayerViewController.m | 3 ++- Application/Sources/Shows/ShowViewController.m | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Application/Sources/Player/MediaPlayerViewController.m b/Application/Sources/Player/MediaPlayerViewController.m index 9e619dcc6..5d85c0a19 100755 --- a/Application/Sources/Player/MediaPlayerViewController.m +++ b/Application/Sources/Player/MediaPlayerViewController.m @@ -700,7 +700,8 @@ - (void)synchronizeUserActivity:(NSUserActivity *)userActivity { SRGMedia *mainChapterMedia = [self mainChapterMedia]; if (mainChapterMedia) { - userActivity.title = mainChapterMedia.title; + NSString *userActivityTitleFormat = (mainChapterMedia.mediaType == SRGMediaTypeAudio) ? NSLocalizedString(@"Listen to %@", @"User activity title when listening to an audio") : NSLocalizedString(@"Watch %@", @"User activity title when watching a video"); + userActivity.title = [NSString stringWithFormat:userActivityTitleFormat, mainChapterMedia.title]; if (mainChapterMedia.endDate) { userActivity.expirationDate = mainChapterMedia.endDate; } diff --git a/Application/Sources/Shows/ShowViewController.m b/Application/Sources/Shows/ShowViewController.m index 187ef710c..1437a21bb 100755 --- a/Application/Sources/Shows/ShowViewController.m +++ b/Application/Sources/Shows/ShowViewController.m @@ -268,7 +268,7 @@ - (void)updateUserActivityState:(NSUserActivity *)userActivity { [super updateUserActivityState:userActivity]; - userActivity.title = self.show.title; + userActivity.title = [NSString stringWithFormat:NSLocalizedString(@"Display %@ show", @"User activity title when displaying a show page"), self.show.title]; [userActivity addUserInfoEntriesFromDictionary:@{ @"URNString" : self.show.URN, @"SRGShowData" : [NSKeyedArchiver archivedDataWithRootObject:self.show requiringSecureCoding:NO error:NULL], @"applicationVersion" : [NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"] }]; From 01e75eaee2e19ea951b97947b6e3e996ccb39c59 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 3 Aug 2020 13:50:54 +0200 Subject: [PATCH 19/55] Test with french translations --- .../Apps/Play RTS/fr.lproj/Localizable.strings | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings b/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings index 8ec0aa272..a884474b7 100644 --- a/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings @@ -123,6 +123,9 @@ /* Introductory title displayed at the top of the onboarding list */ "Discover" = "Découvrez l'application"; +/* User activity title when displaying a show page */ +"Display %@ show" = "Afficher les %@"; + /* No comment provided by engineer. */ "Do you want to send an anonymous crash report so we can fix the issue?" = "Souhaitez-vous envoyer un rapport d'erreur afin que nous puissions corriger ce problème?"; @@ -212,6 +215,11 @@ /* Explains that a content has expired, will expire or will be available in less than one hour. Displayed in the media player view. */ "less than 1 hour" = "moins d'une heure"; +/* Suggested invocation phrase to listen to a show + Suggested invocation phrase to listen to an audio + User activity title when listening to an audio */ +"Listen to %@" = "Écouter %@"; + /* Introductory text for what is currently on air, displayed on the mini player Short label identifying a livestream. Display in uppercase. */ "Live" = "Direct"; @@ -565,6 +573,11 @@ /* Header for video and audio search results */ "Videos and audios" = "Vidéos et audios"; +/* Suggested invocation phrase to watch a show + Suggested invocation phrase to watch a video + User activity title when watching a video */ +"Watch %@" = "Regarder %@"; + /* Label to present the watch later list */ "Watch later" = "Plus tard"; From 7e1df86b1f25f8366e909979747d6ec381ccf947 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 3 Aug 2020 21:34:15 +0200 Subject: [PATCH 20/55] Improve show page user activity title --- .../Resources/Apps/Play RTS/fr.lproj/Localizable.strings | 2 +- Application/Sources/Shows/ShowViewController.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings b/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings index a884474b7..567fa17a9 100644 --- a/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings @@ -124,7 +124,7 @@ "Discover" = "Découvrez l'application"; /* User activity title when displaying a show page */ -"Display %@ show" = "Afficher les %@"; +"Display %@ episodes" = "Afficher les épisodes pour %@"; /* No comment provided by engineer. */ "Do you want to send an anonymous crash report so we can fix the issue?" = "Souhaitez-vous envoyer un rapport d'erreur afin que nous puissions corriger ce problème?"; diff --git a/Application/Sources/Shows/ShowViewController.m b/Application/Sources/Shows/ShowViewController.m index 1437a21bb..bf48bd57c 100755 --- a/Application/Sources/Shows/ShowViewController.m +++ b/Application/Sources/Shows/ShowViewController.m @@ -268,7 +268,7 @@ - (void)updateUserActivityState:(NSUserActivity *)userActivity { [super updateUserActivityState:userActivity]; - userActivity.title = [NSString stringWithFormat:NSLocalizedString(@"Display %@ show", @"User activity title when displaying a show page"), self.show.title]; + userActivity.title = [NSString stringWithFormat:NSLocalizedString(@"Display %@ episodes", @"User activity title when displaying a show page"), self.show.title]; [userActivity addUserInfoEntriesFromDictionary:@{ @"URNString" : self.show.URN, @"SRGShowData" : [NSKeyedArchiver archivedDataWithRootObject:self.show requiringSecureCoding:NO error:NULL], @"applicationVersion" : [NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"] }]; From 41577e65bb907911573488cd8ea1f80e62b6c717 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 17 Aug 2020 17:33:03 +0200 Subject: [PATCH 21/55] Update translations for search "sort by" and Siri predictions --- .../Play RSI/it.lproj/Localizable.strings | 22 +++++++++++++++++++ .../Play RTR/rm.lproj/Localizable.strings | 22 +++++++++++++++++++ .../Play RTS/fr.lproj/Localizable.strings | 9 ++++++++ .../Play SRF/de.lproj/Localizable.strings | 22 +++++++++++++++++++ .../Play SWI/en.lproj/Localizable.strings | 22 +++++++++++++++++++ 5 files changed, 97 insertions(+) diff --git a/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings b/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings index b83d2d747..6858eec7a 100755 --- a/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings @@ -107,6 +107,9 @@ /* Settings section header */ "Content" = "Contenuto"; +/* Sort by date option */ +"Date" = "Data"; + /* Title of a delete button Title of the delete button in the alert view when deleting a download in the player view */ "Delete" = "Elimina"; @@ -123,6 +126,9 @@ /* Introductory title displayed at the top of the onboarding list */ "Discover" = "Scopri"; +/* User activity title when displaying a show page */ +"Display %@ episodes" = "Mostra le puntate di %@"; + /* No comment provided by engineer. */ "Do you want to send an anonymous crash report so we can fix the issue?" = "Desidera inviare una segnalazione (anonima) su questo problema così da permetterci di risolverlo?"; @@ -212,6 +218,11 @@ /* Explains that a content has expired, will expire or will be available in less than one hour. Displayed in the media player view. */ "less than 1 hour" = "meno di 1 ora"; +/* Suggested invocation phrase to listen to a show + Suggested invocation phrase to listen to an audio + User activity title when listening to an audio */ +"Listen to %@" = "Ascolta %@"; + /* Introductory text for what is currently on air, displayed on the mini player Short label identifying a livestream. Display in uppercase. */ "Live" = "Live"; @@ -365,6 +376,9 @@ /* Title of the action view to choose a regional radio */ "Regional radios" = "Radio regionali"; +/* Sort by relevance option */ +"Relevance" = "Pertinenza"; + /* Title of the confirmation pop-up displayed when the user is about to clean the watch later list */ "Remove all content" = "Rimuovere tutto"; @@ -451,6 +465,9 @@ /* Short label identifying content which will be available soon. */ "Soon" = "Presto"; +/* Settings section header */ +"Sort by" = "Ordinare per"; + /* Title label used to present live center medias. Only on test versions. */ "Sport" = "Sport"; @@ -565,6 +582,11 @@ /* Header for video and audio search results */ "Videos and audios" = "Video e audio"; +/* Suggested invocation phrase to watch a show + Suggested invocation phrase to watch a video + User activity title when watching a video */ +"Watch %@" = "Guarda %@"; + /* Label to present the watch later list */ "Watch later" = "Guardare dopo"; diff --git a/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings b/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings index 1709ed92f..136fd5af7 100755 --- a/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings @@ -107,6 +107,9 @@ /* Settings section header */ "Content" = "Cuntegn"; +/* Sort by date option */ +"Date" = "Data"; + /* Title of a delete button Title of the delete button in the alert view when deleting a download in the player view */ "Delete" = "Stizzar"; @@ -123,6 +126,9 @@ /* Introductory title displayed at the top of the onboarding list */ "Discover" = "Scuvrir"; +/* User activity title when displaying a show page */ +"Display %@ episodes" = "Display %@ episodes"; + /* No comment provided by engineer. */ "Do you want to send an anonymous crash report so we can fix the issue?" = "Vulais trametter in rapport anonim, per che nus possian schliar il problem?"; @@ -212,6 +218,11 @@ /* Explains that a content has expired, will expire or will be available in less than one hour. Displayed in the media player view. */ "less than 1 hour" = "main ch'ina ura"; +/* Suggested invocation phrase to listen to a show + Suggested invocation phrase to listen to an audio + User activity title when listening to an audio */ +"Listen to %@" = "Listen to %@"; + /* Introductory text for what is currently on air, displayed on the mini player Short label identifying a livestream. Display in uppercase. */ "Live" = "Live"; @@ -365,6 +376,9 @@ /* Title of the action view to choose a regional radio */ "Regional radios" = "Radios regiunals"; +/* Sort by relevance option */ +"Relevance" = "Relevanza"; + /* Title of the confirmation pop-up displayed when the user is about to clean the watch later list */ "Remove all content" = "Piglia davent tut il cuntegn"; @@ -451,6 +465,9 @@ /* Short label identifying content which will be available soon. */ "Soon" = "Proximamain"; +/* Settings section header */ +"Sort by" = "Sortar tenor"; + /* Title label used to present live center medias. Only on test versions. */ "Sport" = "Sport"; @@ -565,6 +582,11 @@ /* Header for video and audio search results */ "Videos and audios" = "Videos ed audios"; +/* Suggested invocation phrase to watch a show + Suggested invocation phrase to watch a video + User activity title when watching a video */ +"Watch %@" = "Watch %@"; + /* Label to present the watch later list */ "Watch later" = "Guardar pli tard"; diff --git a/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings b/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings index 567fa17a9..1a0b3c469 100644 --- a/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings @@ -107,6 +107,9 @@ /* Settings section header */ "Content" = "Contenu"; +/* Sort by date option */ +"Date" = "Date"; + /* Title of a delete button Title of the delete button in the alert view when deleting a download in the player view */ "Delete" = "Supprimer"; @@ -373,6 +376,9 @@ /* Title of the action view to choose a regional radio */ "Regional radios" = "Radios régionales"; +/* Sort by relevance option */ +"Relevance" = "Pertinence"; + /* Title of the confirmation pop-up displayed when the user is about to clean the watch later list */ "Remove all content" = "Supprimer tout le contenu"; @@ -459,6 +465,9 @@ /* Short label identifying content which will be available soon. */ "Soon" = "Prochainement"; +/* Settings section header */ +"Sort by" = "Trier par"; + /* Title label used to present live center medias. Only on test versions. */ "Sport" = "Sport"; diff --git a/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings b/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings index e6b5e0b12..1a4283b48 100755 --- a/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings @@ -107,6 +107,9 @@ /* Settings section header */ "Content" = "Medientyp"; +/* Sort by date option */ +"Date" = "Datum"; + /* Title of a delete button Title of the delete button in the alert view when deleting a download in the player view */ "Delete" = "Löschen"; @@ -123,6 +126,9 @@ /* Introductory title displayed at the top of the onboarding list */ "Discover" = "Entdecken"; +/* User activity title when displaying a show page */ +"Display %@ episodes" = "Zeige die Folgen von %@"; + /* No comment provided by engineer. */ "Do you want to send an anonymous crash report so we can fix the issue?" = "Wollen Sie einen anonymen Absturzreport senden, damit wir das Problem lösen können?"; @@ -212,6 +218,11 @@ /* Explains that a content has expired, will expire or will be available in less than one hour. Displayed in the media player view. */ "less than 1 hour" = "< 1 Stunde"; +/* Suggested invocation phrase to listen to a show + Suggested invocation phrase to listen to an audio + User activity title when listening to an audio */ +"Listen to %@" = "%@ hören"; + /* Introductory text for what is currently on air, displayed on the mini player Short label identifying a livestream. Display in uppercase. */ "Live" = "Live"; @@ -365,6 +376,9 @@ /* Title of the action view to choose a regional radio */ "Regional radios" = "Radio SRF 1 mit Regionaljournal"; +/* Sort by relevance option */ +"Relevance" = "Relevanz"; + /* Title of the confirmation pop-up displayed when the user is about to clean the watch later list */ "Remove all content" = "Alle Elemente entfernen"; @@ -451,6 +465,9 @@ /* Short label identifying content which will be available soon. */ "Soon" = "In Kürze"; +/* Settings section header */ +"Sort by" = "Sortieren nach"; + /* Title label used to present live center medias. Only on test versions. */ "Sport" = "Sport"; @@ -565,6 +582,11 @@ /* Header for video and audio search results */ "Videos and audios" = "Video und Audio"; +/* Suggested invocation phrase to watch a show + Suggested invocation phrase to watch a video + User activity title when watching a video */ +"Watch %@" = "%@ schauen"; + /* Label to present the watch later list */ "Watch later" = "Später schauen"; diff --git a/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings b/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings index e9a444ea5..9c610d936 100755 --- a/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings @@ -107,6 +107,9 @@ /* Settings section header */ "Content" = "Content"; +/* Sort by date option */ +"Date" = "Date"; + /* Title of a delete button Title of the delete button in the alert view when deleting a download in the player view */ "Delete" = "Delete"; @@ -123,6 +126,9 @@ /* Introductory title displayed at the top of the onboarding list */ "Discover" = "Discover"; +/* User activity title when displaying a show page */ +"Display %@ episodes" = "Display %@ videos"; + /* No comment provided by engineer. */ "Do you want to send an anonymous crash report so we can fix the issue?" = "Do you want to send an anonymous crash report so we can fix the issue?"; @@ -212,6 +218,11 @@ /* Explains that a content has expired, will expire or will be available in less than one hour. Displayed in the media player view. */ "less than 1 hour" = "less than 1 hour"; +/* Suggested invocation phrase to listen to a show + Suggested invocation phrase to listen to an audio + User activity title when listening to an audio */ +"Listen to %@" = "Listen to %@"; + /* Introductory text for what is currently on air, displayed on the mini player Short label identifying a livestream. Display in uppercase. */ "Live" = "Live"; @@ -365,6 +376,9 @@ /* Title of the action view to choose a regional radio */ "Regional radios" = "Regional radios"; +/* Sort by relevance option */ +"Relevance" = "Relevance"; + /* Title of the confirmation pop-up displayed when the user is about to clean the watch later list */ "Remove all content" = "Remove all content"; @@ -451,6 +465,9 @@ /* Short label identifying content which will be available soon. */ "Soon" = "Soon"; +/* Settings section header */ +"Sort by" = "Sort by"; + /* Title label used to present live center medias. Only on test versions. */ "Sport" = "Sport"; @@ -565,6 +582,11 @@ /* Header for video and audio search results */ "Videos and audios" = "Videos and audios"; +/* Suggested invocation phrase to watch a show + Suggested invocation phrase to watch a video + User activity title when watching a video */ +"Watch %@" = "Watch %@"; + /* Label to present the watch later list */ "Watch later" = "Watch later"; From c9b5a1f8b416aa4f6299b3251d85ee94a84ef5ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Fri, 10 Jul 2020 09:14:11 +0200 Subject: [PATCH 22/55] Introduce vertical grid layout for livestreams --- .../HomeLiveMediaVerticalListTableViewCell.h | 15 ++ .../HomeLiveMediaVerticalListTableViewCell.m | 153 ++++++++++++++++++ Application/Sources/Home/HomeSectionInfo.m | 4 + Application/Sources/Home/HomeViewController.m | 4 + PlaySRG.xcodeproj/project.pbxproj | 20 ++- 5 files changed, 193 insertions(+), 3 deletions(-) create mode 100755 Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.h create mode 100755 Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m diff --git a/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.h b/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.h new file mode 100755 index 000000000..853d36435 --- /dev/null +++ b/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.h @@ -0,0 +1,15 @@ +// +// Copyright (c) SRG SSR. All rights reserved. +// +// License information is available from the LICENSE file. +// + +#import "HomeTableViewCell.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeLiveMediaVerticalListTableViewCell : HomeTableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m b/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m new file mode 100755 index 000000000..269f5d02b --- /dev/null +++ b/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m @@ -0,0 +1,153 @@ +// +// Copyright (c) SRG SSR. All rights reserved. +// +// License information is available from the LICENSE file. +// + +#import "HomeLiveMediaVerticalListTableViewCell.h" + +#import "ApplicationSettings.h" +#import "HomeLiveMediaCollectionViewCell.h" +#import "Layout.h" +#import "UIViewController+PlaySRG.h" + +#import +#import + +@interface HomeLiveMediaVerticalListTableViewCell () + +@property (nonatomic, weak) UIView *wrapperView; +@property (nonatomic, weak) UICollectionView *collectionView; + +@end + +@implementation HomeLiveMediaVerticalListTableViewCell + +#pragma mark Class overrides + ++ (CGFloat)heightForHomeSectionInfo:(HomeSectionInfo *)homeSectionInfo bounds:(CGRect)bounds featured:(BOOL)featured +{ + CGSize itemSize = [self itemSizeForHomeSectionInfo:homeSectionInfo bounds:bounds]; + NSInteger numberOfItemsPerRow = floorf((CGRectGetWidth(bounds) - LayoutStandardMargin) / (itemSize.width + LayoutStandardMargin)); + NSInteger numberOfItems = (homeSectionInfo.items.count != 0) ? homeSectionInfo.items.count : 4; + NSInteger numberOfLines = MAX(ceilf((float)numberOfItems / numberOfItemsPerRow), 1); + return itemSize.height * numberOfLines + (numberOfLines - 1) * LayoutStandardMargin; +} + +#pragma mark Class methods + ++ (CGSize)itemSizeForHomeSectionInfo:(HomeSectionInfo *)homeSectionInfo bounds:(CGRect)bounds +{ + CGFloat itemWidth = LayoutCollectionItemOptimalWidth(LayoutCollectionViewCellStandardWidth, CGRectGetWidth(bounds), LayoutStandardMargin, LayoutStandardMargin, LayoutStandardMargin); + return LayoutMediaStandardCollectionItemSize(itemWidth, NO); +} + +#pragma mark Object lifecycle + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier +{ + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + self.backgroundColor = UIColor.clearColor; + self.selectedBackgroundView.backgroundColor = UIColor.clearColor; + + UIView *wrapperView = [[UIView alloc] initWithFrame:self.contentView.bounds]; + wrapperView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + [self.contentView addSubview:wrapperView]; + self.wrapperView = wrapperView; + + UICollectionViewFlowLayout *collectionViewLayout = [[UICollectionViewFlowLayout alloc] init]; + collectionViewLayout.scrollDirection = UICollectionViewScrollDirectionVertical; + collectionViewLayout.minimumLineSpacing = LayoutStandardMargin; + collectionViewLayout.minimumInteritemSpacing = LayoutStandardMargin; + + UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:wrapperView.bounds collectionViewLayout:collectionViewLayout]; + collectionView.backgroundColor = UIColor.clearColor; + collectionView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + collectionView.indicatorStyle = UIScrollViewIndicatorStyleWhite; + // Important. If > 1 view on-screen is found on iPhone with this property enabled, none will scroll to top + collectionView.scrollsToTop = NO; + collectionView.delegate = self; + collectionView.dataSource = self; + [wrapperView addSubview:collectionView]; + self.collectionView = collectionView; + + // Remark: The collection view is nested in a dummy view to workaround an accessibility bug + // See https://stackoverflow.com/a/38798448/760435 + wrapperView.accessibilityElements = @[collectionView]; + + NSString *mediaCellIdentifier = NSStringFromClass(HomeLiveMediaCollectionViewCell.class); + UINib *mediaCellNib = [UINib nibWithNibName:mediaCellIdentifier bundle:nil]; + [collectionView registerNib:mediaCellNib forCellWithReuseIdentifier:mediaCellIdentifier]; + } + return self; +} + +#pragma mark Overrides + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + [self.collectionView.collectionViewLayout invalidateLayout]; +} + +- (void)reloadData +{ + [super reloadData]; + + [self.collectionView reloadData]; +} + +#pragma mark UICollectionViewDataSource protocol + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section +{ + return ! [self isEmpty] ? self.homeSectionInfo.items.count : 4; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath +{ + return [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(HomeLiveMediaCollectionViewCell.class) forIndexPath:indexPath]; +} + +#pragma mark UICollectionViewDelegate protocol + +- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(HomeLiveMediaCollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath +{ + cell.media = ! [self isEmpty] ? self.homeSectionInfo.items[indexPath.row] : nil; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath +{ + if (! [self isEmpty]) { + SRGMedia *media = self.homeSectionInfo.items[indexPath.row]; + + HomeSection homeSection = self.homeSectionInfo.homeSection; + if (homeSection == HomeSectionTVLive) { + ApplicationSettingSetLastSelectedTVLivestreamURN(media.URN); + } + else if (homeSection == HomeSectionRadioLive) { + ApplicationSettingSetLastSelectedRadioLivestreamURN(media.URN); + } + [self.nearestViewController play_presentMediaPlayerWithMedia:media position:nil airPlaySuggestions:YES fromPushNotification:NO animated:YES completion:^(PlayerType playerType) { + // Reset scrolling to the origin after playing a livestream, as the last played item is presented first + if (homeSection == HomeSectionTVLive || homeSection == HomeSectionRadioLive) { + self.collectionView.contentOffset = CGPointMake(0.f, self.collectionView.contentOffset.y); + } + }]; + } +} + +#pragma mark UICollectionViewDelegateFlowLayout protocol + +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section +{ + return UIEdgeInsetsMake(0.f, LayoutStandardMargin, 0.f, LayoutStandardMargin); +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewFlowLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath +{ + return [HomeLiveMediaVerticalListTableViewCell itemSizeForHomeSectionInfo:self.homeSectionInfo bounds:collectionView.bounds]; +} + +@end diff --git a/Application/Sources/Home/HomeSectionInfo.m b/Application/Sources/Home/HomeSectionInfo.m index 2cf1ac957..d6dd0f2be 100755 --- a/Application/Sources/Home/HomeSectionInfo.m +++ b/Application/Sources/Home/HomeSectionInfo.m @@ -9,6 +9,7 @@ #import "ApplicationConfiguration.h" #import "ApplicationSettings.h" #import "Favorites.h" +#import "HomeLiveMediaVerticalListTableViewCell.h" #import "HomeMediaListTableViewCell.h" #import "HomeShowListTableViewCell.h" #import "HomeShowsAccessTableViewCell.h" @@ -95,6 +96,9 @@ - (Class)cellClass else if (self.homeSection == HomeSectionTVFavoriteShows || self.homeSection == HomeSectionRadioFavoriteShows) { return HomeShowListTableViewCell.class; } + else if (self.homeSection == HomeSectionTVLive || self.homeSection == HomeSectionRadioLive) { + return HomeLiveMediaVerticalListTableViewCell.class; + } else { return HomeMediaListTableViewCell.class; } diff --git a/Application/Sources/Home/HomeViewController.m b/Application/Sources/Home/HomeViewController.m index a16c39ce3..1fb4c59bd 100755 --- a/Application/Sources/Home/HomeViewController.m +++ b/Application/Sources/Home/HomeViewController.m @@ -13,6 +13,7 @@ #import "Favorites.h" #import "GoogleCastBarButtonItem.h" #import "Layout.h" +#import "HomeLiveMediaVerticalListTableViewCell.h" #import "HomeSectionHeaderView.h" #import "HomeMediaListTableViewCell.h" #import "HomeSectionInfo.h" @@ -118,6 +119,9 @@ - (void)viewDidLoad Class mediaListCellClass = HomeMediaListTableViewCell.class; [self.tableView registerClass:mediaListCellClass forCellReuseIdentifier:NSStringFromClass(mediaListCellClass)]; + Class mediaVerticalListCellClass = HomeLiveMediaVerticalListTableViewCell.class; + [self.tableView registerClass:mediaVerticalListCellClass forCellReuseIdentifier:NSStringFromClass(mediaVerticalListCellClass)]; + Class showListCellClass = HomeShowListTableViewCell.class; [self.tableView registerClass:showListCellClass forCellReuseIdentifier:NSStringFromClass(showListCellClass)]; diff --git a/PlaySRG.xcodeproj/project.pbxproj b/PlaySRG.xcodeproj/project.pbxproj index 3c92cafac..6767a34b5 100644 --- a/PlaySRG.xcodeproj/project.pbxproj +++ b/PlaySRG.xcodeproj/project.pbxproj @@ -1311,6 +1311,11 @@ 6FE686E31EB9D57400067D40 /* ChannelService.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FE686E01EB9D57400067D40 /* ChannelService.m */; }; 6FE686E41EB9D57400067D40 /* ChannelService.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FE686E01EB9D57400067D40 /* ChannelService.m */; }; 6FE686E51EB9D57400067D40 /* ChannelService.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FE686E01EB9D57400067D40 /* ChannelService.m */; }; + 6FE9B54424B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FE9B54224B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m */; }; + 6FE9B54524B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FE9B54224B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m */; }; + 6FE9B54624B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FE9B54224B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m */; }; + 6FE9B54724B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FE9B54224B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m */; }; + 6FE9B54824B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FE9B54224B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m */; }; 6FEC91A921A6B39A00AA50C8 /* TableLoadMoreFooterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FEC91A821A6B39A00AA50C8 /* TableLoadMoreFooterView.m */; }; 6FEC91AA21A6B39A00AA50C8 /* TableLoadMoreFooterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FEC91A821A6B39A00AA50C8 /* TableLoadMoreFooterView.m */; }; 6FEC91AB21A6B39A00AA50C8 /* TableLoadMoreFooterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FEC91A821A6B39A00AA50C8 /* TableLoadMoreFooterView.m */; }; @@ -2139,6 +2144,8 @@ 6FE28772248168A100358CFF /* SongTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SongTableViewCell.xib; sourceTree = ""; }; 6FE686DF1EB9D57400067D40 /* ChannelService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChannelService.h; sourceTree = ""; }; 6FE686E01EB9D57400067D40 /* ChannelService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChannelService.m; sourceTree = ""; }; + 6FE9B54224B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeLiveMediaVerticalListTableViewCell.m; sourceTree = ""; }; + 6FE9B54324B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeLiveMediaVerticalListTableViewCell.h; sourceTree = ""; }; 6FEC91A721A6B39A00AA50C8 /* TableLoadMoreFooterView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TableLoadMoreFooterView.h; sourceTree = ""; }; 6FEC91A821A6B39A00AA50C8 /* TableLoadMoreFooterView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TableLoadMoreFooterView.m; sourceTree = ""; }; 6FF3B68D2137DC8400F8A5E2 /* SRGContentProtection.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SRGContentProtection.framework; path = Carthage/Build/iOS/Static/SRGContentProtection.framework; sourceTree = ""; }; @@ -2903,6 +2910,11 @@ 08C68ECE1D38DEA100BB8AAA /* Home */ = { isa = PBXGroup; children = ( + 0887824723AD61D400629312 /* HomeLiveMediaCollectionViewCell.h */, + 0887824823AD61D500629312 /* HomeLiveMediaCollectionViewCell.m */, + 0887824923AD61D500629312 /* HomeLiveMediaCollectionViewCell.xib */, + 6FE9B54324B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.h */, + 6FE9B54224B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m */, 082590ED1F054A6A00BB527C /* HomeMediaCollectionHeaderView.h */, 082590EE1F054A6A00BB527C /* HomeMediaCollectionHeaderView.m */, 082590EF1F054A6A00BB527C /* HomeMediaCollectionHeaderView.xib */, @@ -2942,9 +2954,6 @@ 6FAF42FE1EF7CD8A0074E033 /* HomeTopicViewController.m */, 08C68ECF1D38DEA100BB8AAA /* HomeViewController.h */, 08C68ED01D38DEA100BB8AAA /* HomeViewController.m */, - 0887824723AD61D400629312 /* HomeLiveMediaCollectionViewCell.h */, - 0887824823AD61D500629312 /* HomeLiveMediaCollectionViewCell.m */, - 0887824923AD61D500629312 /* HomeLiveMediaCollectionViewCell.xib */, ); path = Home; sourceTree = ""; @@ -5789,6 +5798,7 @@ 081220AA1DD079BB00BF8326 /* DownloadsViewController.m in Sources */, 0804917B22832C5D00E4CEC2 /* HomeShowCollectionViewCell.m in Sources */, 6FB0AEFC217F4975009D707A /* SRGMediaComposition+PlaySRG.m in Sources */, + 6FE9B54424B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m in Sources */, 6FF7BB9722A78DE400FA758A /* SearchSettingSwitchCell.m in Sources */, E694A9F51D65F02700372DF0 /* CalendarViewController.m in Sources */, 6F80106920443230009FE197 /* PlayApplication.m in Sources */, @@ -5971,6 +5981,7 @@ 6F475FC91EB37BC6003021EA /* MediasViewController.m in Sources */, 6FE1B4981DCB84F00094D5BA /* AnalyticsConstants.m in Sources */, 6FF7BBA722A78DE400FA758A /* SearchSettingSelectorCell.m in Sources */, + 6FE9B54524B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m in Sources */, 6F5F4FC51DB10CFD0011CCA3 /* RelatedContentView.m in Sources */, 6F475FBF1EB37BC6003021EA /* DataViewController.m in Sources */, 0801E07C1D4A4A810008021E /* RadioChannel.m in Sources */, @@ -6147,6 +6158,7 @@ 6F475FCA1EB37BC6003021EA /* MediasViewController.m in Sources */, 6FE1B4991DCB84F00094D5BA /* AnalyticsConstants.m in Sources */, 6FF7BBA822A78DE400FA758A /* SearchSettingSelectorCell.m in Sources */, + 6FE9B54624B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m in Sources */, 6F5F4FC61DB10CFD0011CCA3 /* RelatedContentView.m in Sources */, 6F475FC01EB37BC6003021EA /* DataViewController.m in Sources */, 0801E07D1D4A4A810008021E /* RadioChannel.m in Sources */, @@ -6323,6 +6335,7 @@ 6F475FCB1EB37BC6003021EA /* MediasViewController.m in Sources */, 6FE1B49A1DCB84F00094D5BA /* AnalyticsConstants.m in Sources */, 6FF7BBA922A78DE400FA758A /* SearchSettingSelectorCell.m in Sources */, + 6FE9B54724B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m in Sources */, 6F5F4FC71DB10CFD0011CCA3 /* RelatedContentView.m in Sources */, 6F475FC11EB37BC6003021EA /* DataViewController.m in Sources */, 0801E07E1D4A4A810008021E /* RadioChannel.m in Sources */, @@ -6499,6 +6512,7 @@ 6F475FCC1EB37BC6003021EA /* MediasViewController.m in Sources */, 6FE1B49B1DCB84F00094D5BA /* AnalyticsConstants.m in Sources */, 6FF7BBAA22A78DE400FA758A /* SearchSettingSelectorCell.m in Sources */, + 6FE9B54824B84748001D95E5 /* HomeLiveMediaVerticalListTableViewCell.m in Sources */, 6F5F4FC81DB10CFD0011CCA3 /* RelatedContentView.m in Sources */, 6F475FC21EB37BC6003021EA /* DataViewController.m in Sources */, 0801E07F1D4A4A810008021E /* RadioChannel.m in Sources */, From c34f5162f16d9f1104acf71534302f340561f50e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Fri, 10 Jul 2020 09:44:37 +0200 Subject: [PATCH 23/55] Use non-featured size for all live cells --- Application/Sources/Home/HomeViewController.m | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Application/Sources/Home/HomeViewController.m b/Application/Sources/Home/HomeViewController.m index 1fb4c59bd..1a11a55d4 100755 --- a/Application/Sources/Home/HomeViewController.m +++ b/Application/Sources/Home/HomeViewController.m @@ -396,12 +396,7 @@ - (HomeSectionInfo *)infoForHomeSection:(HomeSection)homeSection withObject:(id) - (BOOL)isFeaturedInSection:(NSUInteger)section { - if (self.applicationSectionInfo.applicationSection == ApplicationSectionLive) { - return YES; - } - else { - return section == 0; - } + return section == 0; } - (HomeHeaderType)headerTypeForHomeSectionInfo:(HomeSectionInfo *)homeSectionInfo tableView:(UITableView *)tableView inSection:(NSUInteger)section From 2b4eefdfc8a4749acdbac482b322b7461cecf206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Fri, 10 Jul 2020 10:05:57 +0200 Subject: [PATCH 24/55] Remove recent livestream restoration --- .../Home/HomeLiveMediaCollectionViewCell.m | 15 ---------- .../Home/HomeLiveMediaCollectionViewCell.xib | 17 +---------- .../HomeLiveMediaVerticalListTableViewCell.m | 15 +--------- .../Sources/Home/HomeMediaListTableViewCell.m | 15 +--------- Application/Sources/Home/HomeSectionInfo.m | 28 ++----------------- .../Player/MediaPlayerViewController.m | 1 - .../Sources/Settings/ApplicationSettings.h | 6 ---- .../Sources/Settings/ApplicationSettings.m | 26 ----------------- 8 files changed, 6 insertions(+), 117 deletions(-) diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m index 8367f5db8..4212d11c5 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m @@ -35,7 +35,6 @@ @interface HomeLiveMediaCollectionViewCell () @property (nonatomic, weak) IBOutlet UIImageView *placeholderImageView; @property (nonatomic, weak) IBOutlet UIImageView *logoImageView; -@property (nonatomic, weak) IBOutlet UILabel *recentLabel; @property (nonatomic, weak) IBOutlet UILabel *titleLabel; @property (nonatomic, weak) IBOutlet UILabel *subtitleLabel; @property (nonatomic, weak) IBOutlet UIImageView *thumbnailImageView; @@ -78,12 +77,6 @@ - (void)awakeFromNib self.thumbnailImageView.layer.cornerRadius = LayoutStandardViewCornerRadius; self.thumbnailImageView.layer.masksToBounds = YES; - self.recentLabel.layer.cornerRadius = LayoutStandardLabelCornerRadius; - self.recentLabel.layer.masksToBounds = YES; - self.recentLabel.backgroundColor = UIColor.play_blackDurationLabelBackgroundColor; - self.recentLabel.text = [NSString stringWithFormat:@" %@ ", NSLocalizedString(@"Last played", @"Label on recently played livestreams").uppercaseString]; - self.recentLabel.hidden = YES; - self.durationLabel.backgroundColor = UIColor.play_blackDurationLabelBackgroundColor; self.blockingOverlayView.hidden = YES; @@ -148,10 +141,6 @@ - (NSString *)accessibilityLabel SRGChannel *channel = self.programComposition.channel ?: self.media.channel; if (channel) { NSMutableString *accessibilityLabel = [NSMutableString stringWithFormat:PlaySRGAccessibilityLocalizedString(@"%@ live", @"Live content label, with a channel title"), channel.title]; - if (! self.recentLabel.hidden) { - [accessibilityLabel appendFormat:@", %@", PlaySRGAccessibilityLocalizedString(@"Last played", @"Label on recently played livestreams")]; - } - SRGProgram *currentProgram = [self.programComposition play_programAtDate:NSDate.date]; if (currentProgram) { [accessibilityLabel appendFormat:@", %@", currentProgram.title]; @@ -220,10 +209,6 @@ - (void)reloadData self.titleLabel.font = [UIFont srg_mediumFontWithTextStyle:SRGAppearanceFontTextStyleBody]; self.durationLabel.font = [UIFont srg_mediumFontWithTextStyle:SRGAppearanceFontTextStyleCaption]; - self.recentLabel.font = [UIFont srg_mediumFontWithTextStyle:SRGAppearanceFontTextStyleCaption]; - self.recentLabel.hidden = ! [self.media.URN isEqualToString:ApplicationSettingLastSelectedTVLivestreamURN()] - && ! [self.media.URN isEqualToString:ApplicationSettingLastSelectedRadioLivestreamURN()]; - SRGBlockingReason blockingReason = [self.media blockingReasonAtDate:NSDate.date]; if (blockingReason == SRGBlockingReasonNone || blockingReason == SRGBlockingReasonStartDate) { self.blockingOverlayView.hidden = YES; diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib index e10483cdd..48c15c622 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib @@ -1,5 +1,5 @@ - + @@ -147,22 +147,9 @@ - - @@ -171,7 +158,6 @@ - @@ -202,7 +188,6 @@ - diff --git a/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m b/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m index 269f5d02b..0ffa7d811 100755 --- a/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m @@ -121,20 +121,7 @@ - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPa { if (! [self isEmpty]) { SRGMedia *media = self.homeSectionInfo.items[indexPath.row]; - - HomeSection homeSection = self.homeSectionInfo.homeSection; - if (homeSection == HomeSectionTVLive) { - ApplicationSettingSetLastSelectedTVLivestreamURN(media.URN); - } - else if (homeSection == HomeSectionRadioLive) { - ApplicationSettingSetLastSelectedRadioLivestreamURN(media.URN); - } - [self.nearestViewController play_presentMediaPlayerWithMedia:media position:nil airPlaySuggestions:YES fromPushNotification:NO animated:YES completion:^(PlayerType playerType) { - // Reset scrolling to the origin after playing a livestream, as the last played item is presented first - if (homeSection == HomeSectionTVLive || homeSection == HomeSectionRadioLive) { - self.collectionView.contentOffset = CGPointMake(0.f, self.collectionView.contentOffset.y); - } - }]; + [self.nearestViewController play_presentMediaPlayerWithMedia:media position:nil airPlaySuggestions:YES fromPushNotification:NO animated:YES completion:nil]; } } diff --git a/Application/Sources/Home/HomeMediaListTableViewCell.m b/Application/Sources/Home/HomeMediaListTableViewCell.m index 876ee1966..311de474d 100755 --- a/Application/Sources/Home/HomeMediaListTableViewCell.m +++ b/Application/Sources/Home/HomeMediaListTableViewCell.m @@ -214,20 +214,7 @@ - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPa { if (! [self isEmpty]) { SRGMedia *media = self.homeSectionInfo.items[indexPath.row]; - - HomeSection homeSection = self.homeSectionInfo.homeSection; - if (homeSection == HomeSectionTVLive) { - ApplicationSettingSetLastSelectedTVLivestreamURN(media.URN); - } - else if (homeSection == HomeSectionRadioLive) { - ApplicationSettingSetLastSelectedRadioLivestreamURN(media.URN); - } - [self.nearestViewController play_presentMediaPlayerWithMedia:media position:nil airPlaySuggestions:YES fromPushNotification:NO animated:YES completion:^(PlayerType playerType) { - // Reset scrolling to the origin after playing a livestream, as the last played item is presented first - if (homeSection == HomeSectionTVLive || homeSection == HomeSectionRadioLive) { - self.collectionView.contentOffset = CGPointMake(0.f, self.collectionView.contentOffset.y); - } - }]; + [self.nearestViewController play_presentMediaPlayerWithMedia:media position:nil airPlaySuggestions:YES fromPushNotification:NO animated:YES completion:nil]; } } diff --git a/Application/Sources/Home/HomeSectionInfo.m b/Application/Sources/Home/HomeSectionInfo.m index d6dd0f2be..ea0f198c6 100755 --- a/Application/Sources/Home/HomeSectionInfo.m +++ b/Application/Sources/Home/HomeSectionInfo.m @@ -19,23 +19,6 @@ #import #import -static NSArray *HomeSectionReorderedMedias(NSArray *medias, NSString *firstURN) -{ - NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(SRGMedia * _Nullable media, NSDictionary * _Nullable bindings) { - return [media.URN isEqualToString:firstURN]; - }]; - SRGMedia *firstMedia = [medias filteredArrayUsingPredicate:predicate].firstObject; - if (firstMedia) { - NSMutableArray *reorderedMedias = medias.mutableCopy; - [reorderedMedias removeObject:firstMedia]; - [reorderedMedias insertObject:firstMedia atIndex:0]; - return reorderedMedias.copy; - } - else { - return medias; - } -} - @interface HomeSectionInfo () @property (nonatomic) HomeSection homeSection; @@ -267,9 +250,7 @@ - (void)refreshWithRequestQueue:(SRGRequestQueue *)requestQueue page:(SRGPage *) case HomeSectionTVLive: { SRGBaseRequest *request = [SRGDataProvider.currentDataProvider tvLivestreamsForVendor:vendor withCompletionBlock:^(NSArray * _Nullable medias, NSHTTPURLResponse * _Nullable HTTPResponse, NSError * _Nullable error) { [requestQueue reportError:error]; - - NSString *lastSelectedURN = ApplicationSettingLastSelectedTVLivestreamURN(); - paginatedItemListCompletionBlock(HomeSectionReorderedMedias(medias, lastSelectedURN), [SRGPage new] /* The request does not support pagination, but we need to return a page */, nil, HTTPResponse, error); + paginatedItemListCompletionBlock(medias, [SRGPage new] /* The request does not support pagination, but we need to return a page */, nil, HTTPResponse, error); }]; [requestQueue addRequest:request resume:YES]; break; @@ -366,17 +347,14 @@ - (void)refreshWithRequestQueue:(SRGRequestQueue *)requestQueue page:(SRGPage *) if (self.identifier) { SRGRequest *request = [SRGDataProvider.currentDataProvider radioLivestreamsForVendor:vendor channelUid:self.identifier withCompletionBlock:^(NSArray * _Nullable medias, NSHTTPURLResponse * _Nullable HTTPResponse, NSError * _Nullable error) { [requestQueue reportError:error]; - - NSString *lastSelectedURN = ApplicationSettingLastSelectedRadioLivestreamURN(); - paginatedItemListCompletionBlock(HomeSectionReorderedMedias(medias, lastSelectedURN), [SRGPage new] /* The request does not support pagination, but we need to return a page */, nil, HTTPResponse, error); + paginatedItemListCompletionBlock(medias, [SRGPage new] /* The request does not support pagination, but we need to return a page */, nil, HTTPResponse, error); }]; [requestQueue addRequest:request resume:YES]; } else { [self refreshRadioLivestreamsForVendor:vendor withRequestQueue:requestQueue completionBlock:^(NSArray * _Nullable medias, NSHTTPURLResponse * _Nullable HTTPResponse, NSError * _Nullable error) { // Error reporting is done by the refresh method directly, do not report twice here - NSString *lastSelectedURN = ApplicationSettingLastSelectedRadioLivestreamURN(); - paginatedItemListCompletionBlock(HomeSectionReorderedMedias(medias, lastSelectedURN), [SRGPage new] /* The request does not support pagination, but we need to return a page */, nil, HTTPResponse, error); + paginatedItemListCompletionBlock(medias, [SRGPage new] /* The request does not support pagination, but we need to return a page */, nil, HTTPResponse, error); }]; } break; diff --git a/Application/Sources/Player/MediaPlayerViewController.m b/Application/Sources/Player/MediaPlayerViewController.m index 5d85c0a19..89b675eeb 100755 --- a/Application/Sources/Player/MediaPlayerViewController.m +++ b/Application/Sources/Player/MediaPlayerViewController.m @@ -2091,7 +2091,6 @@ - (IBAction)selectLivestreamMedia:(id)sender [self.livestreamMedias enumerateObjectsUsingBlock:^(SRGMedia * _Nonnull media, NSUInteger idx, BOOL * _Nonnull stop) { [alertController addAction:[UIAlertAction actionWithTitle:media.title style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { - ApplicationSettingSetLastSelectedRadioLivestreamURN(media.URN); ApplicationSettingSetSelectedLivestreamURNForChannelUid(media.channel.uid, media.URN); // Use the playback state if playing diff --git a/Application/Sources/Settings/ApplicationSettings.h b/Application/Sources/Settings/ApplicationSettings.h index 9b4cde7a5..ea5d1a9c4 100755 --- a/Application/Sources/Settings/ApplicationSettings.h +++ b/Application/Sources/Settings/ApplicationSettings.h @@ -70,12 +70,6 @@ OBJC_EXPORT BOOL ApplicationSettingBackgroundVideoPlaybackEnabled(void); OBJC_EXPORT BOOL ApplicationSettingSubtitleAvailabilityDisplayed(void); OBJC_EXPORT BOOL ApplicationSettingAudioDescriptionAvailabilityDisplayed(void); -OBJC_EXPORT NSString * _Nullable ApplicationSettingLastSelectedTVLivestreamURN(void); -OBJC_EXPORT void ApplicationSettingSetLastSelectedTVLivestreamURN(NSString * _Nullable mediaURN); - -OBJC_EXPORT NSString * _Nullable ApplicationSettingLastSelectedRadioLivestreamURN(void); -OBJC_EXPORT void ApplicationSettingSetLastSelectedRadioLivestreamURN(NSString * _Nullable mediaURN); - OBJC_EXPORT NSString * _Nullable ApplicationSettingSelectedLivestreamURNForChannelUid(NSString * _Nullable channelUid); OBJC_EXPORT void ApplicationSettingSetSelectedLivestreamURNForChannelUid(NSString * channelUid, NSString * _Nullable mediaURN); diff --git a/Application/Sources/Settings/ApplicationSettings.m b/Application/Sources/Settings/ApplicationSettings.m index 013e43981..0f41c311f 100755 --- a/Application/Sources/Settings/ApplicationSettings.m +++ b/Application/Sources/Settings/ApplicationSettings.m @@ -30,8 +30,6 @@ NSString * const PlaySRGSettingLastOpenedRadioChannelUid = @"PlaySRGSettingLastOpenedRadioChannelUid"; NSString * const PlaySRGSettingLastOpenedTabBarItem = @"PlaySRGSettingLastOpenedTabBarItem"; NSString * const PlaySRGSettingSelectedLivestreamURNForChannels = @"PlaySRGSettingSelectedLiveStreamURNForChannels"; -NSString * const PlaySRGSettingSelectedTVLivestreamURN = @"PlaySRGSettingSelectedTVLivestreamURN"; -NSString * const PlaySRGSettingSelectedRadioLivestreamURN = @"PlaySRGSettingSelectedRadioLivestreamURN"; NSString * const PlaySRGSettingServiceURL = @"PlaySRGSettingServiceURL"; NSString * const PlaySRGSettingUserLocation = @"PlaySRGSettingUserLocation"; @@ -202,30 +200,6 @@ BOOL ApplicationSettingAudioDescriptionAvailabilityDisplayed(void) return UIAccessibilityIsVoiceOverRunning() || [NSUserDefaults.standardUserDefaults boolForKey:PlaySRGSettingAudioDescriptionAvailabilityDisplayed]; } -NSString *ApplicationSettingLastSelectedTVLivestreamURN(void) -{ - return [NSUserDefaults.standardUserDefaults stringForKey:PlaySRGSettingSelectedTVLivestreamURN]; -} - -void ApplicationSettingSetLastSelectedTVLivestreamURN(NSString *mediaURN) -{ - NSUserDefaults *userDefaults = NSUserDefaults.standardUserDefaults; - [userDefaults setObject:mediaURN forKey:PlaySRGSettingSelectedTVLivestreamURN]; - [userDefaults synchronize]; -} - -NSString *ApplicationSettingLastSelectedRadioLivestreamURN(void) -{ - return [NSUserDefaults.standardUserDefaults stringForKey:PlaySRGSettingSelectedRadioLivestreamURN]; -} - -void ApplicationSettingSetLastSelectedRadioLivestreamURN(NSString *mediaURN) -{ - NSUserDefaults *userDefaults = NSUserDefaults.standardUserDefaults; - [userDefaults setObject:mediaURN forKey:PlaySRGSettingSelectedRadioLivestreamURN]; - [userDefaults synchronize]; -} - NSString *ApplicationSettingSelectedLivestreamURNForChannelUid(NSString *channelUid) { NSDictionary *selectedLivestreamURNForChannels = [NSUserDefaults.standardUserDefaults dictionaryForKey:PlaySRGSettingSelectedLivestreamURNForChannels]; From 39259bebee18b87c106347cc1c0dfeb98f0034ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Tue, 28 Jul 2020 08:17:55 +0200 Subject: [PATCH 25/55] Fix type mismatch --- Application/Sources/Helpers/PlayAccessibilityFormatter.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Application/Sources/Helpers/PlayAccessibilityFormatter.m b/Application/Sources/Helpers/PlayAccessibilityFormatter.m index 337d71f17..356190be7 100644 --- a/Application/Sources/Helpers/PlayAccessibilityFormatter.m +++ b/Application/Sources/Helpers/PlayAccessibilityFormatter.m @@ -14,7 +14,7 @@ static dispatch_once_t s_onceToken; dispatch_once(&s_onceToken, ^{ s_dateFormatter = [[NSDateFormatter alloc] init]; - s_dateFormatter.dateStyle = kCFDateFormatterLongStyle; + s_dateFormatter.dateStyle = NSDateFormatterLongStyle; s_dateFormatter.timeStyle = NSDateFormatterNoStyle; s_dateFormatter.doesRelativeDateFormatting = YES; }); From 301250dac6ce75420fe8030c0cf6d1c78d4c9797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Tue, 28 Jul 2020 08:18:06 +0200 Subject: [PATCH 26/55] Enable grid layout for satellite radios as well --- Application/Sources/Home/HomeSectionInfo.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Application/Sources/Home/HomeSectionInfo.m b/Application/Sources/Home/HomeSectionInfo.m index ea0f198c6..dd04dd355 100755 --- a/Application/Sources/Home/HomeSectionInfo.m +++ b/Application/Sources/Home/HomeSectionInfo.m @@ -79,7 +79,7 @@ - (Class)cellClass else if (self.homeSection == HomeSectionTVFavoriteShows || self.homeSection == HomeSectionRadioFavoriteShows) { return HomeShowListTableViewCell.class; } - else if (self.homeSection == HomeSectionTVLive || self.homeSection == HomeSectionRadioLive) { + else if (self.homeSection == HomeSectionTVLive || self.homeSection == HomeSectionRadioLive || self.homeSection == HomeSectionRadioLiveSatellite) { return HomeLiveMediaVerticalListTableViewCell.class; } else { From da3b66706f1d23f2e0da3a4a4b4345f720479dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 6 Aug 2020 15:43:41 +0200 Subject: [PATCH 27/55] Apply new live cell design --- .../Helpers/Categories/UILabel+PlaySRG.m | 33 ++- Application/Sources/Helpers/Layout.h | 2 +- Application/Sources/Helpers/Layout.m | 21 +- .../Sources/Helpers/PlayDurationFormatter.h | 5 - .../Sources/Helpers/PlayDurationFormatter.m | 29 --- .../Home/HomeLiveMediaCollectionViewCell.m | 66 +++++- .../Home/HomeLiveMediaCollectionViewCell.xib | 204 ++++++++---------- .../HomeLiveMediaVerticalListTableViewCell.m | 2 +- 8 files changed, 183 insertions(+), 179 deletions(-) diff --git a/Application/Sources/Helpers/Categories/UILabel+PlaySRG.m b/Application/Sources/Helpers/Categories/UILabel+PlaySRG.m index d0ef0d8b6..601132d1e 100755 --- a/Application/Sources/Helpers/Categories/UILabel+PlaySRG.m +++ b/Application/Sources/Helpers/Categories/UILabel+PlaySRG.m @@ -15,6 +15,35 @@ #import +static NSString *LabelFormattedDuration(NSTimeInterval duration) +{ + // Display days if > 24 hours + if (duration > 60. * 60. * 24.) { + static NSDateComponentsFormatter *s_dateComponentsFormatter; + static dispatch_once_t s_onceToken; + dispatch_once(&s_onceToken, ^{ + s_dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; + s_dateComponentsFormatter.allowedUnits = NSCalendarUnitDay; + s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; + }); + return [s_dateComponentsFormatter stringFromTimeInterval:duration]; + } + // Display hours if > 1 hour + else if (duration > 60. * 60.) { + static NSDateComponentsFormatter *s_dateComponentsFormatter; + static dispatch_once_t s_onceToken; + dispatch_once(&s_onceToken, ^{ + s_dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; + s_dateComponentsFormatter.allowedUnits = NSCalendarUnitHour; + s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; + }); + return [s_dateComponentsFormatter stringFromTimeInterval:duration]; + } + else { + return NSLocalizedString(@"less than 1 hour", @"Explains that a content has expired, will expire or will be available in less than one hour. Displayed in the media player view."); + } +} + @implementation UILabel (PlaySRG) #pragma mark Public @@ -38,13 +67,13 @@ - (void)play_displayAvailabilityLabelForMediaMetadata:(id)obje if (timeAvailability == SRGTimeAvailabilityNotAvailableAnymore) { NSDate *endDate = object.endDate ?: [object.date dateByAddingTimeInterval:object.duration / 1000.]; NSTimeInterval timeIntervalAfterEnd = [nowDate timeIntervalSinceDate:endDate]; - text = [NSString stringWithFormat:NSLocalizedString(@"Not available since %@", @"Explains that a content has expired (days or hours ago). Displayed in the media player view."), PlayShortFormattedDuration(timeIntervalAfterEnd)]; + text = [NSString stringWithFormat:NSLocalizedString(@"Not available since %@", @"Explains that a content has expired (days or hours ago). Displayed in the media player view."), LabelFormattedDuration(timeIntervalAfterEnd)]; } else if (timeAvailability == SRGTimeAvailabilityAvailable && object.endDate && object.contentType != SRGContentTypeScheduledLivestream && object.contentType != SRGContentTypeLivestream) { NSDateComponents *monthsDateComponents = [NSCalendar.currentCalendar components:NSCalendarUnitDay fromDate:nowDate toDate:object.endDate options:0]; if (monthsDateComponents.day <= 30) { NSTimeInterval timeIntervalBeforeEnd = [object.endDate timeIntervalSinceDate:nowDate]; - text = [NSString stringWithFormat:NSLocalizedString(@"Still available for %@", @"Explains that a content is still online (for days or hours) but will expire. Displayed in the media player view."), PlayShortFormattedDuration(timeIntervalBeforeEnd)]; + text = [NSString stringWithFormat:NSLocalizedString(@"Still available for %@", @"Explains that a content is still online (for days or hours) but will expire. Displayed in the media player view."), LabelFormattedDuration(timeIntervalBeforeEnd)]; } } diff --git a/Application/Sources/Helpers/Layout.h b/Application/Sources/Helpers/Layout.h index 6e32058ea..be974bc0b 100644 --- a/Application/Sources/Helpers/Layout.h +++ b/Application/Sources/Helpers/Layout.h @@ -74,7 +74,7 @@ OBJC_EXPORT CGFloat LayoutTableTopAlignedCellHeight(CGFloat contentHeight, CGFlo OBJC_EXPORT CGSize LayoutMediaStandardCollectionItemSize(CGFloat itemWidth, BOOL large); /** - * Live media cell (16:9 artwork + text area) size for collection layouts, for a given item width. + * Live media cell (16:9 artwork + progress area) size for collection layouts, for a given item width. * * @param itemWidth The width of the item. */ diff --git a/Application/Sources/Helpers/Layout.m b/Application/Sources/Helpers/Layout.m index af0b7b02e..6721f911b 100644 --- a/Application/Sources/Helpers/Layout.m +++ b/Application/Sources/Helpers/Layout.m @@ -130,26 +130,7 @@ CGSize LayoutMediaStandardCollectionItemSize(CGFloat itemWidth, BOOL large) CGSize LayoutLiveMediaStandardCollectionItemSize(CGFloat itemWidth) { - static NSDictionary *s_textHeights; - static dispatch_once_t s_onceToken; - dispatch_once(&s_onceToken, ^{ - s_textHeights = @{ UIContentSizeCategoryExtraSmall : @64, - UIContentSizeCategorySmall : @66, - UIContentSizeCategoryMedium : @68, - UIContentSizeCategoryLarge : @70, - UIContentSizeCategoryExtraLarge : @72, - UIContentSizeCategoryExtraExtraLarge : @74, - UIContentSizeCategoryExtraExtraExtraLarge : @76, - UIContentSizeCategoryAccessibilityMedium : @76, - UIContentSizeCategoryAccessibilityLarge : @76, - UIContentSizeCategoryAccessibilityExtraLarge : @76, - UIContentSizeCategoryAccessibilityExtraExtraLarge : @76, - UIContentSizeCategoryAccessibilityExtraExtraExtraLarge : @76 }; - }); - - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; - CGFloat minTextHeight = s_textHeights[contentSizeCategory].floatValue; - return CGSizeMake(itemWidth, ceilf(itemWidth * 9.f / 16.f + minTextHeight)); + return CGSizeMake(itemWidth, ceilf(itemWidth * 9.f / 16.f + 11.f)); } CGSize LayoutShowStandardCollectionItemSize(CGFloat itemWidth, BOOL large) diff --git a/Application/Sources/Helpers/PlayDurationFormatter.h b/Application/Sources/Helpers/PlayDurationFormatter.h index 0b9858c45..b85007f0b 100755 --- a/Application/Sources/Helpers/PlayDurationFormatter.h +++ b/Application/Sources/Helpers/PlayDurationFormatter.h @@ -18,9 +18,4 @@ OBJC_EXPORT NSString *PlayFormattedDuration(NSTimeInterval duration); */ OBJC_EXPORT NSString *PlayHumanReadableFormattedDuration(NSTimeInterval duration); -/** - * Formats a duration in a compact form, only telling number of days or hours. - */ -OBJC_EXPORT NSString *PlayShortFormattedDuration(NSTimeInterval duration); - NS_ASSUME_NONNULL_END diff --git a/Application/Sources/Helpers/PlayDurationFormatter.m b/Application/Sources/Helpers/PlayDurationFormatter.m index 61aa2fbab..7bccad76c 100755 --- a/Application/Sources/Helpers/PlayDurationFormatter.m +++ b/Application/Sources/Helpers/PlayDurationFormatter.m @@ -55,32 +55,3 @@ return [s_dateComponentsFormatter stringFromTimeInterval:duration]; } } - -NSString *PlayShortFormattedDuration(NSTimeInterval duration) -{ - // Display days if > 24 hours - if (duration > 60. * 60. * 24.) { - static NSDateComponentsFormatter *s_dateComponentsFormatter; - static dispatch_once_t s_onceToken; - dispatch_once(&s_onceToken, ^{ - s_dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; - s_dateComponentsFormatter.allowedUnits = NSCalendarUnitDay; - s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; - }); - return [s_dateComponentsFormatter stringFromTimeInterval:duration]; - } - // Display hours if > 1 hour - else if (duration > 60. * 60.) { - static NSDateComponentsFormatter *s_dateComponentsFormatter; - static dispatch_once_t s_onceToken; - dispatch_once(&s_onceToken, ^{ - s_dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; - s_dateComponentsFormatter.allowedUnits = NSCalendarUnitHour; - s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; - }); - return [s_dateComponentsFormatter stringFromTimeInterval:duration]; - } - else { - return NSLocalizedString(@"less than 1 hour", @"Explains that a content has expired, will expire or will be available in less than one hour. Displayed in the media player view."); - } -} diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m index 4212d11c5..c65190094 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m @@ -20,12 +20,59 @@ #import "SRGProgramComposition+PlaySRG.h" #import "UIColor+PlaySRG.h" #import "UIImageView+PlaySRG.h" -#import "UILabel+PlaySRG.h" #import #import #import +static NSString *RemainingTimeFormattedDuration(NSTimeInterval duration) +{ + // Display days if > 24 hours + if (duration > 60. * 60. * 24.) { + static NSDateComponentsFormatter *s_dateComponentsFormatter; + static dispatch_once_t s_onceToken; + dispatch_once(&s_onceToken, ^{ + s_dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; + s_dateComponentsFormatter.allowedUnits = NSCalendarUnitDay; + s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; + }); + return [s_dateComponentsFormatter stringFromTimeInterval:duration]; + } + // Display hours if > 1 hour + else if (duration > 60. * 60.) { + static NSDateComponentsFormatter *s_dateComponentsFormatter; + static dispatch_once_t s_onceToken; + dispatch_once(&s_onceToken, ^{ + s_dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; + s_dateComponentsFormatter.allowedUnits = NSCalendarUnitHour; + s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; + }); + return [s_dateComponentsFormatter stringFromTimeInterval:duration]; + } + // Display hours if > 1 hour + else if (duration > 60. * 60.) { + static NSDateComponentsFormatter *s_dateComponentsFormatter; + static dispatch_once_t s_onceToken; + dispatch_once(&s_onceToken, ^{ + s_dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; + s_dateComponentsFormatter.allowedUnits = NSCalendarUnitHour; + s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; + }); + return [s_dateComponentsFormatter stringFromTimeInterval:duration]; + } + // Display minutes (1 minute being the smallest) + else { + static NSDateComponentsFormatter *s_dateComponentsFormatter; + static dispatch_once_t s_onceToken; + dispatch_once(&s_onceToken, ^{ + s_dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; + s_dateComponentsFormatter.allowedUnits = NSCalendarUnitMinute; + s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; + }); + return [s_dateComponentsFormatter stringFromTimeInterval:fmax(60., duration)]; + } +} + @interface HomeLiveMediaCollectionViewCell () @property (nonatomic) SRGProgramComposition *programComposition; @@ -34,11 +81,11 @@ @interface HomeLiveMediaCollectionViewCell () @property (nonatomic, weak) IBOutlet UIView *placeholderView; @property (nonatomic, weak) IBOutlet UIImageView *placeholderImageView; +@property (nonatomic, weak) IBOutlet UIView *wrapperView; @property (nonatomic, weak) IBOutlet UIImageView *logoImageView; @property (nonatomic, weak) IBOutlet UILabel *titleLabel; @property (nonatomic, weak) IBOutlet UILabel *subtitleLabel; @property (nonatomic, weak) IBOutlet UIImageView *thumbnailImageView; -@property (nonatomic, weak) IBOutlet UILabel *durationLabel; @property (nonatomic, weak) IBOutlet UIView *blockingOverlayView; @property (nonatomic, weak) IBOutlet UIImageView *blockingReasonImageView; @@ -74,10 +121,9 @@ - (void)awakeFromNib self.subtitleLabel.textColor = UIColor.play_lightGrayColor; self.thumbnailImageView.backgroundColor = UIColor.play_grayThumbnailImageViewBackgroundColor; - self.thumbnailImageView.layer.cornerRadius = LayoutStandardViewCornerRadius; - self.thumbnailImageView.layer.masksToBounds = YES; - self.durationLabel.backgroundColor = UIColor.play_blackDurationLabelBackgroundColor; + self.wrapperView.layer.cornerRadius = LayoutStandardViewCornerRadius; + self.wrapperView.layer.masksToBounds = YES; self.blockingOverlayView.hidden = YES; } @@ -207,7 +253,6 @@ - (void)reloadData self.placeholderView.hidden = YES; self.titleLabel.font = [UIFont srg_mediumFontWithTextStyle:SRGAppearanceFontTextStyleBody]; - self.durationLabel.font = [UIFont srg_mediumFontWithTextStyle:SRGAppearanceFontTextStyleCaption]; SRGBlockingReason blockingReason = [self.media blockingReasonAtDate:NSDate.date]; if (blockingReason == SRGBlockingReasonNone || blockingReason == SRGBlockingReasonStartDate) { @@ -227,18 +272,17 @@ - (void)reloadData self.subtitleLabel.font = [UIFont srg_mediumFontWithTextStyle:subtitleTextStyle]; - [self.durationLabel play_displayDurationLabelForMediaMetadata:self.media]; - SRGChannel *channel = self.programComposition.channel ?: self.media.channel; if (channel) { UIImage *logoImage = channel.play_banner22Image; self.logoImageView.image = logoImage; - self.logoImageView.hidden = (logoImage == nil); SRGProgram *currentProgram = [self.programComposition play_programAtDate:NSDate.date]; if (currentProgram) { self.titleLabel.text = currentProgram.title; - self.subtitleLabel.text = [NSString stringWithFormat:@"%@ - %@", [NSDateFormatter.play_timeFormatter stringFromDate:currentProgram.startDate], [NSDateFormatter.play_timeFormatter stringFromDate:currentProgram.endDate]]; + + NSTimeInterval remainingTimeInterval = [currentProgram.endDate timeIntervalSinceDate:NSDate.date]; + self.subtitleLabel.text = [NSString stringWithFormat:NSLocalizedString(@"%@ remaining", "Text displayed on live cells telling how much time remains for a program currently on air"), RemainingTimeFormattedDuration(remainingTimeInterval)]; float progress = [NSDate.date timeIntervalSinceDate:currentProgram.startDate] / ([currentProgram.endDate timeIntervalSinceDate:currentProgram.startDate]); self.progressView.progress = fmaxf(fminf(progress, 1.f), 0.f); @@ -259,7 +303,7 @@ - (void)reloadData } else { self.titleLabel.text = self.media.title; - self.logoImageView.hidden = YES; + self.logoImageView.image = (self.media.mediaType == SRGMediaTypeAudio) ? RadioChannelBanner22Image(nil) : TVChannelBanner22Image(nil); NSString *showTitle = self.media.show.title; if (showTitle && ! [self.media.title containsString:showTitle]) { diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib index 48c15c622..17dc628a3 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib @@ -1,5 +1,5 @@ - + @@ -10,159 +10,143 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - - + + + + + + + + + + + + - + - - + + + + + + - - - - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + @@ -178,11 +162,10 @@ - + - @@ -191,8 +174,9 @@ + - + diff --git a/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m b/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m index 0ffa7d811..2da3994bd 100755 --- a/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m @@ -39,7 +39,7 @@ + (CGFloat)heightForHomeSectionInfo:(HomeSectionInfo *)homeSectionInfo bounds:(C + (CGSize)itemSizeForHomeSectionInfo:(HomeSectionInfo *)homeSectionInfo bounds:(CGRect)bounds { CGFloat itemWidth = LayoutCollectionItemOptimalWidth(LayoutCollectionViewCellStandardWidth, CGRectGetWidth(bounds), LayoutStandardMargin, LayoutStandardMargin, LayoutStandardMargin); - return LayoutMediaStandardCollectionItemSize(itemWidth, NO); + return LayoutLiveMediaStandardCollectionItemSize(itemWidth); } #pragma mark Object lifecycle From 546da6eea6a76b6367be9a904fdaed6c313ec969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 6 Aug 2020 18:17:51 +0200 Subject: [PATCH 28/55] Ensure correct layout for all font sizes --- .../Home/HomeLiveMediaCollectionViewCell.m | 17 +++++++++++++---- .../Home/HomeLiveMediaCollectionViewCell.xib | 1 + 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m index c65190094..4edb6dd76 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m @@ -92,6 +92,8 @@ @interface HomeLiveMediaCollectionViewCell () @property (nonatomic, weak) IBOutlet UIProgressView *progressView; +@property (nonatomic, weak) IBOutlet NSLayoutConstraint *topSpaceConstraint; + @property (nonatomic, weak) id channelRegistration; @end @@ -128,6 +130,13 @@ - (void)awakeFromNib self.blockingOverlayView.hidden = YES; } +- (void)layoutSubviews +{ + [super layoutSubviews]; + + self.topSpaceConstraint.constant = (CGRectGetWidth(self.frame) < 170.f) ? 4.f : 12.f; +} + - (void)prepareForReuse { [super prepareForReuse]; @@ -267,10 +276,10 @@ - (void)reloadData self.titleLabel.textColor = UIColor.play_lightGrayColor; } - SRGAppearanceFontTextStyle subtitleTextStyle = SRGAppearanceFontTextStyleSubtitle; + CGFloat subtitleFontSize = 11.f; ImageScale imageScale = ImageScaleMedium; - self.subtitleLabel.font = [UIFont srg_mediumFontWithTextStyle:subtitleTextStyle]; + self.subtitleLabel.font = [UIFont srg_mediumFontWithSize:subtitleFontSize]; SRGChannel *channel = self.programComposition.channel ?: self.media.channel; if (channel) { @@ -308,11 +317,11 @@ - (void)reloadData NSString *showTitle = self.media.show.title; if (showTitle && ! [self.media.title containsString:showTitle]) { NSMutableAttributedString *subtitle = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@ - ", showTitle] - attributes:@{ NSFontAttributeName : [UIFont srg_mediumFontWithTextStyle:subtitleTextStyle] }]; + attributes:@{ NSFontAttributeName : [UIFont srg_mediumFontWithSize:subtitleFontSize] }]; NSDateFormatter *dateFormatter = NSDateFormatter.play_relativeDateAndTimeFormatter; [subtitle appendAttributedString:[[NSAttributedString alloc] initWithString:[dateFormatter stringFromDate:self.media.date].play_localizedUppercaseFirstLetterString - attributes:@{ NSFontAttributeName : [UIFont srg_lightFontWithTextStyle:subtitleTextStyle] }]]; + attributes:@{ NSFontAttributeName : [UIFont srg_lightFontWithSize:subtitleFontSize] }]]; self.subtitleLabel.attributedText = subtitle.copy; } diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib index 17dc628a3..73d5d0783 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib @@ -174,6 +174,7 @@ + From 63378222bdc60fb8e30e1f8fa5620a2cca44e590 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 6 Aug 2020 18:38:55 +0200 Subject: [PATCH 29/55] Use content size category type consistently --- .../Sources/Downloads/DownloadTableViewCell.m | 2 +- Application/Sources/Helpers/Layout.m | 16 ++++++++-------- .../Sources/History/HistoryTableViewCell.m | 2 +- .../Notifications/NotificationTableViewCell.m | 2 +- .../SearchSettingMultiSelectionViewController.m | 2 +- .../Settings/SearchSettingsViewController.m | 4 ++-- .../Sources/UI/Views/MediaCollectionViewCell.m | 2 +- .../Sources/WatchLater/WatchLaterTableViewCell.m | 2 +- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Application/Sources/Downloads/DownloadTableViewCell.m b/Application/Sources/Downloads/DownloadTableViewCell.m index ec6b151e8..d9d5e5474 100755 --- a/Application/Sources/Downloads/DownloadTableViewCell.m +++ b/Application/Sources/Downloads/DownloadTableViewCell.m @@ -226,7 +226,7 @@ - (void)setDownload:(Download *)download [self.webFirstLabel play_setWebFirstBadge]; // Have content fit in (almost) constant size vertically by reducing the title number of lines when a tag is displayed - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; if (SRGAppearanceCompareContentSizeCategories(contentSizeCategory, UIContentSizeCategoryExtraLarge) == NSOrderedDescending) { self.titleLabel.numberOfLines = isWebFirst ? 1 : 2; } diff --git a/Application/Sources/Helpers/Layout.m b/Application/Sources/Helpers/Layout.m index 6721f911b..486a6e98c 100644 --- a/Application/Sources/Helpers/Layout.m +++ b/Application/Sources/Helpers/Layout.m @@ -33,7 +33,7 @@ CGFloat LayoutCollectionItemFeaturedWidth(CGFloat layoutWidth) CGFloat LayoutStandardTableSectionHeaderHeight(BOOL hasBackgroundColor) { - static NSDictionary *s_headerHeights; + static NSDictionary *s_headerHeights; static dispatch_once_t s_onceToken; dispatch_once(&s_onceToken, ^{ s_headerHeights = @{ UIContentSizeCategoryExtraSmall : @25, @@ -50,7 +50,7 @@ CGFloat LayoutStandardTableSectionHeaderHeight(BOOL hasBackgroundColor) UIContentSizeCategoryAccessibilityExtraExtraExtraLarge : @40 }; }); - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; CGFloat headerHeight = s_headerHeights[contentSizeCategory].floatValue; if (hasBackgroundColor) { headerHeight += 6.f; @@ -60,7 +60,7 @@ CGFloat LayoutStandardTableSectionHeaderHeight(BOOL hasBackgroundColor) CGFloat LayoutStandardSimpleTableCellHeight(void) { - static NSDictionary *s_heights; + static NSDictionary *s_heights; static dispatch_once_t s_onceToken; dispatch_once(&s_onceToken, ^{ s_heights = @{ UIContentSizeCategoryExtraSmall : @42, @@ -76,7 +76,7 @@ CGFloat LayoutStandardSimpleTableCellHeight(void) UIContentSizeCategoryAccessibilityExtraExtraLarge : @62, UIContentSizeCategoryAccessibilityExtraExtraExtraLarge : @62 }; }); - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; return s_heights[contentSizeCategory].floatValue; } @@ -123,7 +123,7 @@ CGSize LayoutMediaStandardCollectionItemSize(CGFloat itemWidth, BOOL large) UIContentSizeCategoryAccessibilityExtraExtraExtraLarge : @90 }; }); - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; CGFloat minTextHeight = large ? s_largeTextHeights[contentSizeCategory].floatValue : s_standardTextHeights[contentSizeCategory].floatValue; return CGSizeMake(itemWidth, ceilf(itemWidth * 9.f / 16.f + minTextHeight)); } @@ -135,8 +135,8 @@ CGSize LayoutLiveMediaStandardCollectionItemSize(CGFloat itemWidth) CGSize LayoutShowStandardCollectionItemSize(CGFloat itemWidth, BOOL large) { - static NSDictionary *s_largeTextHeights; - static NSDictionary *s_standardTextHeights; + static NSDictionary *s_largeTextHeights; + static NSDictionary *s_standardTextHeights; static dispatch_once_t s_onceToken; dispatch_once(&s_onceToken, ^{ s_largeTextHeights = @{ UIContentSizeCategoryExtraSmall : @28, @@ -166,7 +166,7 @@ CGSize LayoutShowStandardCollectionItemSize(CGFloat itemWidth, BOOL large) UIContentSizeCategoryAccessibilityExtraExtraExtraLarge : @36 }; }); - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; CGFloat minTextHeight = large ? s_largeTextHeights[contentSizeCategory].floatValue : s_standardTextHeights[contentSizeCategory].floatValue; return CGSizeMake(itemWidth, ceilf(itemWidth * 9.f / 16.f + minTextHeight)); } diff --git a/Application/Sources/History/HistoryTableViewCell.m b/Application/Sources/History/HistoryTableViewCell.m index 1ccbf5230..85ad840b6 100755 --- a/Application/Sources/History/HistoryTableViewCell.m +++ b/Application/Sources/History/HistoryTableViewCell.m @@ -271,7 +271,7 @@ - (void)setMedia:(SRGMedia *)media [self.subtitlesLabel play_setSubtitlesAvailableBadge]; // Have content fit in (almost) constant size vertically by reducing the title number of lines when a tag is displayed - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; if (SRGAppearanceCompareContentSizeCategories(contentSizeCategory, UIContentSizeCategoryExtraLarge) == NSOrderedDescending) { self.titleLabel.numberOfLines = (isWebFirst || hasSubtitles || hasAudioDescription) ? 1 : 2; } diff --git a/Application/Sources/Notifications/NotificationTableViewCell.m b/Application/Sources/Notifications/NotificationTableViewCell.m index 88ed5d0d3..21dfb5ec1 100755 --- a/Application/Sources/Notifications/NotificationTableViewCell.m +++ b/Application/Sources/Notifications/NotificationTableViewCell.m @@ -103,7 +103,7 @@ - (void)setNotification:(Notification *)notification self.dateLabel.font = [UIFont srg_lightFontWithTextStyle:SRGAppearanceFontTextStyleSubtitle]; // Have content fit in (almost) constant size vertically by reducing the title number of lines when a tag is displayed - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; if (SRGAppearanceCompareContentSizeCategories(contentSizeCategory, UIContentSizeCategoryExtraLarge) == NSOrderedDescending) { self.subtitleLabel.numberOfLines = 1; } diff --git a/Application/Sources/Search/Settings/SearchSettingMultiSelectionViewController.m b/Application/Sources/Search/Settings/SearchSettingMultiSelectionViewController.m index 1959a9db0..3a213061e 100644 --- a/Application/Sources/Search/Settings/SearchSettingMultiSelectionViewController.m +++ b/Application/Sources/Search/Settings/SearchSettingMultiSelectionViewController.m @@ -160,7 +160,7 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; if (SRGAppearanceCompareContentSizeCategories(contentSizeCategory, UIContentSizeCategoryExtraLarge) == NSOrderedDescending) { return 55.f; } diff --git a/Application/Sources/Search/Settings/SearchSettingsViewController.m b/Application/Sources/Search/Settings/SearchSettingsViewController.m index e5727f6a2..536070c09 100644 --- a/Application/Sources/Search/Settings/SearchSettingsViewController.m +++ b/Application/Sources/Search/Settings/SearchSettingsViewController.m @@ -659,7 +659,7 @@ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPa { SearchSettingSectionType sectionType = [self sectionTypesForTableView:tableView][indexPath.section]; if (sectionType == SearchSettingSectionTypePeriod) { - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; if (SRGAppearanceCompareContentSizeCategories(contentSizeCategory, UIContentSizeCategoryExtraLarge) == NSOrderedDescending) { return 45.f; } @@ -671,7 +671,7 @@ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPa } } else { - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; if (SRGAppearanceCompareContentSizeCategories(contentSizeCategory, UIContentSizeCategoryExtraLarge) == NSOrderedDescending) { return 55.f; } diff --git a/Application/Sources/UI/Views/MediaCollectionViewCell.m b/Application/Sources/UI/Views/MediaCollectionViewCell.m index 67b9eeee1..68c2a2a50 100755 --- a/Application/Sources/UI/Views/MediaCollectionViewCell.m +++ b/Application/Sources/UI/Views/MediaCollectionViewCell.m @@ -239,7 +239,7 @@ - (void)setMedia:(SRGMedia *)media withDateFormatter:(NSDateFormatter *)dateForm // Have content fit in (almost) constant size vertically by reducing the title number of lines when a tag is displayed if (self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact) { - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; if (SRGAppearanceCompareContentSizeCategories(contentSizeCategory, UIContentSizeCategoryExtraLarge) == NSOrderedDescending) { self.titleLabel.numberOfLines = (isWebFirst || hasSubtitles || hasAudioDescription) ? 1 : 2; } diff --git a/Application/Sources/WatchLater/WatchLaterTableViewCell.m b/Application/Sources/WatchLater/WatchLaterTableViewCell.m index 5c8f8f8c6..5d9fb1cdb 100755 --- a/Application/Sources/WatchLater/WatchLaterTableViewCell.m +++ b/Application/Sources/WatchLater/WatchLaterTableViewCell.m @@ -271,7 +271,7 @@ - (void)setMedia:(SRGMedia *)media [self.subtitlesLabel play_setSubtitlesAvailableBadge]; // Have content fit in (almost) constant size vertically by reducing the title number of lines when a tag is displayed - NSString *contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; + UIContentSizeCategory contentSizeCategory = UIApplication.sharedApplication.preferredContentSizeCategory; if (SRGAppearanceCompareContentSizeCategories(contentSizeCategory, UIContentSizeCategoryExtraLarge) == NSOrderedDescending) { self.titleLabel.numberOfLines = (isWebFirst || hasSubtitles || hasAudioDescription) ? 1 : 2; } From 5168a252a08d5676e288dab207a2f8e8ec1740e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Thu, 6 Aug 2020 18:49:01 +0200 Subject: [PATCH 30/55] Fix text colors --- Application/Sources/Home/HomeLiveMediaCollectionViewCell.m | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m index 4edb6dd76..b5480ef24 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m @@ -120,7 +120,8 @@ - (void)awakeFromNib self.progressView.progressTintColor = UIColor.play_progressRedColor; - self.subtitleLabel.textColor = UIColor.play_lightGrayColor; + self.titleLabel.textColor = UIColor.whiteColor; + self.subtitleLabel.textColor = UIColor.whiteColor; self.thumbnailImageView.backgroundColor = UIColor.play_grayThumbnailImageViewBackgroundColor; @@ -266,14 +267,10 @@ - (void)reloadData SRGBlockingReason blockingReason = [self.media blockingReasonAtDate:NSDate.date]; if (blockingReason == SRGBlockingReasonNone || blockingReason == SRGBlockingReasonStartDate) { self.blockingOverlayView.hidden = YES; - - self.titleLabel.textColor = UIColor.whiteColor; } else { self.blockingOverlayView.hidden = NO; self.blockingReasonImageView.image = [UIImage play_imageForBlockingReason:blockingReason]; - - self.titleLabel.textColor = UIColor.play_lightGrayColor; } CGFloat subtitleFontSize = 11.f; From 6000348321ade680d91a9735659d4d501253c6fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Fri, 7 Aug 2020 07:58:07 +0200 Subject: [PATCH 31/55] Increase cell size on wide layouts --- .../Sources/Home/HomeLiveMediaVerticalListTableViewCell.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m b/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m index 2da3994bd..476b4406c 100755 --- a/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaVerticalListTableViewCell.m @@ -38,7 +38,8 @@ + (CGFloat)heightForHomeSectionInfo:(HomeSectionInfo *)homeSectionInfo bounds:(C + (CGSize)itemSizeForHomeSectionInfo:(HomeSectionInfo *)homeSectionInfo bounds:(CGRect)bounds { - CGFloat itemWidth = LayoutCollectionItemOptimalWidth(LayoutCollectionViewCellStandardWidth, CGRectGetWidth(bounds), LayoutStandardMargin, LayoutStandardMargin, LayoutStandardMargin); + CGFloat approximateWidth = (CGRectGetWidth(bounds) < 1000.f) ? LayoutCollectionViewCellStandardWidth : 275.f; + CGFloat itemWidth = LayoutCollectionItemOptimalWidth(approximateWidth, CGRectGetWidth(bounds), LayoutStandardMargin, LayoutStandardMargin, LayoutStandardMargin); return LayoutLiveMediaStandardCollectionItemSize(itemWidth); } From 8fa79203e49c0571efd556d73fbdaeb2b6887d54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Mon, 10 Aug 2020 10:34:53 +0200 Subject: [PATCH 32/55] Fix formatter --- .../Home/HomeLiveMediaCollectionViewCell.m | 24 +------------------ 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m index b5480ef24..8b8a65f16 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m @@ -27,30 +27,8 @@ static NSString *RemainingTimeFormattedDuration(NSTimeInterval duration) { - // Display days if > 24 hours - if (duration > 60. * 60. * 24.) { - static NSDateComponentsFormatter *s_dateComponentsFormatter; - static dispatch_once_t s_onceToken; - dispatch_once(&s_onceToken, ^{ - s_dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; - s_dateComponentsFormatter.allowedUnits = NSCalendarUnitDay; - s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; - }); - return [s_dateComponentsFormatter stringFromTimeInterval:duration]; - } - // Display hours if > 1 hour - else if (duration > 60. * 60.) { - static NSDateComponentsFormatter *s_dateComponentsFormatter; - static dispatch_once_t s_onceToken; - dispatch_once(&s_onceToken, ^{ - s_dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; - s_dateComponentsFormatter.allowedUnits = NSCalendarUnitHour; - s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; - }); - return [s_dateComponentsFormatter stringFromTimeInterval:duration]; - } // Display hours if > 1 hour - else if (duration > 60. * 60.) { + if (duration > 60. * 60.) { static NSDateComponentsFormatter *s_dateComponentsFormatter; static dispatch_once_t s_onceToken; dispatch_once(&s_onceToken, ^{ From b6e6ae0e5699f5e60b1908e85560682964e84b69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Mon, 10 Aug 2020 10:41:12 +0200 Subject: [PATCH 33/55] Display full units --- Application/Sources/Helpers/Categories/UILabel+PlaySRG.m | 6 ++---- Application/Sources/Home/HomeLiveMediaCollectionViewCell.m | 5 ++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/Application/Sources/Helpers/Categories/UILabel+PlaySRG.m b/Application/Sources/Helpers/Categories/UILabel+PlaySRG.m index 601132d1e..1ae2959ab 100755 --- a/Application/Sources/Helpers/Categories/UILabel+PlaySRG.m +++ b/Application/Sources/Helpers/Categories/UILabel+PlaySRG.m @@ -17,8 +17,7 @@ static NSString *LabelFormattedDuration(NSTimeInterval duration) { - // Display days if > 24 hours - if (duration > 60. * 60. * 24.) { + if (duration >= 60. * 60. * 24.) { static NSDateComponentsFormatter *s_dateComponentsFormatter; static dispatch_once_t s_onceToken; dispatch_once(&s_onceToken, ^{ @@ -28,8 +27,7 @@ }); return [s_dateComponentsFormatter stringFromTimeInterval:duration]; } - // Display hours if > 1 hour - else if (duration > 60. * 60.) { + else if (duration >= 60. * 60.) { static NSDateComponentsFormatter *s_dateComponentsFormatter; static dispatch_once_t s_onceToken; dispatch_once(&s_onceToken, ^{ diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m index 8b8a65f16..120cb7e12 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m @@ -27,8 +27,7 @@ static NSString *RemainingTimeFormattedDuration(NSTimeInterval duration) { - // Display hours if > 1 hour - if (duration > 60. * 60.) { + if (duration >= 60. * 60.) { static NSDateComponentsFormatter *s_dateComponentsFormatter; static dispatch_once_t s_onceToken; dispatch_once(&s_onceToken, ^{ @@ -38,7 +37,6 @@ }); return [s_dateComponentsFormatter stringFromTimeInterval:duration]; } - // Display minutes (1 minute being the smallest) else { static NSDateComponentsFormatter *s_dateComponentsFormatter; static dispatch_once_t s_onceToken; @@ -47,6 +45,7 @@ s_dateComponentsFormatter.allowedUnits = NSCalendarUnitMinute; s_dateComponentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; }); + // Minimum is 1 minute return [s_dateComponentsFormatter stringFromTimeInterval:fmax(60., duration)]; } } From 1c388c1672af1e9fb775e75db1d3c6bc765d5dd4 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Fri, 21 Aug 2020 00:44:57 +0200 Subject: [PATCH 34/55] Update translations --- .../Resources/Apps/Play RTS/fr.lproj/Localizable.strings | 3 +++ .../Resources/Apps/Play SWI/en.lproj/Localizable.strings | 3 +++ 2 files changed, 6 insertions(+) diff --git a/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings b/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings index 1a0b3c469..d6573711a 100644 --- a/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RTS/fr.lproj/Localizable.strings @@ -22,6 +22,9 @@ /* Title displayed on the radio home button */ "%@ overview" = "Accueil %@"; +/* Text displayed on live cells telling how much time remains for a program currently on air */ +"%@ remaining" = "%@ restant"; + /* Label displaying the number of views on the player */ "%@ views" = "%@ vues"; diff --git a/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings b/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings index 9c610d936..c0d0f279e 100755 --- a/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play SWI/en.lproj/Localizable.strings @@ -22,6 +22,9 @@ /* Title displayed on the radio home button */ "%@ overview" = "%@ overview"; +/* Text displayed on live cells telling how much time remains for a program currently on air */ +"%@ remaining" = "%@ remaining"; + /* Label displaying the number of views on the player */ "%@ views" = "%@ views"; From ac3470ebbe657e2a12adba9d373dd1beca5eed3f Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 24 Aug 2020 15:58:10 +0200 Subject: [PATCH 35/55] Home livestream media cell, dimmy view color update --- Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib index 73d5d0783..8509ccf9d 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib @@ -54,7 +54,7 @@ - + From 84b64b0af922319d52a50e31854491d9b28ffe30 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 24 Aug 2020 15:58:38 +0200 Subject: [PATCH 36/55] Remove unused code --- Application/Sources/Configuration/RadioChannel.h | 5 ----- Application/Sources/Configuration/RadioChannel.m | 6 ------ Application/Sources/Configuration/TVChannel.h | 5 ----- Application/Sources/Configuration/TVChannel.m | 6 ------ .../Sources/Helpers/Categories/UIImage+PlaySRG.m | 16 ---------------- 5 files changed, 38 deletions(-) diff --git a/Application/Sources/Configuration/RadioChannel.h b/Application/Sources/Configuration/RadioChannel.h index af71dbc05..a53df003d 100755 --- a/Application/Sources/Configuration/RadioChannel.h +++ b/Application/Sources/Configuration/RadioChannel.h @@ -17,11 +17,6 @@ NS_ASSUME_NONNULL_BEGIN OBJC_EXPORT UIImage *RadioChannelBanner22Image(RadioChannel * _Nullable radioChannel); OBJC_EXPORT UIImage *RadioChannelLogo22Image(RadioChannel * _Nullable radioChannel); -/** - * Image overrides. - */ -OBJC_EXPORT NSString * _Nullable RadioChannelImageOverridePath(RadioChannel * _Nullable radioChannel, NSString *type); - /** * Represent a radio channel in the application configuration. */ diff --git a/Application/Sources/Configuration/RadioChannel.m b/Application/Sources/Configuration/RadioChannel.m index 2a01614aa..134c8a274 100755 --- a/Application/Sources/Configuration/RadioChannel.m +++ b/Application/Sources/Configuration/RadioChannel.m @@ -38,9 +38,3 @@ - (instancetype)initWithDictionary:(NSDictionary *)dictionary { return [UIImage imageNamed:[NSString stringWithFormat:@"logo_%@-22", radioChannel.resourceUid]] ?: [UIImage imageNamed:@"radioset-22"]; } - -NSString *RadioChannelImageOverridePath(RadioChannel *radioChannel, NSString *type) -{ - NSString *overrideImageName = [NSString stringWithFormat:@"override_%@_%@", type, radioChannel.resourceUid]; - return [NSBundle.mainBundle pathForResource:overrideImageName ofType:@"pdf"]; -} diff --git a/Application/Sources/Configuration/TVChannel.h b/Application/Sources/Configuration/TVChannel.h index 3bcd6e866..da0f561a4 100755 --- a/Application/Sources/Configuration/TVChannel.h +++ b/Application/Sources/Configuration/TVChannel.h @@ -16,11 +16,6 @@ NS_ASSUME_NONNULL_BEGIN */ OBJC_EXPORT UIImage *TVChannelBanner22Image(TVChannel * _Nullable tvChannel); -/** - * Image overrides. - */ -OBJC_EXPORT NSString * _Nullable TVChannelImageOverridePath(TVChannel * _Nullable tvChannel, NSString *type); - /** * Represent a TV channel in the application configuration. */ diff --git a/Application/Sources/Configuration/TVChannel.m b/Application/Sources/Configuration/TVChannel.m index 0867744ba..d1fed5e36 100755 --- a/Application/Sources/Configuration/TVChannel.m +++ b/Application/Sources/Configuration/TVChannel.m @@ -18,9 +18,3 @@ @implementation TVChannel { return [UIImage imageNamed:[NSString stringWithFormat:@"logo_%@-22", tvChannel.resourceUid]] ?: [UIImage imageNamed:@"tv-22"]; } - -NSString *TVChannelImageOverridePath(TVChannel *tvChannel, NSString *type) -{ - NSString *overrideImageName = [NSString stringWithFormat:@"override_%@_%@", type, tvChannel.resourceUid]; - return [NSBundle.mainBundle pathForResource:overrideImageName ofType:@"pdf"]; -} diff --git a/Application/Sources/Helpers/Categories/UIImage+PlaySRG.m b/Application/Sources/Helpers/Categories/UIImage+PlaySRG.m index a17392d7f..c299d7f6b 100755 --- a/Application/Sources/Helpers/Categories/UIImage+PlaySRG.m +++ b/Application/Sources/Helpers/Categories/UIImage+PlaySRG.m @@ -121,20 +121,4 @@ + (UIImage *)play_vectorImageAtPath:(NSString *)filePath withScale:(ImageScale)i return filePath ? [self srg_vectorImageAtPath:filePath withSize:SizeForImageScale(imageScale)] : nil; } -+ (NSString *)overrideImagePathForUid:(NSString *)uid withType:(NSString *)type -{ - ApplicationConfiguration *applicationConfiguration = ApplicationConfiguration.sharedApplicationConfiguration; - RadioChannel *radioChannel = [applicationConfiguration radioChannelForUid:uid]; - if (radioChannel) { - return RadioChannelImageOverridePath(radioChannel, type); - } - - TVChannel *tvChannel = [applicationConfiguration tvChannelForUid:uid]; - if (tvChannel) { - return TVChannelImageOverridePath(tvChannel, type); - } - - return nil; -} - @end From 3c60594434eb15969ab7b4af86eef714f7ea0f28 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 24 Aug 2020 16:56:08 +0200 Subject: [PATCH 37/55] Add spacer between logo and title, remove logo vertical constraint --- .../Home/HomeLiveMediaCollectionViewCell.xib | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib index 8509ccf9d..ea2b7de06 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib @@ -71,25 +71,29 @@ + + + + - + - + - + From 5cbc1ebe6b143f627cfd36666523d13ccf1f73b4 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 24 Aug 2020 16:56:53 +0200 Subject: [PATCH 38/55] Use 32 height logo pixels --- .../logo_rete_due-32.imageset/Contents.json | 12 ++++++++++++ .../logo_rete_due-32.imageset/RSI_Retedue.pdf | Bin 0 -> 10113 bytes .../logo_rete_tre-32.imageset/Contents.json | 12 ++++++++++++ .../logo_rete_tre-32.imageset/RSI_Retetre.pdf | Bin 0 -> 10206 bytes .../logo_rete_uno-32.imageset/Contents.json | 12 ++++++++++++ .../logo_rete_uno-32.imageset/RSI_Reteuno.pdf | Bin 0 -> 10515 bytes .../TV/La1/logo_la1-32.imageset/Contents.json | 12 ++++++++++++ .../TV/La1/logo_la1-32.imageset/RSI_LA1.pdf | Bin 0 -> 5731 bytes .../TV/La2/logo_la2-32.imageset/Contents.json | 12 ++++++++++++ .../TV/La2/logo_la2-32.imageset/RSI_LA2.pdf | Bin 0 -> 7146 bytes .../logo_radio_rtr-32.imageset/Contents.json | 12 ++++++++++++ .../logo_radio_rtr-32.imageset/RTR_radio.pdf | Bin 0 -> 14831 bytes .../logo_rtr_srf_info-32.imageset/Contents.json | 12 ++++++++++++ .../logo_rtr_srf_info-32.imageset/SRF_Info.pdf | Bin 0 -> 8019 bytes .../logo_rtr_srf1-32.imageset/Contents.json | 12 ++++++++++++ .../logo_rtr_srf1-32.imageset/SRF_1.pdf | Bin 0 -> 4086 bytes .../logo_rtr_srf2-32.imageset/Contents.json | 12 ++++++++++++ .../logo_rtr_srf2-32.imageset/SRF_zwei.pdf | Bin 0 -> 6457 bytes .../logo_couleur3-32.imageset/Contents.json | 12 ++++++++++++ .../logo_couleur3-32.imageset/RTS_radio3.pdf | Bin 0 -> 1588 bytes .../logo_espace2-32.imageset/Contents.json | 12 ++++++++++++ .../logo_espace2-32.imageset/RTS_radio2.pdf | Bin 0 -> 1928 bytes .../logo_la1ere-32.imageset/Contents.json" | 12 ++++++++++++ .../logo_la1ere-32.imageset/RTS_radio1.pdf" | Bin 0 -> 1235 bytes .../Contents.json | 12 ++++++++++++ .../RTS_radioOM.pdf | Bin 0 -> 1915 bytes .../logo_rts_info-32.imageset/Contents.json | 12 ++++++++++++ .../logo_rts_info-32.imageset/RTS_Info.pdf | Bin 0 -> 5738 bytes .../RTS1/logo_rts_un-32.imageset/Contents.json | 12 ++++++++++++ .../TV/RTS1/logo_rts_un-32.imageset/RTS_1.pdf | Bin 0 -> 4439 bytes .../logo_rts_deux-32.imageset/Contents.json | 12 ++++++++++++ .../TV/RTS2/logo_rts_deux-32.imageset/RTS_2.pdf | Bin 0 -> 4970 bytes .../Apps/Play RTS/fr.lproj/Localizable.strings | 2 +- .../SRF 1/logo_srf1-32.imageset/Contents.json | 12 ++++++++++++ .../SRF 1/logo_srf1-32.imageset/SRF_radio1.pdf | Bin 0 -> 2671 bytes .../SRF 2/logo_srf2-32.imageset/Contents.json | 12 ++++++++++++ .../SRF 2/logo_srf2-32.imageset/SRF_Kultur.pdf | Bin 0 -> 6186 bytes .../SRF 3/logo_srf3-32.imageset/Contents.json | 12 ++++++++++++ .../SRF 3/logo_srf3-32.imageset/SRF_radio3.pdf | Bin 0 -> 6751 bytes .../SRF 4/logo_srf4-32.imageset/Contents.json | 12 ++++++++++++ .../SRF 4/logo_srf4-32.imageset/SRF_radio4.pdf | Bin 0 -> 6711 bytes .../Contents.json | 12 ++++++++++++ .../SRF_radioMusicWelle.pdf | Bin 0 -> 13411 bytes .../Virus/logo_virus-32.imageset/Contents.json | 12 ++++++++++++ .../logo_virus-32.imageset/SRF_radioVirus.pdf | Bin 0 -> 1306 bytes .../logo_tv_srf_info-32.imageset/Contents.json | 12 ++++++++++++ .../logo_tv_srf_info-32.imageset/SRF_Info.pdf | Bin 0 -> 8019 bytes .../SRF1/logo_tv_srf1-32.imageset/Contents.json | 12 ++++++++++++ .../TV/SRF1/logo_tv_srf1-32.imageset/SRF_1.pdf | Bin 0 -> 4086 bytes .../SRF2/logo_tv_srf2-32.imageset/Contents.json | 12 ++++++++++++ .../SRF2/logo_tv_srf2-32.imageset/SRF_zwei.pdf | Bin 0 -> 6457 bytes .../Icons/radioset-32.imageset/Contents.json | 15 +++++++++++++++ .../Icons/radioset-32.imageset/radioset_32.pdf | Bin 0 -> 6289 bytes .../Icons/tv-32.imageset/Contents.json | 15 +++++++++++++++ .../Icons/tv-32.imageset/tvlive_32.pdf | Bin 0 -> 6044 bytes .../Sources/Configuration/RadioChannel.h | 2 +- .../Sources/Configuration/RadioChannel.m | 8 ++++---- Application/Sources/Configuration/TVChannel.h | 3 ++- Application/Sources/Configuration/TVChannel.m | 7 ++++++- .../Helpers/Categories/SRGChannel+PlaySRG.h | 2 +- .../Helpers/Categories/SRGChannel+PlaySRG.m | 6 +++--- .../Home/HomeLiveMediaCollectionViewCell.m | 4 ++-- 62 files changed, 350 insertions(+), 14 deletions(-) create mode 100644 Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Due/logo_rete_due-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Due/logo_rete_due-32.imageset/RSI_Retedue.pdf create mode 100644 Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Tre/logo_rete_tre-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Tre/logo_rete_tre-32.imageset/RSI_Retetre.pdf create mode 100644 Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Uno/logo_rete_uno-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Uno/logo_rete_uno-32.imageset/RSI_Reteuno.pdf create mode 100644 Application/Resources/Apps/Play RSI/RSIResources.xcassets/TV/La1/logo_la1-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RSI/RSIResources.xcassets/TV/La1/logo_la1-32.imageset/RSI_LA1.pdf create mode 100644 Application/Resources/Apps/Play RSI/RSIResources.xcassets/TV/La2/logo_la2-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RSI/RSIResources.xcassets/TV/La2/logo_la2-32.imageset/RSI_LA2.pdf create mode 100644 Application/Resources/Apps/Play RTR/RTRResources.xcassets/Radio/Radio RTR/logo_radio_rtr-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RTR/RTRResources.xcassets/Radio/Radio RTR/logo_radio_rtr-32.imageset/RTR_radio.pdf create mode 100644 Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF Info/logo_rtr_srf_info-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF Info/logo_rtr_srf_info-32.imageset/SRF_Info.pdf create mode 100644 Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF1/logo_rtr_srf1-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF1/logo_rtr_srf1-32.imageset/SRF_1.pdf create mode 100644 Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF2/logo_rtr_srf2-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF2/logo_rtr_srf2-32.imageset/SRF_zwei.pdf create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Couleur 3/logo_couleur3-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Couleur 3/logo_couleur3-32.imageset/RTS_radio3.pdf create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Espace 2/logo_espace2-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Espace 2/logo_espace2-32.imageset/RTS_radio2.pdf create mode 100644 "Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/La 1\303\250re/logo_la1ere-32.imageset/Contents.json" create mode 100644 "Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/La 1\303\250re/logo_la1ere-32.imageset/RTS_radio1.pdf" create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Option Musique/logo_option_musique-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Option Musique/logo_option_musique-32.imageset/RTS_radioOM.pdf create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS Info/logo_rts_info-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS Info/logo_rts_info-32.imageset/RTS_Info.pdf create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS1/logo_rts_un-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS1/logo_rts_un-32.imageset/RTS_1.pdf create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS2/logo_rts_deux-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS2/logo_rts_deux-32.imageset/RTS_2.pdf create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/SRF 1/logo_srf1-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/SRF 1/logo_srf1-32.imageset/SRF_radio1.pdf create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/SRF 2/logo_srf2-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/SRF 2/logo_srf2-32.imageset/SRF_Kultur.pdf create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/SRF 3/logo_srf3-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/SRF 3/logo_srf3-32.imageset/SRF_radio3.pdf create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/SRF 4/logo_srf4-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/SRF 4/logo_srf4-32.imageset/SRF_radio4.pdf create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/SRF Musikwelle/logo_srf_musikwelle-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/SRF Musikwelle/logo_srf_musikwelle-32.imageset/SRF_radioMusicWelle.pdf create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/Virus/logo_virus-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/Virus/logo_virus-32.imageset/SRF_radioVirus.pdf create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF Info/logo_tv_srf_info-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF Info/logo_tv_srf_info-32.imageset/SRF_Info.pdf create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF1/logo_tv_srf1-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF1/logo_tv_srf1-32.imageset/SRF_1.pdf create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF2/logo_tv_srf2-32.imageset/Contents.json create mode 100644 Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF2/logo_tv_srf2-32.imageset/SRF_zwei.pdf create mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Contents.json create mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/radioset_32.pdf create mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/tv-32.imageset/Contents.json create mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/tv-32.imageset/tvlive_32.pdf diff --git a/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Due/logo_rete_due-32.imageset/Contents.json b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Due/logo_rete_due-32.imageset/Contents.json new file mode 100644 index 000000000..63b345ec6 --- /dev/null +++ b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Due/logo_rete_due-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "RSI_Retedue.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Due/logo_rete_due-32.imageset/RSI_Retedue.pdf b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Due/logo_rete_due-32.imageset/RSI_Retedue.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a77de40e7f42d57857ffe7e15232f0a77f542135 GIT binary patch literal 10113 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 U+~xZR+YWKdoj&^LSAY2G-|Eu9M*si- literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Tre/logo_rete_tre-32.imageset/Contents.json b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Tre/logo_rete_tre-32.imageset/Contents.json new file mode 100644 index 000000000..ea2833430 --- /dev/null +++ b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Tre/logo_rete_tre-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "RSI_Retetre.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Tre/logo_rete_tre-32.imageset/RSI_Retetre.pdf b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Tre/logo_rete_tre-32.imageset/RSI_Retetre.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e560b0dab7115be268a3937909439dbc2a1cd0b8 GIT binary patch literal 10206 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 J{qpx;{|ngP)F%J{ literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Uno/logo_rete_uno-32.imageset/Contents.json b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Uno/logo_rete_uno-32.imageset/Contents.json new file mode 100644 index 000000000..a0bb72f7f --- /dev/null +++ b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Uno/logo_rete_uno-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "RSI_Reteuno.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Uno/logo_rete_uno-32.imageset/RSI_Reteuno.pdf b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/Radio/Rete Uno/logo_rete_uno-32.imageset/RSI_Reteuno.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9b571a0f9a6f7345b21db762fb733361083d4f51 GIT binary patch literal 10515 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 C_Hw}h literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play RSI/RSIResources.xcassets/TV/La2/logo_la2-32.imageset/Contents.json b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/TV/La2/logo_la2-32.imageset/Contents.json new file mode 100644 index 000000000..779f7d0d9 --- /dev/null +++ b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/TV/La2/logo_la2-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "RSI_LA2.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play RSI/RSIResources.xcassets/TV/La2/logo_la2-32.imageset/RSI_LA2.pdf b/Application/Resources/Apps/Play RSI/RSIResources.xcassets/TV/La2/logo_la2-32.imageset/RSI_LA2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ecdf23d5d7f2edf6de6af37d4f6a77390a890256 GIT binary patch literal 7146 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 literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play RTR/RTRResources.xcassets/Radio/Radio RTR/logo_radio_rtr-32.imageset/Contents.json b/Application/Resources/Apps/Play RTR/RTRResources.xcassets/Radio/Radio RTR/logo_radio_rtr-32.imageset/Contents.json new file mode 100644 index 000000000..6595a1a02 --- /dev/null +++ b/Application/Resources/Apps/Play RTR/RTRResources.xcassets/Radio/Radio RTR/logo_radio_rtr-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "RTR_radio.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play RTR/RTRResources.xcassets/Radio/Radio RTR/logo_radio_rtr-32.imageset/RTR_radio.pdf b/Application/Resources/Apps/Play RTR/RTRResources.xcassets/Radio/Radio RTR/logo_radio_rtr-32.imageset/RTR_radio.pdf new file mode 100644 index 0000000000000000000000000000000000000000..21fe5da15a989e1ce2eee99b3b162e99130ab352 GIT binary patch literal 14831 zcmb{3TaRSfQ3c@l`W5+N$$oJ5xnCs95*}lO0Aa?wSv)j7WqZ&}H%zyY;n(x6IJ-`s z>ak=7(I6`)a$n=JVnyt%AN~55zxru^U!R`(TX*~LumARRyZ!8Ex1ay~>G}Ov`Ol}} zDu46$&+mW#=?}M&@XL()`02anx8FX!`Q`I}e*NzG%fI=>?Tg=B|Lfhyr~i2B?_K@7 zbuS-&dVc!;cjs5{zJ2QM%eI*NnAzR?ev9PeyZ2Ay@Uq}JDRVyG?VE?}G2@%d>_0C( z7y9Pu4^O{)djIrK|J%Fl_rV$Z;kMqVWm)(2<}T+=zyBe3ag}izmf<$s*Lm!^>6R(` zG|y8pGN1J=Q$?m_jQ_fXBhAOFbyl0xp&UDjyDpEZNsfu)~C^# z$G-0`qIXZzeKdTTF2ZjJr)6E&>*VRa^y572*&%1^Zw77MG%X~l`&5`k!53?z?T8Z}WW|$6?L_ zy~DfPDS5}WhGC0}Pg%L!yi(gkcKXtMAJ%o@5f=$1bz|o~r>qto`_X+avTo^@Qb0F% z%f8hTOXsTR88Wyev3EBtRPh)U-(kXa61^|udM-1qT!!RW{UUL(oFQwqQOq~@>)JV2 zoMu~wkuoo`nGdW{aFY%9&4i^?zAW=L(_xd)eK#)5^3GbPtZcg*wM?6{# z{Phygod_kl#Pf^f8qZC3iRXD1jAuLx^S za`Z8ZJp&oZ8`C}W`ZczD$kxe8%EpIma^CV|qhkIT_LR)iHcGCE@+O-DugTO||CA*H z#=*>W0?d~vInVGqzG!h9AF*`gOEJCj`*_rMbgf2$(J@d&U(q0=Z&H|in!dG z36C?Jx=DOBTb{DS*JmN)7yE~;az^#`D#&wN8|1uYpsMi@Yxh;}{GYp(<=TRMEf$7XjpKnurop_Bz$zg&x7qT zRHD6~OSJBDmn1jxyq!1RdWMq3=Xf0HlvIS>hVjo`k^^c9@M@oSmrI|g?15k`?qCR0jhDXgZRb<#+S8QawZ#){vMe0Ogewe~Tk>hi=OHb~% z&(xG%NKw1re;%0LUg~Y9Qw|{5#wL1 zLxipO;X(imwR5iRz78W?KQA46%c65{V8(@~OP=d}bW&>&HRCOriezOfpl1WPF>}&> zf%rt@3b?w2^&n5PRCq-WnI|hHV{qwECZtI3m0_|x9(F55lzBag;i=&N{&KG6yw68{jr67i~?Jh zsGUuesDH$BOL?x6^Oo{!*#4+E$O+B83jm*D)o zWaZ8>NqGt4!gNI9S#gzJnf*n$^(ro>yNX<1%)Am&9LG7Pf@<2a9;{5wb^0ceawK{n z;t4fMkc?ujrkWW<0enLhs_tqH3E3T7e?Gh^wWFe!r$@zwaSWia1uS&ZD+g(~QyK1~ zuQ68un1jTe(g1wB>1L$qxAB5d3Q25ZsCT6A-r|})?5D5(W zC!)-)yeUF+mH%LcsV4{C?$QMO&c%|!1tiht-rKWQ`=QmR1H_nIDi#JI?7!3o{Qo3}yO}%w#n9<9Jjq7^@ik?Qpbi!k1Zgg&8 zwHa#uDc^U5rusqo!Fp)k4Xrl`<>YMkwuT`- z7E#j}I8CWcmGeYy(ss4wj;W_m(8+X< zgE+YwG`>j@orIjAlfc=e?FxU(5@^Gg8spr;xQMR1o+7)dCyY+DaSQ}CNf+7|9X=9D6mFGF+EuBraSoY=A3(vW_vHr4 z`i?(9W317wkP*2`Ha13qS)P<2RDfij{KPk5HW1ZDvigW&h)+?}(n&l}G&t!DSy?Ej z=cpQ#M$OB>q6~l`?x+SyFG)mVVWVoEvxI#$1Wi|9(sKgMBzjnSRwNVb$&K6E*>Bh? zS}7(;D5tW_QjOb6&xvSWw1$0Zaba6QKmm=AhP%oDQs)ukczTNWqBcR+HLRIz!k2haG6#Yii9(~1kdWI*R=kvkv!BB(W%nR8 z=9h@Cl{h93;!5oVLei{O{I034}AjeH7i_7jxaUMw@{S1C0ud9a_@5Bw+= z%e`dN&WCANUQFB)2O6DfWl_mw58-w_4DH<$$`c=t)0-ck<;4RC?MYyKXqmJm^>TUP z(>Xz962cS~Km}De3Yk};)G;+xv^i=-QTvSA#D8hCWRl(5dAUUrz!hny+6v&(t*MIjU1>^sep#G4=IPq12e#1!-jdeK< z218HvOyFP(5?NnjAG}gVmZgzIS$M`PMju8zS1J>bgD42T$+O~625ku`C9f-($ZE?v zDbA*p8z4J&qPv=rj5Y)nO{O~^3Q zVcWb==2g(4n66X!o%bDe{(k3${x8r^UEnc$u}+?9k^>P4UxJ7!M$6o=z~FDBa3j3& zB13ppbn(>3Y`~-e4Pa_^UXAF)SwYK|y0>K$I1cX9<+tN`Y@Y^6R>CkFg!h{MW`k~7 zBnMA@F&QTbrQm^EwJOXFu~yJH#bcaX;GRgP(s?*J#8IB?F1%r3YN~VB66A0 z{YdaIy#Y2-%v8yL;w4Rr7K;Xi59W#y6z6TLGaugKFo_NA2S=#=#LZYtRr~3_sMrx5%y=_!QqssYMDP!a>F<$#&r1(6uH71@! zt5I8ZL*r(cmdsW24&GGl{!S)Itc$QDFdbQ;wh0b~;D5%$P==5Ymf&!*M@^(;`3lY@ z6=f92T`Lc?CL5(68$!$j6k`b0)aszA^#GM#gAh}?RH(YMhObM&<3v+p1ed1AKvyFg z+&d|Z_X8SXkeYx_oK){lmFx*6t)_HvT2P4~QIL2>TY|+Cf89czD zRvu79!U;6pDqb8E(NSS1a^yf5Z6wl-FjOF-qG5`;P#W1W3tUjB=W^EMpUGzVw2g^C zr@`cKE;tmQIIti+tD{&&;e|`8Nbk_8@CjZyOalUv#$;HmI~8 ziz=!tka>0X5N=7bvoX4)8NeGMJ9j^jPX-5ETrhP{fa?Tts!hTTVj_>BesRdrl?XMG}yb;eved^KA#?Zl}-BRvC?_{^C=8%wBi ziZhxV2$0ZS*HoUD>akGuz^@l43xqNPlq$a~gpKInDyCXlLqQ5Z3uU6JV)Lk|5MH~Ijygp7cguFN@&~>sZ*ySI4FIFo0?)}@WE7aQhXDcdiK{ZH2V+f#J1i!=ZQZpc{95R*({z%)H?B;F(SZn z6}|XpglW&GQGOZM37$m7V>LM@Rz7#FrZ9N+dPCU4*lM6SM6^W@K7?ne&@dxj>=?y< zskAkZWqVW>9gmhxl{n!Ed_p;hMh_P}0PbjdARo-lKpLAoMV{f#DJEq(AVS|57XM5e z59&frvBQhiAOgTtLfl_)CE+siF|Jo&$3M%DdAr&~rB&Vz0W?03sSjbY)MIL}7@qKj z+Le@n^r;v+il&{nJR#>=Ay;4$uK(7ApGY${Ny?Oy(= zj?eE}WY9Az6uXoDP+Z&dTwVuQBJ6;68e*5<7OldyQbQJM~MogGX6o7_Axf#ySz}?m3Gp0d|gsBOC$t@djY;r zN%%2hY1s9N4(@r{;RpX9#apn#i}LFFULX+9zx*qKw50q?gOoF-;qk3DRo>fzX?ec$ zB!iv#m1y2^v8)i8qY)u{7VnZZph&UL{P;)k$}Qfa3iX7Yl`t!Kfr_LYLR6#-xmFpF z%trZw2x61zhJkU8DIIIEv5m?wD(d5)InT#PBXQ(psP zA*t09A<{vxR2otbc=D-V)<_z1zMxisyI&i{104kf#1(Wd6Jk|AOJK)5Z}+y*4PZ{U zN&7@^C^rtFsKQp;UDl3-C0qGxGv)Z>3<^8xUr;G8JN0IU166#MGBqL*}KiQv-oeq%y19NTkt*Ji)A-PI{P#2dCy>O0Bz1u7!PvGRJj*0G=qBt?5UnVuG_rBciS4?2=3HCT)atH`KjHm3W>& z^IFMV)jbEJWamtMBuq-(xnE*SXFDweIslg;o|qy9$FtM)OaGcojlYz6@&Ei%nrRG{ zl8m8$$b0c@Yk@6m`I1{$%a@_frT)XyoGHJ($X9-M6f^;-)X_ZD;`#kR^T&!@YAF!G zC2~#%NqaxFO-ezT{Sr46l(bt5NKMp8{hTS>9i}R=!%bom&DG2+EkykqZK|_K;sG^J zNv_Yur!?Z-xFSAPY`jYNCCrjf87Y#&%c3@+X+cZBO$^3m-k$fis)7Yb|UhGQYM__WW3jR{?rOpj4kSFCNt52sWy_xF8*PsDnbepU#Yj0NT?T zjBOlPd=%0bRt3@Y!b0V^1Pm#Tm`gN#E?-Enw0XSa@D~{{PaJ`a(_bV?%~Nnk<~h^{ zr}BwG;)3X2us<3;{PP82=on;+WllITNR{2uaQp>DfTrfjFn+Q^BK|j>pwf%i)D&@G zlEFiAnx>$TMhrsLa!tUivR3q>9@i=fX+H8@(P#|092{V$dqBguD3$TNWXaGPvUISb z_0I1!s$($3{j1|Cq^sX}j={=kqvn+l1v?B6S~`IaS$VO%m!D`mXWm)Le!+zJ=XvKg zFWN(F;;5&m^Sn@l_{M2>G6^F}Ij2!I3z>b7PBo7iix#A(e^8y9Q@IWkPYj=(p zn-&U4g2z?P2lB^*ZbPbiXwl56E^k{)xyCSs^QDDqooWO*iiq??h<@dv4b?L+viwji z4_v)mQ;}S8n|G6w`IM(8KNuwpB&6p3)t7paNWnq4%e=;zemGUbg2L4JiB2C1LR){C zs!5IYk27mrP#>z6bXhD)7ctKzL0K6w?`UPaj-)C{+<#Zl=>_BmqSdfg@4*gfA%$n=rMs7_a9xe=%+mtM%T&>w{64u748~Q2 zpsf{D$O=Z)eu+^(B$7saNQUD|nU|*k`w4vG;e66bz0h6mC%OCekFWHzyf4(eTD@qW zpX{hoEUK>2pmRJqyxvN1D~LfN6XXY++0PGJ)y$DusnmGhMk_DBe)N^bbzRiErQtR2 z)TaPWH|?-PF&{0W{KY`CRjJHF1=P)cWxtZ;WhCk^NiOOgGUW;hWRp5xo%58%7gTFT zedZnCmpmLbf0_63__Mp0ztN+j_P2Y=|7|<}cF)-!f7AEouin4^@ag02xBudA{QP_K z&;RxB&$liF@;58pojRG3{YG2mA)b7vTz5Vt}yX0xIvzhPy@y}_Vzxrza`s?X<`(FQ@+#bL9)A9Dh z;@$&cI%x}Ki|L^cH{d=;DX@9dhKYTf!#&6Cq-iMly zYH`GAb)Ur#&GyA2%+J_?RsPt%Xn55Jji zr@wxxGN~*s*IeS97iUeXeny$0>&pizW6ctZb&Dg4(J2YB}eyUYLj5-7nk7CB5hWXIZ`SGBpVnId9a}x+%PP9nBrp44uhtpnr0V_ zma=yqwX($uQoSREov;D!n+8_lWRyL}PIx5Bkb?Sw*7B4yYU#u-7hra76)d<^Y@V%K zpmRjEp(9Wz#$rjm+D!qNc>!?P3#ca6Nt13?>leeJ&HuytfDQu#4i^c^C7ZH&a)U&H z?(hv9tPq4|ygJAOG)^5H+oT&r+;o7iu{v+1{?HXG+Tx`TsLe)p68)oh)yXJf&zonh&3C(9X32v$sSk43L9@HWA~jg0a&C=y`k|CJPA)`3Pa~ zkVC7is0}bFxLRgxQ$h#?D;P?Jh*JETef5ay*|K2GnSDY^PKjdDPE~<6Tb!MZtGsQA zY?nQ6C-~=FZN|Y2PAVfL!VZICLJ@|2$)$L1RRJTBj$N{CC)LB2bZ|K#568wT5hLM_3`8E+ zR#?p#?^D^ID5@3GrcBud!{o)oQ)$$t$1xbkh*O)AFq@j;IAYjBWRK`lb_OF$+7g4x z$FQpik!^uh!~8%g`b0t)KH8w2D+LB;6i>LE%1Lt4cFE>7Nnk9|0PIDq9$s15BeJ73 zmdF%lN{jil%I<7Lxh9~8>wzReLCK}!HA%gKryVE@+Klq236EG~vbgpXC9lYz8_LRD zNE0Yab;!ml)HaMBEBH!8k|s8k@)1ZlaXsn$KJ`O3MP>-z&%qD=yysb>fhjg9Q59;F zEBe9{Ae*Rr*uW8cB!+&-9_rHUVpJRZNW-G-M$4ytvClZ5ca>z=A;<=)fD_XwGH;;l zozyG19jHQIa*MBi!Vc+jtnENsMYBONT&<_hEE*EVQ!tiN2+9HC@KWeqR9rBl7hiV} z)|TH|D(~wm$&XZ@ey3q$B{@wi8)m(u;0P;$K19hAW$17ktuyUg z)Z3KwN+U=3h-_91X;P~9x%00}IP8bwl`J6eUs&l3N5k%TEL9B#}bQ-z&iY8Kq z#}~oyESFLy*H_OFdb=nV=+zE_)hH96_L!%$L}YkP`AMyGQAJf^(Aqf~V7X+4AcaS< z%(Z0$i4GZ*TgPrC5Um7ZDch|l?4d3Q`;B#I5y>qWpl#USmRV@%Bk{&nB}2W|o_H9? zN-!G8geQ68dbTPo8BJ8T44M%Zl~p-$oyZ>X0*bY~{vv2z9jzEOmqLr7(qugsyj&u~LwNP-tR>nSJyVv?`Sa3Z2 ze?t$aMlL6Ua%^;(Ht?hKjgNx6*IzsIh{`UW=9+WqM%BlD3jb98oS|WKT;2$J6&Mv% z=sPgN@QkT?&|NrR-R^urZ+->(=bZlw<6^ zL%IywOF5KPm<0W+LT+HXg$3Dq>^>|_a$jW_h^k8UMHh~Noi>agxq&uW$2xrE5L*K( z(wnXgiOh@1)dP_OGhs9k1vGWuB#npqDn%fTO>P}h$H=N0FUdoF_kj!5;!f1_X^bZVo={wL6 zkr@=ZOiQOVj=eOxzz#HwBx+7fO$HH-qda>NhWMXg3Zf9x8p@pRB~C^%mgZ1}uOn1* z&7@*$T|2f$5YrN9R=6;#m+Ji;3^CNsXYF02<-|x&+B=ldCI|p>X&$l;+1!+px-FHZrVP|LE&Pi2ka_Am{?ARV-4llY@N7-2cjSK^kZRip- zx)_)eY{wY5M1r?nHO?5l3ljmxRAdgAL#W~w#e-;UJaZq-T03%>*n%XCKL&<@v$}qq zSCp6az>o^@n>!g2ugx%*044%p^t$o~tC$?qM9@dsjy#X4*VbGjkS-Ty5P`9B|M-MR zE=&`$Z<874T;zUz1M|6{TY?oDF~;f5tjNu}-i9y_!C;J&`v*P$AHE*GlGMPK81A_8k$VwZap zLwsh615vzXn=Dt?f#GPQPF~SQ)x=07ViF3s3w6iHpc?@GEly*6#+S_8=)g~4Bpy0p zC_?GA#0Wq7z?DxdW0vbxKcE)F(hbpEj9W#ZIUlP~7F8MALM^(qHgp^>IuMpEFEHxzR5ix0n!~odkm)T{%DADggEi~9?Fyk1ocA)w49}5^ zn-Ox2OvHF8v1-@H=?0NVE5b-+hT~+$ zoEbf=?Z^Y?$}Ln?n4fBWyhj`PL4s}IKx{Q3C)`s$mzpXcw9qq}oFR3!nc+5Og> zpLe=EKHU9ue>gtOkYm2=+r7EFeLUWBB8m?1-PJwV%p9yiyRW%|##i2pKVH8_)L9x_ z&gXO9-2KG6_J#ZpAiJF~<8G%_%{Nz%SEsuV{Z%Rb@G&8NzCZpjk(#Deef>M97#ZaN z_dj*P`kVR4+y98i_B0@d({#c5+d<9+sP7N{j}Y`y?NI= zz;j)7yt&@4ue#Oq?LU{B?fLi5`m)v&5zUlVeub&%B7=p7dNslwp zn(R$aFfG*k4;qXgjEfRNFN1hvqV4sQB4Q-Y*lxz+AVs|R{uUOE0QPpsHY6u~9Ae2M z5=;m=&B%rXdKCQ9)$)-r*u(fR_Jd{A4h7~Xg<0lyZQDL$G=Q6}r-E23;Z zG-T72A?WH;4Oz7V%OQ#>Q(eKzP)L}8p~GZ-flNNAt!Wi0aUqseZB3XA)_cu$v);1b zd}zp~3jh!aY~XOgAbw5 z8;&Nam?kc|RDxn5<`NTWO3s@gig?68Q<+M(QrC<~ElkLg^SmnJTok7}hJv4(KZ)5p z50Xr^REd@|WzcE_NGpwK*k>anDTj$@wpP(qTO+AJFlwNx?@vSnOGD21o*U7?GQ5We zMu{fg;!Ymi7-1Rcz?6-y5o|eZk%wY4Jp^xJ^+9tZ);gQnlRnTr{SaW6jqK=C_1;l* zl*i1-Ms+9U64H#dwuE{)YSayZAtq|fw;DQ7J6yii&;+CPSv0iulPwh$Lgm$noEkcX z89OyJd2Z`kR*g!aT3;ZO4~smbj=APRZD~W3XUIP0er#y0%PGdOq4A+1ni~kLTxyt# z>4Z5HhvrpIG|Uevd-V+ENLh;ZvA9$2y%Q@lvgt74G{rMUg0Vm{JuE?&g$H2?!ms5t z%8@DrlsGD8Qq4W9AOw|lL$MQbx2HB=Jf}Qci*`+<6OpM;kEsmRa;k+Fkq{%DT!xsK zxvJ&HnZV0h5o@TSV*JGRR-d9RSqqMQL3D*AhB~aB$u4UjDOgMlYA%JSAdp3OF-#$H zHkOA52{eHIGJZO(Q*l9ERoGn!P73TN+ZKsPgNa4xw}xoHB{C5ft0=T~tjb0VoIw($ zpl!uz<)Xm{%ZAi9r&Kizswc05ie%;hC7=kS*D`RNcDRr#Smr!aj0a2+_>62i7)8uV!uE|V?@4w4YPDwXUK)FcrUr`ll!OUf}YR|=XO;T@|e z$H4!oj-TidsRF_aEpk0ZC{hm%MQj~N8Kpp)RTm^6?0UE;w9`1~lg(AFvhgZO6ijul z9xUL)WXq(GP%!)oUi}*B!T~Q(ay(sV6U;XpkVYS-!-gHmv|$@dU>ptg$S{$M9B1$8 z(1z5$f-B5`hCvhwt{ycCa$iS5HYFk7qN=KV-E_D|1?WeeRXVna8SxB^6Q_O4A&R_{ zBxedcdgRC`L!cNTkgJAlx=b-q$i=D*H9b1PDwiDdh*2;hkQ@Ivpy+oE4 zVozMZjR~}M%xhJW_VH|S5sO~Yru*0FvPSZ!OB`Jh+8vHU&v(1kxBLC!=Gedfox2{t z)o=g)we43g*KfBI@bmWKa{cV^p?^KsvbhqpVZ5Vd=cJ!3oo|na_t%^4v4?E^`DE_w zu)o>v*-@{OC-CL^8m#9)P@%Pf$B#Mj;d=X~V?uNz1NCpO5*d2n>8AzMU(ZE!`l+z!uR%^fxeFot zcc8>M^$x^rZ_v&4`f|6u?zow+et1qg9v%-@+eiJw%Zo>2QdZ}O!%eRN*95O#UH-Sl W`+7rPU*FVl^c>PXc<|jXFa8IUATrhf literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF2/logo_rtr_srf2-32.imageset/Contents.json b/Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF2/logo_rtr_srf2-32.imageset/Contents.json new file mode 100644 index 000000000..1fc0f79c8 --- /dev/null +++ b/Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF2/logo_rtr_srf2-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "SRF_zwei.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF2/logo_rtr_srf2-32.imageset/SRF_zwei.pdf b/Application/Resources/Apps/Play RTR/RTRResources.xcassets/TV/RTR auf SRF2/logo_rtr_srf2-32.imageset/SRF_zwei.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f94f96ee1697e22e7dbf4e4ac35c426b211afe64 GIT binary patch literal 6457 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 O+2TxZ-u&iI-~AVZ9RM5v literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Couleur 3/logo_couleur3-32.imageset/Contents.json b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Couleur 3/logo_couleur3-32.imageset/Contents.json new file mode 100644 index 000000000..172d82e40 --- /dev/null +++ b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Couleur 3/logo_couleur3-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "RTS_radio3.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Couleur 3/logo_couleur3-32.imageset/RTS_radio3.pdf b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Couleur 3/logo_couleur3-32.imageset/RTS_radio3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0bcb86af71c2f5588e98c8b60a798543159b41c5 GIT binary patch literal 1588 zcmb7^O>fgc5QgvjE9O$EJ!HMJpR-a`iKY}GK$MhQ#lbk+HYl+nc2VKiGn+WJX?uV@ zMC&KJv+sN!U0qzxPzE6o6f|GI34qg6I6D)mUgl4sr@VNd>bve948uh})ppxdZbWgB zey*ytcykW(>*-h3iXQ@{+AUCr&1~2`|4(ZfwKL?P+6X11(tLTms-z>zq^)X!N+Lz& z97L&t_2^(Tfm+(&wI^5$k}i-71_l-+|KlwJN~eRN0A7ZG$~frdAwtCpYzQ7TUsNU{ zZ`SM(1%=x24TCxmfs>xJc5&44g0xE9i(65PPyZbgL}}TP5dJMD*)bQgt6HH6`zPHzlcP+2r9HHf^;2@b)9 zoJ`KT(l%0tmg|6bUV3MPRT**e?XETsXd+}hXSfbM1rH>3@LU@(vyyUb6-**9uu7oj zxS&xuJ!vG7=A6K6Fo+|YygX7?7}-q^qroBXE9z+LtRc@I9r+bGc<0_+Jj1})zOO^`RgT?U9ym{ce_)LGx zWMYYnYGP^c=Dh66b#vEW%}%#3iFn+mTcIF`y@&Z1ymLHR821Z#rsW0ofDG&W3-K`G zLVkj{C7&Q|IB|cUGAazH+m@?!+KQaLw-+3asHqoda!FaH1^?@@68 literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Espace 2/logo_espace2-32.imageset/Contents.json b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Espace 2/logo_espace2-32.imageset/Contents.json new file mode 100644 index 000000000..8acbb4b55 --- /dev/null +++ b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Espace 2/logo_espace2-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "RTS_radio2.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Espace 2/logo_espace2-32.imageset/RTS_radio2.pdf b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Espace 2/logo_espace2-32.imageset/RTS_radio2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d6462fb510d61444bd395f3190f47f564ccef89d GIT binary patch literal 1928 zcmZ`)U5{He5PkQr@XJaqQXP-So*7G3CAv!y0>qN`t>PhMZsnd zJl!07X3m`X@Wu7jt7nun1d2KCe*Hbf`22Z%@ghvy8~+>1LwxbWw7ot478&5uZyk>N zX>}JCSJPjc^|bu*T?OHa9)!C!$BE4Wo8k&$SJX-OoxQ;nr2p_;ixXsbqDV<{kBsNgVB%cbE1$v4f- zqn1?RrcySYvNG_UaZz0NdSu9v($`xGry;~aOc81;kCR%S-Q~^&evy}|fEH{uNoVaN*$y%|R`_5O zKn*!^r4l8XH6?MVB5B-m#*Ng;14N3Tk9!5;AiV3zLpnfEI^!1ZgVV{BOBF%^;JH8o zg=uZ5Xp2Qr9bt$lNg%!x0j1jf);d_?D$PsQlORQdVw9|t3&m(KV$>xPY6mWDRGYL2 z`U6TS=tDK23L9tuaSck=KI>v=npyAy85IOkXYN{>TZ52jQ^f@E0t)Cs5Pjgru$3=%c<*1RJjQWmiNG+P)MvWg=w5oV=n^+QjtdQc%H zG`dd~dI^l!3!}wHYm5*EFANYoQSy|Fvgd<))v9>#+A^UF2LvAtG!PP+x@q>j(R~gI zf`B*D$FQK$0kJZo5+_#a=H)w^LV5)x-oOeM6(MrcVg>9#9j&T9K$vbJrsu7Sl6=~>i?6ra-SH6L{(|j`-{Q^Re@t<4 zy}F%Fz>m|-X7zISF}{6N=XtAo6+~L&nWlsB-qUhA>^|(*(;@nPU!L4u?zYEii-^A5 z@4@TU9#}*t4d}rW;L!PLSbV>^0oCXkEYEQ+cOPI&pYcBcdEg0c_rTMf=H=?RdcV6p znR?QPFOm4TpWcNWHH@U^%suHA0iS+Y3-iJD4Bxl(jmD9l16q9-Y literal 0 HcmV?d00001 diff --git "a/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/La 1\303\250re/logo_la1ere-32.imageset/Contents.json" "b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/La 1\303\250re/logo_la1ere-32.imageset/Contents.json" new file mode 100644 index 000000000..8de9d22fd --- /dev/null +++ "b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/La 1\303\250re/logo_la1ere-32.imageset/Contents.json" @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "RTS_radio1.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/La 1\303\250re/logo_la1ere-32.imageset/RTS_radio1.pdf" "b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/La 1\303\250re/logo_la1ere-32.imageset/RTS_radio1.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..95994323035528c783d4bd96086a25d16614d3f2 GIT binary patch literal 1235 zcma)+OK;RL5XbNS6mwarMXKYs9jU5BcPT=ESW<2khmdu*LAwbgDJpz=#(6mDLxMT1 z>|Z?N`HyFIwcT8uacT+Sz@Yy2odBGl!^H*h)h=v_Sn}k9ulC&?NQ7B9)pm`~k0jan zUuEI5x0kTKUhayP{3M*R-hfSuv$%@iIF-&=p3aAgBVp8~!8JfJF1QE?+M>eGf#F6{ z$qaf!a52_!qo+6u4ungZS}COhl*%k)`VoxYhZiCq$Q`+TMJn?7f0e|nG{rlmQt)pj znsQ~eVZbewN?OfON`zy%I16bD%5;beFH>QtLDL4$I?7~fZ3;_hD91|SRYFmv9k&L{ zr!?12fDklw+UZz5JSC`LDs>WyxjNiYE;?c0z`W4`mjfUg%1Q~~Vg3YIJyq+TGp2bS_9II>c^57d1Uhmxo%W=}yM}G<@ mnm&JPla@ literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Option Musique/logo_option_musique-32.imageset/Contents.json b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Option Musique/logo_option_musique-32.imageset/Contents.json new file mode 100644 index 000000000..b0c76b793 --- /dev/null +++ b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Option Musique/logo_option_musique-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "RTS_radioOM.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Option Musique/logo_option_musique-32.imageset/RTS_radioOM.pdf b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/Radio/Option Musique/logo_option_musique-32.imageset/RTS_radioOM.pdf new file mode 100644 index 0000000000000000000000000000000000000000..843a24ebe9176558aebb1fbd89fc807bcd09794c GIT binary patch literal 1915 zcmZvdO>f&q5QgvjE9PP#36SOP?9P4wL4d|?f}kzxD!m0gs5IlKki|w+inPDJ?~oG3 z*y2H0KAN5H8D8DqynX3yHpY{q{?ES*(W_VV`nBnHclv60$(x_M-TmP+1;CX`4TpWV zelX2V_s^#7R`1@>^@rtKJD4xVTQ@%BPKTHC>EeG7{ z$&t8NuHs^$hXoC6#XG5)m~9BI)Iwm9r6zxowZ>QL;DDD=GWg&V`2szeJyUQNAd4t- zHL~g{wmL3_3AcldQG!(R&ZgpFlC~EqBty!9p~=}OF5o_x&&9J_Fz94klVphts?0~^ zWMStLYfVv=$eFrXD%=ckDBDmZhDae;S4ys)qJ|Sw*02SRLGA)-4PcHXyGbr086-9$ z&agz^Umc~!s|yn&MCc(!m_L_lMsPU9z)ABuH$t(|O9b1VS+<-rSLDz7kb(=8G(KO1 zQ1&8%a?C{C@S!B}XC@#SRi|u)bFB#>9SOR@r-C3`BbFu9Fg8vtsCR}F3M<}-HIr3> zrh{|j2sxB9utS;!kz_9D!x^c*h;kG(?+k$i=AaGrt?1IC$%Ricws1wC2?oQUWjMtm zi~wUoI=pt-QwSs>l#GG3Xlj+yEYcs_F{s z2uqHWgD{2cZ7)(tddv$N3js6qpku(;RY^FhU*qjbXL1Z5FKsmpQNq#k`RFH+?3ykMIjcDw#C(8oWpaPc(1|ND1G&F%WWJAz-jyUqGd z|BXJL*XBF~>M2SCpD{Ma<$BVz>W2R7zU>CmmA*QvyY6>~ZU>9H&rk4ny$2&XqQ%x% zG=B}6pEh@Jl{A7Co$OrqUvbwz@qYkWXiDE{n!>zZAJ*Ic{&-b`9xgfYZQp$|sE?T< z)L%-1@ rPR}-X&!?m`tG+*w20SLX`LOw~gZJZSa=kx{;dnHsxw`uC*SG%zr!SGL literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS Info/logo_rts_info-32.imageset/Contents.json b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS Info/logo_rts_info-32.imageset/Contents.json new file mode 100644 index 000000000..7ab33a231 --- /dev/null +++ b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS Info/logo_rts_info-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "RTS_Info.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS Info/logo_rts_info-32.imageset/RTS_Info.pdf b/Application/Resources/Apps/Play RTS/RTSResources.xcassets/TV/RTS Info/logo_rts_info-32.imageset/RTS_Info.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b4e819231942757fd652a176794647ba29677674 GIT binary patch literal 5738 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 LzW9fK`@{bOPRT$h literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/Virus/logo_virus-32.imageset/Contents.json b/Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/Virus/logo_virus-32.imageset/Contents.json new file mode 100644 index 000000000..9d509bc2e --- /dev/null +++ b/Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/Virus/logo_virus-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "SRF_radioVirus.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/Virus/logo_virus-32.imageset/SRF_radioVirus.pdf b/Application/Resources/Apps/Play SRF/SRFResources.xcassets/Radio/Virus/logo_virus-32.imageset/SRF_radioVirus.pdf new file mode 100644 index 0000000000000000000000000000000000000000..929392cc81704c416f8530e332e92edd3719942e GIT binary patch literal 1306 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 W`+7rPU*FVl^c>PXc<|jXFa8IUATrhf literal 0 HcmV?d00001 diff --git a/Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF2/logo_tv_srf2-32.imageset/Contents.json b/Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF2/logo_tv_srf2-32.imageset/Contents.json new file mode 100644 index 000000000..1fc0f79c8 --- /dev/null +++ b/Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF2/logo_tv_srf2-32.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "SRF_zwei.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF2/logo_tv_srf2-32.imageset/SRF_zwei.pdf b/Application/Resources/Apps/Play SRF/SRFResources.xcassets/TV/SRF2/logo_tv_srf2-32.imageset/SRF_zwei.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f94f96ee1697e22e7dbf4e4ac35c426b211afe64 GIT binary patch literal 6457 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 O+2TxZ-u&iI-~AVZ9RM5v literal 0 HcmV?d00001 diff --git a/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Contents.json b/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Contents.json new file mode 100644 index 000000000..3a794b667 --- /dev/null +++ b/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "radioset_32.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/radioset_32.pdf b/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/radioset_32.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cefdfdb17a6f6ee990230efa3aab199067b8d0d1 GIT binary patch literal 6289 zcmb_g2UJtr(gsvOs#L`qkt#QxkPt}_LX{Glvyzq3}7ojJ3=GiUaEGqbmzz$5Fh|3 zPwCso4T}|Hb66B2U5wjxAvMs!p+hnDX-!~o))UC@O2Nq>NW>%vuw}LF22bG)j|3Vd ztY~osyNzUI1dUH*MhNC)nH9x(Y}Y6_AZ@nJ#siX2P(U_m-xC@XG&V3W^Pr}?%WI51 z(;1Rc0TNKbZv%nXqzVDj)Zd8&qn|kLeOl!mhxc;pC7%1|GmheRzTq4{>DL?HQJ)_tFrYY`P_sNxN_col>{Y|_%!ey zn?{yL5~2T6Mwnu!ZSydBE1|LXynSaA4LTFY4LNdRhexAn;~J%X)_HNvqt0;iv&{+< z1V0)qHcd((LFI-xs)#F-9(T4;T8bkx!4mMztpuY6#T9)^SNGzoa&tYuRQXK^-2z!0 zXB?zI$qZq^l2JmDS^CK-5Btl8K$=a3mhL(NN4*w*Q}Uw^Wh)cTxe{DAo>NLYWLvOw zYZj?GI-*=7Hv1YL*FF4Vz^RE)!X?o8YZ z^6m|aUoUD$Pdo;P!;e*NPCZ$fdFN9&dR{VY0<&Wx;Le%Y(MRzVvE_$A0N-u1lC zNsXxt0mLIwvp1PS{qM06+3N&lgKS<;bGxMU)Woy3lOofpt>tLW*%BO%c*C z1JFwevE4E+*Gxz4v03%eV28J$`fd@FBq-wXJ9OpR(FlB6^KmM6uzjR*bj& zxu`=iZyQ7{qYAIXiX=BRNW5G-eI&XE;k)^~@cX-8$E_=cildL$jf}6EMTd%Pjm&5$ z6WtvrDrt+8kP+^Un%ypA_FKKF4j{%%*Dkgk;ARG9i7Of8oeb2FNQlbLk+8j?fp-v1 zh}naq?^ej!X=`dbQn0lR*rst%cxtVciB^_mtByB#awlgqTFxy3WQxpu)q18iu(j_4 za)ZQ?BhTubiF(kUv#XoYme4_gJO%bvc!W|zvqy<@P?2D})TdaA$C{Ty!-s~U!@9$O zfX#D?rj3QY&Ay|RqMN19#A-c2^tAK}`^i-XRm;1JGoxo3$|gEzWkWHw;^C|GlQPuJ zclV5#PlyroHoEEuF-bu#qi{MmWOC}pBbk7`}&OATAqXCSD?grO|BP<2S9 z$`NK-y6~ z34+@G!RyV&X;3l4XPK2Y&ZmK=gCD6rLMh;0WCh#G6&SZM3l`dxT$DN~rCFserF%=g z$fn++R_TMr7TGDS)~!dp$IfVg{aou^N=fFAPt~ciSqZEp*5)e1D#xl_tg(Ti&y3IU zpKlNB>fffBDL<(oBo9-N+PTl}tYhxZuAQaw;tF_;w@y(hlPN+e?V4L0KiZ$$>u5V| zW4-t7wNTq2*OW7xc`QfDo|No^*BCCtO=&O zEJM-*VyAPH&L^F*PO>g*!MT+dM>EbbE{xJKiCb}C+p&nZR$?Z+<7@PGuz%j}Xgx3S^!2!85Eg)_2U>@^6>f&6ZR4$;RO=mCeXeFL|0d5aLyFuln3kH(u=@@5qzey%@a6e8-!q;P!4z<+Q%*;- z*cF9OPLtf^>gZ~%nvB^GbK_yRLW$i9wIQL~irZY92%SA5^VRdyvzX5v6ZkJnSOK|r z+iVoZwOh3z$m_^BS$Tyv`AM~xx|J%k262oyNbW8Nm^Q2&$^kVainM9ul!?nzSBhh` z4zn9}?YJ(JB_kXs*RmNqVZn=qS21#`O7{}cO2?94D~eWnN~g*K$@u=t_n|dX6-gDvyPSZ5 z?9mUw`BN2}G9{s#ZXplSn!8c8O{C|~o*aG>pC0}Y-lX*;q(+ry;Z)07%$qN{x|NVF zt|B(Orr{Os<_nrB{XJu>n^;R)O2Wqs*ZUZ&84nn5OK`c@Q43qR+ckiT%YqUq|RAa;DvZ`yJiOj$g-DGIQ(mv)OkB7v1Lc z9qv25Eo2oRyy|%Qtt}=nBJ99;W?x14}zOQgM)wSQn|Kt&jH za^d9jgZWol9$wVcwLqnZ2lVV~sp|Yv_&y)p=(gcg(#J!-elPC5!U$p(&Qycls)i4J z^|)p~R;3l-WWB$lD){5ZKGz5Sk3WrsDTdMYo#$KInVsE-8a|r5xB8Usw(7A+ixgVI zy>cM<(`Wj%R~=(T)o_SBj1!1rar;4Yqy06xA>c8u*BRm0hqnJg?AcLhI&eH?YsW&t z4Czzcz{51#j%T&%2KcRsCHF5bonCw%J29W%pFbdXS?*Y}XL5f2>wE^5ut1v+`uOGR zP*ldH@Zv*RbG^6sZw?g!Xhq z-KL`A_8U?~+o_SSBiYBXC5IM6+55X^Ge$@I7T#Qoo_`fMGdkL1F{!`!5j=FQIBD^z z^xT)Pb+&P`_wIa0F@BW@g?>5D0XlgXRkc)lW`}G8?W8+;1 zM=w?FtFo1Tj0BgndjSC>#s=Xk)Yav%84K{BL;zdJzVK+~2@9-0Z;%bq8ut8FtgJJ4${*5}QwnPZFC6aBW#qGIN zyTO7v;rPmG=)vcxH%F3_iFpP}4+3OW+lp>$<{Z@pR(@8B#67>v6)(;bpGtZ1E^CwG z!r)Z(yLIn&yN(}T4^J)`h96Q4BrNpQ?y^a=t(|uw1<#KOPkpF8;856GUW2MRIhoj7 zo0a#rKxD%ib3M(Ib}m|(JGMC88dS~FvcACGml0j};=G)4-fpQ&Grdm24G%!|8(xDI zLNdn?!4=ag7VMsssrvK&z!=-^+AJonSWKy90fEf$Dyp;+FWLLcVB}aP8Wzh#C0Ku0@fzqaqhu#&sBJ zpcB{AK`n#=m~fcz&CIb^nwVA{%=itx@p6)#T(Lts$|9{Ur=_F#$n%+Pqi@t_qz6p; z?){xle5UX@ghZfz&EK*I>lp8-L^w4pk1I25i0fvH0v>O4IwCiy?9*sz#ne-iKU8occ)jq0IgV`L7{ z1wlbDUnr2uGYW4Ha0b(fB)mP}CSD%+o;#pF9Pn#H3)NoE9u7gi6tESALnIS9M6kWT z2Zt|kwzB+{MD+BzzC@A_g#+-Qcu^S`<+0m$lmS#SM%f8r1+ntQQM{>U!7Pe>u(bmz z*oUM`R@TRg0eF`l7tN*n(s}3rE}h0;qq!JmA}^Uy(7Z8U3|9W8$WvvJJ<)bXCf^l# z|1iql9F8v<3=Rwo1O>uDOqLfIs;jFDhQPou7?7s{WCt-gL@toQ-tiOXI}&f9NGz%^ zhv#BaKhIru z44E6Li4X6-|6eXWYVzzj=?JlthvH0CTn@xUm<@`W#pfhjZ!pMz|kY0$qoluSZ%_$mGujh4yF zCz%0_^JnRIiqWY2bc3exP6si{Tp*d^N%W_2l(B!Q5#IuXM*TC!H|bxX^}v5OB zw;Q~i`VE*D<3F-7R_s?!=T!)dGK-(Fd80pfq01$LUpAo#DD-D3S<#0s7Y`h-aL|}u zU>l+rg}r?IX$QvRc(Lb8VR5JwHm~I1ai(kn0Ld>nZeSz6fJLUTeo8Et|sCEEh1l6$R}_hrFVoE#v>w5$&>>c#nhj96Il~7Rgg#u{i*3*sl`D z?V_K+`!ql#?u{+VqZ#T1^LBk3RvfbaM&8;cMwUo&LC$Yi%3el}zQQ-5A7vhB3~4{^ z4eC>eU6n7&6V^IBWxVDtzJy%4frgLPKSk=&5q;ckvbijLZggm) z`WGRoJhlowTqfwG;9J8h&6UzsW$L$Hyg6vYnyXiR^;yFy7cyqA^r2tyJ+T546dLONNICOfcZ?kEl{rOPLjp8F8O7ry9ItpK>;cq?9o7=c{ z9Ges_5RuNg`43UR_bWdNU^+TKg8=ni#&iEaoQW?x+}V!e33ejzS|k9>4Qx*hrU0P2 zU^^z01Ay{l$PR4I@MHp(`!L?vh@fYH!y#ZM5FAt+rHwE&;k8HFIwmM19URg~8>$P@ z!Tx6rUU)4Z%i9oHbbjRFm^6PngAG7{ZCDgCmBerApuC0uajdVayQTws z!@K2;pY4)XTK~*a>w2=))ke^2LW%qido8HUy)Ct0%EIc_Zgq-CGuo0}bS|h-H&Q6x zuzh&m$aO*2G@CVMU-0$yq-}m!q*x}8=FbGOQ zW1#={#}Wt-6vXrikT5a=tSJmXu0IGakT?M5R2rAU2Fz(hE(K2^G07Cb7K8vChzvi9 zClmw|D1H8TVX+b%E}KH6OYpkRp9*nuYFCQ=y(T0y>ml^9a%c(!8aWLCZCYu+!FTnB z`y#g`ZD?@?JMprzqGrEjMvCTSSr*6nY|$>*Cu6zZ&Ig)MP(U_s+ZD#=PYe#eYpChz z@|)ni>pYNA0TEFrY=!`>Cd5*`;j)ryGR+gm?GvqkT&f3IeHUm-W)H9{@#u6ly9 zd3+kM%dVd7ljJ$@uZ(b|PWz@YvZ`l&-#N$5MjGs09Phx9U$*+xThy;o-ea2=$2{tW zusYMEIOVyY29HgX7D-UQy3U}OCz~F3rd~#xD?7y&VdYi=21DzVSfwlba8`rC`&>vw$3G!|NWBSnt-ecGo+0Ae-o?JYyx{OkWM5N4K-s8_XVXCu^i?rX$f8X8&=wJO zv+%$hQ+N3Oef;>J#2x5~#}Ej_u}YOw$15{$j7Fdrq{62#Tc?6=oQ@s8A5W1;S;^i1 z+)c+y#}tdfq&D`oNG%%GFB(ioWI11 zpF7@sY+hwpZiBVo+V{#w1N#EkwnU1kiz?n*p_nPkJ+uY7!sVutff(wF*xaFg>!sVo zl;YMjM#{iVARUqtJ7qgo%|`9ATk*>)9HtJx^i`(MXQH59F#Zo`tmh4zNdnCG7pQUnc_3+L2leU#&m!gwzy`Ee( zhYnk#dMM*|nfT5)aVdM8r0nXxsJSh&mfPzrkf0b#LxjKqQaI1E}>Y24R=DJx@El7W0dK*^-E$Z zx14SXY3YB7+8}x4$fH|sL?c-5nUzgwYuJ!To+3vT5vhE;$*07PUo6@tJsL~#S=Avn zc5nC?m8U5~d*;MD8To|Ty zUBn9Gqzo-fd9HZy;eDoJL_}6pi)kgEXUQ{DmwOuDRxhG2p>4162m;fd zGL-`gHAd8{T;LX^d*0*@NHtP*s!v`$c~rqMAlfOlRi}_x=uS;2FD%dCmU2tDDbvm) zR?5YRR}<4EJvH|ZU1>5)gGrb^%B-|=I|)7+dSBzdfgRb^<$ztx{!LJ=Y@J_R4zuTb#N_oAoXB*@W4lmxrDg|QzV8fn#N>ZSgzOH<)_SD-5;Lu= zuc1%S&+_=y<3?BYwWQFv&uIsW`apVc>}+n*xuny!Nw#IpIIq%6(TuZ<^W$_(qACuspNM>66YkbyYV3Vu z*WwXT+CJ({eS>|_D+)EOp*l?J^T$NoiL4aj5n@?yf$YP34cfmK+W^CYTkAj*gETk=(7vT&m<*~LN+P1kkS zr%gN?G8*>jFMTmst=spi*W+c^gl4}|pUcQ>hu3pVb4_RX-P?7f^9_7LdH!$1jNgd> z1vurJ)7~Ueq&Vt2%}c3{uGX!|n0q-t8GbE{*rQl`AZ+ucR*y!{&fYZ()eEz8m^bZH zgtv=W5&1th+bK@!wdg@nS5R?s3W}`?)0!QImFjaQaf~=(R)m zQx|87F2(8|=G@+~^@?nktdwk7(Q}sxFN`Wx)_uKUxw)TB+u5Q(#Wu}fG4dM9cM{Rc z$C9LvG7>)BoF=uw{7BV47fHTukmB&-VVXs-@___WgU+CJeb=2+cWv)>-gzCLo)8iT zBxej=W9e1_@<#Fjazk<-<&xDQ>Mn*AqoQV3IIUVQZhh18S9Cl5JAw??%d*Gn(2 zp(4VV2XW|=wVE}KI~6}#&#VoK@r=n)o>g{MW+HG1g0Gd|ROyG(nX(WvVW4t2tVX&b zsp8TOS8xbt{AFnVOvTTcQm~(|p#o@4JqERnq$iIa9)1{~9&r!RsQd6hjRtMEYc2az z-a^T*s-EfV)FtLt-R`FS_LOEpA7)JS5Nk<`NrafOx_|@g&3wumRWca?x%>G-aHV&T6KKm}VGIqQzwDoE`wLNw7 zU6p2og>r0p?YqFc?Z>1fq|Br?Cr>6Nsz@1iJ@J3q(UIHg^jH$LE&Av;bJ8O1qHZ5r`>3H*G^C3rF z+n|un;EHhO^vB~*0`iNR?_JO_+-;B^5!}0{xvKMR;cz}s@3mnx>D58j{-<}kF`}4{ zr>g<4szeBbrGDiI^;?)r#NCl=Yg?R~CqE+^p_s z=F+dep`P%raE$y*Ppbb9J?Zk^^R?rSBq!MVrf`Xdl@~sJNEwernu?1X+!POv_FBLD z=8R7F#Cwd3iYQf`@RXZc)QvG-VV1D%yw$2>z#Abso<#aBPiwkbjKnEqcb;cd9I<)Lqd^>;xfT7r#LiC_ zJ9apu;xF%5G)|6q*#CS!aBjmV5%jo*=3gNu1dk9_`f%7+gu#|=d$?>Oi$x)Ww0(&* z4n;=-zzH@pTqYZ&?MPu$eL*I^zElR4%Lm~p9I79K!UpZpwjr`X2p9+sg+uq~2&Onu zxikt$n;T4{22=JT;1Cws_p2o;lYtj(qCnbsv``;v0M~;d5pV=b7Yf&cLbU{XHcaw= zQn6z*$w4H+!?gwbHyYJP*A8z5GK9b&a25zl)oU_2ZN1w-}VcrXHK zYN}^whJ>2o&5Qs+6n>n$6ds{jVUU(?;+do%I)%agY8Yn#Md_I%@L(Lm)D&!vG=zdt zFdPny$D{O3_4LdPkmm5OhL_F#X4nW2u6tP=zDD}Lj?n)dpJfsMyax0VWhg=nV}%$8 zLk+-iJtr6vjew(oW45C z++wnqrv2IESBm^so_(RylI}M{|IZg9NG5;(LIgJifJOWXtpX|fYr4SxZMImJEClQS zLH~c~vw-nmX#4}q1drqWz1KYSmt2fpO2tc_eV6^OJR_67`Naxi)0UD8nFLU16d?yW z0@q-F3MiR`<_Z)1cN#5`S4c7w8uv%(7mCrS!gPbC369G!YCJHR;!6yoan-OtREW>8 zpizIc@LBpN!$!bgo%lyoeZC>csGkiB5dJk6VB+J^erP6^Dlnolw53nQpQ8-JdferuxCqN#H!sb#b96`Y$;4Cswg@EtM~aW##N^!?>)RE!qFO6U!wx2|fXi zT)N=&5+zV!bGRTq`1b!SZc2)qrIyfg7h0nO0zv}!Z9W5=QDuI8<6WMr*LDahGg zRMv55yqnO7zMr|T{yVdNRt@COg>=8z zizulQer~k#j=gzS;EW2}#2h74JG=3IH|+Uv4}QNE{8xqIyw$pgXUtaJB$SXVH_!;t z#wSQ!Nbv_f<|<_o^W!5Mwcd(J=W*2O5wiT_qAyH~nkr?g%CxRMeI8)Pp0CsBexvQ0 z3!QLOemNjIOsv50gQbS^z{qIe64INGF%CQ=&x`0(!9X7kzuVRttcrFZc_0o}- zrFq7h?S;?M2-lwE&2L;giA{2{1O{JZg7E*%5%E&M-5e;s zfUBpVJp#eK07q&l1q3q$9GFZl2qwgk17OAQWrCJ^Fu@q_X=G-ukH8t4LJumFvDD&5<{m#w=pl(L^`%$TYnC zE_V#)C`W9ST1;^#zyA6hC+Xy_8Wgp+K|8R$l{M3R@j)$R^Evdn@=4L$6N+Jf4X&V- WU~_qFim!w|Qn2&U&@dyIOZ*$$`KkK= literal 0 HcmV?d00001 diff --git a/Application/Sources/Configuration/RadioChannel.h b/Application/Sources/Configuration/RadioChannel.h index a53df003d..74068478b 100755 --- a/Application/Sources/Configuration/RadioChannel.h +++ b/Application/Sources/Configuration/RadioChannel.h @@ -14,8 +14,8 @@ NS_ASSUME_NONNULL_BEGIN /** * Images associated with the radio channel. */ -OBJC_EXPORT UIImage *RadioChannelBanner22Image(RadioChannel * _Nullable radioChannel); OBJC_EXPORT UIImage *RadioChannelLogo22Image(RadioChannel * _Nullable radioChannel); +OBJC_EXPORT UIImage *RadioChannelLogo32Image(RadioChannel * _Nullable radioChannel); /** * Represent a radio channel in the application configuration. diff --git a/Application/Sources/Configuration/RadioChannel.m b/Application/Sources/Configuration/RadioChannel.m index 134c8a274..69581132b 100755 --- a/Application/Sources/Configuration/RadioChannel.m +++ b/Application/Sources/Configuration/RadioChannel.m @@ -29,12 +29,12 @@ - (instancetype)initWithDictionary:(NSDictionary *)dictionary @end -UIImage *RadioChannelBanner22Image(RadioChannel *radioChannel) +UIImage *RadioChannelLogo22Image(RadioChannel *radioChannel) { - return [UIImage imageNamed:[NSString stringWithFormat:@"banner_%@-22", radioChannel.resourceUid]] ?: RadioChannelLogo22Image(radioChannel); + return [UIImage imageNamed:[NSString stringWithFormat:@"logo_%@-22", radioChannel.resourceUid]] ?: [UIImage imageNamed:@"radioset-22"]; } -UIImage *RadioChannelLogo22Image(RadioChannel *radioChannel) +UIImage *RadioChannelLogo32Image(RadioChannel *radioChannel) { - return [UIImage imageNamed:[NSString stringWithFormat:@"logo_%@-22", radioChannel.resourceUid]] ?: [UIImage imageNamed:@"radioset-22"]; + return [UIImage imageNamed:[NSString stringWithFormat:@"logo_%@-32", radioChannel.resourceUid]] ?: [UIImage imageNamed:@"radioset-32"]; } diff --git a/Application/Sources/Configuration/TVChannel.h b/Application/Sources/Configuration/TVChannel.h index da0f561a4..1f497acaf 100755 --- a/Application/Sources/Configuration/TVChannel.h +++ b/Application/Sources/Configuration/TVChannel.h @@ -14,7 +14,8 @@ NS_ASSUME_NONNULL_BEGIN /** * Images associated with the TV channel. */ -OBJC_EXPORT UIImage *TVChannelBanner22Image(TVChannel * _Nullable tvChannel); +OBJC_EXPORT UIImage *TVChannelLogo22Image(TVChannel * _Nullable tvChannel); +OBJC_EXPORT UIImage *TVChannelLogo32Image(TVChannel * _Nullable tvChannel); /** * Represent a TV channel in the application configuration. diff --git a/Application/Sources/Configuration/TVChannel.m b/Application/Sources/Configuration/TVChannel.m index d1fed5e36..084775243 100755 --- a/Application/Sources/Configuration/TVChannel.m +++ b/Application/Sources/Configuration/TVChannel.m @@ -14,7 +14,12 @@ @implementation TVChannel @end -UIImage *TVChannelBanner22Image(TVChannel *tvChannel) +UIImage *TVChannelLogo22Image(TVChannel *tvChannel) { return [UIImage imageNamed:[NSString stringWithFormat:@"logo_%@-22", tvChannel.resourceUid]] ?: [UIImage imageNamed:@"tv-22"]; } + +UIImage *TVChannelLogo32Image(TVChannel *tvChannel) +{ + return [UIImage imageNamed:[NSString stringWithFormat:@"logo_%@-32", tvChannel.resourceUid]] ?: [UIImage imageNamed:@"tv-32"]; +} diff --git a/Application/Sources/Helpers/Categories/SRGChannel+PlaySRG.h b/Application/Sources/Helpers/Categories/SRGChannel+PlaySRG.h index d6d87b2d2..319562ce6 100755 --- a/Application/Sources/Helpers/Categories/SRGChannel+PlaySRG.h +++ b/Application/Sources/Helpers/Categories/SRGChannel+PlaySRG.h @@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN @interface SRGChannel (PlaySRG) -@property (nonatomic, readonly, nullable) UIImage *play_banner22Image; +@property (nonatomic, readonly, nullable) UIImage *play_logo32Image; @end diff --git a/Application/Sources/Helpers/Categories/SRGChannel+PlaySRG.m b/Application/Sources/Helpers/Categories/SRGChannel+PlaySRG.m index 0dbdef3b7..a4579f02a 100755 --- a/Application/Sources/Helpers/Categories/SRGChannel+PlaySRG.m +++ b/Application/Sources/Helpers/Categories/SRGChannel+PlaySRG.m @@ -12,17 +12,17 @@ @implementation SRGChannel (PlaySRG) -- (UIImage *)play_banner22Image +- (UIImage *)play_logo32Image { if (self.transmission == SRGTransmissionRadio) { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @keypath(RadioChannel.new, uid), self.uid]; RadioChannel *radioChannel = [ApplicationConfiguration.sharedApplicationConfiguration.radioChannels filteredArrayUsingPredicate:predicate].firstObject; - return RadioChannelBanner22Image(radioChannel); + return RadioChannelLogo32Image(radioChannel); } else { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @keypath(TVChannel.new, uid), self.uid]; TVChannel *tvChannel = [ApplicationConfiguration.sharedApplicationConfiguration.tvChannels filteredArrayUsingPredicate:predicate].firstObject; - return TVChannelBanner22Image(tvChannel); + return TVChannelLogo32Image(tvChannel); } } diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m index 120cb7e12..f44eff077 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m @@ -257,7 +257,7 @@ - (void)reloadData SRGChannel *channel = self.programComposition.channel ?: self.media.channel; if (channel) { - UIImage *logoImage = channel.play_banner22Image; + UIImage *logoImage = channel.play_logo32Image; self.logoImageView.image = logoImage; SRGProgram *currentProgram = [self.programComposition play_programAtDate:NSDate.date]; @@ -286,7 +286,7 @@ - (void)reloadData } else { self.titleLabel.text = self.media.title; - self.logoImageView.image = (self.media.mediaType == SRGMediaTypeAudio) ? RadioChannelBanner22Image(nil) : TVChannelBanner22Image(nil); + self.logoImageView.image = (self.media.mediaType == SRGMediaTypeAudio) ? RadioChannelLogo32Image(nil) : TVChannelLogo32Image(nil); NSString *showTitle = self.media.show.title; if (showTitle && ! [self.media.title containsString:showTitle]) { From 7caeb4c6503f91f509b7c24df178715f47fc8c09 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 24 Aug 2020 17:46:57 +0200 Subject: [PATCH 39/55] Update translations --- .../Resources/Apps/Play RSI/it.lproj/Localizable.strings | 3 +++ .../Resources/Apps/Play RTR/rm.lproj/Localizable.strings | 9 ++++++--- .../Resources/Apps/Play SRF/de.lproj/Localizable.strings | 3 +++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings b/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings index 6858eec7a..5821cd920 100755 --- a/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings @@ -22,6 +22,9 @@ /* Title displayed on the radio home button */ "%@ overview" = "%@ home"; +/* Text displayed on live cells telling how much time remains for a program currently on air */ +"%@ remaining" = "Ancora %@"; + /* Label displaying the number of views on the player */ "%@ views" = "%@ visualizzazioni"; diff --git a/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings b/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings index 136fd5af7..243f6407e 100755 --- a/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RTR/rm.lproj/Localizable.strings @@ -22,6 +22,9 @@ /* Title displayed on the radio home button */ "%@ overview" = "%@ survista"; +/* Text displayed on live cells telling how much time remains for a program currently on air */ +"%@ remaining" = "Anc %@"; + /* Label displaying the number of views on the player */ "%@ views" = "%@ visualisaziuns"; @@ -127,7 +130,7 @@ "Discover" = "Scuvrir"; /* User activity title when displaying a show page */ -"Display %@ episodes" = "Display %@ episodes"; +"Display %@ episodes" = "Mussa las episodas %@"; /* No comment provided by engineer. */ "Do you want to send an anonymous crash report so we can fix the issue?" = "Vulais trametter in rapport anonim, per che nus possian schliar il problem?"; @@ -221,7 +224,7 @@ /* Suggested invocation phrase to listen to a show Suggested invocation phrase to listen to an audio User activity title when listening to an audio */ -"Listen to %@" = "Listen to %@"; +"Listen to %@" = "Tadlar %@"; /* Introductory text for what is currently on air, displayed on the mini player Short label identifying a livestream. Display in uppercase. */ @@ -585,7 +588,7 @@ /* Suggested invocation phrase to watch a show Suggested invocation phrase to watch a video User activity title when watching a video */ -"Watch %@" = "Watch %@"; +"Watch %@" = "Guardar %@"; /* Label to present the watch later list */ "Watch later" = "Guardar pli tard"; diff --git a/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings b/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings index 1a4283b48..f848bd188 100755 --- a/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play SRF/de.lproj/Localizable.strings @@ -22,6 +22,9 @@ /* Title displayed on the radio home button */ "%@ overview" = "Startseite %@"; +/* Text displayed on live cells telling how much time remains for a program currently on air */ +"%@ remaining" = "Noch %@"; + /* Label displaying the number of views on the player */ "%@ views" = "%@"; From 9b5a56ffe91576cce58c4f10e192ca54b2065882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Tue, 25 Aug 2020 07:56:59 +0200 Subject: [PATCH 40/55] Avoid logo being slightly squeezed on tiny layouts with large fonts --- Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib index ea2b7de06..61d388047 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib @@ -62,7 +62,7 @@ - + From 2a8d9690dcf1a20339f55387442128cf565d4948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Tue, 25 Aug 2020 08:09:46 +0200 Subject: [PATCH 41/55] Add more space (and margin symmetry) horizontally --- Application/Sources/Home/HomeLiveMediaCollectionViewCell.m | 7 ++++++- .../Sources/Home/HomeLiveMediaCollectionViewCell.xib | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m index f44eff077..26c2477bb 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.m @@ -70,6 +70,7 @@ @interface HomeLiveMediaCollectionViewCell () @property (nonatomic, weak) IBOutlet UIProgressView *progressView; @property (nonatomic, weak) IBOutlet NSLayoutConstraint *topSpaceConstraint; +@property (nonatomic) IBOutletCollection(NSLayoutConstraint) NSArray *horizontalSpaceConstraints; @property (nonatomic, weak) id channelRegistration; @@ -112,7 +113,11 @@ - (void)layoutSubviews { [super layoutSubviews]; - self.topSpaceConstraint.constant = (CGRectGetWidth(self.frame) < 170.f) ? 4.f : 12.f; + BOOL isSmallLayout = (CGRectGetWidth(self.frame) < 170.f); + self.topSpaceConstraint.constant = isSmallLayout ? 4.f : 12.f; + [self.horizontalSpaceConstraints enumerateObjectsUsingBlock:^(NSLayoutConstraint * _Nonnull constraint, NSUInteger idx, BOOL * _Nonnull stop) { + constraint.constant = isSmallLayout ? 4.f : 8.f; + }]; } - (void)prepareForReuse diff --git a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib index 61d388047..5202672fc 100755 --- a/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib +++ b/Application/Sources/Home/HomeLiveMediaCollectionViewCell.xib @@ -180,6 +180,8 @@ + + From f7a478931f52acc4a070d5502ecc794a6e814c19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Tue, 25 Aug 2020 08:17:02 +0200 Subject: [PATCH 42/55] Update TV icons --- .../Icons/tv-22.imageset/Contents.json | 10 +++++----- .../Icons/tv-22.imageset/Tv_icon22s.pdf | Bin 0 -> 2784 bytes .../Icons/tv-22.imageset/tvlive_22.pdf | Bin 386052 -> 0 bytes .../Icons/tv-32.imageset/Contents.json | 2 +- .../Icons/tv-32.imageset/tv_icon.pdf | Bin 0 -> 2799 bytes .../Icons/tv-32.imageset/tvlive_32.pdf | Bin 6044 -> 0 bytes 6 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Tv_icon22s.pdf delete mode 100755 Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/tvlive_22.pdf create mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/tv-32.imageset/tv_icon.pdf delete mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/tv-32.imageset/tvlive_32.pdf diff --git a/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Contents.json b/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Contents.json index a15e521b2..87bf0e50a 100755 --- a/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Contents.json +++ b/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Contents.json @@ -1,15 +1,15 @@ { "images" : [ { - "idiom" : "universal", - "filename" : "tvlive_22.pdf" + "filename" : "Tv_icon22s.pdf", + "idiom" : "universal" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 }, "properties" : { "template-rendering-intent" : "template" } -} \ No newline at end of file +} diff --git a/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Tv_icon22s.pdf b/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Tv_icon22s.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fa6854d6a5a3bc899836a01b3e8631b3ac6ec8bd GIT binary patch literal 2784 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

O_B|8NBka8Pvn7r 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Ŋ}Ke2 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

`zJ95lLB3Z7YunFdI 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

JKgkTOK^Xgl#B;(rjRsD-)=m(0SK3HuWPh|a{ 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 WU~_qFim!w|Qn2&U&@dyIOZ*$$`KkK= From 98e8665d2f3acd1433f24ad36d17ec77e190c01b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Tue, 25 Aug 2020 09:11:13 +0200 Subject: [PATCH 43/55] Update TV icons (again) --- .../Icons/tv-22.imageset/Contents.json | 2 +- .../Icons/tv-22.imageset/Tv_icon22s.pdf | Bin 2784 -> 0 bytes .../Icons/tv-22.imageset/tvlive_22.pdf | Bin 0 -> 3268 bytes .../Icons/tv-32.imageset/Contents.json | 2 +- .../Icons/tv-32.imageset/tv_icon.pdf | Bin 2799 -> 0 bytes .../Icons/tv-32.imageset/tvlive_32.pdf | Bin 0 -> 3281 bytes 6 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Tv_icon22s.pdf create mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/tvlive_22.pdf delete mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/tv-32.imageset/tv_icon.pdf create mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/tv-32.imageset/tvlive_32.pdf diff --git a/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Contents.json b/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Contents.json index 87bf0e50a..d417840d3 100755 --- a/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Contents.json +++ b/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Tv_icon22s.pdf", + "filename" : "tvlive_22.pdf", "idiom" : "universal" } ], diff --git a/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Tv_icon22s.pdf b/Application/Resources/Images/CommonImages.xcassets/Icons/tv-22.imageset/Tv_icon22s.pdf deleted file mode 100644 index fa6854d6a5a3bc899836a01b3e8631b3ac6ec8bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2784 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 Date: Tue, 25 Aug 2020 10:08:24 +0200 Subject: [PATCH 44/55] Update radio 32 icon --- .../Icons/radioset-32.imageset/Contents.json | 2 +- .../Icons/radioset-32.imageset/Radio_icon.pdf | Bin 0 -> 3331 bytes .../Icons/radioset-32.imageset/radioset_32.pdf | Bin 6289 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Radio_icon.pdf delete mode 100644 Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/radioset_32.pdf diff --git a/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Contents.json b/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Contents.json index 3a794b667..c55ec9d3d 100644 --- a/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Contents.json +++ b/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "radioset_32.pdf", + "filename" : "Radio_icon.pdf", "idiom" : "universal" } ], diff --git a/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Radio_icon.pdf b/Application/Resources/Images/CommonImages.xcassets/Icons/radioset-32.imageset/Radio_icon.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a8e4094c677dc154bc6dcfc84a90ea049af70bb8 GIT binary patch literal 3331 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 Date: Tue, 25 Aug 2020 13:32:49 +0200 Subject: [PATCH 45/55] Update what's new --- WhatsNew-beta.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WhatsNew-beta.json b/WhatsNew-beta.json index f77ca45d9..7623a715b 100755 --- a/WhatsNew-beta.json +++ b/WhatsNew-beta.json @@ -115,5 +115,6 @@ "3.1.0-336": "- Update german translation.", "3.1.0-337": "- Display waveform for song currently being played.\n- Display current show in show list for livestreams without timeshift.\n- Apply snapping in search results for shows.", "3.1.0-338": "- UI improvement for video livestreams.\n- Long press to copy the song title and artist name.", - "3.1.1-339": "- Always hide the playback controls after entering full screen.\n- Fix screen incorrectly turning off when watching videos with sound over AirPlay.\n- Fix issue leading to the loading indicator being displayed more than necessary.\n- iPad profile split view: Reset right navigation to its root when tapping again on left cells." + "3.1.1-339": "- Always hide the playback controls after entering full screen.\n- Fix screen incorrectly turning off when watching videos with sound over AirPlay.\n- Fix issue leading to the loading indicator being displayed more than necessary.\n- iPad profile split view: Reset right navigation to its root when tapping again on left cells.", + "3.1.1-340": "- Updated TV and radio channel overview on the Live tab. \n- Add \"sort by\" filter in Search tab.\n- iOS prediction for TV and radio livestreams." } \ No newline at end of file From fa10c4d0d65806e340f917ddd5a05727d51d9570 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Tue, 25 Aug 2020 14:29:11 +0200 Subject: [PATCH 46/55] Fix documentation --- docs/REMOTE_CONFIGURATION.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/REMOTE_CONFIGURATION.md b/docs/REMOTE_CONFIGURATION.md index 8086423a8..f0641ea89 100755 --- a/docs/REMOTE_CONFIGURATION.md +++ b/docs/REMOTE_CONFIGURATION.md @@ -99,7 +99,6 @@ The keys common to both TV and radio channels JSON dictionaries are: * `radioLatestEpisodes`: The latest episodes. * `radioLatestVideos`: The latest videos. * `radioMostPopular`: The most popular audios. -* `radioMyListShows`: Shows from "My list". * `radioShowsAccess`: A-Z and By date access buttons. ### User interface options From aa11d55126dfcb0de5bbf84d285dc9e2c51fa7ed Mon Sep 17 00:00:00 2001 From: RTS Devops Date: Tue, 25 Aug 2020 15:12:09 +0200 Subject: [PATCH 47/55] Bump build number to 341 --- PlaySRG.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PlaySRG.xcodeproj/project.pbxproj b/PlaySRG.xcodeproj/project.pbxproj index 6767a34b5..c0e6c8f41 100644 --- a/PlaySRG.xcodeproj/project.pbxproj +++ b/PlaySRG.xcodeproj/project.pbxproj @@ -7471,7 +7471,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 340; + CURRENT_PROJECT_VERSION = 341; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -7539,7 +7539,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 340; + CURRENT_PROJECT_VERSION = 341; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -7884,7 +7884,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 340; + CURRENT_PROJECT_VERSION = 341; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -8091,7 +8091,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 340; + CURRENT_PROJECT_VERSION = 341; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; From 5875642bf8fbc60253e42e91a5f019dd53cbbadb Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Thu, 27 Aug 2020 18:27:12 +0200 Subject: [PATCH 48/55] Fastlane: TestFlight build uploads and skip if already uploaded Use "appStoreUploads" lane --- fastlane/Fastfile | 26 ++++++++++++++++++++++++++ fastlane/README.md | 5 +++++ 2 files changed, 31 insertions(+) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 6d579a93f..eb5153b3b 100755 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -96,6 +96,17 @@ platform :ios do bump_build_number_beta_workflow end + desc 'Upload a new build (bitcode) on AppStore Connect with the current build number.' + lane :appStoreUploads do + notify_build_number_to_ci(nil) + + sh 'bundle exec fastlane ios swiAppStoreUpload' + sh 'bundle exec fastlane ios srfAppStoreUpload' + sh 'bundle exec fastlane ios rtsAppStoreUpload' + sh 'bundle exec fastlane ios rsiAppStoreUpload' + sh 'bundle exec fastlane ios rtrAppStoreUpload' + end + desc 'SWI: Upload a new build (bitcode) on AppStore Connect with the current build number.' lane :swiAppStoreUpload do testflight_lane(scheme: 'Play SWI') @@ -195,6 +206,11 @@ platform :ios do desc 'Build, upload to TestFlight' private_lane :testflight_lane do |options| scheme = options[:scheme] + build_number = get_build_number + + can_upload = can_upload_testflight_build(nil) + UI.message(scheme + ' ' + build_number + ' already uploaded 🔁✅') unless can_upload + next unless can_upload build_lane( configuration: 'AppStore', @@ -205,6 +221,7 @@ platform :ios do pilot( skip_waiting_for_build_processing: true ) + UI.message(scheme + ' ' + build_number + ' uploaded ✅') clean_build_artifacts end @@ -489,6 +506,15 @@ def upload_screenshots(platform) ) end +def can_upload_testflight_build(platform) + platform ||= 'ios' + + appstore_build_number = latest_testflight_build_number(platform: platform) + local_build_number = get_build_number + + (appstore_build_number < local_build_number.to_i) +end + # Beta workflow: tag the new beta, bump build number and push to the repo, # only if we're not in a release process. def bump_build_number_beta_workflow diff --git a/fastlane/README.md b/fastlane/README.md index c6fd914aa..662ad1401 100755 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -26,6 +26,11 @@ For each BUs, build a new nightly on App Center, with a new build number, greate fastlane ios betas ``` For each BUs, build a new beta on App Center with the current build number. If we're not in a release or hotfix process (master, release/* or hotfix/*), tag the current version on the repository and bump the build number +### ios appStoreUploads +``` +fastlane ios appStoreUploads +``` +Upload a new build (bitcode) on AppStore Connect with the current build number. ### ios swiAppStoreUpload ``` fastlane ios swiAppStoreUpload From 552dcf8f9c7723764e6f2971792c20f7c221832c Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Mon, 31 Aug 2020 23:37:00 +0200 Subject: [PATCH 49/55] Optional Apple TV application beta testing url --- .../Resources/Settings.bundle/Root.inApp.plist | 10 ++++++++++ .../Settings.bundle/de.lproj/Settings.strings | 1 + .../Settings.bundle/en.lproj/Settings.strings | 1 + .../Settings.bundle/fr.lproj/Settings.strings | 1 + .../Settings.bundle/it.lproj/Settings.strings | 1 + .../Settings.bundle/rm.lproj/Settings.strings | 1 + .../Configuration/ApplicationConfiguration.h | 1 + .../Configuration/ApplicationConfiguration.m | 4 ++++ Application/Sources/Helpers/AnalyticsConstants.h | 1 + Application/Sources/Helpers/AnalyticsConstants.m | 1 + .../Sources/Settings/SettingsViewController.m | 13 +++++++++++++ docs/REMOTE_CONFIGURATION.md | 1 + 12 files changed, 36 insertions(+) diff --git a/Application/Resources/Settings.bundle/Root.inApp.plist b/Application/Resources/Settings.bundle/Root.inApp.plist index 393f813c4..2236cf3a2 100644 --- a/Application/Resources/Settings.bundle/Root.inApp.plist +++ b/Application/Resources/Settings.bundle/Root.inApp.plist @@ -184,6 +184,16 @@ IASKTextAlignment IASKUITextAlignmentLeft + + Type + IASKButtonSpecifier + Title + Become a beta tester on Apple TV + Key + Button_BetaTvTesting + IASKTextAlignment + IASKUITextAlignmentLeft + Type IASKCustomViewSpecifier diff --git a/Application/Resources/Settings.bundle/de.lproj/Settings.strings b/Application/Resources/Settings.bundle/de.lproj/Settings.strings index 720084889..c0bf3a6bd 100755 --- a/Application/Resources/Settings.bundle/de.lproj/Settings.strings +++ b/Application/Resources/Settings.bundle/de.lproj/Settings.strings @@ -4,6 +4,7 @@ "Autoplay" = "Autoplay"; "Background video playback" = "Hintergrundwiedergabe"; "Become a beta tester" = "Beta-Tester werden"; +"Become a beta tester on Apple TV" = "Beta-Tester werden auf Apple TV"; "By default, the application loads high-definition medias over cellular networks. To avoid possible extra costs, this option could be disable and the highest quality will be played only on Wi-Fi networks." = "Standardmässig werden Videos immer in der bestmöglichen Qualität geladen. Um Kosten zu vermeiden, können Sie aber das Abspielen in höchster Qualität (High Definition) in Mobilfunknetzen unterbinden. Sie benötigen dann ein WLAN-Netzwerk, um Videos in HD abzuspielen."; "Check for updates" = "Nach neuen Updates suchen"; "Clear all contents" = "Allen Inhalt entfernen"; diff --git a/Application/Resources/Settings.bundle/en.lproj/Settings.strings b/Application/Resources/Settings.bundle/en.lproj/Settings.strings index dd3cf3de8..0093e0ad6 100755 --- a/Application/Resources/Settings.bundle/en.lproj/Settings.strings +++ b/Application/Resources/Settings.bundle/en.lproj/Settings.strings @@ -4,6 +4,7 @@ "Autoplay" = "Autoplay"; "Background video playback" = "Background video playback"; "Become a beta tester" = "Become a beta tester"; +"Become a beta tester on Apple TV" = "Become a beta tester on Apple TV"; "By default, the application loads high-definition medias over cellular networks. To avoid possible extra costs, this option could be disable and the highest quality will be played only on Wi-Fi networks." = "High-definition medias are played over cellular networks by default. To avoid possible extra costs, disable this option so that high-definition medias are only played when connected to a Wi-Fi network."; "Check for updates" = "Check for updates"; "Clear all contents" = "Clear all contents"; diff --git a/Application/Resources/Settings.bundle/fr.lproj/Settings.strings b/Application/Resources/Settings.bundle/fr.lproj/Settings.strings index a4c643cf5..0ca5d23f8 100755 --- a/Application/Resources/Settings.bundle/fr.lproj/Settings.strings +++ b/Application/Resources/Settings.bundle/fr.lproj/Settings.strings @@ -4,6 +4,7 @@ "Autoplay" = "Lecture automatique"; "Background video playback" = "Lecture vidéo en arrière-plan"; "Become a beta tester" = "Devenez bêta-testeur"; +"Become a beta tester on Apple TV" = "Devenez bêta-testeur sur Apple TV"; "By default, the application loads high-definition medias over cellular networks. To avoid possible extra costs, this option could be disable and the highest quality will be played only on Wi-Fi networks." = "Par défaut, l’application charge le contenu haute définition sur les réseaux cellulaires. Pour éviter les coûts supplémentaires éventuels, cette option peut être désactivée et la meilleure qualité sera jouée uniquement sur les réseaux Wi-Fi."; "Check for updates" = "Vérifier les mises-à-jour"; "Clear all contents" = "Effacer tout le contenu"; diff --git a/Application/Resources/Settings.bundle/it.lproj/Settings.strings b/Application/Resources/Settings.bundle/it.lproj/Settings.strings index 634061e43..f2c03fe6f 100755 --- a/Application/Resources/Settings.bundle/it.lproj/Settings.strings +++ b/Application/Resources/Settings.bundle/it.lproj/Settings.strings @@ -4,6 +4,7 @@ "Autoplay" = "Autoplay"; "Background video playback" = "Play video in secondo piano"; "Become a beta tester" = "Diventare un beta tester"; +"Become a beta tester on Apple TV" = "Diventare un beta tester su Apple TV"; "By default, the application loads high-definition medias over cellular networks. To avoid possible extra costs, this option could be disable and the highest quality will be played only on Wi-Fi networks." = "Per impostazione predefinita, l'applicazione carica contenuti ad alta definizione sulle reti cellulari. Per evitare eventuali spese extra, questa opzione potrebbe essere disabilitata e la massima qualità sarà riprodotta quanto connessi a una rete Wi-Fi."; "Check for updates" = "Controlla aggiornamenti"; "Clear all contents" = "Cancellare tutti i contenuti"; diff --git a/Application/Resources/Settings.bundle/rm.lproj/Settings.strings b/Application/Resources/Settings.bundle/rm.lproj/Settings.strings index f4c3cf87b..8afb6b2f5 100755 --- a/Application/Resources/Settings.bundle/rm.lproj/Settings.strings +++ b/Application/Resources/Settings.bundle/rm.lproj/Settings.strings @@ -4,6 +4,7 @@ "Autoplay" = "Autoplay"; "Background video playback" = "Laschar ir videos davostiers"; "Become a beta tester" = "Daventa in Beta-Tester"; +"Become a beta tester on Apple TV" = "Daventa in Beta-Tester auf Apple TV"; "By default, the application loads high-definition medias over cellular networks. To avoid possible extra costs, this option could be disable and the highest quality will be played only on Wi-Fi networks." = "Sco standard chargia l'applicaziun il cuntegn en aulta resoluziun. Per evitar custs eventuals supplementars, po questa opziun vegnir deactivada e la meglera qualitad po vegnir guardada mo sur Wi-Fi."; "Check for updates" = "Verifitgar actualisaziun"; "Clear all contents" = "Stizzar tut ils cuntegns"; diff --git a/Application/Sources/Configuration/ApplicationConfiguration.h b/Application/Sources/Configuration/ApplicationConfiguration.h index 557d69a91..ea1d9ac15 100755 --- a/Application/Sources/Configuration/ApplicationConfiguration.h +++ b/Application/Sources/Configuration/ApplicationConfiguration.h @@ -111,6 +111,7 @@ OBJC_EXPORT NSString * const ApplicationConfigurationDidChangeNotification; @property (nonatomic, readonly, nullable) NSURL *termsAndConditionsURL; @property (nonatomic, readonly, nullable) NSURL *dataProtectionURL; @property (nonatomic, readonly, nullable) NSURL *betaTestingURL; +@property (nonatomic, readonly, nullable) NSURL *betaTvTestingURL; @property (nonatomic, readonly, nullable) NSURL *sourceCodeURL; @property (nonatomic, readonly, getter=areDownloadsHintsHidden) BOOL downloadsHintsHidden; diff --git a/Application/Sources/Configuration/ApplicationConfiguration.m b/Application/Sources/Configuration/ApplicationConfiguration.m index b2c00516b..25aac2d51 100755 --- a/Application/Sources/Configuration/ApplicationConfiguration.m +++ b/Application/Sources/Configuration/ApplicationConfiguration.m @@ -238,6 +238,7 @@ @interface ApplicationConfiguration () @property (nonatomic) NSURL *termsAndConditionsURL; @property (nonatomic) NSURL *dataProtectionURL; @property (nonatomic) NSURL *betaTestingURL; +@property (nonatomic) NSURL *betaTvTestingURL; @property (nonatomic) NSURL *sourceCodeURL; @property (nonatomic, getter=areDownloadsHintsHidden) BOOL downloadsHintsHidden; @@ -473,6 +474,9 @@ - (BOOL)synchronizeRemoteConfiguration NSString *betaTestingURLString = [self.remoteConfig configValueForKey:@"betaTestingURL"].stringValue; self.betaTestingURL = (betaTestingURLString.length != 0) ? [NSURL URLWithString:betaTestingURLString] : nil; + NSString *betaTvTestingURLString = [self.remoteConfig configValueForKey:@"betaTvTestingURL"].stringValue; + self.betaTvTestingURL = (betaTvTestingURLString.length != 0) ? [NSURL URLWithString:betaTvTestingURLString] : nil; + NSString *sourceCodeURLString = [self.remoteConfig configValueForKey:@"sourceCodeURL"].stringValue; self.sourceCodeURL = (sourceCodeURLString.length != 0) ? [NSURL URLWithString:sourceCodeURLString] : nil; diff --git a/Application/Sources/Helpers/AnalyticsConstants.h b/Application/Sources/Helpers/AnalyticsConstants.h index 23f9868b1..d8b4e0212 100755 --- a/Application/Sources/Helpers/AnalyticsConstants.h +++ b/Application/Sources/Helpers/AnalyticsConstants.h @@ -32,6 +32,7 @@ OBJC_EXPORT AnalyticsPageLevel const AnalyticsPageLevelVideo; typedef NSString * AnalyticsPageTitle NS_STRING_ENUM; OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleBetaTesting; +OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleBetaTvTesting; OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleDevices; OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleDownloads; OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleEvents; diff --git a/Application/Sources/Helpers/AnalyticsConstants.m b/Application/Sources/Helpers/AnalyticsConstants.m index 320c49ae2..21356e12e 100755 --- a/Application/Sources/Helpers/AnalyticsConstants.m +++ b/Application/Sources/Helpers/AnalyticsConstants.m @@ -23,6 +23,7 @@ AnalyticsPageLevel const AnalyticsPageLevelVideo = @"video"; AnalyticsPageTitle const AnalyticsPageTitleBetaTesting = @"beta testing"; +AnalyticsPageTitle const AnalyticsPageTitleBetaTvTesting = @"beta TV testing"; AnalyticsPageTitle const AnalyticsPageTitleDevices = @"devices"; AnalyticsPageTitle const AnalyticsPageTitleDownloads = @"downloads"; AnalyticsPageTitle const AnalyticsPageTitleEvents = @"events"; diff --git a/Application/Sources/Settings/SettingsViewController.m b/Application/Sources/Settings/SettingsViewController.m index d7501291c..cf61eaeab 100755 --- a/Application/Sources/Settings/SettingsViewController.m +++ b/Application/Sources/Settings/SettingsViewController.m @@ -43,6 +43,7 @@ static NSString * const SettingsFeedbackButton = @"Button_Feedback"; static NSString * const SettingsSourceCodeButton = @"Button_SourceCode"; static NSString * const SettingsBetaTestingButton = @"Button_BetaTesting"; +static NSString * const SettingsBetaTvTestingButton = @"Button_BetaTvTesting"; static NSString * const SettingsApplicationVersionCell = @"Cell_ApplicationVersion"; // Autoplay group @@ -205,6 +206,10 @@ - (void)updateSettingsVisibility [hiddenKeys addObject:SettingsBetaTestingButton]; } + if (! applicationConfiguration.betaTvTestingURL) { + [hiddenKeys addObject:SettingsBetaTvTestingButton]; + } + self.hiddenKeys = hiddenKeys.copy; } @@ -337,6 +342,14 @@ - (void)settingsViewController:(IASKAppSettingsViewController *)settingsViewCont [SRGAnalyticsTracker.sharedTracker trackPageViewWithTitle:AnalyticsPageTitleBetaTesting levels:@[ AnalyticsPageLevelPlay, AnalyticsPageLevelApplication ]]; }]; } + else if ([specifier.key isEqualToString:SettingsBetaTvTestingButton]) { + NSURL *betaTvTestingURL = ApplicationConfiguration.sharedApplicationConfiguration.betaTvTestingURL; + NSAssert(betaTvTestingURL, @"Button must not be displayed if no Apple TV beta testing URL has been specified"); + + [UIApplication.sharedApplication play_openURL:betaTvTestingURL withCompletionHandler:^(BOOL success) { + [SRGAnalyticsTracker.sharedTracker trackPageViewWithTitle:AnalyticsPageTitleBetaTesting levels:@[ AnalyticsPageLevelPlay, AnalyticsPageLevelApplication ]]; + }]; + } else if ([specifier.key isEqualToString:SettingsVersionsAndReleaseNotes]) { // Clear internal App Center timestamp to force a new update request [NSUserDefaults.standardUserDefaults removeObjectForKey:@"MSAppCenterPostponedTimestamp"]; diff --git a/docs/REMOTE_CONFIGURATION.md b/docs/REMOTE_CONFIGURATION.md index f0641ea89..b694664d7 100755 --- a/docs/REMOTE_CONFIGURATION.md +++ b/docs/REMOTE_CONFIGURATION.md @@ -21,6 +21,7 @@ If a remote configuration is found to be invalid (usually a mandatory parameter ## URLs * `betaTestingURL` (optional, string): The URL of the page where beta testers can register. +* `betaTvTestingURL` (optional, string): The URL of the page where Apple TV beta testers can register. * `feedbackURL` (optional, string): The URL of the feedback form. * `dataProtectionURL` (optional, string): The URL of the data protection information page. * `impressumURL` (optional, string): The URL of the impressum page. If none is provided, the corresponding menu entry will not be displayed. From baa2816461bc55ca18c892e2c137fed8e824100d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Wed, 2 Sep 2020 07:45:33 +0200 Subject: [PATCH 50/55] Rename parameter and fix analytics --- .../Resources/Settings.bundle/Root.inApp.plist | 2 +- .../Configuration/ApplicationConfiguration.h | 2 +- .../Configuration/ApplicationConfiguration.m | 6 +++--- Application/Sources/Helpers/AnalyticsConstants.h | 2 +- Application/Sources/Helpers/AnalyticsConstants.m | 2 +- .../Sources/Settings/SettingsViewController.m | 16 ++++++++-------- docs/REMOTE_CONFIGURATION.md | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Application/Resources/Settings.bundle/Root.inApp.plist b/Application/Resources/Settings.bundle/Root.inApp.plist index 2236cf3a2..bcc9badab 100644 --- a/Application/Resources/Settings.bundle/Root.inApp.plist +++ b/Application/Resources/Settings.bundle/Root.inApp.plist @@ -190,7 +190,7 @@ Title Become a beta tester on Apple TV Key - Button_BetaTvTesting + Button_TvBetaTesting IASKTextAlignment IASKUITextAlignmentLeft diff --git a/Application/Sources/Configuration/ApplicationConfiguration.h b/Application/Sources/Configuration/ApplicationConfiguration.h index ea1d9ac15..adb73e202 100755 --- a/Application/Sources/Configuration/ApplicationConfiguration.h +++ b/Application/Sources/Configuration/ApplicationConfiguration.h @@ -111,7 +111,7 @@ OBJC_EXPORT NSString * const ApplicationConfigurationDidChangeNotification; @property (nonatomic, readonly, nullable) NSURL *termsAndConditionsURL; @property (nonatomic, readonly, nullable) NSURL *dataProtectionURL; @property (nonatomic, readonly, nullable) NSURL *betaTestingURL; -@property (nonatomic, readonly, nullable) NSURL *betaTvTestingURL; +@property (nonatomic, readonly, nullable) NSURL *tvBetaTestingURL; @property (nonatomic, readonly, nullable) NSURL *sourceCodeURL; @property (nonatomic, readonly, getter=areDownloadsHintsHidden) BOOL downloadsHintsHidden; diff --git a/Application/Sources/Configuration/ApplicationConfiguration.m b/Application/Sources/Configuration/ApplicationConfiguration.m index 25aac2d51..c4a531434 100755 --- a/Application/Sources/Configuration/ApplicationConfiguration.m +++ b/Application/Sources/Configuration/ApplicationConfiguration.m @@ -238,7 +238,7 @@ @interface ApplicationConfiguration () @property (nonatomic) NSURL *termsAndConditionsURL; @property (nonatomic) NSURL *dataProtectionURL; @property (nonatomic) NSURL *betaTestingURL; -@property (nonatomic) NSURL *betaTvTestingURL; +@property (nonatomic) NSURL *tvBetaTestingURL; @property (nonatomic) NSURL *sourceCodeURL; @property (nonatomic, getter=areDownloadsHintsHidden) BOOL downloadsHintsHidden; @@ -474,8 +474,8 @@ - (BOOL)synchronizeRemoteConfiguration NSString *betaTestingURLString = [self.remoteConfig configValueForKey:@"betaTestingURL"].stringValue; self.betaTestingURL = (betaTestingURLString.length != 0) ? [NSURL URLWithString:betaTestingURLString] : nil; - NSString *betaTvTestingURLString = [self.remoteConfig configValueForKey:@"betaTvTestingURL"].stringValue; - self.betaTvTestingURL = (betaTvTestingURLString.length != 0) ? [NSURL URLWithString:betaTvTestingURLString] : nil; + NSString *tvBetaTestingURLString = [self.remoteConfig configValueForKey:@"tvBetaTestingURL"].stringValue; + self.tvBetaTestingURL = (tvBetaTestingURLString.length != 0) ? [NSURL URLWithString:tvBetaTestingURLString] : nil; NSString *sourceCodeURLString = [self.remoteConfig configValueForKey:@"sourceCodeURL"].stringValue; self.sourceCodeURL = (sourceCodeURLString.length != 0) ? [NSURL URLWithString:sourceCodeURLString] : nil; diff --git a/Application/Sources/Helpers/AnalyticsConstants.h b/Application/Sources/Helpers/AnalyticsConstants.h index d8b4e0212..2fdd9f48a 100755 --- a/Application/Sources/Helpers/AnalyticsConstants.h +++ b/Application/Sources/Helpers/AnalyticsConstants.h @@ -32,7 +32,7 @@ OBJC_EXPORT AnalyticsPageLevel const AnalyticsPageLevelVideo; typedef NSString * AnalyticsPageTitle NS_STRING_ENUM; OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleBetaTesting; -OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleBetaTvTesting; +OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleTvBetaTesting; OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleDevices; OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleDownloads; OBJC_EXPORT AnalyticsPageTitle const AnalyticsPageTitleEvents; diff --git a/Application/Sources/Helpers/AnalyticsConstants.m b/Application/Sources/Helpers/AnalyticsConstants.m index 21356e12e..d0c092f76 100755 --- a/Application/Sources/Helpers/AnalyticsConstants.m +++ b/Application/Sources/Helpers/AnalyticsConstants.m @@ -23,7 +23,7 @@ AnalyticsPageLevel const AnalyticsPageLevelVideo = @"video"; AnalyticsPageTitle const AnalyticsPageTitleBetaTesting = @"beta testing"; -AnalyticsPageTitle const AnalyticsPageTitleBetaTvTesting = @"beta TV testing"; +AnalyticsPageTitle const AnalyticsPageTitleTvBetaTesting = @"tv beta testing"; AnalyticsPageTitle const AnalyticsPageTitleDevices = @"devices"; AnalyticsPageTitle const AnalyticsPageTitleDownloads = @"downloads"; AnalyticsPageTitle const AnalyticsPageTitleEvents = @"events"; diff --git a/Application/Sources/Settings/SettingsViewController.m b/Application/Sources/Settings/SettingsViewController.m index cf61eaeab..b5b4c5f43 100755 --- a/Application/Sources/Settings/SettingsViewController.m +++ b/Application/Sources/Settings/SettingsViewController.m @@ -43,7 +43,7 @@ static NSString * const SettingsFeedbackButton = @"Button_Feedback"; static NSString * const SettingsSourceCodeButton = @"Button_SourceCode"; static NSString * const SettingsBetaTestingButton = @"Button_BetaTesting"; -static NSString * const SettingsBetaTvTestingButton = @"Button_BetaTvTesting"; +static NSString * const SettingsTvBetaTestingButton = @"Button_TvBetaTesting"; static NSString * const SettingsApplicationVersionCell = @"Cell_ApplicationVersion"; // Autoplay group @@ -206,8 +206,8 @@ - (void)updateSettingsVisibility [hiddenKeys addObject:SettingsBetaTestingButton]; } - if (! applicationConfiguration.betaTvTestingURL) { - [hiddenKeys addObject:SettingsBetaTvTestingButton]; + if (! applicationConfiguration.tvBetaTestingURL) { + [hiddenKeys addObject:SettingsTvBetaTestingButton]; } self.hiddenKeys = hiddenKeys.copy; @@ -342,12 +342,12 @@ - (void)settingsViewController:(IASKAppSettingsViewController *)settingsViewCont [SRGAnalyticsTracker.sharedTracker trackPageViewWithTitle:AnalyticsPageTitleBetaTesting levels:@[ AnalyticsPageLevelPlay, AnalyticsPageLevelApplication ]]; }]; } - else if ([specifier.key isEqualToString:SettingsBetaTvTestingButton]) { - NSURL *betaTvTestingURL = ApplicationConfiguration.sharedApplicationConfiguration.betaTvTestingURL; - NSAssert(betaTvTestingURL, @"Button must not be displayed if no Apple TV beta testing URL has been specified"); + else if ([specifier.key isEqualToString:SettingsTvBetaTestingButton]) { + NSURL *tvBetaTestingURL = ApplicationConfiguration.sharedApplicationConfiguration.tvBetaTestingURL; + NSAssert(tvBetaTestingURL, @"Button must not be displayed if no Apple TV beta testing URL has been specified"); - [UIApplication.sharedApplication play_openURL:betaTvTestingURL withCompletionHandler:^(BOOL success) { - [SRGAnalyticsTracker.sharedTracker trackPageViewWithTitle:AnalyticsPageTitleBetaTesting levels:@[ AnalyticsPageLevelPlay, AnalyticsPageLevelApplication ]]; + [UIApplication.sharedApplication play_openURL:tvBetaTestingURL withCompletionHandler:^(BOOL success) { + [SRGAnalyticsTracker.sharedTracker trackPageViewWithTitle:AnalyticsPageTitleTvBetaTesting levels:@[ AnalyticsPageLevelPlay, AnalyticsPageLevelApplication ]]; }]; } else if ([specifier.key isEqualToString:SettingsVersionsAndReleaseNotes]) { diff --git a/docs/REMOTE_CONFIGURATION.md b/docs/REMOTE_CONFIGURATION.md index b694664d7..426e5f0bd 100755 --- a/docs/REMOTE_CONFIGURATION.md +++ b/docs/REMOTE_CONFIGURATION.md @@ -21,7 +21,7 @@ If a remote configuration is found to be invalid (usually a mandatory parameter ## URLs * `betaTestingURL` (optional, string): The URL of the page where beta testers can register. -* `betaTvTestingURL` (optional, string): The URL of the page where Apple TV beta testers can register. +* `tvBetaTestingURL` (optional, string): The URL of the page where Apple TV beta testers can register. * `feedbackURL` (optional, string): The URL of the feedback form. * `dataProtectionURL` (optional, string): The URL of the data protection information page. * `impressumURL` (optional, string): The URL of the impressum page. If none is provided, the corresponding menu entry will not be displayed. From 330a9b569c0996ff9d82e1c724ced9e3e3559a45 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Wed, 2 Sep 2020 11:22:42 +0200 Subject: [PATCH 51/55] Update default parsePlayUrl.js to version 26 --- Application/Resources/Data/parsePlayUrl.js | 77 ++++++++++++++++++---- 1 file changed, 64 insertions(+), 13 deletions(-) diff --git a/Application/Resources/Data/parsePlayUrl.js b/Application/Resources/Data/parsePlayUrl.js index 8eceb557f..c4a0b82e4 100644 --- a/Application/Resources/Data/parsePlayUrl.js +++ b/Application/Resources/Data/parsePlayUrl.js @@ -1,6 +1,6 @@ // parsePlayUrl -var parsePlayUrlVersion = 24; +var parsePlayUrlVersion = 26; var parsePlayUrlBuild = "mmf"; if(! console) { @@ -29,11 +29,11 @@ function parseForPlayApp(scheme, hostname, pathname, queryParams, anchor) { * Ex: https://tp.srgssr.ch/p/rts/default?urn=urn:rts:video:6735513 * Ex: https://player.rts.ch/p/rts/default?urn=urn:rts:video:6735513&start=60 */ - if (bu == "tp") { + if (bu == "lb") { if (pathname.startsWith("/p/")) { var mediaURN = queryParams["urn"]; if (mediaURN) { - var redirectBu = "tp"; + var redirectBu = "lb"; switch (true) { case pathname.startsWith("/p/srf/"): redirectBu = "srf"; @@ -55,6 +55,13 @@ function parseForPlayApp(scheme, hostname, pathname, queryParams, anchor) { return openMediaURN(server, redirectBu, mediaURN, startTime); } } + else if (pathname.startsWith("/srgletterbox-web")) { + var mediaURN = queryParams["urn"]; + if (mediaURN) { + var startTime = queryParams["pendingSeek"]; + return openMediaURN(server, "lb", mediaURN, startTime); + } + } } /** @@ -102,7 +109,7 @@ function parseForPlayApp(scheme, hostname, pathname, queryParams, anchor) { pathname = pathname.substring(4); } - if (hostname.includes("play-web")) { + if (hostname.includes("play-web") || hostname.includes("play-staging")) { pathname = pathname.substring(4); pathname = pathname.replace("/stage/play", "/play"); pathname = pathname.replace("/test/play", "/play"); @@ -217,6 +224,24 @@ function parseForPlayApp(scheme, hostname, pathname, queryParams, anchor) { } } + /** + * Catch embed media urls + * + * Ex: https://www.rts.ch/play/embed?urn=urn:rts:video:580545 + * Ex: https://www.rts.ch/play/embed?urn=urn:rts:video:580545&startTime=60 + */ + if (pathname.endsWith("/embed")) { + var mediaURN = queryParams["urn"]; + if (mediaURN) { + var startTime = queryParams["startTime"]; + return openMediaURN(server, bu, mediaURN, startTime); + } + else { + // Returns default TV homepage + return openTvHomePage(server, bu); + } + } + /** * Catch live TV urls * @@ -567,6 +592,16 @@ function parseForPlayApp(scheme, hostname, pathname, queryParams, anchor) { return openTvHomePage(server, bu); } + /** + * Catch legacy bowser urls + * + * Ex: https://www.srf.ch/play/legacy-browser + *. Ex: https://www.rsi.ch/play/legacy-browser + */ + if (pathname.endsWith("/legacy-browser")) { + return openTvHomePage(server, bu); + } + /** * Catch play help urls * @@ -778,7 +813,7 @@ function schemeForBu(bu) { return "playswi"; break; case "mmf": - case "tp": + case "lb": return "letterbox"; break; default: @@ -810,7 +845,7 @@ function serverForUrl(hostname, pathname, queryParams) { } } } - else if (hostname.includes("play-web")) { + else if (hostname.includes("play-web") || hostname.includes("play-staging")) { if (pathname.includes("/stage/play")) { server = "stage"; } @@ -818,22 +853,38 @@ function serverForUrl(hostname, pathname, queryParams) { server = "test"; } } + else if (pathname.startsWith("/srgletterbox-web")) { + var serverParam = queryParams["env"]; + switch (serverParam) { + case "stage": + server = "stage"; + break; + case "test": + server = "test"; + break; + case "play mmf": + case "play+mmf": + case "mmf": + server = "play mmf"; + break; + } + } return server; } function getBuFromHostname(hostname, pathname) { switch (true) { - case hostname.endsWith("tp.srgssr.ch") || hostname.endsWith("player.rts.ch") || hostname.endsWith("player.rsi.ch") || hostname.endsWith("player.rtr.ch") || hostname.endsWith("player.swissinfo.ch") || hostname.endsWith("player.srf.ch"): - return "tp"; - case hostname.includes("rts.ch") || hostname.includes("srgplayer-rts") || (hostname.includes("play-mmf") && pathname.startsWith("/rts/")) || (hostname.includes("play-web") && pathname.startsWith("/rts/")): + case hostname.endsWith("tp.srgssr.ch") || hostname.endsWith("player.rts.ch") || hostname.endsWith("player.rsi.ch") || hostname.endsWith("player.rtr.ch") || hostname.endsWith("player.swissinfo.ch") || hostname.endsWith("player.srf.ch") || (hostname.includes("srgssr") && pathname.startsWith("/srgletterbox-web")): + return "lb"; + case (hostname.includes("rts.ch") && !hostname.includes("play-staging")) || hostname.includes("srgplayer-rts") || (hostname.includes("play-mmf") && pathname.startsWith("/rts/")) || ((hostname.includes("play-web") || hostname.includes("play-staging")) && pathname.startsWith("/rts/")): return "rts"; - case hostname.includes("rsi.ch") || hostname.includes("srgplayer-rsi") || (hostname.includes("play-mmf") && pathname.startsWith("/rsi/")) || (hostname.includes("play-web") && pathname.startsWith("/rsi/")): + case hostname.includes("rsi.ch") || hostname.includes("srgplayer-rsi") || (hostname.includes("play-mmf") && pathname.startsWith("/rsi/")) || ((hostname.includes("play-web") || hostname.includes("play-staging")) && pathname.startsWith("/rsi/")): return "rsi"; - case hostname.includes("rtr.ch") || hostname.includes("srgplayer-rtr") || (hostname.includes("play-mmf") && pathname.startsWith("/rtr/")) || (hostname.includes("play-web") && pathname.startsWith("/rtr/")): + case hostname.includes("rtr.ch") || hostname.includes("srgplayer-rtr") || (hostname.includes("play-mmf") && pathname.startsWith("/rtr/")) || ((hostname.includes("play-web") || hostname.includes("play-staging")) && pathname.startsWith("/rtr/")): return "rtr"; - case hostname.includes("swissinfo.ch") || hostname.includes("srgplayer-swi") || (hostname.includes("play-mmf") && pathname.startsWith("/swi/")) || (hostname.includes("play-web") && pathname.startsWith("/swi/")): + case hostname.includes("swissinfo.ch") || hostname.includes("srgplayer-swi") || (hostname.includes("play-mmf") && pathname.startsWith("/swi/")) || ((hostname.includes("play-web") || hostname.includes("play-staging")) && pathname.startsWith("/swi/")): return "swi"; - case hostname.includes("srf.ch") || hostname.includes("srgplayer-srf") || (hostname.includes("play-mmf") && pathname.startsWith("/srf/")) || (hostname.includes("play-web") && pathname.startsWith("/srf/")): + case hostname.includes("srf.ch") || hostname.includes("srgplayer-srf") || (hostname.includes("play-mmf") && pathname.startsWith("/srf/")) || ((hostname.includes("play-web") || hostname.includes("play-staging")) && pathname.startsWith("/srf/")): return "srf"; case hostname.includes("play-mmf") && pathname.startsWith("/mmf/"): return "mmf"; From 39d7cbd79635bce8df638a2649ffbdd82f7388e6 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Wed, 2 Sep 2020 15:49:55 +0200 Subject: [PATCH 52/55] Update What's new --- WhatsNew-beta.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WhatsNew-beta.json b/WhatsNew-beta.json index 7623a715b..23d4ff2bf 100755 --- a/WhatsNew-beta.json +++ b/WhatsNew-beta.json @@ -116,5 +116,6 @@ "3.1.0-337": "- Display waveform for song currently being played.\n- Display current show in show list for livestreams without timeshift.\n- Apply snapping in search results for shows.", "3.1.0-338": "- UI improvement for video livestreams.\n- Long press to copy the song title and artist name.", "3.1.1-339": "- Always hide the playback controls after entering full screen.\n- Fix screen incorrectly turning off when watching videos with sound over AirPlay.\n- Fix issue leading to the loading indicator being displayed more than necessary.\n- iPad profile split view: Reset right navigation to its root when tapping again on left cells.", - "3.1.1-340": "- Updated TV and radio channel overview on the Live tab. \n- Add \"sort by\" filter in Search tab.\n- iOS prediction for TV and radio livestreams." + "3.1.1-340": "- Updated TV and radio channel overview on the Live tab. \n- Add \"sort by\" filter in Search tab.\n- iOS prediction for TV and radio livestreams.", + "3.1.1-341": "- Correctly take into account SDH accessibility opt-in when choosing subtitles automatically." } \ No newline at end of file From 8c69e457ed914c9607232cf376a1dd9c6d4631e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Wed, 2 Sep 2020 15:58:50 +0200 Subject: [PATCH 53/55] Update dependencies to official releases --- Cartfile | 2 +- Cartfile.resolved.proprietary | 10 +++++----- Cartfile.resolved.public | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Cartfile b/Cartfile index a2ebca0a2..a375d6742 100755 --- a/Cartfile +++ b/Cartfile @@ -6,5 +6,5 @@ github "microsoft/appcenter-sdk-apple" ~> 3.1.0 github "SRGSSR/DZNEmptyDataSet" "v1.8.1_srg1" github "SRGSSR/Masonry" "v1.1.0_srg1" github "urbanairship/ios-library" ~> 13.3.2 -github "SRGSSR/srgletterbox-apple" "db061d74a75048e7fb36702d43cd36e0889802af" +github "SRGSSR/srgletterbox-apple" "5.0.1" github "SRGSSR/srguserdata-apple" "2.0.3" diff --git a/Cartfile.resolved.proprietary b/Cartfile.resolved.proprietary index b652ec80d..24b001ad9 100755 --- a/Cartfile.resolved.proprietary +++ b/Cartfile.resolved.proprietary @@ -9,19 +9,19 @@ github "SRGSSR/Masonry" "v1.1.0_srg1" github "SRGSSR/UICKeyChainStore" "v2.1.2_srg1" github "SRGSSR/YYWebImage" "1.0.5_srg2" github "SRGSSR/libextobjc" "0.6_srg2" -github "SRGSSR/srganalytics-apple" "6034917d324332b61123c94fd7bed59ee957f9d7" +github "SRGSSR/srganalytics-apple" "4.2.1" github "SRGSSR/srgappearance-apple" "2.1.0" github "SRGSSR/srgcontentprotection-apple" "2.0.2" github "SRGSSR/srgdataprovider-apple" "8.0.0" github "SRGSSR/srgdiagnostics-apple" "2.0.1" github "SRGSSR/srgidentity-apple" "2.0.3" -github "SRGSSR/srgletterbox-apple" "db061d74a75048e7fb36702d43cd36e0889802af" +github "SRGSSR/srgletterbox-apple" "5.0.1" github "SRGSSR/srglogger-apple" "2.0.1" -github "SRGSSR/srgmediaplayer-apple" "887a066d3d207e68701885d0833ccdcb04f32d16" +github "SRGSSR/srgmediaplayer-apple" "5.0.2" github "SRGSSR/srgnetwork-apple" "2.0.2" github "SRGSSR/srguserdata-apple" "2.0.3" github "SRGSSR/tagcommander-apple" "4.5.4_4.4.1_srg3" github "defagos/CoconutKit" "3.4" github "mapbox/Fingertips" "cdffabac5506103a2c7cc5aedeed4021df2501da" -github "microsoft/appcenter-sdk-apple" "3.3.2" -github "urbanairship/ios-library" "13.5.1" +github "microsoft/appcenter-sdk-apple" "3.3.3" +github "urbanairship/ios-library" "13.5.4" diff --git a/Cartfile.resolved.public b/Cartfile.resolved.public index 75ccf4920..1182698a8 100755 --- a/Cartfile.resolved.public +++ b/Cartfile.resolved.public @@ -9,19 +9,19 @@ github "SRGSSR/Masonry" "v1.1.0_srg1" github "SRGSSR/UICKeyChainStore" "v2.1.2_srg1" github "SRGSSR/YYWebImage" "1.0.5_srg2" github "SRGSSR/libextobjc" "0.6_srg2" -github "SRGSSR/srganalytics-apple" "6034917d324332b61123c94fd7bed59ee957f9d7" +github "SRGSSR/srganalytics-apple" "4.2.1" github "SRGSSR/srgappearance-apple" "2.1.0" github "SRGSSR/srgcontentprotection-fake-apple" "2.0.2" github "SRGSSR/srgdataprovider-apple" "8.0.0" github "SRGSSR/srgdiagnostics-apple" "2.0.1" github "SRGSSR/srgidentity-apple" "2.0.3" -github "SRGSSR/srgletterbox-apple" "db061d74a75048e7fb36702d43cd36e0889802af" +github "SRGSSR/srgletterbox-apple" "5.0.1" github "SRGSSR/srglogger-apple" "2.0.1" -github "SRGSSR/srgmediaplayer-apple" "887a066d3d207e68701885d0833ccdcb04f32d16" +github "SRGSSR/srgmediaplayer-apple" "5.0.2" github "SRGSSR/srgnetwork-apple" "2.0.2" github "SRGSSR/srguserdata-apple" "2.0.3" github "SRGSSR/tagcommander-apple" "4.5.4_4.4.1_srg3" github "defagos/CoconutKit" "3.4" github "mapbox/Fingertips" "cdffabac5506103a2c7cc5aedeed4021df2501da" -github "microsoft/appcenter-sdk-apple" "3.3.2" -github "urbanairship/ios-library" "13.5.1" +github "microsoft/appcenter-sdk-apple" "3.3.3" +github "urbanairship/ios-library" "13.5.4" From 729bf6e1eba5b2d582699342f62aeb390309f9b1 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bertholon Date: Wed, 2 Sep 2020 15:57:39 +0200 Subject: [PATCH 54/55] Update RSI translations --- .../Resources/Apps/Play RSI/it.lproj/Localizable.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings b/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings index 5821cd920..aaf6eb01b 100755 --- a/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings +++ b/Application/Resources/Apps/Play RSI/it.lproj/Localizable.strings @@ -365,7 +365,7 @@ "Pull to reload" = "Scorrere verso il basso per ricaricare"; /* Title label to present main radio livestreams */ -"Radio channels" = "Tutte le emittenti radio"; +"Radio channels" = "Reti radio"; /* Title displayed when no media is being played on the connected Google Cast receiver (name unknown) */ "Receiver is idle." = "Ricevitore inattivo."; From 82dfb6b3f90e5e19c7002222da1e2f4930cd2848 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20De=CC=81fago?= Date: Wed, 2 Sep 2020 16:10:55 +0200 Subject: [PATCH 55/55] Update licenses --- .../com.mono0926.LicensePlist.latest_result.txt | 10 +++++----- .../Settings.bundle/com.mono0926.LicensePlist.plist | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt index e6a90cc62..41b867eb9 100755 --- a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt +++ b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.latest_result.txt @@ -430,7 +430,7 @@ version: 7.0.1 name: Aiolos, nameSpecified: , owner: IdeasOnCanvas, version: 1.3.0 -name: appcenter-sdk-apple, nameSpecified: , owner: microsoft, version: 3.3.2 +name: appcenter-sdk-apple, nameSpecified: , owner: microsoft, version: 3.3.3 name: CoconutKit, nameSpecified: , owner: defagos, version: 3.4 @@ -440,7 +440,7 @@ name: DZNEmptyDataSet, nameSpecified: , owner: SRGSSR, version: v1.8.1_srg1 name: FXReachability, nameSpecified: , owner: SRGSSR, version: 1.3.2_srg4 -name: ios-library, nameSpecified: , owner: urbanairship, version: 13.5.1 +name: ios-library, nameSpecified: , owner: urbanairship, version: 13.5.4 name: libextobjc, nameSpecified: , owner: SRGSSR, version: 0.6_srg2 @@ -450,7 +450,7 @@ name: Mantle, nameSpecified: , owner: Mantle, version: 2.1.1 name: Masonry, nameSpecified: , owner: SRGSSR, version: v1.1.0_srg1 -name: srganalytics-apple, nameSpecified: , owner: SRGSSR, version: 6034917 +name: srganalytics-apple, nameSpecified: , owner: SRGSSR, version: 4.2.1 name: srgappearance-apple, nameSpecified: , owner: SRGSSR, version: 2.1.0 @@ -462,11 +462,11 @@ name: srgdiagnostics-apple, nameSpecified: , owner: SRGSSR, version: 2.0.1 name: srgidentity-apple, nameSpecified: , owner: SRGSSR, version: 2.0.3 -name: srgletterbox-apple, nameSpecified: , owner: SRGSSR, version: db061d7 +name: srgletterbox-apple, nameSpecified: , owner: SRGSSR, version: 5.0.1 name: srglogger-apple, nameSpecified: , owner: SRGSSR, version: 2.0.1 -name: srgmediaplayer-apple, nameSpecified: , owner: SRGSSR, version: 887a066 +name: srgmediaplayer-apple, nameSpecified: , owner: SRGSSR, version: 5.0.2 name: srgnetwork-apple, nameSpecified: , owner: SRGSSR, version: 2.0.2 diff --git a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist index 098a2407f..32a8c6d66 100755 --- a/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist +++ b/Application/Resources/Settings.bundle/com.mono0926.LicensePlist.plist @@ -16,7 +16,7 @@ File com.mono0926.LicensePlist/appcenter-sdk-apple Title - appcenter-sdk-apple (3.3.2) + appcenter-sdk-apple (3.3.3) Type PSChildPaneSpecifier @@ -160,7 +160,7 @@ File com.mono0926.LicensePlist/ios-library Title - ios-library (13.5.1) + ios-library (13.5.4) Type PSChildPaneSpecifier @@ -248,7 +248,7 @@ File com.mono0926.LicensePlist/srganalytics-apple Title - srganalytics-apple (6034917) + srganalytics-apple (4.2.1) Type PSChildPaneSpecifier @@ -296,7 +296,7 @@ File com.mono0926.LicensePlist/srgletterbox-apple Title - srgletterbox-apple (db061d7) + srgletterbox-apple (5.0.1) Type PSChildPaneSpecifier @@ -312,7 +312,7 @@ File com.mono0926.LicensePlist/srgmediaplayer-apple Title - srgmediaplayer-apple (887a066) + srgmediaplayer-apple (5.0.2) Type PSChildPaneSpecifier