COVIDSafe code from version 2.3

This commit is contained in:
COVIDSafe Support 2021-02-25 19:41:20 -08:00 committed by covidsafe-support
parent f14aa60482
commit e577a9e7aa
63 changed files with 3096 additions and 372 deletions

View file

@ -151,6 +151,16 @@
5B51ED61248715DE008CE722 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B51ED64248715DE008CE722 /* InfoPlist.strings */; };
5B51ED62248715DE008CE722 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B51ED64248715DE008CE722 /* InfoPlist.strings */; };
5B577815245A584C0088F111 /* UploadDataPrefaceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B577814245A584C0088F111 /* UploadDataPrefaceViewController.swift */; };
5B69C05C25D36E2A00DF536D /* RestrictionDetailsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B69C05B25D36E2A00DF536D /* RestrictionDetailsView.xib */; };
5B69C05D25D36E2A00DF536D /* RestrictionDetailsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B69C05B25D36E2A00DF536D /* RestrictionDetailsView.xib */; };
5B69C06125D36E3D00DF536D /* RestrictionDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B69C06025D36E3D00DF536D /* RestrictionDetailsView.swift */; };
5B69C06225D36E3D00DF536D /* RestrictionDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B69C06025D36E3D00DF536D /* RestrictionDetailsView.swift */; };
5B69C06625D382AF00DF536D /* String+HtmlAttributed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B69C06525D382AF00DF536D /* String+HtmlAttributed.swift */; };
5B69C06725D382AF00DF536D /* String+HtmlAttributed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B69C06525D382AF00DF536D /* String+HtmlAttributed.swift */; };
5B69C06B25D3983800DF536D /* TableSectionHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B69C06A25D3983800DF536D /* TableSectionHeaderView.xib */; };
5B69C06C25D3983900DF536D /* TableSectionHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B69C06A25D3983800DF536D /* TableSectionHeaderView.xib */; };
5B69C07825D4D46800DF536D /* RestrictionsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B69C07725D4D46800DF536D /* RestrictionsAPI.swift */; };
5B69C07925D4D46800DF536D /* RestrictionsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B69C07725D4D46800DF536D /* RestrictionsAPI.swift */; };
5B728B4724B5667000654ABC /* BLELogViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B728B4624B5667000654ABC /* BLELogViewController.swift */; };
5B728B4924B5816C00654ABC /* BLELog+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B728B4824B5816C00654ABC /* BLELog+CoreDataClass.swift */; };
5B728B4B24B581C100654ABC /* BLELog+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B728B4A24B581C100654ABC /* BLELog+CoreDataProperties.swift */; };
@ -160,6 +170,24 @@
5B7ABF28244D6BE100BB249B /* UnderSixteenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B7ABF27244D6BE100BB249B /* UnderSixteenViewController.swift */; };
5B82435E2480DC2100705CB1 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B8243612480DC2100705CB1 /* Localizable.strings */; };
5B82435F2480DC2100705CB1 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B8243612480DC2100705CB1 /* Localizable.strings */; };
5B89D4AA25D0ED7100FB3938 /* RestrictionTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4A825D0ED7100FB3938 /* RestrictionTableViewController.swift */; };
5B89D4AB25D0ED7100FB3938 /* RestrictionTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4A825D0ED7100FB3938 /* RestrictionTableViewController.swift */; };
5B89D4AC25D0ED7100FB3938 /* RestrictionTableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B89D4A925D0ED7100FB3938 /* RestrictionTableView.xib */; };
5B89D4AD25D0ED7100FB3938 /* RestrictionTableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B89D4A925D0ED7100FB3938 /* RestrictionTableView.xib */; };
5B89D4B525D0F0BD00FB3938 /* SimpleTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B89D4B425D0F0BD00FB3938 /* SimpleTableViewCell.xib */; };
5B89D4B625D0F0BD00FB3938 /* SimpleTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B89D4B425D0F0BD00FB3938 /* SimpleTableViewCell.xib */; };
5B89D4BA25D0F6D900FB3938 /* SelectionTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B89D4B925D0F6D900FB3938 /* SelectionTableViewCell.xib */; };
5B89D4BB25D0F6DA00FB3938 /* SelectionTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B89D4B925D0F6D900FB3938 /* SelectionTableViewCell.xib */; };
5B89D4C125D239EB00FB3938 /* UIImage+imageColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4C025D239EB00FB3938 /* UIImage+imageColor.swift */; };
5B89D4C225D239EB00FB3938 /* UIImage+imageColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4C025D239EB00FB3938 /* UIImage+imageColor.swift */; };
5B89D4CC25D33DA100FB3938 /* StateTerritory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4CB25D33DA100FB3938 /* StateTerritory.swift */; };
5B89D4CD25D33DA100FB3938 /* StateTerritory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4CB25D33DA100FB3938 /* StateTerritory.swift */; };
5B89D4D125D33F3100FB3938 /* JurisdictionalRestrictionActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4D025D33F3100FB3938 /* JurisdictionalRestrictionActivity.swift */; };
5B89D4D225D33F3100FB3938 /* JurisdictionalRestrictionActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4D025D33F3100FB3938 /* JurisdictionalRestrictionActivity.swift */; };
5B89D4D825D3557F00FB3938 /* RestrictionDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4D725D3557F00FB3938 /* RestrictionDetailsViewController.swift */; };
5B89D4D925D3557F00FB3938 /* RestrictionDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4D725D3557F00FB3938 /* RestrictionDetailsViewController.swift */; };
5B89D4DD25D356A400FB3938 /* CovidHeaderContentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4DC25D356A400FB3938 /* CovidHeaderContentViewController.swift */; };
5B89D4DE25D356A400FB3938 /* CovidHeaderContentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B89D4DC25D356A400FB3938 /* CovidHeaderContentViewController.swift */; };
5B900FC12485C4EE00CAA419 /* String+Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B900FC02485C4EE00CAA419 /* String+Localization.swift */; };
5B900FC22485C4EE00CAA419 /* String+Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B900FC02485C4EE00CAA419 /* String+Localization.swift */; };
5B92B09424D14AE00069C57D /* InternetConnectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B92B09324D14AE00069C57D /* InternetConnectionViewController.swift */; };
@ -278,19 +306,27 @@
5BA33A7E24B55E7D00D12515 /* BLELogRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA33A7D24B55E7D00D12515 /* BLELogRecord.swift */; };
5BA33A8024B55EF200D12515 /* BLELogDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA33A7F24B55EF200D12515 /* BLELogDB.swift */; };
5BA33A8224B5602500D12515 /* BLELogRecord+BLELogSave.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA33A8124B5602500D12515 /* BLELogRecord+BLELogSave.swift */; };
5BA3622F25DE12E6002CFF41 /* CSGenericErrorView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BA3622E25DE12E6002CFF41 /* CSGenericErrorView.xib */; };
5BA3623025DE12E6002CFF41 /* CSGenericErrorView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BA3622E25DE12E6002CFF41 /* CSGenericErrorView.xib */; };
5BA3623425DE133D002CFF41 /* CSGenericErrorController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA3623325DE133D002CFF41 /* CSGenericErrorController.swift */; };
5BA3623525DE133D002CFF41 /* CSGenericErrorController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA3623325DE133D002CFF41 /* CSGenericErrorController.swift */; };
5BA3624125E463B6002CFF41 /* WebContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BA3624025E463B5002CFF41 /* WebContentView.xib */; };
5BA3624225E463B6002CFF41 /* WebContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BA3624025E463B5002CFF41 /* WebContentView.xib */; };
5BA3624625E4654F002CFF41 /* WebContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA3624525E4654E002CFF41 /* WebContentView.swift */; };
5BA3624725E4654F002CFF41 /* WebContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA3624525E4654E002CFF41 /* WebContentView.swift */; };
5BBC571D25526F99005E90AA /* staging-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5BBC571C25526F99005E90AA /* staging-Info.plist */; };
5BBE61B125633B6D00B8C983 /* CSGenericContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BBE61B025633B6D00B8C983 /* CSGenericContentView.xib */; };
5BBE61B225633B6D00B8C983 /* CSGenericContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BBE61B025633B6D00B8C983 /* CSGenericContentView.xib */; };
5BBE61B725633E8D00B8C983 /* CSGenericViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBE61B625633E8D00B8C983 /* CSGenericViewController.swift */; };
5BBE61B825633E8D00B8C983 /* CSGenericViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBE61B625633E8D00B8C983 /* CSGenericViewController.swift */; };
5BD2419425832A7E00F78822 /* SelectStateTerritoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD2419225832A7E00F78822 /* SelectStateTerritoryViewController.swift */; };
5BD2419525832A7E00F78822 /* SelectStateTerritoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD2419225832A7E00F78822 /* SelectStateTerritoryViewController.swift */; };
5BD2419625832A7E00F78822 /* SelectStateTerritoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD2419325832A7E00F78822 /* SelectStateTerritoryViewController.xib */; };
5BD2419725832A7E00F78822 /* SelectStateTerritoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD2419325832A7E00F78822 /* SelectStateTerritoryViewController.xib */; };
5BD2419E25832DA600F78822 /* StateTerritoryTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD2419C25832DA600F78822 /* StateTerritoryTableViewCell.swift */; };
5BD2419F25832DA600F78822 /* StateTerritoryTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD2419C25832DA600F78822 /* StateTerritoryTableViewCell.swift */; };
5BD241A025832DA600F78822 /* StateTerritoryTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD2419D25832DA600F78822 /* StateTerritoryTableViewCell.xib */; };
5BD241A125832DA600F78822 /* StateTerritoryTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD2419D25832DA600F78822 /* StateTerritoryTableViewCell.xib */; };
5BD2419425832A7E00F78822 /* SelectableTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD2419225832A7E00F78822 /* SelectableTableViewController.swift */; };
5BD2419525832A7E00F78822 /* SelectableTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD2419225832A7E00F78822 /* SelectableTableViewController.swift */; };
5BD2419625832A7E00F78822 /* SelectableTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD2419325832A7E00F78822 /* SelectableTableViewController.xib */; };
5BD2419725832A7E00F78822 /* SelectableTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD2419325832A7E00F78822 /* SelectableTableViewController.xib */; };
5BD2419E25832DA600F78822 /* SelectableTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD2419C25832DA600F78822 /* SelectableTableViewCell.swift */; };
5BD2419F25832DA600F78822 /* SelectableTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD2419C25832DA600F78822 /* SelectableTableViewCell.swift */; };
5BD241A025832DA600F78822 /* SelectableTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD2419D25832DA600F78822 /* SelectableTableViewCell.xib */; };
5BD241A125832DA600F78822 /* SelectableTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD2419D25832DA600F78822 /* SelectableTableViewCell.xib */; };
5BD241BC25870B8900F78822 /* ExternalLinkTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD241BA25870B8900F78822 /* ExternalLinkTableViewCell.swift */; };
5BD241BD25870B8900F78822 /* ExternalLinkTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD241BA25870B8900F78822 /* ExternalLinkTableViewCell.swift */; };
5BD241BE25870B8900F78822 /* ExternalLinkTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD241BB25870B8900F78822 /* ExternalLinkTableViewCell.xib */; };
@ -307,6 +343,12 @@
5BED1E4424A98EB60066C4D2 /* LaunchScreen_vi.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5BED1E4224A98EB60066C4D2 /* LaunchScreen_vi.storyboard */; };
5BED1E4624A98EC20066C4D2 /* LaunchScreen_ko.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5BED1E4524A98EC20066C4D2 /* LaunchScreen_ko.storyboard */; };
5BED1E4724A98EC20066C4D2 /* LaunchScreen_ko.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5BED1E4524A98EC20066C4D2 /* LaunchScreen_ko.storyboard */; };
5BEDEF4025CB938D00AEEC20 /* MainTabBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BEDEF3E25CB938D00AEEC20 /* MainTabBarViewController.swift */; };
5BEDEF4125CB938D00AEEC20 /* MainTabBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BEDEF3E25CB938D00AEEC20 /* MainTabBarViewController.swift */; };
5BEDEF5425CBC4A900AEEC20 /* RestrictionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BEDEF5225CBC4A800AEEC20 /* RestrictionsViewController.swift */; };
5BEDEF5525CBC4A900AEEC20 /* RestrictionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BEDEF5225CBC4A800AEEC20 /* RestrictionsViewController.swift */; };
5BEDEF5625CBC4A900AEEC20 /* RestrictionsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEDEF5325CBC4A800AEEC20 /* RestrictionsView.xib */; };
5BEDEF5725CBC4A900AEEC20 /* RestrictionsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BEDEF5325CBC4A800AEEC20 /* RestrictionsView.xib */; };
5BFFD94B242EC120003AEF4F /* PhoneValidationAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BFFD94A242EC120003AEF4F /* PhoneValidationAPI.swift */; };
5D269C0B23E22CC400ADF2DE /* DeviceIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D269C0A23E22CC400ADF2DE /* DeviceIdentifier.swift */; };
5D269C0D23E2958F00ADF2DE /* BluetraceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D269C0C23E2958F00ADF2DE /* BluetraceManager.swift */; };
@ -463,6 +505,11 @@
5B51ED6E248776CA008CE722 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/UploadData.storyboard; sourceTree = "<group>"; };
5B51ED6F248776CB008CE722 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
5B577814245A584C0088F111 /* UploadDataPrefaceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UploadDataPrefaceViewController.swift; sourceTree = "<group>"; };
5B69C05B25D36E2A00DF536D /* RestrictionDetailsView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RestrictionDetailsView.xib; sourceTree = "<group>"; };
5B69C06025D36E3D00DF536D /* RestrictionDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestrictionDetailsView.swift; sourceTree = "<group>"; };
5B69C06525D382AF00DF536D /* String+HtmlAttributed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+HtmlAttributed.swift"; sourceTree = "<group>"; };
5B69C06A25D3983800DF536D /* TableSectionHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TableSectionHeaderView.xib; sourceTree = "<group>"; };
5B69C07725D4D46800DF536D /* RestrictionsAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RestrictionsAPI.swift; sourceTree = "<group>"; };
5B728B4624B5667000654ABC /* BLELogViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BLELogViewController.swift; sourceTree = "<group>"; };
5B728B4824B5816C00654ABC /* BLELog+CoreDataClass.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "BLELog+CoreDataClass.swift"; sourceTree = "<group>"; };
5B728B4A24B581C100654ABC /* BLELog+CoreDataProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "BLELog+CoreDataProperties.swift"; sourceTree = "<group>"; };
@ -471,6 +518,15 @@
5B7ABF27244D6BE100BB249B /* UnderSixteenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnderSixteenViewController.swift; sourceTree = "<group>"; };
5B7B031D2490703500296DE0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen_en.storyboard; sourceTree = "<group>"; };
5B8243602480DC2100705CB1 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
5B89D4A825D0ED7100FB3938 /* RestrictionTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestrictionTableViewController.swift; sourceTree = "<group>"; };
5B89D4A925D0ED7100FB3938 /* RestrictionTableView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RestrictionTableView.xib; sourceTree = "<group>"; };
5B89D4B425D0F0BD00FB3938 /* SimpleTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SimpleTableViewCell.xib; sourceTree = "<group>"; };
5B89D4B925D0F6D900FB3938 /* SelectionTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SelectionTableViewCell.xib; sourceTree = "<group>"; };
5B89D4C025D239EB00FB3938 /* UIImage+imageColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+imageColor.swift"; sourceTree = "<group>"; };
5B89D4CB25D33DA100FB3938 /* StateTerritory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateTerritory.swift; sourceTree = "<group>"; };
5B89D4D025D33F3100FB3938 /* JurisdictionalRestrictionActivity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JurisdictionalRestrictionActivity.swift; sourceTree = "<group>"; };
5B89D4D725D3557F00FB3938 /* RestrictionDetailsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RestrictionDetailsViewController.swift; sourceTree = "<group>"; };
5B89D4DC25D356A400FB3938 /* CovidHeaderContentViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CovidHeaderContentViewController.swift; sourceTree = "<group>"; };
5B900FC02485C4EE00CAA419 /* String+Localization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Localization.swift"; sourceTree = "<group>"; };
5B92B09324D14AE00069C57D /* InternetConnectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InternetConnectionViewController.swift; sourceTree = "<group>"; };
5B92B09624E0CC000069C57D /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = "<group>"; };
@ -501,13 +557,17 @@
5BA33A7D24B55E7D00D12515 /* BLELogRecord.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BLELogRecord.swift; sourceTree = "<group>"; };
5BA33A7F24B55EF200D12515 /* BLELogDB.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BLELogDB.swift; sourceTree = "<group>"; };
5BA33A8124B5602500D12515 /* BLELogRecord+BLELogSave.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "BLELogRecord+BLELogSave.swift"; sourceTree = "<group>"; };
5BA3622E25DE12E6002CFF41 /* CSGenericErrorView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CSGenericErrorView.xib; sourceTree = "<group>"; };
5BA3623325DE133D002CFF41 /* CSGenericErrorController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSGenericErrorController.swift; sourceTree = "<group>"; };
5BA3624025E463B5002CFF41 /* WebContentView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WebContentView.xib; sourceTree = "<group>"; };
5BA3624525E4654E002CFF41 /* WebContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebContentView.swift; sourceTree = "<group>"; };
5BBC571C25526F99005E90AA /* staging-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "staging-Info.plist"; sourceTree = "<group>"; };
5BBE61B025633B6D00B8C983 /* CSGenericContentView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CSGenericContentView.xib; sourceTree = "<group>"; };
5BBE61B625633E8D00B8C983 /* CSGenericViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSGenericViewController.swift; sourceTree = "<group>"; };
5BD2419225832A7E00F78822 /* SelectStateTerritoryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectStateTerritoryViewController.swift; sourceTree = "<group>"; };
5BD2419325832A7E00F78822 /* SelectStateTerritoryViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SelectStateTerritoryViewController.xib; sourceTree = "<group>"; };
5BD2419C25832DA600F78822 /* StateTerritoryTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateTerritoryTableViewCell.swift; sourceTree = "<group>"; };
5BD2419D25832DA600F78822 /* StateTerritoryTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StateTerritoryTableViewCell.xib; sourceTree = "<group>"; };
5BD2419225832A7E00F78822 /* SelectableTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectableTableViewController.swift; sourceTree = "<group>"; };
5BD2419325832A7E00F78822 /* SelectableTableViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SelectableTableViewController.xib; sourceTree = "<group>"; };
5BD2419C25832DA600F78822 /* SelectableTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectableTableViewCell.swift; sourceTree = "<group>"; };
5BD2419D25832DA600F78822 /* SelectableTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SelectableTableViewCell.xib; sourceTree = "<group>"; };
5BD241BA25870B8900F78822 /* ExternalLinkTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalLinkTableViewCell.swift; sourceTree = "<group>"; };
5BD241BB25870B8900F78822 /* ExternalLinkTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ExternalLinkTableViewCell.xib; sourceTree = "<group>"; };
5BD3EE8224330E1A0004A007 /* UploadDataStep2VC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UploadDataStep2VC.swift; sourceTree = "<group>"; };
@ -526,6 +586,9 @@
5BED1E5124A98FD50066C4D2 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
5BED1E5224A9900B0066C4D2 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
5BED1E5324A9900B0066C4D2 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/InfoPlist.strings; sourceTree = "<group>"; };
5BEDEF3E25CB938D00AEEC20 /* MainTabBarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabBarViewController.swift; sourceTree = "<group>"; };
5BEDEF5225CBC4A800AEEC20 /* RestrictionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestrictionsViewController.swift; sourceTree = "<group>"; };
5BEDEF5325CBC4A800AEEC20 /* RestrictionsView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RestrictionsView.xib; sourceTree = "<group>"; };
5BFFD94A242EC120003AEF4F /* PhoneValidationAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneValidationAPI.swift; sourceTree = "<group>"; };
5D269C0A23E22CC400ADF2DE /* DeviceIdentifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceIdentifier.swift; sourceTree = "<group>"; };
5D269C0C23E2958F00ADF2DE /* BluetraceManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetraceManager.swift; sourceTree = "<group>"; };
@ -641,6 +704,8 @@
30BE1CB023F134D0005DCE4F /* Encounter+EncounterRecord.swift */,
5BA33A8124B5602500D12515 /* BLELogRecord+BLELogSave.swift */,
30BE1CA923F108BA005DCE4F /* UploadFileData.swift */,
5B89D4CB25D33DA100FB3938 /* StateTerritory.swift */,
5B89D4D025D33F3100FB3938 /* JurisdictionalRestrictionActivity.swift */,
);
name = Structures;
sourceTree = "<group>";
@ -667,17 +732,23 @@
B6932CE8242627A9003D1810 /* Upload Data */,
5B728B4624B5667000654ABC /* BLELogViewController.swift */,
5B98B45625A2B1E1009651B7 /* ChangePostcodeViewController.swift */,
5B89D4DC25D356A400FB3938 /* CovidHeaderContentViewController.swift */,
5B92B0BF24F4DC3A0069C57D /* CovidStatisticsViewController.swift */,
5B9E41112521688700434B25 /* CSAlertViewController.swift */,
5BBE61B625633E8D00B8C983 /* CSGenericViewController.swift */,
5BA3623325DE133D002CFF41 /* CSGenericErrorController.swift */,
D8EB201A23FA722D001C60EC /* HelpNavController.swift */,
5D5F83AF23F045A800770DEF /* HomeViewController.swift */,
7FACD53923F25A9A0042A33A /* InitialScreenViewController.swift */,
5B92B09324D14AE00069C57D /* InternetConnectionViewController.swift */,
5B7ABF24244D3BC600BB249B /* IsolationSuccessViewController.swift */,
5961ABE92474E358004040DF /* MigrationViewController.swift */,
5BEDEF3E25CB938D00AEEC20 /* MainTabBarViewController.swift */,
7F19B4DC23F565850071A11E /* PogoInstructionsViewController.swift */,
5BD2419225832A7E00F78822 /* SelectStateTerritoryViewController.swift */,
5BEDEF5225CBC4A800AEEC20 /* RestrictionsViewController.swift */,
5B89D4D725D3557F00FB3938 /* RestrictionDetailsViewController.swift */,
5B89D4A825D0ED7100FB3938 /* RestrictionTableViewController.swift */,
5BD2419225832A7E00F78822 /* SelectableTableViewController.swift */,
5B92B0AD24EFADB00069C57D /* SettingsViewController.swift */,
B615C5A823FA403400345969 /* UIViewController + Extension.swift */,
);
@ -697,6 +768,7 @@
30E91BEE23EFEA44002D592A /* Views */ = {
isa = PBXGroup;
children = (
5B69C04E25D3695900DF536D /* ContentViews */,
5B9360EC24F6196A008859FC /* Cells */,
30E91BEA23EFEA0B002D592A /* CodeInputView.swift */,
0BC141AB24305D9C00399FA8 /* NSMutableString + Extensions.swift */,
@ -707,9 +779,13 @@
5B92B0BC24F4DBE20069C57D /* CovidStatisticsView.xib */,
5B9E410C2521683500434B25 /* CSAlertView.xib */,
5BBE61B025633B6D00B8C983 /* CSGenericContentView.xib */,
5BA3622E25DE12E6002CFF41 /* CSGenericErrorView.xib */,
59F25D6E245BED80002A7ED8 /* Debug.storyboard */,
5B92B0A424EF61480069C57D /* HomeView.xib */,
5B92B0B324F37E3E0069C57D /* InternetConnectionView.xib */,
5BD2419325832A7E00F78822 /* SelectStateTerritoryViewController.xib */,
5BEDEF5325CBC4A800AEEC20 /* RestrictionsView.xib */,
5B89D4A925D0ED7100FB3938 /* RestrictionTableView.xib */,
5BD2419325832A7E00F78822 /* SelectableTableViewController.xib */,
5B92B0AA24EFA3160069C57D /* SettingsView.xib */,
5DD41D4023DCB03B00FD4AB0 /* Main.storyboard */,
5B51ED58248627A8008CE722 /* UploadData.storyboard */,
@ -722,12 +798,13 @@
children = (
B605A7B02427429D008BA819 /* PlistHelper.swift */,
5B900FC02485C4EE00CAA419 /* String+Localization.swift */,
5B69C06525D382AF00DF536D /* String+HtmlAttributed.swift */,
0B1810112431EE610005D11F /* PhoneNumberParser.swift */,
596B189B24499591003E190F /* UploadHelper.swift */,
59898602245173C200966E61 /* URLHelper.swift */,
59F25D6E245BED80002A7ED8 /* Debug.storyboard */,
5B51ED4F2485D658008CE722 /* UILocalization.swift */,
5BA33A7A24B3FE2700D12515 /* UIFont + Traits.swift */,
5B89D4C025D239EB00FB3938 /* UIImage+imageColor.swift */,
);
name = Utils;
sourceTree = "<group>";
@ -848,6 +925,17 @@
path = RootCAs;
sourceTree = "<group>";
};
5B69C04E25D3695900DF536D /* ContentViews */ = {
isa = PBXGroup;
children = (
5B69C05B25D36E2A00DF536D /* RestrictionDetailsView.xib */,
5BA3624025E463B5002CFF41 /* WebContentView.xib */,
5B69C06025D36E3D00DF536D /* RestrictionDetailsView.swift */,
5BA3624525E4654E002CFF41 /* WebContentView.swift */,
);
name = ContentViews;
sourceTree = "<group>";
};
5B82435D2480DAB100705CB1 /* Internationalization */ = {
isa = PBXGroup;
children = (
@ -888,13 +976,16 @@
isa = PBXGroup;
children = (
5BD241BA25870B8900F78822 /* ExternalLinkTableViewCell.swift */,
5BD2419C25832DA600F78822 /* StateTerritoryTableViewCell.swift */,
5B9360ED24F619A8008859FC /* StatDetailedCell.xib */,
5B9360F024F619C8008859FC /* MainStatisticsHeader.xib */,
5B9360F924F73806008859FC /* StatisticsTableHeader.xib */,
5B9360FC24F73CE6008859FC /* LoadingViewCell.xib */,
5BD2419D25832DA600F78822 /* StateTerritoryTableViewCell.xib */,
5BD2419C25832DA600F78822 /* SelectableTableViewCell.swift */,
5BD241BB25870B8900F78822 /* ExternalLinkTableViewCell.xib */,
5B9360FC24F73CE6008859FC /* LoadingViewCell.xib */,
5B9360F024F619C8008859FC /* MainStatisticsHeader.xib */,
5B89D4B925D0F6D900FB3938 /* SelectionTableViewCell.xib */,
5B89D4B425D0F0BD00FB3938 /* SimpleTableViewCell.xib */,
5B9360ED24F619A8008859FC /* StatDetailedCell.xib */,
5BD2419D25832DA600F78822 /* SelectableTableViewCell.xib */,
5B9360F924F73806008859FC /* StatisticsTableHeader.xib */,
5B69C06A25D3983800DF536D /* TableSectionHeaderView.xib */,
);
name = Cells;
sourceTree = "<group>";
@ -954,6 +1045,7 @@
5B2E5B1A25AD156E00A021B0 /* ChangePostcodeAPI.swift */,
5B04074024BC0CEA00FAAFD0 /* MessageAPI.swift */,
5B92B0C224F4DE6E0069C57D /* StatisticsAPI.swift */,
5B69C07725D4D46800DF536D /* RestrictionsAPI.swift */,
59ACB573242F195A00E63E3C /* InitiateUploadAPI.swift */,
59ACB575242F404500E63E3C /* DataUploadS3.swift */,
FB12C4C2242F0FE9007E893B /* GetTempIdAPI.swift */,
@ -1227,15 +1319,18 @@
5B51ED62248715DE008CE722 /* InfoPlist.strings in Resources */,
5B98B45B25A2B1E1009651B7 /* ChangePostcodeViewController.xib in Resources */,
5B51ED56248627A8008CE722 /* UploadData.storyboard in Resources */,
5B89D4B625D0F0BD00FB3938 /* SimpleTableViewCell.xib in Resources */,
5B92B0BE24F4DBE20069C57D /* CovidStatisticsView.xib in Resources */,
5B9360FB24F73806008859FC /* StatisticsTableHeader.xib in Resources */,
5B92D6BD243018040049877B /* JMCTarget.json in Resources */,
5B69C05D25D36E2A00DF536D /* RestrictionDetailsView.xib in Resources */,
5B9360F224F619C8008859FC /* MainStatisticsHeader.xib in Resources */,
5BD2419725832A7E00F78822 /* SelectStateTerritoryViewController.xib in Resources */,
5BD2419725832A7E00F78822 /* SelectableTableViewController.xib in Resources */,
5B92D6BF243018040049877B /* NewFeedbackFlow.storyboard in Resources */,
59AF2EA92435801400ACCAF2 /* SFSRootCAG2.cer in Resources */,
59F25D6A245B917A002A7ED8 /* Spinner_home.json in Resources */,
5BED1E3E24A98EA90066C4D2 /* LaunchScreen_zh-Hans.storyboard in Resources */,
5BA3623025DE12E6002CFF41 /* CSGenericErrorView.xib in Resources */,
5B82435F2480DC2100705CB1 /* Localizable.strings in Resources */,
5B92D6C7243018040049877B /* CovidSafe-config.plist in Resources */,
59AF2EA0243560FD00ACCAF2 /* AmazonRootCA1.cer in Resources */,
@ -1245,9 +1340,11 @@
59AF2EAD2435801400ACCAF2 /* AmazonRootCA4.cer in Resources */,
59F25D6F245BED80002A7ED8 /* Debug.storyboard in Resources */,
5BED1E3B24A96D1C0066C4D2 /* LaunchScreen_ar.storyboard in Resources */,
5BD241A125832DA600F78822 /* StateTerritoryTableViewCell.xib in Resources */,
5BD241A125832DA600F78822 /* SelectableTableViewCell.xib in Resources */,
5BED1E4424A98EB60066C4D2 /* LaunchScreen_vi.storyboard in Resources */,
5BA3624225E463B6002CFF41 /* WebContentView.xib in Resources */,
5B30F78D24B817A100CDED63 /* LaunchScreen_el.storyboard in Resources */,
5B69C06C25D3983900DF536D /* TableSectionHeaderView.xib in Resources */,
5BBC571D25526F99005E90AA /* staging-Info.plist in Resources */,
5B9360FE24F73CE6008859FC /* LoadingViewCell.xib in Resources */,
5B92D6C9243018040049877B /* LaunchScreen_en.storyboard in Resources */,
@ -1255,14 +1352,17 @@
59AF2EAF2435801400ACCAF2 /* AmazonRootCA2.cer in Resources */,
5B92B0AC24EFA3160069C57D /* SettingsView.xib in Resources */,
5B92D6CB243018040049877B /* Assets.xcassets in Resources */,
5B89D4BB25D0F6DA00FB3938 /* SelectionTableViewCell.xib in Resources */,
5B92B0A324E0CD190069C57D /* LaunchScreen_tr.storyboard in Resources */,
5BED1E4124A98EAF0066C4D2 /* LaunchScreen_zh-Hant.storyboard in Resources */,
5BBE61B225633B6D00B8C983 /* CSGenericContentView.xib in Resources */,
5BEDEF5725CBC4A900AEEC20 /* RestrictionsView.xib in Resources */,
5B30F78A24B8179600CDED63 /* LaunchScreen_it.storyboard in Resources */,
5B337AB0245AA26300537620 /* Spinner_upload.json in Resources */,
5B92B0B524F37E3E0069C57D /* InternetConnectionView.xib in Resources */,
5B9360EF24F619A8008859FC /* StatDetailedCell.xib in Resources */,
5BED1E4724A98EC20066C4D2 /* LaunchScreen_ko.storyboard in Resources */,
5B89D4AD25D0ED7100FB3938 /* RestrictionTableView.xib in Resources */,
59AF2EAB2435801400ACCAF2 /* AmazonRootCA3.cer in Resources */,
5BD241BF25870B8900F78822 /* ExternalLinkTableViewCell.xib in Resources */,
5B92D6CF243018040049877B /* Main.storyboard in Resources */,
@ -1273,31 +1373,38 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5B89D4BA25D0F6D900FB3938 /* SelectionTableViewCell.xib in Resources */,
5B30F78924B8179600CDED63 /* LaunchScreen_it.storyboard in Resources */,
D8EB201D23FBE216001C60EC /* help_center_article_style.css in Resources */,
5B9360EE24F619A8008859FC /* StatDetailedCell.xib in Resources */,
5B51ED55248627A8008CE722 /* UploadData.storyboard in Resources */,
A767D313242DF1B000DC9E2A /* JMCTarget.json in Resources */,
5B69C05C25D36E2A00DF536D /* RestrictionDetailsView.xib in Resources */,
5B9360FD24F73CE6008859FC /* LoadingViewCell.xib in Resources */,
59AF2EA82435801400ACCAF2 /* SFSRootCAG2.cer in Resources */,
5B92B09F24E0CD070069C57D /* LaunchScreen_tr.storyboard in Resources */,
A767D312242DF1B000DC9E2A /* NewFeedbackFlow.storyboard in Resources */,
5B9360F124F619C8008859FC /* MainStatisticsHeader.xib in Resources */,
5BD241BE25870B8900F78822 /* ExternalLinkTableViewCell.xib in Resources */,
5BA3624125E463B6002CFF41 /* WebContentView.xib in Resources */,
5BED1E3D24A98EA90066C4D2 /* LaunchScreen_zh-Hans.storyboard in Resources */,
5B9360FA24F73806008859FC /* StatisticsTableHeader.xib in Resources */,
59F25D69245B917A002A7ED8 /* Spinner_home.json in Resources */,
5BD2419625832A7E00F78822 /* SelectStateTerritoryViewController.xib in Resources */,
5BD2419625832A7E00F78822 /* SelectableTableViewController.xib in Resources */,
5B9E410D2521683500434B25 /* CSAlertView.xib in Resources */,
5B92B0B424F37E3E0069C57D /* InternetConnectionView.xib in Resources */,
5BED1E4624A98EC20066C4D2 /* LaunchScreen_ko.storyboard in Resources */,
5BED1E3A24A96D1C0066C4D2 /* LaunchScreen_ar.storyboard in Resources */,
5BEDEF5625CBC4A900AEEC20 /* RestrictionsView.xib in Resources */,
5B30F78C24B817A100CDED63 /* LaunchScreen_el.storyboard in Resources */,
5B92B0A124E0CD140069C57D /* LaunchScreen_pa-IN.storyboard in Resources */,
5BBE61B125633B6D00B8C983 /* CSGenericContentView.xib in Resources */,
5B82435E2480DC2100705CB1 /* Localizable.strings in Resources */,
5B92D663243011B40049877B /* CovidSafe-config.plist in Resources */,
5B89D4B525D0F0BD00FB3938 /* SimpleTableViewCell.xib in Resources */,
5B69C06B25D3983800DF536D /* TableSectionHeaderView.xib in Resources */,
5BED1E4324A98EB60066C4D2 /* LaunchScreen_vi.storyboard in Resources */,
5B89D4AC25D0ED7100FB3938 /* RestrictionTableView.xib in Resources */,
59AF2E9F243560FD00ACCAF2 /* AmazonRootCA1.cer in Resources */,
5B51ED61248715DE008CE722 /* InfoPlist.strings in Resources */,
5B92B0AB24EFA3160069C57D /* SettingsView.xib in Resources */,
@ -1310,10 +1417,11 @@
5B92B0BD24F4DBE20069C57D /* CovidStatisticsView.xib in Resources */,
5B337AAF245AA26300537620 /* Spinner_upload.json in Resources */,
5B98B45A25A2B1E1009651B7 /* ChangePostcodeViewController.xib in Resources */,
5BD241A025832DA600F78822 /* StateTerritoryTableViewCell.xib in Resources */,
5BD241A025832DA600F78822 /* SelectableTableViewCell.xib in Resources */,
59AF2EAA2435801400ACCAF2 /* AmazonRootCA3.cer in Resources */,
5961ABED2474E464004040DF /* spinner_migrating_db.json in Resources */,
5DD41D4223DCB03B00FD4AB0 /* Main.storyboard in Resources */,
5BA3622F25DE12E6002CFF41 /* CSGenericErrorView.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1422,15 +1530,18 @@
5B92D67C243018040049877B /* LogViewController.swift in Sources */,
5B92D67D243018040049877B /* HomeViewController.swift in Sources */,
5B92D67E243018040049877B /* InfoViewController.swift in Sources */,
5BA3623525DE133D002CFF41 /* CSGenericErrorController.swift in Sources */,
5B92D67F243018040049877B /* PogoInstructionsViewController.swift in Sources */,
FBBBFCE82430A933002B174D /* PrivacyPolicyViewController.swift in Sources */,
5B51ED512485DF9C008CE722 /* UILocalization.swift in Sources */,
5BA33A8024B55EF200D12515 /* BLELogDB.swift in Sources */,
5B69C06225D36E3D00DF536D /* RestrictionDetailsView.swift in Sources */,
594E77C3247387B1009B8B34 /* EncounterDB+migration.swift in Sources */,
590546292543E0F6009B82AD /* SensorArray.swift in Sources */,
590C99332432C1C400A5EC71 /* UploadDataHomeViewController.swift in Sources */,
590546112543E0F5009B82AD /* BLEUtilities.swift in Sources */,
59B7417124514126006E1EEA /* RegistrationConsentViewController.swift in Sources */,
5B69C06725D382AF00DF536D /* String+HtmlAttributed.swift in Sources */,
5B92B0AF24EFADB00069C57D /* SettingsViewController.swift in Sources */,
5B92B0C124F4DC3A0069C57D /* CovidStatisticsViewController.swift in Sources */,
5B92D680243018040049877B /* CodeInputView.swift in Sources */,
@ -1440,6 +1551,7 @@
5B337AAD245A9EF800537620 /* UploadDataErrorViewController.swift in Sources */,
590888B02431B9E7008C9B9F /* UIColor + Extensions.swift in Sources */,
5B728B4E24B5A26D00654ABC /* debug.xcdatamodeld in Sources */,
5BEDEF4125CB938D00AEEC20 /* MainTabBarViewController.swift in Sources */,
5B2E5B1C25AD156E00A021B0 /* ChangePostcodeAPI.swift in Sources */,
5905460F2543E0F5009B82AD /* BLEDatabase.swift in Sources */,
5B92D74F243022EF0049877B /* DataUploadS3.swift in Sources */,
@ -1448,10 +1560,11 @@
5B92B09524D14AE00069C57D /* InternetConnectionViewController.swift in Sources */,
5B92D684243018040049877B /* AsyncAction.swift in Sources */,
5B92D685243018040049877B /* UILabelExtension.swift in Sources */,
5BD2419525832A7E00F78822 /* SelectStateTerritoryViewController.swift in Sources */,
5BD2419525832A7E00F78822 /* SelectableTableViewController.swift in Sources */,
5905462B2543E0F6009B82AD /* PayloadDataSupplier.swift in Sources */,
5B92D686243018040049877B /* AppDelegate.swift in Sources */,
5B92D687243018040049877B /* PhoneNumberViewController.swift in Sources */,
5BEDEF5525CBC4A900AEEC20 /* RestrictionsViewController.swift in Sources */,
5BA33A7C24B41ECA00D12515 /* UIFont + Traits.swift in Sources */,
5961ABEB2474E358004040DF /* MigrationViewController.swift in Sources */,
5B110C11248F275B00B68291 /* SelectCountryViewController.swift in Sources */,
@ -1464,9 +1577,11 @@
590888B42431B9F5008C9B9F /* UploadDataNavigationController.swift in Sources */,
5B92D68C243018040049877B /* GetJMCTargetAction.swift in Sources */,
5B92D68D243018040049877B /* Logging.swift in Sources */,
5B89D4D225D33F3100FB3938 /* JurisdictionalRestrictionActivity.swift in Sources */,
0B42D0DF2432B3A800E4F44C /* Question1ErrorViewController.swift in Sources */,
5B92D68E243018040049877B /* HelpNavController.swift in Sources */,
5B92D68F243018040049877B /* OTPViewController.swift in Sources */,
5B89D4DE25D356A400FB3938 /* CovidHeaderContentViewController.swift in Sources */,
596B189A24496D32003E190F /* Encounter+Util.swift in Sources */,
5904A5C32462471A008C8012 /* EncounterV1toV2.xcmappingmodel in Sources */,
5B92D690243018040049877B /* Encounter+CoreDataClass.swift in Sources */,
@ -1476,6 +1591,7 @@
597BB7CD245FAEC00067A2E2 /* SecKey+CovidSafe.swift in Sources */,
597BB7D0245FB1250067A2E2 /* Crypto.swift in Sources */,
5B92D693243018040049877B /* UIColor+Hex.swift in Sources */,
5B69C07925D4D46800DF536D /* RestrictionsAPI.swift in Sources */,
590546372543E0F6009B82AD /* StatisticsLog.swift in Sources */,
5B92D694243018040049877B /* RegistrationIntroViewController.swift in Sources */,
5B92D695243018040049877B /* DeviceInfoExtension.swift in Sources */,
@ -1519,10 +1635,12 @@
590546392543E0F6009B82AD /* SensorDelegate.swift in Sources */,
5B92D6A9243018040049877B /* Errors.swift in Sources */,
5B92D6AA243018040049877B /* UINavigationBar+Style.swift in Sources */,
5B89D4D925D3557F00FB3938 /* RestrictionDetailsViewController.swift in Sources */,
590546172543E0F6009B82AD /* AwakeSensor.swift in Sources */,
5B92D6AB243018040049877B /* UploadFileData.swift in Sources */,
590888B52431BA76008C9B9F /* NSMutableString + Extensions.swift in Sources */,
5B92D6AC243018040049877B /* BundleInfoExtension.swift in Sources */,
5B89D4C225D239EB00FB3938 /* UIImage+imageColor.swift in Sources */,
5905460D2543E0F5009B82AD /* BLESensor.swift in Sources */,
5BBE61B825633E8D00B8C983 /* CSGenericViewController.swift in Sources */,
5909E4AC245043C400D41C26 /* CovidPersistentContainer.swift in Sources */,
@ -1540,14 +1658,17 @@
590888B62431BA7C008C9B9F /* Question3ErrorViewController.swift in Sources */,
590546332543E0F6009B82AD /* SensorLogger.swift in Sources */,
5B900FC22485C4EE00CAA419 /* String+Localization.swift in Sources */,
5BD2419F25832DA600F78822 /* StateTerritoryTableViewCell.swift in Sources */,
5BD2419F25832DA600F78822 /* SelectableTableViewCell.swift in Sources */,
59AF2E9D2435581600ACCAF2 /* CovidNetworking.swift in Sources */,
596B189D24499591003E190F /* UploadHelper.swift in Sources */,
590888AF2431B9E3008C9B9F /* UITextView + Extensions.swift in Sources */,
5B92D6B3243018040049877B /* PushNotificationConstants.swift in Sources */,
5B92D6B4243018040049877B /* UIViewController + Extension.swift in Sources */,
5BA3624725E4654F002CFF41 /* WebContentView.swift in Sources */,
5B92D6B5243018040049877B /* Encounter+CoreDataProperties.swift in Sources */,
5B89D4AB25D0ED7100FB3938 /* RestrictionTableViewController.swift in Sources */,
5B92D6B6243018040049877B /* Issue.swift in Sources */,
5B89D4CD25D33DA100FB3938 /* StateTerritory.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1583,19 +1704,22 @@
7F19B4DD23F565850071A11E /* PogoInstructionsViewController.swift in Sources */,
30E91BEB23EFEA0B002D592A /* CodeInputView.swift in Sources */,
597BB7CF245FB1250067A2E2 /* Crypto.swift in Sources */,
5BD2419E25832DA600F78822 /* StateTerritoryTableViewCell.swift in Sources */,
5BD2419E25832DA600F78822 /* SelectableTableViewCell.swift in Sources */,
30BE1CAF23F1349F005DCE4F /* EncounterRecord.swift in Sources */,
590546102543E0F5009B82AD /* BLEUtilities.swift in Sources */,
590546382543E0F6009B82AD /* SensorDelegate.swift in Sources */,
59490B64245FE3DA00C9802B /* EncounterV2Mapping.swift in Sources */,
590546282543E0F6009B82AD /* SensorArray.swift in Sources */,
5BD241BC25870B8900F78822 /* ExternalLinkTableViewCell.swift in Sources */,
5B69C07825D4D46800DF536D /* RestrictionsAPI.swift in Sources */,
C58D817723F169DB00345771 /* RegistrationSuccessViewController.swift in Sources */,
5BA3623425DE133D002CFF41 /* CSGenericErrorController.swift in Sources */,
59ACB574242F195A00E63E3C /* InitiateUploadAPI.swift in Sources */,
A767D324242DF1B100DC9E2A /* AsyncAction.swift in Sources */,
B60F8BE4242659810007A641 /* UILabelExtension.swift in Sources */,
5DD41D3B23DCB03B00FD4AB0 /* AppDelegate.swift in Sources */,
5D8B248B23F146C500DBB74D /* PhoneNumberViewController.swift in Sources */,
5BA3624625E4654F002CFF41 /* WebContentView.swift in Sources */,
A767D32D242DF1B100DC9E2A /* NewFeedbackFlowController.swift in Sources */,
590546362543E0F6009B82AD /* StatisticsLog.swift in Sources */,
A767D319242DF1B000DC9E2A /* Outcome.swift in Sources */,
@ -1611,6 +1735,7 @@
5B04074124BC0CEA00FAAFD0 /* MessageAPI.swift in Sources */,
30BE1CB523F15D47005DCE4F /* OTPViewController.swift in Sources */,
5905460C2543E0F5009B82AD /* BLESensor.swift in Sources */,
5B69C06125D36E3D00DF536D /* RestrictionDetailsView.swift in Sources */,
5B900FC12485C4EE00CAA419 /* String+Localization.swift in Sources */,
5D8DD06123E319B300E097EF /* Encounter+CoreDataClass.swift in Sources */,
594E77BF24736B77009B8B34 /* EncounterDB.swift in Sources */,
@ -1627,6 +1752,7 @@
0B69E7ED2430D72900561DD9 /* UploadDataNavigationController.swift in Sources */,
A767D320242DF1B100DC9E2A /* DeviceInfoExtension.swift in Sources */,
5B7ABF28244D6BE100BB249B /* UnderSixteenViewController.swift in Sources */,
5B89D4CC25D33DA100FB3938 /* StateTerritory.swift in Sources */,
A767D325242DF1B100DC9E2A /* SendFeedbackAction.swift in Sources */,
C5D209FC23F4476F007233BE /* UITextViewFixed.swift in Sources */,
C585C83B23EEB99B0061B7C6 /* GradientButton.swift in Sources */,
@ -1634,6 +1760,7 @@
590546342543E0F6009B82AD /* ContactLog.swift in Sources */,
597BB7CC245FAEC00067A2E2 /* SecKey+CovidSafe.swift in Sources */,
5B92B0AE24EFADB00069C57D /* SettingsViewController.swift in Sources */,
5B89D4D825D3557F00FB3938 /* RestrictionDetailsViewController.swift in Sources */,
5B7ABF25244D3BC600BB249B /* IsolationSuccessViewController.swift in Sources */,
A767D331242DF1B100DC9E2A /* ViewControllerFactory.swift in Sources */,
0BA617CE242E09B200E6C631 /* FeedbackViewController.swift in Sources */,
@ -1651,10 +1778,12 @@
5BFFD94B242EC120003AEF4F /* PhoneValidationAPI.swift in Sources */,
59AF2EB22435A38100ACCAF2 /* CovidRequestRetrier.swift in Sources */,
592CBB802441A583001FFCE9 /* PersonalDetailsViewController.swift in Sources */,
5B89D4DD25D356A400FB3938 /* CovidHeaderContentViewController.swift in Sources */,
A767D330242DF1B100DC9E2A /* UIWindow+TopMost.swift in Sources */,
D8DEB6822423AE2E00D99925 /* HowItWorksViewController.swift in Sources */,
5B2E5B1B25AD156E00A021B0 /* ChangePostcodeAPI.swift in Sources */,
5B92B0C324F4DE6F0069C57D /* StatisticsAPI.swift in Sources */,
5B89D4C125D239EB00FB3938 /* UIImage+imageColor.swift in Sources */,
5905462C2543E0F6009B82AD /* TextFile.swift in Sources */,
C56CF43F23F18A15006B05B0 /* OnboardingStep4ViewController.swift in Sources */,
A767D328242DF1B100DC9E2A /* PresentFeedbackExtensions.swift in Sources */,
@ -1663,12 +1792,16 @@
0B22A56B242F286900D1FE60 /* UINavigationBar+Style.swift in Sources */,
0B1810122431EE610005D11F /* PhoneNumberParser.swift in Sources */,
1B86119B24303FA200EA4B6B /* Question3ErrorViewController.swift in Sources */,
5BEDEF5425CBC4A900AEEC20 /* RestrictionsViewController.swift in Sources */,
30BE1CAA23F108BA005DCE4F /* UploadFileData.swift in Sources */,
5B89D4D125D33F3100FB3938 /* JurisdictionalRestrictionActivity.swift in Sources */,
5BEDEF4025CB938D00AEEC20 /* MainTabBarViewController.swift in Sources */,
5909E4AB245043C400D41C26 /* CovidPersistentContainer.swift in Sources */,
A767D31D242DF1B000DC9E2A /* BundleInfoExtension.swift in Sources */,
A767D32C242DF1B100DC9E2A /* FeedbackSettings.swift in Sources */,
A767D31A242DF1B000DC9E2A /* JMCTargetJSONFromDisk.swift in Sources */,
5BBE61B725633E8D00B8C983 /* CSGenericViewController.swift in Sources */,
5B89D4AA25D0ED7100FB3938 /* RestrictionTableViewController.swift in Sources */,
5B92B09424D14AE00069C57D /* InternetConnectionViewController.swift in Sources */,
A767D334242DF1B100DC9E2A /* Action.swift in Sources */,
59AF2E992435533A00ACCAF2 /* CovidCertificates.swift in Sources */,
@ -1678,10 +1811,12 @@
A767D31F242DF1B000DC9E2A /* HTTPPostFeedbackAction.swift in Sources */,
7F36305F23F7F81400CC6E1D /* PushNotificationConstants.swift in Sources */,
59AF2E9C2435581600ACCAF2 /* CovidNetworking.swift in Sources */,
5BD2419425832A7E00F78822 /* SelectStateTerritoryViewController.swift in Sources */,
5BD2419425832A7E00F78822 /* SelectableTableViewController.swift in Sources */,
5BD2419425832A7E00F78822 /* SelectableTableViewController.swift in Sources */,
596B189C24499591003E190F /* UploadHelper.swift in Sources */,
5B51ED502485D658008CE722 /* UILocalization.swift in Sources */,
1B86119724303F8500EA4B6B /* Question1ErrorViewController.swift in Sources */,
5B69C06625D382AF00DF536D /* String+HtmlAttributed.swift in Sources */,
B615C5A923FA403500345969 /* UIViewController + Extension.swift in Sources */,
1B86119324303F4A00EA4B6B /* Question2ViewController.swift in Sources */,
5D8DD06223E319B300E097EF /* Encounter+CoreDataProperties.swift in Sources */,
@ -1832,7 +1967,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 108;
CURRENT_PROJECT_VERSION = 111;
DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1840,7 +1975,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2;
MARKETING_VERSION = 2.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_NAME = COVIDSafe;
@ -1916,7 +2051,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 108;
CURRENT_PROJECT_VERSION = 111;
DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1924,7 +2059,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2;
MARKETING_VERSION = 2.3;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_NAME = COVIDSafe;
PROVISIONING_PROFILE_SPECIFIER = "";
@ -1944,7 +2079,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 107;
CURRENT_PROJECT_VERSION = 110;
DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/staging-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1952,10 +2087,10 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2;
MARKETING_VERSION = 2.3;
ONLY_ACTIVE_ARCH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe.uat;
PRODUCT_MODULE_NAME = COVIDSafe;
PRODUCT_NAME = "COVIDSafe-staging";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -1974,7 +2109,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 107;
CURRENT_PROJECT_VERSION = 110;
DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/staging-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1982,10 +2117,10 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2;
MARKETING_VERSION = 2.3;
ONLY_ACTIVE_ARCH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe.uat;
PRODUCT_MODULE_NAME = COVIDSafe;
PRODUCT_NAME = "COVIDSafe-staging";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -2004,7 +2139,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 107;
CURRENT_PROJECT_VERSION = 110;
DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/staging-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -2012,9 +2147,9 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2;
MARKETING_VERSION = 2.3;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe.uat;
PRODUCT_MODULE_NAME = COVIDSafe;
PRODUCT_NAME = "COVIDSafe-staging";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -2034,7 +2169,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 107;
CURRENT_PROJECT_VERSION = 110;
DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/staging-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -2042,9 +2177,9 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2;
MARKETING_VERSION = 2.3;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe.uat;
PRODUCT_MODULE_NAME = COVIDSafe;
PRODUCT_NAME = "COVIDSafe-staging";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -2182,7 +2317,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 108;
CURRENT_PROJECT_VERSION = 111;
DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -2190,7 +2325,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2;
MARKETING_VERSION = 2.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_NAME = COVIDSafe;
@ -2210,7 +2345,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 108;
CURRENT_PROJECT_VERSION = 111;
DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -2218,7 +2353,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2;
MARKETING_VERSION = 2.3;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_NAME = COVIDSafe;
PROVISIONING_PROFILE_SPECIFIER = "";

View file

@ -0,0 +1,109 @@
//
// RestrictionsAPI.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import Foundation
import Alamofire
class RestrictionsAPI: CovidSafeAuthenticatedAPI {
static func getRestrictions(forState: StateTerritory, completion: @escaping (StateRestriction?, CovidSafeAPIError?) -> Void) {
guard forState != .AU else {
completion(nil, .RequestError)
return
}
guard let apiHost = PlistHelper.getvalueFromInfoPlist(withKey: "API_Host", plistName: "CovidSafe-config") else {
completion(nil, .RequestError)
return
}
guard let headers = try? authenticatedHeaders() else {
completion(nil, .TokenExpiredError)
return
}
let params = ["state": "\(forState.rawValue.lowercased())"]
CovidNetworking.shared.session.request("\(apiHost)/restrictions",
method: .get,
parameters: params,
headers: headers
).validate().responseDecodable(of: StateRestriction.self) { (response) in
switch response.result {
case .success:
guard let restrictionsResponse = response.value else { return }
completion(restrictionsResponse, nil)
case .failure(_):
guard let statusCode = response.response?.statusCode else {
completion(nil, .UnknownError)
return
}
if (statusCode == 200) {
completion(nil, .ResponseError)
return
}
if statusCode == 401, let respData = response.data {
completion(nil, processUnauthorizedError(respData))
return
}
if (statusCode >= 400 && statusCode < 500) {
completion(nil, .RequestError)
return
}
completion(nil, .ServerError)
}
}
}
}
struct StateRestriction: Codable {
let state: String?
let activities: [RestrictionsActivity]?
enum CodingKeys: String, CodingKey {
case state
case activities
}
var stateTerritory: StateTerritory {
get {
guard let stateStr = state else {
return StateTerritory.AU
}
return StateTerritory(rawValue: stateStr.uppercased()) ?? StateTerritory.AU
}
}
}
struct RestrictionsActivity: Codable {
let activityTitle: String?
let dateUpdated: String?
let mainContent: String?
let sections: [RestrictionActivitySection]?
enum CodingKeys: String, CodingKey {
case activityTitle = "activity-title"
case dateUpdated = "content-date-title"
case mainContent = "content"
case sections = "subheadings"
}
}
struct RestrictionActivitySection: Codable {
let title: String?
let content: String?
enum CodingKeys: String, CodingKey {
case title
case content
}
}

View file

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "Group 149.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View file

@ -0,0 +1,124 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 -0.274246 cm
0.074510 0.074510 0.074510 scn
23.845964 10.989250 m
24.009390 10.701760 24.017559 10.350384 23.870478 10.054908 c
20.953360 4.065521 l
20.781763 3.706158 20.405888 3.474566 20.005499 3.474566 c
17.292658 3.474566 l
16.998495 3.474566 16.720675 3.594355 16.524565 3.801987 c
13.909780 6.541134 l
21.925732 14.447124 l
23.845964 10.989250 l
h
6.130794 9.655615 m
5.468926 10.350384 5.509781 11.436459 6.220676 12.083313 c
6.931571 12.730166 8.042855 12.690237 8.704723 12.003454 c
11.507446 9.064660 l
20.168922 17.609520 l
18.240519 21.075378 l
18.011724 21.490643 17.382542 21.410784 17.268145 20.955589 c
16.491880 17.897011 l
16.418341 17.617504 16.140518 17.449802 15.854526 17.521675 c
13.141687 18.176514 l
12.855695 18.248386 12.684099 18.519907 12.757640 18.799412 c
13.019119 19.837572 l
13.100831 20.164991 12.847524 20.476439 12.504333 20.476439 c
9.824178 20.476439 l
9.701610 20.476439 9.579041 20.428524 9.480988 20.348667 c
0.370094 12.714194 l
0.018732 12.418718 -0.095664 11.939567 0.084102 11.532289 c
2.470093 6.038024 l
2.845969 5.167566 3.924567 4.832161 4.749859 5.327284 c
8.255306 7.427562 l
6.130794 9.655615 l
h
19.384487 0.663549 m
19.980984 1.677750 l
20.283318 2.196831 19.907444 2.835699 19.294603 2.835699 c
18.101606 2.835699 l
17.496937 2.835699 17.112892 2.188845 17.415226 1.677750 c
18.011726 0.663549 l
18.322231 0.144468 19.082153 0.144468 19.384487 0.663549 c
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 6.315796 5.131714 cm
0.074510 0.074510 0.074510 scn
5.150623 0.104817 m
5.134279 0.104817 l
4.831944 0.112803 4.554125 0.232594 4.349845 0.448211 c
0.296929 4.688696 l
-0.119803 5.119931 -0.095289 5.798727 0.354127 6.206005 c
0.795372 6.613283 1.489924 6.589326 1.906655 6.150105 c
5.183307 2.724176 l
15.805869 13.201608 l
16.230772 13.624858 16.925323 13.624857 17.358397 13.209593 c
17.791471 12.794329 17.791471 12.115532 17.366570 11.692282 c
5.935058 0.416267 l
5.722606 0.216621 5.444786 0.104817 5.150623 0.104817 c
h
f
n
Q
endstream
endobj
3 0 obj
2067
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 24.000000 21.071930 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000002157 00000 n
0000002180 00000 n
0000002353 00000 n
0000002427 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
2486
%%EOF

View file

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "chevron-right-green.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View file

@ -0,0 +1,92 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 9.000000 3.804688 cm
0.000000 0.400000 0.105882 scn
-0.707107 2.902419 m
-1.097631 2.511895 -1.097631 1.878730 -0.707107 1.488206 c
-0.316583 1.097681 0.316583 1.097681 0.707107 1.488206 c
-0.707107 2.902419 l
h
6.000000 8.195312 m
6.707107 7.488206 l
7.097631 7.878730 7.097631 8.511895 6.707107 8.902419 c
6.000000 8.195312 l
h
0.707107 14.902419 m
0.316583 15.292944 -0.316583 15.292944 -0.707107 14.902419 c
-1.097631 14.511895 -1.097631 13.878730 -0.707107 13.488206 c
0.707107 14.902419 l
h
0.707107 1.488206 m
6.707107 7.488206 l
5.292893 8.902419 l
-0.707107 2.902419 l
0.707107 1.488206 l
h
6.707107 8.902419 m
0.707107 14.902419 l
-0.707107 13.488206 l
5.292893 7.488206 l
6.707107 8.902419 l
h
f
n
Q
endstream
endobj
3 0 obj
778
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 24.000000 24.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000000868 00000 n
0000000890 00000 n
0000001063 00000 n
0000001137 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
1196
%%EOF

View file

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "unlock 1.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View file

@ -0,0 +1,164 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 3.000000 0.000000 cm
0.000000 0.000000 0.000000 scn
2.000000 12.000000 m
16.000000 12.000000 l
16.000000 14.000000 l
2.000000 14.000000 l
2.000000 12.000000 l
h
16.000000 12.000000 m
16.552284 12.000000 17.000000 11.552285 17.000000 11.000000 c
19.000000 11.000000 l
19.000000 12.656855 17.656855 14.000000 16.000000 14.000000 c
16.000000 12.000000 l
h
17.000000 11.000000 m
17.000000 4.000000 l
19.000000 4.000000 l
19.000000 11.000000 l
17.000000 11.000000 l
h
17.000000 4.000000 m
17.000000 3.447715 16.552284 3.000000 16.000000 3.000000 c
16.000000 1.000000 l
17.656855 1.000000 19.000000 2.343145 19.000000 4.000000 c
17.000000 4.000000 l
h
16.000000 3.000000 m
2.000000 3.000000 l
2.000000 1.000000 l
16.000000 1.000000 l
16.000000 3.000000 l
h
2.000000 3.000000 m
1.447715 3.000000 1.000000 3.447715 1.000000 4.000000 c
-1.000000 4.000000 l
-1.000000 2.343145 0.343146 1.000000 2.000000 1.000000 c
2.000000 3.000000 l
h
1.000000 4.000000 m
1.000000 11.000000 l
-1.000000 11.000000 l
-1.000000 4.000000 l
1.000000 4.000000 l
h
1.000000 11.000000 m
1.000000 11.552285 1.447715 12.000000 2.000000 12.000000 c
2.000000 14.000000 l
0.343146 14.000000 -1.000000 12.656855 -1.000000 11.000000 c
1.000000 11.000000 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 7.000000 10.880859 cm
0.000000 0.000000 0.000000 scn
-0.999997 2.119109 m
-0.999997 1.566824 -0.552282 1.119109 0.000003 1.119109 c
0.552287 1.119109 1.000003 1.566824 1.000003 2.119109 c
-0.999997 2.119109 l
h
0.000003 6.119109 m
1.000003 6.119109 l
1.000002 6.120114 l
0.000003 6.119109 l
h
8.920002 6.920114 m
9.029903 6.378875 9.557758 6.029207 10.098997 6.139109 c
10.640237 6.249011 10.989905 6.776865 10.880003 7.318104 c
8.920002 6.920114 l
h
1.000003 2.119109 m
1.000003 6.119109 l
-0.999997 6.119109 l
-0.999997 2.119109 l
1.000003 2.119109 l
h
1.000002 6.120114 m
0.999005 7.112075 1.366627 8.069021 2.031501 8.805181 c
0.547251 10.145704 l
-0.450060 9.041465 -1.001492 7.606046 -0.999997 6.118104 c
1.000002 6.120114 l
h
2.031501 8.805181 m
2.696375 9.541340 3.611066 10.004192 4.598005 10.103883 c
4.397008 12.093758 l
2.916598 11.944221 1.544562 11.249944 0.547251 10.145704 c
2.031501 8.805181 l
h
4.598005 10.103883 m
5.584945 10.203574 6.573720 9.932991 7.372380 9.344664 c
8.558571 10.954928 l
7.360580 11.837420 5.877418 12.243294 4.397008 12.093758 c
4.598005 10.103883 l
h
7.372380 9.344664 m
8.171041 8.756336 8.722607 7.892237 8.920002 6.920114 c
10.880003 7.318104 l
10.583910 8.776289 9.756561 10.072437 8.558571 10.954928 c
7.372380 9.344664 l
h
f
n
Q
endstream
endobj
3 0 obj
2608
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 24.000000 24.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000002698 00000 n
0000002721 00000 n
0000002894 00000 n
0000002968 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
3027
%%EOF

View file

@ -46,6 +46,9 @@ class BluetraceManager: SensorDelegate {
sensor?.start()
}
func addDelegateToSensors(delegate: SensorDelegate) {
sensor?.add(delegate: delegate)
}
func turnOnLocationSensor() {
guard let sensorArray = sensor as? SensorArray else {

View file

@ -0,0 +1,61 @@
//
// CSGenericErrorViewController.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import UIKit
import SafariServices
class CSGenericErrorViewController: UIViewController {
@IBOutlet weak var errorTitleLabel: UILabel!
@IBOutlet weak var errorDescriptionText: UILabel!
@IBOutlet weak var mainButton: UIButton!
@IBOutlet weak var secondaryButton: UIButton!
var errorViewModel: CSGenericErrorViewModel?
override func viewDidLoad() {
super.viewDidLoad()
guard let viewModel = errorViewModel else {
return
}
// set title and content
errorTitleLabel.font = UIFont.preferredFont(for: .title3, weight: .semibold)
errorTitleLabel.text = viewModel.errorTitle
errorDescriptionText.text = viewModel.errorContentDescription
//set button label and action
mainButton.setTitle(viewModel.mainButtonLabel, for: .normal)
mainButton.addTarget(self, action: #selector(buttonPressed), for: .touchUpInside)
//set button label and action
secondaryButton.setTitle(viewModel.secondaryButtonLabel, for: .normal)
secondaryButton.addTarget(self, action: #selector(buttonPressed), for: .touchUpInside)
}
@objc func buttonPressed(sender: UIButton!) {
if sender == mainButton {
self.dismiss(animated: true, completion: errorViewModel?.mainButtonCallback)
} else if sender == secondaryButton {
self.dismiss(animated: true, completion: errorViewModel?.secondaryButtonCallback)
}
}
@IBAction func closeBtnTapped(_ sender: Any) {
dismiss(animated: true)
}
}
struct CSGenericErrorViewModel {
var errorTitle: String
var errorContentDescription: String
var mainButtonLabel: String
var mainButtonCallback: (() -> Void)?
var secondaryButtonLabel: String
var secondaryButtonCallback: (() -> Void)?
}

View file

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina5_5" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CSGenericErrorViewController" customModule="COVIDSafe" customModuleProvider="target">
<connections>
<outlet property="errorDescriptionText" destination="izF-hv-X5C" id="J0b-zA-8f1"/>
<outlet property="errorTitleLabel" destination="6Fn-I8-pSW" id="mri-bx-gtk"/>
<outlet property="mainButton" destination="Bty-iK-9dk" id="zT8-5f-Ibu"/>
<outlet property="secondaryButton" destination="Zcy-8u-7SZ" id="ePJ-uD-OFx"/>
<outlet property="view" destination="Ajs-i9-nSX" id="8mr-0z-SuJ"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="Ajs-i9-nSX">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6wZ-cd-QHx">
<rect key="frame" x="32" y="87.333333333333314" width="350" height="561.33333333333348"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="CovidSafe-Circle-Black" translatesAutoresizingMaskIntoConstraints="NO" id="O0I-6t-0QT">
<rect key="frame" x="70" y="0.0" width="210" height="210"/>
<constraints>
<constraint firstAttribute="width" secondItem="O0I-6t-0QT" secondAttribute="height" multiplier="1:1" id="NLC-Sc-L8W"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="izF-hv-X5C">
<rect key="frame" x="0.0" y="325" width="350" height="108.33333333333331"/>
<string key="text">Try uploading your data again.
Refer to this error code if a state or territory health official asks for it:
[Error code]</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Bty-iK-9dk" customClass="GradientButton" customModule="COVIDSafe" customModuleProvider="target">
<rect key="frame" x="0.0" y="457.33333333333331" width="350" height="48"/>
<color key="backgroundColor" red="0.0" green="0.40000000000000002" blue="0.1058823529" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="48" id="iPZ-6s-oeG"/>
</constraints>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
<color key="tintColor" red="0.0" green="0.54117647059999996" blue="0.13725490200000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<state key="normal" title="Try again">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizationKey" value="dialog_error_uploading_positive"/>
</userDefinedRuntimeAttributes>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Zcy-8u-7SZ" customClass="GradientButton" customModule="COVIDSafe" customModuleProvider="target">
<rect key="frame" x="0.0" y="513.33333333333326" width="350" height="48"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="48" id="xBa-93-KrI"/>
</constraints>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
<color key="tintColor" red="0.0" green="0.54117647059999996" blue="0.13725490200000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<state key="normal" title="Cancel">
<color key="titleColor" red="0.0" green="0.54117647059999996" blue="0.13725490200000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizationKey" value="dialog_error_uploading_negative"/>
</userDefinedRuntimeAttributes>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Your upload failed" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6Fn-I8-pSW">
<rect key="frame" x="32" y="274" width="286" height="24"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle3"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizationKey" value="upload_fail_heading"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="6Fn-I8-pSW" firstAttribute="top" secondItem="O0I-6t-0QT" secondAttribute="bottom" constant="64" id="233-cz-AES"/>
<constraint firstAttribute="trailing" secondItem="izF-hv-X5C" secondAttribute="trailing" id="2es-QX-BBH"/>
<constraint firstItem="Zcy-8u-7SZ" firstAttribute="top" secondItem="Bty-iK-9dk" secondAttribute="bottom" constant="8" id="4nF-tv-7jS"/>
<constraint firstAttribute="bottom" secondItem="Zcy-8u-7SZ" secondAttribute="bottom" id="6aR-BN-1VE"/>
<constraint firstItem="O0I-6t-0QT" firstAttribute="centerX" secondItem="6wZ-cd-QHx" secondAttribute="centerX" id="8ba-eW-tYD"/>
<constraint firstAttribute="trailing" secondItem="6Fn-I8-pSW" secondAttribute="trailing" constant="32" id="EaC-aB-QKO"/>
<constraint firstItem="Zcy-8u-7SZ" firstAttribute="width" secondItem="Bty-iK-9dk" secondAttribute="width" id="Nl8-QL-zOs"/>
<constraint firstItem="Bty-iK-9dk" firstAttribute="top" secondItem="izF-hv-X5C" secondAttribute="bottom" constant="24" id="W2R-F0-jKu"/>
<constraint firstItem="Zcy-8u-7SZ" firstAttribute="leading" secondItem="6wZ-cd-QHx" secondAttribute="leading" id="aCA-SA-yc8"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="O0I-6t-0QT" secondAttribute="trailing" constant="70" id="byK-ZQ-6cT"/>
<constraint firstItem="6Fn-I8-pSW" firstAttribute="leading" secondItem="6wZ-cd-QHx" secondAttribute="leading" constant="32" id="cdw-Kg-SmI"/>
<constraint firstItem="izF-hv-X5C" firstAttribute="top" secondItem="6Fn-I8-pSW" secondAttribute="bottom" constant="27" id="kaf-zz-1Yy"/>
<constraint firstItem="izF-hv-X5C" firstAttribute="leading" secondItem="6wZ-cd-QHx" secondAttribute="leading" id="oFl-KI-fQj"/>
<constraint firstItem="O0I-6t-0QT" firstAttribute="top" secondItem="6wZ-cd-QHx" secondAttribute="top" id="pQy-az-wa4"/>
<constraint firstAttribute="trailing" secondItem="Bty-iK-9dk" secondAttribute="trailing" id="qPV-Go-96i"/>
<constraint firstItem="O0I-6t-0QT" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="6wZ-cd-QHx" secondAttribute="leading" constant="70" id="rpl-M5-jpd"/>
<constraint firstAttribute="trailing" secondItem="Zcy-8u-7SZ" secondAttribute="trailing" id="sKp-7x-U10"/>
<constraint firstItem="Bty-iK-9dk" firstAttribute="leading" secondItem="6wZ-cd-QHx" secondAttribute="leading" id="y3A-he-oKh"/>
</constraints>
</view>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yAI-oH-bE6" userLabel="BackBtn">
<rect key="frame" x="354" y="16" width="44" height="44"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="KpF-da-Ao4"/>
<constraint firstAttribute="height" constant="44" id="jLr-Sc-ZzG"/>
</constraints>
<state key="normal" image="closeButton"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localVOLabelKey" value="global_close"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="closeBtnTapped:" destination="-1" eventType="touchUpInside" id="8jl-mZ-zfa"/>
</connections>
</button>
</subviews>
<viewLayoutGuide key="safeArea" id="bWl-nI-rcR"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="bWl-nI-rcR" firstAttribute="trailing" secondItem="yAI-oH-bE6" secondAttribute="trailing" constant="16" id="6DC-tz-voA"/>
<constraint firstItem="6wZ-cd-QHx" firstAttribute="leading" secondItem="Ajs-i9-nSX" secondAttribute="leading" constant="32" id="H1e-xj-Ryb"/>
<constraint firstItem="6wZ-cd-QHx" firstAttribute="centerY" secondItem="Ajs-i9-nSX" secondAttribute="centerY" id="M8a-hE-Ydx"/>
<constraint firstItem="bWl-nI-rcR" firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="6wZ-cd-QHx" secondAttribute="bottom" constant="10" id="OMJ-VA-zkw"/>
<constraint firstAttribute="trailing" secondItem="6wZ-cd-QHx" secondAttribute="trailing" constant="32" id="Vt0-0l-OfF"/>
<constraint firstItem="6wZ-cd-QHx" firstAttribute="top" relation="greaterThanOrEqual" secondItem="yAI-oH-bE6" secondAttribute="top" constant="10" id="WOA-YE-U1y"/>
<constraint firstItem="yAI-oH-bE6" firstAttribute="top" secondItem="bWl-nI-rcR" secondAttribute="top" constant="16" id="cty-Ar-XCw"/>
<constraint firstItem="6wZ-cd-QHx" firstAttribute="centerX" secondItem="Ajs-i9-nSX" secondAttribute="centerX" id="xJH-gs-7eF"/>
</constraints>
<point key="canvasLocation" x="-52" y="-593"/>
</view>
</objects>
<designables>
<designable name="Bty-iK-9dk">
<size key="intrinsicContentSize" width="73" height="33"/>
</designable>
<designable name="Zcy-8u-7SZ">
<size key="intrinsicContentSize" width="55" height="33"/>
</designable>
</designables>
<resources>
<image name="CovidSafe-Circle-Black" width="240" height="240"/>
<image name="closeButton" width="24" height="24"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View file

@ -14,6 +14,7 @@ class ChangePostcodeViewController: UIViewController {
@IBOutlet weak var postcodeTextField: UITextField!
@IBOutlet weak var postcodeErrorLabel: UILabel!
@IBOutlet weak var changePostcodeTextView: UITextView!
@IBOutlet weak var scrollView: UIScrollView!
var nextBarButtonItem: UIBarButtonItem?
var initialTextFieldBorderColour: UIColor?
@ -175,6 +176,13 @@ extension ChangePostcodeViewController: UITextFieldDelegate {
if UIAccessibility.isVoiceOverRunning {
UIAccessibility.post(notification: .layoutChanged, argument: postcodeErrorLabel)
}
// need to wait for stack view to update and then get the new content size
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
if self.scrollView.contentSize.height > self.scrollView.bounds.height {
let bottomOffset = CGPoint(x: 0, y: self.scrollView.contentSize.height - self.scrollView.bounds.height + self.scrollView.contentInset.bottom)
self.scrollView.setContentOffset(bottomOffset, animated: true)
}
}
} else {
postcodeErrorLabel.isHidden = true
postcodeTextField.borderColor = initialTextFieldBorderColour

View file

@ -16,6 +16,7 @@
<outlet property="loadingAnimationView" destination="gQH-Hn-8G2" id="Sqr-NC-zmZ"/>
<outlet property="postcodeErrorLabel" destination="zjM-x7-Ssn" id="m4h-1K-nwx"/>
<outlet property="postcodeTextField" destination="PWw-FK-XIy" id="Rf1-8J-RYO"/>
<outlet property="scrollView" destination="ldo-Ve-6uI" id="ZvK-yM-mVT"/>
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
</connections>
</placeholder>

View file

@ -0,0 +1,48 @@
//
// CovidHeaderContentViewController.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
import UIKit
class CovidHeaderContentViewController: UIViewController {
@IBOutlet weak var contentContainer: UIView!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var subtitleLabel: UILabel!
@IBOutlet weak var backButtonContainer: UIView!
var hideBackButton = true
var hideSubtitle = true
var titleString: String?
var subtitleString: String?
override func viewDidLoad() {
super.viewDidLoad()
subtitleLabel.isHidden = hideSubtitle
backButtonContainer.isHidden = hideBackButton
titleLabel.text = titleString
subtitleLabel.text = subtitleString
}
func setupContentView(contentView: UIView) {
contentView.translatesAutoresizingMaskIntoConstraints = false
contentContainer.addSubview(contentView)
NSLayoutConstraint.activate([
contentView.leadingAnchor.constraint(equalTo: contentContainer.leadingAnchor),
contentView.trailingAnchor.constraint(equalTo: contentContainer.trailingAnchor),
contentView.topAnchor.constraint(equalTo: contentContainer.topAnchor),
contentView.bottomAnchor.constraint(equalTo: contentContainer.bottomAnchor)
])
}
@IBAction func backButtonTapped(_ sender: Any) {
navigationController?.popViewController(animated: true)
}
}

View file

@ -446,19 +446,37 @@ extension CovidStatisticsViewController: StatisticsTableDelegate {
}
func changeStateTerritoryStatistics() {
let selectStateTerritoryViewController = SelectStateTerritoryViewController()
let selectStateTerritoryViewController = SelectableTableViewController<StateTerritory>()
selectStateTerritoryViewController.selectedValue = statisticForStateTerritory
selectStateTerritoryViewController.data = [[StateTerritory.AU], getStateValues()]
selectStateTerritoryViewController.sectionTitles = ["", "states_territories".localizedString()
]
selectStateTerritoryViewController.delegate = self
let navController = UINavigationController(rootViewController: selectStateTerritoryViewController)
present(navController, animated: true, completion: nil)
}
func getStateValues() -> [StateTerritory] {
return [StateTerritory.ACT,
StateTerritory.NSW,
StateTerritory.QLD,
StateTerritory.SA,
StateTerritory.TAS,
StateTerritory.VIC,
StateTerritory.WA]
}
}
// MARK: Selected state territory delegate
extension CovidStatisticsViewController: StateTerritorySelectionDelegate {
extension CovidStatisticsViewController: TableSelectionDelegate {
func didChangeStateTerritory(selectedState: StateTerritory) {
func didChangeSelectedValue(selectedValue: Any) {
guard let selectedState = selectedValue as? StateTerritory else {
return
}
UserDefaults.standard.set(selectedState.rawValue, forKey: statisticsStateTerritorySelectedKey)
statisticForStateTerritory = selectedState
getStatistics()
}

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="UCh-Op-nym">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="UCh-Op-nym">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@ -46,21 +46,21 @@
<rect key="frame" x="0.0" y="111" width="414" height="702"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eTh-XD-RKI" userLabel="ContentView">
<rect key="frame" x="0.0" y="0.0" width="414" height="797.5"/>
<rect key="frame" x="0.0" y="0.0" width="414" height="700"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="vW3-bA-wgt">
<rect key="frame" x="0.0" y="0.0" width="414" height="797.5"/>
<rect key="frame" x="0.0" y="0.0" width="414" height="700"/>
<subviews>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="T1Q-yS-0Qz">
<rect key="frame" x="0.0" y="0.0" width="414" height="14.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="252" verticalCompressionResistancePriority="250" text="Version Number:" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7ks-G7-72D">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="252" verticalCompressionResistancePriority="250" ambiguous="YES" text="Version Number:" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7ks-G7-72D">
<rect key="frame" x="16" y="0.0" width="121" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="250" text="..." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yHq-NW-S3P">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="250" ambiguous="YES" text="..." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yHq-NW-S3P">
<rect key="frame" x="153" y="0.0" width="245" height="14.5"/>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="12"/>
<nil key="textColor"/>
@ -178,17 +178,17 @@
<constraint firstAttribute="bottom" secondItem="yeE-eu-dNb" secondAttribute="bottom" id="qb0-Nn-Aib"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="eaG-yH-68T">
<rect key="frame" x="0.0" y="203.5" width="414" height="31"/>
<view hidden="YES" contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="eaG-yH-68T">
<rect key="frame" x="0.0" y="199.5" width="414" height="0.0"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Toggle advertisement" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="omg-67-iV0">
<rect key="frame" x="16" y="0.0" width="165.5" height="31"/>
<rect key="frame" x="16" y="0.0" width="165.5" height="0.0"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="i01-q8-Sxa">
<rect key="frame" x="201.5" y="0.0" width="51" height="31"/>
<rect key="frame" x="201.5" y="0.0" width="51" height="0.0"/>
</switch>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
@ -202,17 +202,17 @@
<constraint firstAttribute="bottom" secondItem="omg-67-iV0" secondAttribute="bottom" id="xxV-FX-iCP"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UsF-LF-5uJ">
<rect key="frame" x="0.0" y="242.5" width="414" height="31"/>
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UsF-LF-5uJ">
<rect key="frame" x="0.0" y="199.5" width="414" height="0.0"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Toggle scanning" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6hb-oo-EFZ">
<rect key="frame" x="16" y="0.0" width="124.5" height="31"/>
<rect key="frame" x="16" y="0.0" width="124.5" height="0.0"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pSh-gt-Z0V">
<rect key="frame" x="160.5" y="0.0" width="51" height="31"/>
<rect key="frame" x="160.5" y="0.0" width="51" height="0.0"/>
</switch>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
@ -226,8 +226,8 @@
<constraint firstAttribute="bottom" secondItem="6hb-oo-EFZ" secondAttribute="bottom" id="yo7-j1-qnj"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cmJ-Am-HxG">
<rect key="frame" x="0.0" y="281.5" width="414" height="44"/>
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cmJ-Am-HxG">
<rect key="frame" x="0.0" y="199.5" width="414" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MRj-sM-i0b">
<rect key="frame" x="16" y="0.0" width="154" height="44"/>
@ -244,11 +244,11 @@
<constraint firstAttribute="bottom" secondItem="MRj-sM-i0b" secondAttribute="bottom" id="xwK-bG-4RJ"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="70A-Ef-2Sn">
<rect key="frame" x="0.0" y="333.5" width="414" height="20.5"/>
<view hidden="YES" contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="70A-Ef-2Sn">
<rect key="frame" x="0.0" y="199.5" width="414" height="0.0"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Central state:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="98r-Qb-WQe">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
<rect key="frame" x="16" y="0.0" width="382" height="0.0"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
@ -262,11 +262,11 @@
<constraint firstItem="98r-Qb-WQe" firstAttribute="leading" secondItem="70A-Ef-2Sn" secondAttribute="leading" constant="16" id="tpT-W4-NM7"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="p0G-Gz-NI9">
<rect key="frame" x="0.0" y="362" width="414" height="20.5"/>
<view hidden="YES" contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="p0G-Gz-NI9">
<rect key="frame" x="0.0" y="199.5" width="414" height="0.0"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Peripheral state:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="msZ-UI-ziw">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
<rect key="frame" x="16" y="0.0" width="382" height="0.0"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
@ -280,11 +280,11 @@
<constraint firstItem="msZ-UI-ziw" firstAttribute="leading" secondItem="p0G-Gz-NI9" secondAttribute="leading" constant="16" id="xoC-9F-mFi"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="ebG-DA-X7b">
<rect key="frame" x="0.0" y="390.5" width="414" height="20.5"/>
<view hidden="YES" contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="ebG-DA-X7b">
<rect key="frame" x="0.0" y="199.5" width="414" height="0.0"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Discovered peripheral count:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fye-BS-LR4">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
<rect key="frame" x="16" y="0.0" width="382" height="0.0"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
@ -299,14 +299,78 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hvd-6X-q8R">
<rect key="frame" x="0.0" y="419" width="414" height="1"/>
<rect key="frame" x="0.0" y="203.5" width="414" height="1"/>
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="ZyS-Vp-UdQ"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yUm-t6-XXa">
<rect key="frame" x="0.0" y="212.5" width="414" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1Jf-KJ-8xZ">
<rect key="frame" x="16" y="0.0" width="106" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="3gn-CA-q0i"/>
</constraints>
<state key="normal" title="Toggle Sensors"/>
<connections>
<action selector="toogleSensorsTapped:" destination="dhe-6o-fvJ" eventType="touchUpInside" id="FuW-Z8-IX9"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="1Jf-KJ-8xZ" firstAttribute="leading" secondItem="yUm-t6-XXa" secondAttribute="leading" constant="16" id="Ats-fS-WRO"/>
<constraint firstAttribute="bottom" secondItem="1Jf-KJ-8xZ" secondAttribute="bottom" id="bCA-7l-msD"/>
<constraint firstItem="1Jf-KJ-8xZ" firstAttribute="top" secondItem="yUm-t6-XXa" secondAttribute="top" id="yhf-40-14t"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="fIq-zg-t4g">
<rect key="frame" x="0.0" y="264.5" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BLE Sensor State: " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AVa-FT-J7g">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="AVa-FT-J7g" firstAttribute="leading" secondItem="fIq-zg-t4g" secondAttribute="leading" constant="16" id="Hls-yP-kGl"/>
<constraint firstItem="AVa-FT-J7g" firstAttribute="top" secondItem="fIq-zg-t4g" secondAttribute="top" id="Nyz-ud-scc"/>
<constraint firstAttribute="bottom" secondItem="AVa-FT-J7g" secondAttribute="bottom" id="qxJ-h8-1Jz"/>
<constraint firstAttribute="trailing" secondItem="AVa-FT-J7g" secondAttribute="trailing" constant="16" id="w4Q-Gi-btq"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="xaH-Fj-CuI">
<rect key="frame" x="0.0" y="293" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Awake Sensor State:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="33e-fg-dZ0">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="33e-fg-dZ0" firstAttribute="top" secondItem="xaH-Fj-CuI" secondAttribute="top" id="6Cg-Gq-rlB"/>
<constraint firstAttribute="bottom" secondItem="33e-fg-dZ0" secondAttribute="bottom" id="EIv-VH-dzh"/>
<constraint firstItem="33e-fg-dZ0" firstAttribute="leading" secondItem="xaH-Fj-CuI" secondAttribute="leading" constant="16" id="kCa-eM-0iY"/>
<constraint firstAttribute="trailing" secondItem="33e-fg-dZ0" secondAttribute="trailing" constant="16" id="xXX-zq-Bza"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dcx-iX-DMs">
<rect key="frame" x="0.0" y="321.5" width="414" height="1"/>
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="0kN-gE-5ne"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="E7q-a0-4AJ">
<rect key="frame" x="0.0" y="428" width="414" height="20.5"/>
<rect key="frame" x="0.0" y="330.5" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Silent notifications received:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aQD-YK-YEa">
<rect key="frame" x="16" y="0.0" width="214.5" height="20.5"/>
@ -332,7 +396,7 @@
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="gho-qz-b8q">
<rect key="frame" x="0.0" y="456.5" width="414" height="20.5"/>
<rect key="frame" x="0.0" y="359" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="APN Token" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wqp-Fe-L0f">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
@ -350,7 +414,7 @@
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="Yxk-Fi-rb7">
<rect key="frame" x="0.0" y="485" width="414" height="20.5"/>
<rect key="frame" x="0.0" y="387.5" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bcP-lC-FpW">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
@ -368,7 +432,7 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="J6X-oB-ElI">
<rect key="frame" x="0.0" y="513.5" width="414" height="44"/>
<rect key="frame" x="0.0" y="416" width="414" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vDB-4P-xpd">
<rect key="frame" x="16" y="0.0" width="184" height="44"/>
@ -389,14 +453,14 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5yH-SP-I31">
<rect key="frame" x="0.0" y="565.5" width="414" height="1"/>
<rect key="frame" x="0.0" y="468" width="414" height="1"/>
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="FLd-Ot-v2d"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="o3E-U5-TFT">
<rect key="frame" x="0.0" y="574.5" width="414" height="20.5"/>
<rect key="frame" x="0.0" y="477" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Messages API last called:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FNp-YY-TfL">
<rect key="frame" x="16" y="0.0" width="192.5" height="20.5"/>
@ -423,7 +487,7 @@
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="poe-Fe-dGA">
<rect key="frame" x="0.0" y="603" width="414" height="20.5"/>
<rect key="frame" x="0.0" y="505.5" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Last app version used for call :" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1v8-GS-AgD">
<rect key="frame" x="16" y="0.0" width="231" height="20.5"/>
@ -450,7 +514,7 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="itk-Rh-MAV">
<rect key="frame" x="0.0" y="631.5" width="414" height="44"/>
<rect key="frame" x="0.0" y="534" width="414" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8Ls-XW-Bmh">
<rect key="frame" x="16" y="0.0" width="179" height="44"/>
@ -471,14 +535,14 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="svJ-3I-tto">
<rect key="frame" x="0.0" y="683.5" width="414" height="1"/>
<rect key="frame" x="0.0" y="586" width="414" height="1"/>
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="h6Z-69-ljn"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lI5-dG-ihI">
<rect key="frame" x="0.0" y="692.5" width="414" height="44"/>
<rect key="frame" x="0.0" y="595" width="414" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vVm-e2-Qef">
<rect key="frame" x="16" y="0.0" width="223" height="44"/>
@ -499,14 +563,14 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TLN-pP-2n9">
<rect key="frame" x="0.0" y="744.5" width="414" height="1"/>
<rect key="frame" x="0.0" y="647" width="414" height="1"/>
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="lJS-eQ-wih"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ipc-oI-MqM">
<rect key="frame" x="0.0" y="753.5" width="414" height="44"/>
<rect key="frame" x="0.0" y="656" width="414" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oyo-xa-V5o">
<rect key="frame" x="16" y="0.0" width="194" height="44"/>
@ -565,6 +629,8 @@
<connections>
<outlet property="advertisementSwitch" destination="i01-q8-Sxa" id="g0h-uq-1WE"/>
<outlet property="apnTokenLabel" destination="bcP-lC-FpW" id="rtf-Gz-e8Y"/>
<outlet property="awakeSensorStateLabel" destination="33e-fg-dZ0" id="Kyu-IO-zCk"/>
<outlet property="bleSensorStateLabel" destination="AVa-FT-J7g" id="2PZ-5K-0sy"/>
<outlet property="centralStateLabel" destination="98r-Qb-WQe" id="RO4-gy-1gd"/>
<outlet property="clearLogsButton" destination="yeE-eu-dNb" id="tbR-j3-DTa"/>
<outlet property="devicesEncounteredLabel" destination="r8F-jH-7Fs" id="K1w-Zq-Sqj"/>

View file

@ -323,15 +323,14 @@ class BLEPseudoDeviceAddress {
}}
init?(fromAdvertisementData: [String: Any]) {
guard let manufacturerData = fromAdvertisementData["kCBAdvDataManufacturerData"] as? Data else {
guard let manufacturerData = fromAdvertisementData[CBAdvertisementDataManufacturerDataKey] as? Data else {
return nil
}
guard let manufacturerId = manufacturerData.uint16(0), manufacturerId == BLESensorConfiguration.manufacturerIdForSensor else {
return nil
}
guard manufacturerData.count == 8 else {
guard let manufacturerId = manufacturerData.uint16(0) else {
return nil
}
// HERALD pseudo device address
if manufacturerId == BLESensorConfiguration.manufacturerIdForSensor, manufacturerData.count == 8 {
data = Data(manufacturerData.subdata(in: 2..<8))
var longValueData = Data(repeating: 0, count: 2)
longValueData.append(data)
@ -340,4 +339,21 @@ class BLEPseudoDeviceAddress {
}
address = Int64(longValue)
}
// Legacy pseudo device address
else if manufacturerId == UInt(1023), manufacturerData.count > 2 {
data = Data(manufacturerData.subdata(in: 2..<min(8,manufacturerData.count)))
var longValueData = Data(data)
if longValueData.count < 8 {
longValueData.append(Data(repeating: 0, count: 8 - longValueData.count))
}
guard let longValue = longValueData.int64(0) else {
return nil
}
address = Int64(longValue)
}
// Pseudo device address not detected
else {
return nil
}
}
}

View file

@ -123,6 +123,7 @@ class ConcreteBLESensor : NSObject, BLESensor, BLEDatabaseDelegate {
transmitter.stop()
receiver.stop()
// BLE transmitter and receivers stops on powerOff event
delegates.forEach({ $0.sensor(.BLE, didUpdateState: .off) })
}
func add(delegate: SensorDelegate) {

View file

@ -62,8 +62,7 @@ class ConcreteAwakeSensor : NSObject, AwakeSensor, CLLocationManagerDelegate {
locationManager.startRangingBeacons(in: beaconRegion)
logger.debug("startRangingBeacons(ios<13.0,beaconUUID=\(beaconUUID.uuidString)))")
}
delegates.forEach({ $0.sensor(.AWAKE, didUpdateState: .on) })
}
func stop() {
@ -82,6 +81,7 @@ class ConcreteAwakeSensor : NSObject, AwakeSensor, CLLocationManagerDelegate {
locationManager.stopRangingBeacons(in: beaconRegion)
logger.debug("stopRangingBeacons(ios<13.0,beaconUUID=\(beaconUUID.description))")
}
delegates.forEach({ $0.sensor(.AWAKE, didUpdateState: .off) })
}
// MARK:- CLLocationManagerDelegate

View file

@ -68,11 +68,6 @@
<action selector="onHelpButtonTapped:" destination="-1" id="omV-3d-Dev"/>
</connections>
</tapGestureRecognizer>
<tapGestureRecognizer id="BkG-gC-lSg" userLabel="SettingsTapped">
<connections>
<action selector="onSettingsTapped:" destination="-1" id="8vn-hC-YS1"/>
</connections>
</tapGestureRecognizer>
<tapGestureRecognizer id="4M3-XU-cn0" userLabel="ImprovementAvailableTapped">
<connections>
<action selector="improvementAvailableTapped:" destination="-1" id="432-L8-raP"/>
@ -118,53 +113,9 @@
<constraint firstAttribute="height" constant="72" id="vlN-Zx-f24"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bAD-y1-t0q" userLabel="Settings View">
<rect key="frame" x="322" y="49.5" width="76" height="43.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Settings" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dcW-cs-M8h">
<rect key="frame" x="8" y="24" width="60" height="19.5"/>
<accessibility key="accessibilityConfiguration">
<bool key="isElement" value="NO"/>
</accessibility>
<fontDescription key="fontDescription" style="UICTFontTextStyleCallout"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizationKey" value="settings"/>
</userDefinedRuntimeAttributes>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="settings" adjustsImageSizeForAccessibilityContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Oy4-AH-CYl">
<rect key="frame" x="26" y="0.0" width="24" height="24"/>
<constraints>
<constraint firstAttribute="width" constant="24" id="7me-3Z-K3F"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<accessibility key="accessibilityConfiguration">
<bool key="isElement" value="YES"/>
</accessibility>
<constraints>
<constraint firstItem="dcW-cs-M8h" firstAttribute="centerX" secondItem="bAD-y1-t0q" secondAttribute="centerX" id="789-ha-HeZ"/>
<constraint firstAttribute="trailing" secondItem="dcW-cs-M8h" secondAttribute="trailing" constant="8" id="UoB-B0-sab"/>
<constraint firstAttribute="bottom" secondItem="dcW-cs-M8h" secondAttribute="bottom" id="ieu-65-QiK"/>
<constraint firstItem="dcW-cs-M8h" firstAttribute="leading" secondItem="bAD-y1-t0q" secondAttribute="leading" constant="8" id="jRU-rL-wUn"/>
<constraint firstItem="dcW-cs-M8h" firstAttribute="top" secondItem="Oy4-AH-CYl" secondAttribute="bottom" id="lNc-AT-Kd4"/>
<constraint firstItem="Oy4-AH-CYl" firstAttribute="top" secondItem="bAD-y1-t0q" secondAttribute="top" id="uJa-fM-49L"/>
<constraint firstItem="Oy4-AH-CYl" firstAttribute="centerX" secondItem="bAD-y1-t0q" secondAttribute="centerX" id="vKB-rX-gFx"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localVOLabelKey" value="home_setup_help"/>
</userDefinedRuntimeAttributes>
<connections>
<outletCollection property="gestureRecognizers" destination="BkG-gC-lSg" appends="YES" id="7Fi-8h-6kx"/>
</connections>
</view>
</subviews>
<color key="backgroundColor" red="0.7843137255" green="1" blue="0.72549019609999998" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="bAD-y1-t0q" secondAttribute="bottom" constant="27" id="47L-6e-mYH"/>
<constraint firstAttribute="trailing" secondItem="bAD-y1-t0q" secondAttribute="trailing" constant="16" id="cfy-cP-deX"/>
<constraint firstItem="agZ-x5-SNR" firstAttribute="centerX" secondItem="Ged-Y1-PEf" secondAttribute="centerX" id="e7I-SA-L0c"/>
<constraint firstItem="agZ-x5-SNR" firstAttribute="top" secondItem="Ged-Y1-PEf" secondAttribute="top" constant="32" id="nnF-yA-Bqa"/>
<constraint firstAttribute="bottom" secondItem="agZ-x5-SNR" secondAttribute="bottom" constant="16" id="yJH-rG-DJ7"/>
@ -1211,7 +1162,6 @@
<image name="ic-upload" width="24" height="24"/>
<image name="question-mark" width="13" height="20"/>
<image name="redcross" width="22" height="22"/>
<image name="settings" width="24" height="24"/>
<image name="small tick" width="24" height="24"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>

View file

@ -98,6 +98,9 @@ class HomeViewController: UIViewController, HomeDelegate {
override func viewDidLoad() {
super.viewDidLoad()
title = "home_bottom_nav".localizedString()
tabBarItem.image = UIImage(named: "ausCheck")
covidStatisticsViewController.homeDelegate = self
scrollView.refreshControl = UIRefreshControl()
scrollView.refreshControl?.addTarget(self, action: #selector(refreshControlEvent), for: .valueChanged)
@ -230,6 +233,10 @@ class HomeViewController: UIViewController, HomeDelegate {
}
}
fileprivate func navigateToSettings() {
tabBarController?.selectedIndex = 2
}
fileprivate func refreshView() {
toggleViews()
performHealthCheck()
@ -283,7 +290,7 @@ class HomeViewController: UIViewController, HomeDelegate {
if (self.reachability.connection != .cellular && self.reachability.connection != .wifi) ||
self.shouldShowUpdateApp {
DispatchQueue.main.async {
self.onSettingsTapped(self)
self.navigateToSettings()
}
} else if self.allPermissionOn &&
self.isInternetReachable() &&
@ -563,16 +570,10 @@ class HomeViewController: UIViewController, HomeDelegate {
@IBAction func improvementAvailableTapped(_ sender: Any) {
if shouldShowUpdateApp || !isInternetReachable() {
onSettingsTapped(sender)
navigateToSettings()
}
}
@IBAction func onSettingsTapped(_ sender: Any) {
let settingsVC = SettingsViewController(nibName: "SettingsView", bundle: nil)
settingsVC.showUpdateAvailable = shouldShowUpdateApp
navigationController?.pushViewController(settingsVC, animated: true)
}
@IBAction func registerAgainTapped(_ sender: Any) {
guard let regVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "personalDetails") as? PersonalDetailsViewController else {
return

View file

@ -31,11 +31,23 @@
<key>NSBluetoothPeripheralUsageDescription</key>
<string>COVIDSafe exchanges Bluetooth® signals with nearby phones running the same app. These signals contain an anonymised ID, which is encrypted and changes continually to ensure your privacy.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>We request location permissions to improve the performance of the system and how we provide information about COVID-19. Location permissions will only be used for this purpose. We will not collect or store your location information.</string>
<string>Select Always Allow.
Use of Location Services improves Bluetooth performance when identifying close contacts.
COVIDSafe does not collect, store or use location data.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>We request location permissions to improve the performance of the system and how we provide information about COVID-19. Location permissions will only be used for this purpose. We will not collect or store your location information.</string>
<string>Select Always Allow.
Use of Location Services improves Bluetooth performance when identifying close contacts.
COVIDSafe does not collect, store or use location data.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>We request location permissions to improve the performance of the system and how we provide information about COVID-19. Location permissions will only be used for this purpose. We will not collect or store your location information.</string>
<string>Select While Using App.
Use of Location Services improves Bluetooth performance when identifying close contacts.
COVIDSafe does not collect, store or use location data.</string>
<key>TRACER_SVC_ID</key>
<string>${SERVICE_UUID}</string>
<key>UIBackgroundModes</key>

View file

@ -17,10 +17,13 @@ final class InfoViewController: UIViewController {
private var devicesEncounteredCount: Int?
@IBOutlet weak var messagesAPILastDateLabel: UILabel!
@IBOutlet weak var messagesAPILastVersionLabel: UILabel!
@IBOutlet weak var bleSensorStateLabel: UILabel!
@IBOutlet weak var awakeSensorStateLabel: UILabel!
@IBOutlet weak var versionNumLabel: UILabel!
let dateFormatter = DateFormatter()
var isSensorOn = true
override func viewWillAppear(_ animated: Bool) {
@ -39,6 +42,7 @@ final class InfoViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
BluetraceManager.shared.addDelegateToSensors(delegate: self)
dateFormatter.dateFormat = "dd/MM/yyyy"
advertisementSwitch.addTarget(self, action: #selector(self.advertisementSwitchChanged), for: UIControl.Event.valueChanged)
scanningSwitch.addTarget(self, action: #selector(self.scanningSwitchChanged), for: UIControl.Event.valueChanged)
@ -168,4 +172,39 @@ final class InfoViewController: UIViewController {
let keychain = KeychainSwift()
keychain.set("corruptedjwt", forKey: "JWT_TOKEN", withAccess: .accessibleAfterFirstUnlock)
}
@IBAction func toogleSensorsTapped(_ sender: Any) {
BluetraceManager.shared.toggleScanning(!isSensorOn)
}
}
extension InfoViewController: SensorDelegate {
func sensor(_ sensor: SensorType, didUpdateState: SensorState) {
isSensorOn = didUpdateState == .on
DispatchQueue.main.async {
if sensor == .BLE {
switch didUpdateState {
case .off:
self.bleSensorStateLabel.text = "BLE Sensor State: OFF"
case .on:
self.bleSensorStateLabel.text = "BLE Sensor State: ON"
default:
self.bleSensorStateLabel.text = "BLE Sensor State: N/A"
}
}
if sensor == .AWAKE {
switch didUpdateState {
case .off:
self.awakeSensorStateLabel.text = "Awake Sensor State: OFF"
case .on:
self.awakeSensorStateLabel.text = "Awake Sensor State: ON"
default:
self.awakeSensorStateLabel.text = "Awake Sensor State: N/A"
}
}
}
}
}

View file

@ -89,8 +89,8 @@ class InitialScreenViewController: UIViewController, EncounterDBMigrationProgres
self.performSegue(withIdentifier: "initialScreenToAllowPermissionsSegue", sender: self)
} else {
DispatchQueue.main.async {
let homeVC = HomeViewController(nibName: "HomeView", bundle: nil)
self.navigationController?.setViewControllers([homeVC], animated: true)
let tabVC = MainTabBarViewController()
self.navigationController?.setViewControllers([tabVC], animated: true)
}
}
}

View file

@ -0,0 +1,17 @@
//
// JurisdictionalRestrictionActivity.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
import Foundation
public typealias JurisdictionalRestrictionActivity = String
extension JurisdictionalRestrictionActivity: SimpleCellObject {
func getCellTitle() -> String {
return self
}
}

View file

@ -0,0 +1,44 @@
//
// MainTabBarViewController.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
import UIKit
class MainTabBarViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// add tabs
let homeVC = HomeViewController(nibName: "HomeView", bundle: nil)
let settingsVC = SettingsViewController(nibName: "SettingsView", bundle: nil)
let restrictionsVC = RestrictionsViewController(nibName: "RestrictionsView", bundle: nil)
viewControllers = [homeVC, restrictionsVC, settingsVC]
// style the tabs
tabBar.layer.borderWidth = 1
tabBar.clipsToBounds = true
tabBar.layer.borderColor = UIColor.covidSafeColor.cgColor
tabBar.barTintColor = UIColor.covidHomeActiveColor
tabBar.unselectedItemTintColor = UIColor.black
tabBar.tintColor = UIColor.covidSafeColor
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// set tab bar background color
let numberOfItems = CGFloat(tabBar.items!.count)
let tabBarItemSize = CGSize(width: tabBar.frame.width/numberOfItems, height: tabBar.frame.height)
tabBar.selectionIndicatorImage = UIImage
.imageWithColor(color: UIColor.covidSafeButtonDarkerColor.withAlphaComponent(0.15), topBorderColor: UIColor.covidSafeButtonDarkerColor, size: tabBarItemSize)
.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0))
}
}

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MainTabBarViewController" customModuleProvider="target">
<connections>
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
</view>
</objects>
</document>

View file

@ -277,8 +277,8 @@ class OTPViewController: UIViewController, RegistrationHandler {
viewController.performSegue(withIdentifier: "showAllowPermissionsFromOTPSegue", sender: self)
} else {
DispatchQueue.main.async {
let homeVC = HomeViewController(nibName: "HomeView", bundle: nil)
self.navigationController?.setViewControllers([homeVC], animated: true)
let tabVC = MainTabBarViewController()
self.navigationController?.setViewControllers([tabVC], animated: true)
}
}
}

View file

@ -37,8 +37,8 @@ class RegistrationIntroViewController: UIViewController {
if isLoggedIn {
DispatchQueue.main.async {
let homeVC = HomeViewController(nibName: "HomeView", bundle: nil)
self.navigationController?.setViewControllers([homeVC], animated: true)
let tabVC = MainTabBarViewController()
self.navigationController?.setViewControllers([tabVC], animated: true)
}
}
}

View file

@ -65,7 +65,8 @@ class RegistrationSuccessViewController: UIViewController {
dismiss(animated: true, completion: nil)
} else {
let homeVC = HomeViewController(nibName: "HomeView", bundle: nil)
self.navigationController?.setViewControllers([homeVC], animated: true)
let tabVC = MainTabBarViewController()
self.navigationController?.setViewControllers([tabVC], animated: true)
}
}
}

View file

@ -0,0 +1,14 @@
//
// RestrictionDetailsView.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
import UIKit
class RestrictionDetailsView: UIView {
@IBOutlet weak var contentTextView: UITextView!
}

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="iN0-l3-epB" customClass="RestrictionDetailsView" customModule="COVIDSafe" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="natural" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2AP-Oa-Fz7">
<rect key="frame" x="16" y="60" width="382" height="786"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<color key="tintColor" red="0.0" green="0.40000000000000002" blue="0.1058823529" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
<color key="textColor" systemColor="labelColor"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
</subviews>
<viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="2AP-Oa-Fz7" secondAttribute="trailing" constant="16" id="ECg-z4-oQI"/>
<constraint firstItem="2AP-Oa-Fz7" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" constant="16" id="aZu-tR-N91"/>
<constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="2AP-Oa-Fz7" secondAttribute="bottom" constant="16" id="ckT-lh-mVM"/>
<constraint firstItem="2AP-Oa-Fz7" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="16" id="uS0-f8-k17"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="contentTextView" destination="2AP-Oa-Fz7" id="o4t-v2-ce4"/>
</connections>
<point key="canvasLocation" x="141" y="86"/>
</view>
</objects>
<resources>
<systemColor name="labelColor">
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View file

@ -0,0 +1,54 @@
//
// RestrictionDetailsViewController.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
import UIKit
import SafariServices
class RestrictionDetailsViewController: CovidHeaderContentViewController {
var htmlString: String?
var hasLoadedInitialContent = false
override func viewDidLoad() {
super.viewDidLoad()
guard let restrictionsDetailsView = Bundle.main.loadNibNamed("WebContentView", owner: self, options: nil)?.first as? WebContentView else {
return
}
restrictionsDetailsView.webContentView.delegate = self
guard let htmlString = self.htmlString else { return }
restrictionsDetailsView.webContentView.loadHTMLString(htmlString.htmlDocumentString(font: UIFont.preferredFont(forTextStyle: .body), withAdditionalCSS: "a{color:\(UIColor.covidSafeButtonDarkerColor.hexString)}"), baseURL: nil)
setupContentView(contentView: restrictionsDetailsView)
}
}
extension RestrictionDetailsViewController: UIWebViewDelegate {
func webViewDidFinishLoad(_ webView: UIWebView) {
hasLoadedInitialContent = true
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebView.NavigationType) -> Bool {
if !hasLoadedInitialContent {
return true
}
guard let urlToLoad = request.url else {
return false
}
let safariVC = SFSafariViewController(url: urlToLoad)
present(safariVC, animated: true, completion: nil)
return false
}
}

View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="RestrictionTableViewController" customModule="COVIDSafe" customModuleProvider="target">
<connections>
<outlet property="tableFooterView" destination="oOX-VZ-Fzn" id="eKk-h0-N9v"/>
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableView opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" bouncesZoom="NO" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" id="i5M-Pr-FkT">
<rect key="frame" x="0.0" y="0.0" width="414" height="865"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<viewLayoutGuide key="safeArea" id="vLr-E1-eTs"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="dataSource" destination="-1" id="Tng-2m-Rnh"/>
<outlet property="delegate" destination="-1" id="9aC-8N-iBw"/>
</connections>
<point key="canvasLocation" x="140.57971014492756" y="90.066964285714278"/>
</tableView>
<view contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="oOX-VZ-Fzn" userLabel="FooterView">
<rect key="frame" x="0.0" y="0.0" width="354" height="104"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Your selection will only be used to show restrictions in your area. COVIDSafe does not store or use location data." textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kni-np-neg">
<rect key="frame" x="16" y="16" width="322" height="72"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleCallout"/>
<color key="textColor" red="0.58431372549019611" green="0.58431372549019611" blue="0.58431372549019611" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="0.8980392157" green="0.8980392157" blue="0.8980392157" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="kni-np-neg" firstAttribute="leading" secondItem="oOX-VZ-Fzn" secondAttribute="leading" constant="16" id="6HL-FN-JJL"/>
<constraint firstAttribute="bottom" secondItem="kni-np-neg" secondAttribute="bottom" constant="16" id="Gyc-I7-zb8"/>
<constraint firstItem="kni-np-neg" firstAttribute="top" secondItem="oOX-VZ-Fzn" secondAttribute="top" constant="16" id="nY6-Zj-cUB"/>
<constraint firstAttribute="trailing" secondItem="kni-np-neg" secondAttribute="trailing" constant="16" id="vVo-kh-ohu"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<point key="canvasLocation" x="868.11594202898561" y="-151.33928571428569"/>
</view>
</objects>
</document>

View file

@ -0,0 +1,379 @@
//
// RestrictionTableViewController.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
import UIKit
let restrictionSelectedStateKey = "restrictionSelectedStateKey"
let restrictionSelectedActivityKey = "restrictionSelectedActivityKey"
class RestrictionTableViewController: UITableViewController {
@IBOutlet var tableFooterView: UIView!
lazy var restrictionSelectedState: StateTerritory = {
guard let value = UserDefaults.standard.value(forKey: restrictionSelectedStateKey) as? String else {
return StateTerritory.AU
}
return StateTerritory(rawValue: value)!
}(){
didSet {
UserDefaults.standard.set(restrictionSelectedState.rawValue, forKey: restrictionSelectedStateKey)
}
}
lazy var restrictionSelectedActivity: JurisdictionalRestrictionActivity? = {
guard let value = UserDefaults.standard.value(forKey: restrictionSelectedActivityKey) as? String, !value.isEmpty else {
return nil
}
return value
}(){
didSet {
UserDefaults.standard.set(restrictionSelectedActivity, forKey: restrictionSelectedActivityKey)
}
}
var stateRestrictions: StateRestriction?
var jurisdictionalRestrictionActivities: [JurisdictionalRestrictionActivity] = []
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "SimpleTableViewCell", bundle: nil), forCellReuseIdentifier: "SimpleTableCell")
tableView.register(UINib(nibName: "SelectionTableViewCell", bundle: nil), forCellReuseIdentifier: "SelectionTableCell")
tableView.register(UINib(nibName: "TableSectionHeaderView", bundle: nil), forHeaderFooterViewReuseIdentifier: "SectionHeader")
// call api if needed
if restrictionSelectedState != .AU {
getRestrictions(shouldFetchFromApi: true)
} else {
setupTableFooter()
}
}
// MARK: - Table view data source
func reloadTableView() {
setupTableFooter()
tableView.reloadData()
}
func setupTableFooter() {
tableView.tableFooterView = restrictionSelectedState == .AU || restrictionSelectedActivity == nil ? tableFooterView : nil
}
override func numberOfSections(in tableView: UITableView) -> Int {
if restrictionSelectedState != .AU && restrictionSelectedActivity != nil {
// top section for selection, bottom for data from restrictions API
return 2
}
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return restrictionSelectedState == .AU ? 1 : 2
} else {
if let selectedActivity = restrictionSelectedActivity,
let activities = stateRestrictions?.activities {
let activity = activities.first { (activity) -> Bool in
return activity.activityTitle == selectedActivity
}
let hasMainContent = activity?.mainContent != nil && !(activity?.mainContent?.isEmpty ?? true)
let includeMainContent = hasMainContent ? 1 : 0
return (activity?.sections?.count ?? 0) + includeMainContent
}
return 0
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0 {
// check if value is present
let isValueEmpty = indexPath.row == 0 ? restrictionSelectedState == .AU : restrictionSelectedActivity?.isEmpty ?? true
if isValueEmpty {
let cell = tableView.dequeueReusableCell(withIdentifier: "SimpleTableCell") as! SimpleTableViewCell
cell.title.textColor = UIColor.covidSafeColor
cell.rightImageView.image = UIImage(named: "chevron-right-green")
cell.rightImageView.isHidden = true
configureSimpleCell(cell: cell, row: indexPath.row)
cell.selectionStyle = .none
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "SelectionTableCell") as! SelectionTableViewCell
configureSelectionCell(cell: cell, row: indexPath.row)
cell.selectionStyle = .none
return cell
}
}
let cell = tableView.dequeueReusableCell(withIdentifier: "SimpleTableCell") as! SimpleTableViewCell
cell.title.textColor = UIColor.covidSafeDarkFontColor
cell.rightImageView.image = UIImage(named: "ChevronRight")
cell.rightImageView.isHidden = false
cell.title.text = ""
if let selectedActivity = restrictionSelectedActivity {
cell.title.text = getSectionTitle(for: selectedActivity, indexPath: indexPath)
}
return cell
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 1 {
let sectionHeaderView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "SectionHeader") as! SectionHeaderView
guard let selectedActivity = restrictionSelectedActivity, let activity = getActivity(activityName: selectedActivity) else {
sectionHeaderView.title.text = ""
return sectionHeaderView
}
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .short
sectionHeaderView.title.text = activity.dateUpdated
return sectionHeaderView
}
return nil
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if section == 0 {
// returning nil does not suffice
return 0
} else {
// automatic
return -1
}
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 1 {
// if should show content
let contentView = RestrictionDetailsViewController(nibName: "RestrictionsView", bundle: nil)
contentView.hideSubtitle = false
contentView.hideBackButton = false
contentView.titleString = ""
contentView.subtitleString = ""
contentView.htmlString = ""
if let selectedActivity = restrictionSelectedActivity {
contentView.titleString = getSectionTitle(for: selectedActivity, indexPath: indexPath)
contentView.subtitleString = getSectionSubtitle(for: indexPath)
contentView.htmlString = getSectionHtmlContent(for: selectedActivity, indexPath: indexPath)
}
navigationController?.pushViewController(contentView, animated: true)
return
}
var tableViewController: UITableViewController!
if indexPath.row == 0 {
// bring up state selections
let selectStateTerritoryViewController = SelectableTableViewController<StateTerritory>()
selectStateTerritoryViewController.title = "restrictions_select_state".localizedString()
selectStateTerritoryViewController.selectedValue = restrictionSelectedState
selectStateTerritoryViewController.data = [getStateValues()]
selectStateTerritoryViewController.delegate = self
tableViewController = selectStateTerritoryViewController
} else if indexPath.row == 1 {
// bring up activity selections
let selectActivityyViewController = SelectableTableViewController<JurisdictionalRestrictionActivity>()
selectActivityyViewController.title = "restrictions_select_activity".localizedString()
selectActivityyViewController.selectedValue = restrictionSelectedActivity
selectActivityyViewController.data = [jurisdictionalRestrictionActivities]
selectActivityyViewController.delegate = self
tableViewController = selectActivityyViewController
}
let navController = UINavigationController(rootViewController: tableViewController)
present(navController, animated: true, completion: nil)
}
func configureSimpleCell(cell: SimpleTableViewCell, row: Int) {
if row == 0 {
cell.title.text = "restrictions_select_state".localizedString()
} else {
cell.title.text = "restrictions_select_activity".localizedString()
}
}
func configureSelectionCell(cell: SelectionTableViewCell, row: Int) {
if row == 0 {
cell.title.text = "restrictions_state".localizedString()
cell.selection.text = restrictionSelectedState.stateTerritoryFullName()
} else {
cell.selection.text = restrictionSelectedActivity
cell.title.text = "restrictions_activity".localizedString()
}
}
//MARK: selectable options
func getStateValues() -> [StateTerritory] {
return [StateTerritory.ACT,
StateTerritory.NSW,
StateTerritory.NT,
StateTerritory.QLD,
StateTerritory.SA,
StateTerritory.TAS,
StateTerritory.VIC,
StateTerritory.WA]
}
//MARK: data retrieval
fileprivate func getSectionTitle(for selectedActivity: JurisdictionalRestrictionActivity, indexPath: IndexPath) -> String {
guard let activity = getActivity(activityName: selectedActivity) else {
return ""
}
let hasMainContent = activity.mainContent != nil && !activity.mainContent!.isEmpty
if hasMainContent && indexPath.row == 0 {
return "main_restrictions".localizedString()
}
let indexOffset = hasMainContent ? -1 : 0
guard let activitySections = activity.sections,
activitySections.count > (indexPath.row + indexOffset) else {
return ""
}
return activitySections[indexPath.row + indexOffset].title ?? ""
}
fileprivate func getSectionHtmlContent(for selectedActivity: JurisdictionalRestrictionActivity, indexPath: IndexPath) -> String? {
guard let activity = getActivity(activityName: selectedActivity) else {
return nil
}
let hasMainContent = activity.mainContent != nil && !activity.mainContent!.isEmpty
if hasMainContent && indexPath.row == 0 {
return activity.mainContent
}
let indexOffset = hasMainContent ? -1 : 0
guard let activitySections = activity.sections,
activitySections.count > (indexPath.row + indexOffset) else {
return nil
}
return activitySections[indexPath.row + indexOffset].content ?? nil
}
fileprivate func getSectionSubtitle(for indexPath: IndexPath) -> String {
return "\(restrictionSelectedState.rawValue) - \(restrictionSelectedActivity ?? "")"
}
fileprivate func getActivity(activityName: JurisdictionalRestrictionActivity) -> RestrictionsActivity? {
if let activities = stateRestrictions?.activities {
let activity = activities.first { (activity) -> Bool in
return activity.activityTitle == activityName
}
return activity
}
return nil
}
}
// MARK: Selected state territory delegate
extension RestrictionTableViewController: TableSelectionDelegate {
func didChangeSelectedValue(selectedValue: Any) {
var didChangeState = false
if let value = selectedValue as? StateTerritory {
didChangeState = restrictionSelectedState != value
restrictionSelectedState = value
restrictionSelectedActivity = nil
}
if let value = selectedValue as? JurisdictionalRestrictionActivity {
restrictionSelectedActivity = value
}
getRestrictions(shouldFetchFromApi: didChangeState || stateRestrictions == nil)
}
}
extension RestrictionTableViewController {
fileprivate func getRestrictions(shouldFetchFromApi: Bool) {
guard restrictionSelectedState != .AU, shouldFetchFromApi else {
// reload to reflect selections in the table
reloadTableView()
return
}
// call API
RestrictionsAPI.getRestrictions(forState: restrictionSelectedState) { (restrictionsResponse, error) in
guard error == nil else {
// handle api error
let errorVC = CSGenericErrorViewController(nibName: "CSGenericErrorView", bundle: nil)
errorVC.errorViewModel =
CSGenericErrorViewModel(errorTitle: "restrictions_error_heading".localizedString(),
errorContentDescription: "restrictions_error_message".localizedString(),
mainButtonLabel: "restrictions_error_try".localizedString(),
mainButtonCallback: {
self.getRestrictions(shouldFetchFromApi: true)
},
secondaryButtonLabel: "restrictions_error_dismiss".localizedString(),
secondaryButtonCallback: nil)
self.present(errorVC, animated: true, completion: nil)
return
}
self.stateRestrictions = restrictionsResponse
self.retrieveActivities()
self.reloadTableView()
}
}
fileprivate func retrieveActivities() {
guard let restrictions = stateRestrictions, let activities = restrictions.activities else {
return
}
jurisdictionalRestrictionActivities = []
for activity in activities {
if let activityName = activity.activityTitle {
jurisdictionalRestrictionActivities.append(activityName)
}
}
}
}
class SimpleTableViewCell: UITableViewCell {
@IBOutlet weak var title: UILabel!
@IBOutlet weak var rightImageView: UIImageView!
}
class SelectionTableViewCell: UITableViewCell {
@IBOutlet weak var title: UILabel!
@IBOutlet weak var selection: UILabel!
}
class SectionHeaderView: UITableViewHeaderFooterView {
@IBOutlet weak var title: UILabel!
}

View file

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CovidHeaderContentViewController" customModule="COVIDSafe" customModuleProvider="target">
<connections>
<outlet property="backButtonContainer" destination="Y4i-0f-aaK" id="qHa-8W-Rte"/>
<outlet property="contentContainer" destination="oBD-Sm-27y" id="oQN-3h-vmv"/>
<outlet property="subtitleLabel" destination="vMI-Qw-Rf2" id="eU2-9e-qA1"/>
<outlet property="titleLabel" destination="S0B-TE-jI1" id="WoP-Zv-fP5"/>
<outlet property="view" destination="BnF-K7-LIC" id="4vW-98-wGQ"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="BnF-K7-LIC">
<rect key="frame" x="0.0" y="0.0" width="414" height="865"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oBD-Sm-27y" userLabel="ContentContainerView">
<rect key="frame" x="0.0" y="205" width="414" height="657"/>
<color key="backgroundColor" red="0.8980392157" green="0.8980392157" blue="0.8980392157" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YfJ-Mp-dnc" userLabel="HeaderView">
<rect key="frame" x="0.0" y="0.0" width="414" height="205"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="d0e-AZ-s9h" userLabel="Settings Header View">
<rect key="frame" x="16" y="52" width="382" height="153"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="6" translatesAutoresizingMaskIntoConstraints="NO" id="ilY-fy-mLW">
<rect key="frame" x="0.0" y="16" width="382" height="121"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Y4i-0f-aaK">
<rect key="frame" x="0.0" y="0.0" width="382" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NCJ-oM-lfl">
<rect key="frame" x="0.0" y="0.0" width="44" height="44"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="0WX-a3-f7d"/>
<constraint firstAttribute="height" constant="44" id="AGb-Pm-YBy"/>
</constraints>
<state key="normal" image="arrow-left"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localVOLabelKey" value="global_back"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="backButtonTapped:" destination="-1" eventType="touchUpInside" id="nlh-NB-bDD"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="NCJ-oM-lfl" secondAttribute="trailing" id="2DZ-CC-hU8"/>
<constraint firstItem="NCJ-oM-lfl" firstAttribute="top" secondItem="Y4i-0f-aaK" secondAttribute="top" id="CCC-BC-Ra1"/>
<constraint firstItem="NCJ-oM-lfl" firstAttribute="leading" secondItem="Y4i-0f-aaK" secondAttribute="leading" id="XpH-eI-Zb1"/>
<constraint firstAttribute="bottom" secondItem="NCJ-oM-lfl" secondAttribute="bottom" id="zfp-we-f3i"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="S0B-TE-jI1">
<rect key="frame" x="0.0" y="50" width="382" height="41"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle0"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vMI-Qw-Rf2" userLabel="Subtitle">
<rect key="frame" x="0.0" y="97" width="382" height="24"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle3"/>
<color key="textColor" red="0.0" green="0.40000000000000002" blue="0.1058823529" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" red="0.7843137255" green="1" blue="0.72549019609999998" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="ilY-fy-mLW" secondAttribute="bottom" constant="16" id="BpD-Yz-t0n"/>
<constraint firstItem="ilY-fy-mLW" firstAttribute="leading" secondItem="d0e-AZ-s9h" secondAttribute="leading" id="QUS-Bc-p5D"/>
<constraint firstItem="ilY-fy-mLW" firstAttribute="top" secondItem="d0e-AZ-s9h" secondAttribute="top" constant="16" id="Vi5-ur-GD8"/>
<constraint firstAttribute="trailing" secondItem="ilY-fy-mLW" secondAttribute="trailing" id="ZYp-PS-WVh"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.7843137255" green="1" blue="0.72549019609999998" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="d0e-AZ-s9h" secondAttribute="trailing" constant="16" id="EAi-Dd-Wau"/>
<constraint firstAttribute="bottom" secondItem="d0e-AZ-s9h" secondAttribute="bottom" id="I4U-8V-WEJ"/>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="128" id="Xmc-o3-XZg"/>
<constraint firstItem="d0e-AZ-s9h" firstAttribute="top" secondItem="YfJ-Mp-dnc" secondAttribute="topMargin" id="pvb-j0-Tcu"/>
<constraint firstItem="d0e-AZ-s9h" firstAttribute="leading" secondItem="YfJ-Mp-dnc" secondAttribute="leading" constant="16" id="wJ5-AZ-dPP"/>
</constraints>
</view>
</subviews>
<viewLayoutGuide key="safeArea" id="GRG-kK-3OI"/>
<color key="backgroundColor" red="0.8980392157" green="0.8980392157" blue="0.8980392157" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="YfJ-Mp-dnc" firstAttribute="top" secondItem="BnF-K7-LIC" secondAttribute="top" id="2Jd-u3-y4L"/>
<constraint firstItem="oBD-Sm-27y" firstAttribute="leading" secondItem="GRG-kK-3OI" secondAttribute="leading" id="6oP-6T-AJS"/>
<constraint firstItem="oBD-Sm-27y" firstAttribute="top" secondItem="YfJ-Mp-dnc" secondAttribute="bottom" id="8z0-dE-Gmy"/>
<constraint firstItem="oBD-Sm-27y" firstAttribute="trailing" secondItem="GRG-kK-3OI" secondAttribute="trailing" id="LuU-Ni-ZzG"/>
<constraint firstItem="YfJ-Mp-dnc" firstAttribute="trailing" secondItem="GRG-kK-3OI" secondAttribute="trailing" id="P4d-zd-SYz"/>
<constraint firstItem="GRG-kK-3OI" firstAttribute="bottom" secondItem="oBD-Sm-27y" secondAttribute="bottom" id="YOP-Oe-nSt"/>
<constraint firstItem="YfJ-Mp-dnc" firstAttribute="leading" secondItem="GRG-kK-3OI" secondAttribute="leading" id="n94-zU-pRq"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<point key="canvasLocation" x="834.78260869565224" y="694.75446428571422"/>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" id="hs3-aq-PMB">
<rect key="frame" x="0.0" y="0.0" width="110" height="200"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<viewLayoutGuide key="safeArea" id="Jam-7s-1S4"/>
<point key="canvasLocation" x="599" y="295"/>
</stackView>
</objects>
<resources>
<image name="arrow-left" width="24" height="24"/>
</resources>
</document>

View file

@ -0,0 +1,38 @@
//
// RestrictionsViewController.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
import UIKit
class RestrictionsViewController: CovidHeaderContentViewController {
let restrictionsTableViewController: RestrictionTableViewController = RestrictionTableViewController(nibName: "RestrictionTableView", bundle: nil)
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
tabBarItem.title = "restrictions_heading".localizedString()
tabBarItem.image = UIImage(named: "unlock")
}
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.text = "restrictions_heading".localizedString()
setupContentView(contentView: restrictionsTableViewController.view)
}
override func setupContentView(contentView: UIView) {
addChild(restrictionsTableViewController)
super.setupContentView(contentView: contentView)
restrictionsTableViewController.didMove(toParent: self)
}
}

View file

@ -9,20 +9,13 @@ import UIKit
let statisticsStateTerritorySelectedKey = "statisticsStateTerritorySelectedKey"
class SelectStateTerritoryViewController: UITableViewController {
class SelectableTableViewController<T>: UITableViewController where T:SimpleCellObject {
var delegate: StateTerritorySelectionDelegate?
var delegate: TableSelectionDelegate?
lazy var stateTerritoryConfig: StateTerritory = {
guard let value = UserDefaults.standard.string(forKey: statisticsStateTerritorySelectedKey) else {
return StateTerritory.AU
}
return StateTerritory(rawValue: value)!
}(){
didSet {
UserDefaults.standard.set(stateTerritoryConfig.rawValue, forKey: statisticsStateTerritorySelectedKey)
}
}
var selectedValue: T?
var data:[[T]] = []
var sectionTitles: [String] = []
override func viewDidLoad() {
super.viewDidLoad()
@ -51,15 +44,16 @@ class SelectStateTerritoryViewController: UITableViewController {
// MARK: - Table view data source
fileprivate func getNumberOfSections() -> Int {
return data.count
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 2
return getNumberOfSections()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return 1
}
return 8
return data[section].count
}
@ -67,86 +61,74 @@ class SelectStateTerritoryViewController: UITableViewController {
let cell = tableView.dequeueReusableCell(withIdentifier: "StateTerritoryCell", for: indexPath) as! StateTerritoryTableViewCell
// Configure the cell...
if indexPath.section == 0 {
cell.stateTerritoryLabel.text = "country_region_name_au".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.AU
} else {
switch indexPath.row {
case 0:
cell.stateTerritoryLabel.text = "australian_capital_territory".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.ACT
case 1:
cell.stateTerritoryLabel.text = "new_south_wales".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.NSW
case 2:
cell.stateTerritoryLabel.text = "northern_territory".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.NT
case 3:
cell.stateTerritoryLabel.text = "queensland".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.QLD
case 4:
cell.stateTerritoryLabel.text = "south_australia".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.SA
case 5:
cell.stateTerritoryLabel.text = "tasmania".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.TAS
case 6:
cell.stateTerritoryLabel.text = "victoria".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.VIC
case 7:
cell.stateTerritoryLabel.text = "western_australia".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.WA
default:
cell.stateTerritoryLabel.text = ""
cell.setSelected(false, animated: false)
}
}
let sectionValues = data[indexPath.section]
let rowValue = sectionValues[indexPath.row]
cell.stateTerritoryLabel.text = rowValue.getCellTitle()
cell.isSelectedTickView.isHidden = selectedValue?.getCellTitle() != rowValue.getCellTitle()
return cell
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0 {
if sectionTitles.count > section {
return sectionTitles[section]
}
return nil
}
return "states_territories".localizedString()
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 0 {
stateTerritoryConfig = StateTerritory.AU
} else {
switch indexPath.row {
case 0:
stateTerritoryConfig = StateTerritory.ACT
case 1:
stateTerritoryConfig = StateTerritory.NSW
case 2:
stateTerritoryConfig = StateTerritory.NT
case 3:
stateTerritoryConfig = StateTerritory.QLD
case 4:
stateTerritoryConfig = StateTerritory.SA
case 5:
stateTerritoryConfig = StateTerritory.TAS
case 6:
stateTerritoryConfig = StateTerritory.VIC
case 7:
stateTerritoryConfig = StateTerritory.WA
default:
stateTerritoryConfig = StateTerritory.AU
}
}
delegate?.didChangeStateTerritory(selectedState: stateTerritoryConfig)
let sectionValues = data[indexPath.section]
let selectedValue = sectionValues[indexPath.row]
delegate?.didChangeSelectedValue(selectedValue: selectedValue)
dismissView()
}
}
protocol SimpleCellObject {
func getCellTitle() -> String
}
enum StateTerritory: String {
case AU, ACT, NSW, NT, QLD, SA, TAS, VIC, WA
}
protocol StateTerritorySelectionDelegate {
func didChangeStateTerritory( selectedState: StateTerritory )
extension StateTerritory {
func stateTerritoryFullName() -> String {
switch self {
case .ACT:
return "australian_capital_territory".localizedString()
case .NSW:
return "new_south_wales".localizedString()
case .NT:
return "northern_territory".localizedString()
case .QLD:
return "queensland".localizedString()
case .SA:
return "south_australia".localizedString()
case .TAS:
return "tasmania".localizedString()
case .VIC:
return "victoria".localizedString()
case .WA:
return "western_australia".localizedString()
default:
return "country_region_name_au".localizedString()
}
}
}
extension StateTerritory: SimpleCellObject {
func getCellTitle() -> String {
return stateTerritoryFullName()
}
}
protocol TableSelectionDelegate {
func didChangeSelectedValue( selectedValue: Any )
}

View file

@ -1,5 +1,5 @@
//
// StateTerritoryTableViewCell.swift
// SelectableTableViewCell.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
@ -7,7 +7,7 @@
import UIKit
class StateTerritoryTableViewCell: UITableViewCell {
class SelectableTableViewCell: UITableViewCell {
@IBOutlet weak var stateTerritoryLabel: UILabel!
@IBOutlet weak var isSelectedTickView: UIImageView!

View file

@ -10,7 +10,7 @@
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="KGk-i7-Jjw" customClass="StateTerritoryTableViewCell" customModule="COVIDSafe" customModuleProvider="target">
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="KGk-i7-Jjw" customClass="SelectableTableViewCell" customModule="COVIDSafe" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
@ -18,10 +18,10 @@
<autoresizingMask key="autoresizingMask"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IRG-7E-Bc6">
<rect key="frame" x="16" y="0.0" width="288" height="44"/>
<rect key="frame" x="16" y="16" width="288" height="12"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="200" horizontalCompressionResistancePriority="200" text="State or Territory" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dDd-fW-Xme">
<rect key="frame" x="0.0" y="0.0" width="264" height="44"/>
<rect key="frame" x="0.0" y="0.0" width="264" height="12"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
@ -30,15 +30,15 @@
</userDefinedRuntimeAttributes>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="check-green" translatesAutoresizingMaskIntoConstraints="NO" id="SYH-LF-T3s">
<rect key="frame" x="264" y="0.0" width="24" height="44"/>
<rect key="frame" x="264" y="0.0" width="24" height="12"/>
</imageView>
</subviews>
</stackView>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="IRG-7E-Bc6" secondAttribute="trailing" constant="16" id="Y3n-VD-NnY"/>
<constraint firstItem="IRG-7E-Bc6" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="fwH-vv-7t7"/>
<constraint firstAttribute="bottom" secondItem="IRG-7E-Bc6" secondAttribute="bottom" id="go6-ys-gYB"/>
<constraint firstItem="IRG-7E-Bc6" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="16" id="fwH-vv-7t7"/>
<constraint firstAttribute="bottom" secondItem="IRG-7E-Bc6" secondAttribute="bottom" constant="16" id="go6-ys-gYB"/>
<constraint firstItem="IRG-7E-Bc6" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="ya0-cT-oel"/>
</constraints>
</tableViewCellContentView>

View file

@ -0,0 +1,93 @@
//
// SelectableTableViewController.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import UIKit
let statisticsStateTerritorySelectedKey = "statisticsStateTerritorySelectedKey"
class SelectableTableViewController<T>: UITableViewController where T:SimpleCellObject {
var delegate: TableSelectionDelegate?
var selectedValue: T?
var data:[[T]] = []
var sectionTitles: [String] = []
override func viewDidLoad() {
super.viewDidLoad()
let buttonTitle = "global_cancel_button_title".localizedString()
let item = UIBarButtonItem(
title: buttonTitle,
style: .plain,
target: self,
action: #selector(dismissView)
)
item.tintColor = .covidSafeColor
navigationItem.rightBarButtonItem = item
tableView.register(UINib(nibName: "SelectableTableViewCell", bundle: nil), forCellReuseIdentifier: "SelectableCell")
}
@objc func dismissView() {
dismiss(animated: true, completion: nil)
}
// MARK: - Table view data source
fileprivate func getNumberOfSections() -> Int {
return data.count
}
override func numberOfSections(in tableView: UITableView) -> Int {
return getNumberOfSections()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data[section].count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SelectableCell", for: indexPath) as! SelectableTableViewCell
// Configure the cell...
let sectionValues = data[indexPath.section]
let rowValue = sectionValues[indexPath.row]
cell.stateTerritoryLabel.text = rowValue.getCellTitle()
cell.isSelectedTickView.isHidden = selectedValue?.getCellTitle() != rowValue.getCellTitle()
return cell
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if sectionTitles.count > section {
return sectionTitles[section]
}
return nil
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let sectionValues = data[indexPath.section]
let selectedValue = sectionValues[indexPath.row]
delegate?.didChangeSelectedValue(selectedValue: selectedValue)
dismissView()
}
}
protocol SimpleCellObject {
func getCellTitle() -> String
}
protocol TableSelectionDelegate {
func didChangeSelectedValue( selectedValue: Any )
}

View file

@ -9,7 +9,7 @@
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SelectStateTerritoryViewController" customModule="COVIDSafe" customModuleProvider="target">
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SelectableTableViewController" customModule="COVIDSafe" customModuleProvider="target">
<connections>
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
</connections>

View file

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="iN0-l3-epB" customClass="SelectionTableViewCell" customModule="COVIDSafe" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="414" height="80"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ywa-XO-qG4">
<rect key="frame" x="16" y="16" width="342" height="19.5"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleCallout"/>
<nil key="highlightedColor"/>
</label>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="chevron-right-green" translatesAutoresizingMaskIntoConstraints="NO" id="PdW-Fe-Ks5">
<rect key="frame" x="374" y="28" width="24" height="24"/>
<constraints>
<constraint firstAttribute="height" constant="24" id="7UZ-yR-WYk"/>
<constraint firstAttribute="width" constant="24" id="VNn-X1-ASh"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="n5z-8l-Kbm">
<rect key="frame" x="16" y="35.5" width="342" height="28.5"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle3"/>
<color key="textColor" red="0.0" green="0.40000000000000002" blue="0.1058823529" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ihQ-1X-s9i">
<rect key="frame" x="0.0" y="79" width="414" height="1"/>
<color key="backgroundColor" red="0.86666666670000003" green="0.86666666670000003" blue="0.86666666670000003" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="rQX-0y-CAb"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="PdW-Fe-Ks5" secondAttribute="trailing" constant="16" id="3wY-di-qH8"/>
<constraint firstAttribute="bottom" secondItem="n5z-8l-Kbm" secondAttribute="bottom" constant="16" id="83O-tT-c5A"/>
<constraint firstItem="Ywa-XO-qG4" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="16" id="E7Q-xB-Ywr"/>
<constraint firstItem="Ywa-XO-qG4" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="16" id="EH7-5C-2Vv"/>
<constraint firstItem="n5z-8l-Kbm" firstAttribute="top" secondItem="Ywa-XO-qG4" secondAttribute="bottom" id="NKA-aE-Ogg"/>
<constraint firstItem="n5z-8l-Kbm" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="16" id="PuM-hH-5n5"/>
<constraint firstItem="PdW-Fe-Ks5" firstAttribute="leading" secondItem="n5z-8l-Kbm" secondAttribute="trailing" constant="16" id="XbT-wE-zye"/>
<constraint firstItem="n5z-8l-Kbm" firstAttribute="trailing" secondItem="Ywa-XO-qG4" secondAttribute="trailing" id="ghc-VH-BMI"/>
<constraint firstAttribute="bottom" secondItem="ihQ-1X-s9i" secondAttribute="bottom" id="ivM-g3-rFb"/>
<constraint firstAttribute="trailing" secondItem="ihQ-1X-s9i" secondAttribute="trailing" id="pTq-I0-Bdm"/>
<constraint firstItem="ihQ-1X-s9i" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="szv-fJ-E3p"/>
<constraint firstItem="PdW-Fe-Ks5" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="uhn-Zy-1c9"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="selection" destination="n5z-8l-Kbm" id="xk2-lh-OBr"/>
<outlet property="title" destination="Ywa-XO-qG4" id="cGG-qV-xxl"/>
</connections>
<point key="canvasLocation" x="140.57971014492756" y="-187.5"/>
</view>
</objects>
<resources>
<image name="chevron-right-green" width="24" height="24"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View file

@ -43,6 +43,11 @@
<action selector="onHelpButtonTapped:" destination="-1" id="2UR-nw-9Yq"/>
</connections>
</tapGestureRecognizer>
<tapGestureRecognizer id="hue-bj-avC" userLabel="ActivityTimeTapped">
<connections>
<action selector="onActivityTimeTapped:" destination="-1" id="DCx-xv-jKS"/>
</connections>
</tapGestureRecognizer>
<tapGestureRecognizer id="ebA-TD-KVl" userLabel="ChangePostcodeTapped">
<connections>
<action selector="onChangePostcodeTapped:" destination="-1" id="iNG-Ve-GWB"/>
@ -69,24 +74,10 @@
<rect key="frame" x="0.0" y="44" width="414" height="1212"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ged-Y1-PEf" userLabel="Settings Header View">
<rect key="frame" x="0.0" y="0.0" width="414" height="127"/>
<rect key="frame" x="0.0" y="0.0" width="414" height="73"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CKI-8C-yHZ">
<rect key="frame" x="5" y="16" width="44" height="44"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="2ax-MN-sRY"/>
<constraint firstAttribute="height" constant="44" id="BfU-pz-Klm"/>
</constraints>
<state key="normal" image="arrow-left"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localVOLabelKey" value="global_back"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="onBackTapped:" destination="-1" eventType="touchUpInside" id="qRo-oe-X6G"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Settings" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aZp-27-AWI">
<rect key="frame" x="16" y="70" width="121" height="41"/>
<rect key="frame" x="16" y="16" width="121" height="41"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle0"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
@ -97,15 +88,13 @@
</subviews>
<color key="backgroundColor" red="0.7843137255" green="1" blue="0.72549019609999998" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
<constraints>
<constraint firstItem="CKI-8C-yHZ" firstAttribute="top" secondItem="Ged-Y1-PEf" secondAttribute="top" constant="16" id="0cy-dN-D71"/>
<constraint firstItem="CKI-8C-yHZ" firstAttribute="leading" secondItem="Ged-Y1-PEf" secondAttribute="leading" constant="5" id="FDe-Wo-Fe2"/>
<constraint firstAttribute="bottom" secondItem="aZp-27-AWI" secondAttribute="bottom" constant="16" id="WU0-Qv-eJt"/>
<constraint firstItem="aZp-27-AWI" firstAttribute="leading" secondItem="Ged-Y1-PEf" secondAttribute="leading" constant="16" id="dAl-fm-TqQ"/>
<constraint firstItem="aZp-27-AWI" firstAttribute="top" secondItem="CKI-8C-yHZ" secondAttribute="bottom" constant="10" id="x4k-Qt-rFk"/>
<constraint firstItem="aZp-27-AWI" firstAttribute="top" secondItem="Ged-Y1-PEf" secondAttribute="top" constant="16" id="oPZ-Jq-B4Q"/>
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="h36-8c-K2n">
<rect key="frame" x="0.0" y="127" width="414" height="914"/>
<rect key="frame" x="0.0" y="73" width="414" height="914"/>
<subviews>
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="OCo-Pr-qlb" userLabel="ImprovementsView">
<rect key="frame" x="0.0" y="-57" width="414" height="57"/>
@ -449,6 +438,136 @@
<constraint firstAttribute="bottom" secondItem="kYu-cb-Gkb" secondAttribute="bottom" constant="12" id="G90-Zv-cn9"/>
</constraints>
</view>
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="s1S-1e-zIa" userLabel="Activity time">
<rect key="frame" x="0.0" y="248" width="414" height="56"/>
<subviews>
<view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Rqy-Je-DvH">
<rect key="frame" x="0.0" y="12" width="414" height="32"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rAn-Tb-Mxg" userLabel="Activity time">
<rect key="frame" x="0.0" y="0.0" width="414" height="32"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Check app activity" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DWF-9Z-np6">
<rect key="frame" x="72" y="16" width="302" height="0.0"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" none="YES"/>
<bool key="isElement" value="NO"/>
</accessibility>
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle3"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizationKey" value="activity_button"/>
</userDefinedRuntimeAttributes>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ChevronRight" translatesAutoresizingMaskIntoConstraints="NO" id="9OA-vv-u6q">
<rect key="frame" x="382" y="16" width="24" height="24"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" button="YES" image="YES"/>
</accessibility>
<constraints>
<constraint firstAttribute="height" constant="24" id="Cjd-2Z-6mo"/>
<constraint firstAttribute="width" constant="24" id="j5g-4a-IJ3"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="View your app's Bluetooth interactions with other COVIDSafe users." textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZJG-QC-47n">
<rect key="frame" x="72" y="16" width="302" height="0.0"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" none="YES"/>
<bool key="isElement" value="NO"/>
</accessibility>
<fontDescription key="fontDescription" style="UICTFontTextStyleCallout"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizationKey" value="activity_button_description"/>
</userDefinedRuntimeAttributes>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GHI-te-2v3">
<rect key="frame" x="16" y="16" width="40" height="40"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="activity" translatesAutoresizingMaskIntoConstraints="NO" id="RBT-aJ-A3x">
<rect key="frame" x="8" y="8" width="24" height="24"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="0.0"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
</subviews>
<color key="backgroundColor" red="0.7843137255" green="1" blue="0.72549019609999998" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="RBT-aJ-A3x" secondAttribute="trailing" constant="8" id="2Ew-Fr-WlE"/>
<constraint firstItem="RBT-aJ-A3x" firstAttribute="top" secondItem="GHI-te-2v3" secondAttribute="top" constant="8" id="CLG-nl-QXx"/>
<constraint firstAttribute="height" constant="40" id="di7-wo-zIZ"/>
<constraint firstAttribute="width" constant="40" id="qLu-Fw-umV"/>
<constraint firstAttribute="bottom" secondItem="RBT-aJ-A3x" secondAttribute="bottom" constant="8" id="u8E-fS-H4S"/>
<constraint firstItem="RBT-aJ-A3x" firstAttribute="leading" secondItem="GHI-te-2v3" secondAttribute="leading" constant="8" id="w1S-w7-vhP"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="20"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<accessibility key="accessibilityConfiguration" label="Help topics. If you have issues or questions about the app.">
<accessibilityTraits key="traits" button="YES"/>
<bool key="isElement" value="YES"/>
</accessibility>
<constraints>
<constraint firstItem="9OA-vv-u6q" firstAttribute="top" secondItem="rAn-Tb-Mxg" secondAttribute="top" constant="16" id="38D-3H-DZu"/>
<constraint firstItem="ZJG-QC-47n" firstAttribute="top" secondItem="DWF-9Z-np6" secondAttribute="bottom" id="7QU-Ef-rKq"/>
<constraint firstItem="GHI-te-2v3" firstAttribute="top" secondItem="rAn-Tb-Mxg" secondAttribute="top" constant="16" id="AiZ-Pf-p1E"/>
<constraint firstItem="DWF-9Z-np6" firstAttribute="top" secondItem="rAn-Tb-Mxg" secondAttribute="top" constant="16" id="GYD-xN-nGI"/>
<constraint firstItem="GHI-te-2v3" firstAttribute="leading" secondItem="rAn-Tb-Mxg" secondAttribute="leading" constant="16" id="IzM-zC-xtJ"/>
<constraint firstItem="9OA-vv-u6q" firstAttribute="leading" secondItem="DWF-9Z-np6" secondAttribute="trailing" constant="8" id="bOL-iF-ilR"/>
<constraint firstItem="ZJG-QC-47n" firstAttribute="trailing" secondItem="DWF-9Z-np6" secondAttribute="trailing" id="bX9-wZ-OXt"/>
<constraint firstItem="DWF-9Z-np6" firstAttribute="leading" secondItem="GHI-te-2v3" secondAttribute="trailing" constant="16" id="ftY-Km-KTY"/>
<constraint firstAttribute="bottom" secondItem="ZJG-QC-47n" secondAttribute="bottom" constant="16" id="ggg-L2-N3r"/>
<constraint firstAttribute="trailing" secondItem="9OA-vv-u6q" secondAttribute="trailing" constant="8" id="ycQ-kY-WIc"/>
<constraint firstItem="ZJG-QC-47n" firstAttribute="leading" secondItem="DWF-9Z-np6" secondAttribute="leading" id="yiB-eT-Haa"/>
</constraints>
<connections>
<outletCollection property="gestureRecognizers" destination="hue-bj-avC" appends="YES" id="unC-RM-LqG"/>
</connections>
</view>
</subviews>
<color key="backgroundColor" red="0.8980392157" green="0.8980392157" blue="0.8980392157" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="rAn-Tb-Mxg" secondAttribute="trailing" id="F48-eD-jD6"/>
<constraint firstAttribute="bottom" secondItem="rAn-Tb-Mxg" secondAttribute="bottom" id="Fdq-ww-AKy"/>
<constraint firstItem="rAn-Tb-Mxg" firstAttribute="leading" secondItem="Rqy-Je-DvH" secondAttribute="leading" id="imt-Bf-ApE"/>
<constraint firstItem="rAn-Tb-Mxg" firstAttribute="top" secondItem="Rqy-Je-DvH" secondAttribute="top" id="wxV-R6-WoE"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="4"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
<real key="value" value="10"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
<real key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
<size key="value" width="0.0" height="5"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="shadowColor">
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.10000000000000001" colorSpace="custom" customColorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<constraints>
<constraint firstItem="Rqy-Je-DvH" firstAttribute="top" secondItem="s1S-1e-zIa" secondAttribute="top" constant="12" id="9QQ-NY-iBp"/>
<constraint firstAttribute="bottom" secondItem="Rqy-Je-DvH" secondAttribute="bottom" constant="12" id="C73-DP-PmK"/>
<constraint firstAttribute="trailing" secondItem="Rqy-Je-DvH" secondAttribute="trailing" id="IPa-hb-dBQ"/>
<constraint firstItem="Rqy-Je-DvH" firstAttribute="leading" secondItem="s1S-1e-zIa" secondAttribute="leading" id="fXh-6K-XFq"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="d7u-8K-E8H" userLabel="Change Postcode">
<rect key="frame" x="0.0" y="248" width="414" height="153"/>
<subviews>
@ -1202,7 +1321,7 @@
<image name="ChevronRight" width="24" height="24"/>
<image name="ShareApp" width="24" height="24"/>
<image name="WhiteSmallGovCrest" width="44" height="31"/>
<image name="arrow-left" width="24" height="24"/>
<image name="activity" width="24" height="24"/>
<image name="bell 1" width="40" height="40"/>
<image name="chevron-right-red" width="24" height="24"/>
<image name="home" width="24" height="24"/>

View file

@ -24,6 +24,17 @@ class SettingsViewController: UIViewController {
private let reachability = try! Reachability()
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
tabBarItem.title = "settings".localizedString()
tabBarItem.image = UIImage(named: "settings")
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override func viewDidLoad() {
super.viewDidLoad()
initialLabelTextColour = pushNotificationStatusTitle.textColor

View file

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="iN0-l3-epB" customClass="SimpleTableViewCell" customModule="COVIDSafe" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="406" height="60"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nz3-dK-8Jf">
<rect key="frame" x="16" y="16" width="334" height="28"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle3"/>
<color key="textColor" red="0.0" green="0.40000000000000002" blue="0.1058823529" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="chevron-right-green" translatesAutoresizingMaskIntoConstraints="NO" id="oOJ-fp-0LT">
<rect key="frame" x="366" y="18" width="24" height="24"/>
<constraints>
<constraint firstAttribute="height" constant="24" id="81R-wT-mvy"/>
<constraint firstAttribute="width" constant="24" id="T6Y-xB-9SI"/>
</constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qFV-54-YJX">
<rect key="frame" x="0.0" y="59" width="406" height="1"/>
<color key="backgroundColor" red="0.86666666670000003" green="0.86666666670000003" blue="0.86666666670000003" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="lg6-QM-g0V"/>
</constraints>
</view>
</subviews>
<viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="nz3-dK-8Jf" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="16" id="LAY-QD-bSB"/>
<constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="qFV-54-YJX" secondAttribute="bottom" id="Llm-WN-JUG"/>
<constraint firstItem="nz3-dK-8Jf" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="16" id="PTH-aN-gRj"/>
<constraint firstItem="oOJ-fp-0LT" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="bhw-u6-ElF"/>
<constraint firstItem="nz3-dK-8Jf" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="bmJ-Rg-NFo"/>
<constraint firstItem="oOJ-fp-0LT" firstAttribute="leading" secondItem="nz3-dK-8Jf" secondAttribute="trailing" constant="16" id="cEu-HI-11d"/>
<constraint firstItem="qFV-54-YJX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="e7Z-Cv-lOy"/>
<constraint firstAttribute="trailing" secondItem="qFV-54-YJX" secondAttribute="trailing" id="hTd-0l-NtW"/>
<constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="nz3-dK-8Jf" secondAttribute="bottom" constant="16" id="jm1-HB-bV2"/>
<constraint firstAttribute="trailing" secondItem="oOJ-fp-0LT" secondAttribute="trailing" constant="16" id="zGY-Bn-LqP"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="rightImageView" destination="oOJ-fp-0LT" id="NdM-Cz-p4R"/>
<outlet property="title" destination="nz3-dK-8Jf" id="OD8-ca-N7K"/>
</connections>
<point key="canvasLocation" x="-57.971014492753625" y="-191.51785714285714"/>
</view>
</objects>
<resources>
<image name="chevron-right-green" width="24" height="24"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View file

@ -0,0 +1,45 @@
//
// StateTerritory.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
enum StateTerritory: String {
case AU, ACT, NSW, NT, QLD, SA, TAS, VIC, WA
}
extension StateTerritory {
func stateTerritoryFullName() -> String {
switch self {
case .ACT:
return "australian_capital_territory".localizedString()
case .NSW:
return "new_south_wales".localizedString()
case .NT:
return "northern_territory".localizedString()
case .QLD:
return "queensland".localizedString()
case .SA:
return "south_australia".localizedString()
case .TAS:
return "tasmania".localizedString()
case .VIC:
return "victoria".localizedString()
case .WA:
return "western_australia".localizedString()
default:
return "country_region_name_au".localizedString()
}
}
}
extension StateTerritory: SimpleCellObject {
func getCellTitle() -> String {
return stateTerritoryFullName()
}
}

View file

@ -0,0 +1,66 @@
//
// String+HtmlAttributed.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
import UIKit
extension String {
func htmlDocumentString(font: UIFont, withAdditionalCSS: String = "") -> String {
let htmlTemplate = """
<!doctype html>
<html>
<head>
<style>
body {
font-family: -apple-system;
font-size: \(font.pointSize)px;
}
\(withAdditionalCSS)
</style>
</head>
<body>
\(self)
</body>
</html>
"""
return htmlTemplate
}
func htmlDocumentAttributedString(font: UIFont, withAdditionalCSS: String = "") -> NSAttributedString? {
let htmlTemplate = """
<!doctype html>
<html>
<head>
<style>
body {
font-family: -apple-system;
font-size: \(font.pointSize)px;
}
\(withAdditionalCSS)
</style>
</head>
<body>
\(self)
</body>
</html>
"""
guard let data = htmlTemplate.data(using: .unicode) else {
return nil
}
guard let attributedString = try? NSAttributedString(
data: data,
options: [.documentType: NSAttributedString.DocumentType.html],
documentAttributes: nil
) else {
return nil
}
return attributedString
}
}

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="2aT-J1-hst" userLabel="SectionHeaderView" customClass="SectionHeaderView" customModule="COVIDSafe" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="354" height="54"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Updated 31 August 2020 10:30am" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vZq-Ek-gMQ">
<rect key="frame" x="16" y="24" width="322" height="24"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
<color key="textColor" red="0.63921568630000003" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<viewLayoutGuide key="safeArea" id="bf0-fV-Xdv"/>
<color key="backgroundColor" red="0.8980392157" green="0.8980392157" blue="0.8980392157" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="vZq-Ek-gMQ" firstAttribute="top" secondItem="2aT-J1-hst" secondAttribute="top" constant="24" id="QWY-Jr-0C9"/>
<constraint firstAttribute="trailing" secondItem="vZq-Ek-gMQ" secondAttribute="trailing" constant="16" id="egV-FT-O0S"/>
<constraint firstAttribute="bottom" secondItem="vZq-Ek-gMQ" secondAttribute="bottom" constant="6" id="gGA-LE-Pbb"/>
<constraint firstItem="vZq-Ek-gMQ" firstAttribute="leading" secondItem="2aT-J1-hst" secondAttribute="leading" constant="16" id="kqy-te-ynu"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="title" destination="vZq-Ek-gMQ" id="sI6-Ps-g25"/>
</connections>
<point key="canvasLocation" x="866.66666666666674" y="-52.901785714285715"/>
</view>
</objects>
</document>

View file

@ -22,4 +22,14 @@ extension UIColor {
UIGraphicsEndImageContext()
return img!
}
var hexString: String {
let components = self.cgColor.components
let r: CGFloat = components?[0] ?? 0.0
let g: CGFloat = components?[1] ?? 0.0
let b: CGFloat = components?[2] ?? 0.0
let hexString = String.init(format: "#%02lX%02lX%02lX", lroundf(Float(r * 255)), lroundf(Float(g * 255)), lroundf(Float(b * 255)))
return hexString
}
}

View file

@ -0,0 +1,23 @@
//
// UIImage+imageColor.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
import UIKit
extension UIImage {
class func imageWithColor(color: UIColor, topBorderColor: UIColor, size: CGSize) -> UIImage {
let rect: CGRect = CGRect(x: 0.0, y: 0.0, width: Double(size.width), height: Double(size.height))
let topRect: CGRect = CGRect(x: 0.0, y: 0.0, width: Double(size.width), height: Double(3.0))
UIGraphicsBeginImageContextWithOptions(size, false, 0)
color.setFill()
UIRectFill(rect)
topBorderColor.setFill()
UIRectFill(topRect)
let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
}

View file

@ -0,0 +1,14 @@
//
// WebContentView.swift
// CovidSafe
//
// Copyright © 2021 Australian Government. All rights reserved.
//
import UIKit
class WebContentView: UIView {
@IBOutlet weak var webContentView: UIWebView!
}

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="iN0-l3-epB" customClass="WebContentView" customModule="COVIDSafe" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="n9g-0C-xdp">
<rect key="frame" x="16" y="60" width="382" height="786"/>
<color key="backgroundColor" red="0.36078431370000003" green="0.38823529410000002" blue="0.4039215686" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</webView>
</subviews>
<viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="n9g-0C-xdp" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" constant="16" id="HwH-7m-6R9"/>
<constraint firstItem="n9g-0C-xdp" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="16" id="SHi-sy-yaU"/>
<constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="n9g-0C-xdp" secondAttribute="trailing" constant="16" id="a6a-uA-M6Q"/>
<constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="n9g-0C-xdp" secondAttribute="bottom" constant="16" id="clK-6v-P4i"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="webContentView" destination="n9g-0C-xdp" id="bVg-de-Ob2"/>
</connections>
<point key="canvasLocation" x="140.57971014492756" y="85.714285714285708"/>
</view>
</objects>
<resources>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View file

@ -7,15 +7,17 @@
"activity_button" = "تحقق من نشاط التطبيق";
"activity_button_description" = "اعرض تفاعلات Bluetooth لتطبيقك مع مستخدمي COVIDSafe الآخرين.";
"activity_heading" = "نشاط التطبيق";
"activity_intro" = "في كل مرة يتواجد جهازك في نطاق مستخدمي تطبيق COVIDSafe الآخرين ، فإنه يسجل تفاعلات Bluetooth التي تسمى \"مصافحات Bluetooth\". \n\n تدل هذه المصافحات على ما إذا كان تطبيقك يعمل بشكل صحيح.";
"activity_intro" = "";
"activity_intro_2" = "";
/* Figma page iOS Screens (05/06) */
"allow_bluetooth_call" = "السماح لتطبيق COVIDSafe بالوصول إلى Bluetooth®";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothOFF" = "الوصول إلى Bluetooth®: متوقف";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothON" = "الوصول إلى Bluetooth: مشغّل";
"app_activity_bluetooth_handshakes_heading" = "";
"australian_capital_territory" = "إقليم العاصمة الأسترالية";
"ble_handshakes_yesterday" = "مصافحات \U200F Bluetooth ليوم أمس";
"ble_handshakes_yesterday" = "";
"bluetooth_handshakes" = "مصافحات \U200F Bluetooth";
/* Figma page iOS Screens (05/06) */
"BluetoothOFF" = "\U200FBluetooth®: متوقف";
@ -276,11 +278,14 @@
"factors_dotpoint1" = "عدد مستخدمي تطبيق COVIDSafe الموجودين من حولك";
"factors_dotpoint2" = "طراز الجهاز وعمره";
"factors_dotpoint3" = "إذا كنت في مركبة متحركة";
"factors_dotpoint4" = "";
"factors_enviro_item_1" = "الحواجز الحسًية مثل الجدران";
"factors_enviro_item_2" = "المواد والتجهيزات التي تتداخل مع إشارات Bluetooth";
"factors_handshakes_heading" = "العوامل التي تؤثر على نشاط التطبيق";
"factors_intro" = "تشمل العوامل التي يمكن أن تؤثر على عدد المصافحات ما يلي:";
"factors_intro" = "";
"factors_intro_2" = "كما يمكن أن تتأثر المصافحات بالعوامل البيئية، بما في ذلك:";
/* Example: "From 22 to 28 January 2021" */
"from" = "";
"global_back" = "رجوع";
"global_close" = "إغلاق";
"global_double_tap" = "أنقر مرتين للتصحيح";
@ -288,6 +293,7 @@
"hide" = "إخفاء";
"home_app_permission_status_subtitle" = "لن يعمل تطبيق COVIDSafe بدون الإعدادات الصحيحة.";
"home_app_permission_status_title" = "تحقق من إعدادات هاتفك";
"home_bottom_nav" = "";
"home_data_uploaded_message" = "ساعد في وقف انتشار COVID-19 وتتبع أعراضك.";
"home_header_active_no_action_required" = "لا يلزم اتخاذ أي إجراء آخر.";
/* Home */
@ -360,12 +366,7 @@
"locally_acquired" = "%@ تم التقاطه محلياً";
"location_off" = "الموقع الجغرافي: معطّل";
"location_off_description" = "يتطلب جهاز iphone الخاص بك تشغيل الموقع الجغرافي ليتمكن تطبيق COVIDSafe من العمل. لا يقوم تطبيق COVIDSafe بتتبّع بيانات الموقع الجغرافي أو تخزينها.";
"low_handshakes_description" = "جرّب هذه النصائح لتحسين أداء تطبيق COVIDSafe على هاتفك:";
"low_handshakes_heading" = "ماذا تفعل إذا كان عدد المصافحات أقل مما تتوقع؟";
"low_handshakes_item1" = "تحقق مما إذا كان تطبيق COVIDSafe يعمل عن طريق فتح التطبيق.";
"low_handshakes_item2" = "قم بتحديث تطبيقك إلى أحدث إصدار من خلال متجر Google Play أو متجر Apple.";
"low_handshakes_item3" = "أغلق هاتفك وقم بإعادة تشغيله وافتح التطبيق مجددًا.";
"low_handshakes_link" = "اقرأ المزيد حول كيفية التحقق مما إذا كان تطبييق COVIDSafe يعمل بشكل صحيح";
"main_restrictions" = "";
/* Splash Screen */
"migration_in_progress" = "تحديث تطبيق COVIDSafe قيد الإنجاز. \n\nيُرجى التأكد من عدم إغلاق هاتفك إلى أن يتم اكتمال التحديث.";
"minute" = "دقيقة";
@ -373,6 +374,13 @@
"new_cases" = "الحالات الجديدة في ال 24 ساعة الماضية";
"new_cases_total" = "الحالات الجديدة منذ 1 شباط/فبراير 2020";
"new_south_wales" = "نيو ساوث ويلز";
"no_handshakes_description" = "";
"no_handshakes_heading" = "";
"no_handshakes_item1" = "تحقق مما إذا كان تطبيق COVIDSafe يعمل عن طريق فتح التطبيق.";
"no_handshakes_item2" = "قم بتحديث تطبيقك إلى أحدث إصدار من خلال متجر Google Play أو متجر Apple.";
"no_handshakes_item3" = "أغلق هاتفك وقم بإعادة تشغيله وافتح التطبيق مجددًا.";
"no_handshakes_item4" = "";
"no_handshakes_link" = "اقرأ المزيد حول كيفية التحقق مما إذا كان تطبييق COVIDSafe يعمل بشكل صحيح";
/* Figma page Android Screens (05/06) */
"norfolk_hint" = "على سبيل المثال: 51234";
"northern_territory" = "الإقليم الشمالي";
@ -438,6 +446,27 @@
/* Onboarding Registration Consent */
"registration_consent_headline" = "الموافقة على التسجيل";
"registration_consent_second_paragraph" = "معلومات حول اختلاطي بمستخدمين آخرين لتطبيق COVIDSafe في حال أظهرت نتائج الفحص أن مستخدمًا آخر كنت على تواصل معه مصاب بفيروس COVID-19، وقام هذا المستخدم بتحميل بيانات الاتصال به.";
"restrictions_accommodation" = "";
"restrictions_activity" = "";
"restrictions_cafes" = "";
"restrictions_disclaimer" = "";
"restrictions_domestic_travel" = "";
"restrictions_education" = "";
"restrictions_entertainment" = "";
"restrictions_error_dismiss" = "";
"restrictions_error_heading" = "";
"restrictions_error_message" = "";
"restrictions_error_try" = "";
"restrictions_gatherings_work" = "";
"restrictions_hair_beauty" = "";
"restrictions_heading" = "";
"restrictions_hotspots" = "";
"restrictions_retail" = "";
"restrictions_select_activity" = "";
"restrictions_select_state" = "";
"restrictions_sports" = "";
"restrictions_state" = "";
"restrictions_wedding" = "";
"save" = "حفظ";
"scheduled" = "قمت بتحديد مدة غفوة تطبيق COVIDSafe من %@ إلى %@.";
/* OnBoarding Enter Number */
@ -473,6 +502,8 @@
"support_content" = "للحصول على مساعدة بشأن المشكلات التي لا تغطيها مواضيع المساعدة";
"Support_VOLabel" = "الدعم. للحصول على مساعدة بشأن المشكلات التي لا تغطيها مواضيع المساعدة";
"tasmania" = "ولاية تسمانيا";
/* Example: "From 22 to 28 January 2021" */
"to" = "";
"total" = "المجموع";
"total_confirmed_cases" = "مجموع الحالات المؤكدة";
"total_deaths" = "%@ إجمالي الوفيات";

View file

@ -7,15 +7,17 @@
"activity_button" = "Ελέγξτε τη δραστηριότητα της εφαρμογής";
"activity_button_description" = "Δείτε τις αλληλεπιδράσεις Bluetooth της εφαρμογής σας με άλλους χρήστες της COVIDSafe.";
"activity_heading" = "Δραστηριότητα εφαρμογής";
"activity_intro" = "Κάθε φορά που η συσκευή σας βρίσκεται εντός εμβέλειας άλλων χρηστών της εφαρμογής COVIDSafe, λαμβάνει υπόψη τις αλληλεπιδράσεις Bluetooth που ονομάζονται «χειραψίες Bluetooth».\n\nΑυτές οι χειραψίες δίνουν μια ένδειξη για το πόσο καλά λειτουργεί η εφαρμογή σας.";
"activity_intro" = "";
"activity_intro_2" = "";
/* Figma page iOS Screens (05/06) */
"allow_bluetooth_call" = "Επιτρέψτε την COVIDSafe να έχει πρόσβαση στο Bluetooth®";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothOFF" = "Πρόσβαση στο Bluetooth®: ΑΠΕΝΕΡΓΟΠΟΙΗΜΕΝΗ";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothON" = "Πρόσβαση στο Bluetooth®: ΕΝΕΡΓΟΠΟΙΗΜΕΝΗ";
"app_activity_bluetooth_handshakes_heading" = "";
"australian_capital_territory" = "Επικράτεια Αυστραλιανής Πρωτεύουσας";
"ble_handshakes_yesterday" = "Χειραψίες Bluetooth χθες";
"ble_handshakes_yesterday" = "";
"bluetooth_handshakes" = "Χειραψίες Bluetooth";
/* Figma page iOS Screens (05/06) */
"BluetoothOFF" = "Bluetooth®: ΑΠΕΝΕΡΓΟΠΟΙΗΜΕΝΟ";
@ -276,11 +278,14 @@
"factors_dotpoint1" = "αριθμός χρηστών της COVIDSafe στην περιοχή σας";
"factors_dotpoint2" = "μοντέλο συσκευής και ηλικία";
"factors_dotpoint3" = "αν βρίσκεστε σε κινούμενο όχημα";
"factors_dotpoint4" = "";
"factors_enviro_item_1" = "φυσικά εμπόδια όπως οι τοίχοι";
"factors_enviro_item_2" = "υλικό και εξαρτήματα που παρεμβαίνουν στα σήματα Bluetooth";
"factors_handshakes_heading" = "Παράγοντες που επηρεάζουν τη δραστηριότητα της εφαρμογής";
"factors_intro" = "Οι παράγοντες που μπορούν να επηρεάσουν τον αριθμό των χειραψιών περιλαμβάνουν:";
"factors_intro" = "";
"factors_intro_2" = "Οι χειραψίες μπορούν επίσης να επηρεαστούν από περιβαλλοντικούς παράγοντες, όπως:";
/* Example: "From 22 to 28 January 2021" */
"from" = "";
"global_back" = "Πίσω";
"global_close" = "Κλείστε";
"global_double_tap" = "πατήστε δύο φορές για επεξεργασία";
@ -288,6 +293,7 @@
"hide" = "Απόκρυψη";
"home_app_permission_status_subtitle" = "Η COVIDSafe δε θα λειτουργήσει χωρίς τις σωστές ρυθμίσεις.";
"home_app_permission_status_title" = "Ελέγξτε τις ρυθμίσεις σας";
"home_bottom_nav" = "";
"home_data_uploaded_message" = "Βοηθήστε να σταματήσει η εξάπλωση του COVID-19 και παρακολουθείτε τα συμπτώματά σας.";
"home_header_active_no_action_required" = "Δεν απαιτούνται περαιτέρω ενέργειες.";
/* Home */
@ -360,12 +366,7 @@
"locally_acquired" = "%@ αποκτηθέν τοπικά";
"location_off" = "Τοποθεσία: ΑΠΕΝΕΡΓΟΠΟΙΗΜΕΝΗ";
"location_off_description" = "Το iPhone σας απαιτεί άδεια τοποθεσίας για να λειτουργήσει την COVIDSafe. Η COVIDSafe ΔΕΝ παρακολουθεί ούτε αποθηκεύει τα δεδομένα τοποθεσίας σας.";
"low_handshakes_description" = "Δοκιμάστε αυτές τις συμβουλές για να βελτιώσετε την απόδοση της COVIDSafe στο τηλέφωνό σας:";
"low_handshakes_heading" = "Τι να κάνετε αν οι αριθμοί χειραψιών σας είναι χαμηλότεροι από ό,τι περιμένετε;";
"low_handshakes_item1" = "Ελέγξτε εάν η COVIDSafe είναι ενεργή ανοίγοντας την εφαρμογή.";
"low_handshakes_item2" = "Ενημερώστε την εφαρμογή σας στην πιο πρόσφατη έκδοση μέσω του Google Play Store ή του Apple Store.";
"low_handshakes_item3" = "Επανεκκινήστε το τηλέφωνό σας και ανοίξτε ξανά την εφαρμογή.";
"low_handshakes_link" = "Διαβάστε περισσότερα για το πώς να ελέγξετε εάν η COVIDSafe λειτουργεί σωστά";
"main_restrictions" = "";
/* Splash Screen */
"migration_in_progress" = "Η ενημέρωση της COVIDSafe συνεχίζεται. \n\nΒεβαιωθείτε ότι το τηλέφωνό σας δεν είναι απενεργοποιημένο έως ότου ολοκληρωθεί η ενημέρωση.";
"minute" = "Λεπτό";
@ -373,6 +374,13 @@
"new_cases" = "Νέα κρούσματα κατά τις τελευταίες 24 ώρες";
"new_cases_total" = "Νέα κρούσματα από την 1η Φεβρουαρίου 2020";
"new_south_wales" = "Νέα Νότια Ουαλία";
"no_handshakes_description" = "";
"no_handshakes_heading" = "";
"no_handshakes_item1" = "Ελέγξτε εάν η COVIDSafe είναι ενεργή ανοίγοντας την εφαρμογή.";
"no_handshakes_item2" = "Ενημερώστε την εφαρμογή σας στην πιο πρόσφατη έκδοση μέσω του Google Play Store ή του Apple Store.";
"no_handshakes_item3" = "Επανεκκινήστε το τηλέφωνό σας και ανοίξτε ξανά την εφαρμογή.";
"no_handshakes_item4" = "";
"no_handshakes_link" = "Διαβάστε περισσότερα για το πώς να ελέγξετε εάν η COVIDSafe λειτουργεί σωστά";
/* Figma page Android Screens (05/06) */
"norfolk_hint" = "Για παράδειγμα: 51234";
"northern_territory" = "Βόρεια Επικράτεια";
@ -438,6 +446,27 @@
/* Onboarding Registration Consent */
"registration_consent_headline" = "Συναίνεση εγγραφής";
"registration_consent_second_paragraph" = "Πληροφορίες σχετικά με την επαφή μου με άλλους χρήστες της COVIDSafe, εάν άλλος χρήστης με τον οποίο έχω έρθει σε επαφή διαγνωστεί θετικά για το COVID-19 και ανεβάζει τα δικά του στοιχεία επικοινωνίας.";
"restrictions_accommodation" = "";
"restrictions_activity" = "";
"restrictions_cafes" = "";
"restrictions_disclaimer" = "";
"restrictions_domestic_travel" = "";
"restrictions_education" = "";
"restrictions_entertainment" = "";
"restrictions_error_dismiss" = "";
"restrictions_error_heading" = "";
"restrictions_error_message" = "";
"restrictions_error_try" = "";
"restrictions_gatherings_work" = "";
"restrictions_hair_beauty" = "";
"restrictions_heading" = "";
"restrictions_hotspots" = "";
"restrictions_retail" = "";
"restrictions_select_activity" = "";
"restrictions_select_state" = "";
"restrictions_sports" = "";
"restrictions_state" = "";
"restrictions_wedding" = "";
"save" = "Αποθήκευση";
"scheduled" = "Προγραμματίσατε την COVIDSafe για αναβολή από %@ έως %@ .";
/* OnBoarding Enter Number */
@ -473,6 +502,8 @@
"support_content" = "Για βοήθεια σε θέματα που δεν καλύπτονται από θέματα Βοήθειας";
"Support_VOLabel" = "Υποστήριξη. Για βοήθεια σε θέματα που δεν καλύπτονται στα θέματα Βοήθειας";
"tasmania" = "Τασμανία";
/* Example: "From 22 to 28 January 2021" */
"to" = "";
"total" = "Σύνολο";
"total_confirmed_cases" = "Σύνολο επιβεβαιωμένων κρουσμάτων";
"total_deaths" = "%@ σύνολο θανάτων";

View file

@ -7,15 +7,17 @@
"activity_button" = "Check app activity";
"activity_button_description" = "View your app's Bluetooth interactions with other COVIDSafe users.";
"activity_heading" = "App activity";
"activity_intro" = "Every time your device is in range of other COVIDSafe app users, it takes note of Bluetooth interactions called 'Bluetooth handshakes'.\n\nThese handshakes give an indication of how well your app is working.";
"activity_intro" = "When your device is in Bluetooth range of other COVIDSafe app users, it takes note of Bluetooth interactions called <a href=\"https://www.covidsafe.gov.au/technology.html#handshakes\">digital 'handshakes'</a>.\n\nThese handshakes give an indication of how well your app is working.";
"activity_intro_2" = "The number of handshakes shows you were in close range with another COVIDSafe user. It does NOT mean that you have been in contact with a user who has tested positive for COVID-19.";
/* Figma page iOS Screens (05/06) */
"allow_bluetooth_call" = "Allow COVIDSafe to access Bluetooth®";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothOFF" = "Access to Bluetooth®: OFF";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothON" = "Access to Bluetooth®: ON";
"app_activity_bluetooth_handshakes_heading" = "Bluetooth handshakes recorded by your device:";
"australian_capital_territory" = "Australian Capital Territory";
"ble_handshakes_yesterday" = "Bluetooth handshakes yesterday";
"ble_handshakes_yesterday" = "Bluetooth handshakes recorded by your device yesterday";
"bluetooth_handshakes" = "Bluetooth handshakes";
/* Figma page iOS Screens (05/06) */
"BluetoothOFF" = "Bluetooth®: OFF";
@ -276,11 +278,14 @@
"factors_dotpoint1" = "number of COVIDSafe users in range";
"factors_dotpoint2" = "device model and age";
"factors_dotpoint3" = "if youre in a moving vehicle";
"factors_dotpoint4" = "anything that interferes with Bluetooth signals such as walls and equipment";
"factors_enviro_item_1" = "physical barriers like walls";
"factors_enviro_item_2" = "material and fixtures that interfere with Bluetooth signals";
"factors_handshakes_heading" = "Factors that impact app activity";
"factors_intro" = "Factors that can affect the number of handshakes include:";
"factors_intro" = "If you see handshakes being recorded, it means the app is working. Factors that can affect the number of handshakes include:";
"factors_intro_2" = "Handshakes can also be affected by environmental factors, including:";
/* Example: "From 22 to 28 January 2021" */
"from" = "From";
"global_back" = "Back";
"global_close" = "Close";
"global_double_tap" = "double tap to edit";
@ -288,6 +293,7 @@
"hide" = "Hide";
"home_app_permission_status_subtitle" = "COVIDSafe won't work without the right settings. ";
"home_app_permission_status_title" = "Check your settings";
"home_bottom_nav" = "Home";
"home_data_uploaded_message" = "Help stop the spread of COVID-19 and track your symptoms.";
"home_header_active_no_action_required" = "No further action is required.";
/* Home */
@ -360,12 +366,7 @@
"locally_acquired" = "%@ locally acquired";
"location_off" = "Location: OFF";
"location_off_description" = "Your iPhone requires Location permission for COVIDSafe to work. COVIDSafe does NOT track or store your location data.";
"low_handshakes_description" = "Try these tips to improve the performance of COVIDSafe on your phone:";
"low_handshakes_heading" = "What to do if your handshake numbers are lower than you expect";
"low_handshakes_item1" = "Check if COVIDSafe is active by opening the app.";
"low_handshakes_item2" = "Update your app to the latest version through the Google Play Store or Apple Store.";
"low_handshakes_item3" = "Restart your phone and open the app again.";
"low_handshakes_link" = "Read more on how to check if COVIDSafe is working correctly";
"main_restrictions" = "Main restrictions";
/* Splash Screen */
"migration_in_progress" = " COVIDSafe update in progress. \n\n Please make sure you phone is not switched off until the update is complete.";
"minute" = "Minute";
@ -373,6 +374,13 @@
"new_cases" = "New cases in the last 24 hours";
"new_cases_total" = "New cases since 1 Feb 2020";
"new_south_wales" = "New South Wales";
"no_handshakes_description" = "If you think youve been in contact with other COVIDSafe users, try these tips to improve the performance of COVIDSafe on your phone:";
"no_handshakes_heading" = "What to do if you are not seeing handshakes";
"no_handshakes_item1" = "Check if COVIDSafe is active by opening the app.";
"no_handshakes_item2" = "Update your app to the latest version through the Google Play Store or Apple Store.";
"no_handshakes_item3" = "Restart your phone and open the app again.";
"no_handshakes_item4" = "Check if you have the right settings for <a href=\"https://www.covidsafe.gov.au/help-topics.html#location-services\">Location Services</a>.";
"no_handshakes_link" = "Read more on how to check if COVIDSafe is working correctly";
/* Figma page Android Screens (05/06) */
"norfolk_hint" = "For example: 51234";
"northern_territory" = "Northern Territory";
@ -438,6 +446,27 @@
/* Onboarding Registration Consent */
"registration_consent_headline" = "Registration consent";
"registration_consent_second_paragraph" = "information about my contact with other COVIDSafe users, if another user I have come into contact with tests positive for COVID-19 and uploads their contact data";
"restrictions_accommodation" = "Accommodation";
"restrictions_activity" = "Activity";
"restrictions_cafes" = "Cafes and Restaurants";
"restrictions_disclaimer" = "Your selection will only be used to show restrictions in your area. COVIDSafe does not store or use location data.";
"restrictions_domestic_travel" = "Domestic Travel";
"restrictions_education" = "Education and Childcare";
"restrictions_entertainment" = "Entertainment Venues";
"restrictions_error_dismiss" = "Dismiss";
"restrictions_error_heading" = "Restrictions are not available";
"restrictions_error_message" = "Check your internet connection or try again later.";
"restrictions_error_try" = "Try again";
"restrictions_gatherings_work" = "Gatherings and Work";
"restrictions_hair_beauty" = "Hair and Beauty Services";
"restrictions_heading" = "Restrictions";
"restrictions_hotspots" = "Hotspots and Case Locations";
"restrictions_retail" = "Retail and Sales";
"restrictions_select_activity" = "Select activity";
"restrictions_select_state" = "Select state or territory";
"restrictions_sports" = "Sports and Recreation";
"restrictions_state" = "State or territory";
"restrictions_wedding" = "Wedding, Funeral and Religion";
"save" = "Save";
"scheduled" = "You scheduled COVIDSafe to snooze from %@ to %@.";
/* OnBoarding Enter Number */
@ -473,6 +502,8 @@
"support_content" = "For assistance on issues not covered by Help topics";
"Support_VOLabel" = "Support. For assistance on issues not covered by Help topics";
"tasmania" = "Tasmania";
/* Example: "From 22 to 28 January 2021" */
"to" = "to";
"total" = "Total";
"total_confirmed_cases" = "Total confirmed cases";
"total_deaths" = "%@ total deaths";

View file

@ -7,15 +7,17 @@
"activity_button" = "Controlla l'attività dell'app";
"activity_button_description" = "Visualizza le interazioni Bluetooth della tua app con altri utenti COVIDSafe.";
"activity_heading" = "Attività dell'app";
"activity_intro" = "Ogni volta che il tuo dispositivo si trova nel raggio di altri utenti dell'app COVIDSafe, prende nota delle interazioni Bluetooth chiamate \"strette di mano Bluetooth\". \n\n Queste strette di mano danno un'indicazione del funzionamento della tua app.";
"activity_intro" = "";
"activity_intro_2" = "";
/* Figma page iOS Screens (05/06) */
"allow_bluetooth_call" = "Consenti al COVIDSafe di accedere al Bluetooth®";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothOFF" = "Accesso al Bluetooth®: OFF";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothON" = "Accesso al Bluetooth®: ON";
"app_activity_bluetooth_handshakes_heading" = "";
"australian_capital_territory" = "Australian Capital Territory";
"ble_handshakes_yesterday" = "Strette di mano Bluetooth ieri";
"ble_handshakes_yesterday" = "";
"bluetooth_handshakes" = "Strette di mano Bluetooth";
/* Figma page iOS Screens (05/06) */
"BluetoothOFF" = "Bluetooth®: OFF";
@ -276,11 +278,14 @@
"factors_dotpoint1" = "numero di utenti COVIDSafe nel raggio d'azione";
"factors_dotpoint2" = "modello ed età del dispositivo";
"factors_dotpoint3" = "se sei in un veicolo in movimento";
"factors_dotpoint4" = "";
"factors_enviro_item_1" = "barriere fisiche come muri";
"factors_enviro_item_2" = "materiale e dispositivi che interferiscono con i segnali Bluetooth";
"factors_handshakes_heading" = "Fattori che influiscono sull'attività dell'app";
"factors_intro" = "I fattori che possono influenzare il numero di strette di mano comprendono:";
"factors_intro" = "";
"factors_intro_2" = "Anche le strette di mano possono essere influenzate da fattori ambientali:";
/* Example: "From 22 to 28 January 2021" */
"from" = "";
"global_back" = "Indietro";
"global_close" = "Chiudi";
"global_double_tap" = "Fai un doppio click per modificare";
@ -288,6 +293,7 @@
"hide" = "Nascondi";
"home_app_permission_status_subtitle" = "COVIDSafe non funziona senza le impostazioni corrette. ";
"home_app_permission_status_title" = "Controlla le impostazioni";
"home_bottom_nav" = "";
"home_data_uploaded_message" = "Aiuta a fermare la diffusione di COVID-19 e a monitorare i sintomi.";
"home_header_active_no_action_required" = "Non sono necessarie ulteriori azioni.";
/* Home */
@ -360,12 +366,7 @@
"locally_acquired" = "%@ contratto localmente";
"location_off" = "Posizione: OFF";
"location_off_description" = "Il tuo iPhone richiede l'autorizzazione alla localizzazione affinché COVIDSafe funzioni. COVIDSafe NON memorizza né utilizza i dati relativi alla tua posizione.";
"low_handshakes_description" = "Prova questi suggerimenti per migliorare le prestazioni di COVIDSafe sul tuo telefono:";
"low_handshakes_heading" = "Cosa fare se i numeri delle strette di mano sono inferiori alle tue aspettative";
"low_handshakes_item1" = "Verifica se COVIDSafe è attivo aprendo l'app.";
"low_handshakes_item2" = "Aggiorna la tua app all'ultima versione tramite Google Play Store o Apple Store.";
"low_handshakes_item3" = "Riavvia il telefono e apri di nuovo l'app.";
"low_handshakes_link" = "Per saperne di più su come controllare se COVIDSafe funziona correttamente";
"main_restrictions" = "";
/* Splash Screen */
"migration_in_progress" = "Aggiornamento COVIDSafe in corso. \n\nAssicurati che il cellulare non sia spento fino al completamento dell'aggiornamento.";
"minute" = "Minuto";
@ -373,6 +374,13 @@
"new_cases" = "Nuovi casi nelle ultime 24 ore";
"new_cases_total" = "Nuovi casi dal 1° febbraio 2020";
"new_south_wales" = "New South Wales";
"no_handshakes_description" = "";
"no_handshakes_heading" = "";
"no_handshakes_item1" = "Verifica se COVIDSafe è attivo aprendo l'app.";
"no_handshakes_item2" = "Aggiorna la tua app all'ultima versione tramite Google Play Store o Apple Store.";
"no_handshakes_item3" = "Riavvia il telefono e apri di nuovo l'app.";
"no_handshakes_item4" = "";
"no_handshakes_link" = "Per saperne di più su come controllare se COVIDSafe funziona correttamente";
/* Figma page Android Screens (05/06) */
"norfolk_hint" = "Per esempio: 51234";
"northern_territory" = "Northern Territory";
@ -438,6 +446,27 @@
/* Onboarding Registration Consent */
"registration_consent_headline" = "Consenso alla registrazione";
"registration_consent_second_paragraph" = "Informazioni sul contatto con altri utenti di COVIDSafe, se un utente con cui sono entrato in contatto risulta positivo al COVID-19 e carica i suoi dati.";
"restrictions_accommodation" = "";
"restrictions_activity" = "";
"restrictions_cafes" = "";
"restrictions_disclaimer" = "";
"restrictions_domestic_travel" = "";
"restrictions_education" = "";
"restrictions_entertainment" = "";
"restrictions_error_dismiss" = "";
"restrictions_error_heading" = "";
"restrictions_error_message" = "";
"restrictions_error_try" = "";
"restrictions_gatherings_work" = "";
"restrictions_hair_beauty" = "";
"restrictions_heading" = "";
"restrictions_hotspots" = "";
"restrictions_retail" = "";
"restrictions_select_activity" = "";
"restrictions_select_state" = "";
"restrictions_sports" = "";
"restrictions_state" = "";
"restrictions_wedding" = "";
"save" = "Salva";
"scheduled" = "Hai programmato COVIDSafe su snooze da %@ a %@ ";
/* OnBoarding Enter Number */
@ -473,6 +502,8 @@
"support_content" = "Per assistenza su questioni non trattate dagli argomenti della Guida";
"Support_VOLabel" = "Supporto. Per assistenza su questioni non trattate dagli argomenti della Guida";
"tasmania" = "Tasmania";
/* Example: "From 22 to 28 January 2021" */
"to" = "";
"total" = "Totale";
"total_confirmed_cases" = "Totale casi confermati";
"total_deaths" = "%@ totale decessi";

View file

@ -7,15 +7,17 @@
"activity_button" = "앱 활동 확인";
"activity_button_description" = "다른 COVIDSafe 사용자와의 블루투스 상호 작용 보기";
"activity_heading" = "앱 활동";
"activity_intro" = "여러분의 기기가 다른 COVIDSafe 앱 사용자의 범위 안에 있을 때마다 '블루투스 악수'라는 블루투스 상호작용이 기록됩니다.\n\n이 악수는 여러분의 앱이 얼마나 잘 작동하는지를 나타냅니다.";
"activity_intro" = "";
"activity_intro_2" = "";
/* Figma page iOS Screens (05/06) */
"allow_bluetooth_call" = "COVIDSafe의 블루투스® 접속을 허용해 주세요";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothOFF" = "블루투스® 접속: 꺼짐";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothON" = "블루투스® 접속: 켜짐";
"app_activity_bluetooth_handshakes_heading" = "";
"australian_capital_territory" = "호주 수도 테리토리";
"ble_handshakes_yesterday" = "어제의 블루투스 악수";
"ble_handshakes_yesterday" = "";
"bluetooth_handshakes" = "블루투스 악수";
/* Figma page iOS Screens (05/06) */
"BluetoothOFF" = "블루투스®: 꺼짐";
@ -276,11 +278,14 @@
"factors_dotpoint1" = "근접 범위 내 COVIDSafe 사용자 수";
"factors_dotpoint2" = "기기 모델 및 연식";
"factors_dotpoint3" = "움직이는 차량 안에 있는 경우";
"factors_dotpoint4" = "";
"factors_enviro_item_1" = "벽 등의 물리적 장애물";
"factors_enviro_item_2" = "블루투스 신호를 방해하는 물질 및 시설";
"factors_handshakes_heading" = "앱 활동에 영향을 미치는 요인";
"factors_intro" = "블루투스 악수 숫자에 영향을 줄 수 있는 요소는 다음과 같습니다.";
"factors_intro" = "";
"factors_intro_2" = "다음과 같은 환경 요인 역시 블루투스 악수에 영향을 미칠 수 있습니다.";
/* Example: "From 22 to 28 January 2021" */
"from" = "";
"global_back" = "뒤로";
"global_close" = "닫기";
"global_double_tap" = "두 번 탭해서 수정하세요";
@ -288,6 +293,7 @@
"hide" = "숨기기";
"home_app_permission_status_subtitle" = "COVIDSafe는 올바른 설정없이는 작동되지 않습니다.";
"home_app_permission_status_title" = "설정을 확인하세요.";
"home_bottom_nav" = "";
"home_data_uploaded_message" = "COVID-19의 확산방지에 협조하고 자신의 증상을 추적하세요.";
"home_header_active_no_action_required" = "추가 조치가 필요하지 않습니다.";
/* Home */
@ -360,12 +366,7 @@
"locally_acquired" = "%@ 지역 감염";
"location_off" = "위치 서비스: 꺼짐";
"location_off_description" = "COVIDSafe가 제대로 실행되기 위해서는 여러분의 아이폰에서 위치 서비스 기능을 허용해야 합니다. COVIDSafe는 여러분의 위치 정보를 추적하거나 저장하지 않습니다.";
"low_handshakes_description" = "휴대폰에서 COVIDSafe의 성능을 향상시키려면 다음 팁을 활용해보세요.";
"low_handshakes_heading" = "블루투스 악수 숫자가 예상보다 적으면 어떻게 하나요";
"low_handshakes_item1" = "앱을 열어 COVIDSafe가 활성화되어 있는지 확인하세요.";
"low_handshakes_item2" = "Google Play Store 또는 Apple Store를 통해 앱을 최신 버전으로 업데이트하세요.";
"low_handshakes_item3" = "휴대폰을 재시작하고 앱을 다시 실행하세요.";
"low_handshakes_link" = "COVIDSafe가 올바르게 작동하는지 확인하는 방법에 대한 자세한 정보 보기";
"main_restrictions" = "";
/* Splash Screen */
"migration_in_progress" = "COVIDSafe 업데이트 진행 중. \n\n업데이트가 완료될 때까지 휴대폰이 꺼지지 않도록 해주세요.";
"minute" = "분";
@ -373,6 +374,13 @@
"new_cases" = "지난 24시간 동안의 새 확진자 수";
"new_cases_total" = "2020년 2월 1일 이후 신규 확진 건수";
"new_south_wales" = "뉴 사우스 웨일즈";
"no_handshakes_description" = "";
"no_handshakes_heading" = "";
"no_handshakes_item1" = "앱을 열어 COVIDSafe가 활성화되어 있는지 확인하세요.";
"no_handshakes_item2" = "Google Play Store 또는 Apple Store를 통해 앱을 최신 버전으로 업데이트하세요.";
"no_handshakes_item3" = "휴대폰을 재시작하고 앱을 다시 실행하세요.";
"no_handshakes_item4" = "";
"no_handshakes_link" = "COVIDSafe가 올바르게 작동하는지 확인하는 방법에 대한 자세한 정보 보기";
/* Figma page Android Screens (05/06) */
"norfolk_hint" = "예: 51234";
"northern_territory" = "노던 테리토리";
@ -438,6 +446,27 @@
/* Onboarding Registration Consent */
"registration_consent_headline" = "등록 동의";
"registration_consent_second_paragraph" = "다른 COVIDSafe 사용자가 COVID-19 양성 결과를 받고 자신의 접촉 데이터를 업로드한 경우, 다른 COVIDSafe 사용자들과의 본인의 접촉 정보.";
"restrictions_accommodation" = "";
"restrictions_activity" = "";
"restrictions_cafes" = "";
"restrictions_disclaimer" = "";
"restrictions_domestic_travel" = "";
"restrictions_education" = "";
"restrictions_entertainment" = "";
"restrictions_error_dismiss" = "";
"restrictions_error_heading" = "";
"restrictions_error_message" = "";
"restrictions_error_try" = "";
"restrictions_gatherings_work" = "";
"restrictions_hair_beauty" = "";
"restrictions_heading" = "";
"restrictions_hotspots" = "";
"restrictions_retail" = "";
"restrictions_select_activity" = "";
"restrictions_select_state" = "";
"restrictions_sports" = "";
"restrictions_state" = "";
"restrictions_wedding" = "";
"save" = "저장";
"scheduled" = "%@부터 %@까지 COVIDsafe를 일시 정지해놓았습니다.";
/* OnBoarding Enter Number */
@ -473,6 +502,8 @@
"support_content" = "도움말 항목에서 다루지 않는 문제에 대한 지원";
"Support_VOLabel" = "지원. 도움말 항목에서 다루지 않는 문제에 대한 지원";
"tasmania" = "태즈매니아";
/* Example: "From 22 to 28 January 2021" */
"to" = "";
"total" = "총";
"total_confirmed_cases" = "총 확진자 수";
"total_deaths" = "%@ 총 사망자 수";

View file

@ -7,15 +7,17 @@
"activity_button" = "ਐਪ ਗਤੀਵਿਧੀ ਦੀ ਜਾਂਚ ਕਰੋ";
"activity_button_description" = "ਹੋਰ COVIDSafe ਵਰਤੋਂਕਾਰਾਂ ਨਾਲ ਆਪਣੀ ਐਪ ਦੀਆਂ ਬਲੂਟੁੱਥ ਅੰਤਰਕਿਰਿਆਵਾਂ ਨੂੰ ਦੇਖੋ।";
"activity_heading" = "ਐਪ ਦੀ ਗਤੀਵਿਧੀ";
"activity_intro" = "ਹਰ ਵਾਰ ਜਦ ਵੀ ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਹੋਰ COVIDSafe ਐਪ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਰੇਂਜ ਵਿੱਚ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਇਹ ਬਲੂਟੁੱਥ ਅੰਤਰਕਿਰਿਆਵਾਂ ਨੂੰ ਨੋਟ ਕਰ ਲੈਂਦੀ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ 'ਬਲੂਟੁੱਥ ਹੈਂਡਸ਼ੇਕਸ' ਕਿਹਾ ਜਾਂਦਾ ਹੈ।\n\nਇਹ ਹੈਂਡਸ਼ੇਕ ਇਸ ਗੱਲ ਦਾ ਸੰਕੇਤ ਦਿੰਦੇ ਹਨ ਕਿ ਤੁਹਾਡੀ ਐਪ ਕਿੰਨੀ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰ ਰਹੀ ਹੈ।";
"activity_intro" = "";
"activity_intro_2" = "";
/* Figma page iOS Screens (05/06) */
"allow_bluetooth_call" = "COVIDSafe ਨੂੰ Bluetooth® ਤੱਕ ਪਹੁੰਚ ਦਿਓ";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothOFF" = "Bluetooth® ਤੱਕ ਪਹੁੰਚ: ਔੱਫ";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothON" = "Bluetooth ਤੱਕ ਪਹੁੰਚ: ਔਨ";
"app_activity_bluetooth_handshakes_heading" = "";
"australian_capital_territory" = "ਆਸਟ੍ਰੇਲੀਅਨ ਕੈਪੀਟਲ ਟੈਰੀਟਰੀ";
"ble_handshakes_yesterday" = "ਬੀਤੇ ਕੱਲ੍ਹ ਕੀਤੇ ਗਏ ਬਲੂਟੁੱਥ ਹੈਂਡਸ਼ੇਕ";
"ble_handshakes_yesterday" = "";
"bluetooth_handshakes" = "ਬਲੂਟੁੱਥ ਦੇ ਹੈਂਡਸ਼ੇਕ";
/* Figma page iOS Screens (05/06) */
"BluetoothOFF" = "Bluetooth®: ਔੱਫ";
@ -276,11 +278,14 @@
"factors_dotpoint1" = "COVIDSafe ਦੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਸੰਖਿਆ ਜੋ ਕਿ ਰੇਂਜ ਵਿੱਚ ਹਨ";
"factors_dotpoint2" = "ਡਿਵਾਈਸ ਦਾ ਮਾਡਲ ਅਤੇ ਇਹ ਕਿੰਨਾ ਪੁਰਾਣਾ ਹੈ";
"factors_dotpoint3" = "ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਚੱਲਦੀ ਗੱਡੀ ਵਿੱਚ ਹੋ";
"factors_dotpoint4" = "";
"factors_enviro_item_1" = "ਭੌਤਿਕ ਰੁਕਾਵਟਾਂ ਜਿਵੇਂ ਕਿ ਕੰਧਾਂ";
"factors_enviro_item_2" = "ਸਮੱਗਰੀਆਂ ਅਤੇ ਫਿਕਸਚਰ ਜੋ ਬਲੂਟੁੱਥ ਸਿਗਨਲਾਂ ਵਿੱਚ ਦਖਲ ਅੰਦਾਜ਼ੀ ਕਰਦੇ ਹਨ";
"factors_handshakes_heading" = "ਉਹ ਕਾਰਕ ਜੋ ਐਪ ਦੀ ਗਤੀਵਿਧੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨ";
"factors_intro" = "ਉਹ ਕਾਰਕ ਜੋ ਕਿ 'ਹੈਂਡਸ਼ੇਕਾਂ' ਦੀ ਸੰਖਿਆ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੇ ਹਨ, ਉਹਨਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:";
"factors_intro" = "";
"factors_intro_2" = "ਹੈਂਡਸ਼ੇਕ ਵਾਤਾਵਰਣਕ ਕਾਰਕਾਂ ਦੁਆਰਾ ਵੀ ਪ੍ਰਭਾਵਿਤ ਹੋ ਸਕਦੇ ਹਨ, ਜਿੰਨ੍ਹਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:";
/* Example: "From 22 to 28 January 2021" */
"from" = "";
"global_back" = "ਪਿੱਛੇ";
"global_close" = "ਬੰਦ ਕਰੋ";
"global_double_tap" = "ਸੋਧਣ ਲਈ ਡਬਲ ਟੈਪ ਕਰੋ";
@ -288,6 +293,7 @@
"hide" = "ਛੁਪਾਣਾ";
"home_app_permission_status_subtitle" = "COVIDSafe ਸਹੀ ਸੈਟਿੰਗਾਂ ਤੋਂ ਬਿਨਾਂ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ।";
"home_app_permission_status_title" = "ਆਪਣੀਆਂ ਸੈਟਿੰਗਾਂ ਚੈੱਕ ਕਰੋ";
"home_bottom_nav" = "";
"home_data_uploaded_message" = "ਕੋਵਿਡ-19 ਦੇ ਫੈਲਣ ਨੂੰ ਰੋਕਣ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰੋ ਅਤੇ ਆਪਣੇ ਲੱਛਣਾਂ 'ਤੇ ਨਜ਼ਰ ਰੱਖੋ।";
"home_header_active_no_action_required" = "ਕੋਈ ਹੋਰ ਕਾਰਵਾਈ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।";
/* Home */
@ -360,12 +366,7 @@
"locally_acquired" = "%@ ਸਥਾਨਕ ਲੱਗੀ ਲਾਗ";
"location_off" = "ਲੋਕੇਸ਼ਨ: ਔਫ";
"location_off_description" = "COVIDSafe ਕੰਮ ਕਰ ਸਕੇ, ਇਸ ਦੇ ਲਈ ਤੁਹਾਡੇ iPhone ਨੂੰ ਲੋਕੇਸ਼ਨ ਆਗਿਆ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। COVIDSafe ਤੁਹਾਡੇ ਲੋਕੇਸ਼ਨ ਦੇ ਡਾਟਾ ਉੱਪਰ ਨਾ ਹੀ ਨਜ਼ਰ ਰੱਖਦਾ ਹੈ ਨਾ ਹੀ ਉਸ ਨੂੰ ਸਟੋਰ ਕਰਦਾ ਹੈ";
"low_handshakes_description" = "ਤੁਹਾਡੇ ਫੋਨ ਉੱਤੇ COVIDSafe ਦੇ ਪ੍ਰਦਰਸ਼ਨ (ਪਰਫਾਰਮੈਂਸ) ਵਿੱਚ ਸੁਧਾਰ ਕਰਨ ਦੇ ਲਈ ਇਨ੍ਹਾਂ ਨੁਕਤਿਆਂ ਨੂੰ ਅਜ਼ਮਾਉ:";
"low_handshakes_heading" = "ਜੇ ਤੁਹਾਡੇ 'ਹੈਂਡਸ਼ੇਕ' ਦੇ ਨੰਬਰ ਤੁਹਾਡੀ ਉਮੀਦ ਨਾਲੋਂ ਘੱਟ ਹਨ ਤਾਂ ਕੀ ਕਰਨਾ ਹੈ";
"low_handshakes_item1" = "COVIDSafe ਐਕਟਿਵ ਹੈ ਜਾਂ ਨਹੀਂ, ਇਸ ਦੀ ਜਾਂਚ ਐਪ ਨੂੰ ਖੋਲ ਕੇ ਕਰੋ।";
"low_handshakes_item2" = "Google Play Store ਜਾਂ Apple Store ਰਾਹੀਂ ਆਪਣੀ ਐਪ ਨੂੰ ਨਵੀਨਤਮ ਸੰਸਕਰਣ ਵਿੱਚ ਅੱਪਡੇਟ ਕਰੋ।";
"low_handshakes_item3" = "ਆਪਣੇ ਫ਼ੋਨ ਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰੋ ਅਤੇ ਐਪ ਨੂੰ ਦੁਬਾਰਾ ਖੋਲ੍ਹੋ।";
"low_handshakes_link" = "ਇਸ ਬਾਰੇ ਹੋਰ ਪੜ੍ਹੋ ਕਿ ਜਾਂਚ ਕਿਵੇਂ ਕਰਨੀ ਹੈ ਕਿ ਕੀ COVIDSafe ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ";
"main_restrictions" = "";
/* Splash Screen */
"migration_in_progress" = "COVIDSafe ਅੱਪਡੇਟ ਚੱਲ ਰਿਹਾ ਹੈ। \n\nਕਿਰਪਾ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡਾ ਫ਼ੋਨ ਤਦ ਤੱਕ ਬੰਦ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਜਦ ਤੱਕ ਅੱਪਡੇਟ ਪੂਰਾ ਨਹੀਂ ਹੋ ਜਾਂਦਾ।";
"minute" = "ਮਿੰਟ";
@ -373,6 +374,13 @@
"new_cases" = "ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਦੌਰਾਨ ਨਵੇਂ ਕੇਸ";
"new_cases_total" = "1 ਫਰਵਰੀ 2020 ਤੋਂ ਲੈਕੇ ਹੁਣ ਤੱਕ ਦੇ ਨਵੇਂ ਮਾਮਲੇ";
"new_south_wales" = "ਨਿਊ ਸਾਊਥ ਵੇਲਜ਼";
"no_handshakes_description" = "";
"no_handshakes_heading" = "";
"no_handshakes_item1" = "COVIDSafe ਐਕਟਿਵ ਹੈ ਜਾਂ ਨਹੀਂ, ਇਸ ਦੀ ਜਾਂਚ ਐਪ ਨੂੰ ਖੋਲ ਕੇ ਕਰੋ।";
"no_handshakes_item2" = "Google Play Store ਜਾਂ Apple Store ਰਾਹੀਂ ਆਪਣੀ ਐਪ ਨੂੰ ਨਵੀਨਤਮ ਸੰਸਕਰਣ ਵਿੱਚ ਅੱਪਡੇਟ ਕਰੋ।";
"no_handshakes_item3" = "ਆਪਣੇ ਫ਼ੋਨ ਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰੋ ਅਤੇ ਐਪ ਨੂੰ ਦੁਬਾਰਾ ਖੋਲ੍ਹੋ।";
"no_handshakes_item4" = "";
"no_handshakes_link" = "ਇਸ ਬਾਰੇ ਹੋਰ ਪੜ੍ਹੋ ਕਿ ਜਾਂਚ ਕਿਵੇਂ ਕਰਨੀ ਹੈ ਕਿ ਕੀ COVIDSafe ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ";
/* Figma page Android Screens (05/06) */
"norfolk_hint" = "ਉਦਾਹਰਣ ਵਜੋਂ: 51234";
"northern_territory" = "ਨੌਰਦਰਨ ਟੈਰੀਟਰੀ";
@ -438,6 +446,27 @@
/* Onboarding Registration Consent */
"registration_consent_headline" = "ਰਜਿਸਟਰੇਸ਼ਨ ਸਹਿਮਤੀ";
"registration_consent_second_paragraph" = "ਹੋਰ COVIDSafe ਵਰਤੋਂਕਾਰਾਂ ਨਾਲ ਮੇਰੇ ਸੰਪਰਕ ਬਾਰੇ ਜਾਣਕਾਰੀ: ਜੇ ਕੋਈ ਹੋਰ ਵਰਤੋਂਕਾਰ ਮੇਰੇ ਸੰਪਰਕ ਵਿੱਚ ਆਇਆ ਹੈ ਅਤੇ ਕੋਵਿਡ-19 ਪਾਜ਼ੇਟਿਵ ਟੈਸਟ ਹੁੰਦਾ ਹੈ ਅਤੇ ਅਪਣਾ ਸੰਪਰਕ ਡੇਟਾ ਅੱਪਲੋਡ ਕਰਦਾ ਹੈ|";
"restrictions_accommodation" = "";
"restrictions_activity" = "";
"restrictions_cafes" = "";
"restrictions_disclaimer" = "";
"restrictions_domestic_travel" = "";
"restrictions_education" = "";
"restrictions_entertainment" = "";
"restrictions_error_dismiss" = "";
"restrictions_error_heading" = "";
"restrictions_error_message" = "";
"restrictions_error_try" = "";
"restrictions_gatherings_work" = "";
"restrictions_hair_beauty" = "";
"restrictions_heading" = "";
"restrictions_hotspots" = "";
"restrictions_retail" = "";
"restrictions_select_activity" = "";
"restrictions_select_state" = "";
"restrictions_sports" = "";
"restrictions_state" = "";
"restrictions_wedding" = "";
"save" = "ਸੰਭਾਲੋ (ਸੇਵ ਕਰੋ)";
"scheduled" = "ਤੁਸੀਂ %@ ਤੋਂ %@ ਤੱਕ COVIDSafe ਨੂੰ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਬੰਦ ਕਰ (snooze) ਦਿੱਤਾ ਹੈ।";
/* OnBoarding Enter Number */
@ -473,6 +502,8 @@
"support_content" = "ਜੋ ਮੁੱਦੇ ਸਹਾਇਤਾ ਵਿਸ਼ੇ ਦੁਆਰਾ ਕਵਰ ਨਹੀਂ ਹੁੰਦੇ ਉਨ੍ਹਾਂ ਲਈ ਸਹਾਇਤਾ";
"Support_VOLabel" = "ਸਹਾਇਤਾ। ਜੋ ਮੁੱਦੇ ਸਹਾਇਤਾ ਵਿਸ਼ੇ ਦੁਆਰਾ ਕਵਰ ਨਹੀਂ ਹੁੰਦੇ ਉਨ੍ਹਾਂ ਲਈ ਸਹਾਇਤਾ";
"tasmania" = "ਤਸਮਾਨੀਆ";
/* Example: "From 22 to 28 January 2021" */
"to" = "";
"total" = "ਕੁੱਲ";
"total_confirmed_cases" = "ਕੁੱਲ ਪੁਸ਼ਟੀ ਕੀਤੇ ਕੇਸ";
"total_deaths" = "%@ ਕੁੱਲ ਮੌਤਾਂ";

View file

@ -7,15 +7,17 @@
"activity_button" = "Uygulama etkinliğini kontrol edin";
"activity_button_description" = "Uygulamanızın diğer COVIDSafe kullanıcılarıyla Bluetooth etkileşimlerini görüntüleyin.";
"activity_heading" = "Uygulama etkinliği";
"activity_intro" = "Cihazınızın diğer COVIDSafe uygulama kullanıcılarının alanına her girişinde 'Bluetooth el sıkışma' adı verilen Bluetooth etkileşimlerini dikkate alır.\n\nBu el sıkışmalar, uygulamanızın ne kadar iyi çalıştığını gösterir.";
"activity_intro" = "";
"activity_intro_2" = "";
/* Figma page iOS Screens (05/06) */
"allow_bluetooth_call" = "COVIDSafe'in Bluetooth®'a erişmesine izin verin";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothOFF" = "Bluetooth®'a erişim: KAPALI";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothON" = "Bluetooth®'a erişim: AÇIK";
"app_activity_bluetooth_handshakes_heading" = "";
"australian_capital_territory" = "Avustralya Başkent Bölgesi";
"ble_handshakes_yesterday" = "Dünkü Bluetooth el sıkışmaları";
"ble_handshakes_yesterday" = "";
"bluetooth_handshakes" = "Bluetooth el sıkışmaları";
/* Figma page iOS Screens (05/06) */
"BluetoothOFF" = "Bluetooth®: KAPALI";
@ -276,11 +278,14 @@
"factors_dotpoint1" = "alanda COVIDSafe kullanıcıları sayısı";
"factors_dotpoint2" = "cihazın modeli ve yaşı";
"factors_dotpoint3" = "hareket halindeki bir araçta iseniz";
"factors_dotpoint4" = "";
"factors_enviro_item_1" = "duvarlar gibi fiziksel engeller";
"factors_enviro_item_2" = "Bluetooth sinyallerini engelleyen malzeme ve armatürler";
"factors_handshakes_heading" = "Uygulama etkinliğini etkileyen faktörler";
"factors_intro" = "El sıkışma sayısını etkileyebilecek faktörler şunları içerir:";
"factors_intro" = "";
"factors_intro_2" = "El sıkışmalar çevresel faktörlerden de etkilenebilir, örneğin:";
/* Example: "From 22 to 28 January 2021" */
"from" = "";
"global_back" = "Geri";
"global_close" = "Kapat";
"global_double_tap" = "düzeltme yapmak için iki defa tıklayınız";
@ -288,6 +293,7 @@
"hide" = "Gizle";
"home_app_permission_status_subtitle" = "COVIDSafe doğru ayarlar olmadan çalışmaz. ";
"home_app_permission_status_title" = "Ayarlarınızı kontrol edin";
"home_bottom_nav" = "";
"home_data_uploaded_message" = "COVID-19'un yayılmasını durdurmaya ve belirtilerinizin takibine yardımcı olun.";
"home_header_active_no_action_required" = "Başka bir eylem gerekmez.";
/* Home */
@ -360,12 +366,7 @@
"locally_acquired" = "%@ yerel olarak edinilen";
"location_off" = "Konum: KAPALI";
"location_off_description" = "iPhoneunuz, COVIDSafein çalışması için Konum iznine ihtiyaç duyar. COVIDSafe konum verilerinizi İZLEMEZ veya SAKLAMAZ.";
"low_handshakes_description" = "Telefonunuzda COVIDSafe'in performansını artırmak için şu ipuçlarını deneyin:";
"low_handshakes_heading" = "El sıkışma sayılarınız beklediğinizin altında ise ne yapmalısınız";
"low_handshakes_item1" = "Uygulamayı açarak COVIDSafe'in etkin olup olmadığını kontrol edin.";
"low_handshakes_item2" = "Uygulamanızı Google Play Store veya Apple Store üzerinden en son sürüme güncelleyin.";
"low_handshakes_item3" = "Telefonunuzu yeniden başlatın ve uygulamayı tekrar açın.";
"low_handshakes_link" = "COVIDSafe'in doğru çalışıp çalışmadığının nasıl kontrol edileceği hakkında daha fazlasını okuyun";
"main_restrictions" = "";
/* Splash Screen */
"migration_in_progress" = " COVIDSafe güncellemesi devam ediyor. \n\n Lütfen güncelleme tamamlanana kadar telefonunuzu kapatmayın.";
"minute" = "Dakika";
@ -373,6 +374,13 @@
"new_cases" = "Son 24 saatte çıkan yeni vakalar";
"new_cases_total" = "1 Şubat 2020'den itibaren yeni vakalar";
"new_south_wales" = "Yeni Güney Galler";
"no_handshakes_description" = "";
"no_handshakes_heading" = "";
"no_handshakes_item1" = "Uygulamayı açarak COVIDSafe'in etkin olup olmadığını kontrol edin.";
"no_handshakes_item2" = "Uygulamanızı Google Play Store veya Apple Store üzerinden en son sürüme güncelleyin.";
"no_handshakes_item3" = "Telefonunuzu yeniden başlatın ve uygulamayı tekrar açın.";
"no_handshakes_item4" = "";
"no_handshakes_link" = "COVIDSafe'in doğru çalışıp çalışmadığının nasıl kontrol edileceği hakkında daha fazlasını okuyun";
/* Figma page Android Screens (05/06) */
"norfolk_hint" = "Örneğin: 51234";
"northern_territory" = "Kuzey Bölgesi";
@ -438,6 +446,27 @@
/* Onboarding Registration Consent */
"registration_consent_headline" = "Kayıt onayı";
"registration_consent_second_paragraph" = "Başka bir kullanıcının COVID-19 testi pozitif çıkması ve temas verilerini sisteme yüklemesi halinde diğer COVIDSafe kullanıcıları ile paylaşılacak şahsıma ait temas bilgileri.";
"restrictions_accommodation" = "";
"restrictions_activity" = "";
"restrictions_cafes" = "";
"restrictions_disclaimer" = "";
"restrictions_domestic_travel" = "";
"restrictions_education" = "";
"restrictions_entertainment" = "";
"restrictions_error_dismiss" = "";
"restrictions_error_heading" = "";
"restrictions_error_message" = "";
"restrictions_error_try" = "";
"restrictions_gatherings_work" = "";
"restrictions_hair_beauty" = "";
"restrictions_heading" = "";
"restrictions_hotspots" = "";
"restrictions_retail" = "";
"restrictions_select_activity" = "";
"restrictions_select_state" = "";
"restrictions_sports" = "";
"restrictions_state" = "";
"restrictions_wedding" = "";
"save" = "Kaydet";
"scheduled" = "COVIDSafe'i %@ ile %@ arasında ertelemeye programladınız .";
/* OnBoarding Enter Number */
@ -473,6 +502,8 @@
"support_content" = "Yardım konuları bölümünde belirtilmemiş hususlarda destek için";
"Support_VOLabel" = "Destek. Yardım konuları bölümünde belirtilmemiş hususlarda destek için";
"tasmania" = "Tazmanya";
/* Example: "From 22 to 28 January 2021" */
"to" = "";
"total" = "Toplam";
"total_confirmed_cases" = "Toplam doğrulanmış vakalar";
"total_deaths" = "%@ toplam ölümler";

View file

@ -7,15 +7,17 @@
"activity_button" = "Kiểm tra hoạt động của ứng dụng";
"activity_button_description" = "Xem các tương tác Bluetooth của ứng dụng của bạn với những người dùng COVIDSafe khác.";
"activity_heading" = "Hoạt động ứng dụng";
"activity_intro" = "Mỗi khi thiết bị của bạn nằm trong phạm vi của những người dùng ứng dụng COVIDSafe khác, nó sẽ ghi nhận các tương tác Bluetooth được gọi là 'bắt tay Bluetooth'. \n\n Những lần bắt tay này cho biết ứng dụng của bạn đang hoạt động tốt như thế nào.";
"activity_intro" = "";
"activity_intro_2" = "";
/* Figma page iOS Screens (05/06) */
"allow_bluetooth_call" = "Cho phép COVIDSafe truy cập vào Bluetooth®";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothOFF" = "Truy cập Bluetooth®: TẮT";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothON" = "Truy cập Bluetooth®: BẬT";
"app_activity_bluetooth_handshakes_heading" = "";
"australian_capital_territory" = "Lãnh thổ Thủ đô Úc";
"ble_handshakes_yesterday" = "Bluetooth bắt tay ngày hôm qua";
"ble_handshakes_yesterday" = "";
"bluetooth_handshakes" = "Bắt tay Bluetooth";
/* Figma page iOS Screens (05/06) */
"BluetoothOFF" = "Bluetooth®: TẮT";
@ -276,11 +278,14 @@
"factors_dotpoint1" = "số lượng người dùng COVIDSafe trong phạm vi";
"factors_dotpoint2" = "kiểu thiết bị và độ tuổi";
"factors_dotpoint3" = "nếu bạn đang ở trong một phương tiện đang di chuyển";
"factors_dotpoint4" = "";
"factors_enviro_item_1" = "rào cản vật lý như vách tường";
"factors_enviro_item_2" = "vật liệu và đồ đạc gây nhiễu tín hiệu Bluetooth";
"factors_handshakes_heading" = "Các yếu tố ảnh hưởng đến hoạt động của ứng dụng";
"factors_intro" = "Các yếu tố có thể ảnh hưởng đến số lần bắt tay bao gồm:";
"factors_intro" = "";
"factors_intro_2" = "Chức năng bắt tay cũng có thể bị ảnh hưởng bởi các yếu tố môi trường, bao gồm:";
/* Example: "From 22 to 28 January 2021" */
"from" = "";
"global_back" = "Trở lại";
"global_close" = "Đóng";
"global_double_tap" = "nhấn đúp để chỉnh sửa";
@ -288,6 +293,7 @@
"hide" = "Ẩn";
"home_app_permission_status_subtitle" = "COVIDSafe sẽ không hoạt động nếu không có cài đặt phù hợp.";
"home_app_permission_status_title" = "Kiểm tra cài đặt của bạn";
"home_bottom_nav" = "";
"home_data_uploaded_message" = "Giúp ngăn chặn sự lây lan của COVID-19 và theo dõi các triệu chứng của bạn.";
"home_header_active_no_action_required" = "Không cần làm gì thêm.";
/* Home */
@ -360,12 +366,7 @@
"locally_acquired" = "%@ ca nhiễm bệnh ở địa phương";
"location_off" = "Vị trí: TẮT";
"location_off_description" = "iPhone của bạn yêu cầu quyền truy cập Vị trí để COVIDSafe hoạt động. COVIDSafe KHÔNG theo dõi hoặc lưu trữ dữ liệu vị trí của bạn.";
"low_handshakes_description" = "Hãy thử các mẹo sau để cải thiện hiệu suất của COVIDSafe trên điện thoại của bạn:";
"low_handshakes_heading" = "Phải làm gì nếu số lần bắt tay của bạn thấp hơn bạn mong đợi";
"low_handshakes_item1" = "Kiểm tra xem COVIDSafe có đang hoạt động hay không bằng cách mở ứng dụng.";
"low_handshakes_item2" = "Cập nhật ứng dụng của bạn lên phiên bản mới nhất thông qua Kho Google Play hoặc kho Apple Store.";
"low_handshakes_item3" = "Khởi động lại điện thoại của bạn và mở lại ứng dụng.";
"low_handshakes_link" = "Đọc thêm về cách kiểm tra xem COVIDSafe có hoạt động đúng cách không";
"main_restrictions" = "";
/* Splash Screen */
"migration_in_progress" = "COVIDSafe trong tiến trình cập nhật. \n\nVui lòng đảm bảo điện thoại của bạn không bị tắt cho đến khi cập nhật hoàn tất.";
"minute" = "Phút";
@ -373,6 +374,13 @@
"new_cases" = "Các ca mới trong vòng 24 giờ qua";
"new_cases_total" = "Các ca nhiễm mới kể từ ngày 1/2/2020";
"new_south_wales" = "New South Wales";
"no_handshakes_description" = "";
"no_handshakes_heading" = "";
"no_handshakes_item1" = "Kiểm tra xem COVIDSafe có đang hoạt động hay không bằng cách mở ứng dụng.";
"no_handshakes_item2" = "Cập nhật ứng dụng của bạn lên phiên bản mới nhất thông qua Kho Google Play hoặc kho Apple Store.";
"no_handshakes_item3" = "Khởi động lại điện thoại của bạn và mở lại ứng dụng.";
"no_handshakes_item4" = "";
"no_handshakes_link" = "Đọc thêm về cách kiểm tra xem COVIDSafe có hoạt động đúng cách không";
/* Figma page Android Screens (05/06) */
"norfolk_hint" = "Ví dụ: 51234";
"northern_territory" = "Lãnh thổ Phía bắc";
@ -438,6 +446,27 @@
/* Onboarding Registration Consent */
"registration_consent_headline" = "Đồng ý đăng ký";
"registration_consent_second_paragraph" = "Thông tin về việc tiếp xúc của tôi với những người dùng COVIDSafe khác, nếu một người dùng COVIDSafe khác mà tôi đã tiếp xúc xét nghiệm dương tính với COVID-19 và đăng tải dữ liệu tiếp xúc của họ.";
"restrictions_accommodation" = "";
"restrictions_activity" = "";
"restrictions_cafes" = "";
"restrictions_disclaimer" = "";
"restrictions_domestic_travel" = "";
"restrictions_education" = "";
"restrictions_entertainment" = "";
"restrictions_error_dismiss" = "";
"restrictions_error_heading" = "";
"restrictions_error_message" = "";
"restrictions_error_try" = "";
"restrictions_gatherings_work" = "";
"restrictions_hair_beauty" = "";
"restrictions_heading" = "";
"restrictions_hotspots" = "";
"restrictions_retail" = "";
"restrictions_select_activity" = "";
"restrictions_select_state" = "";
"restrictions_sports" = "";
"restrictions_state" = "";
"restrictions_wedding" = "";
"save" = "Lưu";
"scheduled" = "Bạn đã lên lịch trình cho COVIDSafe tạm ngưng hoạt động từ %@ đến %@ .";
/* OnBoarding Enter Number */
@ -473,6 +502,8 @@
"support_content" = "Để được trợ giúp về các vấn đề không có trong chủ đề Trợ giúp";
"Support_VOLabel" = "Hỗ trợ. Để được trợ giúp về các vấn đề không có trong chủ đề Trợ giúp";
"tasmania" = "Tasmania";
/* Example: "From 22 to 28 January 2021" */
"to" = "";
"total" = "Tổng số";
"total_confirmed_cases" = "Tổng số ca nhiễm";
"total_deaths" = "%@ tổng số tử vong";

View file

@ -7,15 +7,17 @@
"activity_button" = "检查应用程序的活动";
"activity_button_description" = "查看您的应用程序与其他COVIDSafe用户的蓝牙交互。";
"activity_heading" = "应用活动";
"activity_intro" = "每当您的设备在其他COVIDSafe应用程序用户的范围内时它都会记录蓝牙交互这称为“蓝牙握手”。 \n\n这些握手显示了您的应用程序的运行状况。";
"activity_intro" = "";
"activity_intro_2" = "";
/* Figma page iOS Screens (05/06) */
"allow_bluetooth_call" = "允许COVIDSafe 访问蓝牙®";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothOFF" = "访问蓝牙®:关";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothON" = "访问蓝牙®:开";
"app_activity_bluetooth_handshakes_heading" = "";
"australian_capital_territory" = "澳大利亚首都领地";
"ble_handshakes_yesterday" = "昨日发生的蓝牙握手";
"ble_handshakes_yesterday" = "";
"bluetooth_handshakes" = "蓝牙握手";
/* Figma page iOS Screens (05/06) */
"BluetoothOFF" = "蓝牙®:关";
@ -276,11 +278,14 @@
"factors_dotpoint1" = "范围内的COVIDSafe用户数量";
"factors_dotpoint2" = "设备型号和机龄";
"factors_dotpoint3" = "如果您位于正在行驶的车辆中";
"factors_dotpoint4" = "";
"factors_enviro_item_1" = "物理屏障,如墙壁";
"factors_enviro_item_2" = "会干扰蓝牙信号的材料和固定装置";
"factors_handshakes_heading" = "影响应用程序活动的因素";
"factors_intro" = "可能影响握手次数的因素包括:";
"factors_intro" = "";
"factors_intro_2" = "蓝牙握手也会受到环境因素的影响,这些因素包括:";
/* Example: "From 22 to 28 January 2021" */
"from" = "";
"global_back" = "返回";
"global_close" = "关闭";
"global_double_tap" = "双击进行编辑";
@ -288,6 +293,7 @@
"hide" = "隐藏";
"home_app_permission_status_subtitle" = "若设置不正确COVIDSafe将无法运行。";
"home_app_permission_status_title" = "检查您的设置";
"home_bottom_nav" = "";
"home_data_uploaded_message" = "协助阻止COVID-19的传播追踪您的症状。";
"home_header_active_no_action_required" = "无须进一步操作。";
/* Home */
@ -360,12 +366,7 @@
"locally_acquired" = "%@本地感染";
"location_off" = "位置:关闭";
"location_off_description" = "您的 iPhone 要求COVIDSafe 获得位置权限才能运行。COVIDSafe 不会跟踪或存储您的位置数据。";
"low_handshakes_description" = "请尝试用以下方法提高您手机上 COVIDSafe的性能";
"low_handshakes_heading" = "如果您的蓝牙握手次数少于预期,该怎么办";
"low_handshakes_item1" = "打开应用程序检查COVIDSafe是否处于激活状态。";
"low_handshakes_item2" = "通过Google Play Store或Apple Store将您的应用更新到最新版本。";
"low_handshakes_item3" = "重新启动手机并再次打开应用。";
"low_handshakes_link" = "阅读更多有关如何检查COVIDSafe是否正常运行的信息";
"main_restrictions" = "";
/* Splash Screen */
"migration_in_progress" = "COVIDSafe正在更新。 \n\n请保持开机状态直至更新完成。";
"minute" = "分钟";
@ -373,6 +374,13 @@
"new_cases" = "过去24小时内新增病例";
"new_cases_total" = "自2020年2月1日以来的新增病例";
"new_south_wales" = "新南威尔士州";
"no_handshakes_description" = "";
"no_handshakes_heading" = "";
"no_handshakes_item1" = "打开应用程序检查COVIDSafe是否处于激活状态。";
"no_handshakes_item2" = "通过Google Play Store或Apple Store将您的应用更新到最新版本。";
"no_handshakes_item3" = "重新启动手机并再次打开应用。";
"no_handshakes_item4" = "";
"no_handshakes_link" = "阅读更多有关如何检查COVIDSafe是否正常运行的信息";
/* Figma page Android Screens (05/06) */
"norfolk_hint" = "例如51234";
"northern_territory" = "北领地";
@ -438,6 +446,27 @@
/* Onboarding Registration Consent */
"registration_consent_headline" = "注册同意书";
"registration_consent_second_paragraph" = "我与其他COVIDSafe用户的接触信息如果与我发生过接触的其他用户COVID-19检测呈阳性并上传其接触者数据。";
"restrictions_accommodation" = "";
"restrictions_activity" = "";
"restrictions_cafes" = "";
"restrictions_disclaimer" = "";
"restrictions_domestic_travel" = "";
"restrictions_education" = "";
"restrictions_entertainment" = "";
"restrictions_error_dismiss" = "";
"restrictions_error_heading" = "";
"restrictions_error_message" = "";
"restrictions_error_try" = "";
"restrictions_gatherings_work" = "";
"restrictions_hair_beauty" = "";
"restrictions_heading" = "";
"restrictions_hotspots" = "";
"restrictions_retail" = "";
"restrictions_select_activity" = "";
"restrictions_select_state" = "";
"restrictions_sports" = "";
"restrictions_state" = "";
"restrictions_wedding" = "";
"save" = "保存";
"scheduled" = "您已将COVIDSafe设置为从%@休眠至%@ 。";
/* OnBoarding Enter Number */
@ -473,6 +502,8 @@
"support_content" = "获取帮助,解决帮助主题未涵盖的问题";
"Support_VOLabel" = "支持。获取帮助,解决帮助主题未涵盖的问题";
"tasmania" = "塔斯马尼亚州";
/* Example: "From 22 to 28 January 2021" */
"to" = "";
"total" = "总数";
"total_confirmed_cases" = "确诊病例总数";
"total_deaths" = "%@ 总死亡人数";

View file

@ -7,15 +7,17 @@
"activity_button" = "檢查應用程式活動。";
"activity_button_description" = "查看你應用程式與其他COVIDSafe用戶的藍牙互動。";
"activity_heading" = "應用程式活動。";
"activity_intro" = "每次你的裝置在其他COVIDSafe應用程式用戶的範圍內時它都會記下藍牙互動這叫作”藍牙握手”。\n\n這些握手可以顯示你的應用程式運作狀況。";
"activity_intro" = "";
"activity_intro_2" = "";
/* Figma page iOS Screens (05/06) */
"allow_bluetooth_call" = "允許 COVIDSafe 接入藍牙®";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothOFF" = "連接藍牙®:關";
/* Figma page iOS Screens (05/06) */
"AllowBluetoothON" = "連接藍牙®:開";
"app_activity_bluetooth_handshakes_heading" = "";
"australian_capital_territory" = "澳大利亞首都領地";
"ble_handshakes_yesterday" = "昨天發生的藍牙握手。";
"ble_handshakes_yesterday" = "";
"bluetooth_handshakes" = "藍牙握手";
/* Figma page iOS Screens (05/06) */
"BluetoothOFF" = "藍牙®:關";
@ -276,11 +278,14 @@
"factors_dotpoint1" = "在範圍內的COVIDSafe用戶數量";
"factors_dotpoint2" = "裝置型號和機齡";
"factors_dotpoint3" = "如果你在移動的車裡";
"factors_dotpoint4" = "";
"factors_enviro_item_1" = "實物屏障,如牆壁";
"factors_enviro_item_2" = "會干擾藍牙信號的材料和固定裝置。";
"factors_handshakes_heading" = "影響應用程式活動的因素";
"factors_intro" = "可能影響握手次數的因素包括:";
"factors_intro" = "";
"factors_intro_2" = "藍牙握手也可以受到環境因素影響,包括:";
/* Example: "From 22 to 28 January 2021" */
"from" = "";
"global_back" = "返回";
"global_close" = "關閉";
"global_double_tap" = "點觸兩次來編輯";
@ -288,6 +293,7 @@
"hide" = "隱藏";
"home_app_permission_status_subtitle" = "若設定錯誤,將無法執行 COVIDSafe。";
"home_app_permission_status_title" = "檢查你的設定";
"home_bottom_nav" = "";
"home_data_uploaded_message" = "協助遏止 COVID-19 擴散,追蹤你的症狀。";
"home_header_active_no_action_required" = "無需採取進一步行動。";
/* Home */
@ -360,12 +366,7 @@
"locally_acquired" = "%@本地感染";
"location_off" = "位置:關閉";
"location_off_description" = "你的iPhone要求COVIDSafe獲得位置許可權才能正常運作。COVIDSafe不會跟蹤或者存儲你的位置資料。";
"low_handshakes_description" = "嘗試以下小貼士改善你手機上COVIDSafe的性能";
"low_handshakes_heading" = "如果你的藍牙握手次數比預期低,該怎麼辦";
"low_handshakes_item1" = "打開應用程式檢查COVIDSafe是否處於啟用狀態。";
"low_handshakes_item2" = "通過 Google Play Store 或者 Apple Store將你的應用程式更新到最新版本。";
"low_handshakes_item3" = "重啟你的手機然後打開應用程式。";
"low_handshakes_link" = "閱讀更多關於如何檢查COVIDSafe是否正常運作的資訊";
"main_restrictions" = "";
/* Splash Screen */
"migration_in_progress" = "正在更新 COVIDSafe。\n\n請保持開機狀態直至更新完成為止。";
"minute" = "分鐘 ";
@ -373,6 +374,13 @@
"new_cases" = "過去24小時內新增病例";
"new_cases_total" = "自從2020年2月1日以來的新增病例";
"new_south_wales" = "新南威爾士州";
"no_handshakes_description" = "";
"no_handshakes_heading" = "";
"no_handshakes_item1" = "打開應用程式檢查COVIDSafe是否處於啟用狀態。";
"no_handshakes_item2" = "通過 Google Play Store 或者 Apple Store將你的應用程式更新到最新版本。";
"no_handshakes_item3" = "重啟你的手機然後打開應用程式。";
"no_handshakes_item4" = "";
"no_handshakes_link" = "閱讀更多關於如何檢查COVIDSafe是否正常運作的資訊";
/* Figma page Android Screens (05/06) */
"norfolk_hint" = "例如51234";
"northern_territory" = "北領地";
@ -438,6 +446,27 @@
/* Onboarding Registration Consent */
"registration_consent_headline" = "註册同意書";
"registration_consent_second_paragraph" = "我與其他COVIDSafe用戶的接觸資料如果我接觸過的另一用戶COVID-19測試呈陽性並且上傳了其接觸者數據。";
"restrictions_accommodation" = "";
"restrictions_activity" = "";
"restrictions_cafes" = "";
"restrictions_disclaimer" = "";
"restrictions_domestic_travel" = "";
"restrictions_education" = "";
"restrictions_entertainment" = "";
"restrictions_error_dismiss" = "";
"restrictions_error_heading" = "";
"restrictions_error_message" = "";
"restrictions_error_try" = "";
"restrictions_gatherings_work" = "";
"restrictions_hair_beauty" = "";
"restrictions_heading" = "";
"restrictions_hotspots" = "";
"restrictions_retail" = "";
"restrictions_select_activity" = "";
"restrictions_select_state" = "";
"restrictions_sports" = "";
"restrictions_state" = "";
"restrictions_wedding" = "";
"save" = "保存";
"scheduled" = "你已將COVIDSafe設置為從%@休眠到%@。";
/* OnBoarding Enter Number */
@ -473,6 +502,8 @@
"support_content" = "獲取幫助,解決求助主題未涵蓋的問題。";
"Support_VOLabel" = "支持。獲取幫助,解決求助主題未涵蓋的問題。";
"tasmania" = "塔斯曼尼亞州";
/* Example: "From 22 to 28 January 2021" */
"to" = "";
"total" = "總數";
"total_confirmed_cases" = "確診病例總數";
"total_deaths" = "%@總死亡人數";