зеркало из https://github.com/nextcloud/talk-ios.git
Increase font-size for pure emoji-messages with max. 3 emojis
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
This commit is contained in:
Родитель
e6d67e3b71
Коммит
012018af5c
|
@ -10,6 +10,9 @@
|
|||
1F3D3B22255F109E00230DAE /* BarButtonItemWithActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F3D3B20255F109E00230DAE /* BarButtonItemWithActivity.m */; };
|
||||
1F3D3B23255F109E00230DAE /* BarButtonItemWithActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F3D3B20255F109E00230DAE /* BarButtonItemWithActivity.m */; };
|
||||
1F3D3B24255F109E00230DAE /* BarButtonItemWithActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F3D3B20255F109E00230DAE /* BarButtonItemWithActivity.m */; };
|
||||
1F4DD3EB2571C688007DC98E /* EmojiUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F4DD3EA2571C688007DC98E /* EmojiUtils.swift */; };
|
||||
1F4DD3EC2571C688007DC98E /* EmojiUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F4DD3EA2571C688007DC98E /* EmojiUtils.swift */; };
|
||||
1F4DD3ED2571C688007DC98E /* EmojiUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F4DD3EA2571C688007DC98E /* EmojiUtils.swift */; };
|
||||
2C0574821EDD9E8E00D9E7F2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C0574811EDD9E8E00D9E7F2 /* main.m */; };
|
||||
2C0574851EDD9E8E00D9E7F2 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C0574841EDD9E8E00D9E7F2 /* AppDelegate.m */; };
|
||||
2C05748E1EDD9E8E00D9E7F2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C05748C1EDD9E8E00D9E7F2 /* Main.storyboard */; };
|
||||
|
@ -449,6 +452,7 @@
|
|||
/* Begin PBXFileReference section */
|
||||
1F3D3B20255F109E00230DAE /* BarButtonItemWithActivity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BarButtonItemWithActivity.m; sourceTree = "<group>"; };
|
||||
1F3D3B21255F109E00230DAE /* BarButtonItemWithActivity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BarButtonItemWithActivity.h; sourceTree = "<group>"; };
|
||||
1F4DD3EA2571C688007DC98E /* EmojiUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiUtils.swift; sourceTree = "<group>"; };
|
||||
2C05747D1EDD9E8E00D9E7F2 /* NextcloudTalk.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NextcloudTalk.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2C0574811EDD9E8E00D9E7F2 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
2C0574831EDD9E8E00D9E7F2 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
|
@ -1177,6 +1181,7 @@
|
|||
2C6DEAB2243CCC7F00AE8437 /* Chat cells */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1F4DD3EA2571C688007DC98E /* EmojiUtils.swift */,
|
||||
2CC7159220C54D080045C789 /* ChatTableViewCell.h */,
|
||||
2CC7159320C54D080045C789 /* ChatTableViewCell.m */,
|
||||
2CA15546208EA1EA00CE8EF0 /* ChatMessageTableViewCell.h */,
|
||||
|
@ -1612,7 +1617,8 @@
|
|||
TargetAttributes = {
|
||||
2C05747C1EDD9E8E00D9E7F2 = {
|
||||
CreatedOnToolsVersion = 8.3.2;
|
||||
DevelopmentTeam = NKUJUXUJ3B;
|
||||
DevelopmentTeam = NKUJUXUJ3B;
|
||||
LastSwiftMigration = 1220;
|
||||
ProvisioningStyle = Automatic;
|
||||
SystemCapabilities = {
|
||||
com.apple.ApplicationGroups.iOS = {
|
||||
|
@ -1631,12 +1637,14 @@
|
|||
};
|
||||
2C62AFA224C08845007E460A = {
|
||||
CreatedOnToolsVersion = 11.5;
|
||||
DevelopmentTeam = NKUJUXUJ3B;
|
||||
DevelopmentTeam = NKUJUXUJ3B;
|
||||
LastSwiftMigration = 1220;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
2CC0014E24A1F0E900A20167 = {
|
||||
CreatedOnToolsVersion = 11.5;
|
||||
DevelopmentTeam = NKUJUXUJ3B;
|
||||
DevelopmentTeam = NKUJUXUJ3B;
|
||||
LastSwiftMigration = 1220;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
};
|
||||
|
@ -1916,6 +1924,7 @@
|
|||
2C961E1B2216BF4B00F5C23F /* OCWebDAVClient.m in Sources */,
|
||||
2C961E162216BF4B00F5C23F /* OCShareUser.m in Sources */,
|
||||
2C5E957D227097E0009CA9BE /* NCUtils.m in Sources */,
|
||||
1F4DD3EB2571C688007DC98E /* EmojiUtils.swift in Sources */,
|
||||
2C4D7D731F309DA500FF4A0D /* RTCSessionDescription+JSON.m in Sources */,
|
||||
2CB3041C2264775E0053078A /* SLKTextView+SLKAdditions.m in Sources */,
|
||||
2C961E102216BF4B00F5C23F /* OCExternalSites.m in Sources */,
|
||||
|
@ -2015,6 +2024,7 @@
|
|||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1F4DD3ED2571C688007DC98E /* EmojiUtils.swift in Sources */,
|
||||
2C62AFF824C1BDA5007E460A /* QuotedMessageView.m in Sources */,
|
||||
2C62B02424C1BDCF007E460A /* NCAppBranding.m in Sources */,
|
||||
2C62AFD024C1BD78007E460A /* OCSharedDto.m in Sources */,
|
||||
|
@ -2225,6 +2235,7 @@
|
|||
2CC001B524A37A9500A20167 /* NCChatViewController.m in Sources */,
|
||||
2CC0017E24A37A5000A20167 /* SLKTextViewController.m in Sources */,
|
||||
2CC0019724A37A7400A20167 /* NSString+Encode.m in Sources */,
|
||||
1F4DD3EC2571C688007DC98E /* EmojiUtils.swift in Sources */,
|
||||
2CC001E224A37AD400A20167 /* VideoSettingsViewController.m in Sources */,
|
||||
2CC001AA24A37A8F00A20167 /* ChatMessageTableViewCell.m in Sources */,
|
||||
2C78E9E42512136000E3D4CA /* NCUserStatus.m in Sources */,
|
||||
|
@ -2417,6 +2428,7 @@
|
|||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = NextcloudTalk/NextcloudTalk.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
|
@ -2454,6 +2466,10 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "";
|
||||
SWIFT_OBJC_INTERFACE_HEADER_NAME = "NextcloudTalk-Swift.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
|
@ -2463,6 +2479,7 @@
|
|||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = NextcloudTalk/NextcloudTalk.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Distribution: Nextcloud GmbH (NKUJUXUJ3B)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
|
@ -2500,6 +2517,9 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "";
|
||||
SWIFT_OBJC_INTERFACE_HEADER_NAME = "NextcloudTalk-Swift.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
@ -2509,6 +2529,7 @@
|
|||
buildSettings = {
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
|
@ -2585,6 +2606,11 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.ShareExtension;
|
||||
PRODUCT_NAME = ShareExtension;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_INSTALL_OBJC_HEADER = YES;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "";
|
||||
SWIFT_OBJC_INTERFACE_HEADER_NAME = "NextcloudTalk-Swift.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -2595,6 +2621,7 @@
|
|||
buildSettings = {
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
|
@ -2670,6 +2697,10 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.ShareExtension;
|
||||
PRODUCT_NAME = ShareExtension;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_INSTALL_OBJC_HEADER = YES;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "";
|
||||
SWIFT_OBJC_INTERFACE_HEADER_NAME = "NextcloudTalk-Swift.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
|
@ -2680,6 +2711,7 @@
|
|||
buildSettings = {
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
|
@ -2739,6 +2771,10 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NotificationServiceExtension;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "";
|
||||
SWIFT_OBJC_INTERFACE_HEADER_NAME = "NextcloudTalk-Swift.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -2749,6 +2785,7 @@
|
|||
buildSettings = {
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
|
@ -2807,6 +2844,9 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NotificationServiceExtension;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "";
|
||||
SWIFT_OBJC_INTERFACE_HEADER_NAME = "NextcloudTalk-Swift.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
* @copyright Copyright (c) 2020 Marcel Müller <marcel-mueller@gmx.de>
|
||||
*
|
||||
* @author Marcel Müller <marcel-mueller@gmx.de>
|
||||
*
|
||||
* @license GNU GPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
import Foundation
|
||||
|
||||
// based on https://stackoverflow.com/a/39425959/2512312
|
||||
@available(iOS 10.2, *)
|
||||
extension Character {
|
||||
/// A simple emoji is one scalar and presented to the user as an Emoji
|
||||
var isSimpleEmoji: Bool {
|
||||
guard let firstScalar = unicodeScalars.first else { return false }
|
||||
return firstScalar.properties.isEmoji && firstScalar.value > 0x238C
|
||||
}
|
||||
|
||||
/// Checks if the scalars will be merged into an emoji
|
||||
var isCombinedIntoEmoji: Bool { unicodeScalars.count > 1 && unicodeScalars.first?.properties.isEmoji ?? false }
|
||||
|
||||
var isEmoji: Bool { isSimpleEmoji || isCombinedIntoEmoji }
|
||||
}
|
||||
|
||||
@available(iOS 10.2, *)
|
||||
extension String {
|
||||
var isSingleEmoji: Bool { count == 1 && containsEmoji }
|
||||
|
||||
var containsEmoji: Bool { contains { $0.isEmoji } }
|
||||
|
||||
var containsOnlyEmoji: Bool { !isEmpty && !contains { !$0.isEmoji } }
|
||||
|
||||
var emojiString: String { emojis.map { String($0) }.reduce("", +) }
|
||||
|
||||
var emojis: [Character] { filter { $0.isEmoji } }
|
||||
|
||||
var emojiScalars: [UnicodeScalar] { filter { $0.isEmoji }.flatMap { $0.unicodeScalars } }
|
||||
}
|
||||
|
||||
@objc extension NSString {
|
||||
|
||||
public var containsOnlyEmoji : Bool {
|
||||
if #available(iOS 10.2, *) {
|
||||
let str = self as String
|
||||
return str.containsOnlyEmoji
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
public var emojiCount: Int {
|
||||
if #available(iOS 10.2, *) {
|
||||
let str = self as String
|
||||
return str.emojis.count
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
}
|
|
@ -52,6 +52,7 @@ extern NSInteger const kChatMessageGroupTimeDifference;
|
|||
+ (void)updateChatMessage:(NCChatMessage *)managedChatMessage withChatMessage:(NCChatMessage *)chatMessage;
|
||||
|
||||
- (BOOL)isSystemMessage;
|
||||
- (BOOL)isEmojiMessage;
|
||||
- (NCMessageParameter *)file;
|
||||
- (NSDictionary *)messageParameters;
|
||||
- (NSMutableAttributedString *)parsedMessage;
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#import "NCAppBranding.h"
|
||||
#import "NCSettingsController.h"
|
||||
#import "NextcloudTalk-Swift.h"
|
||||
|
||||
NSInteger const kChatMessageGroupTimeDifference = 30;
|
||||
|
||||
|
@ -112,6 +113,15 @@ NSInteger const kChatMessageGroupTimeDifference = 30;
|
|||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)isEmojiMessage
|
||||
{
|
||||
if (self.message && self.message.containsOnlyEmoji && self.message.emojiCount <= 3) {
|
||||
return YES;
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (NCMessageParameter *)file;
|
||||
{
|
||||
NCMessageParameter *fileParam = nil;
|
||||
|
@ -192,9 +202,14 @@ NSInteger const kChatMessageGroupTimeDifference = 30;
|
|||
}
|
||||
|
||||
NSMutableAttributedString *attributedMessage = [[NSMutableAttributedString alloc] initWithString:parsedMessage];
|
||||
[attributedMessage addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16.0f] range:NSMakeRange(0,parsedMessage.length)];
|
||||
[attributedMessage addAttribute:NSForegroundColorAttributeName value:[UIColor darkGrayColor] range:NSMakeRange(0,parsedMessage.length)];
|
||||
|
||||
if (self.isEmojiMessage) {
|
||||
[attributedMessage addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:36.0f] range:NSMakeRange(0,parsedMessage.length)];
|
||||
} else {
|
||||
[attributedMessage addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16.0f] range:NSMakeRange(0,parsedMessage.length)];
|
||||
}
|
||||
|
||||
for (NCMessageParameter *param in parameters) {
|
||||
//Set color for mentions
|
||||
if ([param.type isEqualToString:@"user"] || [param.type isEqualToString:@"guest"] || [param.type isEqualToString:@"call"]) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче