From 68309eb00f27cb448a99466822d9c741e42541e3 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 23 Aug 2017 13:31:06 -0400 Subject: [PATCH] Rework save/cancel buttons in profile view. // FREEBIE --- .../ConversationView/MessagesViewController.m | 2 + .../ViewControllers/ProfileViewController.m | 72 ++++++++++--------- 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/MessagesViewController.m b/Signal/src/ViewControllers/ConversationView/MessagesViewController.m index e8051dfcd..433537879 100644 --- a/Signal/src/ViewControllers/ConversationView/MessagesViewController.m +++ b/Signal/src/ViewControllers/ConversationView/MessagesViewController.m @@ -437,6 +437,8 @@ typedef enum : NSUInteger { // We'd like to include at least N seen messages, if possible, // to give the user the context of where they left off the conversation. + // + // TODO: Is this still necessary? const int kPreferredSeenMessageCount = 1; self.page = (NSUInteger)MAX(0, MIN(kYapDatabaseMaxInitialPageCount - 1, diff --git a/Signal/src/ViewControllers/ProfileViewController.m b/Signal/src/ViewControllers/ProfileViewController.m index 0cb6a4ea1..21c658f76 100644 --- a/Signal/src/ViewControllers/ProfileViewController.m +++ b/Signal/src/ViewControllers/ProfileViewController.m @@ -38,7 +38,7 @@ NSString *const kProfileView_LastPresentedDate = @"kProfileView_LastPresentedDat @property (nonatomic) UIImageView *cameraImageView; -@property (nonatomic) UIButton *skipOrSaveButton; +@property (nonatomic) UIButton *saveButton; @property (nonatomic, nullable) UIImage *avatar; @@ -207,24 +207,25 @@ NSString *const kProfileView_LastPresentedDate = @"kProfileView_LastPresentedDat // Big Button - if (self.profileViewMode == ProfileViewMode_Registration) { + if (self.profileViewMode == ProfileViewMode_Registration || self.profileViewMode == ProfileViewMode_UpgradeOrNag) { UIView *buttonRow = [UIView containerView]; [rows addObject:buttonRow]; - UIButton *skipOrSaveButton = [UIButton buttonWithType:UIButtonTypeCustom]; - self.skipOrSaveButton = skipOrSaveButton; - skipOrSaveButton.backgroundColor = [UIColor ows_signalBrandBlueColor]; - [skipOrSaveButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - skipOrSaveButton.titleLabel.font = [UIFont ows_boldFontWithSize:fontSizePoints]; - [skipOrSaveButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter]; - [skipOrSaveButton setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter]; - [buttonRow addSubview:skipOrSaveButton]; - [skipOrSaveButton autoPinLeadingAndTrailingToSuperview]; - [skipOrSaveButton autoPinHeightToSuperview]; - [skipOrSaveButton autoSetDimension:ALDimensionHeight toSize:47.f]; - [skipOrSaveButton addTarget:self - action:@selector(skipOrSaveButtonPressed) - forControlEvents:UIControlEventTouchUpInside]; + UIButton *saveButton = [UIButton buttonWithType:UIButtonTypeCustom]; + self.saveButton = saveButton; + saveButton.backgroundColor = [UIColor ows_signalBrandBlueColor]; + [saveButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + saveButton.titleLabel.font = [UIFont ows_boldFontWithSize:fontSizePoints]; + [saveButton setTitle:NSLocalizedString( + @"PROFILE_VIEW_SAVE_BUTTON", @"Button to save the profile view in the profile view.") + forState:UIControlStateNormal]; + [saveButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter]; + [saveButton setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter]; + [buttonRow addSubview:saveButton]; + [saveButton autoPinLeadingAndTrailingToSuperview]; + [saveButton autoPinHeightToSuperview]; + [saveButton autoSetDimension:ALDimensionHeight toSize:47.f]; + [saveButton addTarget:self action:@selector(saveButtonPressed) forControlEvents:UIControlEventTouchUpInside]; } // Row Layout @@ -322,15 +323,24 @@ NSString *const kProfileView_LastPresentedDate = @"kProfileView_LastPresentedDat // context. switch (self.profileViewMode) { case ProfileViewMode_AppSettings: + if (self.hasUnsavedChanges) { + // If we have a unsaved changes, right item should be a "save" button. + self.navigationItem.rightBarButtonItem = + [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave + target:self + action:@selector(updatePressed)]; + } else { + self.navigationItem.rightBarButtonItem = nil; + } break; case ProfileViewMode_UpgradeOrNag: self.navigationItem.leftBarButtonItem = - [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel + [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:@selector(backOrSkipButtonPressed)]; break; case ProfileViewMode_Registration: - self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] + self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"NAVIGATION_ITEM_SKIP_BUTTON", @"A button to skip a view.") style:UIBarButtonItemStylePlain target:self @@ -338,22 +348,14 @@ NSString *const kProfileView_LastPresentedDate = @"kProfileView_LastPresentedDat break; } - if (self.profileViewMode == ProfileViewMode_Registration) { - [self.skipOrSaveButton - setTitle:(self.hasUnsavedChanges - ? NSLocalizedString( - @"PROFILE_VIEW_SAVE_BUTTON", @"Button to save the profile view in the profile view.") - : NSLocalizedString(@"PROFILE_VIEW_SKIP_BUTTON", - @"Button to skip the profile view in the registration workflow."))forState - :UIControlStateNormal]; + // The save button is only used in "registration" and "upgrade or nag" modes. + if (self.hasUnsavedChanges) { + self.saveButton.enabled = YES; + self.saveButton.backgroundColor = [UIColor ows_signalBrandBlueColor]; } else { - if (self.hasUnsavedChanges) { - // If we have a unsaved changes, right item should be a "save" button. - self.navigationItem.rightBarButtonItem = - [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave - target:self - action:@selector(updatePressed)]; - } + self.saveButton.enabled = NO; + self.saveButton.backgroundColor = + [[UIColor ows_signalBrandBlueColor] blendWithColor:[UIColor whiteColor] alpha:0.5f]; } } @@ -506,9 +508,9 @@ NSString *const kProfileView_LastPresentedDate = @"kProfileView_LastPresentedDat } } -- (void)skipOrSaveButtonPressed +- (void)saveButtonPressed { - [self leaveViewCheckingForUnsavedChanges]; + [self updatePressed]; } #pragma mark - AvatarViewHelperDelegate