diff --git a/Sources/EQNNotificationContent/EQNNotificationContent-Bridging-Header.h b/Sources/EQNNotificationContent/EQNNotificationContent-Bridging-Header.h index 1b2cb5d..bc285b1 100644 --- a/Sources/EQNNotificationContent/EQNNotificationContent-Bridging-Header.h +++ b/Sources/EQNNotificationContent/EQNNotificationContent-Bridging-Header.h @@ -2,3 +2,6 @@ // Use this file to import your target's public headers that you would like to expose to Swift. // +#import "EQNPastquakes.h" +#import "EQNSegnalazione.h" +#import "EQNUtility.h" diff --git a/Sources/EQNNotificationContent/NotificationViewController.m b/Sources/EQNNotificationContent/NotificationViewController.m index 53cf285..ea5e295 100644 --- a/Sources/EQNNotificationContent/NotificationViewController.m +++ b/Sources/EQNNotificationContent/NotificationViewController.m @@ -7,9 +7,8 @@ // #import "NotificationViewController.h" -#import "EQNMapAnnotationPastquakes.h" -#import "EQNMapAnnotationSeismicNetwork.h" #import "EQNUtility.h" +#import "EQNNotificationContent-Swift.h" @import UserNotifications; @import UserNotificationsUI; @@ -40,7 +39,8 @@ - (void)viewDidLoad { [super viewDidLoad]; - // Do any required interface initialization here. + + [self.mapView registerClass:[EQNCustomAnnotationView class] forAnnotationViewWithReuseIdentifier:EQNCustomAnnotationView.Identifier]; } - (void)didReceiveNotification:(UNNotification *)notification @@ -61,15 +61,15 @@ [self.mapView setRegion:region animated:YES]; if ([userInfo[@"type"] isEqualToString:@"eqn"]) { - EQNMapAnnotationPastquakes *annotation = [[EQNMapAnnotationPastquakes alloc] initWithTitle:content.body - location:coordinate.coordinate - intensita:[userInfo[@"intensity"] intValue]]; + EQNMapAnnotationPastquake *annotation = [[EQNMapAnnotationPastquake alloc] initWithTitle:@"" + coordinate:coordinate.coordinate + intensity:[userInfo[@"intensity"] intValue]]; [self.mapView addAnnotation:annotation]; } else if ([userInfo[@"type"] isEqualToString:@"manual"]){ - EQNMapAnnotationSeismicNetwork *annotation = [[EQNMapAnnotationSeismicNetwork alloc] initWithTitle:content.body - location:coordinate.coordinate - magnitudo:[userInfo[@"magnitudo"] intValue]]; + EQNMapAnnotationUserReport *annotation = [[EQNMapAnnotationUserReport alloc] initWithTitle:@"" + coordinate:coordinate.coordinate + magnitude:[userInfo[@"magnitudo"] intValue]]; [self.mapView addAnnotation:annotation]; } @@ -106,24 +106,20 @@ - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation { - if ([annotation isKindOfClass:[EQNMapAnnotationPastquakes class]]) { - EQNMapAnnotationPastquakes *anLocation = (EQNMapAnnotationPastquakes *)annotation; - MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:EQNMapAnnotationPastquakesIdentifier]; - if (annotationView == nil) { - annotationView = anLocation.annotationView; - } else { - annotationView.annotation = anLocation; - } + if ([annotation isKindOfClass:[EQNMapAnnotationPastquake class]]) { + EQNMapAnnotationPastquake *pastquake = (EQNMapAnnotationPastquake *)annotation; + + EQNCustomAnnotationView *annotationView = (EQNCustomAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:EQNCustomAnnotationView.Identifier]; + annotationView.image = pastquake.image; + annotationView.title = pastquake.title; return annotationView; - } else if ([annotation isKindOfClass:[EQNMapAnnotationSeismicNetwork class]]) { - EQNMapAnnotationSeismicNetwork *anLocation = (EQNMapAnnotationSeismicNetwork *)annotation; - MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:EQNMapAnnotationSeismicNetworkIdentifier]; - if (annotationView == nil) { - annotationView = anLocation.annotationView; - } else { - annotationView.annotation = anLocation; - } + } else if ([annotation isKindOfClass:[EQNMapAnnotationUserReport class]]) { + EQNMapAnnotationUserReport *report = (EQNMapAnnotationUserReport *)annotation; + + EQNCustomAnnotationView *annotationView = (EQNCustomAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:EQNCustomAnnotationView.Identifier]; + annotationView.image = report.image; + annotationView.title = report.title; return annotationView; } return nil; diff --git a/Sources/Earthquake Network.xcodeproj/project.pbxproj b/Sources/Earthquake Network.xcodeproj/project.pbxproj index 5955eb2..4b0b40e 100644 --- a/Sources/Earthquake Network.xcodeproj/project.pbxproj +++ b/Sources/Earthquake Network.xcodeproj/project.pbxproj @@ -18,9 +18,11 @@ 6544416B25E9599000C41714 /* EQNDebugViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6544416A25E9599000C41714 /* EQNDebugViewController.swift */; }; 654D18C425F93C0600BB6DB0 /* PasquakesMapViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 654D18C325F93C0600BB6DB0 /* PasquakesMapViewController.swift */; }; 654D18C925F93CD700BB6DB0 /* EQNMapAnnotationPastquake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 654D18C825F93CD700BB6DB0 /* EQNMapAnnotationPastquake.swift */; }; + 654D18D625F9420500BB6DB0 /* EQNMapAnnotationPastquake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 654D18C825F93CD700BB6DB0 /* EQNMapAnnotationPastquake.swift */; }; + 654D18DA25F9424700BB6DB0 /* EQNUtility+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCF0188E252F09C500C783F0 /* EQNUtility+Extensions.swift */; }; + 654D18DE25F943E200BB6DB0 /* EQNMapAnnotationUserReport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653C67FB25F3D63500FE52AC /* EQNMapAnnotationUserReport.swift */; }; 6586971125F44C26009C0182 /* EQNBlurredCloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6586971025F44C26009C0182 /* EQNBlurredCloseButton.swift */; }; 65DBFB4B25E29DD60041CBA6 /* SeismicNetworksMapDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DBFB4A25E29DD60041CBA6 /* SeismicNetworksMapDetailViewController.swift */; }; - 65DBFB5F25E2A5010041CBA6 /* EQNMapAnnotationPastquakes.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C602249218EDBE200C799C2 /* EQNMapAnnotationPastquakes.m */; }; 65DBFB7425E2BBF20041CBA6 /* GADTMediumTemplateView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65DBFB6F25E2BBF20041CBA6 /* GADTMediumTemplateView.xib */; }; 65DBFB7525E2BBF20041CBA6 /* GADTMediumTemplateView.m in Sources */ = {isa = PBXBuildFile; fileRef = 65DBFB7125E2BBF20041CBA6 /* GADTMediumTemplateView.m */; }; 65DBFB7625E2BBF20041CBA6 /* GADTTemplateView.m in Sources */ = {isa = PBXBuildFile; fileRef = 65DBFB7225E2BBF20041CBA6 /* GADTTemplateView.m */; }; @@ -45,10 +47,8 @@ 8C593E8A217BA2470008B260 /* EQNSegnalazione.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C593E89217BA2470008B260 /* EQNSegnalazione.m */; }; 8C5EA22D21763103002DC156 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C5EA22C21763102002DC156 /* MapKit.framework */; }; 8C5EA23D2177B51C002DC156 /* SegnalazioniViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C5EA23C2177B51C002DC156 /* SegnalazioniViewController.m */; }; - 8C60224A218EDBE200C799C2 /* EQNMapAnnotationPastquakes.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C602249218EDBE200C799C2 /* EQNMapAnnotationPastquakes.m */; }; 8C6CBAE521597E79005C426A /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8C6CBAE421597E79005C426A /* GoogleService-Info.plist */; }; 8C7A3B66225A5EA40045B266 /* NSDictionary+EQNExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C7A3B64225A5EA30045B266 /* NSDictionary+EQNExtensions.m */; }; - 8C7CD64821F7D0F800835812 /* EQNMapAnnotationSeismicNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CD08637218B3BEE0000CB5E /* EQNMapAnnotationSeismicNetwork.m */; }; 8C8EBBA721540039002784BA /* EQNUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C8EBBA621540039002784BA /* EQNUser.m */; }; 8CADAA9421B2627D0044E256 /* LogViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CADAA9321B2627D0044E256 /* LogViewController.m */; }; 8CAFD7C521825E4A00F8BD29 /* EQNSisma.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFD7C421825E4A00F8BD29 /* EQNSisma.m */; }; @@ -63,7 +63,6 @@ 8CCE165121E7BAEC00173CD9 /* EQNNotificheReteSismiche.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CCE165021E7BAEC00173CD9 /* EQNNotificheReteSismiche.m */; }; 8CCE165521EA378800173CD9 /* SettingsUserReportAlertsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CCE165421EA378800173CD9 /* SettingsUserReportAlertsViewController.m */; }; 8CCE165821EB1E0000173CD9 /* SettingsSeismicNetworkAlertsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CCE165721EB1E0000173CD9 /* SettingsSeismicNetworkAlertsViewController.m */; }; - 8CD08638218B3BEE0000CB5E /* EQNMapAnnotationSeismicNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CD08637218B3BEE0000CB5E /* EQNMapAnnotationSeismicNetwork.m */; }; 8CF05B57218C93BA0055012B /* EQNUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CF05B56218C93BA0055012B /* EQNUtility.m */; }; 8CF12CD321DE49B600613AC5 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CF12CD221DE49B600613AC5 /* UserNotifications.framework */; }; 8CF12CD521DE49B600613AC5 /* UserNotificationsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CF12CD421DE49B600613AC5 /* UserNotificationsUI.framework */; }; @@ -334,8 +333,6 @@ 8C5EA22C21763102002DC156 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; 8C5EA23B2177B51C002DC156 /* SegnalazioniViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SegnalazioniViewController.h; sourceTree = ""; }; 8C5EA23C2177B51C002DC156 /* SegnalazioniViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SegnalazioniViewController.m; sourceTree = ""; }; - 8C602248218EDBE200C799C2 /* EQNMapAnnotationPastquakes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EQNMapAnnotationPastquakes.h; sourceTree = ""; }; - 8C602249218EDBE200C799C2 /* EQNMapAnnotationPastquakes.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EQNMapAnnotationPastquakes.m; sourceTree = ""; }; 8C6CBAE421597E79005C426A /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 8C7A3B64225A5EA30045B266 /* NSDictionary+EQNExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+EQNExtensions.m"; sourceTree = ""; }; 8C7A3B65225A5EA40045B266 /* NSDictionary+EQNExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+EQNExtensions.h"; sourceTree = ""; }; @@ -364,8 +361,6 @@ 8CCE165421EA378800173CD9 /* SettingsUserReportAlertsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SettingsUserReportAlertsViewController.m; sourceTree = ""; }; 8CCE165621EB1E0000173CD9 /* SettingsSeismicNetworkAlertsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SettingsSeismicNetworkAlertsViewController.h; sourceTree = ""; }; 8CCE165721EB1E0000173CD9 /* SettingsSeismicNetworkAlertsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SettingsSeismicNetworkAlertsViewController.m; sourceTree = ""; }; - 8CD08636218B3BEE0000CB5E /* EQNMapAnnotationSeismicNetwork.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EQNMapAnnotationSeismicNetwork.h; sourceTree = ""; }; - 8CD08637218B3BEE0000CB5E /* EQNMapAnnotationSeismicNetwork.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EQNMapAnnotationSeismicNetwork.m; sourceTree = ""; }; 8CF05B55218C93BA0055012B /* EQNUtility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EQNUtility.h; sourceTree = ""; }; 8CF05B56218C93BA0055012B /* EQNUtility.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EQNUtility.m; sourceTree = ""; }; 8CF12CD121DE49B600613AC5 /* EQNNotificationContent.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = EQNNotificationContent.appex; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -600,10 +595,6 @@ 653C67FB25F3D63500FE52AC /* EQNMapAnnotationUserReport.swift */, 651901B825F5358700CAFF20 /* EQNMapAnnotationSeismic.swift */, 654D18C825F93CD700BB6DB0 /* EQNMapAnnotationPastquake.swift */, - 8C602248218EDBE200C799C2 /* EQNMapAnnotationPastquakes.h */, - 8C602249218EDBE200C799C2 /* EQNMapAnnotationPastquakes.m */, - 8CD08636218B3BEE0000CB5E /* EQNMapAnnotationSeismicNetwork.h */, - 8CD08637218B3BEE0000CB5E /* EQNMapAnnotationSeismicNetwork.m */, ); path = "Map annotation"; sourceTree = ""; @@ -1539,7 +1530,6 @@ DC99A50724E66E5F0071BC9F /* EQNStartupCommandsBuilder.swift in Sources */, DCA5B6E7252E4BD8002AEC96 /* EQNBaseTableViewCell.swift in Sources */, 8CF66058214C566B009F4314 /* ServerRequest.m in Sources */, - 8CD08638218B3BEE0000CB5E /* EQNMapAnnotationSeismicNetwork.m in Sources */, DCF9E14D24F6D1AA002B6B1D /* EQNData.swift in Sources */, DC52B8A524FCCD6900ABEBA6 /* AppTheme.swift in Sources */, 653C680425F3DF8A00FE52AC /* EQNBaseMapViewController.swift in Sources */, @@ -1580,7 +1570,6 @@ DCF4A54524F8DB8300B17326 /* SettingDateTableViewCell.swift in Sources */, DC7EEE4A252A11C9004B4A2A /* AlertsSmartphoneNetworkTableViewCell.swift in Sources */, DC7EEE4F252A1634004B4A2A /* AlertsPriorityServiceTableViewCell.swift in Sources */, - 8C60224A218EDBE200C799C2 /* EQNMapAnnotationPastquakes.m in Sources */, 65DBFB7625E2BBF20041CBA6 /* GADTTemplateView.m in Sources */, 8C5EA23D2177B51C002DC156 /* SegnalazioniViewController.m in Sources */, 653C67E225F3CC2E00FE52AC /* EQNCustomAnnotationView.swift in Sources */, @@ -1608,12 +1597,13 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8C7CD64821F7D0F800835812 /* EQNMapAnnotationSeismicNetwork.m in Sources */, 8C465D9F21F7BE0600F04673 /* Assets.xcassets in Sources */, DC0AE1B92538204100111307 /* EQNSegnalazione.m in Sources */, - 65DBFB5F25E2A5010041CBA6 /* EQNMapAnnotationPastquakes.m in Sources */, + 654D18DE25F943E200BB6DB0 /* EQNMapAnnotationUserReport.swift in Sources */, + 654D18D625F9420500BB6DB0 /* EQNMapAnnotationPastquake.swift in Sources */, DC0AE1B52538202300111307 /* EQNUtility.m in Sources */, 653C67E625F3CC8400FE52AC /* EQNCustomAnnotationView.swift in Sources */, + 654D18DA25F9424700BB6DB0 /* EQNUtility+Extensions.swift in Sources */, DC0AE1BA2538204100111307 /* EQNPastquakes.m in Sources */, 8CF12CD921DE49B600613AC5 /* NotificationViewController.m in Sources */, ); diff --git a/Sources/Earthquake Network/Controllers/Alerts/Cells/AlertsSeismicNotificationExpandedTableViewCell.swift b/Sources/Earthquake Network/Controllers/Alerts/Cells/AlertsSeismicNotificationExpandedTableViewCell.swift index bca7c8a..58a74af 100644 --- a/Sources/Earthquake Network/Controllers/Alerts/Cells/AlertsSeismicNotificationExpandedTableViewCell.swift +++ b/Sources/Earthquake Network/Controllers/Alerts/Cells/AlertsSeismicNotificationExpandedTableViewCell.swift @@ -35,6 +35,7 @@ class AlertsSeismicNotificationExpandedTableViewCell: EQNBaseTableViewCell, MKMa mapView.delegate = self mapView.isScrollEnabled = false mapView.isZoomEnabled = false + mapView.register(EQNCustomAnnotationView.self, forAnnotationViewWithReuseIdentifier: EQNCustomAnnotationView.Identifier) } } private var impactTimestamp: Date? @@ -101,23 +102,19 @@ class AlertsSeismicNotificationExpandedTableViewCell: EQNBaseTableViewCell, MKMa mapView.setCenter(coordinate.coordinate, animated: false) mapView.setRegion(region, animated: true) - let annotation = EQNMapAnnotationPastquakes(title: "", location: coordinate.coordinate, intensita: intensity) + let annotation = EQNMapAnnotationPastquake(title: "", coordinate: coordinate.coordinate, intensity: intensity) mapView.addAnnotation(annotation) } } func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { - guard let annotation = annotation as? EQNMapAnnotationPastquakes else { + guard let annotation = annotation as? EQNMapAnnotationPastquake else { return nil } - var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: EQNMapAnnotationPastquakesIdentifier) - if annotationView == nil { - annotationView = annotation.annotationView() - } else { - annotationView?.annotation = annotation - } - + let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: EQNCustomAnnotationView.Identifier, for: annotation) as! EQNCustomAnnotationView + annotationView.image = annotation.image + annotationView.title = annotation.title return annotationView } diff --git a/Sources/Earthquake Network/Earthquake Network-Bridging-Header.h b/Sources/Earthquake Network/Earthquake Network-Bridging-Header.h index 1dd9fa5..ff3dfb7 100644 --- a/Sources/Earthquake Network/Earthquake Network-Bridging-Header.h +++ b/Sources/Earthquake Network/Earthquake Network-Bridging-Header.h @@ -11,12 +11,10 @@ #import "EQNSisma.h" #import "EQNBaseViewController.h" #import "SettingsBaseViewController.h" -#import "EQNMapAnnotationPastquakes.h" #import "EQNGeneratoreURLServer.h" #import "ServerRequest.h" #import "EQNSegnalazione.h" #import "EQNPastquakes.h" -#import "EQNMapAnnotationSeismicNetwork.h" #import "EQNAllertaSismica.h" #import "GADTTemplateView.h" diff --git a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationPastquake.swift b/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationPastquake.swift index cf97d85..8019b8e 100644 --- a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationPastquake.swift +++ b/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationPastquake.swift @@ -7,37 +7,41 @@ // import Foundation +import MapKit +@objc class EQNMapAnnotationPastquake: NSObject, MKAnnotation { - var coordinate: CLLocationCoordinate2D - - private let intentisy: Int - private let date: Date - + @objc var coordinate: CLLocationCoordinate2D + @objc var title: String? + @objc var image: UIImage? + // MARK: - Init - init(pastquake: EQNPastquakes) { - self.coordinate = CLLocationCoordinate2D(latitude: pastquake.coordinate.coordinate.latitude, longitude: pastquake.coordinate.coordinate.longitude) - self.intentisy = pastquake.intensity - self.date = pastquake.date + convenience init(pastquake: EQNPastquakes) { + let coordinate = CLLocationCoordinate2D(latitude: pastquake.coordinate.coordinate.latitude, longitude: pastquake.coordinate.coordinate.longitude) + let intentisy = pastquake.intensity + let title = EQNUtility.formattedTimeDifference(from: pastquake.date) + self.init(title: title, coordinate: coordinate, intensity: intentisy) + } + + @objc init(title: String, coordinate: CLLocationCoordinate2D, intensity: Int) { + self.title = title + self.image = Self.image(for: intensity) + self.coordinate = coordinate super.init() } - // MARK: - Public + // MARK: - Private - var image: UIImage? { - switch intentisy { + private static func image(for intensity: Int) -> UIImage? { + switch intensity { case 0: return UIImage(named: "star_white") case 1: return UIImage(named: "star_lightblue") case 2: return UIImage(named: "star_blue") default: return nil } } - - var title: String? { - EQNUtility.formattedTimeDifference(from: date) - } } diff --git a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationPastquakes.h b/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationPastquakes.h deleted file mode 100644 index 91491a7..0000000 --- a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationPastquakes.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// EQNMapAnnotationPastquakes.h -// Earthquake Network -// -// Refactored by Andrea Busi -// Copyright © 2021 Earthquake Network. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -static NSString * const EQNMapAnnotationPastquakesIdentifier = @"EQNMapAnnotationPastquakesIdentifier"; - - -@interface EQNMapAnnotationPastquakes : NSObject - -@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; -@property (nonatomic, copy) NSString *title; -@property (nonatomic, readonly) NSInteger intensita; - -- (instancetype)initWithTitle:(NSString *)title location:(CLLocationCoordinate2D)coordinate intensita:(NSInteger)intensita; -- (MKAnnotationView *)annotationView; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationPastquakes.m b/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationPastquakes.m deleted file mode 100644 index 7e8052a..0000000 --- a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationPastquakes.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// EQNMapAnnotationPastquakes.m -// Earthquake Network -// -// Refactored by Andrea Busi -// Copyright © 2021 Earthquake Network. All rights reserved. -// - -#import "EQNMapAnnotationPastquakes.h" - -@implementation EQNMapAnnotationPastquakes - -#pragma mark - Init - -- (instancetype)initWithTitle:(NSString *)title location:(CLLocationCoordinate2D )coordinate intensita:(NSInteger)intensita -{ - self = [super init]; - if (self) { - _title = title; - _coordinate = coordinate; - _intensita = intensita; - } - return self; -} - -#pragma mark - Public - -- (MKAnnotationView *)annotationView -{ - MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:self reuseIdentifier:EQNMapAnnotationPastquakesIdentifier]; - annotationView.enabled = YES; - annotationView.canShowCallout = YES; - NSString *imageString; - switch (self.intensita) { - case 0: - imageString = @"star_white"; - break; - case 1: - imageString = @"star_lightblue"; - break; - case 2: - imageString = @"star_blue"; - break; - default: - imageString = @""; - break; - } - - annotationView.image = [UIImage imageNamed:imageString]; - annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; - return annotationView; -} - -@end diff --git a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationSeismicNetwork.h b/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationSeismicNetwork.h deleted file mode 100644 index 49e2d6a..0000000 --- a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationSeismicNetwork.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// EQNMapAnnotationSeismicNetwork.h -// Earthquake Network -// -// Refactored by Andrea Busi -// Copyright © 2021 Earthquake Network. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -static NSString * const EQNMapAnnotationSeismicNetworkIdentifier = @"EQNMapAnnotationSeismicNetworkIdentifier"; - - -@interface EQNMapAnnotationSeismicNetwork : NSObject - -@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; -@property (nonatomic, copy) NSString *title; -@property (nonatomic, readonly) NSInteger magnitude; - -- (instancetype)initWithTitle:(NSString *)title location:(CLLocationCoordinate2D )coordinate magnitudo:(NSInteger)magnitude; - -- (MKAnnotationView *)annotationView; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationSeismicNetwork.m b/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationSeismicNetwork.m deleted file mode 100644 index eed5008..0000000 --- a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationSeismicNetwork.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// EQNMapAnnotationSeismicNetwork.m -// Earthquake Network -// -// Refactored by Andrea Busi -// Copyright © 2021 Earthquake Network. All rights reserved. -// - -#import "EQNMapAnnotationSeismicNetwork.h" - -@implementation EQNMapAnnotationSeismicNetwork - -#pragma mark - Init - -- (instancetype)initWithTitle:(NSString *)title location:(CLLocationCoordinate2D )coordinate magnitudo:(NSInteger)magnitude -{ - self = [super init]; - if (self) { - _title = title; - _coordinate = coordinate; - _magnitude = magnitude; - } - return self; -} - -#pragma mark - Public - -- (MKAnnotationView *)annotationView -{ - MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:self reuseIdentifier:EQNMapAnnotationSeismicNetworkIdentifier]; - annotationView.enabled = YES; - annotationView.canShowCallout = YES; - - NSString *imageString; - switch (self.magnitude) { - case 1: - imageString = @"star_green"; - break; - case 2: - imageString = @"star_yellow"; - break; - case 3: - imageString = @"star_red1"; - break; - default: - imageString = @""; - break; - } - - annotationView.image = [UIImage imageNamed:imageString]; - annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; - return annotationView; -} - -@end diff --git a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationUserReport.swift b/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationUserReport.swift index 341969f..546c646 100644 --- a/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationUserReport.swift +++ b/Sources/Earthquake Network/Models/Map annotation/EQNMapAnnotationUserReport.swift @@ -7,28 +7,36 @@ // import Foundation +import MapKit +@objc class EQNMapAnnotationUserReport: NSObject, MKAnnotation { - var coordinate: CLLocationCoordinate2D - - private let magnitute: Int - private let date: Date + @objc var coordinate: CLLocationCoordinate2D + @objc var title: String? + @objc var image: UIImage? // MARK: - Init - init(report: EQNSegnalazione) { - self.coordinate = CLLocationCoordinate2D(latitude: report.coordinate.coordinate.latitude, longitude: report.coordinate.coordinate.longitude) - self.magnitute = report.magnitude - self.date = report.date + convenience init(report: EQNSegnalazione) { + let coordinate = CLLocationCoordinate2D(latitude: report.coordinate.coordinate.latitude, longitude: report.coordinate.coordinate.longitude) + let magnitude = report.magnitude + let title = EQNUtility.formattedTimeDifference(from: report.date) + self.init(title: title, coordinate: coordinate, magnitude: magnitude) + } + + @objc init(title: String, coordinate: CLLocationCoordinate2D, magnitude: Int) { + self.title = title + self.image = Self.image(for: magnitude) + self.coordinate = coordinate super.init() } // MARK: - Public - var image: UIImage? { + private static func image(for magnitute: Int) -> UIImage? { switch magnitute { case 1: return UIImage(named: "star_report_green") case 2: return UIImage(named: "star_report_yellow") @@ -36,8 +44,4 @@ class EQNMapAnnotationUserReport: NSObject, MKAnnotation { default: return nil } } - - var title: String? { - EQNUtility.formattedTimeDifference(from: date) - } } diff --git a/Sources/Earthquake Network/UI/EQNCustomAnnotationView.swift b/Sources/Earthquake Network/UI/EQNCustomAnnotationView.swift index 37e843b..3ee15e0 100644 --- a/Sources/Earthquake Network/UI/EQNCustomAnnotationView.swift +++ b/Sources/Earthquake Network/UI/EQNCustomAnnotationView.swift @@ -12,15 +12,15 @@ import MapKit @objc public class EQNCustomAnnotationView: MKAnnotationView { - static let Identifier = "EQNCustomAnnotationView" + @objc static let Identifier = "EQNCustomAnnotationView" private static let AnnotationFrame = CGRect(x: 0, y: 0, width: 40, height: 40) - public override var image: UIImage? { + @objc public override var image: UIImage? { set { imageView.image = newValue } get { imageView.image } } - public var title: String? { + @objc public var title: String? { set { label.text = newValue } get { label.text } }