Add "conversation color mode" enum.

This commit is contained in:
Matthew Chen 2018-09-26 12:53:40 -04:00
parent e5150267c2
commit 26a2d568de
6 changed files with 31 additions and 9 deletions

View File

@ -110,7 +110,8 @@ class ColorPickerViewController: UIViewController, UIPickerViewDelegate, UIPicke
owsFailDebug("color was unexpectedly nil")
return ColorView(color: .white)
}
guard let color = UIColor.ows_conversationThemeColor(colorName: colorName) else {
guard let color = UIColor.ows_conversationColor(colorName: colorName,
mode: Theme.isDarkThemeEnabled ? .shade : .default) else {
owsFailDebug("unknown color name")
return ColorView(color: .white)
}

View File

@ -288,7 +288,11 @@ const CGFloat kIconViewLength = 24;
[mainSection addItem:[OWSTableItem
itemWithCustomCellBlock:^{
NSString *colorName = self.thread.conversationColorName;
UIColor *currentColor = [UIColor ows_conversationThemeColorForColorName:colorName];
UIColor *currentColor = [UIColor
ows_conversationColorForColorName:colorName
mode:(Theme.isDarkThemeEnabled
? ConversationColorMode_Shade
: ConversationColorMode_Default)];
NSString *title = NSLocalizedString(@"CONVERSATION_SETTINGS_CONVERSATION_COLOR",
@"Label for table cell which leads to picking a new conversation color");
return [weakSelf disclosureCellWithName:title iconColor:currentColor];

View File

@ -7,6 +7,12 @@
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSUInteger, ConversationColorMode) {
ConversationColorMode_Default,
ConversationColorMode_Shade,
ConversationColorMode_Tint,
};
@interface UIColor (OWS)
#pragma mark -
@ -96,8 +102,9 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark - Conversation Colors
+ (nullable UIColor *)ows_conversationThemeColorForColorName:(NSString *)colorName
NS_SWIFT_NAME(ows_conversationThemeColor(colorName:));
+ (nullable UIColor *)ows_conversationColorForColorName:(NSString *)colorName
mode:(ConversationColorMode)mode
NS_SWIFT_NAME(ows_conversationColor(colorName:mode:));
@property (class, readonly, nonatomic) NSArray<NSString *> *ows_conversationColorNames;

View File

@ -459,12 +459,18 @@ NS_ASSUME_NONNULL_BEGIN
return self.ows_conversationColorMap.allKeys;
}
+ (nullable UIColor *)ows_conversationThemeColorForColorName:(NSString *)colorName
+ (nullable UIColor *)ows_conversationColorForColorName:(NSString *)colorName mode:(ConversationColorMode)mode
{
OWSAssertDebug(colorName.length > 0);
BOOL isShaded = Theme.isDarkThemeEnabled;
return (isShaded ? self.ows_conversationColorMapShade : self.ows_conversationColorMap)[colorName];
switch (mode) {
case ConversationColorMode_Default:
return self.ows_conversationColorMap[colorName];
case ConversationColorMode_Shade:
return self.ows_conversationColorMapShade[colorName];
case ConversationColorMode_Tint:
return self.ows_conversationColorMapTint[colorName];
}
}
+ (nullable UIColor *)ows_conversationTintColorForColorName:(NSString *)colorName

View File

@ -136,7 +136,8 @@ public class ConversationStyle: NSObject {
return self.defaultBubbleColorIncoming
}
guard let color = UIColor.ows_conversationThemeColor(colorName: colorName) else {
guard let color = UIColor.ows_conversationColor(colorName: colorName,
mode: Theme.isDarkThemeEnabled ? .shade : .default) else {
return self.defaultBubbleColorIncoming
}

View File

@ -124,7 +124,10 @@ NS_ASSUME_NONNULL_BEGIN
[initials appendString:@"#"];
}
UIColor *color = [UIColor ows_conversationThemeColorForColorName:self.colorName];
UIColor *color =
[UIColor ows_conversationColorForColorName:self.colorName
mode:(Theme.isDarkThemeEnabled ? ConversationColorMode_Shade
: ConversationColorMode_Default)];
OWSAssertDebug(color);
UIImage *_Nullable image =