// // SettingsUserReportAlertsViewController.m // Earthquake Network // // Refactored by Andrea Busi 25/08/2020. // Copyright © 2020 Earthquake Network. All rights reserved. // #import "SettingsUserReportAlertsViewController.h" #import "EQNNotificheSegnalazioniUtente.h" #import "EQNUtility.h" @interface SettingsUserReportAlertsViewController () @property (nonatomic, strong) NSArray *settings; @property (nonatomic, assign) BOOL notificationsEnabled; @property (nonatomic, strong) EQNGenericValue *currentRadius; @end @implementation SettingsUserReportAlertsViewController #pragma mark - View Lifecycle - (void)viewDidLoad { [super viewDidLoad]; [self setupUI]; self.settings = @[ [[SettingItem alloc] initWithType:SettingTypeEnable title:NSLocalizedString(@"Ricevi le notifiche dei sismi segnalati manualmente dagli utenti", @"")], [[SettingItem alloc] initWithType:SettingTypeSlider title:NSLocalizedString(@"Raggio dalla tua posizione", @"")] ]; [self updateUI]; } #pragma mark - Private - (void)setupUI { self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever; self.tableView.estimatedRowHeight = 100.0; self.tableView.rowHeight = UITableViewAutomaticDimension; [self.tableView registerClass:[SettingSectionHeaderView class] forHeaderFooterViewReuseIdentifier:SettingSectionHeaderView.Identifier]; [self.tableView registerClass:[SettingEnableTableViewCell class] forCellReuseIdentifier:SettingEnableTableViewCell.Identifier]; [self.tableView registerClass:[SettingSliderTableViewCell class] forCellReuseIdentifier:SettingSliderTableViewCell.Identifier]; } - (void)updateUI { self.notificationsEnabled = [EQNNotificheSegnalazioniUtente sharedInstance].isAbilitato; EQNGenericValue *distanzaPosizione = [EQNData raggioSismaFor:[EQNNotificheSegnalazioniUtente sharedInstance].distanzaPosizione]; self.currentRadius = distanzaPosizione; [[EQNNotificheSegnalazioniUtente sharedInstance] saveUserInfo]; [self.tableView reloadData]; } - (void)updateRadius:(EQNGenericValue *)radius { self.currentRadius = radius; [EQNNotificheSegnalazioniUtente sharedInstance].distanzaPosizione = radius.value; [[EQNNotificheSegnalazioniUtente sharedInstance] saveUserInfo]; [self.tableView reloadData]; } #pragma mark - Table view data source - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { SettingSectionHeaderView *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:SettingSectionHeaderView.Identifier]; headerView.titleLabel.text = NSLocalizedString(@"Notifiche segnalazioni utente", @"titolo impostazioni notifiche"); return headerView; } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return SettingSectionHeaderView.Height; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.settings.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { SettingItem *setting = self.settings[indexPath.row]; if (setting.type == SettingTypeEnable) { SettingEnableTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SettingEnableTableViewCell.Identifier forIndexPath:indexPath]; cell.toggleSwitch.on = self.notificationsEnabled; cell.titleLabel.text = setting.displayTitle; cell.descriptionLabel.text = setting.subtitle; cell.valueChanged = ^(BOOL enabled) { self.notificationsEnabled = enabled; [EQNNotificheSegnalazioniUtente sharedInstance].isAbilitato = self.notificationsEnabled; [[EQNNotificheSegnalazioniUtente sharedInstance] saveUserInfo]; [self.tableView reloadData]; }; return cell; } else if (setting.type == SettingTypeSlider) { SettingSliderTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SettingSliderTableViewCell.Identifier forIndexPath:indexPath]; cell.isDisabled = !self.notificationsEnabled; cell.titleLabel.text = setting.displayTitle; [cell configureSliderWith:[EQNData raggioSismi] current:self.currentRadius]; cell.valueChanged = ^(EQNGenericValue *item) { [self updateRadius:item]; }; return cell; } return nil; } @end