diff --git a/Classes/Base.lproj/ChatConversationView.xib b/Classes/Base.lproj/ChatConversationView.xib index fa79c45f2..d5d282672 100644 --- a/Classes/Base.lproj/ChatConversationView.xib +++ b/Classes/Base.lproj/ChatConversationView.xib @@ -1,7 +1,6 @@ - diff --git a/Classes/Base.lproj/ContactDetailsView.xib b/Classes/Base.lproj/ContactDetailsView.xib index d1994bd9b..16b0b14d5 100644 --- a/Classes/Base.lproj/ContactDetailsView.xib +++ b/Classes/Base.lproj/ContactDetailsView.xib @@ -1,5 +1,5 @@ - + diff --git a/Classes/Base.lproj/ContactsListView.xib b/Classes/Base.lproj/ContactsListView.xib index ce7f9c3c8..09ef98bd4 100644 --- a/Classes/Base.lproj/ContactsListView.xib +++ b/Classes/Base.lproj/ContactsListView.xib @@ -9,8 +9,6 @@ - - @@ -35,19 +33,6 @@ - @@ -92,17 +77,59 @@ - + + + - @@ -162,14 +176,17 @@ - + + + + - + @@ -178,7 +195,9 @@ + + diff --git a/Classes/Base.lproj/HistoryListView.xib b/Classes/Base.lproj/HistoryListView.xib index 6c802f30d..d0f27cadb 100644 --- a/Classes/Base.lproj/HistoryListView.xib +++ b/Classes/Base.lproj/HistoryListView.xib @@ -73,10 +73,10 @@ - + - diff --git a/Classes/ContactDetailsTableView.m b/Classes/ContactDetailsTableView.m index a6a2c5ffb..1720d1141 100644 --- a/Classes/ContactDetailsTableView.m +++ b/Classes/ContactDetailsTableView.m @@ -603,21 +603,10 @@ static const ContactSections_e contactSections[ContactSections_MAX] = {ContactSe } if (dest != nil) { NSString *displayName = [FastAddressBook getContactDisplayName:contact]; - if ([ContactSelection getSelectionMode] != ContactSelectionModeMessage) { - // Go to dialer view - DialerView *view = VIEW(DialerView); - [PhoneMainView.instance changeCurrentView:view.compositeViewDescription]; - [view call:dest displayName:displayName]; - } else { - // Go to Chat room view - [PhoneMainView.instance popToView:ChatsListView.compositeViewDescription]; - // Then push ChatRoom - ChatConversationView *view = VIEW(ChatConversationView); - [PhoneMainView.instance changeCurrentView:view.compositeViewDescription push:TRUE]; - LinphoneChatRoom *room = - linphone_core_get_chat_room_from_uri([LinphoneManager getLc], [dest UTF8String]); - [view setChatRoom:room]; - } + // Go to dialer view + DialerView *view = VIEW(DialerView); + [PhoneMainView.instance changeCurrentView:view.compositeViewDescription]; + [view call:dest displayName:displayName]; } } else { NSString *key = nil; diff --git a/Classes/ContactsListView.h b/Classes/ContactsListView.h index 5af2cf370..c2114bca1 100644 --- a/Classes/ContactsListView.h +++ b/Classes/ContactsListView.h @@ -24,12 +24,7 @@ #import "ContactsListTableView.h" #import "UIIconButton.h" -typedef enum _ContactSelectionMode { - ContactSelectionModeNone, - ContactSelectionModeEdit, - ContactSelectionModePhone, - ContactSelectionModeMessage -} ContactSelectionMode; +typedef enum _ContactSelectionMode { ContactSelectionModeNone, ContactSelectionModeEdit } ContactSelectionMode; @interface ContactSelection : NSObject { } @@ -83,7 +78,6 @@ typedef enum _ContactSelectionMode { @property(strong, nonatomic) IBOutlet UIView *topBar; @property(nonatomic, strong) IBOutlet UIButton *allButton; @property(nonatomic, strong) IBOutlet UIButton *linphoneButton; -@property(nonatomic, strong) IBOutlet UIButton *backButton; @property(nonatomic, strong) IBOutlet UIButton *addButton; @property(strong, nonatomic) IBOutlet UISearchBar *searchBar; @property(weak, nonatomic) IBOutlet UIIconButton *deleteButton; @@ -91,8 +85,7 @@ typedef enum _ContactSelectionMode { - (IBAction)onAllClick:(id)event; - (IBAction)onLinphoneClick:(id)event; - (IBAction)onAddContactClick:(id)event; -- (IBAction)onBackClick:(id)event; -- (IBAction)onEditClick:(id)sender; - (IBAction)onDeleteClick:(id)sender; +- (IBAction)onEditionChangeClick:(id)sender; @end diff --git a/Classes/ContactsListView.m b/Classes/ContactsListView.m index 238aa4ced..498eaddae 100644 --- a/Classes/ContactsListView.m +++ b/Classes/ContactsListView.m @@ -80,7 +80,6 @@ static NSString *sNameOrEmailFilter; @synthesize tableController; @synthesize allButton; @synthesize linphoneButton; -@synthesize backButton; @synthesize addButton; @synthesize topBar; @@ -184,17 +183,8 @@ static UICompositeViewDescription *compositeDescription = nil; } - (void)refreshButtons { - switch ([ContactSelection getSelectionMode]) { - case ContactSelectionModePhone: - case ContactSelectionModeMessage: - [addButton setHidden:TRUE]; - [backButton setHidden:FALSE]; - break; - default: - [addButton setHidden:FALSE]; - [backButton setHidden:TRUE]; - break; - } + [addButton setHidden:FALSE]; + if ([ContactSelection getSipFilter]) { allButton.selected = FALSE; linphoneButton.selected = TRUE; @@ -230,26 +220,22 @@ static UICompositeViewDescription *compositeDescription = nil; } } -- (IBAction)onBackClick:(id)event { - [PhoneMainView.instance popCurrentView]; -} - -- (IBAction)onEditClick:(id)sender { - [tableController setEditing:!tableController.isEditing animated:TRUE]; - _deleteButton.hidden = !tableController.isEditing; - addButton.hidden = !_deleteButton.hidden; -} - - (IBAction)onDeleteClick:(id)sender { NSString *msg = [NSString stringWithFormat:NSLocalizedString(@"Are you sure that you want to delete %d contacts?", nil), tableController.selectedItems.count]; [UIConfirmationDialog ShowWithMessage:msg - onCancelClick:nil - onConfirmationClick:^() { - [tableController removeSelection]; - [tableController loadData]; - }]; + onCancelClick:^() { + [self onEditionChangeClick:nil]; + } + onConfirmationClick:^() { + [tableController removeSelection]; + [tableController loadData]; + }]; +} + +- (IBAction)onEditionChangeClick:(id)sender { + allButton.hidden = linphoneButton.hidden = addButton.hidden = self.tableController.isEditing; } - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { @@ -315,8 +301,4 @@ static UICompositeViewDescription *compositeDescription = nil; [searchBar resignFirstResponder]; } -- (void)viewDidUnload { - [self setTopBar:nil]; - [super viewDidUnload]; -} @end diff --git a/Classes/HistoryListView.h b/Classes/HistoryListView.h index aa70c8daf..1332c9efa 100644 --- a/Classes/HistoryListView.h +++ b/Classes/HistoryListView.h @@ -34,7 +34,6 @@ - (IBAction)onAllClick:(id)event; - (IBAction)onMissedClick:(id)event; - (IBAction)onDeleteClick:(id)event; -- (IBAction)onEditClick:(id)sender; -- (IBAction)onCancelClick:(id)sender; +- (IBAction)onEditionChangeClick:(id)sender; @end diff --git a/Classes/HistoryListView.m b/Classes/HistoryListView.m index aaac0d49e..9ed0343d4 100644 --- a/Classes/HistoryListView.m +++ b/Classes/HistoryListView.m @@ -59,7 +59,7 @@ static UICompositeViewDescription *compositeDescription = nil; [_tableController setEditing:FALSE animated:FALSE]; } [self changeView:History_All]; - [self updateTopBar]; + [self onEditionChangeClick:nil]; // Reset missed call linphone_core_reset_missed_calls_count([LinphoneManager getLc]); @@ -95,31 +95,23 @@ static UICompositeViewDescription *compositeDescription = nil; [self changeView:History_Missed]; } -- (void)updateTopBar { - _allButton.hidden = _missedButton.hidden = self.tableController.isEditing; -} - - (IBAction)onDeleteClick:(id)event { NSString *msg = [NSString stringWithFormat:NSLocalizedString(@"Are you sure that you want to delete %d history?", nil), _tableController.selectedItems.count]; [UIConfirmationDialog ShowWithMessage:msg onCancelClick:^() { - [self updateTopBar]; + [self onEditionChangeClick:nil]; } onConfirmationClick:^() { [_tableController removeSelection]; [_tableController loadData]; - [self updateTopBar]; + [self onEditionChangeClick:nil]; }]; } -- (IBAction)onEditClick:(id)sender { - [self updateTopBar]; -} - -- (IBAction)onCancelClick:(id)sender { - [self updateTopBar]; +- (IBAction)onEditionChangeClick:(id)sender { + _allButton.hidden = _missedButton.hidden = self.tableController.isEditing; } @end diff --git a/Classes/LinphoneUI/UICheckBoxTVTableViewController.m b/Classes/LinphoneUI/UICheckBoxTVTableViewController.m index 324a3587d..54f206923 100644 --- a/Classes/LinphoneUI/UICheckBoxTVTableViewController.m +++ b/Classes/LinphoneUI/UICheckBoxTVTableViewController.m @@ -47,6 +47,7 @@ cell.accessoryType = (cell.accessoryType == UITableViewCellAccessoryCheckmark) ? UITableViewCellAccessoryNone : UITableViewCellAccessoryCheckmark; [self accessoryForCell:cell atPath:indexPath]; + _toggleSelectionButton.selected = (_selectedItems.count == 0); } - (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView @@ -82,7 +83,6 @@ cell.accessoryType = UITableViewCellAccessoryNone; } _deleteButton.enabled = (_selectedItems.count != 0); - _editButton.enabled = [self tableView:self.tableView numberOfRowsInSection:0] != 0; } - (void)setEditing:(BOOL)editing animated:(BOOL)animated { @@ -90,6 +90,7 @@ _editButton.hidden = editing; _deleteButton.hidden = _cancelButton.hidden = _toggleSelectionButton.hidden = !editing; + _toggleSelectionButton.selected = NO; // when switching editing mode, we must reload all cells to remove/add checkboxes [self loadData]; @@ -98,6 +99,9 @@ - (void)loadData { [_selectedItems removeAllObjects]; [self.tableView reloadData]; + + _editButton.enabled = ([self numberOfSectionsInTableView:self.tableView] > 0 && + [self tableView:self.tableView numberOfRowsInSection:0] != 0); } - (void)removeSelection { @@ -116,12 +120,13 @@ - (void)onSelectionToggle:(id)sender { [_selectedItems removeAllObjects]; UIButton *button = (UIButton *)sender; + button.selected = !button.selected; // TODO: why do we need that? for (int i = 0; i < [self numberOfSectionsInTableView:self.tableView]; i++) { for (int j = 0; j < [self tableView:self.tableView numberOfRowsInSection:i]; j++) { NSIndexPath *idx = [NSIndexPath indexPathForRow:j inSection:i]; - UITableViewCell *cell = [self tableView:self.tableView cellForRowAtIndexPath:idx]; - cell.accessoryType = (button.state == UIControlStateSelected) ? UITableViewRowAnimationNone - : UITableViewCellAccessoryCheckmark; + + UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:idx]; + cell.accessoryType = button.selected ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone; [self accessoryForCell:cell atPath:idx]; } }