This commit is contained in:
nielsandriesse 2020-08-26 12:02:27 +10:00
parent d54bded164
commit be5338f073
17 changed files with 91 additions and 92 deletions

View File

@ -962,12 +962,14 @@ static NSTimeInterval launchStartedAt;
if (@available(iOS 13.0, *)) {
window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
window.backgroundColor = UIColor.whiteColor;
break;
}
case LKAppModeDark: {
if (@available(iOS 13.0, *)) {
window.overrideUserInterfaceStyle = UIUserInterfaceStyleDark;
}
window.backgroundColor = UIColor.blackColor;
break;
}
}

View File

@ -28,7 +28,7 @@ public class ConversationMediaView: UIView {
private let maxMessageWidth: CGFloat
private var loadBlock: (() -> Void)?
private var unloadBlock: (() -> Void)?
private let isProxied: Bool
private let isOnionRouted: Bool
// MARK: - LoadState
@ -92,12 +92,12 @@ public class ConversationMediaView: UIView {
attachment: TSAttachment,
isOutgoing: Bool,
maxMessageWidth: CGFloat,
isProxied: Bool) {
isOnionRouted: Bool) {
self.mediaCache = mediaCache
self.attachment = attachment
self.isOutgoing = isOutgoing
self.maxMessageWidth = maxMessageWidth
self.isProxied = isProxied
self.isOnionRouted = isOnionRouted
super.init(frame: .zero)
@ -185,7 +185,7 @@ public class ConversationMediaView: UIView {
}
guard !attachmentStream.isUploaded else { return false }
let view: UIView
if isProxied { // Loki: Due to the way proxying works we can't get upload progress for those attachments
if isOnionRouted { // Loki: Due to the way onion routing works we can't get upload progress for those attachments
let activityIndicatorView = UIActivityIndicatorView(style: .white)
activityIndicatorView.isHidden = false
activityIndicatorView.startAnimating()

View File

@ -27,14 +27,14 @@ public class MediaAlbumCellView: UIStackView {
items: [ConversationMediaAlbumItem],
isOutgoing: Bool,
maxMessageWidth: CGFloat,
isProxied: Bool) {
isOnionRouted: Bool) {
self.items = items
self.itemViews = MediaAlbumCellView.itemsToDisplay(forItems: items).map {
let result = ConversationMediaView(mediaCache: mediaCache,
attachment: $0.attachment,
isOutgoing: isOutgoing,
maxMessageWidth: maxMessageWidth,
isProxied: isProxied)
isOnionRouted: isOnionRouted)
return result
}

View File

@ -366,10 +366,9 @@ NS_ASSUME_NONNULL_BEGIN
CGFloat maxGradientHeight = 40.f;
CAGradientLayer *gradientLayer = [CAGradientLayer new];
CGFloat whiteLevel = LKAppModeUtilities.isLightMode ? 1.f : 0.f;
gradientLayer.colors = @[
(id)[UIColor colorWithWhite:whiteLevel alpha:0.f].CGColor,
(id)[UIColor colorWithWhite:whiteLevel alpha:0.4f].CGColor,
(id)[UIColor colorWithWhite:0.0f alpha:0.f].CGColor,
(id)[UIColor colorWithWhite:0.0f alpha:0.4f].CGColor,
];
OWSLayerView *gradientView =
[[OWSLayerView alloc] initWithFrame:CGRectZero
@ -806,24 +805,13 @@ NS_ASSUME_NONNULL_BEGIN
- (UIView *)loadViewForMediaAlbum
{
OWSAssertDebug(self.viewItem.mediaAlbumItems);
BOOL isProxied = NO;
if ([self.viewItem.interaction isKindOfClass:TSOutgoingMessage.class]) {
TSOutgoingMessage *message = (TSOutgoingMessage *)self.viewItem.interaction;
if ([message.thread isKindOfClass:TSGroupThread.class]) {
TSGroupThread *groupThread = (TSGroupThread *)message.thread;
isProxied = (groupThread.groupModel.groupType == closedGroup);
} else if ([message.thread isKindOfClass:TSContactThread.class]) {
isProxied = YES;
}
}
OWSMediaAlbumCellView *albumView =
[[OWSMediaAlbumCellView alloc] initWithMediaCache:self.cellMediaCache
items:self.viewItem.mediaAlbumItems
isOutgoing:self.isOutgoing
maxMessageWidth:self.conversationStyle.maxMessageWidth
isProxied:isProxied];
isOnionRouted:YES];
self.loadCellContentBlock = ^{
[albumView loadMedia];
};

View File

@ -96,7 +96,7 @@ NS_ASSUME_NONNULL_BEGIN
UIColor *textColor;
if (isOverlayingMedia) {
textColor = LKColors.text;
textColor = UIColor.whiteColor;
} else {
textColor = [conversationStyle bubbleSecondaryTextColorWithIsIncoming:isIncoming];
}

View File

@ -263,7 +263,7 @@ class MediaGalleryNavigationController: OWSNavigationController {
// MARK: View Lifecycle
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
return isLightMode ? .default : .lightContent
}
override func viewDidLoad() {
@ -291,7 +291,12 @@ class MediaGalleryNavigationController: OWSNavigationController {
return
}
navigationBar.overrideTheme(type: .alwaysDark)
view.backgroundColor = Colors.navigationBarBackground
navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navigationBar.shadowImage = UIImage()
navigationBar.isTranslucent = false
navigationBar.barTintColor = Colors.navigationBarBackground
}
override func viewDidAppear(_ animated: Bool) {

View File

@ -144,7 +144,7 @@ class MenuActionsViewController: UIViewController, MenuActionSheetDelegate {
let backgroundDuration: TimeInterval = 0.1
UIView.animate(withDuration: backgroundDuration) {
let alpha: CGFloat = Theme.isDarkThemeEnabled ? 0.7 : 0.4
let alpha: CGFloat = isDarkMode ? 0.7 : 0.4
self.view.backgroundColor = UIColor.black.withAlphaComponent(alpha)
}
@ -272,7 +272,7 @@ class MenuActionSheetView: UIView, MenuActionViewDelegate {
super.init(frame: frame)
backgroundColor = (Theme.isDarkThemeEnabled
backgroundColor = (isDarkMode
? UIColor.ows_gray90
: UIColor.ows_gray05)
addSubview(actionStackView)
@ -398,27 +398,25 @@ class MenuActionView: UIButton {
isUserInteractionEnabled = true
backgroundColor = defaultBackgroundColor
let textColor = isLightMode ? UIColor.black : UIColor.white
var image = action.image
if Theme.isDarkThemeEnabled {
image = image.withRenderingMode(.alwaysTemplate)
}
image = image.withRenderingMode(.alwaysTemplate)
let imageView = UIImageView(image: image)
if Theme.isDarkThemeEnabled {
imageView.tintColor = Colors.text.withAlphaComponent(Values.unimportantElementOpacity)
}
imageView.tintColor = textColor.withAlphaComponent(Values.unimportantElementOpacity)
let imageWidth: CGFloat = 24
imageView.autoSetDimensions(to: CGSize(width: imageWidth, height: imageWidth))
imageView.isUserInteractionEnabled = false
let titleLabel = UILabel()
titleLabel.font = .systemFont(ofSize: Values.mediumFontSize)
titleLabel.textColor = Colors.text
titleLabel.textColor = textColor
titleLabel.text = action.title
titleLabel.isUserInteractionEnabled = false
let subtitleLabel = UILabel()
subtitleLabel.font = .systemFont(ofSize: Values.smallFontSize)
subtitleLabel.textColor = Colors.text.withAlphaComponent(Values.unimportantElementOpacity)
subtitleLabel.textColor = textColor.withAlphaComponent(Values.unimportantElementOpacity)
subtitleLabel.text = action.subtitle
subtitleLabel.isUserInteractionEnabled = false
@ -443,11 +441,11 @@ class MenuActionView: UIButton {
}
private var defaultBackgroundColor: UIColor {
return Colors.cellBackground
return isLightMode ? UIColor(hex: 0xFCFCFC) : UIColor(hex: 0x1B1B1B)
}
private var highlightedBackgroundColor: UIColor {
return Colors.cellSelected
return isLightMode ? UIColor(hex: 0xDFDFDF) : UIColor(hex: 0x0C0C0C)
}
override var isHighlighted: Bool {

View File

@ -12,31 +12,31 @@
@objc(LKColors)
public final class Colors : NSObject {
@objc public static var accent = UIColor(named: "session_accent")!
@objc public static var text = UIColor(named: "session_text")!
@objc public static var destructive = UIColor(named: "session_destructive")!
@objc public static var unimportant = UIColor(named: "session_unimportant")!
@objc public static var border = UIColor(named: "session_border")!
@objc public static var cellBackground = UIColor(named: "session_cell_background")!
@objc public static var cellSelected = UIColor(named: "session_cell_selected")!
@objc public static var navigationBarBackground = UIColor(named: "session_navigation_bar_background")!
@objc public static var searchBarPlaceholder = UIColor(named: "session_search_bar_placeholder")! // Also used for the icons
@objc public static var searchBarBackground = UIColor(named: "session_search_bar_background")!
@objc public static var newConversationButtonShadow = UIColor(named: "session_new_conversation_button_shadow")!
@objc public static var separator = UIColor(named: "session_separator")!
@objc public static var unimportantButtonBackground = UIColor(named: "session_unimportant_button_background")!
@objc public static var buttonBackground = UIColor(named: "session_button_background")!
@objc public static var settingButtonSelected = UIColor(named: "session_setting_button_selected")!
@objc public static var modalBackground = UIColor(named: "session_modal_background")!
@objc public static var modalBorder = UIColor(named: "session_modal_border")!
@objc public static var fakeChatBubbleBackground = UIColor(named: "session_fake_chat_bubble_background")!
@objc public static var fakeChatBubbleText = UIColor(named: "session_fake_chat_bubble_text")!
@objc public static var composeViewBackground = UIColor(named: "session_compose_view_background")!
@objc public static var composeViewTextFieldBackground = UIColor(named: "session_compose_view_text_field_background")!
@objc public static var receivedMessageBackground = UIColor(named: "session_received_message_background")!
@objc public static var sentMessageBackground = UIColor(named: "session_sent_message_background")!
@objc public static var newConversationButtonCollapsedBackground = UIColor(named: "session_new_conversation_button_collapsed_background")!
@objc public static var pnOptionBackground = UIColor(named: "session_pn_option_background")!
@objc public static var pnOptionBorder = UIColor(named: "session_pn_option_border")!
@objc public static var pathsBuilding = UIColor(named: "session_paths_building")!
@objc public static let accent = UIColor(named: "session_accent")!
@objc public static let text = UIColor(named: "session_text")!
@objc public static let destructive = UIColor(named: "session_destructive")!
@objc public static let unimportant = UIColor(named: "session_unimportant")!
@objc public static let border = UIColor(named: "session_border")!
@objc public static let cellBackground = UIColor(named: "session_cell_background")!
@objc public static let cellSelected = UIColor(named: "session_cell_selected")!
@objc public static let navigationBarBackground = UIColor(named: "session_navigation_bar_background")!
@objc public static let searchBarPlaceholder = UIColor(named: "session_search_bar_placeholder")! // Also used for the icons
@objc public static let searchBarBackground = UIColor(named: "session_search_bar_background")!
@objc public static let newConversationButtonShadow = UIColor(named: "session_new_conversation_button_shadow")!
@objc public static let separator = UIColor(named: "session_separator")!
@objc public static let unimportantButtonBackground = UIColor(named: "session_unimportant_button_background")!
@objc public static let buttonBackground = UIColor(named: "session_button_background")!
@objc public static let settingButtonSelected = UIColor(named: "session_setting_button_selected")!
@objc public static let modalBackground = UIColor(named: "session_modal_background")!
@objc public static let modalBorder = UIColor(named: "session_modal_border")!
@objc public static let fakeChatBubbleBackground = UIColor(named: "session_fake_chat_bubble_background")!
@objc public static let fakeChatBubbleText = UIColor(named: "session_fake_chat_bubble_text")!
@objc public static let composeViewBackground = UIColor(named: "session_compose_view_background")!
@objc public static let composeViewTextFieldBackground = UIColor(named: "session_compose_view_text_field_background")!
@objc public static let receivedMessageBackground = UIColor(named: "session_received_message_background")!
@objc public static let sentMessageBackground = UIColor(named: "session_sent_message_background")!
@objc public static let newConversationButtonCollapsedBackground = UIColor(named: "session_new_conversation_button_collapsed_background")!
@objc public static let pnOptionBackground = UIColor(named: "session_pn_option_background")!
@objc public static let pnOptionBorder = UIColor(named: "session_pn_option_border")!
@objc public static let pathsBuilding = UIColor(named: "session_paths_building")!
}

View File

@ -60,7 +60,7 @@ class AttachmentApprovalInputAccessoryView: UIView {
// Use a background view that extends below the keyboard to avoid animation glitches.
let backgroundView = UIView()
backgroundView.backgroundColor = UIColor.black.withAlphaComponent(0.6)
backgroundView.backgroundColor = isLightMode ? UIColor.black.withAlphaComponent(0.2) : UIColor.black.withAlphaComponent(0.6)
addSubview(backgroundView)
backgroundView.autoPinEdgesToSuperviewEdges()

View File

@ -438,6 +438,7 @@ extension AttachmentPrepViewController: ImageEditorViewDelegate {
? .overFullScreen
: .fullScreen)
navigationController.ows_prefersStatusBarHidden = true
navigationController.view.backgroundColor = Colors.navigationBarBackground
if let navigationBar = navigationController.navigationBar as? OWSNavigationBar {
navigationBar.overrideTheme(type: .clear)

View File

@ -41,7 +41,9 @@ NSString *NSStringForScreenLockUIState(ScreenLockUIState value)
self.view.backgroundColor = UIColor.clearColor;
CAGradientLayer *layer = [CAGradientLayer new];
layer.frame = UIScreen.mainScreen.bounds;
layer.colors = @[ (id)[UIColor colorWithRGBHex:0x171717].CGColor, (id)[UIColor colorWithRGBHex:0x121212].CGColor ];
UIColor *gradientStartColor = LKAppModeUtilities.isLightMode ? [UIColor colorWithRGBHex:0xFCFCFC] : [UIColor colorWithRGBHex:0x171717];
UIColor *gradientEndColor = LKAppModeUtilities.isLightMode ? [UIColor colorWithRGBHex:0xFFFFFF] : [UIColor colorWithRGBHex:0x121212];
layer.colors = @[ (id)gradientStartColor.CGColor, (id)gradientEndColor.CGColor ];
[self.view.layer insertSublayer:layer atIndex:0];
UIView *edgesView = [UIView containerView];
@ -64,7 +66,7 @@ NSString *NSStringForScreenLockUIState(ScreenLockUIState value)
OWSFlatButton *button =
[OWSFlatButton buttonWithTitle:NSLocalizedString(@"Unlock Session", @"")
font:[UIFont boldSystemFontOfSize:LKValues.mediumFontSize]
titleColor:UIColor.whiteColor
titleColor:LKAppModeUtilities.isLightMode ? UIColor.blackColor : UIColor.whiteColor
backgroundColor:UIColor.clearColor
target:self
selector:@selector(showUnlockUI)];

View File

@ -81,7 +81,9 @@ NS_ASSUME_NONNULL_BEGIN
self.tableViewController.view.backgroundColor = UIColor.clearColor;
CAGradientLayer *layer = [CAGradientLayer new];
layer.frame = UIScreen.mainScreen.bounds;
layer.colors = @[ (id)[UIColor colorWithRGBHex:0x171717].CGColor, (id)[UIColor colorWithRGBHex:0x121212].CGColor ];
UIColor *gradientStartColor = LKAppModeUtilities.isLightMode ? [UIColor colorWithRGBHex:0xFCFCFC] : [UIColor colorWithRGBHex:0x171717];
UIColor *gradientEndColor = LKAppModeUtilities.isLightMode ? [UIColor colorWithRGBHex:0xFFFFFF] : [UIColor colorWithRGBHex:0x121212];
layer.colors = @[ (id)gradientStartColor.CGColor, (id)gradientEndColor.CGColor ];
[self.tableViewController.view.layer insertSublayer:layer atIndex:0];
// Loki: Set navigation bar background color

View File

@ -10,7 +10,7 @@ public extension NSObject {
selector: Selector) -> UIView {
let button = OWSButton()
button.setImage(imageName: imageName)
button.tintColor = Colors.text
button.tintColor = isLightMode ? UIColor.black : UIColor.white
button.addTarget(self, action: selector, for: .touchUpInside)
return button
}
@ -51,9 +51,10 @@ public extension UIViewController {
navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navigationBar.shadowImage = UIImage()
navigationBar.isTranslucent = false
navigationBar.barTintColor = Colors.navigationBarBackground
navigationBar.backgroundColor = Colors.navigationBarBackground
let backgroundImage = UIImage(color: Colors.navigationBarBackground)
let color = isLightMode ? UIColor(hex: 0xFCFCFC) : UIColor(hex: 0x161616)
navigationBar.barTintColor = color
navigationBar.backgroundColor = color
let backgroundImage = UIImage(color: color)
navigationBar.setBackgroundImage(backgroundImage, for: .default)
}
}

View File

@ -140,8 +140,7 @@ public class OWSFlatButton: UIView {
@objc
public func setBackgroundColors(upColor: UIColor ) {
setBackgroundColors(upColor: upColor,
downColor: upColor.withAlphaComponent(0.7) )
setBackgroundColors(upColor: upColor, downColor: upColor )
}
@objc

View File

@ -46,10 +46,6 @@ NSString *const ThemeKeyThemeEnabled = @"ThemeKeyThemeEnabled";
{
OWSAssertIsOnMainThread();
if (!CurrentAppContext().isMainApp) {
return NO;
}
return LKAppModeUtilities.isDarkMode;
}
@ -60,18 +56,7 @@ NSString *const ThemeKeyThemeEnabled = @"ThemeKeyThemeEnabled";
- (void)setIsDarkThemeEnabled:(BOOL)value
{
OWSAssertIsOnMainThread();
self.isDarkThemeEnabledNumber = @(value);
[OWSPrimaryStorage.sharedManager.dbReadWriteConnection setBool:value
forKey:ThemeKeyThemeEnabled
inCollection:ThemeCollection];
[UIUtil setupSignalAppearence];
[UIView performWithoutAnimation:^{
[[NSNotificationCenter defaultCenter] postNotificationName:ThemeDidChangeNotification object:nil userInfo:nil];
}];
return;
}
+ (UIColor *)backgroundColor
@ -197,7 +182,6 @@ NSString *const ThemeKeyThemeEnabled = @"ThemeKeyThemeEnabled";
return UIKeyboardAppearanceDark;
}
#pragma mark - Search Bar
+ (UIBarStyle)barStyle

View File

@ -47,7 +47,9 @@ NS_ASSUME_NONNULL_BEGIN
self.view.backgroundColor = UIColor.clearColor;
CAGradientLayer *layer = [CAGradientLayer new];
layer.frame = UIScreen.mainScreen.bounds;
layer.colors = @[ (id)[UIColor colorWithRGBHex:0x171717].CGColor, (id)[UIColor colorWithRGBHex:0x121212].CGColor ];
UIColor *gradientStartColor = LKAppModeUtilities.isLightMode ? [UIColor colorWithRGBHex:0xFCFCFC] : [UIColor colorWithRGBHex:0x171717];
UIColor *gradientEndColor = LKAppModeUtilities.isLightMode ? [UIColor colorWithRGBHex:0xFFFFFF] : [UIColor colorWithRGBHex:0x121212];
layer.colors = @[ (id)gradientStartColor.CGColor, (id)gradientEndColor.CGColor ];
[self.view.layer insertSublayer:layer atIndex:0];
// Loki: Set navigation bar background color

View File

@ -10,7 +10,7 @@ import SessionServiceKit
import PromiseKit
@objc
public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailedViewDelegate {
public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailedViewDelegate, AppModeManagerDelegate {
// MARK: - Dependencies
@ -43,6 +43,8 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed
let appContext = ShareAppExtensionContext(rootViewController: self)
SetCurrentAppContext(appContext)
AppModeManager.configure(delegate: self)
DebugLogger.shared().enableTTYLogging()
if _isDebugAssertConfiguration() {
DebugLogger.shared().enableFileLogging()
@ -1033,6 +1035,19 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed
// apply any conversion, so no need to relocate the app.
return !itemProvider.registeredTypeIdentifiers.contains(kUTTypeMPEG4 as String)
}
// MARK: App Mode
public func getCurrentAppMode() -> AppMode {
guard let window = self.view.window else { return .light }
let userInterfaceStyle = window.traitCollection.userInterfaceStyle
let isLightMode = (userInterfaceStyle == .light || userInterfaceStyle == .unspecified)
return isLightMode ? .light : .dark
}
public func setCurrentAppMode(to appMode: AppMode) {
return // Not applicable to share extensions
}
}
// Exposes a Progress object, whose progress is updated by polling the return of a given block