diff --git a/Sources/Earthquake Network.xcodeproj/project.pbxproj b/Sources/Earthquake Network.xcodeproj/project.pbxproj index b411aa9..bde0dc3 100644 --- a/Sources/Earthquake Network.xcodeproj/project.pbxproj +++ b/Sources/Earthquake Network.xcodeproj/project.pbxproj @@ -427,8 +427,6 @@ 8C602245218D9DB200C799C2 /* PastquakesDettagliMappa.m */, 8C2B250F21938BFD00E0E25E /* SegnalazioniUtenteDettagliMappa.h */, 8C2B251021938BFD00E0E25E /* SegnalazioniUtenteDettagliMappa.m */, - 8C2B25122193927E00E0E25E /* ReteSismiDettagliMappa.h */, - 8C2B25132193927E00E0E25E /* ReteSismiDettagliMappa.m */, ); path = "Dettagli mappa"; sourceTree = ""; @@ -599,6 +597,8 @@ DCB45BC7250E86E100DB2D0C /* SeismicSettingsViewController.swift */, DC65B390250F243E00251693 /* SeismicSettingsNetworksViewController.swift */, DC2814372519C56100C1AFF7 /* SeismicNetworksViewController.swift */, + 8C2B25122193927E00E0E25E /* ReteSismiDettagliMappa.h */, + 8C2B25132193927E00E0E25E /* ReteSismiDettagliMappa.m */, ); path = "Seismic Networks"; sourceTree = ""; diff --git a/Sources/Earthquake Network/ViewController/Dettagli mappa/ReteSismiDettagliMappa.h b/Sources/Earthquake Network/Controllers/Seismic Networks/ReteSismiDettagliMappa.h similarity index 54% rename from Sources/Earthquake Network/ViewController/Dettagli mappa/ReteSismiDettagliMappa.h rename to Sources/Earthquake Network/Controllers/Seismic Networks/ReteSismiDettagliMappa.h index 6bc08cd..7e5bef6 100644 --- a/Sources/Earthquake Network/ViewController/Dettagli mappa/ReteSismiDettagliMappa.h +++ b/Sources/Earthquake Network/Controllers/Seismic Networks/ReteSismiDettagliMappa.h @@ -2,8 +2,8 @@ // ReteSismiDettagliMappa.h // Earthquake Network // -// Created by Luca Beretta on 07/11/18. -// Copyright © 2018 Luca Beretta. All rights reserved. +// Refactored by Andrea Busi on 26/09/2020. +// Copyright © 2020 Earthquake Network. All rights reserved. // #import "DettagliMappaViewController.h" @@ -11,6 +11,5 @@ @interface ReteSismiDettagliMappa : DettagliMappaViewController - -@property (nonatomic, strong) EQNSisma *sisma; +@property (nonatomic, strong, nullable) EQNSisma *sisma; @end diff --git a/Sources/Earthquake Network/ViewController/Dettagli mappa/ReteSismiDettagliMappa.m b/Sources/Earthquake Network/Controllers/Seismic Networks/ReteSismiDettagliMappa.m similarity index 61% rename from Sources/Earthquake Network/ViewController/Dettagli mappa/ReteSismiDettagliMappa.m rename to Sources/Earthquake Network/Controllers/Seismic Networks/ReteSismiDettagliMappa.m index 83b2ee8..7a2b72e 100644 --- a/Sources/Earthquake Network/ViewController/Dettagli mappa/ReteSismiDettagliMappa.m +++ b/Sources/Earthquake Network/Controllers/Seismic Networks/ReteSismiDettagliMappa.m @@ -2,8 +2,8 @@ // ReteSismiDettagliMappa.m // Earthquake Network // -// Created by Luca Beretta on 07/11/18. -// Copyright © 2018 Luca Beretta. All rights reserved. +// Refactored by Andrea Busi on 26/09/2020. +// Copyright © 2020 Earthquake Network. All rights reserved. // #import "ReteSismiDettagliMappa.h" @@ -11,40 +11,37 @@ @interface ReteSismiDettagliMappa () @property(nonatomic, strong) GADBannerView *bannerView; - @end @implementation ReteSismiDettagliMappa -- (void)viewDidLoad { - - - self.mapView.delegate = self; +#pragma mark - View Lifecycle +- (void)viewDidLoad +{ [super viewDidLoad]; - // Do any additional setup after loading the view. - - - self.navigationController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back"] - style:UIBarButtonItemStyleDone - target:self - action:@selector(chiudi:)]; - + + [self setupUI]; for (EQNSisma *sismi in [EQNManager defaultManager].retiSismiche ) { [self creaMarcherWithSegnalazione:sismi]; - } - +} + +#pragma mark - Private + +- (void)setupUI +{ + self.mapView.delegate = self; self.bannerView = [EQNUtility ottieniBannerWithController:self position:YES]; + + UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back"] + style:UIBarButtonItemStyleDone + target:self + action:@selector(chiudi:)]; + self.navigationController.navigationItem.leftBarButtonItem = backButton; } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - - - (void)creaMarcherWithSegnalazione:(id)segnalazione { [super creaMarcherWithSegnalazione:segnalazione]; @@ -59,37 +56,21 @@ [self.mapView setRegion:region animated:YES]; } --(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation{ - - +#pragma mark - MKMapViewDelegate + +- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation +{ if ([annotation isKindOfClass:[SismaAnnotation class]]) { SismaAnnotation *anLocation = (SismaAnnotation *)annotation; MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:IDENTIFIER_ANNOTATION_SISMI]; - if (annotationView == nil) + if (annotationView == nil) { annotationView = anLocation.annotationView; - else + } else { annotationView.annotation = anLocation; - + } return annotationView; } - else - return nil; - - + return nil; } - // apriImpostazioni - - - -/* -#pragma mark - Navigation - -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. -} -*/ - @end diff --git a/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicNetworksViewController.swift b/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicNetworksViewController.swift index b2648e8..08034d5 100644 --- a/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicNetworksViewController.swift +++ b/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicNetworksViewController.swift @@ -11,9 +11,10 @@ import EventKitUI class SeismicNetworksViewController: EQNBaseViewController, UITableViewDelegate, UITableViewDataSource { - private static let SegueIdentifierFilters = "FiltriEntiSismici" - private static let SegueIdentifierSettings = "impostazioniEntiSismi" - private static let SegueIdentifierSeismicNetworks = "elencoRetiSismiche" + private static let SegueIdentifierMap = "ShowMapDetail" + private static let SegueIdentifierFilters = "ShowFilters" + private static let SegueIdentifierSettings = "ShowSettings" + private static let SegueIdentifierSeismicNetworks = "ShowSeismicNetworks" // MARK: - Internal @@ -49,7 +50,26 @@ class SeismicNetworksViewController: EQNBaseViewController, UITableViewDelegate, } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // todo + switch segue.identifier { + case Self.SegueIdentifierMap: + if let seismic = sender as? EQNSisma, let navController = segue.destination as? UINavigationController, let controller = navController.viewControllers.first as? ReteSismiDettagliMappa { + controller.sisma = seismic + } + case Self.SegueIdentifierFilters: + if let controller = segue.destination as? SeismicFiltersViewController { + controller.delegate = self + } + case Self.SegueIdentifierSettings: + if let controller = segue.destination as? SeismicSettingsViewController { + controller.delegate = self + } + case Self.SegueIdentifierSeismicNetworks: + if let navController = segue.destination as? UINavigationController, let controller = navController.viewControllers.first as? SeismicSettingsNetworksViewController { + controller.delegate = self + } + default: + break + } } // MARK: - Notification @@ -102,19 +122,31 @@ class SeismicNetworksViewController: EQNBaseViewController, UITableViewDelegate, type = .weatherExpanded } - cell.configure(with: seismic, type: type, informations: [ .time, .distance, .location, .population ]) + // todo: leggere da user defaults + let informations: [SeismicNetworkTableViewCell.InformationType] = [ .time, .distance, .location, .population ] + + cell.configure(with: seismic, type: type, informations: informations) cell.delegate = self return cell } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + tableView.deselectRow(at: indexPath, animated: true) + + let seismic = seismics[indexPath.row] + performSegue(withIdentifier: Self.SegueIdentifierMap, sender: seismic) + } + // MARK: - Private private func openCalendar(for seismic: EQNSisma) { checkCalendarPermission { self.createCalendarEvent(for: seismic) } failure: { - let alert = UIAlertController(title: "Attenzione", message: "Non è possibile aprire il calendario, assicurarsi di aver impostato i permessi corretti", preferredStyle: .alert) - alert.addAction(UIAlertAction(title: "Ok", style: .default)) + let alert = UIAlertController(title: NSLocalizedString("Attenzione", comment: ""), + message: "Non è possibile aprire il calendario, assicurarsi di aver impostato i permessi corretti", + preferredStyle: .alert) + alert.addAction(UIAlertAction(title: NSLocalizedString("OK", comment: ""), style: .default)) self.present(alert, animated: true) } } @@ -217,3 +249,29 @@ extension SeismicNetworksViewController: EKEventEditViewDelegate { dismiss(animated: true, completion: nil) } } + +extension SeismicNetworksViewController: SeismicFiltersViewControllerDelegate { + func seismicFiltersControllerDidUpdateFilters(_ controller: SeismicFiltersViewController) { + if controller.needsDataUpdate { + EQNManager.manager().sincronizza() + } + + refreshUI() + } +} + +extension SeismicNetworksViewController: SeismicSettingsViewControllerDelegate { + func seismicSettingsControllerDidComplete(_ controller: SeismicSettingsViewController) { + refreshUI() + } + + func seismicSettingsControllerWillOpenProviders(_ controller: SeismicSettingsViewController) { + performSegue(withIdentifier: Self.SegueIdentifierSeismicNetworks, sender: nil) + } +} + +extension SeismicNetworksViewController: SeismicSettingsNetworksViewControllerDelegate { + func seismicSettingsNetworksControllerDidComplete(_ controller: SeismicSettingsNetworksViewController) { + refreshUI() + } +} diff --git a/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsNetworksViewController.swift b/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsNetworksViewController.swift index d3f8392..f07f494 100644 --- a/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsNetworksViewController.swift +++ b/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsNetworksViewController.swift @@ -10,7 +10,7 @@ import UIKit @objc protocol SeismicSettingsNetworksViewControllerDelegate: class { - func seismicSettingsNetworksController(_ controller: SeismicSettingsNetworksViewController, didSelect filter: EQNSeismicFilter) + func seismicSettingsNetworksControllerDidComplete(_ controller: SeismicSettingsNetworksViewController) } class SeismicSettingsNetworksViewController: UITableViewController { @@ -106,7 +106,7 @@ class SeismicSettingsNetworksViewController: UITableViewController { UserDefaults.standard.removeObject(forKey: IMPOSTAZIONE_NAZIONE_RETI_SISMICHE) } - delegate?.seismicSettingsNetworksController(self, didSelect: .networks) + delegate?.seismicSettingsNetworksControllerDidComplete(self) dismiss(animated: true, completion: nil) } } diff --git a/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsViewController.swift b/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsViewController.swift index 31e42d4..eea7042 100644 --- a/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsViewController.swift +++ b/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicSettingsViewController.swift @@ -9,15 +9,8 @@ import Foundation -@objc enum EQNSeismicFilter: Int { - case none - case country - case networks -} - - @objc protocol SeismicSettingsViewControllerDelegate: class { - func seismicSettingsController(_ controller: SeismicSettingsViewController, didSelect filter: EQNSeismicFilter) + func seismicSettingsControllerDidComplete(_ controller: SeismicSettingsViewController) func seismicSettingsControllerWillOpenProviders(_ controller: SeismicSettingsViewController) } @@ -90,7 +83,7 @@ class SeismicSettingsViewController: UIViewController { UserDefaults.standard.set(selectedNetworks, forKey: IMPOSTAZIONE_ENTI_RETI_SISMICHEI) // informiamo il delegato - delegate?.seismicSettingsController(self, didSelect: .country) + delegate?.seismicSettingsControllerDidComplete(self) dismiss(animated: true, completion: nil) } diff --git a/Sources/Earthquake Network/Costanti.h b/Sources/Earthquake Network/Costanti.h index 37e1a7d..ffe181e 100644 --- a/Sources/Earthquake Network/Costanti.h +++ b/Sources/Earthquake Network/Costanti.h @@ -230,7 +230,6 @@ typedef enum : NSInteger { #define IMPOSTAZIONE_NAZIONE_RETI_SISMICHE @"IMPOSTAIONE_NAZIONE_RETI_SISMICHE" #define IMPOSTAZIONE_ENTI_RETI_SISMICHEI @"IMPOSTAZIONE_ENTI_RETI_SISMICHEI" -#define IMPOSTAZIONE_TIPO_FILTRO_RETI_SISMICHEI @"IMPOSTAZIONE_TIPO_FILTRO_RETI_SISMICHEI" /////////////////// Tsunami //////////////////////////// diff --git a/Sources/Earthquake Network/Earthquake Network-Bridging-Header.h b/Sources/Earthquake Network/Earthquake Network-Bridging-Header.h index c626488..4aa0333 100644 --- a/Sources/Earthquake Network/Earthquake Network-Bridging-Header.h +++ b/Sources/Earthquake Network/Earthquake Network-Bridging-Header.h @@ -9,3 +9,4 @@ #import "EQNNotificheReteSismiche.h" #import "EQNSisma.h" #import "EQNBaseViewController.h" +#import "ReteSismiDettagliMappa.h" diff --git a/Sources/Earthquake Network/Storyboards/Base.lproj/Main.storyboard b/Sources/Earthquake Network/Storyboards/Base.lproj/Main.storyboard index 30a3236..5267b0a 100644 --- a/Sources/Earthquake Network/Storyboards/Base.lproj/Main.storyboard +++ b/Sources/Earthquake Network/Storyboards/Base.lproj/Main.storyboard @@ -312,9 +312,8 @@ In più sostieni il progetto di ricerca il quale non riceve finanziamenti estern - + - @@ -363,713 +362,15 @@ In più sostieni il progetto di ricerca il quale non riceve finanziamenti estern - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1433,7 +734,7 @@ In più sostieni il progetto di ricerca il quale non riceve finanziamenti estern - + @@ -1573,7 +874,7 @@ In più sostieni il progetto di ricerca il quale non riceve finanziamenti estern - + @@ -2687,7 +1988,7 @@ In più sostieni il progetto di ricerca il quale non riceve finanziamenti estern - + @@ -2717,7 +2018,7 @@ In più sostieni il progetto di ricerca il quale non riceve finanziamenti estern - + @@ -2857,7 +2158,7 @@ In più sostieni il progetto di ricerca il quale non riceve finanziamenti estern - + @@ -2940,7 +2241,7 @@ In più sostieni il progetto di ricerca il quale non riceve finanziamenti estern - + @@ -3074,15 +2375,6 @@ In più sostieni il progetto di ricerca il quale non riceve finanziamenti estern - - - - - - - - -