diff --git a/Classes/Base.lproj/ChatConversationView.xib b/Classes/Base.lproj/ChatConversationView.xib index 194d0a235..698035386 100644 --- a/Classes/Base.lproj/ChatConversationView.xib +++ b/Classes/Base.lproj/ChatConversationView.xib @@ -181,6 +181,14 @@ + diff --git a/Classes/Base.lproj/ChatsListView.xib b/Classes/Base.lproj/ChatsListView.xib index 23b57e7fb..36c8aa701 100644 --- a/Classes/Base.lproj/ChatsListView.xib +++ b/Classes/Base.lproj/ChatsListView.xib @@ -128,6 +128,14 @@ + @@ -141,6 +149,7 @@ + diff --git a/Classes/Base.lproj/ContactsListView.xib b/Classes/Base.lproj/ContactsListView.xib index 3b3fcc674..610a0c310 100644 --- a/Classes/Base.lproj/ContactsListView.xib +++ b/Classes/Base.lproj/ContactsListView.xib @@ -1,5 +1,5 @@ - + @@ -179,6 +179,14 @@ + @@ -191,6 +199,7 @@ + @@ -200,9 +209,9 @@ - - - + + + diff --git a/Classes/Base.lproj/HistoryListView.xib b/Classes/Base.lproj/HistoryListView.xib index ede59c685..c7bcaee90 100644 --- a/Classes/Base.lproj/HistoryListView.xib +++ b/Classes/Base.lproj/HistoryListView.xib @@ -1,5 +1,5 @@ - + @@ -144,6 +144,14 @@ + @@ -158,6 +166,7 @@ + @@ -167,9 +176,9 @@ - - - + + + diff --git a/Classes/ChatConversationTableView.h b/Classes/ChatConversationTableView.h index 59ad225bf..dd8c95d45 100644 --- a/Classes/ChatConversationTableView.h +++ b/Classes/ChatConversationTableView.h @@ -20,7 +20,7 @@ #import #include "linphone/linphonecore.h" -#import "UICheckBoxTVTableViewController.h" +#import "UICheckBoxTableViewController.h" @protocol ChatConversationDelegate @@ -29,7 +29,7 @@ @end -@interface ChatConversationTableView : UICheckBoxTVTableViewController { +@interface ChatConversationTableView : UICheckBoxTableViewController { @private LinphoneChatRoom *chatRoom; MSList *messageList; diff --git a/Classes/ChatsListTableView.h b/Classes/ChatsListTableView.h index 35fb52d1d..5641b117f 100644 --- a/Classes/ChatsListTableView.h +++ b/Classes/ChatsListTableView.h @@ -19,9 +19,9 @@ #import #include "linphone/linphonecore.h" -#include "UICheckBoxTVTableViewController.h" +#include "UICheckBoxTableViewController.h" -@interface ChatsListTableView : UICheckBoxTVTableViewController +@interface ChatsListTableView : UICheckBoxTableViewController - (void)loadData; @end diff --git a/Classes/ContactsListTableView.h b/Classes/ContactsListTableView.h index 5f03946bc..db11afe3a 100644 --- a/Classes/ContactsListTableView.h +++ b/Classes/ContactsListTableView.h @@ -20,11 +20,11 @@ #import #import -#import "UICheckBoxTVTableViewController.h" +#import "UICheckBoxTableViewController.h" #import "OrderedDictionary.h" -@interface ContactsListTableView : UICheckBoxTVTableViewController { +@interface ContactsListTableView : UICheckBoxTableViewController { @private OrderedDictionary *addressBookMap; NSMutableDictionary *avatarMap; diff --git a/Classes/HistoryListTableView.h b/Classes/HistoryListTableView.h index dfae042e0..bc06538ec 100644 --- a/Classes/HistoryListTableView.h +++ b/Classes/HistoryListTableView.h @@ -19,9 +19,9 @@ #import -#import "UICheckBoxTVTableViewController.h" +#import "UICheckBoxTableViewController.h" -@interface HistoryListTableView : UICheckBoxTVTableViewController { +@interface HistoryListTableView : UICheckBoxTableViewController { } @property(nonatomic, assign) BOOL missedFilter; diff --git a/Classes/LinphoneUI/UICheckBoxTVTableViewController.h b/Classes/LinphoneUI/UICheckBoxTableViewController.h similarity index 85% rename from Classes/LinphoneUI/UICheckBoxTVTableViewController.h rename to Classes/LinphoneUI/UICheckBoxTableViewController.h index 6e91f04ac..bf273fc0e 100644 --- a/Classes/LinphoneUI/UICheckBoxTVTableViewController.h +++ b/Classes/LinphoneUI/UICheckBoxTableViewController.h @@ -10,13 +10,14 @@ #import -@interface UICheckBoxTVTableViewController : UITableViewController +@interface UICheckBoxTableViewController : UITableViewController @property(nonatomic, readonly) NSMutableArray *selectedItems; @property(weak, nonatomic) IBOutlet UIButton *deleteButton; @property(weak, nonatomic) IBOutlet UIButton *editButton; @property(weak, nonatomic) IBOutlet UIButton *cancelButton; @property(weak, nonatomic) IBOutlet UIButton *toggleSelectionButton; +@property(weak, nonatomic) IBOutlet UIView *emptyView; - (void)loadData; - (void)accessoryForCell:(UITableViewCell *)cell atPath:(NSIndexPath *)indexPath; diff --git a/Classes/LinphoneUI/UICheckBoxTVTableViewController.m b/Classes/LinphoneUI/UICheckBoxTableViewController.m similarity index 80% rename from Classes/LinphoneUI/UICheckBoxTVTableViewController.m rename to Classes/LinphoneUI/UICheckBoxTableViewController.m index ebf9df871..02f93a357 100644 --- a/Classes/LinphoneUI/UICheckBoxTVTableViewController.m +++ b/Classes/LinphoneUI/UICheckBoxTableViewController.m @@ -17,10 +17,10 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import "UICheckBoxTVTableViewController.h" +#import "UICheckBoxTableViewController.h" #import "Utils.h" -@implementation UICheckBoxTVTableViewController +@implementation UICheckBoxTableViewController - (instancetype)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; @@ -38,15 +38,17 @@ - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - _editButton.enabled = (([self numberOfSectionsInTableView:self.tableView] > 0) && - ([self tableView:self.tableView numberOfRowsInSection:0] != 0)); + _emptyView.hidden = _editButton.enabled = ([self totalNumberOfItems] != 0); } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; [tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:NO]; - cell.accessoryType = (cell.accessoryType == UITableViewCellAccessoryCheckmark) ? UITableViewCellAccessoryNone - : UITableViewCellAccessoryCheckmark; + if ([_selectedItems containsObject:indexPath]) { + [_selectedItems removeObject:indexPath]; + } else { + [_selectedItems addObject:indexPath]; + } [self accessoryForCell:cell atPath:indexPath]; _toggleSelectionButton.selected = (_selectedItems.count == [self totalNumberOfItems]); } @@ -57,11 +59,9 @@ cell.selectionStyle = UITableViewCellSelectionStyleNone; if ([self isEditing]) { UIImage *image = nil; - if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { - [_selectedItems addObject:indexPath]; + if ([_selectedItems containsObject:indexPath]) { image = [UIImage imageNamed:@"checkbox_checked.png"]; - } else if (cell.accessoryType == UITableViewCellAccessoryNone) { - [_selectedItems removeObject:indexPath]; + } else { image = [UIImage imageNamed:@"checkbox_unchecked.png"]; } UIButton *checkBoxButton = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -93,8 +93,7 @@ [_selectedItems removeAllObjects]; [self.tableView reloadData]; - _editButton.enabled = ([self numberOfSectionsInTableView:self.tableView] > 0 && - [self tableView:self.tableView numberOfRowsInSection:0] != 0); + _editButton.enabled = _emptyView.hidden = ([self totalNumberOfItems] > 0); } - (void)removeSelection { @@ -118,12 +117,12 @@ _toggleSelectionButton.selected = !_toggleSelectionButton.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 cellForRowAtIndexPath:idx]; - cell.accessoryType = - _toggleSelectionButton.selected ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone; - [self accessoryForCell:cell atPath:idx]; + NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i]; + UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; + if (_toggleSelectionButton.selected) { + [_selectedItems addObject:indexPath]; + } + [self accessoryForCell:cell atPath:indexPath]; } } } diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 8b24ddf80..1c01f5c05 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -89,7 +89,7 @@ 6334DDFB1BBAC99400631900 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */; }; 6334DDFC1BBAC99B00631900 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 152F22351B15E889008C0621 /* libxml2.dylib */; }; 6334DDFD1BBAC9A200631900 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F0B026F21AA710AF00FF49F7 /* libiconv.dylib */; }; - 6334DE001BBAD5AA00631900 /* UICheckBoxTVTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6334DDFF1BBAD5AA00631900 /* UICheckBoxTVTableViewController.m */; }; + 6334DE001BBAD5AA00631900 /* UICheckBoxTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6334DDFF1BBAD5AA00631900 /* UICheckBoxTableViewController.m */; }; 633671611BCBAAD200BFCBDE /* ChatConversationCreateView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6336715F1BCBAAD200BFCBDE /* ChatConversationCreateView.m */; }; 633756391B67BAF400E21BAD /* SideMenuTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 633756381B67BAF400E21BAD /* SideMenuTableView.m */; }; 633756451B67D2B200E21BAD /* SideMenuView.m in Sources */ = {isa = PBXBuildFile; fileRef = 633756431B67D2B100E21BAD /* SideMenuView.m */; }; @@ -741,8 +741,8 @@ 6313482F1B6F7B6600C6BDCB /* UIRoundBorderedButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIRoundBorderedButton.m; sourceTree = ""; }; 631348311B6FA53300C6BDCB /* rootca.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rootca.pem; path = "liblinphone-sdk/apple-darwin/share/linphone/rootca.pem"; sourceTree = SOURCE_ROOT; }; 63158FAC1B468E0E00969917 /* ImageOptim.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = ImageOptim.sh; path = Tools/ImageOptim.sh; sourceTree = ""; }; - 6334DDFE1BBAD5AA00631900 /* UICheckBoxTVTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICheckBoxTVTableViewController.h; sourceTree = ""; }; - 6334DDFF1BBAD5AA00631900 /* UICheckBoxTVTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICheckBoxTVTableViewController.m; sourceTree = ""; }; + 6334DDFE1BBAD5AA00631900 /* UICheckBoxTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICheckBoxTableViewController.h; sourceTree = ""; }; + 6334DDFF1BBAD5AA00631900 /* UICheckBoxTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICheckBoxTableViewController.m; sourceTree = ""; }; 6336715E1BCBAAD200BFCBDE /* ChatConversationCreateView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatConversationCreateView.h; sourceTree = ""; }; 6336715F1BCBAAD200BFCBDE /* ChatConversationCreateView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatConversationCreateView.m; sourceTree = ""; }; 633756371B67BAF400E21BAD /* SideMenuTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SideMenuTableView.h; sourceTree = ""; }; @@ -1567,8 +1567,8 @@ 63B8D69F1BCBF43100C12B09 /* UIChatCreateCell.h */, 63B8D6A01BCBF43100C12B09 /* UIChatCreateCell.m */, 63B8D6A11BCBF43100C12B09 /* UIChatCreateCell.xib */, - 6334DDFE1BBAD5AA00631900 /* UICheckBoxTVTableViewController.h */, - 6334DDFF1BBAD5AA00631900 /* UICheckBoxTVTableViewController.m */, + 6334DDFE1BBAD5AA00631900 /* UICheckBoxTableViewController.h */, + 6334DDFF1BBAD5AA00631900 /* UICheckBoxTableViewController.m */, D31B4B1E159876C0002E6C72 /* UICompositeView.h */, D31B4B1F159876C0002E6C72 /* UICompositeView.m */, 639CEB051A1DF4EB004DE38F /* UICompositeView.xib */, @@ -2881,7 +2881,7 @@ D3807FC515C28940005BE9BC /* DCRoundSwitchToggleLayer.m in Sources */, D3807FE815C2894A005BE9BC /* IASKAppSettingsViewController.m in Sources */, D3807FEA15C2894A005BE9BC /* IASKAppSettingsWebViewController.m in Sources */, - 6334DE001BBAD5AA00631900 /* UICheckBoxTVTableViewController.m in Sources */, + 6334DE001BBAD5AA00631900 /* UICheckBoxTableViewController.m in Sources */, D3807FEC15C2894A005BE9BC /* IASKSpecifierValuesViewController.m in Sources */, D3807FEE15C2894A005BE9BC /* IASKSettingsReader.m in Sources */, D3807FF015C2894A005BE9BC /* IASKSettingsStore.m in Sources */,