HWAddBookmarkViewController.m 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. //
  2. // HWAddBookmarkViewController.m
  3. // Private-X
  4. //
  5. // Created by 余衡武 on 2022/3/23.
  6. //
  7. #import "HWAddBookmarkViewController.h"
  8. #import "HWFolderListCell.h"
  9. @interface HWAddBookmarkViewController () <UITableViewDelegate,UITableViewDataSource>
  10. @property (weak, nonatomic) IBOutlet UIView *bgView;
  11. @property (weak, nonatomic) IBOutlet UITextField *titleTextField;
  12. @property (weak, nonatomic) IBOutlet UITextField *urlTextField;
  13. @property (weak, nonatomic) IBOutlet UITableView *tableView;
  14. @property (strong, nonatomic) NSMutableArray *dataSource;
  15. @end
  16. @implementation HWAddBookmarkViewController
  17. #pragma mark - 生命周期
  18. - (void)viewDidLoad {
  19. [super viewDidLoad];
  20. [self drawView];
  21. [self getData];
  22. }
  23. #pragma mark - UI布局
  24. - (void)drawView {
  25. self.bgView.layer.cornerRadius = 10;
  26. self.bgView.layer.masksToBounds = YES;
  27. self.titleTextField.clearButtonMode = UITextFieldViewModeAlways;
  28. self.urlTextField.clearButtonMode = UITextFieldViewModeAlways;
  29. self.titleTextField.text = self.model.name;
  30. self.urlTextField.text = self.model.webUrl;
  31. self.tableView.delegate = self;
  32. self.tableView.dataSource = self;
  33. [self.tableView registerNib:[UINib nibWithNibName:@"HWFolderListCell" bundle:nil] forCellReuseIdentifier:@"HWFolderListCell"];
  34. NSAttributedString *attrString1 = [[NSAttributedString alloc] initWithString:@"请输入书签标题" attributes:
  35. @{NSForegroundColorAttributeName:[UIColor colorWithHexString:@"FFFFFF" alpha:0.2],
  36. NSFontAttributeName:[UIFont systemFontOfSize:14.f]}];
  37. self.titleTextField.attributedPlaceholder = attrString1;
  38. NSAttributedString *attrString2 = [[NSAttributedString alloc] initWithString:NSLocalizedString(@"input_mark_url",nil) attributes:
  39. @{NSForegroundColorAttributeName:[UIColor colorWithHexString:@"FFFFFF" alpha:0.2],
  40. NSFontAttributeName:[UIFont systemFontOfSize:14.f]}];
  41. self.urlTextField.attributedPlaceholder = attrString2;
  42. }
  43. #pragma mark - 获取数据
  44. - (void)getData {
  45. [self.dataSource removeAllObjects];
  46. NSArray *dataArray = [HWFolderModel bg_findAll:DB_BookMark_TableName];
  47. if (dataArray.count == 0) {
  48. HWFolderModel *model = [[HWFolderModel alloc] init];
  49. model.ID = 0;
  50. model.name = @"Personal collection";
  51. model.bookmarkArray = [NSMutableArray array];
  52. model.isSelected = YES;
  53. [self.dataSource addObject:model];
  54. // 更新数据库
  55. model.bg_tableName = DB_BookMark_TableName;
  56. [model bg_saveOrUpdateAsync:^(BOOL isSuccess) {
  57. HLog(@"HWFolderModel 更新: %@", isSuccess ? @"成功":@"失败");
  58. }];
  59. }else {
  60. for (HWFolderModel *model in dataArray) {
  61. if ([model.name isEqualToString:@"Personal collection"]) {
  62. model.isSelected = YES;
  63. }else {
  64. model.isSelected = NO;
  65. }
  66. [self.dataSource addObject:model];
  67. }
  68. }
  69. [self.tableView reloadData];
  70. }
  71. #pragma mark - 列表委托
  72. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  73. return self.dataSource.count;
  74. }
  75. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  76. HWFolderListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"HWFolderListCell" forIndexPath:indexPath];
  77. HWFolderModel *model = self.dataSource[indexPath.row];
  78. cell.model = model;
  79. return cell;
  80. }
  81. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  82. return 50;
  83. }
  84. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  85. HWFolderModel *model = self.dataSource[indexPath.row];
  86. if (model.isSelected) {
  87. return;
  88. }
  89. for (HWFolderModel *itemModel in self.dataSource) {
  90. if ([itemModel.name isEqualToString:model.name]) {
  91. itemModel.isSelected = YES;
  92. }else {
  93. itemModel.isSelected = NO;
  94. }
  95. }
  96. [self.tableView reloadData];
  97. }
  98. // UITableView分组切圆角方法
  99. - (void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath {
  100. ///每个分组的行数
  101. NSInteger numberOfRows = [tableView numberOfRowsInSection:indexPath.section];
  102. ///圆角大小
  103. CGSize cornerRadii = CGSizeMake(10, 10);
  104. ///切圆角位置
  105. UIRectCorner corners = UIRectCornerAllCorners;
  106. if (indexPath.row == 0 && numberOfRows == 1) {
  107. ///一个为一组时,四个角都为圆角
  108. corners = UIRectCornerAllCorners;
  109. }else if (indexPath.row == 0) {
  110. ///分组第一行,左上、右上角为圆角
  111. corners = UIRectCornerTopLeft | UIRectCornerTopRight;
  112. }else if (indexPath.row + 1 == numberOfRows) {
  113. ///分组最后一行,左下、右下角为圆角
  114. corners = UIRectCornerBottomLeft | UIRectCornerBottomRight;
  115. }else {
  116. ///中间的都为矩形
  117. cornerRadii = CGSizeZero;
  118. }
  119. CGRect cellRect = cell.contentView.bounds;
  120. UIBezierPath*maskPath = [UIBezierPath bezierPathWithRoundedRect:cellRect byRoundingCorners:corners cornerRadii:cornerRadii];
  121. CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
  122. maskLayer.frame = cellRect;
  123. maskLayer.path = maskPath.CGPath;
  124. cell.contentView.layer.mask = maskLayer;
  125. }
  126. #pragma mark - 点击事件
  127. - (IBAction)cancelBtnClick:(UIButton *)sender {
  128. HLog(@"取消");
  129. [self dismissViewControllerAnimated:YES completion:^{
  130. }];
  131. }
  132. - (IBAction)sureBtnClick:(UIButton *)sender {
  133. HLog(@"完成");
  134. // 1、书签保存的文件夹
  135. HWFolderModel *selectFolderModel;
  136. for (HWFolderModel *model in self.dataSource) {
  137. if (model.isSelected) {
  138. selectFolderModel = model;
  139. break;
  140. }
  141. }
  142. // 2、保存的书签
  143. NSInteger ID = 0;
  144. for (HWBookmarkModel *model in selectFolderModel.bookmarkArray) { // 找出ID最大的model
  145. if (model.ID > ID) {
  146. ID = model.ID;
  147. }
  148. }
  149. HWBookmarkModel *bookmarkModel = [[HWBookmarkModel alloc] init];
  150. bookmarkModel.ID = ID + 1;
  151. bookmarkModel.folderID = selectFolderModel.ID;
  152. bookmarkModel.name = self.model.name;
  153. bookmarkModel.webUrl = self.model.webUrl;
  154. // 3、书签写入文件夹
  155. [selectFolderModel.bookmarkArray addObject:bookmarkModel];
  156. // 4、更新数据库缓存
  157. selectFolderModel.bg_tableName = DB_BookMark_TableName;
  158. [selectFolderModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
  159. HLog(@"HWFolderModel 更新: %@", isSuccess ? @"成功":@"失败");
  160. }];
  161. // 5、提示用户
  162. [self dismissViewControllerAnimated:YES completion:^{
  163. [[iToast makeText:NSLocalizedString(@"other_add_bookmark_success",nil)] show];
  164. }];
  165. }
  166. #pragma mark - 懒加载
  167. - (NSMutableArray *)dataSource {
  168. if (!_dataSource) {
  169. _dataSource = [NSMutableArray array];
  170. }
  171. return _dataSource;
  172. }
  173. @end