123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- // _____ _
- // |_ _| |_ _ _ ___ ___ _ __ __ _
- // | | | ' \| '_/ -_) -_) ' \/ _` |_
- // |_| |_||_|_| \___\___|_|_|_\__,_(_)
- //
- // Threema iOS Client
- // Copyright (c) 2012-2020 Threema GmbH
- //
- // This program is free software: you can redistribute it and/or modify
- // it under the terms of the GNU Affero General Public License, version 3,
- // as published by the Free Software Foundation.
- //
- // 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 Affero General Public License for more details.
- //
- // You should have received a copy of the GNU Affero General Public License
- // along with this program. If not, see <https://www.gnu.org/licenses/>.
- #import <QuartzCore/QuartzCore.h>
- #import "IdentityVerifiedViewController.h"
- #import "Contact.h"
- #import "CryptoUtils.h"
- #import "AvatarMaker.h"
- #import "BundleUtil.h"
- #import "FeatureMask.h"
- #import "ServerConnector.h"
- #import "Threema-Swift.h"
- #import "UIDefines.h"
- @interface IdentityVerifiedViewController ()
- @end
- @implementation IdentityVerifiedViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- self.contactImage.contentMode = UIViewContentModeScaleAspectFill;
- self.contactImage.layer.cornerRadius = self.contactImage.frame.size.width/2;
- self.contactImage.layer.masksToBounds = YES;
- _threemaTypeIcon.image = [Utils threemaTypeIcon];
-
- [self setupColors];
- }
- - (void)setupColors {
- [_nameLabel setTextColor:[Colors fontNormal]];
- _nameLabel.shadowColor = nil;
-
- if (@available(iOS 11.0, *)) {
- _contactImage.accessibilityIgnoresInvertColors = true;
- _threemaTypeIcon.accessibilityIgnoresInvertColors = true;
- }
- }
- - (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-
- [self updateView];
- }
- - (void)viewWillLayoutSubviews {
- [super viewWillLayoutSubviews];
-
- UIFontDescriptor *fontDescriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleTitle3];
- CGFloat size = fontDescriptor.pointSize;
- _nameLabel.font = [UIFont boldSystemFontOfSize:size];
- }
- - (BOOL)shouldAutorotate {
- return YES;
- }
- -(UIInterfaceOrientationMask)supportedInterfaceOrientations {
- if (SYSTEM_IS_IPAD) {
- return UIInterfaceOrientationMaskAll;
- }
-
- return UIInterfaceOrientationMaskAllButUpsideDown;
- }
- - (void)updateView {
- self.sendMessageLabel.text = [BundleUtil localizedStringForKey:@"send_message"];
- self.threemaCallLabel.text = [BundleUtil localizedStringForKey:@"call_voip_not_supported_title"];
-
- self.title = self.contact.displayName;
- self.nameLabel.text = self.contact.displayName;
-
- self.contactImage.image = [[AvatarMaker sharedAvatarMaker] avatarForContact:self.contact size:self.contactImage.frame.size.width masked:NO];
- _threemaTypeIcon.hidden = [Utils hideThreemaTypeIconForContact:self.contact];
-
- self.identityLabel.text = self.contact.identity;
- self.keyFingerprintCell.fingerprintValueLabel.text = [CryptoUtils fingerprintForPublicKey:self.contact.publicKey];
- self.verificationLevelCell.contact = self.contact;
-
- if (self.contact.isWorkContact == true) {
- _verificationLevelImage.image = StyleKit.verificationBig4;
- } else {
- _verificationLevelImage.image = StyleKit.verificationBig2;
- }
-
- if (self.contact.isGatewayId || !is64Bit) {
- self.threemaCallCell.hidden = YES;
- }
- }
- - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
- if (indexPath.section == 1) {
- [Colors updateTableViewCellBackground:cell];
- [Colors setTextColor:[Colors main] inView:cell.contentView];
- } else {
- [Colors updateTableViewCell:cell];
- }
- }
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- UITableViewCell *selectedCell = [self.tableView cellForRowAtIndexPath:indexPath];
- if (selectedCell == self.sendMessageCell) {
- [self dismissViewControllerAnimated:YES completion:^{
- NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys: self.contact, kKeyContact, [NSNumber numberWithBool:YES], kKeyForceCompose, nil];
- [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationShowConversation object:nil userInfo:info];
- }];
- }
- else if (selectedCell == self.threemaCallCell) {
- [self dismissViewControllerAnimated:YES completion:^{
- NSInteger state = [[VoIPCallStateManager shared] currentCallState];
- if (state == CallStateIdle) {
- [FeatureMask checkFeatureMask:FEATURE_MASK_VOIP forContacts:[NSSet setWithObjects:self.contact, nil] onCompletion:^(NSArray *unsupportedContacts) {
- if (unsupportedContacts.count == 0) {
- [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
- if ([ServerConnector sharedServerConnector].connectionState == ConnectionStateLoggedIn) {
- VoIPCallUserAction *action = [[VoIPCallUserAction alloc] initWithAction:ActionCall contact:self.contact callId:nil completion:nil];
- [[VoIPCallStateManager shared] processUserAction:action];
- } else {
- // Alert no internet connection
- NSString *title = NSLocalizedString(@"cannot_connect_title", nil);
- NSString *message = NSLocalizedString(@"cannot_connect_message", nil);
-
- [UIAlertTemplate showAlertWithOwner:self title:title message:message actionOk:^(UIAlertAction * _Nonnull okAction) {
- [self.extensionContext completeRequestReturningItems:@[] completionHandler:^(BOOL expired) {
- }];
- }];
- }
- } else {
- [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
- [UIAlertTemplate showAlertWithOwner:self title:NSLocalizedString(@"call_voip_not_supported_title", nil) message:NSLocalizedString(@"call_voip_not_supported_text", nil) actionOk:nil];
- }
- }];
- } else {
- [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
- }
- }];
- }
- }
- - (IBAction)done:(id)sender {
- [self dismissViewControllerAnimated:YES completion:nil];
- }
- @end
|