120 lines
4.3 KiB
Objective-C
120 lines
4.3 KiB
Objective-C
//
|
|
// SettingsUserReportAlertsViewController.m
|
|
// Earthquake Network
|
|
//
|
|
// Refactored by Andrea Busi 25/08/2020.
|
|
// Copyright © 2020 Earthquake Network. All rights reserved.
|
|
//
|
|
|
|
#import "SettingsUserReportAlertsViewController.h"
|
|
#import "EQNNotificheSegnalazioniUtente.h"
|
|
|
|
@interface SettingsUserReportAlertsViewController ()
|
|
|
|
@property (nonatomic, strong) NSArray<SettingItem *> *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(@"options_notification_enable_manual", @"")],
|
|
[[SettingItem alloc] initWithType:SettingTypeSlider title:NSLocalizedString(@"options_radius", @"")]
|
|
];
|
|
|
|
[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(@"options_notification_manual", @"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
|