From a3e4638341f5e87bb96f42b2527061eb37e3b9e7 Mon Sep 17 00:00:00 2001 From: linshujie Date: Wed, 12 Aug 2026 17:59:19 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=88=9B=E5=BB=BA=E5=88=86=E7=BB=84=20-=20?= =?UTF-8?q?=E9=94=81App?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + AppRestrictShared/AppRestrictShared.swift | 264 ++++++ ...eviceActivityMonitorExtension.entitlements | 12 + .../DeviceActivityMonitorExtension.swift | 27 + DeviceActivityMonitorExtension/Info.plist | 27 + Podfile | 2 +- QuickLocation.xcodeproj/project.pbxproj | 500 +++++++++- .../Assets.xcassets/AppRestrict/Contents.json | 6 + .../pair_action_delete.imageset/Contents.json | 8 + .../pair_action_delete@2x.png | Bin 0 -> 867 bytes .../pair_action_delete@3x.png | Bin 0 -> 1681 bytes .../pair_action_link.imageset/Contents.json | 8 + .../pair_action_link@2x.png | Bin 0 -> 1066 bytes .../pair_action_link@3x.png | Bin 0 -> 2526 bytes .../pair_badge_check.imageset/Contents.json | 8 + .../pair_badge_check@2x.png | Bin 0 -> 493 bytes .../pair_badge_check@3x.png | Bin 0 -> 1061 bytes .../pair_link_active.imageset/Contents.json | 8 + .../pair_link_active@2x.png | Bin 0 -> 3029 bytes .../pair_link_active@3x.png | Bin 0 -> 5893 bytes .../pair_link_inactive.imageset/Contents.json | 8 + .../pair_link_inactive@2x.png | Bin 0 -> 2430 bytes .../pair_link_inactive@3x.png | Bin 0 -> 4503 bytes .../Group/edit.imageset/Group_297@2x.png | Bin 678 -> 830 bytes .../Group/edit.imageset/Group_297@3x.png | Bin 869 -> 1951 bytes .../Group/join_hero_bg.imageset/Contents.json | 22 + .../join_hero_bg.imageset/join_hero_bg@2x.png | Bin 0 -> 5235 bytes .../join_hero_bg.imageset/join_hero_bg@3x.png | Bin 0 -> 11433 bytes .../Group/join_scan.imageset/Contents.json | 22 + .../Group/join_scan.imageset/join_scan@2x.png | Bin 0 -> 1474 bytes .../Group/join_scan.imageset/join_scan@3x.png | Bin 0 -> 3723 bytes .../LockDistract/Contents.json | 9 + .../app_unknown.imageset/Contents.json | 8 + .../app_unknown.imageset/app_unknown@2x.png | Bin 0 -> 1461 bytes .../app_unknown.imageset/app_unknown@3x.png | Bin 0 -> 2888 bytes .../arrow_right.imageset/Contents.json | 8 + .../arrow_right.imageset/arrow_right@2x.png | Bin 0 -> 302 bytes .../arrow_right.imageset/arrow_right@3x.png | Bin 0 -> 465 bytes .../section_star.imageset/Contents.json | 8 + .../section_star.imageset/section_star@2x.png | Bin 0 -> 433 bytes .../section_star.imageset/section_star@3x.png | Bin 0 -> 772 bytes .../wallpaper_1.imageset/Contents.json | 8 + .../wallpaper_1.imageset/wallpaper_1@2x.png | Bin 0 -> 35429 bytes .../wallpaper_1.imageset/wallpaper_1@3x.png | Bin 0 -> 67677 bytes .../wallpaper_2.imageset/Contents.json | 8 + .../wallpaper_2.imageset/wallpaper_2@2x.png | Bin 0 -> 46690 bytes .../wallpaper_2.imageset/wallpaper_2@3x.png | Bin 0 -> 91802 bytes .../wallpaper_3.imageset/Contents.json | 8 + .../wallpaper_3.imageset/wallpaper_3@2x.png | Bin 0 -> 44163 bytes .../wallpaper_3.imageset/wallpaper_3@3x.png | Bin 0 -> 85597 bytes .../BaseViewController.swift | 2 +- QuickLocation/Manager/App/RouterManager.swift | 16 + .../AppRestrict/AppRestrictManager.swift | 140 +++ QuickLocation/QuickLocation.entitlements | 6 + .../Section/AppRestrict/AppCatalogStore.swift | 112 +++ .../Section/AppRestrict/AppRestrictCell.swift | 164 ++++ .../AppRestrictShieldSettingsVC.swift | 147 +++ .../Section/AppRestrict/AppRestrictVC.swift | 141 +++ .../Section/AppRestrict/AppRestrictView.swift | 188 ++++ .../FamilyActivityPickerHost.swift | 135 +++ .../AppRestrict/ITunesSearchService.swift | 66 ++ .../AppRestrict/PairGuideStepsView.swift | 86 ++ .../AppRestrict/SelectActivityVC.swift | 141 +++ .../Section/AppRestrict/app_catalog.json | 50 + .../Section/Explore/FeatureIntroVC.swift | 2 + .../Section/Explore/FeatureIntroView.swift | 3 +- .../Group/CreateGroup/CreateGroupVC.swift | 69 +- .../Group/CreateGroup/CreateGroupView.swift | 855 +++++++++++++----- .../CreateGroup/CreateGroupViewModel.swift | 25 +- QuickLocation/Section/Group/GroupView.swift | 2 +- .../Section/Group/Join/JoinGroupVC.swift | 16 +- .../Section/Group/Join/JoinGroupView.swift | 329 +++---- .../Home/Bubble/CreateBubbleSetupView.swift | 4 +- .../Section/LockDistract/LockDistractVC.swift | 103 +++ .../LockDistract/LockDistractView.swift | 605 +++++++++++++ .../Mine/PrivacyPolicy/PrivacyPolicyVC.swift | 21 +- ShieldConfigurationExtension/Info.plist | 27 + .../ShieldConfigurationExtension.entitlements | 12 + .../ShieldConfigurationExtension.swift | 38 + scripts/add_app_restrict_targets.rb | 152 ++++ scripts/add_lock_distract_files.rb | 26 + 81 files changed, 4222 insertions(+), 441 deletions(-) create mode 100644 AppRestrictShared/AppRestrictShared.swift create mode 100644 DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements create mode 100644 DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift create mode 100644 DeviceActivityMonitorExtension/Info.plist create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/Contents.json create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_action_delete.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_action_delete.imageset/pair_action_delete@2x.png create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_action_delete.imageset/pair_action_delete@3x.png create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_action_link.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_action_link.imageset/pair_action_link@2x.png create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_action_link.imageset/pair_action_link@3x.png create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_badge_check.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_badge_check.imageset/pair_badge_check@2x.png create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_badge_check.imageset/pair_badge_check@3x.png create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_link_active.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_link_active.imageset/pair_link_active@2x.png create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_link_active.imageset/pair_link_active@3x.png create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_link_inactive.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_link_inactive.imageset/pair_link_inactive@2x.png create mode 100644 QuickLocation/Assets.xcassets/AppRestrict/pair_link_inactive.imageset/pair_link_inactive@3x.png create mode 100644 QuickLocation/Assets.xcassets/Group/join_hero_bg.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/Group/join_hero_bg.imageset/join_hero_bg@2x.png create mode 100644 QuickLocation/Assets.xcassets/Group/join_hero_bg.imageset/join_hero_bg@3x.png create mode 100644 QuickLocation/Assets.xcassets/Group/join_scan.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/Group/join_scan.imageset/join_scan@2x.png create mode 100644 QuickLocation/Assets.xcassets/Group/join_scan.imageset/join_scan@3x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/Contents.json create mode 100644 QuickLocation/Assets.xcassets/LockDistract/app_unknown.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/LockDistract/app_unknown.imageset/app_unknown@2x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/app_unknown.imageset/app_unknown@3x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/arrow_right.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/LockDistract/arrow_right.imageset/arrow_right@2x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/arrow_right.imageset/arrow_right@3x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/section_star.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/LockDistract/section_star.imageset/section_star@2x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/section_star.imageset/section_star@3x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/wallpaper_1.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/LockDistract/wallpaper_1.imageset/wallpaper_1@2x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/wallpaper_1.imageset/wallpaper_1@3x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/wallpaper_2.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/LockDistract/wallpaper_2.imageset/wallpaper_2@2x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/wallpaper_2.imageset/wallpaper_2@3x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/wallpaper_3.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/LockDistract/wallpaper_3.imageset/wallpaper_3@2x.png create mode 100644 QuickLocation/Assets.xcassets/LockDistract/wallpaper_3.imageset/wallpaper_3@3x.png create mode 100644 QuickLocation/Manager/AppRestrict/AppRestrictManager.swift create mode 100644 QuickLocation/Section/AppRestrict/AppCatalogStore.swift create mode 100644 QuickLocation/Section/AppRestrict/AppRestrictCell.swift create mode 100644 QuickLocation/Section/AppRestrict/AppRestrictShieldSettingsVC.swift create mode 100644 QuickLocation/Section/AppRestrict/AppRestrictVC.swift create mode 100644 QuickLocation/Section/AppRestrict/AppRestrictView.swift create mode 100644 QuickLocation/Section/AppRestrict/FamilyActivityPickerHost.swift create mode 100644 QuickLocation/Section/AppRestrict/ITunesSearchService.swift create mode 100644 QuickLocation/Section/AppRestrict/PairGuideStepsView.swift create mode 100644 QuickLocation/Section/AppRestrict/SelectActivityVC.swift create mode 100644 QuickLocation/Section/AppRestrict/app_catalog.json create mode 100644 QuickLocation/Section/LockDistract/LockDistractVC.swift create mode 100644 QuickLocation/Section/LockDistract/LockDistractView.swift create mode 100644 ShieldConfigurationExtension/Info.plist create mode 100644 ShieldConfigurationExtension/ShieldConfigurationExtension.entitlements create mode 100644 ShieldConfigurationExtension/ShieldConfigurationExtension.swift create mode 100644 scripts/add_app_restrict_targets.rb create mode 100644 scripts/add_lock_distract_files.rb diff --git a/.gitignore b/.gitignore index 73d65739..5bb2abc2 100644 --- a/.gitignore +++ b/.gitignore @@ -47,4 +47,5 @@ npm-debug.log screenshot/ .opencode/ .cursor/ +.codex/ openspec/ diff --git a/AppRestrictShared/AppRestrictShared.swift b/AppRestrictShared/AppRestrictShared.swift new file mode 100644 index 00000000..d545b0c3 --- /dev/null +++ b/AppRestrictShared/AppRestrictShared.swift @@ -0,0 +1,264 @@ +// +// AppRestrictShared.swift +// Shared between main app and Screen Time extensions. +// + +import Foundation +import FamilyControls +import ManagedSettings +import UIKit + +enum AppRestrictShared { + static let appGroupId = "group.cn.zuomeng.jisuloca" + static let storeName = ManagedSettingsStore.Name("appRestrict") + static let activityName = "appRestrict.monitoring" + + static let selectionKey = "appRestrict.selection" + static let enabledTokensKey = "appRestrict.enabledTokens" + static let linksKey = "appRestrict.links" + static let shieldConfigKey = "appRestrict.shieldConfig" + static let customImageFileName = "shield_custom.jpg" + + static var defaults: UserDefaults { + UserDefaults(suiteName: appGroupId) ?? .standard + } + + static var containerURL: URL? { + FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroupId) + } + + static var customImageURL: URL? { + containerURL?.appendingPathComponent(customImageFileName) + } + + static func makeStore() -> ManagedSettingsStore { + ManagedSettingsStore(named: storeName) + } +} + +struct AppRestrictLinkRecord: Codable, Equatable { + let catalogId: String + let tokenData: Data + let displayName: String? + let iconURL: String? + + init(catalogId: String, tokenData: Data, displayName: String? = nil, iconURL: String? = nil) { + self.catalogId = catalogId + self.tokenData = tokenData + self.displayName = displayName + self.iconURL = iconURL + } + + init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + catalogId = try container.decode(String.self, forKey: .catalogId) + tokenData = try container.decode(Data.self, forKey: .tokenData) + displayName = try container.decodeIfPresent(String.self, forKey: .displayName) + iconURL = try container.decodeIfPresent(String.self, forKey: .iconURL) + } +} + +struct AppRestrictShieldConfig: Codable, Equatable { + enum ImageSource: String, Codable { + case presetDefault + case presetFocus + case presetCalm + case album + } + + var title: String + var subtitle: String + var primaryButtonLabel: String + var imageSource: ImageSource + + static let `default` = AppRestrictShieldConfig( + title: "该应用已被锁定", + subtitle: "专注当下,稍后再回来吧", + primaryButtonLabel: "知道了", + imageSource: .presetDefault + ) +} + +enum AppRestrictTokenCodec { + static func encode(_ token: ApplicationToken) -> Data? { + try? PropertyListEncoder().encode(token) + } + + static func decode(_ data: Data) -> ApplicationToken? { + try? PropertyListDecoder().decode(ApplicationToken.self, from: data) + } + + static func encodeSelection(_ selection: FamilyActivitySelection) -> Data? { + try? PropertyListEncoder().encode(selection) + } + + static func decodeSelection(_ data: Data) -> FamilyActivitySelection? { + try? PropertyListDecoder().decode(FamilyActivitySelection.self, from: data) + } + + static func encodeTokenSet(_ tokens: Set) -> Data? { + let datas = tokens.compactMap { encode($0) } + return try? PropertyListEncoder().encode(datas) + } + + static func decodeTokenSet(_ data: Data) -> Set { + guard let datas = try? PropertyListDecoder().decode([Data].self, from: data) else { + return [] + } + return Set(datas.compactMap { decode($0) }) + } +} + +enum AppRestrictSharedStore { + static var selection: FamilyActivitySelection { + get { + guard let data = AppRestrictShared.defaults.data(forKey: AppRestrictShared.selectionKey), + let value = AppRestrictTokenCodec.decodeSelection(data) else { + return FamilyActivitySelection() + } + return value + } + set { + if let data = AppRestrictTokenCodec.encodeSelection(newValue) { + AppRestrictShared.defaults.set(data, forKey: AppRestrictShared.selectionKey) + } + } + } + + static var enabledTokens: Set { + get { + guard let data = AppRestrictShared.defaults.data(forKey: AppRestrictShared.enabledTokensKey) else { + return [] + } + return AppRestrictTokenCodec.decodeTokenSet(data) + } + set { + if let data = AppRestrictTokenCodec.encodeTokenSet(newValue) { + AppRestrictShared.defaults.set(data, forKey: AppRestrictShared.enabledTokensKey) + } else { + AppRestrictShared.defaults.removeObject(forKey: AppRestrictShared.enabledTokensKey) + } + } + } + + static var links: [AppRestrictLinkRecord] { + get { + guard let data = AppRestrictShared.defaults.data(forKey: AppRestrictShared.linksKey), + let value = try? JSONDecoder().decode([AppRestrictLinkRecord].self, from: data) else { + return [] + } + return value + } + set { + if let data = try? JSONEncoder().encode(newValue) { + AppRestrictShared.defaults.set(data, forKey: AppRestrictShared.linksKey) + } + } + } + + static var shieldConfig: AppRestrictShieldConfig { + get { + guard let data = AppRestrictShared.defaults.data(forKey: AppRestrictShared.shieldConfigKey), + let value = try? JSONDecoder().decode(AppRestrictShieldConfig.self, from: data) else { + return .default + } + return value + } + set { + if let data = try? JSONEncoder().encode(newValue) { + AppRestrictShared.defaults.set(data, forKey: AppRestrictShared.shieldConfigKey) + } + } + } + + static func linkRecord(for token: ApplicationToken) -> AppRestrictLinkRecord? { + guard let data = AppRestrictTokenCodec.encode(token) else { return nil } + return links.first(where: { $0.tokenData == data }) + } + + static func catalogId(for token: ApplicationToken) -> String? { + linkRecord(for: token)?.catalogId + } + + static func setLink( + catalogId: String, + token: ApplicationToken, + displayName: String? = nil, + iconURL: String? = nil + ) { + guard let data = AppRestrictTokenCodec.encode(token) else { return } + var list = links.filter { $0.tokenData != data && $0.catalogId != catalogId } + list.append(AppRestrictLinkRecord( + catalogId: catalogId, + tokenData: data, + displayName: displayName, + iconURL: iconURL + )) + links = list + } + + static func removeLink(for token: ApplicationToken) { + guard let data = AppRestrictTokenCodec.encode(token) else { return } + links = links.filter { $0.tokenData != data } + } + + static func applyShield(for tokens: Set) { + let store = AppRestrictShared.makeStore() + if tokens.isEmpty { + store.clearAllSettings() + } else { + store.shield.applications = tokens + } + } + + static func clearShield() { + AppRestrictShared.makeStore().clearAllSettings() + } + + static func loadShieldImage() -> UIImage? { + let config = shieldConfig + switch config.imageSource { + case .album: + if let url = AppRestrictShared.customImageURL, + let data = try? Data(contentsOf: url), + let image = UIImage(data: data) { + return image + } + fallthrough + case .presetDefault: + return UIImage(named: "AppRestrict/shield_preset_default") + ?? UIImage(systemName: "lock.shield.fill") + case .presetFocus: + return UIImage(named: "AppRestrict/shield_preset_focus") + ?? UIImage(systemName: "brain.head.profile") + case .presetCalm: + return UIImage(named: "AppRestrict/shield_preset_calm") + ?? UIImage(systemName: "leaf.fill") + } + } + + static func saveCustomImage(_ image: UIImage) -> Bool { + guard let url = AppRestrictShared.customImageURL else { return false } + let resized = image.appRestrictResized(maxSide: 720) + guard let data = resized.jpegData(compressionQuality: 0.82) else { return false } + do { + try data.write(to: url, options: .atomic) + return true + } catch { + return false + } + } +} + +private extension UIImage { + func appRestrictResized(maxSide: CGFloat) -> UIImage { + let maxCurrent = max(size.width, size.height) + guard maxCurrent > maxSide, maxCurrent > 0 else { return self } + let scale = maxSide / maxCurrent + let newSize = CGSize(width: size.width * scale, height: size.height * scale) + let renderer = UIGraphicsImageRenderer(size: newSize) + return renderer.image { _ in + draw(in: CGRect(origin: .zero, size: newSize)) + } + } +} diff --git a/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements b/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements new file mode 100644 index 00000000..4a8cc927 --- /dev/null +++ b/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.developer.family-controls + + com.apple.security.application-groups + + group.cn.zuomeng.jisuloca + + + diff --git a/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift b/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift new file mode 100644 index 00000000..7aae6493 --- /dev/null +++ b/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift @@ -0,0 +1,27 @@ +import DeviceActivity +import FamilyControls +import Foundation +import ManagedSettings + +final class DeviceActivityMonitorExtension: DeviceActivityMonitor { + override func intervalDidStart(for activity: DeviceActivityName) { + super.intervalDidStart(for: activity) + let tokens = AppRestrictSharedStore.enabledTokens + AppRestrictSharedStore.applyShield(for: tokens) + } + + override func intervalDidEnd(for activity: DeviceActivityName) { + super.intervalDidEnd(for: activity) + // Keep shields while user still has enabled tokens; only clear when empty. + let tokens = AppRestrictSharedStore.enabledTokens + if tokens.isEmpty { + AppRestrictSharedStore.clearShield() + } else { + AppRestrictSharedStore.applyShield(for: tokens) + } + } + + override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) { + super.eventDidReachThreshold(event, activity: activity) + } +} diff --git a/DeviceActivityMonitorExtension/Info.plist b/DeviceActivityMonitorExtension/Info.plist new file mode 100644 index 00000000..d68c75b6 --- /dev/null +++ b/DeviceActivityMonitorExtension/Info.plist @@ -0,0 +1,27 @@ + + + + + CFBundleDisplayName + DeviceActivityMonitor + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + NSExtension + + NSExtensionPointIdentifier + com.apple.deviceactivity.monitor-extension + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).DeviceActivityMonitorExtension + + + diff --git a/Podfile b/Podfile index d9975def..84e322ee 100644 --- a/Podfile +++ b/Podfile @@ -1,6 +1,6 @@ # Uncomment the next line to define a global platform for your project source 'https://gitee.com/mirrors/CocoaPods-Specs.git' -platform :ios, '15.0' +platform :ios, '16.0' use_frameworks! target 'QuickLocation' do # Comment the next line if you don't want to use dynamic frameworks diff --git a/QuickLocation.xcodeproj/project.pbxproj b/QuickLocation.xcodeproj/project.pbxproj index e5da6482..0a1665ab 100644 --- a/QuickLocation.xcodeproj/project.pbxproj +++ b/QuickLocation.xcodeproj/project.pbxproj @@ -7,6 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + 04532656C70B8C5AD6A8161E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 226CA98495C2884EBB1D1372 /* Foundation.framework */; }; + 071EBEFAB7A70D8554B38024 /* DeviceActivity.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88CC9D32980864EAD9F72004 /* DeviceActivity.framework */; }; + 091AC874363B91A91D717758 /* ManagedSettings.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE79029677394A46B143E75 /* ManagedSettings.framework */; }; 305A76882FCA8C7000227D26 /* MoyaProvider+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 305A74C62FCA8C7000227D26 /* MoyaProvider+Rx.swift */; }; 305A76892FCA8C7000227D26 /* Observable+Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 305A74C72FCA8C7000227D26 /* Observable+Response.swift */; }; 305A768A2FCA8C7000227D26 /* Single+Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 305A74C82FCA8C7000227D26 /* Single+Response.swift */; }; @@ -47,7 +50,6 @@ 305A76AD2FCA8C7000227D26 /* UIApplicationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 305A74F62FCA8C7000227D26 /* UIApplicationExtension.swift */; }; 305A76AE2FCA8C7000227D26 /* UIButton+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 305A74F72FCA8C7000227D26 /* UIButton+Extension.swift */; }; 305A76AF2FCA8C7000227D26 /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 305A74F82FCA8C7000227D26 /* UIColor+Extension.swift */; }; - 55B217A33022F0B100784706 /* UIDevice+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217A33022F0B100784707 /* UIDevice+Extension.swift */; }; 305A76B02FCA8C7000227D26 /* UIFont+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 305A74F92FCA8C7000227D26 /* UIFont+Extension.swift */; }; 305A76B12FCA8C7000227D26 /* UIImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 305A74FA2FCA8C7000227D26 /* UIImage+Extension.swift */; }; 305A76B22FCA8C7000227D26 /* UIImage+Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 305A74FB2FCA8C7000227D26 /* UIImage+Resource.swift */; }; @@ -187,11 +189,6 @@ 30A87A642FEE75520095E7C6 /* CreateBubbleTipsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30A87A632FEE75520095E7C6 /* CreateBubbleTipsView.swift */; }; 30A87A662FEE843E0095E7C6 /* CreateBubbleDoneView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30A87A652FEE843E0095E7C6 /* CreateBubbleDoneView.swift */; }; 30A87A682FEE86560095E7C6 /* CreateBubblePopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30A87A672FEE86560095E7C6 /* CreateBubblePopView.swift */; }; - 55B219C13024C00100784722 /* BubbleHeroView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B219C13024C00100784721 /* BubbleHeroView.swift */; }; - 55B219C13024C00100784724 /* CreateBubbleSetupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B219C13024C00100784723 /* CreateBubbleSetupView.swift */; }; - 55B219C13024C00100784726 /* BubbleKnowledgeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B219C13024C00100784725 /* BubbleKnowledgeView.swift */; }; - 55B219C13024C00100784728 /* BubbleKnowledgeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B219C13024C00100784727 /* BubbleKnowledgeVC.swift */; }; - 55C219C13024C00100784731 /* SearchLocationHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C219C13024C00100784730 /* SearchLocationHeaderView.swift */; }; 30A87A6B2FEF5B950095E7C6 /* SearchLocationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30A87A6A2FEF5B950095E7C6 /* SearchLocationView.swift */; }; 30A87A6D2FEF5BA10095E7C6 /* SearchLocationVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30A87A6C2FEF5BA10095E7C6 /* SearchLocationVC.swift */; }; 30A87A6F2FEF7BE40095E7C6 /* SearchLocationResultVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30A87A6E2FEF7BE40095E7C6 /* SearchLocationResultVC.swift */; }; @@ -239,8 +236,6 @@ 30D74AAB2FE8C7700050EB2C /* GPSSignalHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D74AAA2FE8C7700050EB2C /* GPSSignalHelper.swift */; }; 30D74AAE2FEA13E00050EB2C /* ScheduleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D74AAD2FEA13E00050EB2C /* ScheduleView.swift */; }; 30D74AB02FEA13ED0050EB2C /* ScheduleVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D74AAF2FEA13ED0050EB2C /* ScheduleVC.swift */; }; - 55B218B13024B00100784722 /* FeatureIntroVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B218B13024B00100784721 /* FeatureIntroVC.swift */; }; - 55B218B13024B00100784724 /* FeatureIntroView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B218B13024B00100784723 /* FeatureIntroView.swift */; }; 30D74AB22FEA1D5D0050EB2C /* ScheduleViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D74AB12FEA1D5D0050EB2C /* ScheduleViewModel.swift */; }; 30D74AB42FEA25B90050EB2C /* ViewedModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D74AB32FEA25B90050EB2C /* ViewedModel.swift */; }; 30D74AB62FEA34FF0050EB2C /* ItineraryAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D74AB52FEA34FF0050EB2C /* ItineraryAPI.swift */; }; @@ -300,11 +295,15 @@ 30EFF3E52FDAA93400EB35D4 /* PrivacyPolicyVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30EFF3E42FDAA93300EB35D4 /* PrivacyPolicyVC.swift */; }; 30EFF3E72FDAA93D00EB35D4 /* PrivacyPolicyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30EFF3E62FDAA93D00EB35D4 /* PrivacyPolicyView.swift */; }; 30EFF3E82FCA8C7000227D26 /* AuthenticationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30EFF3E92FCA8C7000227D26 /* AuthenticationServices.framework */; }; + 4392B1D9C125D873FCFCDDC9 /* app_catalog.json in Resources */ = {isa = PBXBuildFile; fileRef = 3C79865C3ED165AFDD091C29 /* app_catalog.json */; }; + 488FF21773B8E5021D8662B5 /* AppRestrictView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 787F87DD1CEBED1A4E1E9FC7 /* AppRestrictView.swift */; }; + 4AF6E5954D73E21F31F7A16B /* AppRestrictVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0112B7865829D5B6A4A0BD0 /* AppRestrictVC.swift */; }; 557E8D5330187A5C0032AB51 /* BaseNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 557E8D5230187A5C0032AB51 /* BaseNavigationView.swift */; }; 55B2179130217D6600784774 /* HomeView2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B2179030217D6600784774 /* HomeView2.swift */; }; 55B2179330218CE100784774 /* GroupMemberView2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B2179230218CE100784774 /* GroupMemberView2.swift */; }; 55B217953022DD6B00784774 /* 荆南波波黑-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 55B217943022DD6B00784774 /* 荆南波波黑-Bold.ttf */; }; 55B217A13022F0A000784702 /* FontManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217A03022F0A000784701 /* FontManager.swift */; }; + 55B217A33022F0B100784706 /* UIDevice+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217A33022F0B100784707 /* UIDevice+Extension.swift */; }; 55B217B13022F0A000784711 /* GroupItineraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217B03022F0A000784710 /* GroupItineraryView.swift */; }; 55B217C13022F0A000784721 /* MinePhotoWallView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217C03022F0A000784720 /* MinePhotoWallView.swift */; }; 55B217C33022F0A000784723 /* MemberPhoneReportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217C23022F0A000784722 /* MemberPhoneReportView.swift */; }; @@ -322,14 +321,86 @@ 55B218A13024A00100784708 /* CancelAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B218A13024A00100784707 /* CancelAccountView.swift */; }; 55B218A13024A0010078470A /* MemberInfoVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B218A13024A00100784709 /* MemberInfoVC.swift */; }; 55B218A13024A0010078470C /* MemberInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B218A13024A0010078470B /* MemberInfoView.swift */; }; + 55B218B13024B00100784722 /* FeatureIntroVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B218B13024B00100784721 /* FeatureIntroVC.swift */; }; + 55B218B13024B00100784724 /* FeatureIntroView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B218B13024B00100784723 /* FeatureIntroView.swift */; }; + 55B219C13024C00100784722 /* BubbleHeroView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B219C13024C00100784721 /* BubbleHeroView.swift */; }; + 55B219C13024C00100784724 /* CreateBubbleSetupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B219C13024C00100784723 /* CreateBubbleSetupView.swift */; }; + 55B219C13024C00100784726 /* BubbleKnowledgeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B219C13024C00100784725 /* BubbleKnowledgeView.swift */; }; + 55B219C13024C00100784728 /* BubbleKnowledgeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B219C13024C00100784727 /* BubbleKnowledgeVC.swift */; }; 55B21D6E3023117900784774 /* 优设标题黑_猫啃网.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 55B21D6D3023117900784774 /* 优设标题黑_猫啃网.ttf */; }; 55BF752D2FFE53F70055DA57 /* LocationPermissionPopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BF752C2FFE53F70055DA57 /* LocationPermissionPopView.swift */; }; 55BF75352FFF91690055DA57 /* InteractionEmojiCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BF75342FFF91690055DA57 /* InteractionEmojiCell.swift */; }; + 55C219C13024C00100784731 /* SearchLocationHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C219C13024C00100784730 /* SearchLocationHeaderView.swift */; }; + 60BEE25E61F3DE24976A7A47 /* ManagedSettingsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FE44DF1C46BDA7B98BC7859 /* ManagedSettingsUI.framework */; }; + 68F0D48EB76039050533197C /* AppRestrictShared.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AB29D0618C4BE76F2CA5261 /* AppRestrictShared.swift */; }; + 6D90E8FFE4D597E888E6A224 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E326B06736FE04DD7A5E96D /* UIKit.framework */; }; + 77731F107613C247B7FE98C8 /* ManagedSettings.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE79029677394A46B143E75 /* ManagedSettings.framework */; }; + 7B9D095A034C9FA5E69F55BA /* AppRestrictShared.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AB29D0618C4BE76F2CA5261 /* AppRestrictShared.swift */; }; + 80F749310651808BF00F95CF /* DeviceActivityMonitorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D64156B4A0E806901AB223FA /* DeviceActivityMonitorExtension.swift */; }; + 830C70B1B53657BB020721DA /* AppRestrictManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AEEA6CEA0CEAAB42C22752B /* AppRestrictManager.swift */; }; + 89647BC98E0FF342511D42CF /* FamilyControls.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CD6B965A124276661A84C4C /* FamilyControls.framework */; }; A1B2C3D42FDABC8C009215C1 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = A1B2C3D52FDABC8C009215C1 /* PrivacyInfo.xcprivacy */; }; + A42DCB2A66E694B7CC50033B /* AppRestrictCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89519661B70A0ADEC2A76032 /* AppRestrictCell.swift */; }; + A55D8DE8A1F679EBF7B562D1 /* AppCatalogStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47922567FCD34DBE9186F8FD /* AppCatalogStore.swift */; }; + A97A15CB71FDCA432974A768 /* AppRestrictShieldSettingsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFBDE92B94E7004F6B642AD /* AppRestrictShieldSettingsVC.swift */; }; + B38B130801018F93E81D52C5 /* ManagedSettings.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE79029677394A46B143E75 /* ManagedSettings.framework */; }; + B52F13A261ED273A3A58183F /* SelectActivityVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BAE595D39202A2958737BD3 /* SelectActivityVC.swift */; }; + C15D41A1770F5B4A02E5FC59 /* AppRestrictShared.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AB29D0618C4BE76F2CA5261 /* AppRestrictShared.swift */; }; + C3C4ACC1AE3CAF5BA21328B7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 226CA98495C2884EBB1D1372 /* Foundation.framework */; }; + C6A99DEE361AB31477F88475 /* LockDistractView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC46E80B848E4012D192E4CE /* LockDistractView.swift */; }; + CC53DE2CA88E529129547A52 /* ShieldConfigurationExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 0C47E0012491DB1371FD5E53 /* ShieldConfigurationExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + D3C101B198090A9F4D93E44F /* FamilyControls.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CD6B965A124276661A84C4C /* FamilyControls.framework */; }; + D60B79067C80CD6AF50D63FE /* FamilyControls.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CD6B965A124276661A84C4C /* FamilyControls.framework */; }; D698E9C56D6F2C152772131D /* Pods_QuickLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 475D33CAFA1E1911EB1F8D9F /* Pods_QuickLocation.framework */; }; + D765496DAEBAE6A8C98DB843 /* ShieldConfigurationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08002267FC4390B20D3510B3 /* ShieldConfigurationExtension.swift */; }; + DB67C2EB2521042829A3DBA5 /* PairGuideStepsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E5F5DC8694A001BF0C47147 /* PairGuideStepsView.swift */; }; + DBFE43A8D2406BF4EF92C2EF /* DeviceActivityMonitorExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 98E91E51811235EAD0985421 /* DeviceActivityMonitorExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + E3D4129BDA33540BA4E1292E /* LockDistractVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9CFFB14BA2ECC259151BCDA /* LockDistractVC.swift */; }; + E6E5C711C9BD9F6C929BB062 /* DeviceActivity.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88CC9D32980864EAD9F72004 /* DeviceActivity.framework */; }; + E866CAAE7D4E74EB7AD608B9 /* ITunesSearchService.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE3D39F325FC7624C1D914D6 /* ITunesSearchService.swift */; }; + EA13C1E21EC94958AC9755A8 /* FamilyActivityPickerHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF9D223AB35744F92E0E3E77 /* FamilyActivityPickerHost.swift */; }; + F53E5BD11D671E5CED4E7408 /* ManagedSettingsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FE44DF1C46BDA7B98BC7859 /* ManagedSettingsUI.framework */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 1B096A922D2FECE87D42D1D4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3E4359002FC48D26003470A5 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E4257D157F2E24904E9B6630; + remoteInfo = ShieldConfigurationExtension; + }; + BCE404021C2F9BD8BCC26E94 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3E4359002FC48D26003470A5 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B626CA1007794E780B5B1CB3; + remoteInfo = DeviceActivityMonitorExtension; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 63D74ED0B1CEAFA8DAC0A6C0 /* Embed Foundation Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + DBFE43A8D2406BF4EF92C2EF /* DeviceActivityMonitorExtension.appex in Embed Foundation Extensions */, + CC53DE2CA88E529129547A52 /* ShieldConfigurationExtension.appex in Embed Foundation Extensions */, + ); + name = "Embed Foundation Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ + 08002267FC4390B20D3510B3 /* ShieldConfigurationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ShieldConfigurationExtension.swift; path = ShieldConfigurationExtension/ShieldConfigurationExtension.swift; sourceTree = ""; }; + 0C47E0012491DB1371FD5E53 /* ShieldConfigurationExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShieldConfigurationExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 1AB29D0618C4BE76F2CA5261 /* AppRestrictShared.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppRestrictShared.swift; path = AppRestrictShared/AppRestrictShared.swift; sourceTree = ""; }; + 1E326B06736FE04DD7A5E96D /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 226CA98495C2884EBB1D1372 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 2EE79029677394A46B143E75 /* ManagedSettings.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ManagedSettings.framework; path = System/Library/Frameworks/ManagedSettings.framework; sourceTree = SDKROOT; }; 305A74C62FCA8C7000227D26 /* MoyaProvider+Rx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MoyaProvider+Rx.swift"; sourceTree = ""; }; 305A74C72FCA8C7000227D26 /* Observable+Response.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Observable+Response.swift"; sourceTree = ""; }; 305A74C82FCA8C7000227D26 /* Single+Response.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Single+Response.swift"; sourceTree = ""; }; @@ -372,7 +443,6 @@ 305A74F62FCA8C7000227D26 /* UIApplicationExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIApplicationExtension.swift; sourceTree = ""; }; 305A74F72FCA8C7000227D26 /* UIButton+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+Extension.swift"; sourceTree = ""; }; 305A74F82FCA8C7000227D26 /* UIColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Extension.swift"; sourceTree = ""; }; - 55B217A33022F0B100784707 /* UIDevice+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+Extension.swift"; sourceTree = ""; }; 305A74F92FCA8C7000227D26 /* UIFont+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+Extension.swift"; sourceTree = ""; }; 305A74FA2FCA8C7000227D26 /* UIImage+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Extension.swift"; sourceTree = ""; }; 305A74FB2FCA8C7000227D26 /* UIImage+Resource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Resource.swift"; sourceTree = ""; }; @@ -518,11 +588,6 @@ 30A87A632FEE75520095E7C6 /* CreateBubbleTipsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateBubbleTipsView.swift; sourceTree = ""; }; 30A87A652FEE843E0095E7C6 /* CreateBubbleDoneView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateBubbleDoneView.swift; sourceTree = ""; }; 30A87A672FEE86560095E7C6 /* CreateBubblePopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateBubblePopView.swift; sourceTree = ""; }; - 55B219C13024C00100784721 /* BubbleHeroView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleHeroView.swift; sourceTree = ""; }; - 55B219C13024C00100784723 /* CreateBubbleSetupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateBubbleSetupView.swift; sourceTree = ""; }; - 55B219C13024C00100784725 /* BubbleKnowledgeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleKnowledgeView.swift; sourceTree = ""; }; - 55B219C13024C00100784727 /* BubbleKnowledgeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleKnowledgeVC.swift; sourceTree = ""; }; - 55C219C13024C00100784730 /* SearchLocationHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchLocationHeaderView.swift; sourceTree = ""; }; 30A87A6A2FEF5B950095E7C6 /* SearchLocationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchLocationView.swift; sourceTree = ""; }; 30A87A6C2FEF5BA10095E7C6 /* SearchLocationVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchLocationVC.swift; sourceTree = ""; }; 30A87A6E2FEF7BE40095E7C6 /* SearchLocationResultVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchLocationResultVC.swift; sourceTree = ""; }; @@ -571,8 +636,6 @@ 30D74AAA2FE8C7700050EB2C /* GPSSignalHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GPSSignalHelper.swift; sourceTree = ""; }; 30D74AAD2FEA13E00050EB2C /* ScheduleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScheduleView.swift; sourceTree = ""; }; 30D74AAF2FEA13ED0050EB2C /* ScheduleVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScheduleVC.swift; sourceTree = ""; }; - 55B218B13024B00100784721 /* FeatureIntroVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureIntroVC.swift; sourceTree = ""; }; - 55B218B13024B00100784723 /* FeatureIntroView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureIntroView.swift; sourceTree = ""; }; 30D74AB12FEA1D5D0050EB2C /* ScheduleViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScheduleViewModel.swift; sourceTree = ""; }; 30D74AB32FEA25B90050EB2C /* ViewedModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewedModel.swift; sourceTree = ""; }; 30D74AB52FEA34FF0050EB2C /* ItineraryAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItineraryAPI.swift; sourceTree = ""; }; @@ -634,13 +697,17 @@ 30EFF3E42FDAA93300EB35D4 /* PrivacyPolicyVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyPolicyVC.swift; sourceTree = ""; }; 30EFF3E62FDAA93D00EB35D4 /* PrivacyPolicyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyPolicyView.swift; sourceTree = ""; }; 30EFF3E92FCA8C7000227D26 /* AuthenticationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AuthenticationServices.framework; path = System/Library/Frameworks/AuthenticationServices.framework; sourceTree = SDKROOT; }; + 3C79865C3ED165AFDD091C29 /* app_catalog.json */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.json; name = app_catalog.json; path = AppRestrict/app_catalog.json; sourceTree = ""; }; 3E4359082FC48D26003470A5 /* QuickLocation.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QuickLocation.app; sourceTree = BUILT_PRODUCTS_DIR; }; 475D33CAFA1E1911EB1F8D9F /* Pods_QuickLocation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_QuickLocation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 47922567FCD34DBE9186F8FD /* AppCatalogStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppCatalogStore.swift; path = AppRestrict/AppCatalogStore.swift; sourceTree = ""; }; + 4CD6B965A124276661A84C4C /* FamilyControls.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FamilyControls.framework; path = System/Library/Frameworks/FamilyControls.framework; sourceTree = SDKROOT; }; 557E8D5230187A5C0032AB51 /* BaseNavigationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseNavigationView.swift; sourceTree = ""; }; 55B2179030217D6600784774 /* HomeView2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView2.swift; sourceTree = ""; }; 55B2179230218CE100784774 /* GroupMemberView2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupMemberView2.swift; sourceTree = ""; }; 55B217943022DD6B00784774 /* 荆南波波黑-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "荆南波波黑-Bold.ttf"; sourceTree = ""; }; 55B217A03022F0A000784701 /* FontManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FontManager.swift; sourceTree = ""; }; + 55B217A33022F0B100784707 /* UIDevice+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+Extension.swift"; sourceTree = ""; }; 55B217B03022F0A000784710 /* GroupItineraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupItineraryView.swift; sourceTree = ""; }; 55B217C03022F0A000784720 /* MinePhotoWallView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MinePhotoWallView.swift; sourceTree = ""; }; 55B217C23022F0A000784722 /* MemberPhoneReportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemberPhoneReportView.swift; sourceTree = ""; }; @@ -658,32 +725,62 @@ 55B218A13024A00100784707 /* CancelAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CancelAccountView.swift; sourceTree = ""; }; 55B218A13024A00100784709 /* MemberInfoVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemberInfoVC.swift; sourceTree = ""; }; 55B218A13024A0010078470B /* MemberInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemberInfoView.swift; sourceTree = ""; }; + 55B218B13024B00100784721 /* FeatureIntroVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureIntroVC.swift; sourceTree = ""; }; + 55B218B13024B00100784723 /* FeatureIntroView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureIntroView.swift; sourceTree = ""; }; + 55B219C13024C00100784721 /* BubbleHeroView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleHeroView.swift; sourceTree = ""; }; + 55B219C13024C00100784723 /* CreateBubbleSetupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateBubbleSetupView.swift; sourceTree = ""; }; + 55B219C13024C00100784725 /* BubbleKnowledgeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleKnowledgeView.swift; sourceTree = ""; }; + 55B219C13024C00100784727 /* BubbleKnowledgeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleKnowledgeVC.swift; sourceTree = ""; }; 55B21D6D3023117900784774 /* 优设标题黑_猫啃网.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "优设标题黑_猫啃网.ttf"; sourceTree = ""; }; 55BF752C2FFE53F70055DA57 /* LocationPermissionPopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationPermissionPopView.swift; sourceTree = ""; }; 55BF75342FFF91690055DA57 /* InteractionEmojiCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InteractionEmojiCell.swift; sourceTree = ""; }; + 55C219C13024C00100784730 /* SearchLocationHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchLocationHeaderView.swift; sourceTree = ""; }; + 5E5F5DC8694A001BF0C47147 /* PairGuideStepsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PairGuideStepsView.swift; path = AppRestrict/PairGuideStepsView.swift; sourceTree = ""; }; + 6BAE595D39202A2958737BD3 /* SelectActivityVC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SelectActivityVC.swift; path = AppRestrict/SelectActivityVC.swift; sourceTree = ""; }; + 787F87DD1CEBED1A4E1E9FC7 /* AppRestrictView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppRestrictView.swift; path = AppRestrict/AppRestrictView.swift; sourceTree = ""; }; + 7AEEA6CEA0CEAAB42C22752B /* AppRestrictManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppRestrictManager.swift; path = AppRestrict/AppRestrictManager.swift; sourceTree = ""; }; + 7FE44DF1C46BDA7B98BC7859 /* ManagedSettingsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ManagedSettingsUI.framework; path = System/Library/Frameworks/ManagedSettingsUI.framework; sourceTree = SDKROOT; }; + 88CC9D32980864EAD9F72004 /* DeviceActivity.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DeviceActivity.framework; path = System/Library/Frameworks/DeviceActivity.framework; sourceTree = SDKROOT; }; + 89519661B70A0ADEC2A76032 /* AppRestrictCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppRestrictCell.swift; path = AppRestrict/AppRestrictCell.swift; sourceTree = ""; }; + 98E91E51811235EAD0985421 /* DeviceActivityMonitorExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = DeviceActivityMonitorExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; A1B2C3D52FDABC8C009215C1 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; + AC46E80B848E4012D192E4CE /* LockDistractView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LockDistractView.swift; sourceTree = ""; }; + BE3D39F325FC7624C1D914D6 /* ITunesSearchService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ITunesSearchService.swift; path = AppRestrict/ITunesSearchService.swift; sourceTree = ""; }; + BFFBDE92B94E7004F6B642AD /* AppRestrictShieldSettingsVC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppRestrictShieldSettingsVC.swift; path = AppRestrict/AppRestrictShieldSettingsVC.swift; sourceTree = ""; }; + D0112B7865829D5B6A4A0BD0 /* AppRestrictVC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppRestrictVC.swift; path = AppRestrict/AppRestrictVC.swift; sourceTree = ""; }; + D64156B4A0E806901AB223FA /* DeviceActivityMonitorExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeviceActivityMonitorExtension.swift; path = DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift; sourceTree = ""; }; DA16D49AA46D4F6838340B55 /* Pods-QuickLocation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QuickLocation.debug.xcconfig"; path = "Target Support Files/Pods-QuickLocation/Pods-QuickLocation.debug.xcconfig"; sourceTree = ""; }; E483B9929C03809ADEDE8341 /* Pods-QuickLocation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QuickLocation.release.xcconfig"; path = "Target Support Files/Pods-QuickLocation/Pods-QuickLocation.release.xcconfig"; sourceTree = ""; }; + EF9D223AB35744F92E0E3E77 /* FamilyActivityPickerHost.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FamilyActivityPickerHost.swift; path = AppRestrict/FamilyActivityPickerHost.swift; sourceTree = ""; }; + F9CFFB14BA2ECC259151BCDA /* LockDistractVC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LockDistractVC.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ 30CCDF8E2FE3E63B00F5214A /* sound */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + ); path = sound; sourceTree = ""; }; 30CCDF902FE3E63B00F5214A /* video */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + ); path = video; sourceTree = ""; }; 30CCE01E2FE3E64700F5214A /* lotties */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + ); path = lotties; sourceTree = ""; }; 30D87CEF2FDFF52100E958FD /* TTGTagCollectionView */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + ); path = TTGTagCollectionView; sourceTree = ""; }; @@ -696,12 +793,63 @@ files = ( 30EFF3E82FCA8C7000227D26 /* AuthenticationServices.framework in Frameworks */, D698E9C56D6F2C152772131D /* Pods_QuickLocation.framework in Frameworks */, + 89647BC98E0FF342511D42CF /* FamilyControls.framework in Frameworks */, + 77731F107613C247B7FE98C8 /* ManagedSettings.framework in Frameworks */, + E6E5C711C9BD9F6C929BB062 /* DeviceActivity.framework in Frameworks */, + 60BEE25E61F3DE24976A7A47 /* ManagedSettingsUI.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 57D97F1D073CB957F5B3FC99 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C3C4ACC1AE3CAF5BA21328B7 /* Foundation.framework in Frameworks */, + 071EBEFAB7A70D8554B38024 /* DeviceActivity.framework in Frameworks */, + D60B79067C80CD6AF50D63FE /* FamilyControls.framework in Frameworks */, + 091AC874363B91A91D717758 /* ManagedSettings.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6314CDE3DFF338A21DC2A612 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 04532656C70B8C5AD6A8161E /* Foundation.framework in Frameworks */, + B38B130801018F93E81D52C5 /* ManagedSettings.framework in Frameworks */, + F53E5BD11D671E5CED4E7408 /* ManagedSettingsUI.framework in Frameworks */, + D3C101B198090A9F4D93E44F /* FamilyControls.framework in Frameworks */, + 6D90E8FFE4D597E888E6A224 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 2234314E8DD57630628CC5C3 /* ShieldConfigurationExtension */ = { + isa = PBXGroup; + children = ( + 08002267FC4390B20D3510B3 /* ShieldConfigurationExtension.swift */, + ); + name = ShieldConfigurationExtension; + sourceTree = ""; + }; + 2509CBAFBD63A140B359BD7F /* DeviceActivityMonitorExtension */ = { + isa = PBXGroup; + children = ( + D64156B4A0E806901AB223FA /* DeviceActivityMonitorExtension.swift */, + ); + name = DeviceActivityMonitorExtension; + sourceTree = ""; + }; + 2F518AB6587CC227CC515D8C /* AppRestrict */ = { + isa = PBXGroup; + children = ( + 7AEEA6CEA0CEAAB42C22752B /* AppRestrictManager.swift */, + ); + name = AppRestrict; + sourceTree = ""; + }; 305A74C92FCA8C7000227D26 /* RxMoya */ = { isa = PBXGroup; children = ( @@ -981,6 +1129,7 @@ 305A752C2FCA8C7000227D26 /* URL */, 30D87CD52FDF9F1900E958FD /* MQTT */, 30C6666A2FFB7C3000E62B25 /* IAPManager */, + 2F518AB6587CC227CC515D8C /* AppRestrict */, ); path = Manager; sourceTree = ""; @@ -1156,6 +1305,8 @@ 30ACD54A2FF6332200174861 /* PopupWindow */, 30EFF3AD2FD7FF1400EB35D4 /* TextInput */, 30C6679D2FFB7FEF00E62B25 /* Share */, + F49062649CA8E5F9FA2F22A5 /* AppRestrict */, + B79BE06D49443FE82A811D5C /* LockDistract */, ); path = Section; sourceTree = ""; @@ -1564,15 +1715,6 @@ path = SOS; sourceTree = ""; }; - 55B218B13024B00100784720 /* Explore */ = { - isa = PBXGroup; - children = ( - 55B218B13024B00100784721 /* FeatureIntroVC.swift */, - 55B218B13024B00100784723 /* FeatureIntroView.swift */, - ); - path = Explore; - sourceTree = ""; - }; 30D74AAC2FEA13BD0050EB2C /* Schedule */ = { isa = PBXGroup; children = ( @@ -1728,6 +1870,9 @@ 3E4359092FC48D26003470A5 /* Products */, B07D45692FCECE07570D9B73 /* Pods */, 47CD8471BE2146A2656CF27E /* Frameworks */, + DA2257EC3F3167F4A6AFE759 /* AppRestrictShared */, + 2509CBAFBD63A140B359BD7F /* DeviceActivityMonitorExtension */, + 2234314E8DD57630628CC5C3 /* ShieldConfigurationExtension */, ); sourceTree = ""; }; @@ -1735,6 +1880,8 @@ isa = PBXGroup; children = ( 3E4359082FC48D26003470A5 /* QuickLocation.app */, + 98E91E51811235EAD0985421 /* DeviceActivityMonitorExtension.appex */, + 0C47E0012491DB1371FD5E53 /* ShieldConfigurationExtension.appex */, ); name = Products; sourceTree = ""; @@ -1744,6 +1891,12 @@ children = ( 30EFF3E92FCA8C7000227D26 /* AuthenticationServices.framework */, 475D33CAFA1E1911EB1F8D9F /* Pods_QuickLocation.framework */, + 4CD6B965A124276661A84C4C /* FamilyControls.framework */, + 2EE79029677394A46B143E75 /* ManagedSettings.framework */, + 88CC9D32980864EAD9F72004 /* DeviceActivity.framework */, + 7FE44DF1C46BDA7B98BC7859 /* ManagedSettingsUI.framework */, + 74B9CD2ABDBC4C8CE3107CDE /* iOS */, + 1E326B06736FE04DD7A5E96D /* UIKit.framework */, ); name = Frameworks; sourceTree = ""; @@ -1774,6 +1927,16 @@ path = TodayTrackDetail; sourceTree = ""; }; + 55B217DE302301000078473D /* PhoneReportDetail */ = { + isa = PBXGroup; + children = ( + 55B217D73023010000784736 /* PhoneReportDetailVC.swift */, + 55B217D93023010000784738 /* PhoneReportDetailView.swift */, + 55B217DB302301000078473A /* PhoneReportDetailViewModel.swift */, + ); + path = PhoneReportDetail; + sourceTree = ""; + }; 55B218A13024A00100784710 /* About */ = { isa = PBXGroup; children = ( @@ -1801,14 +1964,21 @@ path = MemberInfo; sourceTree = ""; }; - 55B217DE302301000078473D /* PhoneReportDetail */ = { + 55B218B13024B00100784720 /* Explore */ = { isa = PBXGroup; children = ( - 55B217D73023010000784736 /* PhoneReportDetailVC.swift */, - 55B217D93023010000784738 /* PhoneReportDetailView.swift */, - 55B217DB302301000078473A /* PhoneReportDetailViewModel.swift */, + 55B218B13024B00100784721 /* FeatureIntroVC.swift */, + 55B218B13024B00100784723 /* FeatureIntroView.swift */, ); - path = PhoneReportDetail; + path = Explore; + sourceTree = ""; + }; + 74B9CD2ABDBC4C8CE3107CDE /* iOS */ = { + isa = PBXGroup; + children = ( + 226CA98495C2884EBB1D1372 /* Foundation.framework */, + ); + name = iOS; sourceTree = ""; }; B07D45692FCECE07570D9B73 /* Pods */ = { @@ -1820,6 +1990,40 @@ path = Pods; sourceTree = ""; }; + B79BE06D49443FE82A811D5C /* LockDistract */ = { + isa = PBXGroup; + children = ( + F9CFFB14BA2ECC259151BCDA /* LockDistractVC.swift */, + AC46E80B848E4012D192E4CE /* LockDistractView.swift */, + ); + path = LockDistract; + sourceTree = ""; + }; + DA2257EC3F3167F4A6AFE759 /* AppRestrictShared */ = { + isa = PBXGroup; + children = ( + 1AB29D0618C4BE76F2CA5261 /* AppRestrictShared.swift */, + ); + name = AppRestrictShared; + sourceTree = ""; + }; + F49062649CA8E5F9FA2F22A5 /* AppRestrict */ = { + isa = PBXGroup; + children = ( + 47922567FCD34DBE9186F8FD /* AppCatalogStore.swift */, + 89519661B70A0ADEC2A76032 /* AppRestrictCell.swift */, + D0112B7865829D5B6A4A0BD0 /* AppRestrictVC.swift */, + 787F87DD1CEBED1A4E1E9FC7 /* AppRestrictView.swift */, + BFFBDE92B94E7004F6B642AD /* AppRestrictShieldSettingsVC.swift */, + EF9D223AB35744F92E0E3E77 /* FamilyActivityPickerHost.swift */, + BE3D39F325FC7624C1D914D6 /* ITunesSearchService.swift */, + 6BAE595D39202A2958737BD3 /* SelectActivityVC.swift */, + 3C79865C3ED165AFDD091C29 /* app_catalog.json */, + 5E5F5DC8694A001BF0C47147 /* PairGuideStepsView.swift */, + ); + name = AppRestrict; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -1833,10 +2037,13 @@ 3E4359062FC48D26003470A5 /* Resources */, 22E76BAEDC74B6177770F922 /* [CP] Embed Pods Frameworks */, 84E518A2C7E1AE699B07AC0D /* [CP] Copy Pods Resources */, + 63D74ED0B1CEAFA8DAC0A6C0 /* Embed Foundation Extensions */, ); buildRules = ( ); dependencies = ( + 0950A334CDF61EB8C1C94506 /* PBXTargetDependency */, + DCCA06707CFDC3C0D07BD8B0 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( 30CCDF8E2FE3E63B00F5214A /* sound */, @@ -1849,6 +2056,40 @@ productReference = 3E4359082FC48D26003470A5 /* QuickLocation.app */; productType = "com.apple.product-type.application"; }; + B626CA1007794E780B5B1CB3 /* DeviceActivityMonitorExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1A6BE372491582A933CD3ECE /* Build configuration list for PBXNativeTarget "DeviceActivityMonitorExtension" */; + buildPhases = ( + 933B6388A2F481EE1DF7A99C /* Sources */, + 57D97F1D073CB957F5B3FC99 /* Frameworks */, + 7FA03AF172854DD407AFED91 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DeviceActivityMonitorExtension; + productName = DeviceActivityMonitorExtension; + productReference = 98E91E51811235EAD0985421 /* DeviceActivityMonitorExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; + E4257D157F2E24904E9B6630 /* ShieldConfigurationExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = BAA60EF75453DD3B5A4775AF /* Build configuration list for PBXNativeTarget "ShieldConfigurationExtension" */; + buildPhases = ( + EF5DDEE45DD2FBD2EA2AAB8D /* Sources */, + 6314CDE3DFF338A21DC2A612 /* Frameworks */, + 6E86F27A156DD5A139D94E1B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ShieldConfigurationExtension; + productName = ShieldConfigurationExtension; + productReference = 0C47E0012491DB1371FD5E53 /* ShieldConfigurationExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -1879,6 +2120,8 @@ projectRoot = ""; targets = ( 3E4359072FC48D26003470A5 /* QuickLocation */, + B626CA1007794E780B5B1CB3 /* DeviceActivityMonitorExtension */, + E4257D157F2E24904E9B6630 /* ShieldConfigurationExtension */, ); }; /* End PBXProject section */ @@ -1896,6 +2139,21 @@ 55B217953022DD6B00784774 /* 荆南波波黑-Bold.ttf in Resources */, 55B21D6E3023117900784774 /* 优设标题黑_猫啃网.ttf in Resources */, 305A77FC2FCA8C7000227D26 /* Main.storyboard in Resources */, + 4392B1D9C125D873FCFCDDC9 /* app_catalog.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6E86F27A156DD5A139D94E1B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7FA03AF172854DD407AFED91 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2283,11 +2541,57 @@ 305A771B2FCA8C7000227D26 /* ReusableView.swift in Sources */, 305A771C2FCA8C7000227D26 /* AppDelegate.swift in Sources */, 305A771D2FCA8C7000227D26 /* ViewController.swift in Sources */, + C15D41A1770F5B4A02E5FC59 /* AppRestrictShared.swift in Sources */, + 830C70B1B53657BB020721DA /* AppRestrictManager.swift in Sources */, + A55D8DE8A1F679EBF7B562D1 /* AppCatalogStore.swift in Sources */, + A42DCB2A66E694B7CC50033B /* AppRestrictCell.swift in Sources */, + 4AF6E5954D73E21F31F7A16B /* AppRestrictVC.swift in Sources */, + 488FF21773B8E5021D8662B5 /* AppRestrictView.swift in Sources */, + A97A15CB71FDCA432974A768 /* AppRestrictShieldSettingsVC.swift in Sources */, + EA13C1E21EC94958AC9755A8 /* FamilyActivityPickerHost.swift in Sources */, + B52F13A261ED273A3A58183F /* SelectActivityVC.swift in Sources */, + C6A99DEE361AB31477F88475 /* LockDistractView.swift in Sources */, + E3D4129BDA33540BA4E1292E /* LockDistractVC.swift in Sources */, + E866CAAE7D4E74EB7AD608B9 /* ITunesSearchService.swift in Sources */, + DB67C2EB2521042829A3DBA5 /* PairGuideStepsView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 933B6388A2F481EE1DF7A99C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 80F749310651808BF00F95CF /* DeviceActivityMonitorExtension.swift in Sources */, + 68F0D48EB76039050533197C /* AppRestrictShared.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EF5DDEE45DD2FBD2EA2AAB8D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D765496DAEBAE6A8C98DB843 /* ShieldConfigurationExtension.swift in Sources */, + 7B9D095A034C9FA5E69F55BA /* AppRestrictShared.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 0950A334CDF61EB8C1C94506 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DeviceActivityMonitorExtension; + target = B626CA1007794E780B5B1CB3 /* DeviceActivityMonitorExtension */; + targetProxy = BCE404021C2F9BD8BCC26E94 /* PBXContainerItemProxy */; + }; + DCCA06707CFDC3C0D07BD8B0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ShieldConfigurationExtension; + target = E4257D157F2E24904E9B6630 /* ShieldConfigurationExtension */; + targetProxy = 1B096A922D2FECE87D42D1D4 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ 305A76822FCA8C7000227D26 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; @@ -2310,6 +2614,61 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 15B6023456261CCD0E3A673E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_ENTITLEMENTS = DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = LRDLWZ2Y83; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = DeviceActivityMonitorExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = cn.zuomeng.jisuloca.DeviceActivityMonitor; + PRODUCT_NAME = DeviceActivityMonitorExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_DEFAULT_ACTOR_ISOLATION = nonisolated; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3A68FBB9A55555685B490D5C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_ENTITLEMENTS = DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = LRDLWZ2Y83; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = DeviceActivityMonitorExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = cn.zuomeng.jisuloca.DeviceActivityMonitor; + PRODUCT_NAME = DeviceActivityMonitorExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_DEFAULT_ACTOR_ISOLATION = nonisolated; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; 3E43591C2FC48D2B003470A5 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = DA16D49AA46D4F6838340B55 /* Pods-QuickLocation.debug.xcconfig */; @@ -2339,7 +2698,7 @@ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; - IPHONEOS_DEPLOYMENT_TARGET = 15; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2393,7 +2752,7 @@ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; - IPHONEOS_DEPLOYMENT_TARGET = 15; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2471,7 +2830,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; + IPHONEOS_DEPLOYMENT_TARGET = 16.6; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -2529,7 +2888,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; + IPHONEOS_DEPLOYMENT_TARGET = 16.6; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -2539,9 +2898,73 @@ }; name = Release; }; + A0AD067561B0A604B5DF5049 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_ENTITLEMENTS = ShieldConfigurationExtension/ShieldConfigurationExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = LRDLWZ2Y83; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = ShieldConfigurationExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = cn.zuomeng.jisuloca.ShieldConfiguration; + PRODUCT_NAME = ShieldConfigurationExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_DEFAULT_ACTOR_ISOLATION = nonisolated; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + B66BC4F86D908B8200A8DC8E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_ENTITLEMENTS = ShieldConfigurationExtension/ShieldConfigurationExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = LRDLWZ2Y83; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = ShieldConfigurationExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = cn.zuomeng.jisuloca.ShieldConfiguration; + PRODUCT_NAME = ShieldConfigurationExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_DEFAULT_ACTOR_ISOLATION = nonisolated; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 1A6BE372491582A933CD3ECE /* Build configuration list for PBXNativeTarget "DeviceActivityMonitorExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 15B6023456261CCD0E3A673E /* Release */, + 3A68FBB9A55555685B490D5C /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 3E4359032FC48D26003470A5 /* Build configuration list for PBXProject "QuickLocation" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2560,6 +2983,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + BAA60EF75453DD3B5A4775AF /* Build configuration list for PBXNativeTarget "ShieldConfigurationExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B66BC4F86D908B8200A8DC8E /* Release */, + A0AD067561B0A604B5DF5049 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 3E4359002FC48D26003470A5 /* Project object */; diff --git a/QuickLocation/Assets.xcassets/AppRestrict/Contents.json b/QuickLocation/Assets.xcassets/AppRestrict/Contents.json new file mode 100644 index 00000000..15e0a992 --- /dev/null +++ b/QuickLocation/Assets.xcassets/AppRestrict/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { "author" : "xcode", "version" : 1 }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_action_delete.imageset/Contents.json b/QuickLocation/Assets.xcassets/AppRestrict/pair_action_delete.imageset/Contents.json new file mode 100644 index 00000000..c5d68312 --- /dev/null +++ b/QuickLocation/Assets.xcassets/AppRestrict/pair_action_delete.imageset/Contents.json @@ -0,0 +1,8 @@ +{ + "images" : [ + { "idiom" : "universal", "scale" : "1x" }, + { "filename" : "pair_action_delete@2x.png", "idiom" : "universal", "scale" : "2x" }, + { "filename" : "pair_action_delete@3x.png", "idiom" : "universal", "scale" : "3x" } + ], + "info" : { "author" : "xcode", "version" : 1 } +} diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_action_delete.imageset/pair_action_delete@2x.png b/QuickLocation/Assets.xcassets/AppRestrict/pair_action_delete.imageset/pair_action_delete@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da5d4795759b3fd5a08a2545f57152e05c7d183 GIT binary patch literal 867 zcmX|*YXv6 zfRW|8+;VmX7Z)HB!QCBp?Segfz|#{*B=GhIUtjR|2NVSw4HyhyG9fAoqN9P$hWL0$ zOoZfQNJ)XzR7g(;4hJ$a;LaV$&4s)?C@26vA4*E#*)tFbpsEV0t3f1!+FEF8f|eF& zYlDsskjbE{3%a{Op#Y^41_oeg2-IpA83COR#>QY`0wyQ1Kd1Q}*o)1-@$ymnF=Qp) z)?p(`rbS-5QCjt~Uh<~BORgH5o--}}39R%;LlCnC8aXhWDw7mmjd;7;rqd$lVc6|c zA-C)rwdNPKBN0jCCeFH$$b5~!nP>E$dZ01J7M~tDy*`M)H(5B5$%W|CuhD$x=X9ZkGMh+`i$f1+&5u8?Sf3{Bu?Sb#u($RGxt2?ZYi;p@{-T~d z#!PPF~`|?Lqrn3A_!hnRI=Y%10xS<61KgiXZm7jn2v`t#6s)vx7SZ_ld2pud`RF hs*3&^Lr&h-Yqv+&lY6f#xgW7@L1@8rvIsqs@ei|F=+poJ literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_action_delete.imageset/pair_action_delete@3x.png b/QuickLocation/Assets.xcassets/AppRestrict/pair_action_delete.imageset/pair_action_delete@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3e952bd2f625d258720bb4c7abf61ee836a15f7b GIT binary patch literal 1681 zcmYk6do&biAIHaKTxvCWy=14-%57$ZWK1|UArphLY1o8~ww7`))+Mi8%I&y}%4vsk zi&A7!$dKMok$aZOOWi-ID}f;Y^|!7ZmaN1-*NYc;{~puRn3=)n&zPE8EWeOjwC4LIITu8V$zAFfoCtDa_2Ubt}xxVPOF}9hR10Fkoc`YiropV8;&Z+zBQVyLQ3O z4!d{5!2v85_UwV9Bb=PTX2aPTuC8!%gS$Hp8~}#{Pfr{?2rn;qd&9>EzP>no82*i_@nOACH6toH>K!WTd1ZH5KXU$jCre z7P7OEn+q-%d3oURP*{kfA`};+qy(jOC(VtgDE6U!FM-2BT0pT4Yo+2f!`y6-zckds$XQYNj{ zCU4N8TF`A+d-rpG42(@oOTTb2zqqpMCci->de+xJG(7s|-SnqF<`AgQsK;vaAJ=9h&Q|CBe z&CYRarz8e(xOrNesy%j-L=|t}whM1c{v6`?a>IuFLV~rF?q_vn^(q+~IT|{1?cD9l z?Zaa-AFbgXy;FYHn2`3H#Fp5Wp?XYFc@J+@>1NG>GI^dbB6b^xVr`bwsixwR%%oDc zBqnP;n`$VX8sE%&pzEE=bnYCn9kjhdtm3lLUbj{iE+Vv^giMM#Qn zZjAoEU7UYyFgl5q-y3ByN3B-g=z{5^tLOfE|5*z4MDCLVgt3>9!_1HG$kV=q0HUUDW#D@@r@j|&EU zCjV>|pJy@%Ldl2t8Bh7}5epq&i-{mA>}Vu2G;StRaK6e#uD?Fuks~j_=S8Y_;il|K z^<2x(7PjAQ>g@lWtgEjUl)Js~x`bvF8gVFnZC(%oZXuX&5wb>GQ_|CZ!?SzR}s zI2TfMT|rC>6=lrUD>T;I{(FW?B2N$%%=mU&KiaP+TA1;@xG|*$O>L<~>tl8`Sk2A) zUsMax3=Wnik%cy+O3%Y~d`VLc(a7u<4ihGSiZKO6<6gSv(gxp&gqcO{Qb+A>#`l5i z-!W*8-d?2Qll<1WV;8RqZmsjR9(*!Ubn&X%t$lSbQWBc7p4T#oIVNJM{=(8B)is^l zn8dTn!3J>+(@*N#(|pIURkaAIrl(ZYCI*nV;I8X%}l`eOaH_w3E_sGsd!xdAVqDAZblZ z)Glik!*lOzE~xyn)I60_cQ2~yD*@kMq4(A|Cz?mE8!5(*86Hhma+x<;s-v@!s+UHPX@0a|4 D@ougd literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_action_link.imageset/Contents.json b/QuickLocation/Assets.xcassets/AppRestrict/pair_action_link.imageset/Contents.json new file mode 100644 index 00000000..5aaace1b --- /dev/null +++ b/QuickLocation/Assets.xcassets/AppRestrict/pair_action_link.imageset/Contents.json @@ -0,0 +1,8 @@ +{ + "images" : [ + { "idiom" : "universal", "scale" : "1x" }, + { "filename" : "pair_action_link@2x.png", "idiom" : "universal", "scale" : "2x" }, + { "filename" : "pair_action_link@3x.png", "idiom" : "universal", "scale" : "3x" } + ], + "info" : { "author" : "xcode", "version" : 1 } +} diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_action_link.imageset/pair_action_link@2x.png b/QuickLocation/Assets.xcassets/AppRestrict/pair_action_link.imageset/pair_action_link@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5314143bbafb09baeed021a882e2101c6d9183c8 GIT binary patch literal 1066 zcmW-fc`)2}7{-5?5G$-JYy}ZQ+QCSNlokoHZe^Qg9GR^kafCP%N}8!^BD*<=yGMDr^P3=`2IIk{R3T7(dfhj<9BA+)@OK5ZlZfl$0%w7QR0574JQAqewI z7L4n_qz+8$;Zg%!ZUmbqaA*eS7WknR+}gmi9Vi`etrM)`O{M^Am-{66_uB>fpqVm?n?!Ft^y!rUZ{{ai=8zj#1dwU9w|@jUcO^4DM%()!<1jFWDsOvB<}%QE4Hxfkx{1 zo|8*_#=>IZvw=C4Z2zcxHI$MI$)((sR^0bRj3Z-0eymnfiD8RJZV?x_*wSh=^F%z7 z9XeA_kkVzfVlv`H;!e&90>#Iqli#DHkGR*qTw1vc{vXT zd2FK>VfuXfU9$oxRvGONxOShr0R5w0e*a&sCs%b(KAz-)r1Q-iF6ty$jbFe^P6w|5ulw?lgyc7 z|5;xeWG%xC?MNm5YxvsFJV<vl~ll36|%~zH#}rgI4@g>-tp%*$qR3Z(lw5r^#(N z30rx5s?&iUM^loMdwR2~m>OpguSPx_@Yh*}?`p)0iRhD*2wN=MUbA39NySfkab%i3 z6QE8bq~PYvcfC0)v&rrv_eWAmsg#+wj_*}J1%mmeK`TB22p?DgVeP<@tr9ofZ>~E%YeG&6{4_32Od|QVud*oeN?zK_HP-Nt; zSF=pU7{=S(iH6CiYJYQHrVg1-RF2_l6K%>e`ftu|j@j0>xRu@b5d7gnnPi-DdXRfQ hk^hT#yHd3bh%HHuoSVZ_7X+`2*;_jkORcUY{0|9{SM~q^ literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_action_link.imageset/pair_action_link@3x.png b/QuickLocation/Assets.xcassets/AppRestrict/pair_action_link.imageset/pair_action_link@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8e88df538bd64fc8e9e8b70693b298520e66d3 GIT binary patch literal 2526 zcmV<42_g20P)3$g6dnXYi2^DbS;RdmiHQg?ff%Dvf|?KkjZ4(%4@8X7m}pe|0YyzfBZ)>Z#0AtC z8&H)&T8dLM=8lYa>rcn99q zt3c<;_VJGfZWhd<9GliJw#N*;`EeY&T5t3MfU81nn^^xs_~q4&r-gU1juf5K9o5* zOkx3S`QoBCuH;TuwiGb}jjJoZl3ovTM`J92Nm8v5m^Zq0aoGdeq#$#EP4e98u$>(8 zz_puxz$PgchVJospmyJ8CS-}g-`8DH56tdc6|jn%h0_TlPcFw2Okk|yV*NlDra23z zob>}{j!FA;QxOm&5*hB`$&-Boa2U>iNOl{N{q!z8_Kx#VK%x8l{ z2UrWOsw4WTQqaN*LBCZAT2U)#Um*Pds%>ioe7lXVBmAB&gi%#1(HA9x9^ESFwp>9s z{UhkQEI|WT3mTLy=tlnc2>$t)JV9TT2|D_p+UPp4>`rXVa67;itZja*B)WaAAm57E z+psl)zAPmwZ`K$%>Ei^JU1kvR7mm0U;06`}*{6w~-sKEnYkOk5pjEZu{-jzUoTSrf zMwFhWYtmd^{yiE7$n>!+5#x2VD{*YD;Xvf+%>IaHXGqL$Vg z&bV|H(93Fwu3lvZXY_{nRwBN?+fQ_JPNXl0m6!GjI@K!8rfvkbSHuQ#h}|fkmz<0M z-H$<;x+iRPB+@5V@W|W<*bphps-to$@SOGSaLMV9OZ$v=Ri)j(4lIQFk$H`zF)FgY$BSL0)6G?DR{ULm@Es zY4sjSC}&8dmGB_)*^Mr{pzfX6DMs1 zRjZnJZ#ru>87J+OCq96&Ppf1~5g9c97}3xi^UC_WCjJS-gqzGZ^RHF0y?>y=Y`mYX znXc^dL>n;np=>M_e8orXp!T26FSBP>)8<^h z|H94;M2)q-*YYW*mAUntc`Orm2$}P5@ad(#(iPwAVmrtni=2WCt7JAi9K+X`L57Dn z?^u|Gilv`fMds&c70Ck{82j|vYNCD{)WBhZ$T9Yj zACQWHkPb9l-uDlidErTMY*WMq;VN7C<cXKgV_(o4YwFdMV@P*cUeAwAY$&GyWS@=>H0aRj z1$NKzu641w*Vb^>;uGPhjMYl{wp>l#hvu-zcEO=&j4NojKPoRkpO@G{#+Ki5)>&i) zRtoI&!P$0@7oSjg2uf^4|H^?wVs) z{Bg>;7n(4sB%3CEYDZ*}a57>cjgY^A2=_e<3V7pqcE!jllRd*X z4+xrD?3@KuRNInqC0j{$0u8c?jNyHdK#AsOAUeLT-kcBvZ_#B*>5&8)6)9mb=|KJ% z%`8M&qM3T#d5v?Jc12FKHB;1OE83hArXtBPyUxry;=gC{gx`?iCi@d&fv9I!3}f z7)9a1DBe*&ijMm64zE&pc$L8lS?C?dCh<5n?|?zY2Ml%`nW-{qJq=EpN&bTUuWnX^XDA=qgm4SlQ#QLhURg o%DdcGE#TgD)hPkJhhM<{KV$$Z=fb_-8~^|S07*qoM6N<$f}RN1Q~&?~ literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_badge_check.imageset/Contents.json b/QuickLocation/Assets.xcassets/AppRestrict/pair_badge_check.imageset/Contents.json new file mode 100644 index 00000000..be555ac0 --- /dev/null +++ b/QuickLocation/Assets.xcassets/AppRestrict/pair_badge_check.imageset/Contents.json @@ -0,0 +1,8 @@ +{ + "images" : [ + { "idiom" : "universal", "scale" : "1x" }, + { "filename" : "pair_badge_check@2x.png", "idiom" : "universal", "scale" : "2x" }, + { "filename" : "pair_badge_check@3x.png", "idiom" : "universal", "scale" : "3x" } + ], + "info" : { "author" : "xcode", "version" : 1 } +} diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_badge_check.imageset/pair_badge_check@2x.png b/QuickLocation/Assets.xcassets/AppRestrict/pair_badge_check.imageset/pair_badge_check@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ed9f129cffd905e0f9ec653ec35f38bb84b1c87b GIT binary patch literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAtq$-BaRt&0`yIe2fP1SK=QdA{ z?E&mN{Mh#S^6c~F-si)$FMxBOKj%I_&i(!z`~A50`*H2}2O>@|n;XOi3-0yf+UpNR z`~120`E%{_10x^<$n^t@Km~zpzWsqh2SOB N#y2)@`HccnY&YG2XKnWeYpOnJ0v z+v`)u-d}z2{pE|F@819Z^84SP|NsB*d|vk-=vwuXAirP+77hUk83h$>ZGB^N>+tC4 z^z8iN^7{VCv*)kgz5np>`;VW$|NQ-TvH-sgP|GP#7sn8d^K&QO|4ZIwVcMtW4Wm-f_>-4olO; zTf7pk-Eo4x4W9P2^>!^oNmzCyIJPtQUM!{$nR=-NjDp`|rz^ zRCN^{`IK?v+}*UJv;Nv`f4c5S-NG%L{p{6GT^@!#`*((2@VSZ6#lD_xpm_6i^>bP0 Hl+XkKI%(Md literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_badge_check.imageset/pair_badge_check@3x.png b/QuickLocation/Assets.xcassets/AppRestrict/pair_badge_check.imageset/pair_badge_check@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfbcf2ba5930454b9b845bcf14e6acb3dcacbb7d GIT binary patch literal 1061 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k3?#4J%UH$0z<4^qC&U%VW%$p)(9poJDwJWr z1H(*XhHah<$3n$-x{2-&WjNv|a>P$?cc{Sr0RF??d^_vP8<$#ck)=V&13 zULVeb{v5k~IQ9l{>HnCD<1&puzC{ej#E{kiw}aUBTa*d55bKah8iKhM5E zp1pxwyZpEg1#;~P;N0WSxi^sKU;xh^KkmH&T>ApJ_WE(|4d4Ny0|DH7{kit}a_s|> zK#f4s56Ix&58{GE_WN@Kxj;5h*?xZ>kYazH0}w9IGzbDJ02&L@2t*+DAX}gsfl@%z zxc327f|Nl_1CbDuL4rW_5XA^tB<&C>pxXj~zT?{;$iF{G^kA6i!ElL#5sF9Rm5(GS zA4$|Xp00O1)9^%=$;lkklerFO$~@22c%83}y4+EFXJPH#h0XVtwccCa^I%QS!!=VL zZ<_sd`<}Pw_r1Gt;N7JoAFdwzaP91;+c&;GzWwd#yI-H*{r>#<&-bq&^yB;ApMU=S z{rmslzyJUK|NsB!Z2xy)Y-X1P`2{mDGBLBTvU76t@bdBt2nq>_h>D6y%gV_ssi*(s4+Su6IJNfwsgoK7gB&22J=H^yZRn;{%wRTUMI(y#Ib?eq|+_-7;=Dqt496o;X zU~)bY0?=SeSL=?WRH|>#`L}ap`xu zWGV}_wKVkg8I0!u8Cf$87ILmR)y%)jyM zv;!ilr<_D@HZ3h$B{h5XXNRn)#%E_{T;eI5!s^m1qcX*7*D}A?s~c~bCc8xo9=Q=B zxIxLAV||iQKvqz!;f-~gxdq=Nn?-**SuC|xxY>C(VRuybgRVUXyOb2??Ai5C(%?c{ zz+_p@uqOs%fvw0g|Cb4>EaloW~2O6o;*+jV?QBjuP@+;laT3=Ztl zQ(mPcC-39BaLY`+jhz6l$MqC*`ooWM^D%)THkVOY)x!n ZU^qU-asB-V=eB|JyQiz4%Q~loCIE?8%7Op@ literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_link_active.imageset/Contents.json b/QuickLocation/Assets.xcassets/AppRestrict/pair_link_active.imageset/Contents.json new file mode 100644 index 00000000..d177b2dd --- /dev/null +++ b/QuickLocation/Assets.xcassets/AppRestrict/pair_link_active.imageset/Contents.json @@ -0,0 +1,8 @@ +{ + "images" : [ + { "idiom" : "universal", "scale" : "1x" }, + { "filename" : "pair_link_active@2x.png", "idiom" : "universal", "scale" : "2x" }, + { "filename" : "pair_link_active@3x.png", "idiom" : "universal", "scale" : "3x" } + ], + "info" : { "author" : "xcode", "version" : 1 } +} diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_link_active.imageset/pair_link_active@2x.png b/QuickLocation/Assets.xcassets/AppRestrict/pair_link_active.imageset/pair_link_active@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c7894669f5692763f3594f4d3d2fc058e5d9da GIT binary patch literal 3029 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 XQo#giGX7J@00000NkvXXu0mjfmgVLK literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_link_active.imageset/pair_link_active@3x.png b/QuickLocation/Assets.xcassets/AppRestrict/pair_link_active.imageset/pair_link_active@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4f49261c0d68758fa80ea9add20f91d2bef30c14 GIT binary patch literal 5893 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 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/AppRestrict/pair_link_inactive.imageset/pair_link_inactive@3x.png b/QuickLocation/Assets.xcassets/AppRestrict/pair_link_inactive.imageset/pair_link_inactive@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9a992fa9596921dbdf58f012fab60f76e16c583a GIT binary patch literal 4503 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 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/Group/edit.imageset/Group_297@2x.png b/QuickLocation/Assets.xcassets/Group/edit.imageset/Group_297@2x.png index 8c6963d239affb4413564adedda08fff7bf7c1b5..cfc9428a9bfa14d9596f7422745038eb920bed1b 100644 GIT binary patch literal 830 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv81S0|7oEu0VP}7+kq><^1{cXU?1f zGA>@cc>VhI+qZ9Dy?XV=jT_glUAuYnCQ#(oty@4YP#l>H6bEvF;y?z3MCQUpAhK{} za0aG0niNn0ni>cfLI$r5*aP%~eMyjCFarw*kAR4TjDoU?x{kiFxwXBsySIOEcyxSn zdUk$sd3Ak#dw2ij>9glAUcP$$=I#3rA3uHh`tAGoA3uNp`TOsk>niRtFfhLJba4!^ zIKB7k&1th71R5SP3HGSz&76_Iw#h=zSSxGJ3XbOgzxRjgMdWO_ID5`Y?H8XHhF*15 z{uIAB^>x_UedduYjsh&7(-fZ@&Y8D{OLmP=*N>UHb?2`=I=}S)twl$o^97>e$!pAR zn3ssD@86v4_cD~>mP|s_o%Ng4&$cW+*OxrW-%HMK+EJg`>)G3Ltj~1Z5D@%$@ana+ zHxK+*E&rgTq$K>}}&8jKC5F-4n( z9r+=+_=eHC2*ICAZwc+&R(EpMjos;@IY+;*Y5JSA?bVtl@edo1eXGAM`o}Bj#ahA7 zF$WFXXUXVroZ7+pdREQ)!uYx0igK^tU|qkAU#sks?$2q{F3$|FN_$?x_;QWifpfKU zSnAJ*{J!0oTKVJbhawHt{-t|gJiGl=bn@Ms%hhkczLY;L-o$)<^S`I9ru%;6tzT)G zm~JrPjRwbi*-P$1n=KsLw!byVZ#%)@^m$tDo6kBfDcrN&_L`c%lG)<7Vg1<@38yC- zxjhY!&%7W^y@eAcx{|fRU3Ry@gL*Y XOO0)1Yj3mz6A^=_tDnm{r-UW|m;KS% literal 678 zcmV;X0$KfuP)*@Pw1Qa8kFm6c34NViQ_sb>v5jqP=kt7W zvn1-cW`iUWzmiEyndvVeG*OP9&ky@@;6bvA*I=k31+?T?(@ETZz1YuM0&jq z^E3)j%Icki+hH~n<~k_~{Ri)Tf~ZQF`OYFZrJ7ACn@xN+CIXVVk<5BK%gX1=suvH( zY_^#7M}$(U&FY z?iB!9xaw1=yHv0KbM&k0P!|s!(8HnTlrkSe-N9}`cUk)E(|f3ZMCPS;F3-#NUAQ*2 z`mNUw6%Y_b(K?3_!Rrq6HBm=DY{0PQLI`{YSPM7x`r!g9WnU24jV=UI>3gd?_NF^2 zB#C{IB>L8%fPh<+R($qwaChEudzYx$Au===AZp7yS5@fOhDBAsm3Z&J~3X(|Wjo0P+x_LvRt-LPuRfJ5<2gY<8h6?Pnp( z763zsFk5(N4AjsL9S}fR>0t5?;jlWvHPHPk=+FUw{rYv8xzad>^mXC7i_k*{EX(P0 zxaXWxfc^C8;0jhKew+)PJ9Iz*5t&kmYKyrkuxfUoHX^OV06O6TGz_|J4c0sE^D3Zm zEP`#>4w`F9*&31O<_BsG8hUjs+#sE#*UI;>0ew3KfFoe@8@&`8cHCgdzy=@B5<>s! zvEf;}L8PY`PVno748Y-8_#dd3^;m+#L0CU*;6EU`5m_N)8{63a0w|uK?MYjx4FCWD M07*qoM6N<$g5mH#hX4Qo diff --git a/QuickLocation/Assets.xcassets/Group/edit.imageset/Group_297@3x.png b/QuickLocation/Assets.xcassets/Group/edit.imageset/Group_297@3x.png index f679b23ca412811b929152e249628a9cad175924..c240862cb1f99b1b3253bc0ca81b6ef05a01958c 100644 GIT binary patch literal 1951 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 diff --git a/QuickLocation/Assets.xcassets/Group/join_hero_bg.imageset/Contents.json b/QuickLocation/Assets.xcassets/Group/join_hero_bg.imageset/Contents.json new file mode 100644 index 00000000..5bdb198b --- /dev/null +++ b/QuickLocation/Assets.xcassets/Group/join_hero_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "join_hero_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "join_hero_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/QuickLocation/Assets.xcassets/Group/join_hero_bg.imageset/join_hero_bg@2x.png b/QuickLocation/Assets.xcassets/Group/join_hero_bg.imageset/join_hero_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6af6e96c87ef32a7a9903fbeafb4a02df384a654 GIT binary patch literal 5235 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 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/Group/join_hero_bg.imageset/join_hero_bg@3x.png b/QuickLocation/Assets.xcassets/Group/join_hero_bg.imageset/join_hero_bg@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..309a236ad53075a6b60f77deae4d2ded7ad508ce GIT binary patch literal 11433 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 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/LockDistract/Contents.json b/QuickLocation/Assets.xcassets/LockDistract/Contents.json new file mode 100644 index 00000000..6e965652 --- /dev/null +++ b/QuickLocation/Assets.xcassets/LockDistract/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/QuickLocation/Assets.xcassets/LockDistract/app_unknown.imageset/Contents.json b/QuickLocation/Assets.xcassets/LockDistract/app_unknown.imageset/Contents.json new file mode 100644 index 00000000..3567e282 --- /dev/null +++ b/QuickLocation/Assets.xcassets/LockDistract/app_unknown.imageset/Contents.json @@ -0,0 +1,8 @@ +{ + "images" : [ + { "idiom" : "universal", "scale" : "1x" }, + { "filename" : "app_unknown@2x.png", "idiom" : "universal", "scale" : "2x" }, + { "filename" : "app_unknown@3x.png", "idiom" : "universal", "scale" : "3x" } + ], + "info" : { "author" : "xcode", "version" : 1 } +} diff --git a/QuickLocation/Assets.xcassets/LockDistract/app_unknown.imageset/app_unknown@2x.png b/QuickLocation/Assets.xcassets/LockDistract/app_unknown.imageset/app_unknown@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2c3766cfe1e2dab73579adbe52f1f634c6f5ef7c GIT binary patch literal 1461 zcmX|A2~bmK5PryE1R`Dq3ZgV9^#ZljBL&Zb2tnlRXhDSu2vbl(Ksh|nbQBF(wG;_n z2%hDt6vY9GM}Q>c00Idi34{pbCM1w>DQXuS{bt|)@Bh8sxBKmT?{ZL}FWS<<5w_IuolXZ1lgZ@qcxtuUs8+*KAP@lG z+}zA&vnMAfsZ=V5!!a6-!1RhlV`F3Bh(x0C@$sgnrcu2f7;sc76*!HJjSL0@9?0c# zXJU*-U?3jSA%@TA0|O2Ou$auj!NJe`@bK{GT#Z^iHk(4H(~YB};6pH^j~NW$$OZ@1 zDwP5F*`rV>{2I{F(IFO#froOS3&ONo?TB7)oMog^>E~NecP9Ny50C{FM@L4!K8Hr5 zL1~cC($X^1B#Q+@0Qs%0t!-^>?d|PcFfJDoJ3BjhU_2g(>gwtefC&WM-QCcY2uvgr zgNemGJw3fWJ(AvDi9`a8N&EWVN~Qh%{R92|g98IF0T3mV$>cJbLM~S*6iP6qQl(Ua z1n5np(F|!c+M%Igtrn)F8y?o{bf9ZwWCYpvU0hszeSL8_Txe)09*>WUi%XhCT3T9mcJ|d7qoesL8cd;10 z1AxI`m;k(=#m1d$7b1x1T0ieyVFwyHLSe+B=p`0<{LLFTV#|d7IS(s-sVT^RnExy) zxSeXXr0~y@n)Q^}c+3L}cMjpBz@4@zm|~-dOg%0?dUttaieyTD%fq`cyiOH=#<0)E zuof}BtyLyR?l|$3h%MxGsI8`*c2YPy<#xy;hq9a$!pgZi4?|2JVK?63zo#*YGIjEp zpKT@K@nU<~X^qR!DJ$Di<}E7fib9)=F^epx=qggGKIYklSJ|9S!asU3wJ~B%+jy;H zvloBe`FVZv)T9Q-4_%dd$DV|v4di;shKTYuLglpPn;(fJH-UKhz6%~vXshrs_J?Gg zWorJyg~4twndzCIqA?{HPg?Bjc2nc^Zvg(PN% zat@L%BTo96hh5qyszD>u#Hjk~jx6kS#F5-b#)GYIUsdFAV>p?Kl)}(|tlJ#%-|8#g zng^sw$=KZ0>(OMawF$DFRi4deA4A$%ROuzmla9aQU+ZjEZClDud2*n%>beE}<@khe z2>BlM;LpgpYdtBobjEXcTSpfG`IK`;Q1NP7hZJ{NMksMQm!-^VjXr$OH`T)~(|f*9 zTm1WRW1v6DE$nKvpMIUwrc*rm*uN7hRCr0~{2}j^ZjRh$uiorMC00bctt1Ofscm9Q z_cF|yvl~{8*C7p*dFa&tmOaL;<^81~6^;S&i~y~N)0-$!_4Kh;F+Sl5*^ zR~qS=74YA?A3WCoR&_*&9Y~26= literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/LockDistract/app_unknown.imageset/app_unknown@3x.png b/QuickLocation/Assets.xcassets/LockDistract/app_unknown.imageset/app_unknown@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf1428f0adb7311307cef19b517b1255aace0cf GIT binary patch literal 2888 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 A82|tP literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/LockDistract/arrow_right.imageset/arrow_right@3x.png b/QuickLocation/Assets.xcassets/LockDistract/arrow_right.imageset/arrow_right@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0395248485889d253f788113d753995725b0da GIT binary patch literal 465 zcmV;?0WSWDP)7*;f**loWP$_UV!)1S}#FEG!I|*3!QsSPLSGDeQt^Aq1-g3p)#cgQZO# zo0%(@1Pq9}o5{n%16wRy=FI)>%-IG0wIorJqEe~0*3(fHOq-DjZaST-H&U^N}7nu#(Br!6ZV?StL07l>P0_`xR=DXZ!3sDxys%^I bf`8K|3qFE|aP68^00000NkvXXu0mjfIXJ^5 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/LockDistract/section_star.imageset/section_star@3x.png b/QuickLocation/Assets.xcassets/LockDistract/section_star.imageset/section_star@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b823565f91360abcabf60ef9663d7f99a8f27c7b GIT binary patch literal 772 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 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/LockDistract/wallpaper_1.imageset/wallpaper_1@3x.png b/QuickLocation/Assets.xcassets/LockDistract/wallpaper_1.imageset/wallpaper_1@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1afbfbd8903f4e3a3f11c918592ac2a7ef95f455 GIT binary patch literal 67677 zcmWif1yIya8^@14{=^Z|+|eN2;Bg?*4blQ4EiD{)ASHE2!x2(a(xIRerdHZe=(jDS&U1~Hlc2^Gg_@nju|w_j;eTK9|0_fPD)D27>)7*+wR7#X zL7ntrWZ!Pw$ew=I_n@wA#JA0q@q?J*y{pSRyH7uzzO4DTZ$%F5>Sc~3jU5=}O@?B2 z406W9dw1VhFI{}q_$y&_AKtuSQ@MJ6cDuWIakPKs^L5jucHO;x-6Vh7 zs(i`3XwI`~!?$fKpmW=-aCU$D%2T&eUp5@BS9NoHXHh(FBo}$!_DusC>Y-J-oL6J^ zIR3d}^2yPSjdJ?U#H6cw!BuyMpK+t3S}wMrQduI`+-9>E_L$gc5LK&u=jdk z;AUh9VfbY!IrXXsvyxM(C5QTjyZX6uxq&_Vm75=K-5v70{bxp&u43%s{MFC*#p$o- z&Knz+((@69^*6&4f#%Ii1+C|;gV+7tKKeD<;s)yr2d6ckcZ!R1f|d?HR-o+r(61)` z{P{CqI&_ltVWaGmn{LHb&kVM0OJ=cJ75; zk&?czkxuGfZBL-jgvHZJbqSy8!3|tklxo_*`S)MmF8#d`iG?G_F1Br)41z|ocJ>~h zEEHV(zOCv!O=y@tZT1b{AKxbFxaj+S7!|g1xwzRO7plUA@(_e<^Q(T)#`Rf;&uH+J#NJYQ9Z>x99f$XKT~xO81HL&zr)M6OGL8vF@Gj z{!PgXSJ?eq`}*^|^;<=GtC!v9k(LpGAGQ*Tjtal+N7#HSo4+W3-;)tI^d_pSZtHiE zPr9#R)?jA)qoGS5mz=E1AE>~O26NXAR#ED~9qP_i>9NhFsdK2z;ofJ@pMBlhU^aXE z&j+XwM*7Bpv%9M^_N$RkbJov7)4sTBNxj(w+&YA9y7w{P+5rvl1_;h!l80YXVK-^nPsV%T}O z5Xdzqr6w`CP~!G9@omW}#xi@}Lm z=**86K8hPK!@Mz-3W%X5N8!sU^5we@K2g6>#%4oyQjAZyBfkh^?4q(lgc@~q3m&il z!u+VgrOaE_a%j=r!;SeD%QcBhZG)COy7q659mOCt);>Etc+mVBxBK?)EXs@c0siKOIsdA2Tv6hU{z{oELAzCEfOW{>rpT8B@uMg1RxQ)% zjtxT?i?5dkEjd=hNy~iX$=z4TxE8D3Tgq!4Y(o6E&!Pn%Bd`lsj5!%xg3g{S=I5=W zr4cM|o>wf5%-x%@c!yJp3U}^^mD3-P>2l~b2iMc>{QDbft5R$syJROp{lw%SdL5Y=*^2ZAtsGbeYus*VeunbP2MyzPNJ?h1c) ziSM)TJGf`hqAY|5i~Z&skbS9~gA_96y+#p_M`ObXUi}DiQ7JLfCgEx1Kv0}NVb-{f z@_78iQiYx}v6McM1Wk)7m0_d68XY#L=j z4hN$dLDItZ!0`K6mj5~}j1!m))^BItREN<(dg*vro}}{KQI{)E{Ym3-jo?hqBXK1t zITb#4*ct7n$R|%==})lQ9o!zvt)}+EFQ*651f!<3+e%MD*wkZ_e`(N0Q4y-O4>}ek zCZAb69Gq(+a{4zgkwunK(#cA)_@Vk9{#$9rMfhx7{%FcLjlvU^m_w?m zF?OkNf4`d(A~}yh;oGE~dW%=f2|Z#j2x(yP)Q%8skwS!_RFR!(gt)|dDgA;bAu)=6 zk$kLw!h%tW`UM4{(+@j(i~dO4L85aSa*LUjrX1@o$JwjLTkp_9a_{_7Q$J*y&wbcP z=o~n@xk(G?$Qu9X7D*vVVfaI`qBl*Xa`^0{w(%`68Ngb~#>2H{NEZ@j#m!?Z(uI&r z9vSEx*fjoZYzwY$upCnp&NnB+3{Ai_Z7bywbZVwV3fu*NB=3UD6p5+cV@mPlQrM5{ zmgNvB|KP?O)Z6u7@u$V{JU_Qfn7^pKfYMaFqWuI{wD^3Zu7Ab%M@Wr6UbUA}rH{+| z63-%Wgz#c~WJSY)Z9Lz@=KSU+n7$DiN5*G=z00g0%EtEm#F9mWXoD)lu$YmukPE#o z6vt@ITRaG49o7GPO~BIazwZpK9ErxmS7>4zsOGVG`^RJfKxUdIqtxd^L4fg4`BBSr z$btApiz|4FefR)Y2lau|8e~X@aIdl2Q9XRX%Xy!LBSI)XXm7yU1y3lj60!cxM<)*S z5hrlPI}Jw(8j>gafm3K{IJpLd#h8 za!Sqmq@(;NQP{f16T*0N7xDNy-gUT(0e)C7C_941E0Mu6P9K$|dQJ7y<&28Kze^f1 zLRn+VgP<%cTVv#EgHjHXE)&owj4EW4U%a7hresU{o>-olFeM;j&lp|KLSu*)_7qDQ z6dNPKyABT)h>?^LWY!T6abZ>>XN=9(N}Q*dPAFNy4PkLYAok?0 zQU%g*q-|eq|AWq7X4Iv@zEZ4dP;LaGm~88kHpz=333!DUR2O{t)9diW5%bXHL#i4ej2()xs2D!hw8jFT)O2Zzsy<~Iw==9o9M;SauZ7R*AmT@gas`8L>@8K~#UhU_<~5e?HNVd28UGl6_GJ6=>{hR}!+L)q z(X=Yxno?r+?WawjOXAD%;*8LsFRRaeldWvsWt~?&?OraH>D&w|nR@HjE4Gtw>(lz`^-F+P6@Q1QcJhv)j81=BZo)&1NvQJ58q5@XpNWyd<|N6B)@X33zzH#l`Nf)rtK1zGsQkQ~ z{IUj?@%;B&p<$ZwQuOCzYRW(~8V8?v$Z9}an}2|!b5BKCcK61Z6o`=qYpHO?3!_FQ zDD&z|#co0qW{@w$`!gpVLo+|8vr5wJSN{3Dxg0gT+XJ;ei1Mp+GlDy#{SjLlVadW+58O;aZg;Yd|6k)9zNGZwv^F(fnO*kr>^i z`(SWI%;_+k#rUCD$j6gon1nX0^?ONW;54-IU^`??lPdV>77|qm40-P&{!m;I$a%39^+&&4aNva|F=}s(N%kO2|2cf zPVJ_TC_LsSkJZR_vP%T6IDj>>-|&HHaeNpN@S+3}l~yEeB#TG5Eg8j(zD||i0ICw` zbv@4u`GK)p{|Rw;p801_!{MO(mGxA68szTwwxI6*h1pK)$>^R~e2Cat zi;_&)qxgp_#I* zl9hOGR5fK7o8=ymzzjne){k7*bEz3+;ULsiFv61 z>-Eci?;vOf0ly0ACMLXpwtP#+5kMOee$Sw1`L_z?qS+^4JE*Bl^y`YpJ}oskm1yGR zOlK;5bX^VdT&Tq*oa~CES3XM5__2>#d|07?nvgYz8cI_&_k$MK8;vk07SpKd>=1rO zgyyEWw_egpD2wGGEBeAR^yhfSn@~=cv!A>HVIblc7|BUx6uISj#n35lou!f+Bhf$# zsSb-j1)cffpX)=6XlJnh#i_w}hyN(&nsW`~F?Qn+0*F0puFFY|{akNB(G)Clx>bu1 zii3~~8!!{uJ!~-FRBCwW#_Cb=bLZLV9K({O19bgR`rQwqfU{=zVq^$gHXaO#}TWG-D*X z!jK}UPLFWnCJO(E!ru+yZLW9+%6T<85%JcZHMF+kttPyR-(2SK2bBJ-o|`WvCL+pD zoZB(iO{MC>8=4Wy&X&eY~>C^D0?f6zy;SsS0Q#^Ji>DT#(0 z$*hGoyw0GtC777bLF=`Dsk1;cuU=RP-BNqx;mfu|pnL`Wb}z>ZFPAyr9~F%@ZM3TGpJE z%D^Mm#epRWSHeh_{xpnmuoUTHjs8Q`cKn>T{cR0;FBx4$r@o`b5s+Q7F{@T z;;uKKv*+JvB2j0+0}^+w{a9M#lqDQ+>SH^!K>3L??&OPjl5HgDM~{Q0hTP(+nu_uhrGIB;pDhc%8I~0e?w^2?@8g-Odyb?)ed^p08nA?$u z+_Bt%jb&0hdAkTvC}lBU)%z_=(X85@LF8LJ_V4e|pRzyS>gsxYqWhcoHR-h%FKjFG z$oKH^n?!VE6W4?iv93@>d=ld)SH(31cHAZ$5RXFY+&??k8?fKBpWFekg5M+G#3B5@ zrV&}|bM*QI;yNAWrjYelUeJkBO5Pg0qZ7T*!fj#IV&sU#OOJH3yr$O4u4i5@gU2K| zF^SPkTRDp8$dY;6d0c*9D*bB?8AqM;^r3YfL$Vyppol4}-3i@2VvxN}x|#WXmlpCRmN=;{c1MhR&gK0CaAZ4-ct7a*A1&cU^2@gF zE=5{K6V<@TIUl^J_CGHv_74rM>I2$Fa#S+N8W9n<>1!^${j@E=-IS9kDwoIX7H=<8 z(PUcX&7)s$T5U)i^_ALLiGX}YVo>dCE{ec#0F3K`jxdAC;tQ#%Xtvhf-bqIz^NC8d zooExHK5J=Ado`d8dWaxlNC_y`%|))wB)fDyuXx)Z+rf7`cM?`BZMy3}98|?OlK-b7 zz9_VX14Q{D9VT*&JYu3D5Qoi9_?BUx}@&c@WY!wE!{vJQ>J z*Ml&TvK?FVxWIWu>c2gowjX!t$!7fttYn33{gewG9iM!v_2At~@Nj$FRnp(n>r*au zjY+c|^yXy5!P3!OJ>nH9d8FiVT+zb(GU{mxo?($4jXs?2Ml;7&F^b6Agy}C|{9_1c z!u~xuPO+9iVkx}eYR0g7mrsE_eHO;Pn!+jR(~>jIvuNy31*|?Eky!_o)k?AIx)MOl z9k;OtBNk|72C~aW<+@WZ^eM$(e8|Hk^alezV&;at)*W;MYwfF;5Vdyg$@Ih1VD}KY zCLXNj*}8qsQbw8-4G~Ko^(VQT$DijFY#c(BWUOe00AyjvJphnTWOzyNl&xAH zJ`tiv91S^xT8!?5#$T=^=BRk)MpaZrTI}Fdu|i;>l-s9?**jD)?)||@!8f(nPr{z0$TCb>~jZ4D<@^elioVt zAzn>~Bfb{*l(LrT&VRJg_M%WL&oYn6v*qBe)_R1Z58T`#7T4eJR4%JS;ECaZ>_GZI z98gzHPLHW0_-RR*z$Tvn;gdpOV?0nveFJ3894@7z(U^@=39%F7^BI>`aWtlc)@XKl zd(Zl%BIXnSjGD_kQ{#w58m9foG4;nevSr3?m^|{M;#K&(ddJgt(>EWQlDUXd9?UJ# z%7%K@PEFisY>4}jOMY<15zjN~)Y;7v$3AhdrvG73fZsEv28{uLRGVqIj23CL&{Td_ z5e`~4lc3-l`ZATzrmR#$uafRW&-{^Opek%+C`BFa2k~cS7MWpXn4`xBL~=s>SEFwk zm~W3)Vu2X}AWruU)xW!h*zAHHN4O?E_>*VtMPl9 z%IF#M6pux(jw6o;7fDfS>gH3fG^)og67ij#1*L-WMPbh9a3!OtKJdsg;n@O!h(7qW zl$Yu(Xv~QQ0SFVXv%8Y!S9W^Dd?p^S(ro`jpy@y0PC*8=X`HD}5^-FX;lJY@I!FDR zVQDE*L-OG9)Vo-dPQrlk8?EuEWX$+bsFQU7^mxoNRSF#7)Ho?<d=&j{`Zxy~AMISfV_?@W-l(8pja2^i*#qG%iR#sI-GO*E&ZKJUx-yzpZ)K*AFZ=pp~QpS&hHfEgTG&RXX|okcAbqijNkm-Jnjq?sX}C zy!u3M9tQT{%2aTSdfA}O`g0-EDQbaDC)lr2;V43|j^JubkMFbqIIXtU$KU^G6^Fz9 zepB1}%?;y)LN;;1GU&>=R7+#jXX-sJ;@F=azGOA2DtPidxPnvVVfqq9SM5RuUcecD z+e%4~s!5_+qp)>fw*fSl(hdoanW;A6mYu9^aU6?45sCBjAkxZRpheFM{U3jOA4Qes zvr0dA!EZ@n0iV!&Kb*22Xz&1UCVCy-- z0u}Z;T-V%QLC{!=5ll+_vP@-08xvlGc|p2^YebHdC^_)GK2KaJ57;Nb%)p>}2m=A+4?!)9zDFLJ z2CJa?L+=#N%gDXThgnsQpj#)_cgmE^^_$^Td=Cf2NoC9#szo)s3jI{dJl^9mZ(AW9 z5QQPEU*l?V>d1VQ4^)v*D7sY8Q`W>v=RM+(fK2;+ZG}VS?u)cn0eiF*%qcwqH6Csb z=bVY^Q#7y;Q;hh$u+ekpqZD*&3q?G_piV_)jUlZJJVLsdQrB{TwV9n{ElF-3*Emf( z(tMKpXR@3KBo%P+81k{Rx5vw&`<5ADjOJkTj&ofKPhq1hmug znB;-uW9lGeT+ZB>WY1SCpO*(#-cNE<_Y9k2?Z=;hps53TI9&}wJ*L{(M-^>B!}+@p z>zqI`jxik_243TwSeHg7xTfgbUh%O&kLK5ejxRIYrfG?78|<9!1uEtMli~-UXc%2g zJQN{{XmOYnj7ua>rHVG638~nytyVGmQT80<(dhBH)}jj!bApdGplijb{19#P!S%F$ zP_kKR3piM8WO)Qqdt)jCe|qykFOsNxbkf4r~JGDVcAFNKsqwf zIyfW8yks-ycWRJZf1kuosUv@tJv>Hv=+i%GykDXP2?kEu!^0(^%I4|6%ckL)+6ya> z8K3y>&M>(I2HwtYeF$AoCp+r+eduiS)>jYZN~IL{QI{<9tCI8~p z(!JNU*-9!1%I5%!JUQT~n2+cC3Dc3WeblA?+^NB~2wy@*FiST1jeI5nzT^Qj(0~)@ z{!1CoPU21+{ld(;{{*1XhMwV~?9!M%q3-JrS}imvts%|yttl#`EhwFxf)sP*R57Z|;e(oWI=yJ!J8l<6;c;gTd#WP1)I0bw@@1W@)-%vwz)f036BU+=c(<8#BGeChDPEBm!bp^$J6avBOE^ar5JS*gK& z`12FPe7VD!d+{8MD=4Y}5h0f!Jqkhq^l1Qh9ewPSSpm~Q9VdsQDwds^G}^425R|0x z$0@2V2b8EKD88*&qXebWRkS9JM>e*&Kl4-F)Xa6M5e9GMh+_fW3pGkbpy>>+9zKIKWRCSi`&eUlD>40%G8i z_$(&o-BADqH2sth$43Tmw{_6N6_DUBR{nz(2T*UlWcWz2YjNQaDb*5En~f@iVqGh zj+IN$%A^BrN}8gy-C+H_h~+;ANjRfI1LppD(r71f5lR_o3uolH!9iD`x6Ky`dQF86 zZz7TH`sUT(^;t<*V+n<~HO=+yOIJO%nUv($TWZk!U~V{hE)h#b$YkZr5{1H}>O^X~ zJggNCKoREPsjQ6V?-F;55BO;50UrYE5Ncij zZYO0-hba_!k)uu#SyI#CAM$|^Bc;x(0X7Mdpv<0h79+88|L%gAi>W@f4+L`Z%xvMr zMYOft)8+lsD65}`K}=zHEW{|dy!G`PHK^yx&1%#V{VvP*($caXaby%N_yO?%IgZ5P zOBBhycxj{*I9(vC$MAjD9uZItI$@$eW!Hz!CIW~29gaDr+AZ;z(&E9Ht4gt&PT}BT zAie^QZ~O3G4$E*ZP*-)<-9q1w&)o@ar@>Rxxik!th|f~VNs9Lm;k0C5eu|glgJfVj zQs5R~YC|%`j-!v526R}GT=qI!49eG2OOFi;>=I|ju``&%wVpI)NI(jZ@RkjBCjV(9 z3B<$b3(aOzgZ#7d+lu>px$Uq7GD60w-~QE6TSaHDf(N(X+TY*3$wgoBLvsWl{Uqk7 z;Q$S;`u*JL4o?WZ>Fl!8FIBNnMOu&OZt%>q<%ax&Xn}7k`Qhlg0s+Qf#{Mrt$ z((T*@8WZ^??74tLiaqe#BUG^?!O^eW)Z9|cCTX__{l~J=XU|^tp0>_|PC2ZyMB)b{ zhwkDBKa&!$rA>AJ_ZN?(8TYc|x2N+F7OR_@v@(rc37rX+$A>}}{k9$snZR@%sJ(^G zECpxOyVXHx*=S_lFdwc4-oOBUCVRdaiIxJNRrbe>{l4I8HhR6agayuxTJu3 zx+CX$YdkoFW(oa6@(~ru#e<{(D3c@R&?$v1^pXG~h~kp(09uN}Lhb{u#ttui0W?B` z*WF{62CfA^Pp+SI8G`*EGbQ?USoFQKX!N|7ou4<5any~Z1AUCJC2Zf1ixtWM0bM75 zIi7zsg$=)K@^7=7D*SC&A{2&!kl_lvx^;f#tLa5&cK2Un-CQG~0eSk7!Wt}{_SdU- znhBy|csW+`b6GEF$KQefB`2wDO+JDhyDWOTUL$^9j&&oj4!40n$s%J0{^Fy1sz2C5 zw@pg!FD^dHv*+UtY;Bs505d=XH+ni|VI*1;F;b+aQ^{?B7;bR7JlNcaqwJpzM{T0x zP%yI%yu166eb^rW(COXeK;5Wu!sB1ME(*(Dl#1-F$H9hMtva>gDlXQ9Flx|Z5+Hht zqm1BcB5o{|((&6m^M}j!i37L&lb@(!^Hd)Chtsl&>ecZ3ohc)oft^yN-Az<6=O$NI zxV-Y0gC0(FJrg-?G1USQI2|zH!n=J8$2dVZBUQBrfFVQd+s9#PsdbrO=}M8g2J~6q z*6`Mp{)1@ay#Z5tR65|^jT@I?Flaj0@SUz@h>@T0Fqfpw(bDPz`N09}pEb@+lo0fT zE4NC-ImewG6RS{Yt&9NN1Hr6Q-@qbC|3ReY#|XAxc%YZ|?_hNZE5IA78EtC(imxZjKnw#eaftYH zT9a8tm=DYqL}ssrFi~9qR%dB)1(5!KZ0pXKe$nxN30d(qI&%Jg*7uZUOpG#7!zzB1 zhzcr|+nVe$g2}xNA0wiX0Hb?rgczqJQL*x1$uP`xda$atOkkHcKQv>An zP%O;2;`K!GL^TzN7{dDc_>iw-qc2!(8~f7fb!IRCU0MT(o~HitFprIlG7I58+29(# zzN~PDuZqIt{U?%|z97j`_X>r2_#bY{Q4(UkZy^4mbf;yb)>-Q_E&st`)|>aMtgFlu zm+wBNdC9^yp-ce-sq4w-mkuM%tPtd^T zBy)UHG_C(|FdQeJ-v2vL5COh#>*m6x2&rRPDh0tD7Vo=e?N21cPUKTJ zBPh@Kt%;1G6TeZIW$h`%V1$Pv3R!&HjR?Lzh-T}mb*XijI(jN5QlG*zvy2Xy0;?gWrW< zj~!g0a7CNd_IuaUO9Cd=>#4K5m=CO>bMNI@iVdTRZA3ncgle^lzl$n9oaAc&FgU_( z!@U{QdI8$cx>1DauWocg1i**V(Nfz0c5TX|{8@<|;IoHWwYus9_6zPY+FS3xSWe)n z^5GZZMQdfjUAOtm2oyQ^-v4;5Ns)x}Ad|ZjAqrCp2Qi_G9ft1TGc^15j|w8DzEb%mj++)gfe2IL!$ z3%b(3==477r3KG>yEy{m;P9tO(8tR^cwd|h=%P`cQIrjtI_T@INw|4$x3Vlbu*b04 zyFhIM3*EMLC~h_APVEzZVno?6-H z%LilPXiw>sfyH%>%$!L-DJz+2?nW0a_XJDdo!1oKc4`Wn1)rQ#tjn>4oJ8j|K%^j@ zT?qf^`PL=Kw-Dm~^-<4m^sq!=$mi6RUk4U+scd@Cy4;J5X+K&8jYmtN`+H8%v`7l_ zPoqt8v@E>%;0qyeRc-`1G))LxN3Bz0FsL_&WnG(K$)WuRd;Y|&{&IvX4myuN#Gu2X z)JjlXsFJFD0+2ey0yZ}dhqFh*RbA)o#dnG@9DHpiyM8!nQtbg8j_yRf*%rpvyg;Jc zsv=k3|1|L^ch%l_4*Q#}iEZ>fqdTJ0abb8U4L8n`*O>2YiDU+W2I`DNFamnja8;=M zuY#&Ej@cweA1bs24$Hy`epzLHeR?aK7LEa$xpjZh#W7+)WH8O>NJtm*UHJPRsi#(2 zGGu)0pNYr-YlfA)!u~)QLc6BFZbQH)&3#HKlVDm2n)UJSZp1b-PugJn_aQGfOc)RH zCTfyY?U_C<_c1gBxl(OEu75V&E;m(E0+^J>LG=&w?a9|p)%p6gE!z@Q;*05hG@*+{ z&lVg{X*7)K!JwELDo~9f5P}Et2y`mkYD%A``{AZDPT+p&_qk3KUfb-j$hg9P0AVsE?p^^cz&u_YUET_+>2 zBq1EalaMSB5@Q%9@2@)|H}YL45Q9IpUw&i8%Il@`A@}c%a)z~@Db}K?M>HNG1V9ymQrbQDRJ{0d+19WAe4hpPj|U=WdcRC!^*b#)D~1a3rpN5aLZX%M5$aNYF zXs(C$U-Z4x1+tb<%94VDCj-US!boCkCSxcG8)B`q*80P^&3eG->DvPk!n^)eTRhEG zEqEVGGxdY)h3co1-$(f?3Xw>1&7h&ykyh!hzJ4wtjd@m~8#8Os1Pk z7j4?l?I+RQxD!5H0S&ys0$cE$`VlfRU28-Z>O=@C5!@h&rh{2=*wjAP_aN2&ga`w@ zN2Q{Pj;KXbzimJJ#V^DcP7Mkw2&qC1MQ}p08$`kZ^efIkR^TlTN;9>cq9KuFsG(%*ox#tsO)qZRSaI!=?8x=z+h`8gZRuQ+Gmtt z$6oK@LO`esZK`(Hq!^SwbD*CjdXYkT?Z5bJP;~LcTW=sQhj6=vk*B>ZI3I`JM!~?S1!)cMTdyoG5C5F;Sx!;1#sB5k*%#!*%cof`I8hg6sr;$w8+nxl9Rg zvCWBvqN)iFPBG4rmj@#Fb$C!j)tv4?vlt{y1@muT{#R;b0i!v@N*MKozg1-kQzf-$ zf>q6_9VvH8jA(@^ALM#{@f{Tzs!k==D3qFqERWUV=zrN#;*l)Ji+LY@{V|h3zM8q< z{HU(HsMjY~_zw&0%@&B%cGI*#&&qt+4=VMJ2NZ$7QCUUuovwr3LdRn`*KAdW`ynUT zn&_;sISy4K6Pd(mk1)sQ;&~H^WB>)u+mU7zYe79&B45X3-YSl83O(>Zl?RBIn*#dp z9S@hS*FP4Cfx0^t%qs$~9vzrbwtCl%P5N!_}Fno;Sut3Pg~G>^*n?;Cq>1x} zx7d9Y2G4?oRMnG6qp+ZfKv;+ZL+L>p?K_~v983x}RE>iS&}KG>k-|`9g-C{pW39)Y zvh0<94Hq5XW6hO+6gVi~V$(?Z4hk-+h+_Qp$vW|&KG#v|5E|zKT)f(OEI)F6!z<}f zB^Hr0S)mu`zNG@zeXXL-gc;kfWqh4=(3$A9a@l%y835I$=T3RS&f+QCi^zJw!2*gV zeO+~;Bnhs}`WcnpV+7SUB8n&7)^(Z&&OZQ6h4-sd_~6{pI~Ca{SgCTc&1iqI=O>^H z+5cede&3@c%vrz%1dj6nHr0~i;x%)BQbnrBkDIhKwH1m|kB zGeXpFfTq1`yzKi4=MUjrv1HqE8idhK%{;L%GdtKvU;VBh+WZR6zBQxDA}E6L)Q?%h z95f!z67W$U$4a`#S+!kXY%kwsp)EGW!qhRKH9N!TsFEcOScA%|Q%q(d=a^S^Z)RKd>9!GLfig#YD(sdO+V3XcvXGI9%{o~uSZ4=a2qdw+Y zmLP9RWn$)P)JvSEj{O4^MwwE}N#lfTiv&1Ut+4qY*|$UCoRwuapUdudY$4&hvLjof zp|t_vcSlRXRO=Uc3 z?(ly`Sq8i&X}Q{~7PD@IOZ9?9JN)e2)aQ@=XKclw$7^4iLAzBIF^NW+WwAilI(#PA zFakVqW5t`&x^{a<*O@s@k4rh}@(@z59 z)UrSUkKAGG7lQSLx*z-T9Tjr{8tU_}Lj&Ft1W(vI68`joKXjL5FG_8%{YcKesQTz} z7cSE%P9nI1&f5yiXngnV_Tj$n&pr|{zq#jiobcTBJHjhLLM36Ket{5}*@=n*Q(S;h z33*&ci>PHO!2xr{dCHg7j6EvAK@j4e;0}cbBAmYwTo>6Y)eJ!LJCgf=DE<-r9YKj`ek$zr63U$j`PcB7*Wx?}V4JiKE*N!j8 z2AIwO)m@WD!lh*Ig?aiW!E0$2T4p5CQ{BY%*2!b3pyB?4C2vN{zytBS&dVoF?UTXW zJr0h0;w>55nM+<|Z$d=*pKO+|Tt7g|z`%KoXupufbe_J>51Rs{ggAfXKo6<4LN*dk z2pffyFrGT|r{2MhF`G9-W}{7b2|xAFzjv`=JIU!b8eVAs4-x z`1{S_?C;R$ZhxWJ>t|2Y+ow98k?*s|gE>+nxh*E0pB7KvVOq_yTC+ALV%BeTI2kE2 z&y?gfqtf)MCpdLQ6z=wr)dDj6&@aXUr%5a+JFt#K4o$R;BrA(c)vt3PgHR+XQ*HJ7G#e`Cq5Pxm;%v|0H6* zc{37 zXulDp@BRk5Z{CHu!CRgO;LeFe4ha76fNB53oiFH=1EQHJW}k;sz7Yurb%|GBoGDA| zJtKAfwuYbrX<}_B3elzJoqQpYa7B*e3Nv}<6LipJBLD=z{|{`5&&8;KNOrcD<--*k zeB#VW-)-&Y&L-w^zy=zq_eWDk~i7j_nOPkI6qb1pI?Xx?EJD1pwmA^*y>j#~U5RLbrdf{!}xWpedSB`xn&B=9EwAGBkm9E*SHIVD&R9ARsRK=oO%9{=v2 zK>Y2GSpYG)k(bx&;Gyr^)xtSwXkI<(Gby9;2?J^3sI;?w#0^IEh*OAiaWYD=k*Gh- z!(;7|kzuU5Sb2<%Z zsel|jYAMCp$WtgULDw0fjvd5nQY}UUqO(B&A#u5eE9Tl(=9|dF%-A868z7uWyz{p8O@3PeU6s z4cNnz|7BLFLzM?SrtmeW<%l8KpKD;&tfE!KP#Tep73F_XxETPW4x4vn!`77ka&&%i zV{QBh%KOp1u@D~{Caa`H3-N&(KbUmAo@rhCQck=e9R8v za5zzDsS%mCgyI`tzbw10E^8447M*%pK9`;>kVeAc>n|6A514?oawkRZK(?3ft%M_bCU`=3l%zyYWX zm3PYv>9#P^x?I1)1b_Oi#X?a8HVZz=$^E$h;rK^O9JDZ`^iv-C!20(Q(}Kdc)(T{X z!}!FuvT&5|eaZ#v({9{9D~kZpyn<3}%D{nB%{Y8$hDZtpf9$^>VX>D*TkXPLY5v&v z53aBT^cHfb#*~o|-53}~klLQ4_>6!vPtc5O12T~Kg$z9Sa_1S<;v#Iv?Buu$X&8O^ z?IkdC3<~B}aV+)i>2@11aiwrDeIO2z#0Pc(!0N#G5)!SgC0*bjQW6XK6Y@XWf2;Kd z>hoGJ1cS`CY}aK^_D%hdqN|K+ z@@vENV8H0!=#nmBlyoBk@~0&vBxS%51j$hn1L;&!K)E=wEcu%`I;2H?+eu3S!7Pk$_iN|CNaU%I zEnfFYKok;h0qmIawd~*K>RRj6z5X4QVPB|0g{Kx38H>Md1q`wwvp5aFRmrbLy)XYs z*lOEWII^*j{xJV+wgVUc6j5~6iq&`hwt$V1ApR69p3Lc`OAgqNtbgGjv}d*nj7oinzfiCqg?`^_)5o*?1S)6W+S`2&bxFZf^ zWLVs|B8#{T(n6L8gU^G4^y82cm1Et#%l9o6mjdt;c&+fsB#g{?3JxmJ9NO`|F?W5z zv6xyLg6Da_6u6LA1%Wlh;5hzq*#GsU&2PRi$&HBcna7o9kgK6W=BU%W%&9`sQ#^RZ zD_#)6QrI9Ksnp4eWGf`#@2)CUJf4dOYcMKnc}f-L$Fn?tev}ozv(4K2&qejL{*set zfB`BTP23!|^Es_5l%t|T$5 zEa`s`j}X*uw5Go)Ek5=cjx$7sP)Zs+W}jG5*U{e;=WpXx5(oV8q+&`RtFNEGzv7f> zY0yDNyhj-3P64ow`;yIzOD{ouqZ3=8S09cL;f>|Y_(Z_|zIEKP@3OH-oLeDRVmvAp zR_&8-a1TCb^Y9+Xh*g=gN&P*HAc+;!YV1A%CqTL+k6YEB!H?=oDPRLR2!*-lR_*AB z)ppCk|_m*EWQf@OL zh;Q|uBi_4y`}+Q@I>~by`R+R$dC1(UMNBj+ zox{NmUbA*}X~n_Djr5ZSk7pfU`HF9r&<3)CLlxTB#~PHx=ArkYa!`9v0@sZMaYkgy zgGwG8S!Yrn&MVsQ~T+%rzkP6D!8%3 zEQtUL&je!T0h}q?JT&vZ`888?f9|oqNbUP3SK#*%fYHZTK5fY8K*}|XZY3coNOXxH z;WArB(>#tif1C=`mreuk=8?;HdaT*acE$NCCXM3m3@=5b1E%US0^uxpei!i8W`bZKfgbV;mjHh$vSblwzv5Ct{ znVjs2T8B}BOUen9dZXrr=zGoDIFcUjB%UxOl-EYMF~Vx;ktA10?TUL~9h20VGXM`S z^f^pB=#;`cCQw7fyI2BBMqy5x*{l28>GEw1p3+cUliAUC!LtFqg!jNgBuMEE(KV}3 znHSNb+P;t1jJRf{x&0G%Uou6 z)wUQW?dglkdOkSjM1+P%mB%w-k9GQZsDnvm@h4<(e{?z{?C^>L2&_lGRvI%~@8M+t&~;gq4nKg%IinC|to zS-+C)CQKOKm?SZ&OPn?%^4G9ic-8nXu!Xr8s35435L;nMAv>ng6R?IEkiKN1 zP}*H7$NHDJghBYGWr>wu_&;6_*iE8Ij%J6rE3Eb4KG=btY2j#%aQPH*O4X-d%E)L2 zZA2%-I)yk2Q(GgDJ+q<}D;M$k^ReapBR&wA#STdp$dj*!D4w@xh77QXeHrkJ-|=)% z_0<~}1Y&Ip1j#}|aIjhF+}Q<_C>MKNHMgTbv^7FR98231Q*RUJA`M^S028;Iu)|La zQ#p6jpXnhhP@(JOuWt9}(vY9aI~ipDILs-`|5SHt?vt=V^j|`CJ_lU4u~H_>%BQJ` zxwbZ#%@i$ly}EklaRR$O93P8pw~|&WX|YFX5f0Bb=rgjv?aJ75#0@AsavyUiApjg! zpOikjN@}>v;&_PJ8xoZ>r<`T?ef+#iLpf;)eCZ@m?VGFjN)iSX_xV?*{@ z8;@+G){QyXGV>Qu#Y-U%jThm?$CW zrR~mTb$?ULL$AuEhg4`-<4m;fVojX%nJBr^cDFM7+ga(gC>+KPy3bvsv*6ZwFV2kg z%*nesK)m-T9;KmT;t0La)sA1Oa;*-k*m6*dn`M@j;%>nBJLQ0IoADkH|JMx*Xv#$=@Zy1qRq{hA!8h~TQ@DK4H z7p4#5`zhW2vAzwp`E&3G?7)-S5ODHt?t7aAY^jAI*S!v~dBO_nB1d~it&7LdHP6SB zl=zCW2leM#$1Rbii*S~CFy50hfdb>U1k$XPPL?Hmo<#mDK50-9cc{JyE!~Dm{XQ(g z8wgSr$pI>qGfb)alx~TSq$JC{Bof>Z!~xLOcX6=xO+3*_WLR&?&bkid6a_!#S8dTb z5+wqBd8R>*%X4Olcpe2)r!pW0V~CMhtNL?;gU!EhaOpd9H(jtrbDh6Jx|jLY>*8}= zUopS+{H>BNu&_T$*LTz*Hb+Z1TEbL^m>)Vv1z1QuRPrkw-|#-mhhb!^^+@qbl*?+}iZOP0*6%YSkPkiMk&_E-_)Uv6+S1Cy=~+?l z8!kZ(m&dWhlaz=l3N)~5a#sx7_=+@WW~pzKn4~fMZQHGZvV7_4vake zgTs%niJiqTad$m1?!ASicmLLd9F{d+T2L*x$mo4gyJO6K?UJum0e516PKH{ZzsZ}P<=eA8D+bXZaxf5c?%fnC{0o~=7%6ralGv((MI0nQllR3xT0U4v)BwU6*IWA0( zy-7ewfTs0_h{2pZ4r|uD{8apOfDqX{UZo==O1FbzhO$FGbEKSq28XIIrr9Owz6kN; z8;!7k^paMduk=r^?iOG33NE6QZ=PH4x@c@FdQW`2FN_=_ci`cu_-2J45l?kfinZpA zyVv3_36kwF3ncVDx;tBa{`Ow!jQ^Xz=VW@-2(xu@9rG~b?JA(2fEiST5NW@FW!>Dc z6?hF4ji*ZqDTbe~+Ohd?*W_+NQ{4u!c-RTUiUczE@wg0;Ai+r$Q7)r6+EP+{>1Lhd zfq693+aN)Vbhj&>V`0quMNfdKU-uM#`~iaigZ+8PS}^U6;$<$6{WfG_ab>k3Tovci zihnkoUVOXqE>pxKt0+$)Uz@;CidV+ih|0OCNq|kk@9xFlVk^*9^AX>`T5h3&p|Nd+ zF7Ss5|9At5(h|HPa5pGwhzLuo^!pa3bFCzHUu1`2ulw^%1J`wd09SXI~{Iq+}xnT<>oh00(?SH8Z5`*!2ex};lfTF zfX9XAjO01xUINndsCXUAonaM0Q~4^sxxu`;4evqlmaQ`QjA+d1QvpC}lb^d-%Lod6 ztbuD}zlVc%+^)&Ef9kqeV2WEWOttI&0h%>bzbgC98>6rRZ z{zGz*=94oN6)2BT9AWeKmao!9cp6T6^>K>ld8H)4wP)L?O=;Q>gHfcsZU+T ze0-pX0gGun^b2ze`^W~rZ9i;UCVaw&ABva$ns|O-9TdFgF_oWAZQ%GMjTjVL;rKV? z?_aC8Dz5b#QtKwxDQ@SZWl)jFPP>YJqyt_>sI>LV?vohx-cW*+aXuiZ>Q z5#V(?yykTMmNL9TIrZsCOu%iUip99I2^hDX06H%Rz5l(u?I{foPC`G4a-kt3A zlA&$?3)>?GGthyF6OF&aLnMr#x?JM=7fIR`s<(R&pycZl1$|1zqxCwUXMXhPg`8e2 z{b&L`V5d&!ff;iuKv$G6*2A=kp##z$_S5=-3<}_R-rHE&o$nY1gOM{wxl5Igy8XT6 znFaAa@kuD2=IVY!NLHU&bNZZ60|D~U9K6e>sf3S*7N|EvgqFh5ikQncYxS39B=n)m zbm_6x|Hr)Hn=WeIdp4t_$>w%qwh>JSEUR%El@UkigXW%Y7O`8AB zIoA#*2X8P`>TY{U+Mld}=Gs=!&?R)z@4F^PnI_}-pkOMI zX*ZNlhXF`L9%}g!>N(>6I_^_`iA#v{B?n&QUNJT&*j6B6C<412e+4EWl7{f}O?qsx z=F4P1scx{WSR)0lfMA$(WJlv(C%&G!=qx`dRo<^g|%Prn;VjLoD{Cyf>T`yzb$vYF-c}1~#zZ6QASHWilTv`uHx6 zPY)`*OO34Fkd~){>JA3fZV&(}Vc3WGREH!N0GK__MIc^_Kd1cqvc12w`GF*Oj}07r zIe2b#CrQFhv#S>H2z~w;KW%jtuJeE;k{z?qXr)rm(m#ohXDgOtd-OJ81WIggA#U`J zr2-ea^Hi~fK%F-ZE71=x4_x{g7izRb9Dl{m{&=>1dJq&ems5w=o zO_E;&xWnnH{x7q()~8eI5KAQqn7&|V!1~1Z^!mAz>X_*O^?P91SmHR4*a$&epR_|* zYr9mx$<0T^QL)CKt%%Ar1ta#z+2HPr&;Qtv^Y5yw!s)=`eqo8BXQQ7T!3W5?p<(`; zH3~Eb8Q@_;Je$1ZxuDNbsh)oP+yg%eRj#+9p_ae)Nt*R&l)?H^+;}&Ost)wQowYF_ z-2f*n#Y-KbgZ`JDpGgFo(SQP@_$Xj=^Un$K1(6v~ZDm_23l152!$i5&an=uU=_BV~ zfV8$xC=#U;tntv)7nUWJ9q{t$Ti9uAAr3|&!wbF4KYY7t+rt=G2|M(CsbMoN95&_( zc#+?n{K82uKrB0-CQS`o>Rf4RIkK8@1#AWtX_rZ`QfD|jllctg3!tKWEIy`%Edm90 z*t3)3A7lxop~rw6AOIB_%@uA49e_i@MMb^ySl0ib5AZXnZ(-V_`Jz#LIKv$>fG{^0 z>ZESS##nSzJGgao$5BOU3DFiM7Z_+QcyA*{^Nia)ScdMkwm8Z=RtG4j< z49oUh?X4aslO;rmhOKrCy7xuKmgCfh9m}#(5rBEF9LB-v#-;2Pl8U9U2yzuCs6OS{FeXvgWo*HaW-PmKRZ+{>BWN7>Fb9jgr0+x zUp=Z`s=w2eo`FW@1xZlIsgr3)$&(=Us`fHm1=*lJOyMZrc)pR|Qi}~|t5@yZ9jroN zXZP8@V70Fwk#P~EFsW@}24ra25yj}%1}RMcLnZ_C)p*H|>E({`hZ|-!5YBW(zu0~k zP;aTKC|m-HWy7hD^CV%R((ee6EX?msM8MO2pH^L2B(I;nVmYBthPB_Gbbg;!t5N>( z^|%lARN49Ut4uz~wP@$?oCoPGGnV5Li*-`k3{ktK3LcjMDz-rSFB${$~g43*nlqLN8ulp_*y0digL5IAVtZA99L+o z8F3{*574h+A8WR4EGV2Q7)>3Au%eKInhP@`WBdFAD^(iayG)|!Tx8!6fl)!Qf$c>U z&pmOGrRsh6(v*rkL1=rv%Lq#P&7itQTsc=6gBn=%4{m$J>CI2f@EuA>I_dNg&ZG99 zWjJ)QsO`G%cQy-G)zL;y87;e>vqB;@{)ikXO=0jUhWoU9k^@uR)p1C9KXN)oqM0Vy zkP2YS+YtK6#PtQJLKjfGAs13rzzqk+wH}J;3Z@EzD%XTB@;Nk)Sv+>hQ)CJREN5_>fmNOeU{W=}K| z`sk*MyXe_&dn7r9k;*_l3oP~lGoB@lM(TbZI`t(2)Drc-ai9UDUh<64n?+Kg=f%V+ zD_}k<$}rgYk)-I{p@4l-9LKgJV&O6slYS4FRng_2*kYNaYXAQ|vIs^Y9lDzyTi1ghW=C^QrK`HVldyqd;e(%@vw*`w0j!z%(H~ zC14xw6|eOJoxo=fEhEuu;R3za#9=#N@Gs^L?8)-8N@{~=u=b95`%*44sxud1Oel0e z=6Z+~Sr^8N{Fn9%qb}=%sbpnWS`b^f; zy;zAH#9!fY#0#bM4jI+v-&Us}*PbqNap9yXdZ;G`o@TpXgb{FyJY90oI46X)KKi&< zl5SCef)?f*mG|TQ?a1oBH{{BA%i~2^xOk!}2^|%!HfYX5qN+uDqxPl{&kry~m)rcP z-u(mM00PcN1e~SUJhrp|bKV#ulIQsF6dXTo-`=ECbB;W%Pa7zmr znj_OuysIOw%(R53_^{dEW59QP(Bl$^_r^3%YrtSXg$ZL3xL#ivq3bP-oWpb^9~7f~ z!W7RZ2Js5H!dk;M5?o~icl@Y9`&+>6Y#Mc}j@Pv=YlmV6|4Z-QNI ztl7?X;m2ioR<4r`>i7FpWwosbVdSn@od}W)ZpOL|AucRoWHEYbv68Y8W@l;sm=2*; z3`A~36Gv&a%p1pl?y?e)RVTHN4bO3jr$%>G5BzM>CPi|iIkw&DG!Ji&G)3$@6lOKP ziZ*ZX%P^2gbqI&Q#+i=M$wN&kz$Azuw11kfTU*iO;T#F4*ZUmeo2;Sx+1Z{y@cU>v ziRzpX{8WkT^oSJeSR&%^@Cr9hCO*6aFo~MNYJlc0p?v+K|?_Xaq1h0$SAz;NO$o7-jl71RMZ*OU8MQqfR znLVTYVY^vx6Um6jb_{Ie;ZtXkAHDd@-IHW8z#y0iV5_YPeF{_5H1LJWeIx}pG@IUC+)1s4qkPHhJwh~WfO7J3mjd0%3bOy8T_l|i0&d3Q9T zHe(<({#)Z3h~?3m(L}a*(K?8pGLtH-RJxnip385zmqRbfLQ5==YZR zw}Mrd8!d3_JUXj!DQ1i>6NfXCt*29Q25VIJ;%o;gC}}{J85a(Zp?JGcIwO%@7S2g2 z3G8Rgz-qo>M51T$6HR%2bSzLG zL3`P@7z^MxMnV9m0;AMRpU>f#q5g_g<(9nXppLYDSz3(mN(Ch%(es_S;0Yx zN{{bbJnZbl-~zQcB;=sn(Fk$073E{Oq%FgeBN@z8@k$r7e;YFhS=)!Z$3}6$2<62$ zHepNzOrL#2kz9$YvEqf6&YoQ*?*m#KfA)|3)c)Dt4r~fpNX2MebhJ<`=v8JpvSj?V zF;lKPIcQ3qE7vt{bEZ#P3S82=L|G~3YF>>AI~fg^oP0P?@cFF4_?sxW1aWOCl{m2Z zke-7v4G0eRUIJpcb&)1SNDyNE-PpH8lrysLpz-eXX0zQQHBZsmrz=n~HMou%{X^}M zSyJ<_iOfcJu*YzOXkQ!|yXk`CBuj+V?Z9p?BWxx5R~kLAShOlhdr1lYoTZ=rkooj5T)hej^Wz z7GfNCj&k>pXFtaF8f8)LGtNe*nUadJf-LC3QT@y~VMV#cBdheszIS5cIfjEBWglX# z?m52Q_YDtma?;=4cKc>7Le%a=Wz^2d!a|B<#HKG3tg|iS3lNNdE=CwUBN89l=Brd} z)EmzD!q{$#2L^*0R`zNj$Z+mc>RzznGJhg8cG@wM!3E+EK)0FXv|h^6)QP42=eZW6 zRulf26nUT836!jK99hN#za?@ZKJl8mWtV}fD6KpQPf;2DZ`Z7`FrGu*L{Ll5SBlGA zxo7R0J37QsEt*(>7zNv?9^zTQA5ua_1;{kRsu7XQ$Yr;R`BsH!eB1Y4J(>&rrh1D- z&^(~h{PN-~U@7|5Cn$?xk9ir=7Q+HG-X@C!t5CjEdRBAnWlj6Vl!2(Ot1*d2AL(i=Vt!;`0Si$BBs8854WYTBb@H(ZC)_oWV{D4lmegDx+dtZTD! z%p}Q<#u%$$85!hTF+_UCxWo^n8fK(=l}qwp@=|%vg~6QZC0aWrY<^CfI1h7ZltBwX zFKvHY$H6VFmyT`h1^D+tLi*%qimBHJ)S!)Kr*%xF%Ke=UF-xXbU<15BD|e=8)|;MsCcn`+N9$6ZwhC`Bw_QsG zN53&xgT!eq2uD#_c6M3ZB+@`=wqpZ5O-RkYc7FNtH~ z#}B11Es(^y6C{N&hkkAj9lNv_jGsqNcLEllXaniM*fKIOAKzQMrVw~qA0DTi?h%5c ze>;^#lz6_Y%kRWI`2-G7R&THcZb!>t4Ha>LW-d_*BDuE&`^^#e9ZsiTLw;T^;ovqgP`S6Hlm7IxSb3XiQ0ruN9X;?Y{S2oX|#fpRu} zY(31@Z(C_2YcxKhLX;hT!^)p{7-eYMq|aDEg47N)cwE44BMB#c6HXJg9Hmi zKKhDleLZ>WSjt1tJPyuXvKXze%#i`I2_utt&?Nw%< zF--ws*g4Lihon>>M#39v#JY@j`Ex=7qdNJ5UnT3Oj6pvfUS97R#2^r6fCMAECn_Se z!W3T8A8_16{EswHuymX{wQCZ81tf(G4CIl1(4Ab38T_p&C0#5e6&q(8`g(;y+fX}^ zmAzjJ@{sf&;}XzKQX?NW)~^MJdTCna_G6mAhdGF)#nFX!U2gABJK)_Wy`{cR4=sMb zeE=s1+l>UAo?4)!jbX2@cf#=8Ib*e+Cb#KDj_Se5WT`nW>b3+{+SVC2dPwV~(XVXR zwP&nwKZFZ203)DMB4bgic^2{elz)KZzN%y)HJ6lpBIrkTbc|P^kYe{e@$LK)c+O@9 zM2bDDbb~-o;&H59$#BWQMA@NmoJ0KD`A<8FPz>cj|5};Ayq50vLUxH3~8i3Zfcb>FN>kB`mnvG z(zIOM`h4X3w)%_J#n{BTj_gi{j*PI)v{5o({a*5V>is7^WB`LlRP(!XjYqfBFl6;=sIR_E|Rgf z7V37E^GQ=W??df=caPf%&Jw63_dD;kV2DmQKa?r~nCcZ({%#qF-DZZ8HAS+Z{MW>L zqmiFcR%$nss!U;~0TK#lIa#)ODtWszB+%XXos|L6<)r1$=?FgGPCyNjGMS8OZ93g=iIc>e7E`iq+s!cL|PEtrGB zP(v;xY!Z7CV5!3RA(8d!`WZ0=QK1PLSZ8u;Hk-p%TNbzjt$+Rgf>^=MP& z<9EYy##YX*m~F4U332g1cd31(z#>N?bbMO)phl=^x}!6cw>Ji-J}3Pc?rKcQHU+h( zpm3$4rcOmlN`6;&S);<`g?M^)oS{lBlN{xi{oMz?QP|OA=!7lB>hWLp+0FS6E32Q+ zy?%lq8zow}yk!68G6zz?+#?5pHy)Y@Rt`|^$jbMY?Dc7e)F{4}POkr+G(<%5!Yo~L z`u|;zd36o{A#QKR3c!EYV(V6DS%k+G&<#{qhnka5-j?XyWOcJ z9(=xjo`m2hvu_>qwNymHrBuR8Uu!?(yVtAXQ2DIK8tIHl`D>TJhCEpfm85`%5}5-mk%OC7haBPT0Gs}2UjawSad0MA6G*7g5`gTz`&=|NQF9p$Bfew5IX zAJ;B+D1d+$mX!lxCoPGlBK1l9PTS%i60wuQme)j|4aR$^5ecPcnj{Z*`85Yp5a8!z)$+FC;ZV(dC_fqU4Gn zU<0~exUP3QA4azbSc4e<9bRbh&>$%#8Ys|O!DZntV|q?nSZ<}($8j9c@w&Xy!~SUF zL3_&VnHUKe%+Zd2{cHk3<-YzxmSYMxf6Jy(%Bb(#tbBziJksOU#-wmFnOpG{RWAk; zB5!^g0~4;9hVY>DY{}l8flUgmn7wvx7Lxs!2++9QdFKHCLWu0mJrLmgrf`7oCoTL< z;D7d|G!U>|y$vNG2E;GI2s2iVWrqKBU?v0@;iNj9;f=ieGG#C+QG+AV%cS0D5#p+~ zaoq#xMn1KQ8e`fo?*-}>s&n&&!IZx^FaPbk332g41!6iZ-Gn}oRyeu0x8cNfCK6{yhD3>*r+A(9LJ9tVe+ z?~2KbRR4;??Eg@2w6DoT=5@X1o3T33E|Uqe{e1FNJ{DQ*s>BK+>PO)K{N=i_CNRO# zHv$^?D`$3lN&0&up6!pjtl^!S&p+S}yi$Pm)2u0v8JHfL(v>Fi&V7I+@v;lFubJiw z?^l{>Q}Na#GzTI69HhA*UZ@C@62z7{`9J%iDXffcqXg53npK;XBDP*8v!49mRl|?r zYTbeR;TOw4f$QmceV+(b#^pa8)j7y!Qn;wA#UqMwItrJvv?5r$B1#&k*RR#Ti#ZXQ zTuL?obU++eSE9#e%wpfZO?Nvd_{S4!vf) zF#T0Yv{H3rP~1M7fJxTKhF)Vnew&o~SWG#sw#RCXruLCdRr_tH(Qvx62=cj+K|c{g zm*S8CI&6j%W2F_{clA{EWv&~Yl*d+#n`;Fr$&%fdBBM(2j5HCpT9EitozX#~4>_)~ zU=;?ZrarTXE2H~)rPqTK_o(!I|GTl(&VD(k#$YMN^CXwvD53XguA_Rp56TFFCa@-; zG~mKu!DD)vl%yTlwl!6HE6nw+I;_#(y4#;e2;4_j6G7cy;&jW#CZIb^0E}^Y$zxA2 z>e!^ohT=_O<;M&M;dNXrmnzhy_Zj$Ei_V43RJac{CfsG%$1_Au_3Uy8xtWXxfhsaM*=@s<-}fO2s-NQ>rP11!D^3z9efRRK&+i ziI4y(?_uhC%Z#0z$I_YJ^cPQzD4MWlZU%U*U|;cxiY6~qyO+L~nGi10YfNv8(=u7l z8aeEJ78L+es2&DDXmdsL2ncnYN_9qrqn7Y_;VyrRiy_h(3BA&z?tgQ3+c#9@O|OQ%+RQca9@PV)nt13Qg4IO9 zqh$RkJOfvPAZ)zI69KD-(%V3|Z zknQz6-K@vsU7=}mGI^1cF3Bg%0Q9fy>fyV8#r=b9H7}IV+!cB9JOai4>{(=Hp2rqa zzAb}W;0}S{#gOOzag=SK?7otE9*V>)kY2t;rOuG^NcEE61oVUI_p;jie=B(0%Xld3 zID@}`|Nbk7DPuH;r6AzX@BI%A-A8j|PG#u>_e-r+nA>Wkm1J_)ZVHs%PpC-hFmnZ1coeml$1 z&MON_FLj4~SRkY1;YxiP)wd-oIyPKA#+{9q+To}Z(;DR##6Es}rr+Ac@jLR5g@TV3 zD>glvTC6LhoHQVwrc4aBMaxnAAw&f(rF=?2OO1sSXam3pwx!F%Bq8*dFQek_i4@{ z*ejUS+b-}dVoOA}h}d68nWZquIJ0X~*NL3pLKu8I158r}t~Vwnxt2$jFTTF_dC5F7 z`CG72G0l6z<&R!Z>xMqVgLWn=WGo?Ve*RCiRJ657Y$*0`fhbKweY(VK)Be8KMb~$t ztdztgT>61|Xs*c9Y2@9RSWLg}xE@h}n6lnPlYjt?Gsa9BblX|==%r(_^EwSr{@;w% zXrp4pKl$bRIH_E*+CAad$Pud@%+JUfIVI$QD*u1j%k7xVsYybp{w!8_rlQ;`0 zi7U6v+adO&3mK6cBQFe%{T+9$tQG1~di>3Qm!aKJWA$#(jeubdl#P$0Mmqf2*#g zPpii$QB;(fia0Tk!o5&7iKgz4og@dR#7~trCyg<`NQ>t2x}}A}AFSO>O>oMd**n;G zRS36y`T*8&%QQL|Gt;X~oEx$^x8n$-z~yH@zhgqUM`6cWZaXKlr}r1k6}X#q{O2G!vkfb z4sZUB^`TIxH`w7}@}?+W6?TgBVKt1l1)VvD3nWRY6=Ns~{$4DgL z^%N53AQ}ah=eBghQRTKLX2~L!zI6Y%)s;MJYf444sAZ5h`*u2|0u8s#i{tcuoR}#8 zYWsRmh2Z_qW|Xt5@q8~AEkg~lEg?|)uy6Vg4V1vJE*jjzt}!$*_0l26qQG;zj8{tR z1N2~y??aK4u1})B&)04?6G9O(0~B{IUj^QI&c6NJ+pgnyAzSo~e{F1mWzwRp{#Sk& zk*onS04HFhfAELGHpuC+#+70j)LgJlL@#;2zjh;<3GxB4v1NXK7zvw|R9 z%rLRa(gX?7M||the>w=47wqp}UaxlW@5B4-i~EVj*zRq)I1C%_uxw-y=(Kx5kLcuD0 zfAMt>*_@IOcvA2nz)VH70?vttPqph`DQvli#D9uUuK3_3@+;;I0poKDg-S(I?`vgu z7laz~6D1)DMeo1r#zX#Gy6vNr4=TGZH^zDWlv_{{(tvOJca&0h+Os;~R~4t)}MZWu8$|4^4`DKC9xCFgz7%*-$QC(?{-xL(3i z#HjgljpMAER55k-G~ple;*0sHO#ef~v(S^{@kf(lBemhz_nlq3?>oY_e>RT-R`P-f zK~gOywf$_}gLuWMMYe!k8H|;RETOp9T-%qEscu-=aHXigzCG+1d7*28n!Rw;dp_+$ z#6fs_p5|xIOr`rpoh-7tH<%1;Z+}p`FQh%JOEeBR&Vf~Y{cS)gQt6PqtN4(Z;=(|h-7$J*Rln?3mDMpy zWHf+HM~h`#an>Q!%+?jV@oY)2+|w1~^bfUduk8w)9W)j7NZWfE%N|7~&BYdfe%<}^ zd`06=_ib}Sf)i$OY01SEi>KJi*BNc(d!ZIYJhap60gmE5d~&WILG1_m&$W13C@ecro*#YqV>3 zJmIao{Ck1Y6Y-e-vosj_)}dq)!lk&+pR7OnZ3PJI5C|$Mg|X64QzOcmOl!Z;Xi?F# zG`uQGKZLYW8)*_%-d8(KCjr{7m&2vNxTC~XF3zuZ?NaLQqw82_pXxZ%6lXxRF0uH- zCCz#`tn@XRB(1fx_J+L)vQWnQ1N%+vo7ZP9zxj4K&5`$GufIddK?NV3kFK&6vKhb5 zb&p{4TI?@NZXd&{H-s($ds|Oh-bmd_ultP7jPkETNrFd{2uIym2y_i~? z`g&<^ne@&LU58NHgCv_urc`?*M|Dpt9*oq9=WtB!DzE z13%B{afz4N*((_diwafdrdPqg3Nix+lsQx*IwvugVgVk_^8qZ0fgbi|P$$TAZh?%B zv9!b9-#`&jY)_HWW?NcOa8^ z=p*n_1=IIdClC5hJ-L&ee3v+ck(}kZ_|g{)S%Xbc9_!zF;RP=nMY{%s#(=Vd(FmjG}ebB6w9A@K;mE~nLJTVY{rZWZnt!MGtbkzCy zjUPGp?lFT4Z|L`d!$idT-AzaRPm+I!34rga-10Od&=d-X(cc{y*=zdsXh@-loFn*iO2R7s=NZO^ z_yrql0-@Fjb1Snej9mMY5(*V*WC1DWb`?cAKb7Y;F)4K7@+Ft#iv_%`tzl5l@FQnY zwDvICsNlL3d6a?<@X7k_7B@7mc$xpx-xbW72BLX7=I8ZDmCwMByrD>$7$`>FSh(Iy znQ^(YV@66P+PSijAzEGqCxwQf?{}KBQfLiHY%+u{p3_kH*k|RnZ_B30=8MrDt=?YU zu;YuoFKNpQP;0_RZ|X z0YF5o^$4O#dv=NfSRn)PX?=HjF-Ooyvl0@n*aV>*&@aSx$yNu~3jnR%RQ-I#f6ODA zkPgCxeRlp)S{vP>DD*%cK2eH4Q(+ojxt)%Th`#^GFQAy`U!Q+Z=lM_1C5&RWgHRBQI)U1&&>6CdG!na zakze@;XBB{oTJ)sptN#Lx~*NfOORS~Ob?}+_K&McnA@cQtQ z#c^LIDn{MYd&pwfQ6c`?Qx5+7D(^}5r^|6~$xu3<+lerZ=Z97jZ~ddNmwIuAMoQ?u z)fnP6&`^|?GQ226X6PC4&9?9C>(_ffdu)d7jo+vPzFF4!h>@@YBvR%rS1#Y+JSZ~# zSRw1{UJ#((yS`HRAvH~E5CLWNN!7b$=z;SCn7MR8<9sZ>MO_-Hx>JR9x12tbjsgC6gn3`u%C-n1XwZ zI&8crgB3&$vz|w}7`sQ_Fmb+LiRdp@Q2)FV`lp{pE#>pW)iSZ8t1UXsk{Y41p`*S& z2!NKcIbji4gh+A8T96_Y*lWLuh|T^~U*CC?Lro^eRQYo+KT5~+^pfJS`3qc)SmM{a$vt!2;XqodwfQ#u|`g=lr{ z!Pa!%vGaukrdygHIla&siO%z~w!$a>vgZ^x)vCk0nG4Ju?;Tr3gGL=D#U zk)0loNvcIj1C>5Sr5VgQ5F*wZT@oy<8}t0(evi>na(ml*=FkE*q*J5a6XH+Ny=!cL zVtwH;DVv`}D_QUt3;PTBwoOy*#G;ui*WU

