// // TFNovelBookMarkViewController.m // TFReader // // Created by 谢腾飞 on 2020/12/15. // Copyright © 2020 xtfei_2011@126.com. All rights reserved. // #import "TFNovelBookMarkViewController.h" #import "TFBookMarkModel.h" #import "NSObject+Observer.h" #import "TFReadRecordManager.h" #import "TFReaderBookManager.h" #import "TFReaderSettingHelper.h" #import "NSString+TFExtension.h" #import "TYTextContainer.h" #import "NSAttributedString+TReaderPage.h" #import "TFReadNovelViewController.h" #import "TFNovelBookMarkViewCell.h" @interface TFNovelBookMarkViewController () @end @implementation TFNovelBookMarkViewController - (void)viewDidLoad { [super viewDidLoad]; [self createSubviews]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; NSMutableArray *t_arr = [[TFReadRecordManager bookMark:[TFUtilsHelper formatStringWithInteger:self.bookModel.production_id]] mutableCopy]; t_arr = [[t_arr sortedArrayUsingComparator:^NSComparisonResult(TFBookMarkModel * _Nonnull obj1, TFBookMarkModel * _Nonnull obj2) { if ([obj1.timestamp integerValue] < [obj2.timestamp integerValue]) { return NSOrderedDescending; } return NSOrderedAscending; }] mutableCopy]; NSSortDescriptor *sort1 = [NSSortDescriptor sortDescriptorWithKey:KEY_PATH(t_arr.firstObject, chapterSort) ascending:YES]; t_arr = [[t_arr sortedArrayUsingDescriptors:@[sort1]] mutableCopy]; self.dataSourceArray = t_arr; [self.mainTableView reloadData]; [self.mainTableView xtfei_endLoading]; } - (void)createSubviews { [self setBasicLayout]; [self.view addSubview:self.mainTableView]; self.mainTableView.delegate = self; self.mainTableView.dataSource = self; self.mainTableView.contentInset = UIEdgeInsetsMake(0, 0, PUB_TABBAR_OFFSET, 0); [self.mainTableView registerClass:[TFNovelBookMarkViewCell class] forCellReuseIdentifier:@"Identifier"]; [self.mainTableView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.view); }]; [self setEmptyOnView:self.mainTableView title:TFLocalizedString(@"暂无书签记录") buttonTitle:@"" tapBlock:^{}]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataSourceArray.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { TFNovelBookMarkViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Identifier" forIndexPath:indexPath]; [cell setBookMarkModel:self.dataSourceArray[indexPath.row]]; return cell; } - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleDelete; } - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath { return TFLocalizedString(@"删除"); } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { TFBookMarkModel *t_model = self.dataSourceArray[indexPath.row]; [self.dataSourceArray removeObjectAtIndex:indexPath.row]; if (@available(iOS 11.0, *)) { [tableView performBatchUpdates:^{ [tableView deleteRowAtIndexPath:indexPath withRowAnimation:UITableViewRowAnimationLeft]; } completion:^(BOOL finished) { [TFReadRecordManager removeBookMark:t_model]; [tableView xtfei_endLoading]; }]; } else { [CATransaction begin]; [CATransaction setCompletionBlock:^{ [TFReadRecordManager removeBookMark:t_model]; [tableView xtfei_endLoading]; }]; [tableView beginUpdates]; [tableView deleteRowAtIndexPath:indexPath withRowAnimation:UITableViewRowAnimationLeft]; [tableView endUpdates]; [CATransaction commit]; } } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { TFBookMarkModel *t_model = self.dataSourceArray[indexPath.row]; if (self.isReader) { [[NSNotificationCenter defaultCenter] postNotificationName:NSNOtification_Book_Mark object:@{[NSString stringWithFormat:@"%zd", t_model.chapterSort] : [NSString stringWithFormat:@"%zd", t_model.specificIndex]}]; [self.navigationController popViewControllerAnimated:YES]; } else { TFReadNovelViewController *vc = [[TFReadNovelViewController alloc] initWithSpecificIndex:t_model.specificIndex chapterSort:t_model.chapterSort]; vc.bookModel = self.bookModel; vc.book_id = self.bookModel.production_id; [self.navigationController pushViewController:vc animated:YES]; } } //section头部间距 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return kHalfMargin; } //section头部视图 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, kHalfMargin)]; view.backgroundColor = [UIColor clearColor]; return view; } - (void)setBasicLayout { [self hiddenNavigationBar:YES]; } @end