diff --git a/Signal/Images.xcassets/logoSignal.imageset/logoSignal.pdf b/Signal/Images.xcassets/logoSignal.imageset/logoSignal.pdf deleted file mode 100644 index 0c9d67173d..0000000000 Binary files a/Signal/Images.xcassets/logoSignal.imageset/logoSignal.pdf and /dev/null differ diff --git a/Signal/Images.xcassets/signal-logo-128-launch-screen.imageset/Contents.json b/Signal/Images.xcassets/signal-logo-128-launch-screen.imageset/Contents.json new file mode 100644 index 0000000000..2cc1236570 --- /dev/null +++ b/Signal/Images.xcassets/signal-logo-128-launch-screen.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "signal-logo-white.pdf" + }, + { + "idiom" : "universal", + "filename" : "signal-logo-white-alpha-90.pdf", + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ] + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/signal-logo-128-launch-screen.imageset/signal-logo-white-alpha-90.pdf b/Signal/Images.xcassets/signal-logo-128-launch-screen.imageset/signal-logo-white-alpha-90.pdf new file mode 100644 index 0000000000..746e8de40f Binary files /dev/null and b/Signal/Images.xcassets/signal-logo-128-launch-screen.imageset/signal-logo-white-alpha-90.pdf differ diff --git a/Signal/Images.xcassets/signal-logo-128-launch-screen.imageset/signal-logo-white.pdf b/Signal/Images.xcassets/signal-logo-128-launch-screen.imageset/signal-logo-white.pdf new file mode 100644 index 0000000000..d1db4024c2 Binary files /dev/null and b/Signal/Images.xcassets/signal-logo-128-launch-screen.imageset/signal-logo-white.pdf differ diff --git a/Signal/Images.xcassets/logoSignal.imageset/Contents.json b/Signal/Images.xcassets/signal-logo-128.imageset/Contents.json similarity index 100% rename from Signal/Images.xcassets/logoSignal.imageset/Contents.json rename to Signal/Images.xcassets/signal-logo-128.imageset/Contents.json diff --git a/Signal/Images.xcassets/signal-logo-128.imageset/logoSignal.pdf b/Signal/Images.xcassets/signal-logo-128.imageset/logoSignal.pdf new file mode 100644 index 0000000000..d1db4024c2 Binary files /dev/null and b/Signal/Images.xcassets/signal-logo-128.imageset/logoSignal.pdf differ diff --git a/Signal/Images.xcassets/ultramarine-launch-screen.imageset/Contents.json b/Signal/Images.xcassets/ultramarine-launch-screen.imageset/Contents.json new file mode 100644 index 0000000000..260bf46fbe --- /dev/null +++ b/Signal/Images.xcassets/ultramarine-launch-screen.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ultramarine-bd.pdf" + }, + { + "idiom" : "universal", + "filename" : "ultramarine-bd-dark.pdf", + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ] + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/ultramarine-launch-screen.imageset/ultramarine-bd-dark.pdf b/Signal/Images.xcassets/ultramarine-launch-screen.imageset/ultramarine-bd-dark.pdf new file mode 100644 index 0000000000..cec9432de9 Binary files /dev/null and b/Signal/Images.xcassets/ultramarine-launch-screen.imageset/ultramarine-bd-dark.pdf differ diff --git a/Signal/Images.xcassets/ultramarine-launch-screen.imageset/ultramarine-bd.pdf b/Signal/Images.xcassets/ultramarine-launch-screen.imageset/ultramarine-bd.pdf new file mode 100644 index 0000000000..a377809871 Binary files /dev/null and b/Signal/Images.xcassets/ultramarine-launch-screen.imageset/ultramarine-bd.pdf differ diff --git a/Signal/src/ViewControllers/HomeView/ConversationSplitViewController.swift b/Signal/src/ViewControllers/HomeView/ConversationSplitViewController.swift index 479e91536f..760cfe2609 100644 --- a/Signal/src/ViewControllers/HomeView/ConversationSplitViewController.swift +++ b/Signal/src/ViewControllers/HomeView/ConversationSplitViewController.swift @@ -561,7 +561,7 @@ private class NoSelectedConversationViewController: OWSViewController { view = UIView() let logoContainer = UIView.container() - logoImageView.image = #imageLiteral(resourceName: "logoSignal").withRenderingMode(.alwaysTemplate) + logoImageView.image = #imageLiteral(resourceName: "signal-logo-128").withRenderingMode(.alwaysTemplate) logoImageView.contentMode = .scaleAspectFit logoContainer.addSubview(logoImageView) logoImageView.autoPinTopToSuperviewMargin() diff --git a/Signal/src/ViewControllers/LoadingViewController.swift b/Signal/src/ViewControllers/LoadingViewController.swift index 50071d11e2..68bb91ad3f 100644 --- a/Signal/src/ViewControllers/LoadingViewController.swift +++ b/Signal/src/ViewControllers/LoadingViewController.swift @@ -1,5 +1,5 @@ // -// Copyright (c) 2019 Open Whisper Systems. All rights reserved. +// Copyright (c) 2020 Open Whisper Systems. All rights reserved. // import Foundation @@ -19,12 +19,13 @@ public class LoadingViewController: UIViewController { override public func loadView() { self.view = UIView() - view.backgroundColor = UIColor.ows_signalBlue + view.backgroundColor = Theme.launchScreenBackground - self.logoView = UIImageView(image: #imageLiteral(resourceName: "logoSignal")) + self.logoView = UIImageView(image: #imageLiteral(resourceName: "signal-logo-128-launch-screen")) view.addSubview(logoView) logoView.autoCenterInSuperview() + logoView.autoSetDimensions(to: CGSize(square: 128)) self.topLabel = buildLabel() topLabel.alpha = 0 diff --git a/Signal/src/call/UserInterface/CallKit/CallKitCallUIAdaptee.swift b/Signal/src/call/UserInterface/CallKit/CallKitCallUIAdaptee.swift index 463bc8f1fb..04c34159d2 100644 --- a/Signal/src/call/UserInterface/CallKit/CallKitCallUIAdaptee.swift +++ b/Signal/src/call/UserInterface/CallKit/CallKitCallUIAdaptee.swift @@ -80,7 +80,7 @@ final class CallKitCallUIAdaptee: NSObject, CallUIAdaptee, CXProviderDelegate { providerConfiguration.supportedHandleTypes = [.phoneNumber, .generic] - let iconMaskImage = #imageLiteral(resourceName: "logoSignal") + let iconMaskImage = #imageLiteral(resourceName: "signal-logo-128") providerConfiguration.iconTemplateImageData = iconMaskImage.pngData() // We don't set the ringtoneSound property, so that we use either the diff --git a/Signal/src/util/Launch Screen.storyboard b/Signal/src/util/Launch Screen.storyboard index 50ead918fd..c5e80b66da 100644 --- a/Signal/src/util/Launch Screen.storyboard +++ b/Signal/src/util/Launch Screen.storyboard @@ -1,13 +1,9 @@ - - - - - + + + - - - + @@ -20,26 +16,38 @@ - + - - + + + + + + + + + - + - - + + + + + + - + - + + diff --git a/Signal/src/util/OWSScreenLockUI.m b/Signal/src/util/OWSScreenLockUI.m index ebbd796dba..f96338caa4 100644 --- a/Signal/src/util/OWSScreenLockUI.m +++ b/Signal/src/util/OWSScreenLockUI.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2019 Open Whisper Systems. All rights reserved. +// Copyright (c) 2020 Open Whisper Systems. All rights reserved. // #import "OWSScreenLockUI.h" @@ -385,7 +385,7 @@ NS_ASSUME_NONNULL_BEGIN window.hidden = NO; window.windowLevel = UIWindowLevel_Background; window.opaque = YES; - window.backgroundColor = UIColor.ows_signalBlueColor; + window.backgroundColor = Theme.launchScreenBackgroundColor; ScreenLockViewController *viewController = [ScreenLockViewController new]; viewController.delegate = self; diff --git a/SignalMessaging/ViewControllers/ScreenLockViewController.m b/SignalMessaging/ViewControllers/ScreenLockViewController.m index 687a2fe338..18ce675dd5 100644 --- a/SignalMessaging/ViewControllers/ScreenLockViewController.m +++ b/SignalMessaging/ViewControllers/ScreenLockViewController.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2019 Open Whisper Systems. All rights reserved. +// Copyright (c) 2020 Open Whisper Systems. All rights reserved. // #import "ScreenLockViewController.h" @@ -36,7 +36,7 @@ NSString *NSStringForScreenLockUIState(ScreenLockUIState value) { [super loadView]; - self.view.backgroundColor = UIColor.ows_signalBlueColor; + self.view.backgroundColor = Theme.launchScreenBackgroundColor; UIView *edgesView = [UIView containerView]; [self.view addSubview:edgesView]; @@ -44,11 +44,12 @@ NSString *NSStringForScreenLockUIState(ScreenLockUIState value) [edgesView autoPinEdgeToSuperviewEdge:ALEdgeBottom]; [edgesView autoPinWidthToSuperview]; - UIImage *image = [UIImage imageNamed:@"logoSignal"]; + UIImage *image = [UIImage imageNamed:@"signal-logo-128-launch-screen"]; UIImageView *imageView = [UIImageView new]; imageView.image = image; [edgesView addSubview:imageView]; [imageView autoHCenterInSuperview]; + [imageView autoSetDimensionsToSize:CGSizeMake(128, 128)]; const CGFloat kButtonHeight = 40.f; OWSFlatButton *button = diff --git a/SignalMessaging/appearance/Theme+OWS.swift b/SignalMessaging/appearance/Theme+OWS.swift index 76d797aa3a..707c5b6699 100644 --- a/SignalMessaging/appearance/Theme+OWS.swift +++ b/SignalMessaging/appearance/Theme+OWS.swift @@ -50,6 +50,13 @@ public enum ThemeIcon: UInt { @objc public extension Theme { + @objc(launchScreenBackgroundColor) + class var launchScreenBackground: UIColor { + // We only adapt for dark theme on iOS 13+, because only iOS 13 supports + // handling dark / light appearance in the launch screen storyboard. + guard #available(iOS 13, *) else { return .ows_signalBlue } + return Theme.isDarkThemeEnabled ? .ows_signalBlueDark : .ows_signalBlue + } class func iconImage(_ icon: ThemeIcon) -> UIImage { let name = iconName(icon) diff --git a/SignalMessaging/appearance/Theme.m b/SignalMessaging/appearance/Theme.m index 574b390b69..57a6278fbf 100644 --- a/SignalMessaging/appearance/Theme.m +++ b/SignalMessaging/appearance/Theme.m @@ -93,7 +93,7 @@ NSString *const ThemeKeyCurrentMode = @"ThemeKeyCurrentMode"; if (!self.storageCoordinator.isStorageReady) { // Don't cache this value until it reflects the data store. - return NO; + return self.isSystemDarkThemeEnabled; } if (self.isDarkThemeEnabledNumber == nil) { diff --git a/SignalMessaging/categories/UIColor+OWS.swift b/SignalMessaging/categories/UIColor+OWS.swift index 744cc4ccdc..beb6d85f36 100644 --- a/SignalMessaging/categories/UIColor+OWS.swift +++ b/SignalMessaging/categories/UIColor+OWS.swift @@ -1,5 +1,5 @@ // -// Copyright (c) 2019 Open Whisper Systems. All rights reserved. +// Copyright (c) 2020 Open Whisper Systems. All rights reserved. // import Foundation @@ -55,7 +55,12 @@ public extension UIColor { @objc(ows_signalBlueColor) class var ows_signalBlue: UIColor { - return UIColor(rgbHex: 0x2090EA) + return UIColor(rgbHex: 0x3A76F0) + } + + @objc(ows_signalBlueDarkColor) + class var ows_signalBlueDark: UIColor { + return UIColor(rgbHex: 0x1851B4) } // MARK: Accent Colors diff --git a/SignalMessaging/utils/OWSWindowManager.m b/SignalMessaging/utils/OWSWindowManager.m index 23af6fb3ab..166b330301 100644 --- a/SignalMessaging/utils/OWSWindowManager.m +++ b/SignalMessaging/utils/OWSWindowManager.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2019 Open Whisper Systems. All rights reserved. +// Copyright (c) 2020 Open Whisper Systems. All rights reserved. // #import "OWSWindowManager.h" @@ -208,11 +208,10 @@ const UIWindowLevel UIWindowLevel_ScreenBlocking(void) window.hidden = YES; window.windowLevel = UIWindowLevel_CallView(); window.opaque = YES; - // TODO: What's the right color to use here? - window.backgroundColor = UIColor.ows_signalBlueColor; + window.backgroundColor = Theme.launchScreenBackgroundColor; UIViewController *viewController = [OWSWindowRootViewController new]; - viewController.view.backgroundColor = UIColor.ows_signalBlueColor; + viewController.view.backgroundColor = Theme.launchScreenBackgroundColor; // NOTE: Do not use OWSNavigationController for call window. // It adjusts the size of the navigation bar to reflect the diff --git a/SignalShareExtension/SAEFailedViewController.swift b/SignalShareExtension/SAEFailedViewController.swift index e6192e362a..0f2361d78a 100644 --- a/SignalShareExtension/SAEFailedViewController.swift +++ b/SignalShareExtension/SAEFailedViewController.swift @@ -1,5 +1,5 @@ // -// Copyright (c) 2019 Open Whisper Systems. All rights reserved. +// Copyright (c) 2020 Open Whisper Systems. All rights reserved. // import UIKit @@ -40,9 +40,9 @@ class SAEFailedViewController: UIViewController { action: #selector(cancelPressed)) self.navigationItem.title = "Signal" - self.view.backgroundColor = UIColor.ows_signalBlue + self.view.backgroundColor = Theme.launchScreenBackground - let logoImage = UIImage(named: "logoSignal") + let logoImage = UIImage(named: "signal-logo-128-launch-screen") let logoImageView = UIImageView(image: logoImage) self.view.addSubview(logoImageView) logoImageView.autoCenterInSuperview() diff --git a/SignalShareExtension/SAELoadViewController.swift b/SignalShareExtension/SAELoadViewController.swift index a468a835f1..42ff253feb 100644 --- a/SignalShareExtension/SAELoadViewController.swift +++ b/SignalShareExtension/SAELoadViewController.swift @@ -1,5 +1,5 @@ // -// Copyright (c) 2019 Open Whisper Systems. All rights reserved. +// Copyright (c) 2020 Open Whisper Systems. All rights reserved. // import UIKit @@ -61,7 +61,7 @@ class SAELoadViewController: UIViewController { action: #selector(cancelPressed)) self.navigationItem.title = "Signal" - self.view.backgroundColor = UIColor.ows_signalBlue + self.view.backgroundColor = Theme.launchScreenBackground let activityIndicator = UIActivityIndicatorView(style: .whiteLarge) self.activityIndicator = activityIndicator diff --git a/SignalShareExtension/SAEScreenLockViewController.m b/SignalShareExtension/SAEScreenLockViewController.m index 16a4df1e8a..f74ca006a4 100644 --- a/SignalShareExtension/SAEScreenLockViewController.m +++ b/SignalShareExtension/SAEScreenLockViewController.m @@ -1,10 +1,11 @@ // -// Copyright (c) 2019 Open Whisper Systems. All rights reserved. +// Copyright (c) 2020 Open Whisper Systems. All rights reserved. // #import "SAEScreenLockViewController.h" #import #import +#import NS_ASSUME_NONNULL_BEGIN @@ -40,7 +41,7 @@ NS_ASSUME_NONNULL_BEGIN { [super loadView]; - self.view.backgroundColor = UIColor.ows_signalBlueColor; + self.view.backgroundColor = Theme.launchScreenBackgroundColor; self.title = NSLocalizedString(@"SHARE_EXTENSION_VIEW_TITLE", @"Title for the 'share extension' view.");