123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- //
- // FLEXGlobalsSection.m
- // FLEX
- //
- // Created by Tanner Bennett on 7/11/19.
- // Copyright © 2020 FLEX Team. All rights reserved.
- //
- #import "FLEXGlobalsSection.h"
- #import "NSArray+FLEX.h"
- #import "UIFont+FLEX.h"
- @interface FLEXGlobalsSection ()
- /// Filtered rows
- @property (nonatomic) NSArray<FLEXGlobalsEntry *> *rows;
- /// Unfiltered rows
- @property (nonatomic) NSArray<FLEXGlobalsEntry *> *allRows;
- @end
- @implementation FLEXGlobalsSection
- #pragma mark - Initialization
- + (instancetype)title:(NSString *)title rows:(NSArray<FLEXGlobalsEntry *> *)rows {
- FLEXGlobalsSection *s = [self new];
- s->_title = title;
- s.allRows = rows;
- return s;
- }
- - (void)setAllRows:(NSArray<FLEXGlobalsEntry *> *)allRows {
- _allRows = allRows.copy;
- [self reloadData];
- }
- #pragma mark - Overrides
- - (NSInteger)numberOfRows {
- return self.rows.count;
- }
- - (void)setFilterText:(NSString *)filterText {
- super.filterText = filterText;
- [self reloadData];
- }
- - (void)reloadData {
- NSString *filterText = self.filterText;
-
- if (filterText.length) {
- self.rows = [self.allRows flex_filtered:^BOOL(FLEXGlobalsEntry *entry, NSUInteger idx) {
- return [entry.entryNameFuture() localizedCaseInsensitiveContainsString:filterText];
- }];
- } else {
- self.rows = self.allRows;
- }
- }
- - (BOOL)canSelectRow:(NSInteger)row {
- return YES;
- }
- - (void (^)(__kindof UIViewController *))didSelectRowAction:(NSInteger)row {
- return (id)self.rows[row].rowAction;
- }
- - (UIViewController *)viewControllerToPushForRow:(NSInteger)row {
- return self.rows[row].viewControllerFuture ? self.rows[row].viewControllerFuture() : nil;
- }
- - (void)configureCell:(__kindof UITableViewCell *)cell forRow:(NSInteger)row {
- cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
- cell.textLabel.font = UIFont.flex_defaultTableCellFont;
- cell.textLabel.text = self.rows[row].entryNameFuture();
- }
- @end
- @implementation FLEXGlobalsSection (Subscripting)
- - (id)objectAtIndexedSubscript:(NSUInteger)idx {
- return self.rows[idx];
- }
- @end
|