Y~36B(#RXycU<|=in{!ubZEwyYx!3 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 iYC&Hc6hg(ja`6v9gjIX_-qO_o0000y literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/LockDistract/wallpaper_2.imageset/Contents.json b/QuickLocation/Assets.xcassets/LockDistract/wallpaper_2.imageset/Contents.json new file mode 100644 index 00000000..f796e3c5 --- /dev/null +++ b/QuickLocation/Assets.xcassets/LockDistract/wallpaper_2.imageset/Contents.json @@ -0,0 +1,8 @@ +{ + "images" : [ + { "idiom" : "universal", "scale" : "1x" }, + { "filename" : "wallpaper_2@2x.png", "idiom" : "universal", "scale" : "2x" }, + { "filename" : "wallpaper_2@3x.png", "idiom" : "universal", "scale" : "3x" } + ], + "info" : { "author" : "xcode", "version" : 1 } +} diff --git a/QuickLocation/Assets.xcassets/LockDistract/wallpaper_2.imageset/wallpaper_2@2x.png b/QuickLocation/Assets.xcassets/LockDistract/wallpaper_2.imageset/wallpaper_2@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9e8114ea04705ceec3fd93693f8c75e8734c58 GIT binary patch literal 46690 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 O00001(s&W3AzJyXTS5 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 z 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 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/LockDistract/wallpaper_3.imageset/wallpaper_3@3x.png b/QuickLocation/Assets.xcassets/LockDistract/wallpaper_3.imageset/wallpaper_3@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2a66416dcaa5e4610b0399b2af1e9477a1761b0b GIT binary patch literal 85597 zcmV()K;OTKP)q;@#czbGG7&%Iu+1JzH=D@wm z#@*`b`RV5N*xdEZ$l=q~@8ab6#lzdx(dydOK_!(B$3R^Q(i|)TgSlir=8w_1Ubh%Al+A(9hb}?a$Eg(97e@%I2M$utCz^3kHO5U!0E89(aYYV zmdc;m^{}efn{a!gb$`9h?YFSq(wLnuGfLp!^US8T-l(UvvBI{Ih9%)8^QtH{QEgu2G) z+_k-mezd2g!r$EPkAb_(jgz^In3SHrp2X-%I*p^M&TzHitjOwKNSe{x_M4-|!L8UR zDm=oWw$ic2)vmdmf7zUvx`ueFkiX=Smbamww7<6Gx1rISlE>(#qqMu;!nD!6y4N^5 zRg;Fms;Ilthm5&ycBP}Y$Ftq4g_pag)ymiOi)_H4h~TNT*N%;(wV%PStiJERy1c#L zhjEpxeTKAzj-j8vZB?k=z0Y%JoQjXKm4K{8Mq`A7o0p5kxtZy~((t~KoSl1(n}wXm zy6k*lv)1c!7tidvK<`qwYQ`NtF2gXb0000CbW%=J0M7c% z_V1x;7B}O(doMAT00Bz?Nkl@GS&KCG(5 zH^c(q_ZG1UzFyq{3(aUwKRXajTStgi{+q8|Dd!F#Rg0|nV|h66dVkXai#>qH4$wBY zmkiAp;(Z?@64_@~9Qm_d1%WJ*h{&T0NYOf-L&YPJUC#c17!n3KR~Ma*W~Lq;A+{Pc z9K%5PvBQUH@rW_PL4Wgd-2JHvrzRIOA5&dSxtMWDvis!4RDv#Q=f#i8f^un6r@dGS zy14R;2P+D-fL&@!Wi)Q0du=i0&BkraY8*D`h{1zP8+YT{t)v9qjv7k}Wu&sCP{x(n zpu~qOpR!SAR^xg(B~XmnpgbMS2EB)k=`c=V{{x6|+@QR&FdLujoX?8dKpe**ma2>7 zBqW!DWRIoHshUlY913DRCYALN3dQ>z@&LX-4!I0u@SJy;r^q|?`zH*lm-+DfXSC;bX6fDN`Ac^6Z>QW7Ccc?xisODQ19)c$Y3+T&mGFus?9qXc#(M9$MF34#~|0Smw~NotW;#PrXK)AC|+(y6bk8g}<1D%dGRjr6djl7iY2 zp&JteHM2r!LrmL}!w`icwKmb?=1K8;IzH3Q$=XjsN6X)*M;R*ebbr{UQc$z%&|`oW zv%$`(x6O0-L2DE!6>(u*)8nFCZ5*JHi8xV#Dca)B`0@H?;Fz=;3L7~x#uq8{7~{mm z{Fv=?9NTRo2+wJ$kzN!RmHk70!1LeOmSs(6Z}f{D@ZWuE6B zb>~w}I}kwzqYhT1<)jjNwB`JIe{_1#;X~@;gDbQzwXB?PiwnmU!el3hERnnpHtWR# zJ~U*2mh~bG!_4y$e<;&cKlP@iAsG^F932^L6}avmVz%N2>z|T zDKel1&0G(Mx63##43td@m=a^Sg2^ka$=0Ed^R##HI_y@(aSI9=)MNxyFsx{cL&L({ zc{`s)AlN{Su)$Y;ILBH`$(1*s&lg}_z>EEMyM21vZa;m*2=)br5Te5fV?h9Q0=Dt8 z&|`=~E!AT%x{K@0sjT2fv+X7=gco?>4qZlol;Z7ntJNx;KR-Xu%`#tk-l{nav*N=c zN{M&xpSJs@mIIXrD{yO~2r>=A2Y?xt+z16qh!w(dvwRBr~Nzv<3 zH?RL{&<%%Fo_4}WVbC@($^ge>lF&+OzzqBgZWvYueZ1R|J;wxUeE$6T%a^Bv_Tmw@ z_yrQ9(F3gu*|9x*pmGGYht)nk%7;A@)lwGPLzlX=H)-)uaxUzphduPPClCAY`29Z5`}XPU ztAe7!`fM_p_s#phN$2^@^J^v>{(bMf_vCsE8=-JeNX8h71{f58aXm#0Iqh_77!5*0 z9Qg3UT|t9%3}%b@YE@+Y{g{LjSL*QTsHp3BOlf0Zxj&~S(y!H>~E&mm0p>8=0c6sLC?1XuL>{yBG4SY5#`VV8)AwGv zdp_R$-xR-0lNyGd=|!z=3b1B9Z3p0gL5^5oK+d<7+2 z+nbwpkC_Y@68;2^{$E~q&Mi>+S#!AhJ`VRd)x2 z3bizf7>^AQIY>drV{~@pvQ0$Czj(-bH178P)_n6T53m#-vE1)X+^%&*ZQtjXi^r|| z?Rva^+>U!=;Sod&!GOV+>LrVuGf1_Zl8p_#Pb7ebS{1T^Eri4< z9@BL3^J1@m?C_wqpi^N{olp21yvnsWE~E7hMl$0b?_q^O0UdRHeUT^~N$^MgMP6)T z5-DXp(f(Lf>)})mibo~Epa)huXHyl*SJSWQl21QCd;Bna*x2A}*-#Vf@B<7N`v~g{ z!1AN?D(id1LT~MY(g&SwaVVaRW3d_lgVLY?A#kLkGAI#jXdp74bX0nR$b_&^XgSi= zw^y(o$Fi`59uV3OVpw;^jA^#9hs6XA3Vjv1gjd2x_0a#~3F)xoY{$`#0k`tJkC2VG zV_>^_G;~}9Lb$&5%fnVS)%iuOg#K1+h$6b}>;D=8C0jK|6p#ZvKnFTd@$hCZGy-?M@i`SYy{gtDt*_g9(Sn@DJ=;ds zJ21>X=n$_GXfv`l<}_S8)TxcJ)on4=dgwH4%>W;3hD-Uapn<)2@6aF^M1XpL2pVee zwE}_XP^?B(RypB7Ua?rDg9%0806rjt(&Ilb(*Y#CIz2r-KL;E|*W8E4b zz-zHnWHNvY9!k9u#rWWt0v!xiyLIpBTIfBvYX{q&X7+zq1=h5&(J0&3VIh(RiH$eC z;^lQ0a)fiteB9rUnXx}2@L~bD!NmCMTTjr|4jX&_&y+AjeTjfE28?MvqG)*6+^L{gI z)nsGRW2FlTZ>QFfC8R^*8V0p9Nou=DX``bN9UsHTI>V+}2c${4j%@b3 za<@2x3uMs#7M>HJ6Q7JAZE#@~s;{Y+lvl;CPZ}%I_MAJ|;1er;r za9~#oqvYvk|M2Mf$>q^Jl|f((qZryQCmPCB%U)0HM^~UCED&xcn)Qq&W$sRKqavEu zPhdL&7Hq38aXZchte+AxW0TEtn_A+NE{gKl&myVR&XHA9Ep{R&k>@i_%fmh*get*Y zHf7ICqJwO8ylKA2P~tllHyPvliS#E#V*nq2SC7(KrTLUE)NWuvJ!y?b3`g6$IM?$G z_hPK}_YV#cULLNd-?JXplueZmzz7w*EUEi`pLD?2AX8B^Zod8c96`tBVUeO!;aE0h zp6*qEi*wV4h#;Z>9NjZO1w1IkLt;|K$}ErJN4ZlJ=3hK{=f^<9{-1C9w)xZ~PEX86 z+{Z$67j^};G96(@J5C%-A8)@UHwcD_L}JUy7vpNg$I$ik=&S27k_~1~458Q6?d!&s zG4n{lUnN#U>Pbi^)qe;Yb`@olc7v5lUOb0W8MfPCqbVU(R(Lc{kB;_XE!1#S$Y>P~ zs5^)KkeG8?IXD(Ki<_&1!}H7A+sgxiV^HO3y0-)yG$8Os%`#1!5xop72k#9zV_Aa~ zNr0>FMGNuuMh{;fw7kG2e6N)xJ{sCa54J&{9igx*vLvc?J=&&%s7es5oyfGr!bAOa z)0>VPBR9@hW2+XMwIC|G@8IrMG@cV9-Mz%0Xs#DlgJei4W9-QIf+m9!g`#9*3^qQ6 z;TVmez&s-xKttI$$onI42u+g~G#r%}juJ0qX2do_lm+3yw4;;TmoHED(~6QW7KbKiSRI;L&&kw-H;n#rUaNbwZvtFYH2oztkyWw71 zu@(Xl_P_n%ZXhh{YdTb>r)>1-y|fy z$3hN6%-fyNruiP@2OSE{Z$MXMLIa5&it*vZVDn#tzd4!V4DXDkX02C6Lo&8DeIG)N zR%>#MXTJqL+U<4@Hg3dj2pJH!x4$0pzHf{F6nD%Z(($)xdm9mw0T*1>YC=-(plPJOn{PV1~qZnx4%=L&S22h_3WOZ3N5hsx9A%bejt!!*U>*t?G2+PPD0eW#Xhwje%o~5%7Fy2= zdKKoer{}k~xBHbC7ls-|1}g9_hoNgBCIvMNg+sn86WZC$YBqq+$w>!GArR6*Jg_6T zcdYv}*pUzhm3AC?0N2#BxE?m#G&|sdov=ED&nFCpaG1rU7ITP7kjuXH2D_r7W@O^! zpVFB4wUw4Y>D&)|-Wr|;y=yxcD&mh(VxHH>*cTU1nV&F0@n}GV3v056m(X0@i*9Ao z8a`@`;8a{Js%S7+*loji5Sy}}7a4FUb5=e_V54OILd$_kxkMc44HKM`+uNgR>DWML ziLvuEL-hpK2Cq#CI0mf1FFVRXPipat#okwYDdCwe`A3|QkDVPc9^3Vc3#U1K1jh{j zoU-iTnm4u+4`-gKKsCcYo0-_Gd&X%kKm%<|&~-u^^Tu0*L;B-to4EqZutX9IiOss0 zUx@M@Kge(NB`oslPGJ9-qkMz#UgA(=foLcjW;Q0@!(f0A-sn4=;5mFW1RJ|~_R+_m zfepw?96>o!INGBo%ZLLU0u2YUl{TD8yDSBcEQJ&(wiAxapY|JtBWE|LDCR}J%y)Oo z9E)Pg-X7pUveT<7U?DaH1y;g=89B*f?UkP8xaRLI5k285%R5>OvxhdFt1%B^nOtHB zY1{N9FIH0sj&&kq{i-_4bD$sQ-ZXE)9>9U$LHa7y8oCVxZE<6cM#TbcjtavjLmNAI z>P+d>Y2Z|24*Rz32@NTl_zg471~hFR#n8}}x)}W(k)$YqW7vk_K&C=A)TbO0jjV!l zv%EnPGb9{MS>z3?r%TOuOJIYtMad*quFz$L=D#R`9eAgb7Aa_`vU!$)A=sNN#j-$T z$%F+CB%Miw!6)L5y*-eTrqW3|00%&)XCWQ*EP>@PI}x166w6KQL`$^O_~KM&a?C8q zA$P8a3XaR17QR@8MBEAr9S#n!zt}q@o->;%!#t9Hn4(~3g8yLMRnfWJCJrcJ+K7Va z=e);2w9g+4)n+yX3}5c@XuxV9w&)+L;b^`8DV$25PNjsB3-Kv)paEw97XU8caT+8j zDMHgnpMFv{Bf`;?Fe4-Ys>bPF6d4`@$Mf@pim?dGCFsqu4&KV8;?5OmP*4wJNIFdy z0>@NBkRHouX(e>98#gA(jmx}8On!-f&0kt4$@-c%3~G`|g+In-x)Y}&?|ayAMuNL$ zeG|KoXM`lWrsyaPaAh%7v98IsPEj~KRa}634#@D{MDIMfhS@7aNWu$rDh{S?tY+ql zV*FWdqWqgXTDuUl!HW_IJp-$uRdOW*4~7{{o;PYZ0LA;CwuVE=VspST2OInI9ByNm zc4Gu=9z7ZY4mbo{&Hvz&_Q=73Qn(rpzybBA4vwSe2blz_Sd5}K5-%CYi_utbT~GE#xJxQPz($QFd-*xI+Y;|$0u|u`}?bTR*p(Y4mRL! zTCL%Cpdrm@MG&7dI0ZWlRAo?Jk}3EPfdg@Dj#WJzc(=?JdA7^XY)Ua4spKn5j6wQ3 zpi~ZyLAqKk7FZJ15PCJ(4&*6QuTWbKr7y*B42KgWAAP*SsWiJE zO2Dxyb`fjt?s8Z|m%`c@W@R~1Dy78UhN9bTO!06Ogd@dt1S`L?c0RAIR8brU-HIzw zH-fc~7T+{|&=7TWqKlxIF6*Q|qy|bh1A>Ae1ff|dp%kHR1RuH!`ZkY%(1oB#7Fh^_ zt1kR^{C>{4x5qgCL{IZ$=H|{M&H2pvb?;1!jXEVU!bibsS!#bGj$PI=4LBX`YqVOa z@X`o|p;# z0hV0Fxu>%uai5ah6?@%f?a^AqtXiF_~F~Lmq{Eww6yY4rDfz;>wTosu@Zz28ufh zW20~JhO{Vk_uO)@z3Qxjs%~o75L8VMdqHlaW$`35*pT{&dXK=7dYGPx=nsV!Jwa*Ji27FlGn-9zfNdm7KEN=8jx=-Q@{@?Q8 zt3IEn&BhHPdPZOaV{cUnj&B(bsd*qIhN!#X2=7shm`SnfMWUJl4#8ngMHXf@%y4+! z+~Mdk8dH(XVqSnl9AGgF2x=w$2?cj;me?pKupz@i)Tw(39IA?q#t9Bg2TlcQh)OAh zaR#Q*@%&5ga%F!1BK@#VU-eCcx1qhHUWoCpnHMq~{>6fh(O_@{5OjC!w8)dUX3gML z;$30j1`b2U?S%{LX~X>aSPS*1<-Ehh0gW`pze&pt92p2C6Gx8YYt%Mu*6J71#C>GM6j^&vQGxmo+KnJ9NDD= zIE07xHPEZV2DTJth%dUz4)HYMkwu&f0q*I1eDcNwIOJ(O=<-^}K@3hd)vadKl!CLSVYN3S{x}Myh|HM%ZyV`!#*ygMs$k>n=6E}#M710dQBMO>L*}-Zs&RQRtrnm7H!(q2uc+ycc#Y~9^ zOBjoKK*XULK!hVhE3psoErpG?SolyP=2euVYNrL2c6kyB{0sr5q$twgYS^czN`_lU zktfQ>`ZyaSC9)TyLvU20qb!Y%v$GQ%OSliMFkTQ?Dq<~XvY&)_fG!pya~`3nf1*xV?( zk@h@pb3{4C=ug_#=4zPt?_ zR43$M)K6Q%hn6IDnc>h~Xo!UwR8Soo;9e-iHjO+`(bbYkQwqib(MoTu`C+h8&ty1& z;|-0g%ylZ1KI3Wy9F@?8jc*&R8vNz(n<} z9^)m-D2PIB#6zZDsViYdEi_mtx&t!T@+iT<7Q#ZOEnqzmnGf$`qS#e0+pw+q8xXQ! zWmrhmAiidO_)y=1@+zaWl`3Jl6j~=X^{`VeFTPx?FVE+5Gab~zG@?7vC_blAF}DLb z^m0d<`FKZ>$LEi<4yQH;eheN#?2UC6W=C+869#?xFM-3aI&?SD zfe@HR=;2QxQDM;XP54Pe?hvU;I2zaMM#7lB^x!NM6Sa?2=ZK@70!EuCN^EopOA$ST zNA*Fdw?;p$$7bAeAN@s*O+RgNa$-dQjcZdDHJ<_)#)brcGAmV%mM8=0SYf=bJ7<@+iencmB}MmFft8PMeme~REgZp2KB;@Ivj zJsB#hzYpjz(Q7tvSEhW0=|U0~n*zfzzg(=p|K-QEVp92)s?w*{ttu(_k0ze5yk>ZK zH4HR#mpt>c3hMd$je{yYcK#YQL=_F`hU5c}RgUV|GCH+jiyS!j%5H@hlGa)A44L&* zAvFV*8smdRq?1007wgleJVu-x#=VyhAIYm*I{vqX1zevuJu7RTKUuYa_bXMw% zg$ocFTXjQrgY0A|Hj3eNw49HrZ&Q5mDn~t<>G*EQYkHWM0ZFbRi$Z$Vstn2X_4R-X zYC-K(E1#NplDpj>NQQKr_8lcH6Q_z93Le@U@rE=F7&9_kYU*GztcAga&aYkk_~Sk? z=~8fzAd3%bCgd|R9q+#`ID!rX141-b`|ekdDRIeakMCBhNJ{39W-n<+S65S30WH2B zo+{VQavdeK>&3CInZ~0-#B!#MM)w6lmoFqTLVoXSc%qSRG`NTI4bxq*=m{ed zc1_1S=1AU0M~dvr*_{vH>L9)H3^IH|_;*YQos}df3Mz>L>ahw6f& G$lD~Q(6`M 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

CXgw8_w$H}Vz$Dtb%IP3x6 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 literal 0 HcmV?d00001 diff --git a/QuickLocation/Main/BaseViewController/BaseViewController.swift b/QuickLocation/Main/BaseViewController/BaseViewController.swift index 4ea4240c..07676362 100644 --- a/QuickLocation/Main/BaseViewController/BaseViewController.swift +++ b/QuickLocation/Main/BaseViewController/BaseViewController.swift @@ -44,7 +44,7 @@ class BaseViewController: UIViewController { // Do any additional setup after loading the view. fd_prefersNavigationBarHidden = isNavigationBarHidden - view.backgroundColor = .white//ThemeManager.shared.color.backgroundColor + //view.backgroundColor = .white//ThemeManager.shared.color.backgroundColor // setupNavigationBar() setupLeftItem() } diff --git a/QuickLocation/Manager/App/RouterManager.swift b/QuickLocation/Manager/App/RouterManager.swift index a2d6f3ea..cf3d07be 100644 --- a/QuickLocation/Manager/App/RouterManager.swift +++ b/QuickLocation/Manager/App/RouterManager.swift @@ -85,6 +85,10 @@ enum Route: String { case memberInfo = "memberInfo" /// 注销账号 case cancelAccount = "cancelAccount" + /// 限制 App 管理 + case appRestrict = "appRestrict" + /// 锁住分心(一键锁机) + case lockDistract = "lockDistract" /// 还在吗 / 打卡 case signIn = "signIn" /// SOS @@ -388,6 +392,18 @@ extension AppRouter: AppRouterProtocol { CancelAccountVC() } + // MARK: - 限制 App 管理 + AppRouter.register(Route.appRestrict) { _, _ in + AppRestrictFactory.make() + } + + // MARK: - 锁住分心(一键锁机) + AppRouter.register(Route.lockDistract) { _, _ in + let vc = LockDistractVC() + vc.isNeedLogin = true + return vc + } + // MARK: - 还在吗 AppRouter.register(Route.signIn) { _, _ in SignInVC(lastLocation: nil) diff --git a/QuickLocation/Manager/AppRestrict/AppRestrictManager.swift b/QuickLocation/Manager/AppRestrict/AppRestrictManager.swift new file mode 100644 index 00000000..b546076c --- /dev/null +++ b/QuickLocation/Manager/AppRestrict/AppRestrictManager.swift @@ -0,0 +1,140 @@ +// +// AppRestrictManager.swift +// QuickLocation +// + +import DeviceActivity +import FamilyControls +import Foundation +import ManagedSettings +import UIKit + +@available(iOS 16.0, *) +final class AppRestrictManager { + static let shared = AppRestrictManager() + + private let center = AuthorizationCenter.shared + private let activityCenter = DeviceActivityCenter() + private let activityName = DeviceActivityName(AppRestrictShared.activityName) + + private init() {} + + var authorizationStatus: AuthorizationStatus { + center.authorizationStatus + } + + var isAuthorized: Bool { + center.authorizationStatus == .approved + } + + var selection: FamilyActivitySelection { + get { AppRestrictSharedStore.selection } + set { + AppRestrictSharedStore.selection = newValue + // Drop enabled tokens that are no longer in selection + let apps = newValue.applicationTokens + AppRestrictSharedStore.enabledTokens = AppRestrictSharedStore.enabledTokens.intersection(apps) + refreshMonitoringAndShield() + } + } + + var applicationTokens: [ApplicationToken] { + Array(selection.applicationTokens) + } + + var enabledTokens: Set { + get { AppRestrictSharedStore.enabledTokens } + set { + AppRestrictSharedStore.enabledTokens = newValue + refreshMonitoringAndShield() + } + } + + func requestAuthorization() async throws { + try await center.requestAuthorization(for: .individual) + } + + func mergeSelection(_ incoming: FamilyActivitySelection) { + var current = selection + current.applicationTokens.formUnion(incoming.applicationTokens) + current.categoryTokens.formUnion(incoming.categoryTokens) + current.webDomainTokens.formUnion(incoming.webDomainTokens) + selection = current + } + + func isEnabled(_ token: ApplicationToken) -> Bool { + enabledTokens.contains(token) + } + + func setEnabled(_ token: ApplicationToken, enabled: Bool) { + var set = enabledTokens + if enabled { + set.insert(token) + } else { + set.remove(token) + } + enabledTokens = set + } + + func catalogId(for token: ApplicationToken) -> String? { + AppRestrictSharedStore.catalogId(for: token) + } + + func link(catalogId: String, token: ApplicationToken, displayName: String? = nil, iconURL: String? = nil) { + AppRestrictSharedStore.setLink( + catalogId: catalogId, + token: token, + displayName: displayName, + iconURL: iconURL + ) + } + + func catalogItem(for token: ApplicationToken) -> AppCatalogItem? { + guard let record = AppRestrictSharedStore.linkRecord(for: token) else { return nil } + return AppCatalogStore.resolve(link: record) + } + + func unlink(_ token: ApplicationToken) { + AppRestrictSharedStore.removeLink(for: token) + } + + func removeApplication(_ token: ApplicationToken) { + unlink(token) + var set = enabledTokens + set.remove(token) + enabledTokens = set + + var current = selection + current.applicationTokens.remove(token) + selection = current + } + + var shieldConfig: AppRestrictShieldConfig { + get { AppRestrictSharedStore.shieldConfig } + set { AppRestrictSharedStore.shieldConfig = newValue } + } + + @discardableResult + func saveCustomShieldImage(_ image: UIImage) -> Bool { + AppRestrictSharedStore.saveCustomImage(image) + } + + func refreshMonitoringAndShield() { + let tokens = enabledTokens + AppRestrictSharedStore.applyShield(for: tokens) + activityCenter.stopMonitoring([activityName]) + guard !tokens.isEmpty else { return } + // Near-daily schedule so Monitor can re-apply after reboot / schedule boundaries. + let schedule = DeviceActivitySchedule( + intervalStart: DateComponents(hour: 0, minute: 0), + intervalEnd: DateComponents(hour: 23, minute: 59), + repeats: true + ) + do { + try activityCenter.startMonitoring(activityName, during: schedule) + } catch { + // Shield already applied above; monitoring is best-effort. + print("[AppRestrict] startMonitoring failed: \(error)") + } + } +} diff --git a/QuickLocation/QuickLocation.entitlements b/QuickLocation/QuickLocation.entitlements index ca0d937d..4b2e32da 100644 --- a/QuickLocation/QuickLocation.entitlements +++ b/QuickLocation/QuickLocation.entitlements @@ -12,5 +12,11 @@ com.apple.developer.networking.wifi-info + com.apple.developer.family-controls + + com.apple.security.application-groups + + group.cn.zuomeng.jisuloca + diff --git a/QuickLocation/Section/AppRestrict/AppCatalogStore.swift b/QuickLocation/Section/AppRestrict/AppCatalogStore.swift new file mode 100644 index 00000000..f4542dc8 --- /dev/null +++ b/QuickLocation/Section/AppRestrict/AppCatalogStore.swift @@ -0,0 +1,112 @@ +// +// AppCatalogStore.swift +// QuickLocation +// + +import Foundation +import UIKit +import Kingfisher + +struct AppCatalogItem: Codable, Equatable { + let id: String + let name: String + let icon: String + let keywords: [String] + let iconURL: String? + + init(id: String, name: String, icon: String, keywords: [String], iconURL: String? = nil) { + self.id = id + self.name = name + self.icon = icon + self.keywords = keywords + self.iconURL = iconURL + } + + init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + id = try container.decode(String.self, forKey: .id) + name = try container.decode(String.self, forKey: .name) + icon = try container.decodeIfPresent(String.self, forKey: .icon) ?? "" + keywords = try container.decodeIfPresent([String].self, forKey: .keywords) ?? [] + iconURL = try container.decodeIfPresent(String.self, forKey: .iconURL) + } + + var isRemoteIcon: Bool { + guard let iconURL, !iconURL.isEmpty else { return false } + return icon.isEmpty + } +} + +enum AppCatalogStore { + static let sharedItems: [AppCatalogItem] = { + guard let url = Bundle.main.url(forResource: "app_catalog", withExtension: "json"), + let data = try? Data(contentsOf: url), + let items = try? JSONDecoder().decode([AppCatalogItem].self, from: data) else { + return [] + } + return items + }() + + static func item(id: String) -> AppCatalogItem? { + sharedItems.first { $0.id == id } + } + + static func resolve(link: AppRestrictLinkRecord) -> AppCatalogItem? { + if let local = item(id: link.catalogId) { + return local + } + guard let name = link.displayName, !name.isEmpty else { return nil } + return AppCatalogItem( + id: link.catalogId, + name: name, + icon: "", + keywords: [], + iconURL: link.iconURL + ) + } + + static func search(_ query: String) -> [AppCatalogItem] { + let q = query.trimmingCharacters(in: .whitespacesAndNewlines).lowercased() + guard !q.isEmpty else { return sharedItems } + return sharedItems.filter { item in + item.name.lowercased().contains(q) + || item.keywords.contains(where: { $0.lowercased().contains(q) }) + } + } + + static func image(for item: AppCatalogItem) -> UIImage? { + guard !item.icon.isEmpty else { return placeholder(for: item.name) } + return UIImage(named: item.icon) ?? placeholder(for: item.name) + } + + static func setIcon(for imageView: UIImageView, item: AppCatalogItem, cornerRadius: CGFloat = 10) { + imageView.layer.cornerRadius = cornerRadius + imageView.clipsToBounds = true + imageView.contentMode = .scaleAspectFill + if let urlString = item.iconURL, let url = URL(string: urlString) { + imageView.kf.setImage(with: url, placeholder: placeholder(for: item.name)) + } else { + imageView.kf.cancelDownloadTask() + imageView.image = image(for: item) + } + } + + private static func placeholder(for name: String) -> UIImage? { + let size = CGSize(width: 44, height: 44) + let renderer = UIGraphicsImageRenderer(size: size) + return renderer.image { _ in + UIColor(hexStr: "#16B3FF").setFill() + UIBezierPath(roundedRect: CGRect(origin: .zero, size: size), cornerRadius: 10).fill() + let letter = String(name.prefix(1)) as NSString + let attrs: [NSAttributedString.Key: Any] = [ + .font: UIFont.systemFont(ofSize: 18, weight: .bold), + .foregroundColor: UIColor.white + ] + let textSize = letter.size(withAttributes: attrs) + letter.draw( + at: CGPoint(x: (size.width - textSize.width) / 2, y: (size.height - textSize.height) / 2), + withAttributes: attrs + ) + } + } +} diff --git a/QuickLocation/Section/AppRestrict/AppRestrictCell.swift b/QuickLocation/Section/AppRestrict/AppRestrictCell.swift new file mode 100644 index 00000000..3ca02021 --- /dev/null +++ b/QuickLocation/Section/AppRestrict/AppRestrictCell.swift @@ -0,0 +1,164 @@ +// +// AppRestrictCell.swift +// QuickLocation +// + +import FamilyControls +import UIKit +import ManagedSettings + +@available(iOS 16.0, *) +final class AppRestrictCell: UITableViewCell { + static let reuseId = "AppRestrictCell" + + private enum Metric { + static let appIcon: CGFloat = 40 + static let linkIcon: CGFloat = 28 + static let actionWidth: CGFloat = 48 + static let actionHeight: CGFloat = 56 + /// divider 右侧:8 + 48 + 8 + 48 + 12 + static let actionAreaWidth: CGFloat = 124 + } + + var onPair: (() -> Void)? + var onDelete: (() -> Void)? + + private let systemIconHost = UIView() + private let linkIconView = UIImageView() + private let catalogIconView = UIImageView() + private let placeholderView = UIView() + private let placeholderLab = UILabel() + + private let divider = UIView() + private let pairBtn = UIButton(type: .custom) + private let deleteBtn = UIButton(type: .custom) + + private var systemTokenHost: ApplicationTokenIconHostingView? + + override init(style: CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + selectionStyle = .none + backgroundColor = .clear + contentView.backgroundColor = .clear + setup() + } + + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + + private func setup() { + contentView.addSubview(systemIconHost) + contentView.addSubview(linkIconView) + contentView.addSubview(catalogIconView) + contentView.addSubview(placeholderView) + contentView.addSubview(divider) + contentView.addSubview(pairBtn) + contentView.addSubview(deleteBtn) + + systemIconHost.clipsToBounds = true + systemIconHost.layer.cornerRadius = 10 + systemIconHost.layoutChain + .left(16) + .centerY() + .width(Metric.appIcon) + .height(Metric.appIcon) + + linkIconView.contentMode = .scaleAspectFit + linkIconView.layoutChain + .leftToRightOfView(systemIconHost, offset: 12) + .centerY() + .width(Metric.linkIcon) + .height(Metric.linkIcon) + + catalogIconView.contentMode = .scaleAspectFill + catalogIconView.layer.cornerRadius = 10 + catalogIconView.clipsToBounds = true + catalogIconView.layoutChain + .leftToRightOfView(linkIconView, offset: 12) + .centerY() + .width(Metric.appIcon) + .height(Metric.appIcon) + + placeholderView.backgroundColor = UIColor(hexStr: "#F3F4F6") + placeholderView.layer.cornerRadius = Metric.appIcon / 2 + placeholderView.layer.borderWidth = 1 + placeholderView.layer.borderColor = UIColor(hexStr: "#E5E7EB").cgColor + placeholderView.layoutChain + .leftToRightOfView(linkIconView, offset: 12) + .centerY() + .width(Metric.appIcon) + .height(Metric.appIcon) + placeholderView.addSubview(placeholderLab) + placeholderLab.text = "?" + placeholderLab.font = .systemFont(ofSize: 18, weight: .bold) + placeholderLab.textColor = UIColor(hexStr: "#9CA3AF") + placeholderLab.textAlignment = .center + placeholderLab.layoutChain.center() + + divider.backgroundColor = UIColor(hexStr: "#F0F0F0") + divider.layoutChain + .right(Metric.actionAreaWidth) + .width(1) + .top(12) + .bottom(12) + + configureActionButton(pairBtn, imageName: "AppRestrict/pair_action_link", title: "配对", color: UIColor(hexStr: "#00ADFE")) + configureActionButton(deleteBtn, imageName: "AppRestrict/pair_action_delete", title: "删除", color: UIColor(hexStr: "#FF2323")) + pairBtn.addTarget(self, action: #selector(tapPair), for: .touchUpInside) + deleteBtn.addTarget(self, action: #selector(tapDelete), for: .touchUpInside) + + pairBtn.layoutChain + .leftToRightOfView(divider, offset: 8) + .centerY() + .width(Metric.actionWidth) + .height(Metric.actionHeight) + + deleteBtn.layoutChain + .leftToRightOfView(pairBtn, offset: 8) + .centerY() + .width(Metric.actionWidth) + .height(Metric.actionHeight) + } + + override func layoutSubviews() { + super.layoutSubviews() + pairBtn.setImageEdge(.top, spacing: 4) + deleteBtn.setImageEdge(.top, spacing: 4) + } + + private func configureActionButton(_ button: UIButton, imageName: String, title: String, color: UIColor) { + button.setImage(UIImage(named: imageName)?.withRenderingMode(.alwaysOriginal), for: .normal) + button.setTitle(title, for: .normal) + button.setTitleColor(color, for: .normal) + button.titleLabel?.font = .systemFont(ofSize: 12, weight: .medium) + button.titleLabel?.textAlignment = .center + button.titleLabel?.lineBreakMode = .byClipping + } + + func configure(token: ApplicationToken, catalog: AppCatalogItem?) { + systemTokenHost?.subviews.forEach { $0.removeFromSuperview() } + let host = ApplicationTokenIconHostingView(token: token) + systemIconHost.addSubview(host) + host.layoutChain.edges() + systemTokenHost = host + + let isPaired = catalog != nil + linkIconView.image = UIImage(named: isPaired ? "AppRestrict/pair_link_active" : "AppRestrict/pair_link_inactive")? + .withRenderingMode(.alwaysOriginal) + + catalogIconView.isHidden = !isPaired + placeholderView.isHidden = isPaired + if let catalog { + AppCatalogStore.setIcon(for: catalogIconView, item: catalog, cornerRadius: 10) + } else { + catalogIconView.image = nil + } + } + + @objc private func tapPair() { + onPair?() + } + + @objc private func tapDelete() { + onDelete?() + } +} diff --git a/QuickLocation/Section/AppRestrict/AppRestrictShieldSettingsVC.swift b/QuickLocation/Section/AppRestrict/AppRestrictShieldSettingsVC.swift new file mode 100644 index 00000000..05a7f8f1 --- /dev/null +++ b/QuickLocation/Section/AppRestrict/AppRestrictShieldSettingsVC.swift @@ -0,0 +1,147 @@ +// +// AppRestrictShieldSettingsVC.swift +// QuickLocation +// + +import PhotosUI +import UIKit + +@available(iOS 16.0, *) +final class AppRestrictShieldSettingsVC: BaseViewController { + + override var isNavigationBarHidden: Bool { false } + + private let titleField = UITextField() + private let subtitleField = UITextField() + private let buttonField = UITextField() + private let preview = UIImageView() + private var config = AppRestrictManager.shared.shieldConfig + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = UIColor(hexStr: "#FAFAFA") + title = "锁定界面设置" + navigationItem.rightBarButtonItem = UIBarButtonItem(title: "保存", style: .done, target: self, action: #selector(save)) + + let stack = UIStackView() + stack.axis = .vertical + stack.spacing = 12 + view.addSubview(stack) + stack.layoutChain.top(kNaviHeight + 20).left(16).right(16) + + func makeField(_ placeholder: String, text: String) -> UITextField { + let f = UITextField() + f.placeholder = placeholder + f.text = text + f.borderStyle = .roundedRect + f.font = .systemFont(ofSize: 15) + f.backgroundColor = .white + return f + } + + titleField.text = config.title + subtitleField.text = config.subtitle + buttonField.text = config.primaryButtonLabel + [titleField, subtitleField, buttonField].forEach { + $0.borderStyle = .roundedRect + $0.font = .systemFont(ofSize: 15) + $0.backgroundColor = .white + stack.addArrangedSubview($0) + $0.layoutChain.height(44) + } + titleField.placeholder = "标题" + subtitleField.placeholder = "副标题" + buttonField.placeholder = "按钮文案" + + let presetLab = UILabel() + presetLab.text = "预设图集" + presetLab.font = .systemFont(ofSize: 14, weight: .bold) + stack.addArrangedSubview(presetLab) + + let presetRow = UIStackView() + presetRow.axis = .horizontal + presetRow.spacing = 10 + presetRow.distribution = .fillEqually + [("默认", AppRestrictShieldConfig.ImageSource.presetDefault), + ("专注", .presetFocus), + ("平静", .presetCalm)].forEach { title, source in + let btn = UIButton(type: .system) + btn.setTitle(title, for: .normal) + btn.backgroundColor = .white + btn.layer.cornerRadius = 8 + btn.tag = source.hashValue + btn.addAction(UIAction { [weak self] _ in + self?.config.imageSource = source + self?.refreshPreview() + }, for: .touchUpInside) + presetRow.addArrangedSubview(btn) + btn.layoutChain.height(40) + } + stack.addArrangedSubview(presetRow) + + let albumBtn = UIButton(type: .system) + albumBtn.setTitle("从相册选择", for: .normal) + albumBtn.backgroundColor = UIColor(hexStr: "#16B3FF") + albumBtn.setTitleColor(.white, for: .normal) + albumBtn.layer.cornerRadius = 10 + albumBtn.addTarget(self, action: #selector(pickAlbum), for: .touchUpInside) + stack.addArrangedSubview(albumBtn) + albumBtn.layoutChain.height(44) + + preview.contentMode = .scaleAspectFit + preview.backgroundColor = .white + preview.layer.cornerRadius = 12 + preview.clipsToBounds = true + stack.addArrangedSubview(preview) + preview.layoutChain.height(180) + + refreshPreview() + } + + private func refreshPreview() { + preview.image = AppRestrictSharedStore.loadShieldImage() + } + + @objc private func save() { + config.title = titleField.text?.trimmingCharacters(in: .whitespacesAndNewlines).nilIfEmpty ?? AppRestrictShieldConfig.default.title + config.subtitle = subtitleField.text?.trimmingCharacters(in: .whitespacesAndNewlines).nilIfEmpty ?? AppRestrictShieldConfig.default.subtitle + config.primaryButtonLabel = buttonField.text?.trimmingCharacters(in: .whitespacesAndNewlines).nilIfEmpty ?? AppRestrictShieldConfig.default.primaryButtonLabel + AppRestrictManager.shared.shieldConfig = config + DLToast.showSuccess(text: "已保存") + navigationController?.popViewController(animated: true) + } + + @objc private func pickAlbum() { + var conf = PHPickerConfiguration(photoLibrary: .shared()) + conf.filter = .images + conf.selectionLimit = 1 + let picker = PHPickerViewController(configuration: conf) + picker.delegate = self + present(picker, animated: true) + } +} + +@available(iOS 16.0, *) +extension AppRestrictShieldSettingsVC: PHPickerViewControllerDelegate { + func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { + picker.dismiss(animated: true) + guard let provider = results.first?.itemProvider, + provider.canLoadObject(ofClass: UIImage.self) else { return } + provider.loadObject(ofClass: UIImage.self) { [weak self] object, _ in + guard let image = object as? UIImage else { return } + DispatchQueue.main.async { + guard let self else { return } + if AppRestrictManager.shared.saveCustomShieldImage(image) { + self.config.imageSource = .album + self.refreshPreview() + } else { + DLToast.show(text: "图片保存失败") + } + } + } + } +} + +private extension String { + var nilIfEmpty: String? { isEmpty ? nil : self } +} diff --git a/QuickLocation/Section/AppRestrict/AppRestrictVC.swift b/QuickLocation/Section/AppRestrict/AppRestrictVC.swift new file mode 100644 index 00000000..4aee623a --- /dev/null +++ b/QuickLocation/Section/AppRestrict/AppRestrictVC.swift @@ -0,0 +1,141 @@ +// +// AppRestrictVC.swift +// QuickLocation +// + +import FamilyControls +import UIKit +import RxSwift +import RxCocoa +import ManagedSettings + +@available(iOS 16.0, *) +final class AppRestrictVC: BaseViewController { + private var rootView: AppRestrictView! + private var tokens: [ApplicationToken] = [] + private var linkingToken: ApplicationToken? + + override func loadView() { + rootView = AppRestrictView(frame: UIScreen.main.bounds) + view = rootView + } + + override func viewDidLoad() { + super.viewDidLoad() + rootView.tableView.dataSource = self + rootView.tableView.delegate = self + rootView.tableView.register(AppRestrictCell.self, forCellReuseIdentifier: AppRestrictCell.reuseId) + bind() + reload() + } + + private func bind() { + rootView.navView.onBackTapped = { [weak self] in + self?.navigationController?.popViewController(animated: true) + } + rootView.addBtn.rx.tap.subscribe(onNext: { [weak self] in + self?.addApps() + }).disposed(by: disposeBag) + } + + private func reload() { + tokens = AppRestrictManager.shared.applicationTokens + rootView.setListVisible(!tokens.isEmpty, rowCount: tokens.count) + rootView.tableView.reloadData() + } + + private func addApps() { + Task { @MainActor in + do { + if !AppRestrictManager.shared.isAuthorized { + try await AppRestrictManager.shared.requestAuthorization() + } + guard AppRestrictManager.shared.isAuthorized else { + DLToast.show(text: "需要屏幕使用时间权限") + return + } + let presenter = FamilyActivityPickerPresenter(selection: AppRestrictManager.shared.selection) + presenter.onComplete = { [weak self] selection in + AppRestrictManager.shared.mergeSelection(selection) + self?.reload() + } + present(presenter, animated: false) + } catch { + DLToast.show(text: "授权失败,请在设置中开启屏幕使用时间权限") + } + } + } + + private func openLink(for token: ApplicationToken) { + linkingToken = token + let vc = SelectActivityVC() + vc.onSelect = { [weak self] item in + guard let self, let token = self.linkingToken else { return } + AppRestrictManager.shared.link( + catalogId: item.id, + token: token, + displayName: item.name, + iconURL: item.iconURL + ) + self.linkingToken = nil + self.reload() + } + let nav = UINavigationController(rootViewController: vc) + present(nav, animated: true) + } + + private func deleteApp(_ token: ApplicationToken) { + AppRestrictManager.shared.removeApplication(token) + reload() + } +} + +@available(iOS 16.0, *) +extension AppRestrictVC: UITableViewDataSource, UITableViewDelegate { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + tokens.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: AppRestrictCell.reuseId, for: indexPath) as! AppRestrictCell + let token = tokens[indexPath.row] + let catalog = AppRestrictManager.shared.catalogItem(for: token) + cell.configure(token: token, catalog: catalog) + cell.onPair = { [weak self] in + self?.openLink(for: token) + } + cell.onDelete = { [weak self] in + self?.deleteApp(token) + } + return cell + } +} + +/// Fallback when system is below iOS 16. +final class AppRestrictUnsupportedVC: BaseViewController { + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .white + let nav = BaseNavigationView(title: "应用配对库") + view.addSubview(nav) + nav.layoutChain.top().edgesHorzontal().height(kNaviHeight) + nav.onBackTapped = { [weak self] in + self?.navigationController?.popViewController(animated: true) + } + let lab = UILabel() + lab.text = "该功能需要 iOS 16 及以上系统" + lab.textAlignment = .center + lab.textColor = UIColor(hexStr: "#767676") + view.addSubview(lab) + lab.layoutChain.center() + } +} + +enum AppRestrictFactory { + static func make() -> UIViewController { + if #available(iOS 16.0, *) { + return AppRestrictVC() + } + return AppRestrictUnsupportedVC() + } +} diff --git a/QuickLocation/Section/AppRestrict/AppRestrictView.swift b/QuickLocation/Section/AppRestrict/AppRestrictView.swift new file mode 100644 index 00000000..291ed49d --- /dev/null +++ b/QuickLocation/Section/AppRestrict/AppRestrictView.swift @@ -0,0 +1,188 @@ +// +// AppRestrictView.swift +// QuickLocation +// + +import UIKit + +final class AppRestrictView: UIView { + let navView = BaseNavigationView(title: "应用配对库") + let scrollView = UIScrollView() + let contentView = UIView() + let guideCard = UIView() + let exampleCard = UIView() + let listCard = UIView() + let tableView = UITableView(frame: .zero, style: .plain) + let addBtn = UIButton(type: .custom) + + private var tableHeightConstraint: NSLayoutConstraint? + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = UIColor(hexStr: "#FAFAFA") + setup() + } + + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + + func setListVisible(_ visible: Bool, rowCount: Int, rowHeight: CGFloat = 80) { + listCard.isHidden = !visible + tableHeightConstraint?.constant = visible ? rowHeight * CGFloat(rowCount) : 0 + layoutIfNeeded() + } + + private func setup() { + addSubview(navView) + addSubview(scrollView) + addSubview(addBtn) + scrollView.addSubview(contentView) + + contentView.addSubview(guideCard) + contentView.addSubview(exampleCard) + contentView.addSubview(listCard) + listCard.addSubview(tableView) + + navView.layoutChain.top().edgesHorzontal().height(kNaviHeight) + + addBtn.setTitle("新增配对应用", for: .normal) + addBtn.setTitleColor(.white, for: .normal) + addBtn.titleLabel?.font = FontManager.boboBold(18) + addBtn.setBackgroundImage(UIImage(named: "Common/button_bg_2"), for: .normal) + addBtn.cornerRadius = 20 + addBtn.layoutChain + .left(16) + .right(16) + .bottom(kSafeBottomMargin + 16) + .height(56) + + scrollView.layoutChain + .topToBottomOfView(navView) + .edgesHorzontal() + .bottomToTopOfView(addBtn, offset: -12) + + contentView.layoutChain + .edges() + .widthToView(scrollView) + + guideCard.layoutChain + .top(12) + .edgesHorzontal(16) + + exampleCard.layoutChain + .topToBottomOfView(guideCard, offset: 12) + .edgesHorzontal(16) + + listCard.layoutChain + .topToBottomOfView(exampleCard, offset: 12) + .edgesHorzontal(16) + .bottom(12) + + tableView.backgroundColor = .clear + tableView.separatorStyle = .none + tableView.isScrollEnabled = false + tableView.rowHeight = 80 + tableView.layoutChain.edges(all: 12) + tableHeightConstraint = tableView.heightAnchor.constraint(equalToConstant: 0) + tableHeightConstraint?.isActive = true + + styleCard(guideCard) + styleCard(exampleCard) + styleCard(listCard) + setupGuideCard() + setupExampleCard() + } + + private func styleCard(_ card: UIView) { + card.backgroundColor = .white + card.layer.cornerRadius = 26 + card.clipsToBounds = true + } + + private func setupGuideCard() { + let titleLab = UILabel() + let attr = NSMutableAttributedString( + string: "如何配对?只需 ", + attributes: [ + .font: UIFont.systemFont(ofSize: 14, weight: .bold), + .foregroundColor: UIColor(hexStr: "#293445") + ] + ) + attr.append(NSAttributedString( + string: "3", + attributes: [ + .font: FontManager.boboBold(16), + .foregroundColor: UIColor(hexStr: "#00ADFE") + ] + )) + attr.append(NSAttributedString( + string: " 步", + attributes: [ + .font: UIFont.systemFont(ofSize: 14, weight: .bold), + .foregroundColor: UIColor(hexStr: "#293445") + ] + )) + titleLab.attributedText = attr + guideCard.addSubview(titleLab) + titleLab.layoutChain.top(20).left(20).right(20) + + let stepsView = PairGuideStepsView() + guideCard.addSubview(stepsView) + stepsView.layoutChain + .topToBottomOfView(titleLab, offset: 20) + .edgesHorzontal(20) + .bottom(20) + .height(72) + } + + private func setupExampleCard() { + let badge = UIView() + badge.backgroundColor = UIColor(hexStr: "#F1FFED") + badge.layer.cornerRadius = 8 + badge.clipsToBounds = true + exampleCard.addSubview(badge) + badge.layoutChain.top(10).left(10) + + let checkIcon = UIImageView( + image: UIImage(named: "AppRestrict/pair_badge_check")?.withRenderingMode(.alwaysOriginal) + ) + checkIcon.contentMode = .scaleAspectFit + let badgeLab = UILabel() + badgeLab.text = "正确示例" + badgeLab.font = .systemFont(ofSize: 12, weight: .medium) + badgeLab.textColor = UIColor(hexStr: "#00BB47") + + badge.addSubview(checkIcon) + checkIcon.layoutChain.width(12).height(12).edgesVertical(7).left(4) + + badge.addSubview(badgeLab) + badgeLab.layoutChain.leftToRightOfView(checkIcon, offset: 1).right(5).centerY() + + let wechatItem = AppCatalogStore.item(id: "wechat") + let leftIcon = UIImageView() + let rightIcon = UIImageView() + let linkIcon = UIImageView(image: UIImage(named: "AppRestrict/pair_link_active")?.withRenderingMode(.alwaysOriginal)) + [leftIcon, rightIcon].forEach { + $0.contentMode = .scaleAspectFill + $0.layer.cornerRadius = 10 + $0.clipsToBounds = true + } + if let wechatItem { + AppCatalogStore.setIcon(for: leftIcon, item: wechatItem) + AppCatalogStore.setIcon(for: rightIcon, item: wechatItem) + } + linkIcon.contentMode = .scaleAspectFit + + let row = UIStackView(arrangedSubviews: [leftIcon, linkIcon, rightIcon]) + row.axis = .horizontal + row.alignment = .center + row.spacing = 12 + exampleCard.addSubview(row) + row.layoutChain + .top(36) + .centerX() + .bottom(14) + leftIcon.layoutChain.width(50).height(50) + rightIcon.layoutChain.width(50).height(50) + linkIcon.layoutChain.width(35).height(25) + } +} diff --git a/QuickLocation/Section/AppRestrict/FamilyActivityPickerHost.swift b/QuickLocation/Section/AppRestrict/FamilyActivityPickerHost.swift new file mode 100644 index 00000000..4c847fbb --- /dev/null +++ b/QuickLocation/Section/AppRestrict/FamilyActivityPickerHost.swift @@ -0,0 +1,135 @@ +// +// FamilyActivityPickerHost.swift +// QuickLocation +// + +import FamilyControls +import SwiftUI +import UIKit +import ManagedSettings + +@available(iOS 16.0, *) +private struct FamilyActivityPickerSheet: View { + @State private var selection: FamilyActivitySelection + @State private var isPresented = true + let onComplete: (FamilyActivitySelection) -> Void + + init(initial: FamilyActivitySelection, onComplete: @escaping (FamilyActivitySelection) -> Void) { + _selection = State(initialValue: initial) + self.onComplete = onComplete + } + + var body: some View { + Color.clear + .familyActivityPicker(isPresented: $isPresented, selection: $selection) + .onChange(of: isPresented) { presented in + if !presented { + onComplete(selection) + } + } + } +} + +@available(iOS 16.0, *) +final class FamilyActivityPickerPresenter: UIViewController { + private let initial: FamilyActivitySelection + var onComplete: ((FamilyActivitySelection) -> Void)? + + init(selection: FamilyActivitySelection = FamilyActivitySelection()) { + self.initial = selection + super.init(nibName: nil, bundle: nil) + modalPresentationStyle = .overFullScreen + view.backgroundColor = .clear + } + + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + guard children.isEmpty else { return } + let root = FamilyActivityPickerSheet(initial: initial) { [weak self] selection in + self?.onComplete?(selection) + self?.dismiss(animated: false) + } + let host = UIHostingController(rootView: root) + host.view.backgroundColor = .clear + addChild(host) + view.addSubview(host.view) + host.view.frame = .zero + host.didMove(toParent: self) + } +} + +@available(iOS 16.0, *) +struct ApplicationTokenLabelView: View { + let token: ApplicationToken + + var body: some View { + Label(token) + .labelStyle(.titleAndIcon) + .lineLimit(1) + } +} + +@available(iOS 16.0, *) +struct ApplicationTokenIconView: View { + let token: ApplicationToken + + var body: some View { + Label(token) + .labelStyle(.iconOnly) + .scaleEffect(2.4) + .frame(width: 40, height: 40) + .clipped() + } +} + +@available(iOS 16.0, *) +final class ApplicationTokenIconHostingView: UIView { + private let hosting: UIHostingController + + init(token: ApplicationToken) { + hosting = UIHostingController(rootView: ApplicationTokenIconView(token: token)) + super.init(frame: .zero) + hosting.view.backgroundColor = .clear + addSubview(hosting.view) + hosting.view.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + hosting.view.topAnchor.constraint(equalTo: topAnchor), + hosting.view.leadingAnchor.constraint(equalTo: leadingAnchor), + hosting.view.trailingAnchor.constraint(equalTo: trailingAnchor), + hosting.view.bottomAnchor.constraint(equalTo: bottomAnchor) + ]) + } + + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + + func update(token: ApplicationToken) { + hosting.rootView = ApplicationTokenIconView(token: token) + } +} + +@available(iOS 16.0, *) +final class ApplicationTokenLabelHostingView: UIView { + private let hosting: UIHostingController + + init(token: ApplicationToken) { + hosting = UIHostingController(rootView: ApplicationTokenLabelView(token: token)) + super.init(frame: .zero) + hosting.view.backgroundColor = .clear + addSubview(hosting.view) + hosting.view.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + hosting.view.topAnchor.constraint(equalTo: topAnchor), + hosting.view.leadingAnchor.constraint(equalTo: leadingAnchor), + hosting.view.trailingAnchor.constraint(equalTo: trailingAnchor), + hosting.view.bottomAnchor.constraint(equalTo: bottomAnchor) + ]) + } + + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + + func update(token: ApplicationToken) { + hosting.rootView = ApplicationTokenLabelView(token: token) + } +} diff --git a/QuickLocation/Section/AppRestrict/ITunesSearchService.swift b/QuickLocation/Section/AppRestrict/ITunesSearchService.swift new file mode 100644 index 00000000..08f3e086 --- /dev/null +++ b/QuickLocation/Section/AppRestrict/ITunesSearchService.swift @@ -0,0 +1,66 @@ +// +// ITunesSearchService.swift +// QuickLocation +// + +import Foundation + +enum ITunesSearchError: Error { + case invalidURL + case invalidResponse +} + +enum ITunesSearchService { + private struct SearchResponse: Decodable { + let results: [ITunesAppResult] + } + + private struct ITunesAppResult: Decodable { + let trackId: Int + let trackName: String + let artworkUrl100: String? + let artworkUrl512: String? + } + + static func search(term: String, limit: Int = 25) async throws -> [AppCatalogItem] { + let trimmed = term.trimmingCharacters(in: .whitespacesAndNewlines) + guard !trimmed.isEmpty else { return [] } + + var components = URLComponents(string: "https://itunes.apple.com/search") + components?.queryItems = [ + URLQueryItem(name: "term", value: trimmed), + URLQueryItem(name: "entity", value: "software"), + URLQueryItem(name: "country", value: "cn"), + URLQueryItem(name: "limit", value: "\(limit)") + ] + guard let url = components?.url else { throw ITunesSearchError.invalidURL } + + let (data, response) = try await URLSession.shared.data(from: url) + guard let http = response as? HTTPURLResponse, (200...299).contains(http.statusCode) else { + throw ITunesSearchError.invalidResponse + } + + let decoded = try JSONDecoder().decode(SearchResponse.self, from: data) + return decoded.results.map { result in + let iconURL = result.artworkUrl512 ?? result.artworkUrl100 + return AppCatalogItem( + id: "itunes:\(result.trackId)", + name: result.trackName, + icon: "", + keywords: [], + iconURL: iconURL + ) + } + } + + static func mergedResults(local: [AppCatalogItem], remote: [AppCatalogItem]) -> [AppCatalogItem] { + var seen = Set() + var merged: [AppCatalogItem] = [] + for item in local + remote { + guard !seen.contains(item.id) else { continue } + seen.insert(item.id) + merged.append(item) + } + return merged + } +} diff --git a/QuickLocation/Section/AppRestrict/PairGuideStepsView.swift b/QuickLocation/Section/AppRestrict/PairGuideStepsView.swift new file mode 100644 index 00000000..bdab70f7 --- /dev/null +++ b/QuickLocation/Section/AppRestrict/PairGuideStepsView.swift @@ -0,0 +1,86 @@ +// +// PairGuideStepsView.swift +// QuickLocation +// + +import UIKit + +final class PairGuideStepsView: UIView { + private struct Step { + let number: String + let title: String + let color: UIColor + } + + private let steps: [Step] = [ + Step(number: "1", title: "新增配对应用", color: UIColor(hexStr: "#8B5CF6")), + Step(number: "2", title: "选择相同应用", color: UIColor(hexStr: "#16B3FF")), + Step(number: "3", title: "完成配对", color: UIColor(hexStr: "#22C55E")) + ] + + private let circleSize: CGFloat = 28 + private let dashLayer = CAShapeLayer() + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .clear + dashLayer.strokeColor = UIColor(hexStr: "#D1D5DB").cgColor + dashLayer.lineWidth = 1 + dashLayer.lineDashPattern = [3, 3] + dashLayer.fillColor = UIColor.clear.cgColor + layer.addSublayer(dashLayer) + } + + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + + override var intrinsicContentSize: CGSize { + CGSize(width: UIView.noIntrinsicMetric, height: 72) + } + + override func layoutSubviews() { + super.layoutSubviews() + subviews.forEach { $0.removeFromSuperview() } + + let columnWidth = bounds.width / 3 + let circleY = circleSize / 2 + 2 + let centers = (0.. Void)? + + private let searchField = UITextField() + private let tableView = UITableView(frame: .zero, style: .plain) + private let activityIndicator = UIActivityIndicatorView(style: .medium) + private var items: [AppCatalogItem] = AppCatalogStore.sharedItems + private var searchTask: Task? + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .white + title = "选取应用" + navigationItem.leftBarButtonItem = UIBarButtonItem(title: "取消", style: .plain, target: self, action: #selector(cancel)) + + searchField.placeholder = "搜索应用" + searchField.borderStyle = .roundedRect + searchField.font = .systemFont(ofSize: 15) + searchField.clearButtonMode = .whileEditing + searchField.returnKeyType = .search + searchField.addTarget(self, action: #selector(searchChanged), for: .editingChanged) + view.addSubview(searchField) + searchField.layoutChain.top(12).left(16).right(16).height(40) + + activityIndicator.hidesWhenStopped = true + view.addSubview(activityIndicator) + activityIndicator.layoutChain.centerX().topToBottomOfView(searchField, offset: 8) + + tableView.register(SelectActivityCell.self, forCellReuseIdentifier: SelectActivityCell.reuseId) + tableView.dataSource = self + tableView.delegate = self + tableView.rowHeight = 56 + view.addSubview(tableView) + tableView.layoutChain.topToBottomOfView(searchField, offset: 12).edgesHorzontal().bottom() + } + + @objc private func cancel() { + dismiss(animated: true) + } + + @objc private func searchChanged() { + let query = searchField.text ?? "" + searchTask?.cancel() + + let trimmed = query.trimmingCharacters(in: .whitespacesAndNewlines) + if trimmed.isEmpty { + activityIndicator.stopAnimating() + items = AppCatalogStore.sharedItems + tableView.reloadData() + return + } + + let localHits = AppCatalogStore.search(query) + items = localHits + tableView.reloadData() + activityIndicator.startAnimating() + + searchTask = Task { [weak self] in + try? await Task.sleep(nanoseconds: 300_000_000) + guard let self, !Task.isCancelled else { return } + do { + let remote = try await ITunesSearchService.search(term: trimmed) + guard !Task.isCancelled else { return } + await MainActor.run { + self.activityIndicator.stopAnimating() + self.items = ITunesSearchService.mergedResults(local: localHits, remote: remote) + self.tableView.reloadData() + } + } catch { + await MainActor.run { + self.activityIndicator.stopAnimating() + if self.items.isEmpty { + self.items = localHits + self.tableView.reloadData() + } + DLToast.show(text: "搜索失败,请检查网络") + } + } + } + } +} + +extension SelectActivityVC: UITableViewDataSource, UITableViewDelegate { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + items.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: SelectActivityCell.reuseId, for: indexPath) as! SelectActivityCell + cell.configure(item: items[indexPath.row]) + return cell + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let item = items[indexPath.row] + onSelect?(item) + dismiss(animated: true) + } +} diff --git a/QuickLocation/Section/AppRestrict/app_catalog.json b/QuickLocation/Section/AppRestrict/app_catalog.json new file mode 100644 index 00000000..9aa03f04 --- /dev/null +++ b/QuickLocation/Section/AppRestrict/app_catalog.json @@ -0,0 +1,50 @@ +[ + { + "id": "wechat", + "name": "微信", + "icon": "Login/wechat", + "keywords": ["微信", "wechat", "weixin"] + }, + { + "id": "douyin", + "name": "抖音", + "icon": "AppRestrict/catalog_douyin", + "keywords": ["抖音", "douyin", "tiktok"] + }, + { + "id": "qq", + "name": "QQ", + "icon": "AppRestrict/catalog_qq", + "keywords": ["qq"] + }, + { + "id": "xiaohongshu", + "name": "小红书", + "icon": "AppRestrict/catalog_xiaohongshu", + "keywords": ["小红书", "red", "xhs"] + }, + { + "id": "taobao", + "name": "淘宝", + "icon": "AppRestrict/catalog_taobao", + "keywords": ["淘宝", "taobao"] + }, + { + "id": "netease_music", + "name": "网易云音乐", + "icon": "AppRestrict/catalog_netease", + "keywords": ["网易云", "music"] + }, + { + "id": "kuaishou", + "name": "快手", + "icon": "AppRestrict/catalog_kuaishou", + "keywords": ["快手", "kuaishou"] + }, + { + "id": "wangzhe", + "name": "王者荣耀", + "icon": "AppRestrict/catalog_wangzhe", + "keywords": ["王者", "荣耀"] + } +] diff --git a/QuickLocation/Section/Explore/FeatureIntroVC.swift b/QuickLocation/Section/Explore/FeatureIntroVC.swift index e162e255..e891c8a3 100644 --- a/QuickLocation/Section/Explore/FeatureIntroVC.swift +++ b/QuickLocation/Section/Explore/FeatureIntroVC.swift @@ -33,6 +33,8 @@ final class FeatureIntroVC: BaseViewController { AppRouter.push(vc) case .createBubble: AppRouter.push(Route.createBubble) + case .lockDistract: + AppRouter.push(Route.lockDistract) case .searchLocation: AppRouter.push(Route.searchLocation) case .sos: diff --git a/QuickLocation/Section/Explore/FeatureIntroView.swift b/QuickLocation/Section/Explore/FeatureIntroView.swift index 8f1d75d5..ed885ae6 100644 --- a/QuickLocation/Section/Explore/FeatureIntroView.swift +++ b/QuickLocation/Section/Explore/FeatureIntroView.swift @@ -18,6 +18,7 @@ struct FeatureIntroItem { enum FeatureIntroAction { case signIn case createBubble + case lockDistract case searchLocation case sos case placeholder @@ -58,7 +59,7 @@ final class FeatureIntroView: UIView { titleColor: UIColor(hexStr: "#2F8A5B"), subtitleColor: UIColor(hexStr: "#6AAD88"), arrowTint: UIColor(hexStr: "#3EAE72"), - action: .placeholder + action: .lockDistract ), FeatureIntroItem( title: "飞鸽传书", diff --git a/QuickLocation/Section/Group/CreateGroup/CreateGroupVC.swift b/QuickLocation/Section/Group/CreateGroup/CreateGroupVC.swift index 915c3f15..175688eb 100644 --- a/QuickLocation/Section/Group/CreateGroup/CreateGroupVC.swift +++ b/QuickLocation/Section/Group/CreateGroup/CreateGroupVC.swift @@ -23,6 +23,7 @@ class CreateGroupVC: BaseViewController { override func viewDidLoad() { super.viewDidLoad() + view.backgroundColor = UIColor(hexStr: "#FAFAFA") bindViewModel() reactiveAction() @@ -31,18 +32,25 @@ class CreateGroupVC: BaseViewController { } private func reactiveAction() { - rootView.groupIconInputView.rx.tapGesture.subscribe { _ in - let vc = GroupIconListVC(iconIndex: "1") - vc.onSelectIcon = { index in - self.viewModel.iconIndex = index - self.rootView.groupIconImgView.image = UIImage(named: "GroupIcon/\(index)") - } - self.navigationController?.pushViewController(vc, animated: true) - }.disposed(by: disposeBag) + rootView.iconCarousel.onSelectIndex = { [weak self] index in + self?.viewModel.iconIndex = index + } - rootView.submitBtn.rx.tap.subscribe(onNext: { _ in - self.viewModel.requestCreateGroup() + rootView.submitBtn.rx.tap.subscribe(onNext: { [weak self] _ in + self?.viewModel.requestCreateGroup() }).disposed(by: disposeBag) + + rootView.onConfirmAddTag = { [weak self] text in + guard let self = self else { return } + switch self.viewModel.addCustomTag(text) { + case .success: + self.rootView.dismissAddTagSheet() + case .empty: + DLToast.show(text: "请输入标签") + case .duplicate: + DLToast.show(text: "标签已存在") + } + } } private func bindViewModel() { @@ -58,8 +66,29 @@ class CreateGroupVC: BaseViewController { .bind(to: rootView.tagView.rx.items(dataSource: dataSource)) .disposed(by: disposeBag) - rootView.tagView.rx.modelSelected(String.self) - .subscribe(viewModel.cellAction.inputs) + viewModel.output.sectionedItems + .observe(on: MainScheduler.instance) + .subscribe(onNext: { [weak self] _ in + DispatchQueue.main.async { + self?.rootView.updateTagViewHeight() + } + }) + .disposed(by: disposeBag) + + rootView.tagView.rx.itemSelected + .subscribe(onNext: { [weak self] indexPath in + guard let self = self else { return } + self.rootView.tagView.deselectItem(at: indexPath, animated: false) + let tag = self.dataSource[indexPath] + if tag == CreateGroupViewModel.addTagToken { + self.rootView.showAddTagSheet() + } else { + self.viewModel.cellAction.execute(tag) + } + }) + .disposed(by: disposeBag) + + rootView.tagView.rx.setDelegate(self) .disposed(by: disposeBag) } @@ -67,8 +96,22 @@ class CreateGroupVC: BaseViewController { private lazy var dataSource: RxCollectionViewSectionedReloadDataSource = { RxCollectionViewSectionedReloadDataSource { datasource, collectionView, indexPath, item in let cell: TagCell = collectionView.dequeueReusableCell(for: indexPath) - cell.configure(item, isSelected: self.viewModel.isSelected(tag: item)) + if item == CreateGroupViewModel.addTagToken { + cell.configureAsAdd() + } else { + cell.configure(item, isSelected: self.viewModel.isSelected(tag: item)) + } return cell } }() } + +extension CreateGroupVC: UICollectionViewDelegateFlowLayout { + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + guard dataSource.sectionModels.indices.contains(indexPath.section), + dataSource.sectionModels[indexPath.section].items.indices.contains(indexPath.item) else { + return CGSize(width: 52, height: 28) + } + return TagCell.preferredSize(for: dataSource[indexPath]) + } +} diff --git a/QuickLocation/Section/Group/CreateGroup/CreateGroupView.swift b/QuickLocation/Section/Group/CreateGroup/CreateGroupView.swift index 23134e87..131ec48b 100644 --- a/QuickLocation/Section/Group/CreateGroup/CreateGroupView.swift +++ b/QuickLocation/Section/Group/CreateGroup/CreateGroupView.swift @@ -14,6 +14,9 @@ class CreateGroupView: UIView { var disposeBag = DisposeBag() private let limitCount = 50 + private let tagMaxLength = 10 + + var onConfirmAddTag: ((String) -> Void)? private func setupRx() { groupNameTF.rx.text.orEmpty @@ -43,32 +46,57 @@ class CreateGroupView: UIView { } }) .disposed(by: disposeBag) + + addTagTF.rx.text.orEmpty + .subscribe(onNext: { [weak self] text in + guard let self = self else { return } + if text.count > self.tagMaxLength { + self.addTagTF.text = String(text.prefix(self.tagMaxLength)) + } + let count = self.addTagTF.text?.count ?? 0 + self.addTagCountLab.text = "\(count)/\(self.tagMaxLength)" + }) + .disposed(by: disposeBag) + + sheetCancelBtn.rx.tap + .subscribe(onNext: { [weak self] in + self?.dismissAddTagSheet() + }) + .disposed(by: disposeBag) + + sheetConfirmBtn.rx.tap + .subscribe(onNext: { [weak self] in + guard let self = self else { return } + self.onConfirmAddTag?(self.addTagTF.text ?? "") + }) + .disposed(by: disposeBag) + + addTagClearBtn.rx.tap + .subscribe(onNext: { [weak self] in + self?.addTagTF.text = "" + self?.addTagCountLab.text = "0/\(self?.tagMaxLength ?? 10)" + }) + .disposed(by: disposeBag) } private func setupUI() { addSubview(navBgView) addSubview(navView) - + addSubview(scrollView) addSubview(submitBtn) - addSubview(titleLab) - addSubview(infoView) - infoView.addSubview(groupNameInputView) - groupNameInputView.addSubview(groupNameTitleLab) + + scrollView.addSubview(contentView) + contentView.addSubview(iconCarousel) + contentView.addSubview(typeNamePlaceholder) + contentView.addSubview(groupNameTitleLab) + contentView.addSubview(groupNameInputView) groupNameInputView.addSubview(groupNameTF) - - infoView.addSubview(groupIconInputView) - groupIconInputView.addSubview(groupIconTitleLab) - groupIconInputView.addSubview(groupIconImgView) - - infoView.addSubview(groupContentInputView) - groupContentInputView.addSubview(groupContentTitleLab) + contentView.addSubview(groupContentTitleLab) + contentView.addSubview(groupContentInputView) groupContentInputView.addSubview(groupContentTV) groupContentInputView.addSubview(placeholderLab) - - infoView.addSubview(tagInfoView) - tagInfoView.addSubview(tagTitleLab) - tagInfoView.addSubview(tagView) - tagInfoView.addSubview(tipsLab) + contentView.addSubview(tagTitleLab) + contentView.addSubview(tagView) navBgView.layoutChain .edges(excludingEdge: .bottom) @@ -78,91 +106,205 @@ class CreateGroupView: UIView { .edges(excludingEdge: .bottom) .height(kNaviHeight) - titleLab.layoutChain - .topToBottomOfView(navView, offset: 20) - .left(15) - submitBtn.layoutChain - .bottom(kSafeBottomMargin + 36) + .bottom(kSafeBottomMargin + 24) .centerX() .edgesHorzontal(30) - .height(50) + .height(56) - infoView.layoutChain - .topToBottomOfView(titleLab, offset: 20) - .edgesHorzontal(15) + scrollView.layoutChain + .topToBottomOfView(navView) + .edgesHorzontal() + .bottomToTopOfView(submitBtn, offset: -12) - groupNameInputView.layoutChain - .edges(excludingEdge: .bottom) + contentView.layoutChain + .edges() + .widthToView(scrollView) + + iconCarousel.layoutChain + .top(8) + .edgesHorzontal() + .height(130) + + typeNamePlaceholder.layoutChain + .topToBottomOfView(iconCarousel, offset: 4) + .centerX() groupNameTitleLab.layoutChain - .left(15) - .centerY() - .width(50) + .topToBottomOfView(typeNamePlaceholder, offset: 24) + .left(24) + + groupNameInputView.layoutChain + .topToBottomOfView(groupNameTitleLab, offset: 10) + .edgesHorzontal(20) + .height(50) groupNameTF.layoutChain .edgesVertical() - .leftToRightOfView(groupNameTitleLab, offset: 20) - .right(43) - - groupIconInputView.layoutChain - .topToBottomOfView(groupNameInputView) - .leftToView(groupNameInputView) - .rightToView(groupNameInputView) - - groupIconTitleLab.layoutChain - .left(15) - .centerY() - .width(50) - - groupIconImgView.layoutChain - .leftToRightOfView(groupIconTitleLab, offset: 20) - .edgesVertical(10) - .width(40) - .height(40) - - groupContentInputView.layoutChain - .topToBottomOfView(groupIconInputView) - .leftToView(groupNameInputView) - .rightToView(groupNameInputView) + .left(16) + .right(48) groupContentTitleLab.layoutChain - .top(20) - .left(15) - .width(50) - + .topToBottomOfView(groupNameInputView, offset: 18) + .left(24) + + groupContentInputView.layoutChain + .topToBottomOfView(groupContentTitleLab, offset: 10) + .edgesHorzontal(20) + .height(96) + groupContentTV.layoutChain - .topToView(groupContentTitleLab, offset: -9) - .leftToRightOfView(groupContentTitleLab, offset: 18) - .right(52) - .bottom(10) - .height(20, relation: .greaterThanOrEqual) - + .top(8) + .left(12) + .right(48) + .bottom(8) + placeholderLab.layoutChain .topToView(groupContentTV, offset: 8) .leftToView(groupContentTV, offset: 5) - tagInfoView.layoutChain - .topToBottomOfView(groupContentInputView) - .leftToView(groupNameInputView) - .rightToView(groupNameInputView) - .bottom(20) - tagTitleLab.layoutChain - .top(20) - .left(15) - - tagView.layoutChain - .topToBottomOfView(tagTitleLab, offset: 10) - .edgesHorzontal(15) - .height(64) + .topToBottomOfView(groupContentInputView, offset: 18) + .left(24) - tipsLab.layoutChain - .topToBottomOfView(tagView, offset: 10) - .left(15) - .bottom() + tagView.layoutChain + .topToBottomOfView(tagTitleLab, offset: 12) + .edgesHorzontal(20) + .height(28) + .bottom(24) + + setupSheet() } + func updateTagViewHeight() { + tagView.collectionViewLayout.invalidateLayout() + tagView.layoutIfNeeded() + let height = max(28, tagView.collectionViewLayout.collectionViewContentSize.height) + tagView.layoutChain.height(height) + } + + func showAddTagSheet() { + addTagTF.text = "" + addTagCountLab.text = "0/\(tagMaxLength)" + sheetOverlay.isHidden = false + sheetOverlay.alpha = 0 + sheetPanel.transform = CGAffineTransform(translationX: 0, y: 40) + UIView.animate(withDuration: 0.28, delay: 0, options: .curveEaseOut) { + self.sheetOverlay.alpha = 1 + self.sheetPanel.transform = .identity + } completion: { _ in + self.addTagTF.becomeFirstResponder() + } + } + + func dismissAddTagSheet() { + addTagTF.resignFirstResponder() + UIView.animate(withDuration: 0.22, delay: 0, options: .curveEaseIn) { + self.sheetOverlay.alpha = 0 + self.sheetPanel.transform = CGAffineTransform(translationX: 0, y: 40) + } completion: { _ in + self.sheetOverlay.isHidden = true + self.addTagTF.text = "" + self.addTagCountLab.text = "0/\(self.tagMaxLength)" + } + } + + // MARK: - Sheet + + private func setupSheet() { + sheetOverlay.backgroundColor = UIColor.black.withAlphaComponent(0.45) + sheetOverlay.isHidden = true + addSubview(sheetOverlay) + sheetOverlay.layoutChain.edges() + + sheetPanel.backgroundColor = .white + sheetPanel.layer.cornerRadius = 24 + sheetPanel.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + sheetPanel.clipsToBounds = true + sheetOverlay.addSubview(sheetPanel) + sheetPanel.layoutChain.edgesHorzontal().bottom() + + sheetHeaderView.backgroundColor = UIColor(hexStr: "#E8F7FF") + sheetPanel.addSubview(sheetHeaderView) + sheetHeaderView.layoutChain.edgesHorzontal().top().height(56) + + sheetTitleLab.text = "添加标签" + sheetTitleLab.font = .systemFont(ofSize: 16, weight: .medium) + sheetTitleLab.textColor = ThemeManager.shared.color.titleAuxColor + sheetTitleLab.textAlignment = .center + sheetHeaderView.addSubview(sheetTitleLab) + sheetTitleLab.layoutChain.center() + + sheetAddIcon.backgroundColor = UIColor(hexStr: "#D6F0FF") + sheetAddIcon.cornerRadius = 8 + sheetAddIcon.contentMode = .center + let plusConfig = UIImage.SymbolConfiguration(pointSize: 13, weight: .medium) + sheetAddIcon.image = UIImage(systemName: "plus", withConfiguration: plusConfig) + sheetAddIcon.tintColor = UIColor(hexStr: "#16B3FF") + sheetPanel.addSubview(sheetAddIcon) + sheetAddIcon.layoutChain + .topToBottomOfView(sheetHeaderView, offset: 24) + .left(20) + .width(32) + .height(32) + + addTagInputView.backgroundColor = UIColor(hexStr: "#F7F8FA") + addTagInputView.cornerRadius = 10 + sheetPanel.addSubview(addTagInputView) + + addTagClearBtn.setImage(UIImage(systemName: "xmark.circle.fill"), for: .normal) + addTagClearBtn.tintColor = UIColor(hexStr: "#FF5B5B") + sheetPanel.addSubview(addTagClearBtn) + addTagClearBtn.layoutChain + .centerY(sheetAddIcon) + .right(20) + .width(22) + .height(22) + + addTagInputView.layoutChain + .centerY(sheetAddIcon) + .leftToRightOfView(sheetAddIcon, offset: 10) + .rightToLeftOfView(addTagClearBtn, offset: -10) + .height(40) + + addTagInputView.addSubview(addTagTF) + addTagInputView.addSubview(addTagCountLab) + addTagCountLab.layoutChain + .centerY() + .right(12) + addTagTF.layoutChain + .edgesVertical() + .left(12) + .rightToLeftOfView(addTagCountLab, offset: -8) + + sheetPanel.addSubview(sheetCancelBtn) + sheetPanel.addSubview(sheetConfirmBtn) + + sheetCancelBtn.layoutChain + .topToBottomOfView(sheetAddIcon, offset: 28) + .left(24) + .height(44) + .bottom(20 + kSafeBottomMargin) + + sheetConfirmBtn.layoutChain + .leftToRightOfView(sheetCancelBtn, offset: 12) + .right(24) + .bottomToView(sheetCancelBtn) + .heightToView(sheetCancelBtn) + .widthToView(sheetCancelBtn) + + let tap = UITapGestureRecognizer(target: self, action: #selector(tapSheetMask)) + sheetOverlay.addGestureRecognizer(tap) + } + + @objc private func tapSheetMask(_ gesture: UITapGestureRecognizer) { + let point = gesture.location(in: sheetPanel) + if sheetPanel.bounds.contains(point) { return } + dismissAddTagSheet() + } + + // MARK: - Views + lazy var navBgView: UIImageView = { let iv = UIImageView() iv.image = UIImage(named: "Common/navBar_bg_2") @@ -175,54 +317,73 @@ class CreateGroupView: UIView { return nav }() - lazy var titleLab: UILabel = { - let label = UILabel() - label.text = "编辑信息" - label.font = .systemFont(ofSize: 14, weight: .medium) - label.textColor = ThemeManager.shared.color.titleAuxColor - return label - }() - - lazy var infoView: UIView = { - let view = UIView() - view.backgroundColor = UIColor(hexStr: "#F5FBFF") - view.cornerRadius = 10 + lazy var scrollView: UIScrollView = { + let view = UIScrollView() + view.backgroundColor = .clear + view.keyboardDismissMode = .onDrag + view.showsVerticalScrollIndicator = false return view }() - // 圈子名称 - lazy var groupNameInputView: UIView = { + lazy var contentView: UIView = { let view = UIView() view.backgroundColor = .clear + return view + }() + + lazy var iconCarousel: CreateGroupIconCarouselView = { + let view = CreateGroupIconCarouselView() + return view + }() + + lazy var typeNamePlaceholder: UIView = { + let view = UIView() + view.backgroundColor = .white + view.cornerRadius = 10 + view.isUserInteractionEnabled = false - let icon = UIImageView() - icon.image = UIImage(named: "Group/edit") - view.addSubview(icon) - icon.layoutChain - .right(15) - .edgesVertical(20) - .width(20) - .height(20) - - let line = UIView() - line.backgroundColor = UIColor(hexStr: "#EEEEEE") - view.addSubview(line) - line.layoutChain - .edgesHorzontal(15) - .height(0.5) - .bottom() + view.addSubview(typeNameLab) + typeNameLab.layoutChain + .edgesVertical(10) + .edgesHorzontal(31) return view }() + lazy var typeNameLab: UILabel = { + let label = UILabel() + label.text = "未知" + label.font = .systemFont(ofSize: 16, weight: .bold) + label.textColor = UIColor(hexStr: "#3D3D3D") + return label + }() + lazy var groupNameTitleLab: UILabel = { let label = UILabel() label.text = "圈子名称" - label.font = .systemFont(ofSize: 12, weight: .medium) + label.font = .systemFont(ofSize: 14, weight: .medium) label.textColor = ThemeManager.shared.color.titleAuxColor return label }() + lazy var groupNameInputView: UIView = { + let view = UIView() + view.backgroundColor = .white + view.cornerRadius = 10 + + let icon = UIImageView() + icon.image = UIImage(named: "Group/edit") + icon.contentMode = .scaleAspectFit + view.addSubview(icon) + icon.layoutChain + .right(14) + .centerY() + .width(22) + .height(22) + + return view + }() + lazy var groupNameTF: UITextField = { let textField = UITextField(frame: .zero) textField.font = UIFont.systemFont(ofSize: 14, weight: .medium) @@ -232,120 +393,64 @@ class CreateGroupView: UIView { return textField }() - // 圈子图标 - lazy var groupIconInputView: UIView = { - let view = UIView() - view.backgroundColor = .clear - - let icon = UIImageView() - icon.image = UIImage(named: "Group/arrow") - view.addSubview(icon) - icon.layoutChain - .right(15) - .centerY() - .width(14) - .height(14) - - let line = UIView() - line.backgroundColor = UIColor(hexStr: "#EEEEEE") - view.addSubview(line) - line.layoutChain - .edgesHorzontal(15) - .height(0.5) - .bottom() - - return view - }() - - lazy var groupIconTitleLab: UILabel = { - let label = UILabel() - label.text = "圈子图标" - label.font = .systemFont(ofSize: 12, weight: .medium) - label.textColor = ThemeManager.shared.color.titleAuxColor - return label - }() - - lazy var groupIconImgView: UIImageView = { - let view = UIImageView() - view.image = UIImage(named: "GroupIcon/1") - view.contentMode = .scaleAspectFill - return view - }() - - // 圈子描述 - lazy var groupContentInputView: UIView = { - let view = UIView() - view.backgroundColor = .clear - - let icon = UIImageView() - icon.image = UIImage(named: "Group/edit") - view.addSubview(icon) - icon.layoutChain - .top(20) - .right(15) - .width(20) - .height(20) - - let line = UIView() - line.backgroundColor = UIColor(hexStr: "#EEEEEE") - view.addSubview(line) - line.layoutChain - .edgesHorzontal(15) - .height(0.5) - .bottom() - - return view - }() - lazy var groupContentTitleLab: UILabel = { let label = UILabel() label.text = "圈子描述" - label.font = .systemFont(ofSize: 12, weight: .medium) + label.font = .systemFont(ofSize: 14, weight: .medium) label.textColor = ThemeManager.shared.color.titleAuxColor return label }() + lazy var groupContentInputView: UIView = { + let view = UIView() + view.backgroundColor = .white + view.cornerRadius = 10 + + let icon = UIImageView() + icon.image = UIImage(named: "Group/edit") + icon.contentMode = .scaleAspectFit + view.addSubview(icon) + icon.layoutChain + .right(14) + .bottom(14) + .width(22) + .height(22) + + return view + }() + lazy var groupContentTV: UITextView = { let textView = UITextView() textView.backgroundColor = .clear textView.font = .systemFont(ofSize: 14, weight: .medium) textView.textColor = ThemeManager.shared.color.titleAuxColor - textView.isScrollEnabled = false + textView.isScrollEnabled = true + textView.textContainerInset = UIEdgeInsets(top: 8, left: 0, bottom: 8, right: 0) return textView }() lazy var placeholderLab: UILabel = { let label = UILabel() - label.text = "请输入圈子描述" + label.text = "请输入.." label.textColor = ThemeManager.shared.color.contentColor label.font = .systemFont(ofSize: 14, weight: .medium) return label }() - // 标签 - lazy var tagInfoView: UIView = { - let view = UIView() - view.backgroundColor = .clear - return view - }() - lazy var tagTitleLab: UILabel = { let label = UILabel() label.text = "选择标签" - label.font = .systemFont(ofSize: 12, weight: .medium) + label.font = .systemFont(ofSize: 14, weight: .medium) label.textColor = ThemeManager.shared.color.titleAuxColor return label }() lazy var tagView: UICollectionView = { - let layout = UICollectionViewFlowLayout() - let cvWidth = kScreenWidth - 60 - let spacing: CGFloat = 6 - let itemW = (cvWidth - spacing * 3) / 4 - layout.itemSize = CGSize(width: itemW, height: 27) - layout.minimumInteritemSpacing = spacing - layout.minimumLineSpacing = 10 - + let layout = CreateGroupTagFlowLayout() + layout.minimumInteritemSpacing = 8 + layout.minimumLineSpacing = 8 + layout.sectionInset = .zero + let cv = UICollectionView(frame: .zero, collectionViewLayout: layout) cv.backgroundColor = .clear cv.isScrollEnabled = false @@ -353,30 +458,74 @@ class CreateGroupView: UIView { return cv }() - lazy var tipsLab: UILabel = { - let label = UILabel() - label.text = "如选择为私密圈子,将不能被分享到探索和被搜索。" - label.textColor = ThemeManager.shared.color.contentColor - label.font = .systemFont(ofSize: 10, weight: .regular) - return label - }() - lazy var submitBtn: UIButton = { let btn = UIButton(type: .custom) btn.setTitle("创建", for: .normal) btn.setTitleColor(.white, for: .normal) - btn.titleLabel?.font = .systemFont(ofSize: 16, weight: .medium) + btn.titleLabel?.font = FontManager.boboBold(18) btn.setBackgroundImage(UIImage(named: "Common/button_bg_2"), for: .normal) - btn.cornerRadius = 25 - + btn.cornerRadius = 20 + return btn + }() + + private let sheetOverlay = UIView() + private let sheetPanel = UIView() + private let sheetHeaderView = UIView() + private let sheetTitleLab = UILabel() + private let sheetAddIcon = UIImageView() + private let addTagInputView = UIView() + + lazy var addTagTF: UITextField = { + let textField = UITextField(frame: .zero) + textField.font = .systemFont(ofSize: 14, weight: .medium) + textField.textColor = ThemeManager.shared.color.titleAuxColor + textField.placeholderColor(placeholder: "请输入标签", + color: UIColor(hexStr: "#999999", alpha: 1.0), + font: .systemFont(ofSize: 14, weight: .medium)) + return textField + }() + + lazy var addTagCountLab: UILabel = { + let label = UILabel() + label.text = "0/10" + label.font = .systemFont(ofSize: 12, weight: .regular) + label.textColor = ThemeManager.shared.color.contentColor + return label + }() + + lazy var addTagClearBtn: UIButton = { + let btn = UIButton(type: .custom) + return btn + }() + + lazy var sheetCancelBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setTitle("取消", for: .normal) + btn.setTitleColor(UIColor(hexStr: "#16B3FF"), for: .normal) + btn.titleLabel?.font = .systemFont(ofSize: 15, weight: .medium) + btn.backgroundColor = .white + btn.borderWidth = 1 + btn.borderColor = UIColor(hexStr: "#16B3FF") + btn.cornerRadius = 22 + return btn + }() + + lazy var sheetConfirmBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setTitle("确定", for: .normal) + btn.setTitleColor(.white, for: .normal) + btn.titleLabel?.font = .systemFont(ofSize: 15, weight: .medium) + btn.setBackgroundImage(UIImage(named: "Common/gradient_bg"), for: .normal) + btn.cornerRadius = 22 + btn.clipsToBounds = true return btn }() override init(frame: CGRect) { super.init(frame: .zero) - backgroundColor = .white setupUI() setupRx() + backgroundColor = UIColor(hexStr: "#FAFAFA") } required init?(coder aDecoder: NSCoder) { @@ -384,50 +533,320 @@ class CreateGroupView: UIView { } } +// MARK: - Icon Carousel + +final class CreateGroupIconCarouselView: UIView { + + var onSelectIndex: ((Int) -> Void)? + + private let iconCount = 11 + private let itemSize: CGFloat = 80 + private var lastWidth: CGFloat = 0 + + var selectedIndex: Int = 1 { + didSet { + guard oldValue != selectedIndex else { return } + onSelectIndex?(selectedIndex) + } + } + + override init(frame: CGRect) { + super.init(frame: frame) + clipsToBounds = false + addSubview(collectionView) + collectionView.layoutChain.edges() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() { + super.layoutSubviews() + guard bounds.width > 0 else { return } + if bounds.width != lastWidth { + lastWidth = bounds.width + let inset = max(0, (bounds.width - itemSize) / 2) + flowLayout.sectionInset = UIEdgeInsets(top: 25, left: inset, bottom: 25, right: inset) + collectionView.layoutIfNeeded() + scrollToIndex(selectedIndex, animated: false) + } + applyTransforms() + } + + private func scrollToIndex(_ index: Int, animated: Bool) { + let item = max(0, min(iconCount - 1, index - 1)) + collectionView.scrollToItem(at: IndexPath(item: item, section: 0), + at: .centeredHorizontally, + animated: animated) + } + + private func nearestIndex() -> Int { + let centerX = collectionView.contentOffset.x + collectionView.bounds.width / 2 + var nearest = 0 + var minDist = CGFloat.greatestFiniteMagnitude + for i in 0.. Int { + iconCount + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(for: indexPath) as CreateGroupIconCell + cell.configure(UIImage(named: "GroupIcon/\(indexPath.item + 1)")) + return cell + } + + func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { + applyTransforms() + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + selectedIndex = indexPath.item + 1 + collectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true) + } + + func scrollViewDidScroll(_ scrollView: UIScrollView) { + applyTransforms() + } + + func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) { + let proposedCenter = targetContentOffset.pointee.x + scrollView.bounds.width / 2 + var nearest = 0 + var minDist = CGFloat.greatestFiniteMagnitude + for i in 0.. [UICollectionViewLayoutAttributes]? { + alignedAttrs.values.filter { $0.frame.intersects(rect) } + } + + override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? { + alignedAttrs[indexPath] ?? super.layoutAttributesForItem(at: indexPath) + } + + override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool { + collectionView?.bounds.width != newBounds.width + } + + private func leftAlign(_ attrs: [UICollectionViewLayoutAttributes]) { + var x = sectionInset.left + var y = sectionInset.top + var lineHeight: CGFloat = 0 + let maxX = (collectionView?.bounds.width ?? 0) - sectionInset.right + for attr in attrs where attr.representedElementCategory == .cell { + if x > sectionInset.left && x + attr.frame.width > maxX { + x = sectionInset.left + y += lineHeight + minimumLineSpacing + lineHeight = 0 + } + attr.frame.origin = CGPoint(x: x, y: y) + x += attr.frame.width + minimumInteritemSpacing + lineHeight = max(lineHeight, attr.frame.height) + } + } +} + // MARK: - TagCell + final class TagCell: UICollectionViewCell { static let reuseId = "TagCell" - + private let label: UILabel = { let l = UILabel() l.font = .systemFont(ofSize: 12, weight: .medium) l.textAlignment = .center return l }() - + + private let plusView: UIImageView = { + let view = UIImageView() + let config = UIImage.SymbolConfiguration(pointSize: 13, weight: .medium) + view.image = UIImage(systemName: "plus", withConfiguration: config) + view.tintColor = .white + view.contentMode = .center + view.isHidden = true + return view + }() + private var isTagSelected = false - + override init(frame: CGRect) { super.init(frame: frame) contentView.addSubview(label) + contentView.addSubview(plusView) label.layoutChain.edges() - contentView.layer.cornerRadius = 4 - contentView.backgroundColor = UIColor(hexStr: "#E3F6FF") + plusView.layoutChain.edges() + contentView.layer.cornerRadius = 8 + contentView.backgroundColor = UIColor(hexStr: "#F0F2F5") updateStyle() } - + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } - + + override func prepareForReuse() { + super.prepareForReuse() + plusView.isHidden = true + label.isHidden = false + label.text = nil + } + + static func preferredSize(for item: String) -> CGSize { + if item == CreateGroupViewModel.addTagToken { + return CGSize(width: 28, height: 28) + } + let font = UIFont.systemFont(ofSize: 12, weight: .medium) + let textW = ceil((item as NSString).size(withAttributes: [.font: font]).width) + return CGSize(width: max(52, textW + 20), height: 28) + } + func configure(_ text: String, isSelected: Bool) { + plusView.isHidden = true + label.isHidden = false label.text = text - self.isTagSelected = isSelected + isTagSelected = isSelected + contentView.layer.cornerRadius = 8 updateStyle() } - + + func configureAsAdd() { + plusView.isHidden = false + label.isHidden = true + label.text = nil + isTagSelected = false + contentView.backgroundColor = UIColor(hexStr: "#16B3FF") + contentView.layer.borderWidth = 0 + contentView.layer.cornerRadius = 8 + } + func toggleSelection() { isTagSelected.toggle() updateStyle() } - + private func updateStyle() { if isTagSelected { label.textColor = UIColor(hexStr: "#16B3FF") + contentView.backgroundColor = UIColor(hexStr: "#E3F6FF") contentView.layer.borderWidth = 1 contentView.layer.borderColor = UIColor(hexStr: "#16B3FF").cgColor } else { label.textColor = ThemeManager.shared.color.titleAuxColor + contentView.backgroundColor = UIColor(hexStr: "#F0F2F5") contentView.layer.borderWidth = 0 } } diff --git a/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift b/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift index cc301f44..77f11623 100644 --- a/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift +++ b/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift @@ -13,6 +13,15 @@ import SwiftyUserDefaults typealias GroupTagListSectionModel = SectionModel class CreateGroupViewModel { + enum AddTagResult { + case success + case empty + case duplicate + } + + static let addTagToken = "__add_tag__" + static let tagMaxLength = 10 + struct Input { } @@ -26,7 +35,7 @@ class CreateGroupViewModel { private let sectionedItems = PublishSubject<[GroupTagListSectionModel]>() - private let tagList = ["私密", "游戏", "运动", "美食", + private var tagList = ["私密", "游戏", "运动", "美食", "自驾", "聚会", "旅行", "学习"] var selectedTagList: [String] = [] { @@ -56,9 +65,21 @@ class CreateGroupViewModel { return selectedTagList.first(where: { tag == $0 }) != nil } + func addCustomTag(_ raw: String) -> AddTagResult { + let trimmed = raw.trimmingCharacters(in: .whitespacesAndNewlines) + guard !trimmed.isEmpty else { return .empty } + let tag = String(trimmed.prefix(Self.tagMaxLength)) + if tagList.contains(tag) { + return .duplicate + } + tagList.append(tag) + selectedTagList.append(tag) + return .success + } + // MARK: - 加载数据 func loadData() { - sectionedItems.onNext(tagList.mapSection()) + sectionedItems.onNext((tagList + [Self.addTagToken]).mapSection()) } // MARK: - Request diff --git a/QuickLocation/Section/Group/GroupView.swift b/QuickLocation/Section/Group/GroupView.swift index e4e847b6..7b022b78 100644 --- a/QuickLocation/Section/Group/GroupView.swift +++ b/QuickLocation/Section/Group/GroupView.swift @@ -642,7 +642,7 @@ final class CircleGroupCell: UITableViewCell { private let iconView: UIImageView = { let iv = UIImageView() iv.contentMode = .scaleAspectFill - iv.cornerRadius = 20 + iv.cornerRadius = 10 iv.clipsToBounds = true iv.backgroundColor = UIColor(hexStr: "#F0F0F0") return iv diff --git a/QuickLocation/Section/Group/Join/JoinGroupVC.swift b/QuickLocation/Section/Group/Join/JoinGroupVC.swift index fca50ab6..f7fb30ba 100644 --- a/QuickLocation/Section/Group/Join/JoinGroupVC.swift +++ b/QuickLocation/Section/Group/Join/JoinGroupVC.swift @@ -17,20 +17,24 @@ class JoinGroupVC: BaseViewController { rootView = JoinGroupView(frame: UIScreen.main.bounds) view = rootView } - + override func viewDidLoad() { super.viewDidLoad() + view.backgroundColor = .white - // Do any additional setup after loading the view. rootView.textField.rx.controlEvent(.editingDidEndOnExit).subscribe(onNext: { self.rootView.textField.resignFirstResponder() self.requestOperateGroup() }).disposed(by: disposeBag) - + rootView.submitBtn.rx.tap.subscribe(onNext: { _ in self.requestOperateGroup() }).disposed(by: disposeBag) - + + rootView.keyboardConfirmBtn.rx.tap.subscribe(onNext: { _ in + self.rootView.textField.resignFirstResponder() + }).disposed(by: disposeBag) + rootView.scanBtn.rx.tap.subscribe(onNext: { _ in let vc = ScanVC { code in self.rootView.textField.text = code @@ -39,12 +43,12 @@ class JoinGroupVC: BaseViewController { AppRouter.push(vc) }).disposed(by: disposeBag) } - + override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) rootView.textField.becomeFirstResponder() } - + // MARK: - API private func requestOperateGroup() { guard rootView.inviteCode.count == 6 else { diff --git a/QuickLocation/Section/Group/Join/JoinGroupView.swift b/QuickLocation/Section/Group/Join/JoinGroupView.swift index d2be5760..e05daf28 100644 --- a/QuickLocation/Section/Group/Join/JoinGroupView.swift +++ b/QuickLocation/Section/Group/Join/JoinGroupView.swift @@ -12,263 +12,278 @@ import RxCocoa class JoinGroupView: UIView { var disposeBag = DisposeBag() - + var numberBtns: [UIButton] = [] - + var inviteCode: String = "" { - didSet { - for btn in numberBtns { - btn.setTitle("", for: .normal) - btn.isSelected = false - } - - let characters = inviteCode.map { String($0) } - for (index, character) in characters.enumerated() { - numberBtns[index].setTitle(character, for: .normal) - if index < numberBtns.count-1 { - numberBtns[index].isSelected = false - numberBtns[index+1].isSelected = true - } - } - } + didSet { updateCodeBoxes() } } - + @objc func numAction(button: UIButton) { textField.becomeFirstResponder() } - + + private func updateCodeBoxes() { + for btn in numberBtns { + btn.setTitle("", for: .normal) + btn.isSelected = false + } + + let characters = inviteCode.map { String($0) } + for (index, character) in characters.enumerated() { + numberBtns[index].setTitle(character, for: .normal) + numberBtns[index].isSelected = true + } + + let cursorIndex = characters.count + if cursorIndex < numberBtns.count { + numberBtns[cursorIndex].isSelected = true + } + } + private func setupRx() { textField.rx.text .orEmpty .subscribe(onNext: { text in if text.count < 7 { self.inviteCode = text - } - else { + } else { self.inviteCode = String(text.dropLast(2) + [text.last!]) self.textField.text = self.inviteCode } }) .disposed(by: disposeBag) - - } - + private func setupUI() { addSubview(navBgView) + addSubview(contentCard) addSubview(navView) - addSubview(titleLab) - addSubview(number1) - addSubview(number2) - addSubview(number3) - addSubview(lineView) - addSubview(number4) - addSubview(number5) - addSubview(number6) - addSubview(tipsLab) - addSubview(submitBtn) addSubview(textField) - + addSubview(scanBtn) + + contentCard.addSubview(cardTitleLab) + contentCard.addSubview(number1) + contentCard.addSubview(number2) + contentCard.addSubview(number3) + contentCard.addSubview(lineView) + contentCard.addSubview(number4) + contentCard.addSubview(number5) + contentCard.addSubview(number6) + contentCard.addSubview(submitBtn) + contentCard.addSubview(tipsLab) + navBgView.layoutChain - .edges(excludingEdge: .bottom) - .heightToWidth(160/375) - + .top() + .edgesHorzontal() + .heightToWidth(253 / 375) + navView.layoutChain - .edges(excludingEdge: .bottom) + .top() + .edgesHorzontal() .height(kNaviHeight) - - titleLab.layoutChain - .topToBottomOfView(navView, offset: 21) + + contentCard.layoutChain + .topToBottomOfView(navBgView, offset: -60) + .edgesHorzontal() + .bottom() + + cardTitleLab.layoutChain + .top(17) .centerX() - + lineView.layoutChain - .topToBottomOfView(titleLab, offset: 58) + .topToBottomOfView(cardTitleLab, offset: 62) .centerX() - .width(10) - .height(4) - + .width(13) + .height(5) + number3.layoutChain .centerY(lineView) - .rightToLeftOfView(lineView, offset: -8) - .width(28) - .height(40) - + .rightToLeftOfView(lineView, offset: -10) + .width(36) + .height(52) + number2.layoutChain .topToView(number3) - .rightToLeftOfView(number3, offset: -8) + .rightToLeftOfView(number3, offset: -10) .widthToView(number3) .heightToView(number3) - + number1.layoutChain .topToView(number3) - .rightToLeftOfView(number2, offset: -8) + .rightToLeftOfView(number2, offset: -10) .widthToView(number3) .heightToView(number3) - + number4.layoutChain .centerY(lineView) - .leftToRightOfView(lineView, offset: 8) + .leftToRightOfView(lineView, offset: 10) .widthToView(number3) .heightToView(number3) - + number5.layoutChain .topToView(number3) - .leftToRightOfView(number4, offset: 8) + .leftToRightOfView(number4, offset: 10) .widthToView(number3) .heightToView(number3) - + number6.layoutChain .topToView(number3) - .leftToRightOfView(number5, offset: 8) + .leftToRightOfView(number5, offset: 10) .widthToView(number3) .heightToView(number3) - - tipsLab.layoutChain - .topToBottomOfView(lineView, offset: 38) - .centerX() - + submitBtn.layoutChain - .bottom(kSafeBottomMargin + 36) + .topToBottomOfView(number3, offset: 40) + .edgesHorzontal(24) + .height(56) + + tipsLab.layoutChain + .topToBottomOfView(submitBtn, offset: 16) .centerX() - .edgesHorzontal(30) - .height(50) + .edgesHorzontal(24) + + scanBtn.layoutChain + .top(kStatusBarHeight + 6) + .right(18) + .width(32).height(32) + } + + private func styleNavIconButton(_ button: UIButton) { + button.backgroundColor = .white + button.cornerRadius = 12 + button.clipsToBounds = true + } + + private func makeCodeButton() -> UIButton { + let button = UIButton(type: .custom) + button.setTitleColor(.white, for: .selected) + button.setTitleColor(UIColor(hexStr: "#293445"), for: .normal) + button.titleLabel?.font = FontManager.youSheBiaoTiHei(30) + button.setBackgroundColor(UIColor(hexStr: "#16B3FF", alpha: 0.3), for: .normal) + button.setBackgroundColor(UIColor(hexStr: "#5CBBFF"), for: .selected) + button.cornerRadius = 12 + button.addTarget(self, action: #selector(numAction), for: .touchUpInside) + return button } lazy var navBgView: UIImageView = { let iv = UIImageView() - iv.image = UIImage(named: "Common/navBar_bg_2") + iv.image = UIImage(named: "Group/join_hero_bg") iv.contentMode = .scaleAspectFill + iv.clipsToBounds = true return iv }() - + + lazy var contentCard: UIView = { + let view = UIView() + view.backgroundColor = .white + view.layer.cornerRadius = 30 + view.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + view.clipsToBounds = true + return view + }() + lazy var navView: BaseNavigationView = { - let nav = BaseNavigationView(title: "加入圈子") - nav.addRightButton(scanBtn) + let nav = BaseNavigationView(title: " ") return nav }() - + lazy var scanBtn: UIButton = { let btn = UIButton(type: .custom) - btn.setImage(UIImage(named: "Group/scan"), for: .normal) + btn.setBackgroundImage(UIImage(named: "Group/join_scan"), for: .normal) + btn.extendEdgeInsets = UIEdgeInsets(top: 10, left: 20, bottom: 20, right: 18) return btn }() - - lazy var titleLab: UILabel = { + + lazy var cardTitleLab: UILabel = { let label = UILabel() - label.text = "输入邀请码" - label.font = .systemFont(ofSize: 24, weight: .medium) - label.textColor = ThemeManager.shared.color.titleAuxColor + label.text = "请输入邀请码" + label.font = .systemFont(ofSize: 16, weight: .bold) + label.textColor = UIColor(hexStr: "#353B4F") label.textAlignment = .center return label }() - + lazy var tipsLab: UILabel = { let label = UILabel() - label.text = "向圈子创建者询问邀请码" - label.font = .systemFont(ofSize: 12, weight: .medium) - label.textColor = ThemeManager.shared.color.titleAuxColor + label.text = "输入好友分享的邀请码,添加好友专属圈子" + label.font = .systemFont(ofSize: 14, weight: .medium) + label.textColor = UIColor(hexStr: "#00ADFE") + label.textAlignment = .center + label.numberOfLines = 0 return label }() - + lazy var number1: UIButton = { - let button = UIButton (type: .custom) - button.setTitleColor(ThemeManager.shared.color.titleColor, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 14, weight: .medium) - button.setBackgroundColor(UIColor(hexStr: "#16B3FF").withAlphaComponent(0.3), for: .normal) - button.setBackgroundColor(UIColor(hexStr: "#5CBBFF"), for: .selected) - button.cornerRadius = 4 + let button = makeCodeButton() button.isSelected = true - button.addTarget(self, action: #selector(numAction), for: .touchUpInside) return button }() - - lazy var number2: UIButton = { - let button = UIButton (type: .custom) - button.setTitleColor(ThemeManager.shared.color.titleColor, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 14, weight: .medium) - button.setBackgroundColor(UIColor(hexStr: "#16B3FF").withAlphaComponent(0.3), for: .normal) - button.setBackgroundColor(UIColor(hexStr: "#5CBBFF"), for: .selected) - button.addTarget(self, action: #selector(numAction), for: .touchUpInside) - button.cornerRadius = 4 - return button - }() - - lazy var number3: UIButton = { - let button = UIButton (type: .custom) - button.setTitleColor(ThemeManager.shared.color.titleColor, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 14, weight: .medium) - button.setBackgroundColor(UIColor(hexStr: "#16B3FF").withAlphaComponent(0.3), for: .normal) - button.setBackgroundColor(UIColor(hexStr: "#5CBBFF"), for: .selected) - button.addTarget(self, action: #selector(numAction), for: .touchUpInside) - button.cornerRadius = 4 - return button - }() - - lazy var number4: UIButton = { - let button = UIButton (type: .custom) - button.setTitleColor(ThemeManager.shared.color.titleColor, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 14, weight: .medium) - button.setBackgroundColor(UIColor(hexStr: "#16B3FF").withAlphaComponent(0.3), for: .normal) - button.setBackgroundColor(UIColor(hexStr: "#5CBBFF"), for: .selected) - button.addTarget(self, action: #selector(numAction), for: .touchUpInside) - button.cornerRadius = 4 - return button - }() - - lazy var number5: UIButton = { - let button = UIButton (type: .custom) - button.setTitleColor(ThemeManager.shared.color.titleColor, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 14, weight: .medium) - button.setBackgroundColor(UIColor(hexStr: "#16B3FF").withAlphaComponent(0.3), for: .normal) - button.setBackgroundColor(UIColor(hexStr: "#5CBBFF"), for: .selected) - button.addTarget(self, action: #selector(numAction), for: .touchUpInside) - button.cornerRadius = 4 - return button - }() - - lazy var number6: UIButton = { - let button = UIButton (type: .custom) - button.setTitleColor(ThemeManager.shared.color.titleColor, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 14, weight: .medium) - button.setBackgroundColor(UIColor(hexStr: "#16B3FF", alpha: 0.3), for: .normal) - button.setBackgroundColor(UIColor(hexStr: "#5CBBFF"), for: .selected) - button.addTarget(self, action: #selector(numAction), for: .touchUpInside) - button.cornerRadius = 4 - return button - }() - + + lazy var number2: UIButton = makeCodeButton() + lazy var number3: UIButton = makeCodeButton() + lazy var number4: UIButton = makeCodeButton() + lazy var number5: UIButton = makeCodeButton() + lazy var number6: UIButton = makeCodeButton() + lazy var lineView: UIView = { let view = UIView() - view.backgroundColor = UIColor(hexStr: "#16B3FF", alpha: 0.3) + view.backgroundColor = UIColor(hexStr: "#16B3FF") + view.cornerRadius = 0 return view }() - + lazy var submitBtn: UIButton = { let btn = UIButton(type: .custom) btn.setTitle("加入", for: .normal) - btn.setTitleColor(UIColor(hexStr: "#0F2846"), for: .normal) - btn.titleLabel?.font = .systemFont(ofSize: 16, weight: .medium) - btn.setBackgroundImage(UIImage(named: "Common/gradient_bg"), for: .normal) - btn.cornerRadius = 25 - + btn.setTitleColor(.white, for: .normal) + btn.titleLabel?.font = FontManager.boboBold(18) + btn.setBackgroundImage(UIImage(named: "Common/button_bg_2"), for: .normal) + btn.cornerRadius = 20 return btn }() - + + lazy var keyboardConfirmBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setTitle("确认", for: .normal) + btn.setTitleColor(.white, for: .normal) + btn.titleLabel?.font = FontManager.boboBold(18) + btn.setBackgroundImage(UIImage(named: "Common/button_bg_2"), for: .normal) + btn.cornerRadius = 20 + return btn + }() + + private lazy var keyboardConfirmBar: UIView = { + let bar = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 68)) + bar.backgroundColor = .white + + bar.addSubview(keyboardConfirmBtn) + keyboardConfirmBtn.layoutChain + .edgesHorzontal(16) + .top(8) + .height(52) + + return bar + }() + lazy var textField: UITextField = { let tf = UITextField() tf.isHidden = true tf.keyboardType = .asciiCapable tf.autocorrectionType = .no tf.returnKeyType = .done +// tf.inputAccessoryView = keyboardConfirmBar return tf }() - + override init(frame: CGRect) { super.init(frame: .zero) backgroundColor = .white setupUI() setupRx() - + numberBtns = [number1, number2, number3, number4, number5, number6] } diff --git a/QuickLocation/Section/Home/Bubble/CreateBubbleSetupView.swift b/QuickLocation/Section/Home/Bubble/CreateBubbleSetupView.swift index 6278fa35..133e9722 100644 --- a/QuickLocation/Section/Home/Bubble/CreateBubbleSetupView.swift +++ b/QuickLocation/Section/Home/Bubble/CreateBubbleSetupView.swift @@ -114,8 +114,8 @@ final class CreateBubbleSetupView: UIView { confirmBtn.setTitleColor(.white, for: .normal) confirmBtn.titleLabel?.font = FontManager.boboBold(18) confirmBtn.setBackgroundImage(UIImage(named: "Common/button_bg_2"), for: .normal) - confirmBtn.layer.cornerRadius = 16 - confirmBtn.layoutChain.left(20).right(20).bottom(34).height(56) + confirmBtn.cornerRadius = 20 + confirmBtn.layoutChain.left(30).right(30).bottom(34).height(56) } private func setupPicker() { diff --git a/QuickLocation/Section/LockDistract/LockDistractVC.swift b/QuickLocation/Section/LockDistract/LockDistractVC.swift new file mode 100644 index 00000000..c1f076c5 --- /dev/null +++ b/QuickLocation/Section/LockDistract/LockDistractVC.swift @@ -0,0 +1,103 @@ +// +// LockDistractVC.swift +// QuickLocation +// + +import UIKit +import RxSwift +import RxCocoa + +final class LockDistractVC: BaseViewController { + + private var rootView: LockDistractView! + private var groupModel: GroupModel? + private var members: [GroupMemberModel] = [] + private var selectedIndex = 0 + + override var isNavigationBarHidden: Bool { true } + + override func loadView() { + rootView = LockDistractView(frame: UIScreen.main.bounds) + view = rootView + } + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = UIColor(hexStr: "#FAFAFA") + bind() + loadGroupMembers() + } + + private func bind() { + rootView.navView.onBackTapped = { [weak self] in + self?.navigationController?.popViewController(animated: true) + } + + rootView.switchGroupBtn.rx.tap + .subscribe(onNext: { [weak self] in + self?.switchGroup() + }) + .disposed(by: disposeBag) + + rootView.memberPrevBtn.rx.tap + .subscribe(onNext: { [weak self] in + self?.stepMember(-1) + }) + .disposed(by: disposeBag) + + rootView.memberNextBtn.rx.tap + .subscribe(onNext: { [weak self] in + self?.stepMember(1) + }) + .disposed(by: disposeBag) + + // 未获取 / 锁定:本期不接业务 + rootView.notFetchedView.rx.tapGesture + .subscribe(onNext: { _ in + /// TODO + }).disposed(by: disposeBag) + } + + private func loadGroupMembers() { + GroupService.groupInfo().subscribe(onNext: { [weak self] response in + guard let self, let model = response.model else { return } + self.groupModel = model + self.members = model.select_group_employee + self.selectedIndex = 0 + self.refreshMember() + self.rootView.setTodayLockCount(0) + }).disposed(by: disposeBag) + } + + private func stepMember(_ delta: Int) { + guard !members.isEmpty else { return } + let count = members.count + selectedIndex = (selectedIndex + delta + count) % count + refreshMember() + } + + private func refreshMember() { + guard members.indices.contains(selectedIndex) else { + rootView.configureMember(name: " ", avatar: nil) + return + } + let m = members[selectedIndex] + rootView.configureMember(name: m.nick_name, avatar: m.userIcon) + } + + private func switchGroup() { + guard let groupModel else { + loadGroupMembers() + return + } + GroupListPopView.show(groupModel: groupModel) { [weak self] groupKey in + guard let self, let key = groupKey else { return } + GroupService.operate(opType: "setdefault", requestData: ["group_key": key]) + .subscribe(onNext: { [weak self] _ in + NotificationCenter.default.post(name: .RefreshGroupInfoNotification, object: nil) + self?.loadGroupMembers() + }) + .disposed(by: self.disposeBag) + } + } +} diff --git a/QuickLocation/Section/LockDistract/LockDistractView.swift b/QuickLocation/Section/LockDistract/LockDistractView.swift new file mode 100644 index 00000000..3228a6f3 --- /dev/null +++ b/QuickLocation/Section/LockDistract/LockDistractView.swift @@ -0,0 +1,605 @@ +// +// LockDistractView.swift +// QuickLocation +// + +import UIKit +import RxSwift +import RxCocoa + +final class LockDistractView: UIView { + + var disposeBag = DisposeBag() + + let wallpaperNames = [ + "LockDistract/wallpaper_1", + "LockDistract/wallpaper_2", + "LockDistract/wallpaper_3" + ] + + private(set) var selectedWallpaperIndex = 0 + private let copyMaxLength = 20 + + // MARK: - Init + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = UIColor(hexStr: "#FAFAFA") + setupUI() + setupCopyLimit() + } + + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + + // MARK: - Public + + func configureMember(name: String, avatar: UIImage?) { + memberNameLab.text = name.isEmpty ? " " : name + memberAvatar.image = avatar ?? UIImage(named: "Common/default_avatar") + } + + func setTodayLockCount(_ count: Int) { + todayCountLab.text = "\(count)" + } + + // MARK: - UI + + private func setupUI() { + addSubview(navBgView) + addSubview(navView) + navView.addRightButton(switchGroupBtn) + addSubview(scrollView) + scrollView.addSubview(contentView) + addSubview(lockBtn) + + contentView.addSubview(titleLab) + contentView.addSubview(subtitleLab) + contentView.addSubview(heroPlaceholder) + contentView.addSubview(statsRow) + statsRow.addArrangedSubview(memberCard) + statsRow.addArrangedSubview(todayCard) + contentView.addSubview(appsSectionTitle) + contentView.addSubview(appsCard) + appsCard.addSubview(appsHeaderRow) + appsCard.addSubview(unknownAppIcon) + contentView.addSubview(styleSectionTitle) + contentView.addSubview(styleCard) + addSubview(tipRow) + + navBgView.layoutChain + .edges(excludingEdge: .bottom) + .heightToWidth(160/375) + + navView.layoutChain + .edges(excludingEdge: .bottom) + .height(kNaviHeight) + + lockBtn.layoutChain + .bottom(kSafeBottomMargin + 0) + .edgesHorzontal(30) + .height(56) + + scrollView.layoutChain + .topToBottomOfView(navView) + .edgesHorzontal() + .bottomToTopOfView(tipRow, offset: -12) + + contentView.layoutChain + .edges() + .widthToView(scrollView) + + titleLab.layoutChain + .top(8) + .left(20) + + subtitleLab.layoutChain + .topToBottomOfView(titleLab, offset: 6) + .left(20) + .right(140) + + heroPlaceholder.layoutChain + .top(0) + .right(16) + .width(120) + .height(100) + + statsRow.layoutChain + .topToBottomOfView(subtitleLab, offset: 20) + .edgesHorzontal(16) + .height(120) + + appsSectionTitle.layoutChain + .topToBottomOfView(statsRow, offset: 22) + .left(20) + + appsCard.layoutChain + .topToBottomOfView(appsSectionTitle, offset: 12) + .edgesHorzontal(16) + + appsHeaderRow.layoutChain + .top(16) + .edgesHorzontal(14) + + unknownAppIcon.layoutChain + .topToBottomOfView(appsHeaderRow, offset: 14) + .left(14) + .width(56) + .height(56) + .bottom(16) + + styleSectionTitle.layoutChain + .topToBottomOfView(appsCard, offset: 22) + .left(20) + + styleCard.layoutChain + .topToBottomOfView(styleSectionTitle, offset: 12) + .edgesHorzontal(16) + .bottom(20) + + tipRow.layoutChain + .centerX() + .bottomToTopOfView(lockBtn, offset: -6) + } + + private func setupCopyLimit() { + copyTF.rx.text.orEmpty + .subscribe(onNext: { [weak self] text in + guard let self else { return } + if text.count > self.copyMaxLength { + self.copyTF.text = String(text.prefix(self.copyMaxLength)) + } + let count = self.copyTF.text?.count ?? 0 + self.copyCountLab.text = "\(count)/\(self.copyMaxLength)" + }) + .disposed(by: disposeBag) + } + + + // MARK: - Views + + lazy var navBgView: UIImageView = { + let iv = UIImageView() + iv.image = UIImage(named: "Common/navBar_bg_2") + iv.contentMode = .scaleAspectFill + return iv + }() + + lazy var navView: BaseNavigationView = { + BaseNavigationView(title: "") + }() + + lazy var switchGroupBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.backgroundColor = .white.withAlphaComponent(0.9) + btn.setTitle(" 切换圈子 ", for: .normal) + btn.titleLabel?.font = .systemFont(ofSize: 12, weight: .medium) + btn.setTitleColor(UIColor(hexStr: "#293445"), for: .normal) + btn.cornerRadius = 8 + btn.extendEdgeInsets = UIEdgeInsets(top: 20, left: 12, bottom: 12, right: 4) + return btn + }() + + lazy var scrollView: UIScrollView = { + let sv = UIScrollView() + sv.showsVerticalScrollIndicator = false + sv.alwaysBounceVertical = true + sv.keyboardDismissMode = .onDrag + return sv + }() + + lazy var contentView = UIView() + + lazy var titleLab: UILabel = { + let lab = UILabel() + lab.text = "锁住分心" + lab.font = FontManager.boboBold(30) + lab.textColor = UIColor(hexStr: "#293445") + return lab + }() + + lazy var subtitleLab: UILabel = { + let lab = UILabel() + lab.text = "减少干扰,只专注重要的事" + lab.font = .systemFont(ofSize: 13, weight: .medium) + lab.textColor = UIColor(hexStr: "#8A94A6") + lab.numberOfLines = 2 + return lab + }() + + lazy var heroPlaceholder: UIView = { + let view = UIView() + view.backgroundColor = .clear + return view + }() + + lazy var statsRow: UIStackView = { + let stack = UIStackView() + stack.axis = .horizontal + stack.spacing = 12 + stack.distribution = .fillEqually + return stack + }() + + lazy var memberCard: UIView = { + let view = UIView() + view.backgroundColor = .white + view.cornerRadius = 16 + + view.addSubview(memberPrevBtn) + view.addSubview(memberAvatar) + view.addSubview(memberNextBtn) + view.addSubview(memberNameChip) + memberNameChip.addSubview(memberNameLab) + + memberAvatar.layoutChain + .top(18) + .centerX() + .width(56) + .height(56) + + memberPrevBtn.layoutChain + .centerY(memberAvatar) + .left(8) + .width(28) + .height(28) + + memberNextBtn.layoutChain + .centerY(memberAvatar) + .right(8) + .width(28) + .height(28) + + memberNameChip.layoutChain + .topToBottomOfView(memberAvatar, offset: 10) + .centerX() + .left(8, relation: .greaterThanOrEqual) + .right(8, relation: .greaterThanOrEqual) + .bottom(14) + + memberNameLab.layoutChain + .top(6) + .bottom(6) + .left(5) + .right(5) + + return view + }() + + lazy var memberAvatar: UIImageView = { + let iv = UIImageView(image: UIImage(named: "Common/default_avatar")) + iv.contentMode = .scaleAspectFill + iv.clipsToBounds = true + iv.cornerRadius = 16 + return iv + }() + + lazy var memberNameChip: UIView = { + let view = UIView() + view.backgroundColor = UIColor(hexStr: "#F2F2F2") + view.cornerRadius = 8 + return view + }() + + lazy var memberNameLab: UILabel = { + let lab = UILabel() + lab.text = " " + lab.font = .systemFont(ofSize: 10, weight: .bold) + lab.textColor = UIColor(hexStr: "#293445") + lab.textAlignment = .center + lab.lineBreakMode = .byTruncatingTail + return lab + }() + + lazy var memberPrevBtn: UIButton = { + let btn = UIButton(type: .system) + btn.setImage(UIImage(systemName: "chevron.left"), for: .normal) + btn.tintColor = UIColor(hexStr: "#9CA3AF") + return btn + }() + + lazy var memberNextBtn: UIButton = { + let btn = UIButton(type: .system) + btn.setImage(UIImage(systemName: "chevron.right"), for: .normal) + btn.tintColor = UIColor(hexStr: "#9CA3AF") + return btn + }() + + lazy var todayCard: UIView = { + let view = UIView() + view.backgroundColor = .white + view.cornerRadius = 16 + + let title = UILabel() + title.text = "今日锁定应用" + title.font = .systemFont(ofSize: 16, weight: .bold) + title.textColor = UIColor(hexStr: "#293445") + view.addSubview(title) + title.layoutChain.top(21).left(23) + + view.addSubview(todayCountLab) + view.addSubview(todayUnitLab) + + todayCountLab.layoutChain + .leftToView(title, offset: 4) + .bottom(10) + todayUnitLab.layoutChain + .leftToRightOfView(todayCountLab, offset: 7) + .bottomToView(todayCountLab, offset: -12) + + return view + }() + + lazy var todayCountLab: UILabel = { + let lab = UILabel() + lab.text = "0" + lab.font = .systemFont(ofSize: 50, weight: .heavy) + lab.textColor = UIColor(hexStr: "#00ADFE") + return lab + }() + + lazy var todayUnitLab: UILabel = { + let lab = UILabel() + lab.text = "个" + lab.font = .systemFont(ofSize: 16, weight: .bold) + lab.textColor = UIColor(hexStr: "#293445") + return lab + }() + + lazy var appsSectionTitle: UIView = { + makeSectionTitle("锁定应用") + }() + + lazy var appsCard: UIView = { + let view = UIView() + view.backgroundColor = .white + view.cornerRadius = 26 + return view + }() + + lazy var appsHeaderRow: UIView = { + let row = UIView() + let left = UILabel() + left.text = "选择锁定TA的app" + left.font = .systemFont(ofSize: 14, weight: .medium) + left.textColor = UIColor(hexStr: "#293445") + row.addSubview(left) + left.layoutChain.left().centerY() + + row.addSubview(notFetchedView) + notFetchedView.layoutChain.right().centerY().height(28) + row.layoutChain.height(28) + return row + }() + + lazy var notFetchedView: UIView = { + let view = UIView() + + let warn = UIView() + warn.backgroundColor = UIColor(hexStr: "#FA5151") + warn.cornerRadius = 5 + let warnText = UILabel() + warnText.text = "!" + warnText.textColor = .white + warnText.font = .systemFont(ofSize: 8) + + view.addSubview(warn) + warn.addSubview(warnText) + warnText.layoutChain.centerX().centerY() + + let notFetchedText = UILabel() + notFetchedText.text = "未获取" + notFetchedText.textColor = UIColor(hexStr: "#293445") + notFetchedText.font = .systemFont(ofSize: 12, weight: .medium) + view.addSubview(notFetchedText) + + let arrow = UIImageView(image: UIImage(named: "LockDistract/arrow_right")) + + view.addSubview(arrow) + view.addSubview(notFetchedText) + + arrow.layoutChain + .right(14) + .width(10) + .heightToWidth(1) + .centerY() + + notFetchedText.layoutChain + .rightToLeftOfView(arrow) + .centerY() + + warn.layoutChain + .rightToLeftOfView(notFetchedText, offset: -4) + .centerY() + .width(10).height(10) + + return view + }() + + lazy var unknownAppIcon: UIImageView = { + let iv = UIImageView(image: UIImage(named: "LockDistract/app_unknown")) + iv.contentMode = .scaleAspectFit + return iv + }() + + lazy var styleSectionTitle: UIView = { + makeSectionTitle("锁定界面样式") + }() + + lazy var styleCard: UIView = { + let card = UIView() + card.backgroundColor = .white + card.cornerRadius = 26 + + let wallLab = UILabel() + wallLab.text = "锁定壁纸图片" + wallLab.font = .systemFont(ofSize: 13, weight: .medium) + wallLab.textColor = UIColor(hexStr: "#8A94A6") + card.addSubview(wallLab) + wallLab.layoutChain.top(16).left(14) + + card.addSubview(wallpaperCV) + wallpaperCV.layoutChain + .topToBottomOfView(wallLab, offset: 10) + .edgesHorzontal(14) + .height(74) + + let copyLab = UILabel() + copyLab.text = "锁定文案" + copyLab.font = .systemFont(ofSize: 13, weight: .medium) + copyLab.textColor = UIColor(hexStr: "#8A94A6") + card.addSubview(copyLab) + copyLab.layoutChain.topToBottomOfView(wallpaperCV, offset: 16).left(14) + + let input = UIView() + input.backgroundColor = UIColor(hexStr: "#F5F6F8") + input.cornerRadius = 12 + card.addSubview(input) + input.layoutChain + .topToBottomOfView(copyLab, offset: 10) + .edgesHorzontal(14) + .height(44) + .bottom(16) + + input.addSubview(copyTF) + input.addSubview(copyCountLab) + copyCountLab.layoutChain.centerY().right(12).width(35) + copyTF.layoutChain.edgesVertical().left(12).rightToLeftOfView(copyCountLab, offset: -8) + + return card + }() + + lazy var wallpaperCV: UICollectionView = { + let layout = UICollectionViewFlowLayout() + layout.scrollDirection = .horizontal + layout.itemSize = CGSize(width: 50, height: 74) + layout.minimumLineSpacing = 12 + layout.minimumInteritemSpacing = 0 + let cv = UICollectionView(frame: .zero, collectionViewLayout: layout) + cv.backgroundColor = .clear + cv.showsHorizontalScrollIndicator = false + cv.register(LockDistractWallpaperCell.self) + cv.dataSource = self + cv.delegate = self + return cv + }() + + lazy var copyTF: UITextField = { + let tf = UITextField() + tf.font = .systemFont(ofSize: 14, weight: .medium) + tf.textColor = UIColor(hexStr: "#293445") + tf.placeholderColor(placeholder: "随便说点什么吧~", + color: UIColor(hexStr: "#999999"), + font: .systemFont(ofSize: 14, weight: .medium)) + return tf + }() + + lazy var copyCountLab: UILabel = { + let lab = UILabel() + lab.text = "0/20" + lab.font = .systemFont(ofSize: 14, weight: .medium) + lab.textColor = UIColor(hexStr: "#AAAAAA") + return lab + }() + + lazy var tipRow: UIView = { + let row = UIView() + let icon = UIImageView(image: UIImage(systemName: "info.circle.fill")) + icon.tintColor = UIColor(hexStr: "#16B3FF") + let lab = UILabel() + lab.text = "锁定功能只有在圈主的情况下才能使用哟~" + lab.font = .systemFont(ofSize: 12, weight: .regular) + lab.textColor = UIColor(hexStr: "#00ADFE") + lab.numberOfLines = 0 + row.addSubview(icon) + row.addSubview(lab) + icon.layoutChain.left().top(1).width(14).height(14) + lab.layoutChain.leftToRightOfView(icon, offset: 6).right().top().bottom() + return row + }() + + lazy var lockBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setTitle("锁定", for: .normal) + btn.setTitleColor(.white, for: .normal) + btn.titleLabel?.font = FontManager.boboBold(18) + btn.setBackgroundImage(UIImage(named: "Common/button_bg_2"), for: .normal) + btn.cornerRadius = 20 + return btn + }() + + private func makeSectionTitle(_ text: String) -> UIView { + let row = UIView() + let star = UIImageView(image: UIImage(named: "LockDistract/section_star")) + // 切图目前带黑底,先用 SF Symbol 保证白底可读;资源补透明图后可改回 LockDistract/section_star +// let config = UIImage.SymbolConfiguration(pointSize: 12, weight: .bold) +// star.image = UIImage(systemName: "sparkle", withConfiguration: config) +// star.tintColor = UIColor(hexStr: "#16B3FF") +// star.contentMode = .scaleAspectFit + let lab = UILabel() + lab.text = text + lab.font = .systemFont(ofSize: 16, weight: .bold) + lab.textColor = UIColor(hexStr: "#1F2A44") + row.addSubview(star) + row.addSubview(lab) + star.layoutChain.left().centerY().width(14).height(14) + lab.layoutChain.leftToRightOfView(star, offset: 6).right().centerY() + row.layoutChain.height(22) + return row + } +} + +extension LockDistractView: UICollectionViewDataSource, UICollectionViewDelegate { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + wallpaperNames.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(for: indexPath) as LockDistractWallpaperCell + cell.configure(imageName: wallpaperNames[indexPath.item], + isSelected: indexPath.item == selectedWallpaperIndex) + return cell + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + selectedWallpaperIndex = indexPath.item + collectionView.reloadData() + } +} + +final class LockDistractWallpaperCell: UICollectionViewCell { + private let frameView: UIView = { + let view = UIView() + view.backgroundColor = UIColor(hexStr: "#F6F6F6") + view.cornerRadius = 14 + return view + }() + + private let imageView: UIImageView = { + let iv = UIImageView() + iv.contentMode = .scaleAspectFill + iv.clipsToBounds = true + iv.cornerRadius = 10 + return iv + }() + + override init(frame: CGRect) { + super.init(frame: frame) + contentView.addSubview(frameView) + frameView.addSubview(imageView) + frameView.layoutChain.edges() + imageView.layoutChain + .centerY() + .centerX() + .width(40) + .height(40) + } + + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + + func configure(imageName: String, isSelected: Bool) { + imageView.image = UIImage(named: imageName) + frameView.backgroundColor = UIColor(hexStr: isSelected ? "#EAF8FF" : "#F6F6F6") + frameView.borderWidth = isSelected ? 1 : 0 + frameView.borderColor = UIColor(hexStr: isSelected ? "#00ADFE" : "") + } +} diff --git a/QuickLocation/Section/Mine/PrivacyPolicy/PrivacyPolicyVC.swift b/QuickLocation/Section/Mine/PrivacyPolicy/PrivacyPolicyVC.swift index 45d074a7..3bf5f6c9 100644 --- a/QuickLocation/Section/Mine/PrivacyPolicy/PrivacyPolicyVC.swift +++ b/QuickLocation/Section/Mine/PrivacyPolicy/PrivacyPolicyVC.swift @@ -11,8 +11,13 @@ import RxCocoa import RxDataSources struct PrivacyPolicyItem { + enum Destination { + case web(String) + case appRestrict + } + let name: String - let url: String + let destination: Destination } class PrivacyPolicyVC: BaseViewController { @@ -25,9 +30,10 @@ class PrivacyPolicyVC: BaseViewController { } private let list: [PrivacyPolicyItem] = [ - PrivacyPolicyItem(name: "用户协议", url: URLManager.shared.userAgreementUrl), - PrivacyPolicyItem(name: "隐私政策", url: URLManager.shared.privacyPolicyUrl), - PrivacyPolicyItem(name: "儿童隐私政策", url: URLManager.shared.kidsPrivacyUrl) + PrivacyPolicyItem(name: "用户协议", destination: .web(URLManager.shared.userAgreementUrl)), + PrivacyPolicyItem(name: "隐私政策", destination: .web(URLManager.shared.privacyPolicyUrl)), + PrivacyPolicyItem(name: "儿童隐私政策", destination: .web(URLManager.shared.kidsPrivacyUrl)), + PrivacyPolicyItem(name: "应用配对库", destination: .appRestrict) ] override func viewDidLoad() { @@ -50,7 +56,12 @@ class PrivacyPolicyVC: BaseViewController { // 点击跳转 rootView.tableView.rx.modelSelected(PrivacyPolicyItem.self) .subscribe(onNext: { item in - AppRouter.push(Route.web, userInfo: ["url": item.url]) + switch item.destination { + case .web(let url): + AppRouter.push(Route.web, userInfo: ["url": url]) + case .appRestrict: + AppRouter.push(Route.appRestrict) + } }) .disposed(by: disposeBag) } diff --git a/ShieldConfigurationExtension/Info.plist b/ShieldConfigurationExtension/Info.plist new file mode 100644 index 00000000..cb5feed2 --- /dev/null +++ b/ShieldConfigurationExtension/Info.plist @@ -0,0 +1,27 @@ + + + + + CFBundleDisplayName + ShieldConfiguration + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + NSExtension + + NSExtensionPointIdentifier + com.apple.ManagedSettingsUI.shield-configuration-service + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).ShieldConfigurationExtension + + + diff --git a/ShieldConfigurationExtension/ShieldConfigurationExtension.entitlements b/ShieldConfigurationExtension/ShieldConfigurationExtension.entitlements new file mode 100644 index 00000000..4a8cc927 --- /dev/null +++ b/ShieldConfigurationExtension/ShieldConfigurationExtension.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.developer.family-controls + + com.apple.security.application-groups + + group.cn.zuomeng.jisuloca + + + diff --git a/ShieldConfigurationExtension/ShieldConfigurationExtension.swift b/ShieldConfigurationExtension/ShieldConfigurationExtension.swift new file mode 100644 index 00000000..5adea059 --- /dev/null +++ b/ShieldConfigurationExtension/ShieldConfigurationExtension.swift @@ -0,0 +1,38 @@ +import ManagedSettings +import ManagedSettingsUI +import UIKit + +final class ShieldConfigurationExtension: ShieldConfigurationDataSource { + override func configuration(shielding application: Application) -> ShieldConfiguration { + makeConfiguration() + } + + override func configuration(shielding application: Application, in category: ActivityCategory) -> ShieldConfiguration { + makeConfiguration() + } + + override func configuration(shielding webDomain: WebDomain) -> ShieldConfiguration { + makeConfiguration() + } + + override func configuration(shielding webDomain: WebDomain, in category: ActivityCategory) -> ShieldConfiguration { + makeConfiguration() + } + + private func makeConfiguration() -> ShieldConfiguration { + let config = AppRestrictSharedStore.shieldConfig + let image = AppRestrictSharedStore.loadShieldImage() + let background = UIColor(red: 0.98, green: 0.98, blue: 0.98, alpha: 1) + let titleColor = UIColor(red: 0.16, green: 0.20, blue: 0.27, alpha: 1) + let bodyColor = UIColor(red: 0.46, green: 0.46, blue: 0.46, alpha: 1) + return ShieldConfiguration( + backgroundBlurStyle: .systemMaterial, + backgroundColor: background, + icon: image, + title: ShieldConfiguration.Label(text: config.title, color: titleColor), + subtitle: ShieldConfiguration.Label(text: config.subtitle, color: bodyColor), + primaryButtonLabel: ShieldConfiguration.Label(text: config.primaryButtonLabel, color: .white), + primaryButtonBackgroundColor: UIColor(red: 0.09, green: 0.70, blue: 1.0, alpha: 1) + ) + } +} diff --git a/scripts/add_app_restrict_targets.rb b/scripts/add_app_restrict_targets.rb new file mode 100644 index 00000000..00f32137 --- /dev/null +++ b/scripts/add_app_restrict_targets.rb @@ -0,0 +1,152 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +require 'xcodeproj' + +ROOT = File.expand_path('..', __dir__) +PROJECT_PATH = File.join(ROOT, 'QuickLocation.xcodeproj') +project = Xcodeproj::Project.open(PROJECT_PATH) + +main_target = project.targets.find { |t| t.name == 'QuickLocation' } +raise 'QuickLocation target not found' unless main_target + +def ensure_group(project, path_components) + group = project.main_group + path_components.each do |name| + next_group = group.children.find { |c| c.respond_to?(:name) && (c.name == name || c.path == name) } + group = next_group || group.new_group(name) + end + group +end + +def add_file(project, target, group, relative_path, root:, resources: false) + abs = File.join(root, relative_path) + raise "Missing file: #{abs}" unless File.exist?(abs) + + ref = group.files.find { |f| f.real_path.to_s == abs || f.path == File.basename(relative_path) } + ref ||= group.new_file(abs) + + if resources + unless target.resources_build_phase.files_references.include?(ref) + target.add_resources([ref]) + end + else + unless target.source_build_phase.files_references.include?(ref) + target.source_build_phase.add_file_reference(ref) + end + end + ref +end + +def configure_extension_target(target, bundle_id, entitlements, info_plist) + target.build_configurations.each do |config| + bs = config.build_settings + bs['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id + bs['PRODUCT_NAME'] = target.name + bs['PRODUCT_MODULE_NAME'] = target.name + bs['CODE_SIGN_ENTITLEMENTS'] = entitlements + bs['INFOPLIST_FILE'] = info_plist + bs['GENERATE_INFOPLIST_FILE'] = 'NO' + bs['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0' + bs['TARGETED_DEVICE_FAMILY'] = '1' + bs['SKIP_INSTALL'] = 'YES' + bs['LD_RUNPATH_SEARCH_PATHS'] = '$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks' + bs['DEVELOPMENT_TEAM'] = 'LRDLWZ2Y83' + bs['SWIFT_DEFAULT_ACTOR_ISOLATION'] = 'nonisolated' + bs['SWIFT_VERSION'] = '5.0' + bs['CODE_SIGN_STYLE'] = 'Automatic' + bs['CURRENT_PROJECT_VERSION'] = '1' + bs['MARKETING_VERSION'] = '1.0' + end +end + +def find_or_create_extension(project, name) + existing = project.targets.find { |t| t.name == name } + return existing if existing + + project.new_target(:app_extension, name, :ios, '15.0') +end + +def link_system_framework(target, name) + frameworks = project = target.project + frameworks_group = project.frameworks_group + path = "System/Library/Frameworks/#{name}.framework" + ref = frameworks_group.files.find { |f| f.path == "#{name}.framework" || f.name == "#{name}.framework" } + ref ||= frameworks_group.new_file(path) + ref.name = "#{name}.framework" + ref.source_tree = 'SDKROOT' + unless target.frameworks_build_phase.files_references.include?(ref) + target.frameworks_build_phase.add_file_reference(ref) + end +end + +# Shared +shared_group = ensure_group(project, ['AppRestrictShared']) +add_file(project, main_target, shared_group, 'AppRestrictShared/AppRestrictShared.swift', root: ROOT) + +# Main app +mgr_group = ensure_group(project, ['QuickLocation', 'Manager', 'AppRestrict']) +add_file(project, main_target, mgr_group, 'QuickLocation/Manager/AppRestrict/AppRestrictManager.swift', root: ROOT) + +section_group = ensure_group(project, ['QuickLocation', 'Section', 'AppRestrict']) +%w[ + AppCatalogStore.swift + AppRestrictCell.swift + AppRestrictVC.swift + AppRestrictView.swift + AppRestrictShieldSettingsVC.swift + FamilyActivityPickerHost.swift + SelectActivityVC.swift +].each do |name| + add_file(project, main_target, section_group, "QuickLocation/Section/AppRestrict/#{name}", root: ROOT) +end +add_file(project, main_target, section_group, 'QuickLocation/Section/AppRestrict/app_catalog.json', root: ROOT, resources: true) + +%w[FamilyControls ManagedSettings DeviceActivity ManagedSettingsUI].each do |fw| + link_system_framework(main_target, fw) +end + +# Monitor extension +monitor = find_or_create_extension(project, 'DeviceActivityMonitorExtension') +monitor_group = ensure_group(project, ['DeviceActivityMonitorExtension']) +add_file(project, monitor, monitor_group, 'DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift', root: ROOT) +add_file(project, monitor, shared_group, 'AppRestrictShared/AppRestrictShared.swift', root: ROOT) +configure_extension_target( + monitor, + 'cn.zuomeng.jisuloca.DeviceActivityMonitor', + 'DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements', + 'DeviceActivityMonitorExtension/Info.plist' +) +%w[DeviceActivity FamilyControls ManagedSettings].each { |fw| link_system_framework(monitor, fw) } + +# Shield extension +shield = find_or_create_extension(project, 'ShieldConfigurationExtension') +shield_group = ensure_group(project, ['ShieldConfigurationExtension']) +add_file(project, shield, shield_group, 'ShieldConfigurationExtension/ShieldConfigurationExtension.swift', root: ROOT) +add_file(project, shield, shared_group, 'AppRestrictShared/AppRestrictShared.swift', root: ROOT) +configure_extension_target( + shield, + 'cn.zuomeng.jisuloca.ShieldConfiguration', + 'ShieldConfigurationExtension/ShieldConfigurationExtension.entitlements', + 'ShieldConfigurationExtension/Info.plist' +) +%w[ManagedSettings ManagedSettingsUI FamilyControls UIKit].each { |fw| link_system_framework(shield, fw) } + +# Embed +embed_phase = main_target.copy_files_build_phases.find { |p| p.dst_subfolder_spec == '13' || p.name == 'Embed Foundation Extensions' } +unless embed_phase + embed_phase = main_target.new_copy_files_build_phase('Embed Foundation Extensions') + embed_phase.symbol_dst_subfolder_spec = :plug_ins +end + +[monitor, shield].each do |ext| + main_target.add_dependency(ext) unless main_target.dependencies.any? { |d| d.target == ext } + product = ext.product_reference + unless embed_phase.files.any? { |f| f.file_ref == product } + bf = embed_phase.add_file_reference(product) + bf.settings = { 'ATTRIBUTES' => ['RemoveHeadersOnCopy'] } + end +end + +project.save +puts 'OK: App Restrict targets wired into QuickLocation.xcodeproj' diff --git a/scripts/add_lock_distract_files.rb b/scripts/add_lock_distract_files.rb new file mode 100644 index 00000000..c2eea6a0 --- /dev/null +++ b/scripts/add_lock_distract_files.rb @@ -0,0 +1,26 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +require 'xcodeproj' + +ROOT = File.expand_path('..', __dir__) +PROJECT_PATH = File.join(ROOT, 'QuickLocation.xcodeproj') +project = Xcodeproj::Project.open(PROJECT_PATH) +main_target = project.targets.find { |t| t.name == 'QuickLocation' } +raise 'QuickLocation target not found' unless main_target + +section_group = project.main_group.find_subpath('QuickLocation/Section', true) +lock_group = section_group['LockDistract'] || section_group.new_group('LockDistract', 'LockDistract') + +%w[LockDistractView.swift LockDistractVC.swift].each do |name| + abs = File.join(ROOT, 'QuickLocation/Section/LockDistract', name) + raise "Missing #{abs}" unless File.exist?(abs) + ref = lock_group.files.find { |f| f.path == name || f.real_path.to_s == abs } + ref ||= lock_group.new_file(abs) + unless main_target.source_build_phase.files_references.include?(ref) + main_target.source_build_phase.add_file_reference(ref) + end +end + +project.save +puts 'Added LockDistract sources to QuickLocation target'