From 01088b112bfb0b0c4524075b947632657687425b Mon Sep 17 00:00:00 2001 From: Artemon4ik8091 Date: Tue, 14 Jul 2026 12:06:58 +0300 Subject: [PATCH] first commit --- music player.xcodeproj/project.pbxproj | 1037 ++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 61997 bytes .../xcschemes/xcschememanagement.plist | 19 + music player/.DS_Store | Bin 0 -> 6148 bytes .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/AppIcon 1.jpg | Bin 0 -> 296756 bytes .../AppIcon.appiconset/Contents.json | 14 + music player/Assets.xcassets/Contents.json | 6 + music player/ContentView.swift | 2969 +++++++++++++++++ music player/PhoneConnectivityManager.swift | 117 + music player/Preview Content/.DS_Store | Bin 0 -> 6148 bytes .../Preview Assets.xcassets/Contents.json | 6 + music player/music player.entitlements | 10 + music player/music_playerApp.swift | 17 + music playerTests/music_playerTests.swift | 36 + music playerUITests/music_playerUITests.swift | 41 + .../music_playerUITestsLaunchTests.swift | 32 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../Assets.xcassets/Contents.json | 6 + music playerWatch Watch App/ContentView.swift | 62 + .../NowPlayingView.swift | 41 + .../Preview Assets.xcassets/Contents.json | 6 + .../WatchConnectivityManager.swift | 73 + .../music_playerWatchApp.swift | 17 + .../music_playerWatch_Watch_AppTests.swift | 36 + .../music_playerWatch_Watch_AppUITests.swift | 41 + ...yerWatch_Watch_AppUITestsLaunchTests.swift | 32 + music-player-Info.plist | 10 + 31 files changed, 4678 insertions(+) create mode 100644 music player.xcodeproj/project.pbxproj create mode 100644 music player.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 music player.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 music player.xcodeproj/project.xcworkspace/xcuserdata/aswer.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 music player.xcodeproj/xcuserdata/aswer.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 music player/.DS_Store create mode 100644 music player/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 music player/Assets.xcassets/AppIcon.appiconset/AppIcon 1.jpg create mode 100644 music player/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 music player/Assets.xcassets/Contents.json create mode 100644 music player/ContentView.swift create mode 100644 music player/PhoneConnectivityManager.swift create mode 100644 music player/Preview Content/.DS_Store create mode 100644 music player/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 music player/music player.entitlements create mode 100644 music player/music_playerApp.swift create mode 100644 music playerTests/music_playerTests.swift create mode 100644 music playerUITests/music_playerUITests.swift create mode 100644 music playerUITests/music_playerUITestsLaunchTests.swift create mode 100644 music playerWatch Watch App/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 music playerWatch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 music playerWatch Watch App/Assets.xcassets/Contents.json create mode 100644 music playerWatch Watch App/ContentView.swift create mode 100644 music playerWatch Watch App/NowPlayingView.swift create mode 100644 music playerWatch Watch App/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 music playerWatch Watch App/WatchConnectivityManager.swift create mode 100644 music playerWatch Watch App/music_playerWatchApp.swift create mode 100644 music playerWatch Watch AppTests/music_playerWatch_Watch_AppTests.swift create mode 100644 music playerWatch Watch AppUITests/music_playerWatch_Watch_AppUITests.swift create mode 100644 music playerWatch Watch AppUITests/music_playerWatch_Watch_AppUITestsLaunchTests.swift create mode 100644 music-player-Info.plist diff --git a/music player.xcodeproj/project.pbxproj b/music player.xcodeproj/project.pbxproj new file mode 100644 index 0000000..40f5045 --- /dev/null +++ b/music player.xcodeproj/project.pbxproj @@ -0,0 +1,1037 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 09192EFC2FF44C2700A9F43F /* music_playerWatchApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09192EFB2FF44C2700A9F43F /* music_playerWatchApp.swift */; }; + 09192EFE2FF44C2700A9F43F /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09192EFD2FF44C2700A9F43F /* ContentView.swift */; }; + 09192F002FF44C2900A9F43F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 09192EFF2FF44C2900A9F43F /* Assets.xcassets */; }; + 09192F032FF44C2900A9F43F /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 09192F022FF44C2900A9F43F /* Preview Assets.xcassets */; }; + 09192F0D2FF44C2900A9F43F /* music_playerWatch_Watch_AppTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09192F0C2FF44C2900A9F43F /* music_playerWatch_Watch_AppTests.swift */; }; + 09192F172FF44C2900A9F43F /* music_playerWatch_Watch_AppUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09192F162FF44C2900A9F43F /* music_playerWatch_Watch_AppUITests.swift */; }; + 09192F192FF44C2900A9F43F /* music_playerWatch_Watch_AppUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09192F182FF44C2900A9F43F /* music_playerWatch_Watch_AppUITestsLaunchTests.swift */; }; + 09192F1C2FF44C2900A9F43F /* music playerWatch Watch App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 09192EF92FF44C2700A9F43F /* music playerWatch Watch App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 09192F292FF44E6500A9F43F /* WatchConnectivityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09192F272FF44E6500A9F43F /* WatchConnectivityManager.swift */; }; + 09192F2A2FF44E6500A9F43F /* NowPlayingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09192F282FF44E6500A9F43F /* NowPlayingView.swift */; }; + 09192F2C2FF44EB100A9F43F /* PhoneConnectivityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09192F2B2FF44EB100A9F43F /* PhoneConnectivityManager.swift */; }; + 09E3FD242FEB19100073862C /* music_playerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E3FD232FEB19100073862C /* music_playerApp.swift */; }; + 09E3FD262FEB19100073862C /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E3FD252FEB19100073862C /* ContentView.swift */; }; + 09E3FD282FEB19120073862C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 09E3FD272FEB19120073862C /* Assets.xcassets */; }; + 09E3FD2B2FEB19120073862C /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 09E3FD2A2FEB19120073862C /* Preview Assets.xcassets */; }; + 09E3FD352FEB19120073862C /* music_playerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E3FD342FEB19120073862C /* music_playerTests.swift */; }; + 09E3FD3F2FEB19120073862C /* music_playerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E3FD3E2FEB19120073862C /* music_playerUITests.swift */; }; + 09E3FD412FEB19120073862C /* music_playerUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E3FD402FEB19120073862C /* music_playerUITestsLaunchTests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 09192F092FF44C2900A9F43F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 09E3FD182FEB19100073862C /* Project object */; + proxyType = 1; + remoteGlobalIDString = 09192EF82FF44C2700A9F43F; + remoteInfo = "music playerWatch Watch App"; + }; + 09192F132FF44C2900A9F43F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 09E3FD182FEB19100073862C /* Project object */; + proxyType = 1; + remoteGlobalIDString = 09192EF82FF44C2700A9F43F; + remoteInfo = "music playerWatch Watch App"; + }; + 09192F1A2FF44C2900A9F43F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 09E3FD182FEB19100073862C /* Project object */; + proxyType = 1; + remoteGlobalIDString = 09192EF82FF44C2700A9F43F; + remoteInfo = "music playerWatch Watch App"; + }; + 09E3FD312FEB19120073862C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 09E3FD182FEB19100073862C /* Project object */; + proxyType = 1; + remoteGlobalIDString = 09E3FD1F2FEB19100073862C; + remoteInfo = "music player"; + }; + 09E3FD3B2FEB19120073862C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 09E3FD182FEB19100073862C /* Project object */; + proxyType = 1; + remoteGlobalIDString = 09E3FD1F2FEB19100073862C; + remoteInfo = "music player"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 09192F1D2FF44C2900A9F43F /* Embed Watch Content */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; + dstSubfolderSpec = 16; + files = ( + 09192F1C2FF44C2900A9F43F /* music playerWatch Watch App.app in Embed Watch Content */, + ); + name = "Embed Watch Content"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 090E8B7E2FEBDC5F00B552A1 /* music-player-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "music-player-Info.plist"; sourceTree = SOURCE_ROOT; }; + 09192EF92FF44C2700A9F43F /* music playerWatch Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "music playerWatch Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 09192EFB2FF44C2700A9F43F /* music_playerWatchApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = music_playerWatchApp.swift; sourceTree = ""; }; + 09192EFD2FF44C2700A9F43F /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 09192EFF2FF44C2900A9F43F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 09192F022FF44C2900A9F43F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 09192F082FF44C2900A9F43F /* music playerWatch Watch AppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "music playerWatch Watch AppTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 09192F0C2FF44C2900A9F43F /* music_playerWatch_Watch_AppTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = music_playerWatch_Watch_AppTests.swift; sourceTree = ""; }; + 09192F122FF44C2900A9F43F /* music playerWatch Watch AppUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "music playerWatch Watch AppUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 09192F162FF44C2900A9F43F /* music_playerWatch_Watch_AppUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = music_playerWatch_Watch_AppUITests.swift; sourceTree = ""; }; + 09192F182FF44C2900A9F43F /* music_playerWatch_Watch_AppUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = music_playerWatch_Watch_AppUITestsLaunchTests.swift; sourceTree = ""; }; + 09192F272FF44E6500A9F43F /* WatchConnectivityManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchConnectivityManager.swift; sourceTree = ""; }; + 09192F282FF44E6500A9F43F /* NowPlayingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NowPlayingView.swift; sourceTree = ""; }; + 09192F2B2FF44EB100A9F43F /* PhoneConnectivityManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhoneConnectivityManager.swift; sourceTree = ""; }; + 09D7E77E2FEFD0700070E7D6 /* music player.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "music player.entitlements"; sourceTree = ""; }; + 09E3FD202FEB19100073862C /* music player.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "music player.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 09E3FD232FEB19100073862C /* music_playerApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = music_playerApp.swift; sourceTree = ""; }; + 09E3FD252FEB19100073862C /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 09E3FD272FEB19120073862C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 09E3FD2A2FEB19120073862C /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 09E3FD302FEB19120073862C /* music playerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "music playerTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 09E3FD342FEB19120073862C /* music_playerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = music_playerTests.swift; sourceTree = ""; }; + 09E3FD3A2FEB19120073862C /* music playerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "music playerUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 09E3FD3E2FEB19120073862C /* music_playerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = music_playerUITests.swift; sourceTree = ""; }; + 09E3FD402FEB19120073862C /* music_playerUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = music_playerUITestsLaunchTests.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 09192EF62FF44C2700A9F43F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09192F052FF44C2900A9F43F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09192F0F2FF44C2900A9F43F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09E3FD1D2FEB19100073862C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09E3FD2D2FEB19120073862C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09E3FD372FEB19120073862C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 09192EFA2FF44C2700A9F43F /* music playerWatch Watch App */ = { + isa = PBXGroup; + children = ( + 09192EFB2FF44C2700A9F43F /* music_playerWatchApp.swift */, + 09192EFD2FF44C2700A9F43F /* ContentView.swift */, + 09192F282FF44E6500A9F43F /* NowPlayingView.swift */, + 09192F272FF44E6500A9F43F /* WatchConnectivityManager.swift */, + 09192EFF2FF44C2900A9F43F /* Assets.xcassets */, + 09192F012FF44C2900A9F43F /* Preview Content */, + ); + path = "music playerWatch Watch App"; + sourceTree = ""; + }; + 09192F012FF44C2900A9F43F /* Preview Content */ = { + isa = PBXGroup; + children = ( + 09192F022FF44C2900A9F43F /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 09192F0B2FF44C2900A9F43F /* music playerWatch Watch AppTests */ = { + isa = PBXGroup; + children = ( + 09192F0C2FF44C2900A9F43F /* music_playerWatch_Watch_AppTests.swift */, + ); + path = "music playerWatch Watch AppTests"; + sourceTree = ""; + }; + 09192F152FF44C2900A9F43F /* music playerWatch Watch AppUITests */ = { + isa = PBXGroup; + children = ( + 09192F162FF44C2900A9F43F /* music_playerWatch_Watch_AppUITests.swift */, + 09192F182FF44C2900A9F43F /* music_playerWatch_Watch_AppUITestsLaunchTests.swift */, + ); + path = "music playerWatch Watch AppUITests"; + sourceTree = ""; + }; + 09E3FD172FEB19100073862C = { + isa = PBXGroup; + children = ( + 09E3FD222FEB19100073862C /* music player */, + 09E3FD332FEB19120073862C /* music playerTests */, + 09E3FD3D2FEB19120073862C /* music playerUITests */, + 09192EFA2FF44C2700A9F43F /* music playerWatch Watch App */, + 09192F0B2FF44C2900A9F43F /* music playerWatch Watch AppTests */, + 09192F152FF44C2900A9F43F /* music playerWatch Watch AppUITests */, + 09E3FD212FEB19100073862C /* Products */, + ); + sourceTree = ""; + }; + 09E3FD212FEB19100073862C /* Products */ = { + isa = PBXGroup; + children = ( + 09E3FD202FEB19100073862C /* music player.app */, + 09E3FD302FEB19120073862C /* music playerTests.xctest */, + 09E3FD3A2FEB19120073862C /* music playerUITests.xctest */, + 09192EF92FF44C2700A9F43F /* music playerWatch Watch App.app */, + 09192F082FF44C2900A9F43F /* music playerWatch Watch AppTests.xctest */, + 09192F122FF44C2900A9F43F /* music playerWatch Watch AppUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 09E3FD222FEB19100073862C /* music player */ = { + isa = PBXGroup; + children = ( + 09D7E77E2FEFD0700070E7D6 /* music player.entitlements */, + 090E8B7E2FEBDC5F00B552A1 /* music-player-Info.plist */, + 09E3FD232FEB19100073862C /* music_playerApp.swift */, + 09E3FD252FEB19100073862C /* ContentView.swift */, + 09192F2B2FF44EB100A9F43F /* PhoneConnectivityManager.swift */, + 09E3FD272FEB19120073862C /* Assets.xcassets */, + 09E3FD292FEB19120073862C /* Preview Content */, + ); + path = "music player"; + sourceTree = ""; + }; + 09E3FD292FEB19120073862C /* Preview Content */ = { + isa = PBXGroup; + children = ( + 09E3FD2A2FEB19120073862C /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 09E3FD332FEB19120073862C /* music playerTests */ = { + isa = PBXGroup; + children = ( + 09E3FD342FEB19120073862C /* music_playerTests.swift */, + ); + path = "music playerTests"; + sourceTree = ""; + }; + 09E3FD3D2FEB19120073862C /* music playerUITests */ = { + isa = PBXGroup; + children = ( + 09E3FD3E2FEB19120073862C /* music_playerUITests.swift */, + 09E3FD402FEB19120073862C /* music_playerUITestsLaunchTests.swift */, + ); + path = "music playerUITests"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 09192EF82FF44C2700A9F43F /* music playerWatch Watch App */ = { + isa = PBXNativeTarget; + buildConfigurationList = 09192F242FF44C2900A9F43F /* Build configuration list for PBXNativeTarget "music playerWatch Watch App" */; + buildPhases = ( + 09192EF52FF44C2700A9F43F /* Sources */, + 09192EF62FF44C2700A9F43F /* Frameworks */, + 09192EF72FF44C2700A9F43F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "music playerWatch Watch App"; + productName = "music playerWatch Watch App"; + productReference = 09192EF92FF44C2700A9F43F /* music playerWatch Watch App.app */; + productType = "com.apple.product-type.application"; + }; + 09192F072FF44C2900A9F43F /* music playerWatch Watch AppTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 09192F252FF44C2900A9F43F /* Build configuration list for PBXNativeTarget "music playerWatch Watch AppTests" */; + buildPhases = ( + 09192F042FF44C2900A9F43F /* Sources */, + 09192F052FF44C2900A9F43F /* Frameworks */, + 09192F062FF44C2900A9F43F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 09192F0A2FF44C2900A9F43F /* PBXTargetDependency */, + ); + name = "music playerWatch Watch AppTests"; + productName = "music playerWatch Watch AppTests"; + productReference = 09192F082FF44C2900A9F43F /* music playerWatch Watch AppTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 09192F112FF44C2900A9F43F /* music playerWatch Watch AppUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 09192F262FF44C2900A9F43F /* Build configuration list for PBXNativeTarget "music playerWatch Watch AppUITests" */; + buildPhases = ( + 09192F0E2FF44C2900A9F43F /* Sources */, + 09192F0F2FF44C2900A9F43F /* Frameworks */, + 09192F102FF44C2900A9F43F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 09192F142FF44C2900A9F43F /* PBXTargetDependency */, + ); + name = "music playerWatch Watch AppUITests"; + productName = "music playerWatch Watch AppUITests"; + productReference = 09192F122FF44C2900A9F43F /* music playerWatch Watch AppUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; + 09E3FD1F2FEB19100073862C /* music player */ = { + isa = PBXNativeTarget; + buildConfigurationList = 09E3FD442FEB19120073862C /* Build configuration list for PBXNativeTarget "music player" */; + buildPhases = ( + 09E3FD1C2FEB19100073862C /* Sources */, + 09E3FD1D2FEB19100073862C /* Frameworks */, + 09E3FD1E2FEB19100073862C /* Resources */, + 09192F1D2FF44C2900A9F43F /* Embed Watch Content */, + ); + buildRules = ( + ); + dependencies = ( + 09192F1B2FF44C2900A9F43F /* PBXTargetDependency */, + ); + name = "music player"; + productName = "music player"; + productReference = 09E3FD202FEB19100073862C /* music player.app */; + productType = "com.apple.product-type.application"; + }; + 09E3FD2F2FEB19120073862C /* music playerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 09E3FD472FEB19120073862C /* Build configuration list for PBXNativeTarget "music playerTests" */; + buildPhases = ( + 09E3FD2C2FEB19120073862C /* Sources */, + 09E3FD2D2FEB19120073862C /* Frameworks */, + 09E3FD2E2FEB19120073862C /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 09E3FD322FEB19120073862C /* PBXTargetDependency */, + ); + name = "music playerTests"; + productName = "music playerTests"; + productReference = 09E3FD302FEB19120073862C /* music playerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 09E3FD392FEB19120073862C /* music playerUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 09E3FD4A2FEB19120073862C /* Build configuration list for PBXNativeTarget "music playerUITests" */; + buildPhases = ( + 09E3FD362FEB19120073862C /* Sources */, + 09E3FD372FEB19120073862C /* Frameworks */, + 09E3FD382FEB19120073862C /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 09E3FD3C2FEB19120073862C /* PBXTargetDependency */, + ); + name = "music playerUITests"; + productName = "music playerUITests"; + productReference = 09E3FD3A2FEB19120073862C /* music playerUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 09E3FD182FEB19100073862C /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1540; + LastUpgradeCheck = 1540; + TargetAttributes = { + 09192EF82FF44C2700A9F43F = { + CreatedOnToolsVersion = 15.4; + }; + 09192F072FF44C2900A9F43F = { + CreatedOnToolsVersion = 15.4; + TestTargetID = 09192EF82FF44C2700A9F43F; + }; + 09192F112FF44C2900A9F43F = { + CreatedOnToolsVersion = 15.4; + TestTargetID = 09192EF82FF44C2700A9F43F; + }; + 09E3FD1F2FEB19100073862C = { + CreatedOnToolsVersion = 15.4; + }; + 09E3FD2F2FEB19120073862C = { + CreatedOnToolsVersion = 15.4; + TestTargetID = 09E3FD1F2FEB19100073862C; + }; + 09E3FD392FEB19120073862C = { + CreatedOnToolsVersion = 15.4; + TestTargetID = 09E3FD1F2FEB19100073862C; + }; + }; + }; + buildConfigurationList = 09E3FD1B2FEB19100073862C /* Build configuration list for PBXProject "music player" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 09E3FD172FEB19100073862C; + productRefGroup = 09E3FD212FEB19100073862C /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 09E3FD1F2FEB19100073862C /* music player */, + 09E3FD2F2FEB19120073862C /* music playerTests */, + 09E3FD392FEB19120073862C /* music playerUITests */, + 09192EF82FF44C2700A9F43F /* music playerWatch Watch App */, + 09192F072FF44C2900A9F43F /* music playerWatch Watch AppTests */, + 09192F112FF44C2900A9F43F /* music playerWatch Watch AppUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 09192EF72FF44C2700A9F43F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 09192F032FF44C2900A9F43F /* Preview Assets.xcassets in Resources */, + 09192F002FF44C2900A9F43F /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09192F062FF44C2900A9F43F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09192F102FF44C2900A9F43F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09E3FD1E2FEB19100073862C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 09E3FD2B2FEB19120073862C /* Preview Assets.xcassets in Resources */, + 09E3FD282FEB19120073862C /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09E3FD2E2FEB19120073862C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09E3FD382FEB19120073862C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 09192EF52FF44C2700A9F43F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 09192EFE2FF44C2700A9F43F /* ContentView.swift in Sources */, + 09192F292FF44E6500A9F43F /* WatchConnectivityManager.swift in Sources */, + 09192F2A2FF44E6500A9F43F /* NowPlayingView.swift in Sources */, + 09192EFC2FF44C2700A9F43F /* music_playerWatchApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09192F042FF44C2900A9F43F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 09192F0D2FF44C2900A9F43F /* music_playerWatch_Watch_AppTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09192F0E2FF44C2900A9F43F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 09192F172FF44C2900A9F43F /* music_playerWatch_Watch_AppUITests.swift in Sources */, + 09192F192FF44C2900A9F43F /* music_playerWatch_Watch_AppUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09E3FD1C2FEB19100073862C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 09192F2C2FF44EB100A9F43F /* PhoneConnectivityManager.swift in Sources */, + 09E3FD262FEB19100073862C /* ContentView.swift in Sources */, + 09E3FD242FEB19100073862C /* music_playerApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09E3FD2C2FEB19120073862C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 09E3FD352FEB19120073862C /* music_playerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 09E3FD362FEB19120073862C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 09E3FD3F2FEB19120073862C /* music_playerUITests.swift in Sources */, + 09E3FD412FEB19120073862C /* music_playerUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 09192F0A2FF44C2900A9F43F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 09192EF82FF44C2700A9F43F /* music playerWatch Watch App */; + targetProxy = 09192F092FF44C2900A9F43F /* PBXContainerItemProxy */; + }; + 09192F142FF44C2900A9F43F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 09192EF82FF44C2700A9F43F /* music playerWatch Watch App */; + targetProxy = 09192F132FF44C2900A9F43F /* PBXContainerItemProxy */; + }; + 09192F1B2FF44C2900A9F43F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 09192EF82FF44C2700A9F43F /* music playerWatch Watch App */; + targetProxy = 09192F1A2FF44C2900A9F43F /* PBXContainerItemProxy */; + }; + 09E3FD322FEB19120073862C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 09E3FD1F2FEB19100073862C /* music player */; + targetProxy = 09E3FD312FEB19120073862C /* PBXContainerItemProxy */; + }; + 09E3FD3C2FEB19120073862C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 09E3FD1F2FEB19100073862C /* music player */; + targetProxy = 09E3FD3B2FEB19120073862C /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 09192F1E2FF44C2900A9F43F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 2; + DEVELOPMENT_ASSET_PATHS = "\"music playerWatch Watch App/Preview Content\""; + DEVELOPMENT_TEAM = K7BNMVXY4T; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleDisplayName = "music playerWatch"; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "aswer.music-player"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 4.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-player.watchkitapp"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 8.0; + }; + name = Debug; + }; + 09192F1F2FF44C2900A9F43F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 2; + DEVELOPMENT_ASSET_PATHS = "\"music playerWatch Watch App/Preview Content\""; + DEVELOPMENT_TEAM = K7BNMVXY4T; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleDisplayName = "music playerWatch"; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "aswer.music-player"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 4.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-player.watchkitapp"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 8.0; + }; + name = Release; + }; + 09192F202FF44C2900A9F43F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = K7BNMVXY4T; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-playerWatch-Watch-AppTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/music playerWatch Watch App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/music playerWatch Watch App"; + WATCHOS_DEPLOYMENT_TARGET = 10.5; + }; + name = Debug; + }; + 09192F212FF44C2900A9F43F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = K7BNMVXY4T; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-playerWatch-Watch-AppTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/music playerWatch Watch App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/music playerWatch Watch App"; + WATCHOS_DEPLOYMENT_TARGET = 10.5; + }; + name = Release; + }; + 09192F222FF44C2900A9F43F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = K7BNMVXY4T; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-playerWatch-Watch-AppUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + TEST_TARGET_NAME = "music playerWatch Watch App"; + WATCHOS_DEPLOYMENT_TARGET = 10.5; + }; + name = Debug; + }; + 09192F232FF44C2900A9F43F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = K7BNMVXY4T; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-playerWatch-Watch-AppUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + TEST_TARGET_NAME = "music playerWatch Watch App"; + WATCHOS_DEPLOYMENT_TARGET = 10.5; + }; + name = Release; + }; + 09E3FD422FEB19120073862C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 09E3FD432FEB19120073862C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 09E3FD452FEB19120073862C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "music player/music player.entitlements"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 2; + DEVELOPMENT_ASSET_PATHS = "\"music player/Preview Content\""; + DEVELOPMENT_TEAM = K7BNMVXY4T; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "music-player-Info.plist"; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 4.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-player"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 09E3FD462FEB19120073862C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "music player/music player.entitlements"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 2; + DEVELOPMENT_ASSET_PATHS = "\"music player/Preview Content\""; + DEVELOPMENT_TEAM = K7BNMVXY4T; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "music-player-Info.plist"; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 4.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-player"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 09E3FD482FEB19120073862C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = K7BNMVXY4T; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-playerTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/music player.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/music player"; + }; + name = Debug; + }; + 09E3FD492FEB19120073862C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = K7BNMVXY4T; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-playerTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/music player.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/music player"; + }; + name = Release; + }; + 09E3FD4B2FEB19120073862C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = K7BNMVXY4T; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-playerUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = "music player"; + }; + name = Debug; + }; + 09E3FD4C2FEB19120073862C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = K7BNMVXY4T; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "aswer.music-playerUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = "music player"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 09192F242FF44C2900A9F43F /* Build configuration list for PBXNativeTarget "music playerWatch Watch App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 09192F1E2FF44C2900A9F43F /* Debug */, + 09192F1F2FF44C2900A9F43F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 09192F252FF44C2900A9F43F /* Build configuration list for PBXNativeTarget "music playerWatch Watch AppTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 09192F202FF44C2900A9F43F /* Debug */, + 09192F212FF44C2900A9F43F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 09192F262FF44C2900A9F43F /* Build configuration list for PBXNativeTarget "music playerWatch Watch AppUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 09192F222FF44C2900A9F43F /* Debug */, + 09192F232FF44C2900A9F43F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 09E3FD1B2FEB19100073862C /* Build configuration list for PBXProject "music player" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 09E3FD422FEB19120073862C /* Debug */, + 09E3FD432FEB19120073862C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 09E3FD442FEB19120073862C /* Build configuration list for PBXNativeTarget "music player" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 09E3FD452FEB19120073862C /* Debug */, + 09E3FD462FEB19120073862C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 09E3FD472FEB19120073862C /* Build configuration list for PBXNativeTarget "music playerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 09E3FD482FEB19120073862C /* Debug */, + 09E3FD492FEB19120073862C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 09E3FD4A2FEB19120073862C /* Build configuration list for PBXNativeTarget "music playerUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 09E3FD4B2FEB19120073862C /* Debug */, + 09E3FD4C2FEB19120073862C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 09E3FD182FEB19100073862C /* Project object */; +} diff --git a/music player.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/music player.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/music player.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/music player.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/music player.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/music player.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/music player.xcodeproj/project.xcworkspace/xcuserdata/aswer.xcuserdatad/UserInterfaceState.xcuserstate b/music player.xcodeproj/project.xcworkspace/xcuserdata/aswer.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..8b949cbca89e7bab48c196feefacbb6b1147290a GIT binary patch literal 61997 zcmeFa2YeJ&_dh)M-kI6yyPoc#g4hu3s3buI zM6rRO*n5|vh`kr=T@>U!cV;IY+0j0kce z328`2VW<^qhuWjgs0#{5Jy0?lf=)+6(J(X|oqdr{keG6OY8Ba26hmC*X-V9~a<4?8ilTHlBlv@!7Z% z2XGKq;rVzmUXIVhEAaXF0(=?19N&sJ;mvppz7221x8pnTHhd?(3vb7}@q_pw{1ko~ zKZ9Svd+>hzDt;Hghu_B^;7{-&{006J|A>DgIx&cwct{v&MOu?Kq%CPj+LO-YG%|n; zB!fsCi6;qU1W6&OB#n$DqsbVOOY%r5DI?{if}Bk%Nq_`N6`4;KkR@a}IghL&myk=z zRpe@N4XGwIq?T+To5)sjFWF9BBrlPd$tz?J*-Q43{p3~h8aY7TBp;9u$rt2H@)h}o z{7Md!-^d?4<`rJ$HNFksmXF{g`N4b?AI-<`v3wjK&nNJS{ONoue(@ zcOhKpA@mmd3j>50AyybIj1k5PHI7^r#6bo~ON+BQwg>!{v zf+b;q5Vi?-3U>*23-<{33Oj{|g-3*EglC24g#E&+!fV0- z;Z5OP;Zxx=;d9|T;d@aLRZ$al(GcCDM+_5NiLJ#pVh6Fi*jMZ)_7`KtI5A#K5Qm7v z#Y}OeI7-YCCx{cpx#B#rL@X7{#B#AhJX@?317c8IC@vE(6fY82imSyd#WmuM;!Wbs z;(Bp|xJkTIyi0smd`^5`d_jCsd`Wy+d_~+N?iKfm2gG;8PsC5f&%|%V@5JxLBjQo< z5Am3bxLhu`%j4?j>hBuh8t5A2if~1`2D_qM(XJR*f@_#7!_icg=9k zbj@<*yNX<8u5#Cfu8UkNT^GAnxh`>C>blHzx$6qoYS&e+b*>GrTU;Amceu8>?sVPn zdcd{Y^`Prf*ORUnT`##laeeCg%=NkJkn0QAm#(i|U%S3>ee3$s^}Fkc#7lxCN**ap zY9+On+Do0Ko>DKVx70`KD-D*Sq$FvmG)x*PjgqpYGo{hecxj@PCry5YEx1{%^PozWA7t#;XkJ3-l@6r)jlXcmU-LgjxlUvE{1M(yCQ}T22^YXj$d-D78 z2l9vVNAkz=C-SHA7xI_#xAJ%L_wo<&FY;0O4+Sek5fo8T6ps?7v{KqBU6gQTfHF`S zq(mt3N`jK8oURO4Qj{#^Ol7n(Udd4=DGQZF%3@`Sa*nc8IagVxm2+@;*Byr8_OyrjIWyrS$;_A2|7{mQG# zYsvxTb>*P)hVrKJmh!gpp7N#gmGZUnjq!)HBu5s!z>V3)Di@uNJAZ)j4XhI#*qxp08e@ zUZ`HAu2e5pSE-k%m#UYkm#a6Z>(m?7o79`t_3B3TR`oV@t9qCEu=ZI8BBdsTZ)`#}3p`$+p(`$RjWeW87)eXsqj{h}S!{?H{|))igVHNB1AQSYjE z(@)cT>Vx$tJz9^^WA!+Fh<>_$hCV`1(MRf|^wIhleWISDPuFMYGxY`fLVc0GSYM)_ zqc7FZ)tBj}PW9#b`T7O=h5AMMCHgx3M*SxJW_`V0t=H(a`tAB1`ZoPeeV6{M{;K|( z{+9lM{-OS<{)PUH{;mF_{*!)KKdS#>5W{6ihHUgOPBVHMy^P*QAEU3)&**OqFa{cf zjRa%3afUI%7-eJ`IYzFLXG}7t8MBNcW41BJC^4#xbByK21;&NOMaCt@rN(OGO5)pjdzXrjL(g4 zjh~I*jNgr8ZqCiS1-I;0+`8Lvw{o|3w{f?1N4O*1gWXZ?Xm^Y|)*a`LcPF?L-KV=# z-DkQ-yT`b5-Fa@W`z*K5o$oGk&vjS21MZ-Ese6U{V)te4%iU|-*SN2BuXEq)-tOMv zzR$hWy~};S`vLcE_k-?-+>g1Rb?3+-oiThLcXYSA4U%9_?A9nxd{@s1d zLp++NwWp(}tEY#jx2KP1fG5?H=1KQtcrraBJ)=BXo-;k8J!3rCp2;4s=PZxUQ|y`R z33{qL^F0eZOFYXw7kV!8T;jRZv(|IH=O#~$XQSs<&uyOjJUczRJokGZ@I38##`CP_ zInVQ+cRlZU-uHaq`Ox!`=VQ+&o=-hrdA|1i;5q8~!*eW*3qxTzObgS)jIdT=9l|<> zbqnhk)<0}OSX@|qUazvMl9GL#&KaDW^Kh-Xc9X~DM9%Xs3QU9FA#HV1uYwX^AW*}F zaji^jk{YfJ*Vg1I$u~>9o;F$O8I#K^=LIT!1^)E%f~rz~S9pL5>&GSB&UNOxa9z1>Tz4*<>%pDI_2hbS zy}3SIUsEte(`8DgY$~Q|YNl=)rrY$GVYhSrxdGfjZV(s2MRJ3=C@va4#d2|6yxGd^ zPw{J%AoChZpt}MkE=m%tYojR1GV{&FUQdUK{sQQ6MqzQVywd4^-o!BhucuSGzsOfr z61r#U<$=udO8aKll!72=_Su!?Or_892eS&Hn&P5jeQNM(uxv4T+U{uOdtp?+k;8<1;AoqV}~wJ^jDNu!fLlkt@QimRg@Q(1q0SSFkuS! zT2z(6WpCj!xslu`E{i*p8_kX3#&YAh@n&nYo!P4{=5hyW- z%jNR8NsJcrp}FbsyV73*Q#apla%Nkzjn^~2sJO&GWboj@c>(C)U|(Q?zjClMeSyKH zRe|Dyh>8;5B7bE>ae3%M@0ck2(qL=a%7T-M{R<)k3yO<^d%3CHG;TUKW13CvWiUTe z>_7d1ym2|O=rwSA=9FO<;@9Ooe z`b(8h_5};(z}h;$Ve0a-ash6kWe?4$b=zzItS>UgS5;Op$12@?^i@^|yL&z6Ki9$L zy;^Mbs)yHe&Z+LzpHA9w=4qMLqn=(*`Kj*FU~9cjid0uvo#^fL_)mE!#+5I~23}HJ zHoKl=VCETUJ9+_NNRKs1u&2&WR<=oX=!ba{2ZZ&r$w}xBG zU1bh12bzP-2s6?gypg+xyOz6-yPms&TW3a5Tt@M^6mOvT4T?Wy;xJ+g18O7)_0h$_ z$i`AJGTT4f7pMy4lvh<20Q)Ee$=3IT<(Y%buEXm|v`bn)V;!+sRlx*E({>t_@p{ru z)P~cUvS4L-2~$L1kE|N zxo5a%x#!FrbBTGq`MmiBMJ|eZQgjAI(Lr>xq=V zU#wGe!IiQ(3v*Ph1uk0-6^BGGDZ z)XBAX{ON73Lba?jA=PT{Os@xQ#=l_7oM1Umq}n2n)%+N*XWn0G-rl{p`NFR)!JogCe)&~Gb&kpaus03Hypr%UsjbIKQtEiNlA^;LL1JzBiY zbk4ML*iQvx)$8frVwtS6`OKwK;sQ0KezT|sO-579 z*=8wo+<|wiB_8`LxqXK`W*VC=p6M^DFf4;9WazSxnaL!(|gma^F&{F7sWK~sh zVg90^KQP|odGE8UmtPV{$y(KRbD;a3?I)O(_E480a}s!z^0Lxv&@yi3UbGyZKd<@o zcbn6egjJ1vcUQz)iw|u*P-0g098tKQWB+=Nh_-%no=9gUR-#MTN?eRqnF~#rzI^0^ zb(m|Gn#)Ynq~>z-JadJ4{uWddViFtCty}~!i7mh+E(kG+i_NReYk)~y z`!AEQe9n;p;CrWxN$g}yVwZWL!z6YyCh;J8h<%$EnJcaDey}~!+o78$(KC#0oo6ZKjqeD>ii{?dZ zzrOtU6>C$LFYl1>#*E*V-we=x_}dVoIcFBWML*bx{vHs0-SH>RDSsFXT*7VWH}pF? zf{vm;&@s$mgfS+VH*YZ4nKzm@nKzs3&1$p8tTi{7x7>zB8>v{qD%KcQu^X_uF@)94 z=Dp^23$4%ozlYX-;N-H!Uv{N`KI{aH1#z5GwGcLAK>pZwEG6K7LHgrv0Bqddyfp-D zd>Q~7_v9kjx48+{h<*3-3=a_l9)Kf&cs~j>Czpfq0Po zx1UJzI~^K^QvlO=I6ec9Ft?d^ns?RWRGbEwzT3R#AICI4lXK(I&4Id>%kF!6+?i)? zf4$!Xe__XdfN4AqijHqy^t$|uCn(9|Z`pRw8v);@P8?v`Ml|Oj8t33?;GM;}I1f+4 zlkpTh)!bp;XYMq2nfIFyY{b(6e>3qc?8Rr9yFo@iXg+2>Za%>rv#l(rWQbA&k<-e{ zOF^YD>6)>|)prDhxf~^>l3d=y=e& zD?#mnYP&bR*I;Xt)!p-q5G!+*el9L$q%seem=Bo`*WfZ-Za!i@YL-k2`YLDpgEIm4HeLFbBsqY);NDuUzC*ej&aX>OvRemB417YoItaQJI|b zSKu2!8N#dam3R$ai?700<7@D>_&R*O`GWbP`I7mv`HH#6+-vSL_nWV7!RtaSc0I1f zHL$=NfWf{NVz6(RpPHY+LVy1M9(!$Wd;MQqO!#ibGw(4EI6QL)CbE-{2?&MkD4>b{;&1BCHDEW^EMw@Q8Myy{zHt9ehNiDYhH9&_ZN%Dwi;oqc`$x= zfmoBm%$`9uCk<1bGb8vb{H=}JZveH2jz5piwEavFL+vm4S9}=%hJVLL@KO8+K1Mk6 zOYGu?g*OW*68^>QsW)Os z2f!`qX#NtyE$ITdg#$j;7ic;57n~Kb&MlFiqz_O6=|y^*ht1z=NMF*={N4QHltGq6 zkSGhXWH3PX2nYxg0|v~|W{?dd)0{pflG6dCB#9)GA?7iPIEqj$8A^t+%{fdF`NtI= zlFqqFMsxJ7die3j7Pn7byE1jt@K>f_+oe2F~8GA7Gj2&PuN!7c#t_PcERS9YyVH$VFr&MI9*WeCjZJ8Ch*(_6oC@ zqK=II)|m4s`1qT8Cd1r!Iz79VtYfIXj$BV}pr{K)T`B5TOKv1LG1zveDEyy??Ja=C zjm@#Rb=8}r=PVmztbC%<*Y5qns~K!JL(whGi}E9m?u`6t?E9DWs(!TN)WykWr8EB9 z$(=T6w=vM3c7jQBp4dSiWvIQ6>?FI${p10%n>CDC$K~Z;JX*)R&@u6!oWQ z07U~S8bndV7V=mKwNGJ{xgE%J47HICYNNsN08T=RhW(4$zX7$cGt?fWXt0CYw-{>Q z2GqhgMNtg3@B>h*I4k`T`IMpdWAX__F%-qtkk82H6va_AgrW9NHw;d=;ovm#HTj+a z@Eh_i`HmtWhy;ofYf%;Xk^E!^DN3R!nYH#OTIhe{?s{NcJJKX`9+5SC-c(*=KK_XDnE^)9Ex%&%B$sP@H3g5 zokY>(e_YP;g@9dubL<{IC?0xqP0H9cTbCX?JbA_a0CRp06fJIEba9VN7)(x3=1jpZ{e4RKzo5LY59v8Xp0=s&T%Ad;9t!C4Vb-_ zVfH$TW;>W&cN|IUtaB~DkpXH0e+xyRxz4TOZ{;^p1hjGLcJ2Awc}vmr^4pkpT*AoD z#mMjYGGhmSKZERj{7!xsMP(F~Q&dsQKfv#1kUg8C%6}fRj{^>$XpY1CZdws#e4BCc zhW8Zjn33oM2HB^f=rhfWUbLdk3T}PI^7HVeAAj7x)ur{4`FZ{&8?Y}jzy?oZ#`g2? zGQhsdzs4WnU*`|G#x>}L$HrUTgJOv+xyr0nJYBKB`U?9U9bzfeRS#Qt_7DJvj>2f`4rKqxwoq7^lQ zAczprfTD{|nUob&!C=(q6?BHz3xN6r55wz)&BR5R;G9Yq+6o;3vO+tdz0iT8l@wh} z(W+XZlhBz#_7aLN{l_6IoW{9@p3QN1?D`4AUymOxKQOMU^UhK4Uj>jA`asdX&5M?v z@!r>6uN*V`zM><$cA@!afRybR;-$hsA<_b^5Wzru#R;a(c_L0Y13)Xp3kgD^kR&7v zLxj_Xp~5g>I7L@dw1%R!6kSEp)f9n=bS*`|+OMbRhAqMf8?-{Y4O(Fo1MNBov^Uj( zcFVt@J@ud!CIM)L$rRlf0OebBD6>IZ z%0OGgsIP*7wzfHF`L7)UtP&P6(9RbY2tcx+18k(|)>>h)u!MmY6oJkEJZRy#n$W^= zwJ$1f8XX{`leet?@%tbD=+&Kp_5vt+VRO(bz3*(d@rSIfcXc}u6;{^a_c}Q%Tr6B_ zL-rB|+1pMqY0iwT5pH6TT`OEATrFH9Tq|5BTrb=ptP^ge=yr~;p(9Te?!AiE17 zE8LHFvTq7!*bZ7hzy}p{mikfQ2?pE8gvTj*fTGlHkJJjU2zwX;AEoHAe;$Fa1FQ}n5# zqE{%|L($$X!Z91QB0;gDfTBbfL+w5XwXZVNzRytm!M~_I^{5rw0&2x}6pnD(r_jZY zCla(`xY!d2L+l}*M$u~&9jFm|iM=U$ouYS68Dhl&BB*(_;y`hb7(o%RjW;NIvsN4| zMlr;`MbX>;IAX;_&MhW2hhf6~?$z@vv!-5n4(f7PfAbI^Ry-Yw4sBla-d0cNpSfXN z_01Q)o7m-#I|kPwRy;#YwGb<&FvPwK=o8bKqS5?NNf^K1(V?hx-2 zcZ$2j`^5*u-4t^aBZ@J_gkqjzfnt$j7sV3A@)q%-5M&>--Nxcm09mYrAd9t-+ZcEF z7qNc>V)rw|zDlv`AQpCPkADP8d{_K{A@)7-eTsF8jT-So@gs`e6t_Bci2Yprk~MM& zb{Vh-wtB>`V4DGlwY1fPoWmaC58^Kju|JAGi9b`^n&LJTx2+X_6%PYqaXX6J|Ko^t zah%(Qnj>}x*LD8+SC5-fq|=>g4K7G5qgB zaaW4FQQV#4aEg0Sd>X|)Dekq!)zwC+G&8@kEey4R^uo5H+qdTq7v%M{)leSE?(G;sF##oHEF|M!80_MzR=W2LfbW zV;E!ywFFuIa7bjhCc5CA(OOrIE7z4raU{iqDUPajO?FLTkd3A|=AVbG7jSr1a~$4W zbo9ojq|6JinSR-pUzd+gXOJy`qJ_g$ebytoXe(g<1 z#xL6L+ERx>sf*MdCRysr7#9l#A%!!>RonvOg4dZ|KcnY}e$G2R&Rcy_KWU%^V`%_` zaVfx93TH4bJ|2vvXeo|MsNrsvV$E2J%WI@~2?Xxh6fbTR>r6VG1yP|G0*g%kD^XM$ z2UUq=0bhe9R#?_Rh}NXxQYx2FE1e;YkWwhFq&Prvuogy=E@iN>04>aC?{jv8w~xKq zW3qB`y&36Qx#K5#b27$cq~&IfALkvNF%_t?S%FDeIa#S=GA2SPyGZjoGNxpwjLWI3 zqy3U4QG>!GVv?2)3SSZ(osc*vJU%gD=~7EUmBvWps->|MFQ9mleI;9(u%6u3beMi~kHER$8dt zYhP2B#B2~@+i6kkR0)f9u2y!IAphjgE` zQ`#lnPw{mWUr#a2#5#&=87P5pA?f2~)t+z9+Pe@PN^K4W4GmO%or5Mhh)KmHk(u>kd63jL5 z)0-&77ye+-cn0(%s zKI9Urr4J~+rCI`a;;oH&>E|}L1A?EpFk&H#Wfc)9D2*tv1FuHRhBxm0m5U%ox7WMC zj>}pAaam6ku)B9myc40@>C~6fH*9QQNncaEiQ>&Q(zh6N>@5%&0fyFkPC0}oFSMy- zq}`y`69l_MfI`f;k6o@ znZhjCkJaA;AoTP%y*RlzI485XG5{gt0~O^EkP8A_by+mt3UhXxw%ZgyAS_=6#C>m2 zw?+GMYoL9(4aN7G{UDS)EI@cfcw~Bx*NU|jnj^V`+=**fEqA1NN44CU;`^A=J;*NH zkcHL@zQGlCSpCR~{DtgKr>5@mX`mp=;c^cOXGHL>8o8(3i(+73`&gZBkR-tdQLKPK zAU3`o>8-x&PG$Y&Sgze>d4N1n9wbM|k@8?UN{*IeD1Lxq*dBS1;)f`HnBqq$ew5|-X|ixfgL{L``JWO%tmZsFyU-ES}5Rh=|y z;_{L=?reR|k~v_q$t6&Xotnif;=0ds;77?c+I2AI1_!nmTf^#VT#N=RW_I-*!`0u(dZ;@|$)EsyLGhOqe?>7UH{VeFEydqa{QV~RHTi)2x_nT6Lw-|! zOMaW;A1MBbV$ex`r5JRQ-zYvtA#e$hTzg0QX9fMG^)fCnJzxdtXIDWD@D%!kzT%RG zK`lE}RQih`q?5nUj&3;yLiJB(;Vfqc3QCF#AS7vo50bjTvvy4pES7)hk{j&7U?#-( zWT{}F&`cJRl|@jq?%TBf8QARd=M?`4HajGUi5v_;fU^q9%OZUh6~*uy=EpAh6)Ol6 z@bmEtf~}O5nw1ucy3Zm}vBv60({n`0BNhvAR{KZ!r$(x*{Hy#MTYi|k->c={DL%sH z&TWGY)EYK->2{b^`Iv&L6^`Pg6#p?H(xOXgio(}0=f*61F4$bLafg~yT#D4FIYm`; z5KD?i39eQQN{Cr96R4Uc-N^}7!rV4ez^!>um@37!G6_q9W0`MCd!-|Enq8|_I#D8; zi|vwKr3uzm@YFa(dnmm@k}0PtJ(XURNR-HwD78u-rLWSD5|xrLO4>8o$XrIv(gxX? zeF9cKp!k*wu#7;EXs57oTA|cM_Jh`QeOh|1ae3B&)8R-Z8uWT)uo6WHOp{)t#3-?p zz+8FQ(sXX97g{l-!|k6yMUCf9N#fi}vND8mCgx0FR{kA_)@*o}61TN@%1~vP&5Har z%21FW))QwaL+p}kub&Mioo=Nn8LV4rN;)O2C}~}zWGW*mX+uf7|EycksWHk}W!zNg zR=`?vO4@oo!wTmI?I>gsVBHsw&q=pJl0mfH0{lRD!O{W+ic6~?*HU?<*H>AZ;0QcrvND_HxNs{|l&Q)zWx6s$nW@ZD zyvkXMPsvvbltRU?6j9QFl8%%BxptVDwTi|RH~Hul=P(p=(j&511K3t$skH1D2b$GFeN}Z(Uinc z0%Q|MNjzJhh$#4%6b%W-;CEVLR67)K^d*Sm=dZQ1F*MG{{L32VDTt0PiYo9G#3dx;7se+=$3_*##TCZKN9D(b=B7O0JUJvYE;TVVDK#o0 zK0P)yA}%#KIwC0@eq_d`#igaiMy14MB)2@HUQcpjdP;n9QetLAVq#oWL|klQd_+<- ztVv=_Vp>9cOlEXyMy$Q)O;*F}84?o{9hVdzogR@9pA6a6;^I>yQsYxIBcd~tGNTjH zV&Yrc-**JQMif9JIxRjeIw3kG)`mviBv^p2FWLf%nil;FjK$`| z7g>Dxm(PZ@^0#Lk+hWeE9OnG)x~u9gUS?n1Hf%iiOWnoQ*2UlYn_&X z7oTy*xPUE%8ro=I9H@VM@5;K1o1Kfjuc37pw^|o}`6P3GTv^@4ZT7`azwP_nt#udg zwk{so_H&r?N}AUwJ^;tvskaq&!SXA|*+bBvUeklG7;} zO35%vhEs9|B_p7R~l1fP$B_IMbD1p(!F8Z|M zKt@UNY!+4@l)0d_H&7?Kf<@((5R9~4!^>F#P|pe~A%kGE8v~|QUYqrBp4za8B;79 z51>)Y*_FlRl~(r5fhR7Q>MNL+-nw1PJ!HnQmW z&b2YIai*0}wl*O#$x15Q)@%)41iK10h`NViH-21BS}yBIrr*cXw!$7aWOJPzXi%hs zQzS1dkL@Vb-P+sE7(Sx<4AU^%u(ne(I@hG7v;4I+nIp|GvlVN#Gt};j+N8CGZeD;KvvX-)$uTQ6uJ+UrzDLj#z*K}(?chW>yYipYyh|L}= zn{;a^@Wj+&L>o0TC&I_Gz>m5Eezp&^4fm|v@^-%N%5D>s=Jz530w&*Nw@&4YHaar zkQe?!OArJyE6YpA<-o=nz?0=mv3BENI)J)|vkIIv*tx#^dgqikBQ`BFAu}yGA}TF8 z7L1yVjEI!X7|_Er6Qhz-($bPslcH=fXZH)9PW4qz_64le&?SDhW0wQGro<0-V6PBb zvgD!vIPG~l)(s}Nyu2jeSDEEhWy}1A%`~{xIVwCcK0G=uE-E}JDk_|P*&pDlL#Sia zNnFBab*ws09j|7q6V!=nj+(22xGtpxl-P1gDkwRdl1fSflmscM+6;>_MV+cnQ>Uvl z)S0k6UbZUpDetDdhw`l{--hz-V3GKajE+6fdltxkoNs>dY+F{dOLZTa;|;vma49dy z@@5zNZGmDxnN=33u-IpPvAQQMxif?9sai?2A>T1@`?3B~hy_2g(pNF3{;Jc5x)zxC z&fWuV;P+GKsS6DP;w3>ODQ>* zl4X>bl+fGMh3X=8vARS(M_sC(t1eSbm8#1rf&Z6MatkHfD7ll82Pk=tk~b;&ijrR` zFR(cpP`3eNJ8whOmX{S-H`vHDdmkQRA)Z8GmdHE6GN8k30+*w4Ua1iLa6?L)xPy- zU1d(zgXXPR>j$E`u9C*RuY-$|`=EIZnXuae2s=&%spaMKK=YmFfZ+=DDp1qa)#{b% z8g(rt=TQQt<@uCcumOA3Yt(D8*L<9k3n{q>vN*u9waF|l3HmEToA_)ZE!SxnbFbEo zk6i{8D6b4QB3dZi!LGw!n3vVG9;WIyswSr#@Bym2)8T5h7TnTm4J9k9)eV$f%sj%! zeF|KN>Lzuwx&?N!;dBRMc-d?d0BEJs9{{D_Iz~pxC6ufhABNs&tlD zfK9e#kOI0TY>X5#2{H?GLO52C&BzWGe`dpdjKBs_4{Nj6CCOTD1#ErUn_#0LyL^qJ zHgf+0fb+@!mG8^s^#)$>bBLdSay_VX8P4#psiL~b?ZiT?`_+z z{eMtL8>_No-kPkMPF-s{cd1MM(eshe{$x$J?mb7GZ41JlBQ6?c{Z-uq+CELI1?{;} z>n)FLYTe-qOGoO=MRLQq(Ofo{2ifZjx!GKhyBPGN)!YWiIJ_H@20zZd!o3O_(JzPt zjYvao)B&`iUMK=3pd>U5rJ!-B(C$*5rV`S~?W-Jz$}GRLdbM+ATiXO zcT$cwHoCr?wYWJTK+0y~hR|ztKh+Q35x)&u=#E{S zVGb_&nFR!Uy8v^bN475nsyEznI4dj6G?S1bFcAcsGlnPCrx}!=qGWBg`V1vkF(|WV zZA~S`>X%da1@$G^NK#*<~R;&@dt8q!Af*`@R|Ar?7u+$hgiKg!C#?P7Ec1%G`qOWDfpcVxv`w_|42!FZW#3! z6;5z9I0mWyt{$x~`v)a8b$Mhoq>;Lr(RfPW&85lg)@v~OYO514zIOI`>gXtT zo;oHmW>9!SV&c-J&Lf7_8U%vo);wC6){2sil-x?mCQ3GgK+xK1?QDUtg_7I;Cj^4l zUF!ieqru+H)@toEN^bu%fuQwKH*0Xz>(2zj9pgQBHvFwnTmY{*LvcozYM!;a(#n?wv zblWCWy?Rt9zHNpvz6`X1Vn`6|2eqU(p!)^K19D$Y>O z(BLi95R9}`O5kXob1Os3v|-c|*(XND*OUF3+L-!E#!_;BeI?o2ghp7@afxa~uffb04ZN*<*I@c;NGZI-%3J4^Fv`RaVFPy?gy2}>`2 zk`iEjPlFmw32?t>+1&PRS#7hF%!V2$oV`0y$rEdlc5Swv*!x7)06(uPV4kAms?&B= zS%E+m)46+{s4_?MJg#zU*TwX6uP45)rsEn1cJcbtv6j~VpDFKl`mp1v&?ljTpPa6L zQl`j%U=BIdJzs-Yb~k7Xw1wIt4GgsBDS3eskdQBJ(9Y48YUgTTrh%y3OUXV;4*c!f zyVI`=w2K%=2AkoPY7O>}_MDI-j}OCTP1)=z@F;Iqwf3ER^y)isknKNy)%G8^Zqv5i zq>$^lyaJLigS}|GmD&c&=lRPri~S{qrhW0+MrcN5WqBo35)lcnM4>TDysogMT_LH83q3{(M^A7#~I|8*_o!xYPf8 zWowIQwC>QQN3Z^a1~U^}Z(@SiDyr7VdH|R+{}X8W%oL0aEGRAlDKv1Tzsz4*ToBH7 z+)7~|xH7zNZr|{N@~V=;@Urq?c)mZpxXeC*=plRA{?tj?>qpug_~zR8!NPY*ZQ9o= zZQGrK=7qf-J9YjKn*SUc?;2jKbnAW!8pnH2>v=L`hcokSg=x?5}ZJ^KUT_UN@W@kuoai7n{x$wM0WM;y2{ za&%1MrgLX;bAjJ2;V$PMdO29AOi~Kv0e6%R0)ZL_HfHmNv$*C#egzPSb)aZK0S40oxKo3 zpzS=gssk7L__C5ka0Igq91E!>eP20%oVpfddEdj5Qth z!B*>@<2Y2Iswg=*$}YIiK9JFp>66sZ z^f{ot#b)Mp?V$FC20r?)DfxzyZz=h1gZ8%ej`pqwbnrbTKTrZritqo=)W}b@&+LS` zCn2xD)V^kd=_^Wps@9_Kf&Ka>b&Mg|&%^1#d}MV07$ICXI&szJAa z!SM>(iw>Ye=rG3Eg%#W$_rm@0P&^uvq)){&a526NvTSd}+wnt?i}^{s7ZM*I!iNba zE~1e3WFTZ`jUgE%7qW#Gkz!Ips>rznwzkL`auwupyouaKb~X{^Ga8F>@`5Ahe%07p zBHCd}4p(cxQ}P?**B#HUg4dX{9W9ofYYeiTE5DOAQ9GuC6S-FBbfjZS;JG7|9Ie%P zUC>2Jz~Ow1@;s}m3)=+C@C6p-mfNB&=%2tU55-q#Wwn$8``6&{vx78Dw=S{m{&LuI zWl}Yj}*SoMEWDz^ycBeaNmFTFpAWWBfENAIimqr6CY z7v&|&%ix692kL_?Cp@oEUj3hN!t3#RBFJAof%00lo5&*ZN@RNbr(|5N$P8>il0 z{^h_k@T%4c?d8Afgzq_`VuS@yXF*f-bU>w^M)|O6J%jSC7?gUzyJwXkTx|mq-VF24 zhGQHVb#Hrz-saM?Y(=h)2|AUI)yK0+$5Fm*HDvbAXLWXFns9(A&7lo9X3yIGEN6pC z&($Zx29=(tPojK#%6F(?u72j@XBD)qt6+@ZH_u;aE8Xls!Nj^dAw_^4C8|4+;B;!1 zJ{QiD=wAIS-KXd41$v?G*NgPo`W(HO@|`H(netsI-<9&+DBqnzzDB+Wu$D4Z$H^cBFWWZ&7&__zv1O>4#(S^sKPUIk&Bou!W7!Bf!2nu#|Lvkq;WM z3QLAU`#@R9PHJsW-YA#@01R9Nvv6i;NnlB%V+T%W2GeNZsMg_> zu0XlqvSIX_4aems`azBatk4-Sg#iyp5bI?{eS^M<3BgPDh&3LD_ zjq(ZXwBiSh)>^TtNeP775BY>W4gtbVYf3?LPG1DVtGK|qV%cT-U0n7?{cimp{a$@L zH&DNi@`;o$qI@OgAzsjHl;2_YdtJX@e?Z@@KM1nzA^ld3LCe3Bl02dre8q9cUV8qH~#bTrFg7HZ334=q_ugVYnmU zJWhY=8CYFF5XujwkhhaRlky-OKr9!U9Vnmmn*N;ry#4}=@kRY5{bl_XeUH8u!Y)Su zT{ew~GppXe&fX*kfYq^{iExA*{Mqaj0$hhDOMS&<^~GVTto0aQbOpySgiKb-Psz)P_D+xj~& zx<}#(%VUvQNqWmz>4Xii4fUTCnzC-bRcokr*uMCb~SK6LPTi5tV{}|LS zU<~yqRqO*7R&Ck7;>sHR6Q*gLuuP~=(oMi<;Whlr8Dkyhbo5K>B0s{q*hrP$XT`p{ zLjO+xp39|tD&^Bm;0-evp+VSz6Gg;{sIY=dMZjx|gDrcZw-X>|@W~AOXZ;u8hb_dB zs?mRCqiyLH82I{c`tSOYY3%5gJxi3&q{i-QGp9sIJyP z28Lh&4K6Xe8TgXFkWpm@sM`>pZYnp;;0@TR=?AOWh`Q>Rv@z^z43UlTq|3u}R8-}| zyYDvPMA+|oJAtsAolcuoI%tT@_RsbOssheVYoW8VZYV}u2rz1>hGyu7VYm&C5oWY9 zS{rcKbu{J2P<|}sLH!s{`E1Hhp!`J2=TJU(i_wmqUPe(yCv+>zjBa$};whiU-ppcW zWG9-Qr|DT-;n{}<711QhkofL{e zV?;p=8nP5Jqr*2vZ2;ZuN8L;MMxrqULZ=u>Ml$86P=0ESak>Evdm80uFg?DL6^P27 zd|MZ&WAUJOWdpir!y(u*P+|h0uLPPD2?U-Vc}txL+T0T7uYkl zi6MM5<*VxFX{$Z5`OQbxdf74iUr2@^I7cSB!yE!#VvRDUymMYJjE92Y05(q-ny8I#&gE=#tYI_ zlwU#l^C-XkZ-@^1;<{J<=Qk?;9T&9~vJ41U@l7H9n*KWfYQ$^EXg_l?8$Alm`{``oyg74&OLpW9N$I*a?+zBfG?vEtIhNhFi2jwKfE*^pgP9|JUAkM>Uo0Z6gzG zi06PodT0>{5Q?D_A%qfoCx+fJ5ITVwfF~=Us3@SZC+7?EUQLSN8M!lL!C9_5Ds`flXhzYdIwF@SnKr?^N|0 z$Nmd%J?8wL+XN_l zBcFiMH}VOn^2lf1ck069gW39YFHAOMh~pqT;tn#cWLp`L&P;LJOTBP8n%Yk_3l*PL4u zlmS(0`-?K*@7M+q0WXMo0y_Z`;K_isF<_AUr{e_R4fybwXD0*J^*_!$0jMSn@HaJK ze(GL&jppKws$Y@j=CGA<5c33fK~2ejWu7OVFh67+G~2sZT<@~a`@L0vFi(I2d@cK2 z07UVaXAi_Yp< z1~Hil25gc6n_|GG889{j26=}d0>NRx=9&O#4Jyy123o(>vI9DKs0JyXd^4#Rf3IZ+ zTlrs9`~QGyV?0!YzMqBfs5ZqjsjopMHMB9H=m}&}LoZMV`{qgp=7A+1F_ z#;pOkz%l~{{eI1c{_o)0Ibel%lJh)VI|bnyY#pS{yaxLpfbAM^lLu_qfnR_d4A>b4 z>?{Lz?gVfPxXlB$^95VpM!VS3j}av=51#;e!1e@c`t+|& zk(olT&wj8l__<1NbyjzS@Sni;0(cEQu{8z2D;}_2gn$jU4ibrlp4nfK4fr=q_y#K< zp`Zuwi2=I;1wGC{`Un8H2IPnA@8EA4VSllq8L+Di*yq219?y~n*MjSQw4@oZRR-+Z zKbg{?5V-kI(7VlmUH^B`1K|+pfui76P>cclg#m-UT??>z~2x zU+v`IJ3Xid>OtTJs)J}y1JneyKy7e4hyis#2&wKcV0Rg?dkh$40X$&99x`B$7_i3- z*sl!OlO|CA8@PeS{KxsBa3pBT1Gn$Bbz#pl?q%HP`3pb(FSz~p!3}hPzzu}lxZg|b zf-Vra@%KX-9nh9>5t8QMZQr2{B!S-07y>;($Updk0ee{k`hdO+7-WZi&AR)qKpPkY zhVllgKN!OE7V=8#LPFM*jK7wH{@(W}U<`z8U?dm?Ml)b<7_het*t-*8EEvZ_w)YI! zhyQV819wAcvFERFl`gv!?jVBOTsopV9K5#13_>=L4mC~vYg5z(m0HY#d1m9stVqJU zpwT~&4a@*}1&`MhfO~n!_UWG=*jI-jm=6{}tmogIeqTeWHQ+v;NAT}=@|OSo9$NMP zhIKy}?qCtf`~#u{)-nXv`~{-Qco0<%9s(;E0{jetpBMtL|0jq#@fD&31pe}3dSVh9LBt^)zdjARlo>dgzIdwvak z^WJ%Vb8vr46W~3iKSJ$)gzCR{%3*MVceW956dVJ`83IBKfz1p7fFS^$T%!dAMuMQU zjbMm2KpHPRe~i>u2{|bK3Td5$(!Qo!xCYX`hUKBqzT}U4e=mviH8Bcu!~d}J>&GGA z+MnuD(C4@Q(B$jUdEw#j*SZMu1fIbqkP9w@r@+(T8SpH4jv*kz5ZJ;HfHMR{83J1w z0%8mSafX0I1CNVB_wbdI^4{@iDD?A{j(&Xy-49RA?2kBU2o&B-;F$uD_KAIXP&||? z@%wU5sMql%dw6m+f7_ZT!2<=Wqhfz-uli5zooy`Kp?%+$X#IY0-s1MZJ-7p;Djfnv z%71Lm3%LDlbKVpCvFSfvwp(IQ!dLaLAKPpG)1jT?V|daMyvX{GpZLdX|08ASUvBmL z*Lfd&2qg!B4;TVc$H7Mo0cls@NVXW(;&fDA)G@y~P)@D=!$ zhpMl^-@rEv0R%%pmLVW_0({4(3w~e-$V0jE0t%2WG<4WMquV~b|Nd0#0il0+{m~(C z7nBO07!vx&kW$1YpZeDavQUBp72ungwL0C#ynjxUd5P*s`d{?FxmK9d~yX!(i z*9B!DsqwB0Dy-@WeX-vlQ4yE*?1vju6W08@13<%P0|YY~&;j`0@*-`#rPbdPczELk z;+O0BB={8g)cLgejQC6;2{9s{51-%0Nl5SV{Kjh=?{9nx$rJvz@$JS>8@~wh3&J4X zEj%P^6afkPL_=ae@sN;D5+u@-3<>n4LE=1n1+xUJ1R)I-!8%A4rCG2|uoF^{=oe%O zjtGtmP6|#7{v!Bslk_IkCg)8-o6l6~n?yE?fFdFyG?5IEJdr|?BO>)8jUvq=ts?Crog&>L<06wHY!Qygf(TdS zw8+^lKW#y8*|nv0%L<$y4#4%`25=)d7H$H^!SQelxE0(QZVR`EJHnmeu5foa5l(`8 z!5Q#Ocs4v2o)6y#FM=O{AA}!*AAui(SHn-h>)?&>7I-_n3*G~tfKS2M@L5rHQA1H< z(H)|uqB)|aqGh6oL=TI8+`3__;8vlnz}911o3^%WZQI%*28c*L@5t0F9gk`qKh{}k`NXSUZ$jHdb zU}d~z(q)dzuw@=00E7m@0TF>nKqMh{Ba#uBi2aBnL@}ZSaS&0Cs6ZS+97X($XhgIj zIuKome#9VR2r+`VjQAwGQ5KLDmfa#NE-NW3EsKyv%NojJWi4f`WUXagWc_4=Wn*P& zvU_AxWK(6cWOHQmWD8{X%l69NlUpw*EQgTOmcz(l<;>-*RVPM((QIZMkRi0`lwRH^>Xh3&{iW!tz_>MdiihCFC{a zwdA+U>&WZL8^{~UW93ccaq@V13;96#4EdAtGx84=Km{EIH-&fwrb30nQH5g)RSFFX zoeJFwy$bybg9<|mBMM^*iwdU|&MKT&xU6th;kv>Ng-?odifF~{iaLsVipGjN6ipS) z6rB~_6ay4@DTXUj6r&WWib;yQ6_XX|inWR>if@r?keiY6NJXSN(hzBnbVTk%dLqM+ z6l4@K21!LGA$KE_k@?7SWGk{A*@^5%_9FX{gUBJ|2yzTLft*5KMqWi;N8Ui*Lark3 zBJU#~A|E54AfF*$Yy-AwY;)a4-Bz(}blU?ZAtiMsJ0-GGoDx+jNoltdL#aS%zfzG> zu~LcBL8Wq~6G{zAO-e0Fol4zGy-NK`=ak+k!<08D3n~jKizvgDwh6$ce3 z6&Dphl>n6>l@OIM6|zc%N~8)yrCMb~<%-H1lmtovrHRr(>7fizJ5Z)5Gn6^X7PS-Q ziwZ&oqhe8UsCX0=#X#kt@=ygRCh7pH6jg?*K-Ho;QRAp3)EU${)CJTP)HT#EsGF!~ zs86aQs&Lh{2g@#+@pHtKfj4(d+oe(Jl_$?6g6G3s>nO!aK_T=jhQV)YXB zgX-n#73%ZqFVS$c3|bYv18s`7Mth*i=m>NIItiVL&O;ZV_oEM>OVMTML+CnmH=2W< zM=zqe=u_x3=yT``=!@vf=&R`G=$Gi%=r`zh=nv>m8hjf38Uh;YG&X1`X;^B6YwXi# z*Ep~7PE%Y{U(;RFS2I8}NHat;N;64ww`Q^?T{BHHL$gq`MDw6#x#m&LW13Z($2CVa zZ)!f#e5v_b^Nr?5&CgnVTKrnVT5v6SEfp_>PisHh4&Sb~-D`Ws_LJMEw%^+R1+yL_ zh}nz*F%lRB%r=ZNMirxu(ZFb7c3|)rON=$f0ppBu!+2ogF=dzggKlVs%|~-F1n&Bwa6EUtNFQ zK;2;7FkP~4gl?{Go$kEuV?9t$PtQwlk6wjduimKMgx<8?jNY=|MZGI}*Ys}a-O^jt zyQ}w7@2%bkz0dkT>95t_pf9Mep>L;8()ZU7(ht=q>&NKF=~MM-`g`<`=r8KO*8glE zXn-(~Ge8;W8Q2)u8ITNo4FU{;40ahr7(^OG8>AYf8|*hYU{GpMZgAA#m_fBcjX|fu zsKHr-3kH`At{VJeaLeG1!F_{A22Tv08?H6nU?^xPWC$3F7{U$33?&Su4H1TNhC2*> z3^NRC3}*}<8$q!}BS#~O5!Hxhlx##d$~G!8DmE%HI%rgGRAE$W)MV6Z)M3d1_A&M|4lvF)9x}da ze8>0&Rsg#W3u0xkTG;Ja9jqDF3TutE!#ZPKu^!l+*f4AYHV?ZGTZBD;J%~MoJ%T-k zt;U|f)?tURqu6omBz77*i=D$RV3)9`uxGI6u+MjZJ9KsscO>tq-Z8!7wh6z9tci+= znu&&qmWiPW-o(;`U}9@xZ{ld;Z4zJ-Y!YTdF^M*bGf6NhHt9AQH({I1n#`Llo18W| zXL7;hj>!v?cP1ZAzL@fxZZO?s3YZF;ZZXB0Mw>ECD@Ld(Z=2pRePQ~> z^quKP+#1|ZxV5p&*>7fV&EA`RH2aJf z#Dn-P_^o&;JOVF|SH$D+!T4BwBA$j%#;4;M_$+)5z6@W1uf@0E+wooaUi>hA3_ppV z#?RoNn#-Hx&F#!d<`nZN^Ca_3^K$bF^CRZ<<}K!J=AGt!<^$$K<|F2d=9kQ$m_Ijv zW&Xzez4<2#K8v3$)>>?^*kmDZfwWMvP_a<8KwD^9Y`4&{(6=zOFt#9B&@7Hxj9A>X zTxY3fX=@p7nPbVcEU_%JJY-pI*=X5p*=pHt*=gBrIc~|eZ>*g>a2sa?5Uh22rR zV|LYcHFhWMChTt5!|avpZS7<2588LzpRs>x|JMG4{bvV0hYb!Q4seI94&n}y4$=-N z2Mq^p2OS4P2dsmsgPB8!1H+-nq0FJe;iyBUL#;!DL$gDxL%YL8$Bm9^jyjHJj_!^` zM}Nmi$8<-AW07O2W0_-x<1xo7#~R0zj@^!ZjsuQt$9cy^$7RQJju#v+IbLym==jEI zlM~=1;w0)M?j+@eaFTaIIw?D;I+;4*oh+QJoUEPfoE)5-om`zfoOU{SIwd)kISo2p zar)xC&DqA8?40X-(z(^S!@1kJ*Ll==)_Kl(!FkDf+4;2db?4j8cby+NKXHEU{L1+^ zmn|-OF6J)QF19WXF0L-_E<0U3UC1sJm)$PuE_+?FUGiL*E+sByE{9wWyG**gausz& zxT?9DxZ+%GT#2sXt`yhZuBoo+u6tc`UGrV{yB4_~b8T`RbDeZ$yK-C?T)D2NUC+6$ zxL$U>=K8|*wd)(#cdj2?KfCd{@w>s?*12tP6LeE?Be+rA3f(&0R@^?gOS&7n6W#sY zgWN;ice%&9?{QCYPjydsXSip&7rU3aSGXT_uXaD-UgzH6&UU}={@VS$`zQA=9x#t} z9veIaJtRG3JXAfjJ#;+uJ&ZieJS;p2kovZr2i2p_W7gx8$2E^<9xpsT5Z4o>h%!V~ zq9#$Bs6#X)8WT;3IHD8LhZsks5^2O_Vk$9%m`Thb<`ef5nZ%RCdSWB7nb=C~Aa)UZ ziTy+tahNztyh41x6R{JwGh}DM&bFOPJ0FuakVHtLByo}?Ns**Z(jaM(wv%*7dL(m_ zHOY?TNOB_)NuDHc(r(gGQUj@#)IsVZ^^;hnVbUmRiFAr|jkHR-M|w#5mGp}AhV-8F zk@VS9+0)ZA*)!9#*z<&Et!JC(kSEvkl;<_iTb`?)_dFkaKJk3+`O=Hu3-CgEDSN4U zp}n-cFkX6IhF(}NQ!l*NPA@MnA1^wV%|Hv z1HCi6tGtK3+1?!Q1@9&A3*NtY-}JuieaHKr_XF?Wygzt<_F3bz)@OsyCZEkdYCeuW z-aY|7!9Jlr5k65qF+OoV89tdl#Xg68j`$q&srIS&Y4U0HY4_>$x$L{i7wxO(Ywk<* zCHV&WM*A{+GkuGF%X|;{9`UX6J??wbx6ZfMchYyo_pHg{d z4F3ZEQvY)Q3jd@2$Na1OYy8{&d;I(TS^i`Glm2Y~S^tLt>jK~bQUQnn`2b{qT7X7? zb^sAG8#7A!sG&a?tId7eViW`GbMrt-;d4s9>#N zOt4gUf;|f{zAQ2cHP83vLMR4ek#f z3?2?y8?q%tG(;>!G9)M@CL}3jPY69EJtQY2KV*LhGvq+Xc*xUG@lg3tWT{ zBGfU|E7UhM08(iR3+)IU44nyG2<3*J4!sb1DfDXS_0T(^kHgl4Z4MI)(+@KV^9!Sf z<%gAr9SW-mI}%nO))m$pHV`%xHX1e&wivb?b|&n6*u}6bVb^vE?ZWPg*mZc<kFBW%ug01Zzc8*vNp$y^(d1i;>TwfGCY9 zyD0alol#y1hCi!qO}im{IIit&#LilM~B$IxOjVlrcLV)9}R#8k!{k2x7rAJY`m5;GVx6f+Vt z9`ibuKUN@ieXL;Y=2$RRJyti?Al5i`N33fsBn%xJA4`o*jNKiZ65A0w5_>xKcI=(l z`>~H=U&Vfm{SwC?Cm1IYCl{w2rxk~dGmCSGBgVzVCB-r0YU8@%dgBJ-hT=x!#^aXa zmg7#xor_n9*Nn%-o5x$l+r-<)JH@-kd&HCC!{Z|%nXUNv#Q5FuDe-CXjQGs>WATmg z!|^NecjDhBY)lYOkWWA+C?}{w%g1aJ91@%p+!7)Z3KB{asuPYU)Fhlt=uGHI=ucoJ zj3kUDoKCo$a4q3R!tI1R2~QGUQu(O>6{HGNw@~G%ic}>kimFc4pkk>uR9C78btl!6 z8b%GLQmE0?IBEiwPEDsWs9Dql)C%fRY9;kJwSn49ZKHNlyQ$|AHzn#O;u8spwuugj zu8AIrq(ra8-HF+WMTzB!Rf#o;&52!!{fXm=bBT+ImlCfh-b`Fge31A!@oD1oBp^vT zXq=QMvlIoHglkO(Hq`_%oG)bBaO^&8WQ=*}0>NHK-cA75DfM!fH zp_$QwXrVMRjY5m2#nGrV8ZDWYO3R>S(sF3|wEZ+D?Er0p_F=cdZtCvNJzMrT?EhGH09@%+LVTr&J|*MD=Dif_fnpvyi55=7ocyZ3)3a(igYEqCf$H;Ot+vr(4Fa?^dNdDJ(^CVC)0E3 zKhvw|HS}6~1HGBvM(?Ee(EI5u`ZE1A{T%%Q{UZGe{W|?7eU*NX{*eBd{w8&Es&XnW z)h#t5H9a*ywKBCYm6LioO)5=3O+O8rW|`)g=9K1|=ATARqohTr#idcxQqwZhGShO> z^3(REolF}`yPPhRz9n5UT`^rX9i6U~j!D-`H&3@scSv_mcT4w5_e~E-4^9tFFG?Ry zzn}g*{UwySxh`X4hEN8WA(kPLA)O(cA)ld=p`C@xGS70(^34j!3eF143eSqnipip9 zrDrj+va)is^0W436=rp1tz@ssR?F7O-jQvUZIeyP4$V%=-jhwwPS4((ot>SRy)U~c zyDIy5_Q~wJ?8fZo?6&NV?5^yd?8WRWIf6O%If*%ka=LT4IgfMRxLkOq@OKB+Kal1dW!~%hKfdt=8IN} zR*UWyJt%ry^t9+j(Q76@6UJQ2T+b9_3NZnuFjJAK$24IQnD$IhrXMqa8O$UzBbbrQ zXl5dFFEg8&$K1y(Viq%xF)Nu>%;U^9W+$_U+0SG#hnaKCMdmW|4D&p5g}KVS$9%~A zmHCwUym(`=Sg~BOVzE*&s#v{Pw^+Z}sCY-QX|Y)`sW`GYySTb|sF+i{P|PhpU3{+i zLhOTOToeGC0ZrhODsyFOUg@X zONLA4N)}6&OU{&>FIg#BExA*2x8#25n$pds!lm$1u~NxW=~7gwYN=W&y40xDuGF#A zrPRH2XQ@}IZ)reja4EHvR+?OzTAERsS(;OtU%J1vsC1z8YU!7Q$_MQaCLAn3$UXS6 zOtNf8S#ViiS#Q~7*+Ln&>~z_=vX!zMWw*=jmOUtYT=t|~pj@JSd$~ioSGjL_KzVR^ zSUI^ov*Pt(@UYBbxx~uKtaLnQOBg#i~j_4mTI`3tf=g+oUFW6 z`LyzF<%i18RcoqXRYFx@)s`yJD)B1Gs_j*zs{K{1Ree>1Rl`+dRf|;@s(z`uQFXiO zWA%n=k!sOu@oK4RM746YYBjoAs~S_STWwz*P`#)6VD<6pn(7nPwbkR*OVy{U&sJZk zzEpjs`nT#Y$EAQ?K1trw`@Sg%lTRBv7%QXgJl zP|vLYxxTi(p}x7kt-iCKRXHa502_BKv7vKu*#3yn*S%ZemOIb^GOHa#u%f*(}R#@xW z)-A1)tun20t%|Lxt>{+G*6po2tv0Pbt_kM;%W(o_B8VH0~sHI(B+>Ms_B4R(IBRp6a~YwY5vJ z%b?4+%cRS!%c6_WW!vS@<=o}gMeL$UhclweWm+)_l@oc-7mUdcfaX=-~F-sbB|yT*t4Z)YmZb9qDQ_* zu?N=^+!NcA*hA|{?n&=q^kntq^py3~^fdOg^tAVM^$hk5_l)&S^i1_U?nU&P_FDIP z^pblcdJ}pxdP{rDdTV;?dmDROdOLf&d;59^dS`oY^*-w3?_1Z0=rirZ_gVH4`fU3g z`keb*`#k!h`{MejeYC#hzSO?-zPvtWUrAqCUq#=MzWTnVzSh2uzUjW1zO#K7`Y!fe z>AT88~erjCHkfN5&e$+G5zuViT%6#Q~J~T8U304IsH}rHT|{y4gJmi zZT+47tp1Vy@&3vF<^D7M=lWOrSNnhMf8YOUfDfujWIqr#P(9E(&@<3Kz#14Cm>!rN zm>*agSRVL1h#n*k`VR&Th7Rr;+&!2wm^R25%o^klt_-dYJ{WvF_;m2q;G4nsgCAMK zECdU~!m-R)c$Njrg%!_AWbJ09u+mrzRu(IlRlqvIs$(^>T3GF@E>;g~gf-2YWzDme zSj()dtY26+S*xtiLxMw_hrppNLvlmtA+4e9L%KuwA*UhNA&;S*LzP4ILrp`iLl1}E z480rrF!XuYayWRnbhvuBcX(iUXn1sZVt9IZc6fexY53Ie+2Q-ckA{C8emeYo_|@=l z!*7S*4}Ti|GO}g_F|uPMa3pi2eq?Fn`6xK5Ich)ZF-jWs9`zj!8;u!_8%-EZ9Hou! z8O<5pH(E4$V6=Sn@aWH@m7_zW*GC_XJ{x^G`g-*J=*Q8|V|-)4nDm(9n9>+(OnnS9 zrZ;9dW<0iIENrY|Y;bIHY#({C^artq@aiwv!arC(6xb`@1JYoFc z_@VJ5)pk57-!j?a%Tjh`AnJAQur`uLsk`{R$spNu~n|1`lj@zccG z3B-ijgvNx{1ZDy^VLo9wVLjn75i}7pv1=lHB57jZMA5{7iGve|CXP%To2Z^RF;O?s zI59dgF)=m4o|v7OpIDsWPMn%JJ8^zuW#ZN3mP!3d&&kxu6O*%(cc%oV6sFXsG^Vtt zFjLqm%PH$A+bM@Brzw{yzp3DQvHH=~Um;)D&lGVQOjW%+&d*m8nZp z_orS@eVqC-%|9(Ly=fYl7MX@mZ=E)sj+-u-K04hnJv2QsJu`iF`tJ1o>DSZmr$0`A zVZ+#K*&En`Y)Q5{TbFIXHfEc!3G5(tD4WdAXYXe-*(K~Ub_M$=`xv{LJ;)wrkFh7& zY&M5I&pyk(%)Z9H!M@GD!+ybj&3?=NFtdI}a7JhboROK4n^BnAHnV-kbjEDPV#aF5 zZH7EUnTei>o1xCoW|C)8XEJ6oXL4qa&Q#7+&(zGEoT;B_oN1nEo#~kAn(3K2J@af9 zKC3tDHJdSea&~I=*6bI~dX6AxGY8~Ia1=O5juJE=vwmN^$VmpE5Bzi{qy9&jFWo^YPcNzB>JMb0J8?VT%| zJ2Y24*E%;oH#xUFcW&;&+@-neb2sL0&8^P8oclNrpO=`|o;RQOnfIR$nh%{P&r{~3 z=9A`A=QHLr=X2)s=F8?Q=8w)-&Nt7u&3DXq&yUYf&9mn@^XKPp&9Bbin}0C>+x(XW z{sn=B^$UUv@CC62$pz^J*#-Fp)dige(}kT2Aq!Cpu?qCCV#qrAJG@a@TM-asjRgSClKx-NsetYI3)8b-7rsDc6i^ z!L{PLa|5|lZYnp2TgpAcJ;tr(p5QidTe + + + + SchemeUserState + + music player.xcscheme_^#shared#^_ + + orderHint + 1 + + music playerWatch Watch App.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/music player/.DS_Store b/music player/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ca315e8afcbbca7a2552600af1d66b966049b368 GIT binary patch literal 6148 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ⅆ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 ErbJk1*2Py3**+G_O^t9`kJk!;Y$ zn3$Et5a!sgdYl|QZR2mUQdSt9E9MH~4S?~Mk()nLM3W4%5JMV}-`u$I4j2XPbdj{& zaav@C3tP6WRlEvy+nC@Sj3RJ$DhUDAhnb)y@2>btn&~t23%0A0N=^N; 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∋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 Void)? + + private var seekTime: TimeInterval = 0 + private var pausedTime: TimeInterval = 0 + private var totalDuration: TimeInterval = 0 + private var sampleRate: Double = 44100 + private var totalFrames: AVAudioFramePosition = 0 + private var isSeeking = false + + var volume: Float = 1.0 { + didSet { + if useFallback { + fallbackPlayer?.volume = volume + } else { + playerNode?.volume = volume + } + } + } + + var isPlaying: Bool { + if useFallback { + return fallbackPlayer?.isPlaying ?? false + } else { + return playerNode?.isPlaying ?? false + } + } + + var currentTime: TimeInterval { + get { + if useFallback { + return fallbackPlayer?.currentTime ?? 0 + } else { + guard let playerNode = playerNode else { return pausedTime } + if let nodeTime = playerNode.lastRenderTime, + let playerTime = playerNode.playerTime(forNodeTime: nodeTime) { + let currentSecs = Double(playerTime.sampleTime) / playerTime.sampleRate + let computed = min(seekTime + currentSecs, totalDuration) + pausedTime = computed + return computed + } + return pausedTime + } + } + set { + seek(to: newValue) + } + } + + var duration: TimeInterval { + if useFallback { + return fallbackPlayer?.duration ?? 0 + } else { + return totalDuration + } + } + + init(contentsOf url: URL) throws { + self.url = url + super.init() + + do { + self.engine = AVAudioEngine() + self.playerNode = AVAudioPlayerNode() + self.eqNode = AVAudioUnitEQ(numberOfBands: 10) + + let file = try AVAudioFile(forReading: url) + self.audioFile = file + self.totalDuration = Double(file.length) / file.fileFormat.sampleRate + self.sampleRate = file.fileFormat.sampleRate + self.totalFrames = file.length + + guard let engine = engine, let playerNode = playerNode, let eqNode = eqNode else { + throw NSError(domain: "AVAudioPlayerWithEQ", code: 1, userInfo: [NSLocalizedDescriptionKey: "Failed to create nodes"]) + } + + engine.attach(playerNode) + engine.attach(eqNode) + + let frequencies: [Float] = [32, 64, 125, 250, 500, 1000, 2000, 4000, 8000, 16000] + let isEqEnabled = UserDefaults.standard.bool(forKey: "eq_enabled") + + for i in 0..<10 { + let band = eqNode.bands[i] + band.frequency = frequencies[i] + band.filterType = .parametric + band.bypass = !isEqEnabled + let savedGain = Float(UserDefaults.standard.double(forKey: "eq_band_\(i)")) + band.gain = savedGain + } + + let format = file.processingFormat + engine.connect(playerNode, to: eqNode, format: format) + engine.connect(eqNode, to: engine.mainMixerNode, format: format) + + try engine.start() + self.useFallback = false + scheduleFile() + } catch { + print("AVAudioEngine setup failed, falling back to AVAudioPlayer: \(error)") + self.useFallback = true + self.fallbackPlayer = try AVAudioPlayer(contentsOf: url) + self.fallbackPlayer?.delegate = self + self.fallbackPlayer?.prepareToPlay() + } + } + + func play() { + if useFallback { + fallbackPlayer?.play() + } else { + if let engine = engine, !engine.isRunning { + try? engine.start() + } + playerNode?.play() + } + } + + func pause() { + if useFallback { + fallbackPlayer?.pause() + } else { + pausedTime = currentTime + playerNode?.pause() + } + } + + func stop() { + if useFallback { + fallbackPlayer?.stop() + } else { + playerNode?.stop() + engine?.stop() + } + } + + func seek(to time: TimeInterval) { + if useFallback { + fallbackPlayer?.currentTime = time + } else { + guard let playerNode = playerNode, let file = audioFile else { return } + let wasPlaying = playerNode.isPlaying + isSeeking = true + playerNode.stop() + + seekTime = max(0, min(time, totalDuration)) + pausedTime = seekTime + let startFrame = AVAudioFramePosition(seekTime * sampleRate) + let framesToPlay = AVAudioFrameCount(totalFrames - startFrame) + + if framesToPlay > 100 { + if #available(iOS 15.0, *) { + playerNode.scheduleSegment(file, startingFrame: startFrame, frameCount: framesToPlay, at: nil, completionCallbackType: .dataPlayedBack) { [weak self] _ in + guard let self = self, !self.isSeeking else { return } + DispatchQueue.main.async { self.onFinishPlaying?() } + } + } else { + playerNode.scheduleSegment(file, startingFrame: startFrame, frameCount: framesToPlay, at: nil) { [weak self] in + guard let self = self, !self.isSeeking else { return } + DispatchQueue.main.async { self.onFinishPlaying?() } + } + } + } + + isSeeking = false + if wasPlaying { + playerNode.play() + } + } + } + + private func scheduleFile() { + guard let playerNode = playerNode, let file = audioFile else { return } + if #available(iOS 15.0, *) { + playerNode.scheduleFile(file, at: nil, completionCallbackType: .dataPlayedBack) { [weak self] _ in + guard let self = self, !self.isSeeking else { return } + DispatchQueue.main.async { self.onFinishPlaying?() } + } + } else { + playerNode.scheduleFile(file, at: nil) { [weak self] in + guard let self = self, !self.isSeeking else { return } + DispatchQueue.main.async { self.onFinishPlaying?() } + } + } + } + + func updateEQSettings() { + guard !useFallback, let eqNode = eqNode else { return } + let isEqEnabled = UserDefaults.standard.bool(forKey: "eq_enabled") + for i in 0..<10 { + let band = eqNode.bands[i] + band.bypass = !isEqEnabled + let savedGain = Float(UserDefaults.standard.double(forKey: "eq_band_\(i)")) + band.gain = savedGain + } + } + + func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { + if flag { + self.onFinishPlaying?() + } + } +} + +struct EQPreset: Identifiable, Hashable { + var id: String { name } + let name: String + let gains: [Double] +} + +let eqPresets: [EQPreset] = [ + EQPreset(name: "Обычный (Flat)", gains: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), + EQPreset(name: "Усиление баса", gains: [8.0, 6.5, 5.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]), + EQPreset(name: "Усиление вокала", gains: [-3.0, -2.0, -1.0, 1.0, 3.0, 4.5, 4.0, 3.0, 1.5, -1.0]), + EQPreset(name: "Акустика", gains: [3.5, 3.0, 1.5, 2.0, 1.0, 1.5, 2.5, 2.0, 1.5, 1.0]), + EQPreset(name: "Классика", gains: [5.0, 4.0, 3.0, 2.0, -1.0, -1.0, 0.0, 2.0, 3.5, 4.5]), + EQPreset(name: "Электроника", gains: [5.0, 4.0, 2.0, 0.0, -2.0, 2.5, 1.5, 2.0, 4.0, 5.5]), + EQPreset(name: "Джаз", gains: [4.0, 3.0, 1.5, 2.0, -1.5, -1.5, 0.0, 1.5, 3.0, 4.0]), + EQPreset(name: "Поп", gains: [-2.0, -1.5, 0.0, 2.5, 4.5, 4.0, 2.5, 0.0, -1.5, -2.0]), + EQPreset(name: "Рок", gains: [5.0, 4.0, -2.0, -4.0, -1.5, 1.5, 3.5, 4.5, 5.0, 5.0]) +] + +class LyricsManager: ObservableObject { + static let shared = LyricsManager() + private let storageKey = "trackLyrics_v1" + @Published private var store: [String: [LyricLine]] = [:] + + init() { load() } + + func lyrics(for url: URL) -> [LyricLine] { store[url.lastPathComponent] ?? [] } + func hasLyrics(for url: URL) -> Bool { !(store[url.lastPathComponent]?.isEmpty ?? true) } + + func setLyrics(_ lines: [LyricLine], for url: URL) { + store[url.lastPathComponent] = lines + save() + objectWillChange.send() + } + + func deleteLyrics(for url: URL) { + store.removeValue(forKey: url.lastPathComponent) + save() + } + + func parseLRC(_ content: String) -> [LyricLine] { + var lines: [LyricLine] = [] + let timeRx = try! NSRegularExpression(pattern: #"\[(\d{2}):(\d{2})[\.:](\d{2,3})\]"#) + let metaRx = try! NSRegularExpression(pattern: #"^\[[a-zA-Z]+:.*\]$"#) + + for raw in content.components(separatedBy: "\n") { + let t = raw.trimmingCharacters(in: .whitespacesAndNewlines) + if t.isEmpty { continue } + let nsT = t as NSString + let r = NSRange(t.startIndex..., in: t) + if metaRx.firstMatch(in: t, range: r) != nil { continue } + let matches = timeRx.matches(in: t, range: r) + if matches.isEmpty { + if !t.hasPrefix("[") { lines.append(LyricLine(time: -1, text: t)) } + continue + } + let lastEnd = matches.last!.range.location + matches.last!.range.length + let text = nsT.substring(from: lastEnd).trimmingCharacters(in: .whitespaces) + guard !text.isEmpty else { continue } + for m in matches { + let mm = Double(nsT.substring(with: m.range(at: 1))) ?? 0 + let ss = Double(nsT.substring(with: m.range(at: 2))) ?? 0 + let ms = Double(nsT.substring(with: m.range(at: 3))) ?? 0 + let div = nsT.substring(with: m.range(at: 3)).count == 3 ? 1000.0 : 100.0 + lines.append(LyricLine(time: mm * 60 + ss + ms / div, text: text)) + } + } + return lines.sorted { + let a = $0.time < 0 ? Double.infinity : $0.time + let b = $1.time < 0 ? Double.infinity : $1.time + return a < b + } + } + + func lrcText(for lines: [LyricLine]) -> String { + lines.map { l in + guard l.time >= 0 else { return l.text } + let m = Int(l.time) / 60 + let s = Int(l.time) % 60 + let ms = Int((l.time - Double(Int(l.time))) * 100) + return String(format: "[%02d:%02d.%02d]%@", m, s, ms, l.text) + }.joined(separator: "\n") + } + + private func save() { + if let data = try? JSONEncoder().encode(store) { + UserDefaults.standard.set(data, forKey: storageKey) + } + } + + private func load() { + guard let d = UserDefaults.standard.data(forKey: storageKey), + let dict = try? JSONDecoder().decode([String: [LyricLine]].self, from: d) + else { return } + store = dict + } + + func fetchLyricsFromLRCLib(title: String, artist: String) async -> String? { + var cleanTitle = title + for ext in [".mp3", ".m4a", ".wav", ".flac", ".aac"] { + cleanTitle = cleanTitle.replacingOccurrences(of: ext, with: "", options: .caseInsensitive) + } + let cleanArtist = artist == "Локальный файл" ? "" : artist + + var components = URLComponents(string: "https://lrclib.net/api/search")! + components.queryItems = [ + URLQueryItem(name: "track_name", value: cleanTitle), + URLQueryItem(name: "artist_name", value: cleanArtist) + ].filter { !($0.value?.trimmingCharacters(in: .whitespaces).isEmpty ?? true) } + + guard let url = components.url else { return nil } + + var request = URLRequest(url: url) + request.setValue("SwiftUIMusicPlayer/1.0", forHTTPHeaderField: "User-Agent") + + do { + let (data, _) = try await URLSession.shared.data(for: request) + let results = try JSONDecoder().decode([LRCLibSearchResult].self, from: data) + + if let bestMatch = results.first { + return bestMatch.syncedLyrics ?? bestMatch.plainLyrics + } + } catch { + print("LRCLib Network Error: \(error)") + } + return nil + } +} + +class PlaybackTime: ObservableObject { + static let shared = PlaybackTime() + @Published var currentTime: TimeInterval = 0 +} + +// MARK: - Модель и менеджер пользовательских метаданных трека +struct TrackMetadataOverride: Codable { + var title: String + var artist: String +} + +class TrackMetadataManager: ObservableObject { + static let shared = TrackMetadataManager() + private let storageKey = "trackMetadataOverrides_v1" + @Published private var store: [String: TrackMetadataOverride] = [:] + + init() { load() } + + func override(for url: URL) -> TrackMetadataOverride? { + store[url.lastPathComponent] + } + + func hasOverride(for url: URL) -> Bool { + store[url.lastPathComponent] != nil + } + + func setMetadata(title: String, artist: String, for url: URL) { + let trimmedTitle = title.trimmingCharacters(in: .whitespacesAndNewlines) + let trimmedArtist = artist.trimmingCharacters(in: .whitespacesAndNewlines) + store[url.lastPathComponent] = TrackMetadataOverride( + title: trimmedTitle.isEmpty ? url.lastPathComponent : trimmedTitle, + artist: trimmedArtist.isEmpty ? "Локальный файл" : trimmedArtist + ) + save() + objectWillChange.send() + } + + func resetMetadata(for url: URL) { + store.removeValue(forKey: url.lastPathComponent) + save() + objectWillChange.send() + } + + private func save() { + if let data = try? JSONEncoder().encode(store) { + UserDefaults.standard.set(data, forKey: storageKey) + } + } + + private func load() { + guard let d = UserDefaults.standard.data(forKey: storageKey), + let dict = try? JSONDecoder().decode([String: TrackMetadataOverride].self, from: d) + else { return } + store = dict + } +} + +// MARK: - Менеджер пользовательских обложек треков +class ArtworkManager: ObservableObject { + static let shared = ArtworkManager() + private var cache: [String: UIImage] = [:] + + private var artworkDirectory: URL { + let docs = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! + let dir = docs.appendingPathComponent("CustomArtwork", isDirectory: true) + if !FileManager.default.fileExists(atPath: dir.path) { + try? FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true) + } + return dir + } + + private func fileURL(for trackURL: URL) -> URL { + artworkDirectory.appendingPathComponent(trackURL.lastPathComponent + ".jpg") + } + + func hasCustomArtwork(for trackURL: URL) -> Bool { + FileManager.default.fileExists(atPath: fileURL(for: trackURL).path) + } + + func artwork(for trackURL: URL) -> UIImage? { + let key = trackURL.lastPathComponent + if let cached = cache[key] { return cached } + guard let data = try? Data(contentsOf: fileURL(for: trackURL)), + let image = UIImage(data: data) + else { return nil } + cache[key] = image + return image + } + + func setArtwork(_ image: UIImage, for trackURL: URL) { + guard let data = image.jpegData(compressionQuality: 0.85) else { return } + try? data.write(to: fileURL(for: trackURL), options: .atomic) + cache[trackURL.lastPathComponent] = image + objectWillChange.send() + } + + func removeArtwork(for trackURL: URL) { + try? FileManager.default.removeItem(at: fileURL(for: trackURL)) + cache.removeValue(forKey: trackURL.lastPathComponent) + objectWillChange.send() + } +} + +class MusicManager: NSObject, ObservableObject { + static let shared = MusicManager() + + @Published var audioPlayer: AVAudioPlayerWithEQ? + + @Published var tracks: [Track] = [] + private var shuffledTracks: [Track] = [] + + @Published var isPlaying = false + @Published var currentTrackIndex = 0 + + @Published var volume: Float = 0.7 { + didSet { applyVolumeChange() } + } + + @Published var shuffleOn = false { didSet { updateShuffledList() } } + @Published var repeatMode: RepeatMode = .none + + @Published var currentArtwork: UIImage? + @Published var gradientColors: [Color] = [Color(.systemGray5), Color(.systemGray3)] + @Published var trackDuration: TimeInterval = 0 + + var currentTime: TimeInterval { + get { PlaybackTime.shared.currentTime } + set { PlaybackTime.shared.currentTime = newValue } + } + + @Published var currentTitle: String = "" + @Published var currentArtist: String = "" + + private var timer: AnyCancellable? + private var cancellables = Set() + private let systemVolumeView = MPVolumeView(frame: .zero) + + var currentList: [Track] { + return shuffleOn ? shuffledTracks : tracks + } + + var currentTrack: Track? { + guard !currentList.isEmpty && currentTrackIndex < currentList.count else { return nil } + return currentList[currentTrackIndex] + } + + override init() { + super.init() + setupSession() + setupRemoteCommands() + loadTracksFromDisk() + setupVolumeObservation() + setupInterruptionObserving() + + DispatchQueue.main.async { + self.syncVolumeWithCurrentMode() + } + } + + func setupSession() { + do { + try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, policy: .longFormAudio) + try AVAudioSession.sharedInstance().setActive(true) + } catch { print("Session error: \(error)") } + } + + func loadTracksFromDisk() { + let fileManager = FileManager.default + guard let docs = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return } + do { + let content = try fileManager.contentsOfDirectory(at: docs, includingPropertiesForKeys: nil) + let audioFiles = content.filter { ["mp3", "m4a", "wav"].contains($0.pathExtension.lowercased()) } + + var loadedTracks: [Track] = [] + + for url in audioFiles { + let asset = AVAsset(url: url) + var title = url.lastPathComponent + var artist = "Локальный файл" + + for item in asset.metadata { + guard let key = item.commonKey else { continue } + if key == .commonKeyTitle { title = item.stringValue ?? title } + if key == .commonKeyArtist { artist = item.stringValue ?? artist } + } + + if let override = TrackMetadataManager.shared.override(for: url) { + title = override.title + artist = override.artist + } + + loadedTracks.append(Track(url: url, title: title, artist: artist)) + } + + DispatchQueue.main.async { + self.tracks = loadedTracks.sorted(by: { $0.title < $1.title }) + self.updateShuffledList() + } + } catch { print("Disk error: \(error)") } + } + + func originalMetadata(for url: URL) -> (title: String, artist: String) { + let asset = AVAsset(url: url) + var title = url.lastPathComponent + var artist = "Локальный файл" + for item in asset.metadata { + guard let key = item.commonKey else { continue } + if key == .commonKeyTitle { title = item.stringValue ?? title } + if key == .commonKeyArtist { artist = item.stringValue ?? artist } + } + return (title, artist) + } + + func updateMetadata(title: String, artist: String, for url: URL) { + TrackMetadataManager.shared.setMetadata(title: title, artist: artist, for: url) + loadTracksFromDisk() + + if audioPlayer?.url == url { + let trimmedTitle = title.trimmingCharacters(in: .whitespacesAndNewlines) + let trimmedArtist = artist.trimmingCharacters(in: .whitespacesAndNewlines) + currentTitle = trimmedTitle.isEmpty ? url.lastPathComponent : trimmedTitle + currentArtist = trimmedArtist.isEmpty ? "Локальный файл" : trimmedArtist + updateNowPlaying() + } + } + + func resetMetadata(for url: URL) { + TrackMetadataManager.shared.resetMetadata(for: url) + loadTracksFromDisk() + + if audioPlayer?.url == url { + let original = originalMetadata(for: url) + currentTitle = original.title + currentArtist = original.artist + updateNowPlaying() + } + } + + func updateArtwork(_ image: UIImage, for url: URL) { + ArtworkManager.shared.setArtwork(image, for: url) + if audioPlayer?.url == url { + currentArtwork = image + gradientColors = image.extractGradientColors() + updateNowPlaying() + } + } + + func removeCustomArtwork(for url: URL) { + ArtworkManager.shared.removeArtwork(for: url) + if audioPlayer?.url == url { + fetchArtwork(for: url) + updateNowPlaying() + } + } + + func importTracks(from urls: [URL]) { + let fileManager = FileManager.default + guard let docs = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return } + + var lrcURLs: [URL] = [] + var audioURLs: [URL] = [] + + for url in urls { + if url.pathExtension.lowercased() == "lrc" { lrcURLs.append(url) } + else { audioURLs.append(url) } + } + + for url in audioURLs { + let accessing = url.startAccessingSecurityScopedResource() + let dest = docs.appendingPathComponent(url.lastPathComponent) + try? fileManager.copyItem(at: url, to: dest) + if accessing { url.stopAccessingSecurityScopedResource() } + } + + for lrcURL in lrcURLs { + let accessing = lrcURL.startAccessingSecurityScopedResource() + defer { if accessing { lrcURL.stopAccessingSecurityScopedResource() } } + guard let content = try? String(contentsOf: lrcURL, encoding: .utf8) else { continue } + let baseName = lrcURL.deletingPathExtension().lastPathComponent + if let matchURL = findAudioURL(for: baseName, in: docs) { + let lines = LyricsManager.shared.parseLRC(content) + LyricsManager.shared.setLyrics(lines, for: matchURL) + } + } + + loadTracksFromDisk() + } + + private func findAudioURL(for baseName: String, in directory: URL) -> URL? { + for ext in ["mp3", "m4a", "wav", "flac", "aac"] { + let url = directory.appendingPathComponent(baseName + "." + ext) + if FileManager.default.fileExists(atPath: url.path) { return url } + } + return nil + } + + func deleteTrack(at offsets: IndexSet) { + offsets.forEach { try? FileManager.default.removeItem(at: tracks[$0].url) } + loadTracksFromDisk() + } + + func deleteTrack(track: Track) { + try? FileManager.default.removeItem(at: track.url) + loadTracksFromDisk() + } + + func deleteAllTracks() { + audioPlayer?.stop() + isPlaying = false + + for track in tracks { + try? FileManager.default.removeItem(at: track.url) + } + + DispatchQueue.main.async { + self.tracks.removeAll() + self.shuffledTracks.removeAll() + self.currentArtwork = nil + self.gradientColors = [Color(.systemGray5), Color(.systemGray4), Color(.systemGray3)] + self.currentTitle = "" + self.currentArtist = "" + self.currentTime = 0 + self.trackDuration = 0 + self.updateNowPlaying() + } + } + + private func updateShuffledList() { + shuffledTracks = tracks.shuffled() + if let playingURL = audioPlayer?.url, let newIndex = shuffledTracks.firstIndex(where: { $0.url == playingURL }) { + currentTrackIndex = newIndex + } + } + + func playTrack(at index: Int, in list: [Track]? = nil) { + let activeList = list ?? currentList + guard !activeList.isEmpty else { return } + let safeIndex = (index < 0) ? 0 : (index >= activeList.count ? 0 : index) + currentTrackIndex = safeIndex + + let track = activeList[currentTrackIndex] + do { + audioPlayer?.onFinishPlaying = nil // Clear old callback securely + audioPlayer?.stop() // Prevent ghostly double playback + + audioPlayer = try AVAudioPlayerWithEQ(contentsOf: track.url) + + audioPlayer?.onFinishPlaying = { [weak self] in + guard let self = self else { return } + if self.repeatMode == .one { + self.seek(to: 0) + self.audioPlayer?.play() + self.isPlaying = true + } + else if self.repeatMode == .all || self.currentTrackIndex < self.currentList.count - 1 { + self.nextTrack() + } + else { + self.isPlaying = false + self.updateNowPlaying() + } + } + + if !UserDefaults.standard.bool(forKey: "controlSystemVolume") { + audioPlayer?.volume = volume + } else { + audioPlayer?.volume = 1.0 + } + + audioPlayer?.play() + isPlaying = true + trackDuration = audioPlayer?.duration ?? 0 + + self.currentTitle = track.title + self.currentArtist = track.artist + fetchArtwork(for: track.url) + + startTimer() + updateNowPlaying() + } catch { print("Play error: \(error)") } + } + + func resume() { + guard audioPlayer?.isPlaying != true else { + updateNowPlaying() + return + } + if currentTime >= trackDuration - 0.5 && trackDuration > 0 { + seek(to: 0) + } + audioPlayer?.play() + isPlaying = true + startTimer() + updateNowPlaying() + } + + func pause() { + guard audioPlayer?.isPlaying == true else { + updateNowPlaying() + return + } + audioPlayer?.pause() + isPlaying = false + updateNowPlaying() + } + + func playPause() { + if audioPlayer?.isPlaying == true { + pause() + } else { + resume() + } + } + + func nextTrack() { + if currentList.isEmpty { return } + playTrack(at: (currentTrackIndex + 1) % currentList.count) + } + + func prevTrack() { + if currentList.isEmpty { return } + if (audioPlayer?.currentTime ?? 0) > 3.0 { seek(to: 0); return } + playTrack(at: (currentTrackIndex - 1 + currentList.count) % currentList.count) + } + + func seek(to time: TimeInterval) { + audioPlayer?.seek(to: time) + currentTime = time + updateNowPlaying() + } + + func toggleShuffle() { shuffleOn.toggle() } + func toggleRepeat() { repeatMode = RepeatMode(rawValue: (repeatMode.rawValue + 1) % RepeatMode.allCases.count) ?? .none } + + private func startTimer() { + timer?.cancel() + var tickCount = 0 + timer = Timer.publish(every: 0.05, on: .main, in: .common).autoconnect().sink { [weak self] _ in + guard let self = self else { return } + PlaybackTime.shared.currentTime = self.audioPlayer?.currentTime ?? 0 + + tickCount += 1 + if tickCount % 20 == 0 { + self.syncNowPlayingIfNeeded() + } + } + } + + private func syncNowPlayingIfNeeded() { + let actuallyPlaying = audioPlayer?.isPlaying ?? false + if actuallyPlaying != isPlaying { + isPlaying = actuallyPlaying + } + updateNowPlaying() + } + + private func fetchArtwork(for url: URL) { + self.currentArtwork = nil + + if let custom = ArtworkManager.shared.artwork(for: url) { + self.currentArtwork = custom + self.gradientColors = custom.extractGradientColors() + return + } + + let asset = AVAsset(url: url) + for item in asset.metadata where item.commonKey == .commonKeyArtwork { + if let data = item.dataValue, let img = UIImage(data: data) { + self.currentArtwork = img + self.gradientColors = img.extractGradientColors() + } + } + if self.currentArtwork == nil { + self.gradientColors = [Color(.systemGray5), Color(.systemGray4), Color(.systemGray3)] + } + } + + func updateNowPlaying() { + var info: [String: Any] = [ + MPMediaItemPropertyTitle: currentTitle, + MPMediaItemPropertyArtist: currentArtist, + MPNowPlayingInfoPropertyElapsedPlaybackTime: audioPlayer?.currentTime ?? 0, + MPMediaItemPropertyPlaybackDuration: trackDuration, + MPNowPlayingInfoPropertyPlaybackRate: isPlaying ? 1.0 : 0.0 + ] + + if let image = currentArtwork { + info[MPMediaItemPropertyArtwork] = MPMediaItemArtwork(boundsSize: image.size) { _ in + return image + } + } + + MPNowPlayingInfoCenter.default().nowPlayingInfo = info + MPNowPlayingInfoCenter.default().playbackState = isPlaying ? .playing : .paused + } + + func setupRemoteCommands() { + let center = MPRemoteCommandCenter.shared() + center.playCommand.addTarget { [weak self] _ in + self?.resume() + return .success + } + center.pauseCommand.addTarget { [weak self] _ in + self?.pause() + return .success + } + center.nextTrackCommand.addTarget { [weak self] _ in self?.nextTrack(); return .success } + center.previousTrackCommand.addTarget { [weak self] _ in self?.prevTrack(); return .success } + } + + private func setupInterruptionObserving() { + NotificationCenter.default.publisher(for: AVAudioSession.interruptionNotification) + .sink { [weak self] notification in + self?.handleInterruption(notification) + } + .store(in: &cancellables) + + NotificationCenter.default.publisher(for: AVAudioSession.routeChangeNotification) + .sink { [weak self] _ in + self?.syncNowPlayingIfNeeded() + } + .store(in: &cancellables) + } + + private func handleInterruption(_ notification: Notification) { + guard let info = notification.userInfo, + let typeValue = info[AVAudioSessionInterruptionTypeKey] as? UInt, + let type = AVAudioSession.InterruptionType(rawValue: typeValue) + else { return } + + switch type { + case .began: + isPlaying = false + updateNowPlaying() + + case .ended: + var shouldResume = false + if let optionsValue = info[AVAudioSessionInterruptionOptionKey] as? UInt { + shouldResume = AVAudioSession.InterruptionOptions(rawValue: optionsValue).contains(.shouldResume) + } + + do { + try AVAudioSession.sharedInstance().setActive(true) + } catch { + print("Не удалось повторно активировать аудиосессию: \(error)") + } + + if shouldResume { + audioPlayer?.play() + isPlaying = true + } else { + isPlaying = false + } + updateNowPlaying() + + @unknown default: + break + } + } + + private func applyVolumeChange() { + let controlSystem = UserDefaults.standard.bool(forKey: "controlSystemVolume") + if controlSystem { + setSystemVolume(volume) + } else { + audioPlayer?.volume = volume + } + } + + func syncVolumeWithCurrentMode() { + let controlSystem = UserDefaults.standard.bool(forKey: "controlSystemVolume") + if controlSystem { + self.volume = AVAudioSession.sharedInstance().outputVolume + audioPlayer?.volume = 1.0 + } else { + if let player = audioPlayer { + self.volume = player.volume + } + } + } + + private func setSystemVolume(_ value: Float) { + let slider = systemVolumeView.subviews.first(where: { $0 is UISlider }) as? UISlider + DispatchQueue.main.async { + slider?.value = value + } + } + + private func setupVolumeObservation() { + NotificationCenter.default.publisher(for: NSNotification.Name("AVSystemController_SystemVolumeDidChangeNotification")) + .sink { [weak self] notification in + guard let self = self else { return } + if UserDefaults.standard.bool(forKey: "controlSystemVolume") { + if let volumeValue = notification.userInfo?["AVSystemController_AudioVolumeNotificationParameter"] as? Float { + DispatchQueue.main.async { + self.volume = volumeValue + } + } + } + } + .store(in: &cancellables) + } + + func applyEQChanges() { + audioPlayer?.updateEQSettings() + } +} + +// MARK: - Вертикальный ползунок эквалайзера в стиле аудио-консоли +struct VerticalSlider: View { + @Binding var value: Double + var range: ClosedRange = -12...12 + let label: String + + var body: some View { + VStack(spacing: 8) { + Text(String(format: "%+.1f", value)) + .font(.system(size: 10, weight: .bold, design: .monospaced)) + .foregroundColor(.gray) + .frame(width: 48) + + GeometryReader { geo in + let height = geo.size.height + let pct = CGFloat((value - range.lowerBound) / (range.upperBound - range.lowerBound)) + + ZStack(alignment: .bottom) { + Capsule() + .fill(Color.primary.opacity(0.1)) + .frame(width: 6) + + Capsule() + .fill(Color.red) + .frame(width: 6, height: max(0, min(height, height * pct))) + + Circle() + .fill(Color.white) + .frame(width: 18, height: 18) + .shadow(color: Color.black.opacity(0.25), radius: 2) + .offset(y: -height * pct + 9) + } + .frame(maxWidth: .infinity) + .contentShape(Rectangle()) + .padding(.vertical, 9) + .animation(.interactiveSpring(response: 0.35, dampingFraction: 0.75), value: value) + .gesture( + DragGesture(minimumDistance: 0) + .onChanged { gesture in + let touchY = gesture.location.y + let percent = 1 - min(max(touchY / height, 0), 1) + value = Double(percent) * (range.upperBound - range.lowerBound) + range.lowerBound + } + ) + } + .frame(height: 140) + + Text(label) + .font(.system(size: 10, weight: .bold, design: .rounded)) + .foregroundColor(.primary) + } + .frame(width: 44) + } +} + +// MARK: - Экран настройки эквалайзера +struct EqualizerSettingsView: View { + @AppStorage("eq_enabled") private var isEqEnabled: Bool = false + @AppStorage("selected_eq_preset") private var selectedPresetName: String = "Обычный (Flat)" + @AppStorage("appTheme") private var appTheme: AppTheme = .system + + @AppStorage("eq_band_0") private var band0: Double = 0.0 + @AppStorage("eq_band_1") private var band1: Double = 0.0 + @AppStorage("eq_band_2") private var band2: Double = 0.0 + @AppStorage("eq_band_3") private var band3: Double = 0.0 + @AppStorage("eq_band_4") private var band4: Double = 0.0 + @AppStorage("eq_band_5") private var band5: Double = 0.0 + @AppStorage("eq_band_6") private var band6: Double = 0.0 + @AppStorage("eq_band_7") private var band7: Double = 0.0 + @AppStorage("eq_band_8") private var band8: Double = 0.0 + @AppStorage("eq_band_9") private var band9: Double = 0.0 + + private let frequencies = ["32Гц", "64Гц", "125Гц", "250Гц", "500Гц", "1кГц", "2кГц", "4кГц", "8кГц", "16кГц"] + + private func bandBinding(for index: Int) -> Binding { + Binding( + get: { + switch index { + case 0: return band0; case 1: return band1; case 2: return band2 + case 3: return band3; case 4: return band4; case 5: return band5 + case 6: return band6; case 7: return band7; case 8: return band8 + case 9: return band9; default: return 0.0 + } + }, + set: { newValue in + switch index { + case 0: band0 = newValue; case 1: band1 = newValue; case 2: band2 = newValue + case 3: band3 = newValue; case 4: band4 = newValue; case 5: band5 = newValue + case 6: band6 = newValue; case 7: band7 = newValue; case 8: band8 = newValue + case 9: band9 = newValue; default: break + } + selectedPresetName = "Вручную" + MusicManager.shared.applyEQChanges() + } + ) + } + + var body: some View { + Form { + Section { + Toggle("Включить эквалайзер", isOn: $isEqEnabled) + .onChange(of: isEqEnabled) { _ in + MusicManager.shared.applyEQChanges() + } + } + + if isEqEnabled { + Section(header: Text("Параметрические полосы")) { + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 8) { + ForEach(0..<10, id: \.self) { index in + VerticalSlider(value: bandBinding(for: index), label: frequencies[index]) + } + } + .padding(.vertical, 10) + } + } + + Section(header: Text("Популярные пресеты")) { + List { + ForEach(eqPresets) { preset in + HStack { + Text(preset.name) + .font(.body) + .foregroundColor(.primary) + Spacer() + if selectedPresetName == preset.name { + Image(systemName: "checkmark") + .foregroundColor(.red) + .font(.subheadline.bold()) + } + } + .contentShape(Rectangle()) + .onTapGesture { + applyPreset(preset) + } + } + } + } + } + } + .navigationTitle("Эквалайзер") + .navigationBarTitleDisplayMode(.inline) + .preferredColorScheme(appTheme.colorScheme) + } + + private func applyPreset(_ preset: EQPreset) { + withAnimation { + selectedPresetName = preset.name + band0 = preset.gains[0]; band1 = preset.gains[1]; band2 = preset.gains[2] + band3 = preset.gains[3]; band4 = preset.gains[4]; band5 = preset.gains[5] + band6 = preset.gains[6]; band7 = preset.gains[7]; band8 = preset.gains[8] + band9 = preset.gains[9] + } + MusicManager.shared.applyEQChanges() + } +} + +// MARK: - Синхронизированный просмотр текста +struct LyricsView: View { + let lyrics: [LyricLine] + let currentTime: TimeInterval + var isImmersive: Bool = false + var onSeek: ((TimeInterval) -> Void)? = nil + var onScroll: (() -> Void)? = nil + var onTap: (() -> Void)? = nil + + @AppStorage("lyricsFontSize") private var lyricsFontSize: Double = 34.0 + @AppStorage("karaokeModeEnabled") private var karaokeModeEnabled: Bool = true + + @State private var isUserScrolling = false + @State private var resetTask: DispatchWorkItem? = nil + + private var activeIndex: Int? { + guard lyrics.contains(where: { $0.time >= 0 }) else { return nil } + var result: Int? = nil + for (i, line) in lyrics.enumerated() where line.time >= 0 && line.time <= currentTime { + result = i + } + return result + } + + private var displayIndex: Int? { isUserScrolling ? nil : activeIndex } + + private func opacity(for i: Int) -> Double { + guard let cur = displayIndex else { return 0.65 } + switch abs(i - cur) { + case 0: return 1.0 + case 1: return 0.5 + case 2: return 0.3 + default: return 0.15 + } + } + + private func blurRadius(for i: Int) -> CGFloat { + guard let cur = displayIndex else { return 0 } + switch abs(i - cur) { + case 0: return 0 + case 1: return 0.8 + case 2: return 1.5 + default: return 2.2 + } + } + + private func scale(for i: Int) -> CGFloat { + guard let cur = displayIndex else { return 1 } + switch abs(i - cur) { + case 0: return 1.08 + default: return 1.0 + } + } + + private func progress(for index: Int) -> Double { + let currentLineTime = lyrics[index].time + let nextLineTime: Double + + if index + 1 < lyrics.count, lyrics[index + 1].time >= 0 { + nextLineTime = lyrics[index + 1].time + } else { + nextLineTime = currentLineTime + 8.0 + } + + let duration = min(nextLineTime - currentLineTime, 8.0) + guard duration > 0 else { return 1.0 } + + let p = (currentTime - currentLineTime) / duration + return max(0, p) + } + + private func karaokeText(for line: String, progress: Double, isActiveLine: Bool) -> Text { + guard isActiveLine && karaokeModeEnabled else { + return Text(line).foregroundColor(.primary) + } + + let chars = Array(line) + let total = Double(max(1, chars.count)) + var result = Text("") + + for (index, char) in chars.enumerated() { + let start = Double(index) / total + let end = Double(index + 1) / total + + let opacity: Double + if progress <= start { + opacity = 0.35 + } else if progress >= end { + opacity = 1.0 + } else { + let fillRatio = (progress - start) / (end - start) + opacity = 0.35 + (0.65 * fillRatio) + } + + result = result + Text(String(char)).foregroundColor(Color.primary.opacity(opacity)) + } + return result + } + + private func karaokeGlowText(for line: String, progress: Double) -> Text { + let chars = Array(line) + let total = Double(max(1, chars.count)) + var result = Text("") + + for (index, char) in chars.enumerated() { + let start = Double(index) / total + let end = Double(index + 1) / total + let center = (start + end) / 2.0 + + let glowSpread = max(0.15, 2.5 / total) + let distance = abs(progress - center) + let opacity: Double = distance < glowSpread ? 1.0 - (distance / glowSpread) : 0.0 + + result = result + Text(String(char)).foregroundColor(Color.primary.opacity(opacity)) + } + return result + } + + private func scheduleReset() { + resetTask?.cancel() + let task = DispatchWorkItem { + withAnimation(.easeInOut(duration: 0.4)) { isUserScrolling = false } + } + resetTask = task + DispatchQueue.main.asyncAfter(deadline: .now() + 2.5, execute: task) + } + + var body: some View { + GeometryReader { geo in + ScrollViewReader { proxy in + ScrollView(showsIndicators: false) { + LazyVStack(spacing: 24) { + ForEach(Array(lyrics.enumerated()), id: \.element.id) { i, line in + let isActive = displayIndex == i + let currentProgress = progress(for: i) + + ZStack { + karaokeText(for: line.text, progress: currentProgress, isActiveLine: isActive) + + if isActive && karaokeModeEnabled { + karaokeGlowText(for: line.text, progress: currentProgress) + .blur(radius: 7) + .opacity(0.85) + .scaleEffect(1.02) + } + } + .font(.system(size: CGFloat(lyricsFontSize), weight: .heavy, design: .rounded)) + .lineSpacing(4) + .multilineTextAlignment(.leading) + .padding(.horizontal, 30) + .opacity(opacity(for: i)) + .blur(radius: blurRadius(for: i)) + .scaleEffect(scale(for: i), anchor: .leading) + .frame(maxWidth: .infinity, alignment: .leading) + .id(line.id) + .animation(.spring(response: 0.38, dampingFraction: 0.78), value: displayIndex) + .onTapGesture { + guard line.time >= 0 else { + onTap?() + return + } + onSeek?(line.time) + onTap?() + resetTask?.cancel() + withAnimation(.easeInOut(duration: 0.3)) { isUserScrolling = false } + } + } + } + .padding(.vertical, geo.size.height * 0.4) // Динамический отступ вместо статичного + .frame(maxWidth: .infinity) + } + .background(Color.clear.contentShape(Rectangle()).onTapGesture { onTap?() }) + .simultaneousGesture( + DragGesture(minimumDistance: 8) + .onChanged { _ in + onScroll?() + resetTask?.cancel() + if !isUserScrolling { + withAnimation(.easeInOut(duration: 0.25)) { isUserScrolling = true } + } + } + .onEnded { _ in + onScroll?() + scheduleReset() + } + ) + .onChange(of: activeIndex) { newIndex in + guard !isUserScrolling, let idx = newIndex, lyrics.indices.contains(idx) else { return } + withAnimation(.spring(response: 0.6, dampingFraction: 0.8)) { + proxy.scrollTo(lyrics[idx].id, anchor: .center) + } + } + .onChange(of: isUserScrolling) { scrolling in + guard !scrolling, let idx = activeIndex, lyrics.indices.contains(idx) else { return } + withAnimation(.spring(response: 0.6, dampingFraction: 0.8)) { + proxy.scrollTo(lyrics[idx].id, anchor: .center) + } + } + } + } + } +} + +// MARK: - Редактор текста +struct LyricsEditorView: View { + @Environment(\.dismiss) var dismiss + @AppStorage("appTheme") private var appTheme: AppTheme = .system + @ObservedObject var lyricsManager = LyricsManager.shared + + let trackURL: URL + let trackTitle: String + let trackArtist: String + + @State private var editorText: String = "" + @State private var showLRCPicker = false + @State private var showDeleteAlert = false + @State private var importBanner: String? = nil + @State private var isFetchingOnline = false + + init(trackURL: URL, trackTitle: String, trackArtist: String) { + self.trackURL = trackURL + self.trackTitle = trackTitle + self.trackArtist = trackArtist + UITextView.appearance().backgroundColor = .clear + } + + var body: some View { + NavigationView { + VStack(spacing: 0) { + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 10) { + Button(action: fetchOnline) { + if isFetchingOnline { + ProgressView() + .progressViewStyle(CircularProgressViewStyle(tint: .white)) + .frame(width: 20, height: 20) + } else { + Label("Найти в сети", systemImage: "network") + } + } + .font(.subheadline.weight(.medium)) + .foregroundColor(.white) + .padding(.horizontal, 14).padding(.vertical, 8) + .background(Color.blue) + .cornerRadius(10) + .disabled(isFetchingOnline) + + Button(action: { showLRCPicker = true }) { + Label("Импорт LRC", systemImage: "doc.badge.plus") + .font(.subheadline.weight(.medium)) + .foregroundColor(.white) + .padding(.horizontal, 14).padding(.vertical, 8) + .background(Color.red) + .cornerRadius(10) + } + + if !editorText.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { + Button(action: { showDeleteAlert = true }) { + Image(systemName: "trash") + .foregroundColor(.white) + .padding(9) + .background(Color.gray.opacity(0.5)) + .cornerRadius(10) + } + } + Spacer() + if editorText.contains("[") && editorText.contains(":") { + Label("LRC", systemImage: "timer") + .font(.caption.weight(.semibold)) + .foregroundColor(.orange) + .padding(.horizontal, 8).padding(.vertical, 4) + .background(Color.orange.opacity(0.12)) + .cornerRadius(6) + } + } + .padding(.horizontal) + } + .padding(.vertical, 12) + + if let banner = importBanner { + HStack(spacing: 6) { + Image(systemName: "info.circle.fill").foregroundColor(.blue) + Text(banner).font(.caption).foregroundColor(.blue) + Spacer() + } + .padding(.horizontal).padding(.bottom, 8) + .transition(.opacity) + } + + Divider() + + ZStack(alignment: .topLeading) { + if editorText.isEmpty { + Text("Введите текст песни вручную, или вставьте LRC-содержимое с временными метками вида [01:23.45]…") + .foregroundColor(.gray.opacity(0.6)) + .font(.body) + .padding(.horizontal, 18).padding(.top, 14) + } + TextEditor(text: $editorText) + .font(.body) + .padding(.horizontal, 12).padding(.top, 6) + .background(Color.clear) + } + .background(Color(UIColor.systemBackground)) + } + .navigationTitle(trackTitle) + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .navigationBarLeading) { + Button("Отмена") { dismiss() } + } + ToolbarItem(placement: .navigationBarTrailing) { + Button(action: saveAndDismiss) { + Text("Сохранить").fontWeight(.bold) + } + } + } + .alert("Очистить текст?", isPresented: $showDeleteAlert) { + Button("Отмена", role: .cancel) {} + Button("Очистить", role: .destructive) { + editorText = "" + lyricsManager.deleteLyrics(for: trackURL) + } + } + .fileImporter( + isPresented: $showLRCPicker, + allowedContentTypes: [UTType(filenameExtension: "lrc") ?? .plainText], + allowsMultipleSelection: false + ) { result in + importLRCFile(result: result) + } + } + .onAppear { + let lines = lyricsManager.lyrics(for: trackURL) + editorText = lines.isEmpty ? "" : lyricsManager.lrcText(for: lines) + } + .preferredColorScheme(appTheme.colorScheme) + } + + private func saveAndDismiss() { + let trimmed = editorText.trimmingCharacters(in: .whitespacesAndNewlines) + if trimmed.isEmpty { + lyricsManager.deleteLyrics(for: trackURL) + } else if trimmed.contains("[") { + let parsed = lyricsManager.parseLRC(trimmed) + if parsed.contains(where: { $0.time >= 0 }) { + lyricsManager.setLyrics(parsed, for: trackURL) + } else { + savePlainText(trimmed) + } + } else { + savePlainText(trimmed) + } + dismiss() + } + + private func savePlainText(_ text: String) { + let lines = text.components(separatedBy: "\n") + .map { LyricLine(time: -1, text: $0) } + lyricsManager.setLyrics(lines, for: trackURL) + } + + private func importLRCFile(result: Result<[URL], Error>) { + guard case .success(let urls) = result, let url = urls.first else { return } + let accessing = url.startAccessingSecurityScopedResource() + defer { if accessing { url.stopAccessingSecurityScopedResource() } } + guard let content = try? String(contentsOf: url, encoding: .utf8) else { return } + let lines = lyricsManager.parseLRC(content) + lyricsManager.setLyrics(lines, for: trackURL) + editorText = lyricsManager.lrcText(for: lines) + withAnimation { importBanner = "Импортирован: \(url.lastPathComponent)" } + DispatchQueue.main.asyncAfter(deadline: .now() + 3) { + withAnimation { importBanner = nil } + } + } + + private func fetchOnline() { + isFetchingOnline = true + Task { + let foundLyrics = await lyricsManager.fetchLyricsFromLRCLib(title: trackTitle, artist: trackArtist) + + await MainActor.run { + isFetchingOnline = false + if let newText = foundLyrics, !newText.isEmpty { + editorText = newText + withAnimation { importBanner = "Текст успешно загружен!" } + } else { + withAnimation { importBanner = "К сожалению, ничего не найдено 😔" } + } + + DispatchQueue.main.asyncAfter(deadline: .now() + 3.5) { + withAnimation { importBanner = nil } + } + } + } + } +} + +// MARK: - Редактор метаданных трека +struct MetadataEditorView: View { + @Environment(\.dismiss) var dismiss + @AppStorage("appTheme") private var appTheme: AppTheme = .system + @ObservedObject var manager = MusicManager.shared + @ObservedObject var metadataManager = TrackMetadataManager.shared + @ObservedObject var artworkManager = ArtworkManager.shared + + let trackURL: URL + + @State private var editedTitle: String = "" + @State private var editedArtist: String = "" + @State private var previewArtwork: UIImage? = nil + @State private var showResetAlert = false + @State private var showImagePicker = false + + private var isSaveDisabled: Bool { + editedTitle.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty + } + + var body: some View { + NavigationView { + Form { + Section(header: Text("Обложка")) { + HStack(spacing: 16) { + ZStack { + RoundedRectangle(cornerRadius: 8).fill(Color.secondary.opacity(0.15)) + if let image = previewArtwork { + Image(uiImage: image) + .resizable() + .aspectRatio(contentMode: .fill) + } else { + Image(systemName: "music.note") + .foregroundColor(.secondary) + } + } + .frame(width: 60, height: 60) + .clipShape(RoundedRectangle(cornerRadius: 8)) + .clipped() + + VStack(alignment: .leading, spacing: 10) { + Button(action: { showImagePicker = true }) { + Label("Выбрать из галереи", systemImage: "photo") + } + if artworkManager.hasCustomArtwork(for: trackURL) { + Button(role: .destructive, action: removeArtwork) { + Label("Удалить обложку", systemImage: "trash") + } + } + } + .font(.subheadline) + Spacer() + } + } + + Section(header: Text("Метаданные трека")) { + TextField("Название", text: $editedTitle) + TextField("Исполнитель", text: $editedArtist) + } + + Section(header: Text("Файл")) { + InfoRow(title: "Имя файла", value: trackURL.lastPathComponent) + InfoRow(title: "Формат", value: trackURL.pathExtension.uppercased()) + } + + if metadataManager.hasOverride(for: trackURL) { + Section { + Button(role: .destructive, action: { showResetAlert = true }) { + Label("Сбросить к оригинальным данным", systemImage: "arrow.counterclockwise") + } + } + } + } + .navigationTitle("Редактировать метаданные") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .navigationBarLeading) { + Button("Отмена") { dismiss() } + } + ToolbarItem(placement: .navigationBarTrailing) { + Button(action: saveAndDismiss) { + Text("Сохранить").fontWeight(.bold) + } + .disabled(isSaveDisabled) + } + } + .alert("Сбросить метаданные?", isPresented: $showResetAlert) { + Button("Отмена", role: .cancel) {} + Button("Сбросить", role: .destructive) { + manager.resetMetadata(for: trackURL) + let original = manager.originalMetadata(for: trackURL) + editedTitle = original.title + editedArtist = original.artist + dismiss() + } + } message: { + Text("Название и исполнитель вернутся к значениям, прочитанным из файла.") + } + .sheet(isPresented: $showImagePicker) { + ImagePicker { image in + previewArtwork = image + manager.updateArtwork(image, for: trackURL) + } + } + } + .onAppear { + if let override = metadataManager.override(for: trackURL) { + editedTitle = override.title + editedArtist = override.artist + } else { + let original = manager.originalMetadata(for: trackURL) + editedTitle = original.title + editedArtist = original.artist + } + loadPreviewArtwork() + } + .preferredColorScheme(appTheme.colorScheme) + } + + private func saveAndDismiss() { + manager.updateMetadata(title: editedTitle, artist: editedArtist, for: trackURL) + dismiss() + } + + private func removeArtwork() { + manager.removeCustomArtwork(for: trackURL) + loadPreviewArtwork() + } + + private func loadPreviewArtwork() { + if let custom = artworkManager.artwork(for: trackURL) { + previewArtwork = custom + return + } + previewArtwork = nil + DispatchQueue.global(qos: .userInitiated).async { + let asset = AVAsset(url: trackURL) + for item in asset.metadata where item.commonKey == .commonKeyArtwork { + if let data = item.dataValue, let img = UIImage(data: data) { + DispatchQueue.main.async { self.previewArtwork = img } + return + } + } + } + } +} + +struct TrackRow: View { + let track: Track + let isCurrent: Bool + let isPlaying: Bool + @State private var artwork: UIImage? + @ObservedObject private var lyricsManager = LyricsManager.shared + + var body: some View { + HStack(spacing: 16) { + ZStack { + RoundedRectangle(cornerRadius: 8).fill(Color.secondary.opacity(0.15)) + if let image = artwork { + Image(uiImage: image).resizable().aspectRatio(contentMode: .fill) + } else { + Image(systemName: "music.note").foregroundColor(.gray).font(.system(size: 18)) + } + if lyricsManager.hasLyrics(for: track.url) { + VStack { + HStack { + Spacer() + Image(systemName: "quote.bubble.fill") + .font(.system(size: 8, weight: .bold)) + .foregroundColor(.white) + .padding(4) + .background(Color.black.opacity(0.6)) + .clipShape(Circle()) + } + Spacer() + } + .padding(3) + } + } + .frame(width: 50, height: 50).cornerRadius(8).clipped() + .shadow(color: Color.black.opacity(0.1), radius: 3, y: 2) + + VStack(alignment: .leading, spacing: 3) { + Text(track.title) + .font(.system(size: 16, weight: isCurrent ? .semibold : .regular)) + .foregroundColor(isCurrent ? .red : .primary) + .lineLimit(1) + Text(track.artist) + .font(.system(size: 14)) + .foregroundColor(.secondary) + .lineLimit(1) + } + Spacer() + if isCurrent && isPlaying { + Image(systemName: "waveform").foregroundColor(.red) + } + } + .padding(.vertical, 4) + .onAppear { + if let custom = ArtworkManager.shared.artwork(for: track.url) { + self.artwork = custom + return + } + DispatchQueue.global(qos: .userInteractive).async { + let asset = AVAsset(url: track.url) + for item in asset.metadata where item.commonKey == .commonKeyArtwork { + if let data = item.dataValue, let img = UIImage(data: data) { + DispatchQueue.main.async { self.artwork = img } + } + } + } + } + } +} + + +struct MiniPlayer: View { + @ObservedObject var manager = MusicManager.shared + @Binding var showFullPlayer: Bool + + var body: some View { + VStack(spacing: 0) { + Divider().background(Color.primary.opacity(0.1)) + HStack(spacing: 14) { + ZStack { + if let image = manager.currentArtwork { + Image(uiImage: image).resizable().aspectRatio(contentMode: .fill) + } else { + Color.primary.opacity(0.1) + Image(systemName: "music.note").foregroundColor(.gray) + } + } + .frame(width: 48, height: 48).cornerRadius(6).clipped() + .shadow(color: manager.gradientColors.first?.opacity(0.4) ?? .black.opacity(0.2), radius: 5, y: 3) + + VStack(alignment: .leading, spacing: 2) { + Text(manager.currentTitle) + .font(.system(size: 15, weight: .semibold, design: .rounded)) + .lineLimit(1) + Text(manager.currentArtist) + .font(.system(size: 13, weight: .regular)) + .foregroundColor(.secondary) + .lineLimit(1) + } + Spacer() + HStack(spacing: 20) { + Button(action: manager.playPause) { + Image(systemName: manager.isPlaying ? "pause.fill" : "play.fill") + .font(.system(size: 22)) + } + Button(action: manager.nextTrack) { + Image(systemName: "forward.fill") + .font(.system(size: 22)) + } + } + .foregroundColor(.primary) + } + .padding(.horizontal, 20).frame(height: 64) + .padding(.bottom, 8) + } + .background(BlurView(style: .systemChromeMaterial).ignoresSafeArea(edges: .bottom)) + .onTapGesture { showFullPlayer = true } + } +} + +struct ImmersiveBottomBar: View { + @ObservedObject var manager: MusicManager + + var body: some View { + HStack(spacing: 14) { + if let image = manager.currentArtwork { + Image(uiImage: image).resizable().aspectRatio(contentMode: .fill) + .frame(width: 48, height: 48).cornerRadius(6) + } else { + RoundedRectangle(cornerRadius: 6).fill(Color.white.opacity(0.2)) + .frame(width: 48, height: 48) + .overlay(Image(systemName: "music.note").foregroundColor(.white.opacity(0.5))) + } + + VStack(alignment: .leading, spacing: 2) { + Text(manager.currentTitle) + .font(.system(size: 16, weight: .bold)) + .foregroundColor(.white) + .lineLimit(1) + Text(manager.currentArtist) + .font(.system(size: 14)) + .foregroundColor(.white.opacity(0.7)) + .lineLimit(1) + } + + Spacer() + + Button(action: manager.playPause) { + Image(systemName: manager.isPlaying ? "pause.circle.fill" : "play.circle.fill") + .font(.system(size: 38)) + .foregroundColor(.white) + } + } + .padding(.horizontal, 20) + .padding(.vertical, 14) + .background(Color.black.opacity(0.4).edgesIgnoringSafeArea(.bottom)) + .background(BlurView(style: .systemMaterialDark).edgesIgnoringSafeArea(.bottom)) + } +} + +// MARK: - Главный экран +struct ContentView: View { + @StateObject var manager = MusicManager.shared + @AppStorage("appTheme") private var appTheme: AppTheme = .system + + @State private var showFilePicker = false + @State private var showFullPlayer = false + @State private var showSettings = false + @State private var searchText = "" + + @State private var shareURL: URL? + + @State private var isFetchingMassLyrics = false + @State private var processedTracksCount = 0 + @State private var totalTracksToFetch = 0 + @State private var foundLyricsCount = 0 + @State private var showMassFetchResult = false + + var body: some View { + ZStack(alignment: .bottom) { + NavigationView { + ZStack { + Color(UIColor.systemBackground).ignoresSafeArea() + + if manager.tracks.isEmpty { + ZStack { + VStack(spacing: 16) { + Image(systemName: "music.note.list") + .font(.system(size: 70, weight: .light)) + .foregroundColor(.secondary) + Text("Медиатека пуста") + .font(.title2.weight(.semibold)) + .foregroundColor(.primary) + Text("Добавьте музыку, нажав на '+'") + .font(.subheadline) + .foregroundColor(.secondary) + } + + VStack { + Spacer() + Text("by aswer.") + .font(.system(size: 10, weight: .regular, design: .rounded)) + .foregroundColor(.secondary.opacity(0.4)) + .padding(.bottom, 20) + } + } + } else { + List { + ForEach(manager.tracks.filter { track in + if searchText.isEmpty { return true } + let matchTitle = track.title.localizedCaseInsensitiveContains(searchText) + let matchArtist = track.artist.localizedCaseInsensitiveContains(searchText) + return matchTitle || matchArtist + }, id: \.self) { track in + TrackRow(track: track, isCurrent: manager.audioPlayer?.url == track.url, isPlaying: manager.isPlaying) + .contentShape(Rectangle()) + .onTapGesture { + manager.shuffleOn = false + if let i = manager.tracks.firstIndex(of: track) { manager.playTrack(at: i, in: manager.tracks) } + } + .contextMenu { + Button(action: { shareURL = track.url }) { Label("Поделиться", systemImage: "square.and.arrow.up") } + Button(role: .destructive, action: { manager.deleteTrack(track: track) }) { Label("Удалить", systemImage: "trash") } + } + .swipeActions(edge: .trailing, allowsFullSwipe: false) { + Button(role: .destructive) { manager.deleteTrack(track: track) } label: { Label("Удалить", systemImage: "trash") } + Button { shareURL = track.url } label: { Label("Поделиться", systemImage: "square.and.arrow.up") }.tint(.blue) + } + .listRowBackground(Color.clear) + .listRowInsets(EdgeInsets(top: 4, leading: 20, bottom: 4, trailing: 20)) + .listRowSeparator(.visible) + } + .onDelete(perform: manager.deleteTrack) + + Color.clear + .frame(height: 85) + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + + Text("by aswer.") + .font(.system(size: 10, weight: .regular, design: .rounded)) + .foregroundColor(.secondary.opacity(0.4)) + .frame(maxWidth: .infinity, alignment: .center) + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + .padding(.bottom, 20) + } + .listStyle(.plain) + .disabled(isFetchingMassLyrics) + } + + if isFetchingMassLyrics { + ZStack { + Color.black.opacity(0.4).ignoresSafeArea() + BlurView(style: .systemThinMaterialDark).ignoresSafeArea() + + VStack(spacing: 24) { + ProgressView() + .scaleEffect(1.8) + .progressViewStyle(CircularProgressViewStyle(tint: .white)) + + VStack(spacing: 8) { + Text("Ищем тексты...") + .font(.headline) + .foregroundColor(.white) + + Text("\(processedTracksCount) из \(totalTracksToFetch)") + .font(.subheadline) + .foregroundColor(.white.opacity(0.7)) + } + } + .padding(40) + .background(Color(UIColor.secondarySystemBackground).opacity(0.15)) + .cornerRadius(24) + } + .zIndex(100) + } + } + .navigationTitle("Медиатека") + .searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always)) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + HStack(spacing: 16) { + Button(action: { showFilePicker = true }) { + Image(systemName: "plus.circle.fill") + .foregroundColor(.red) + .font(.title3) + } + + Menu { + Button(action: fetchLyricsForAll) { + Label("Найти тексты для всех", systemImage: "text.magnifyingglass") + } + Button(action: { showSettings = true }) { + Label("Настройки", systemImage: "gearshape") + } + } label: { + Image(systemName: "ellipsis.circle.fill") + .foregroundColor(.red) + .font(.title3) + } + } + } + } + .alert("Результаты поиска", isPresented: $showMassFetchResult) { + Button("Завершить поиск", role: .cancel) { } + } message: { + if totalTracksToFetch == 0 { + Text("Для всех твоих треков тексты уже есть.") + } else { + Text("Обработано треков: \(totalTracksToFetch)\nУспешно найдено: \(foundLyricsCount)\nНе найдено : \(totalTracksToFetch - foundLyricsCount)") + } + } + } + .navigationViewStyle(StackNavigationViewStyle()) + + if !manager.tracks.isEmpty { MiniPlayer(showFullPlayer: $showFullPlayer) } + } + .preferredColorScheme(appTheme.colorScheme) + .fullScreenCover(isPresented: $showFullPlayer) { FullPlayerView() } + .sheet(isPresented: $showSettings) { SettingsView() } + .sheet(item: $shareURL) { url in + ActivityViewController(activityItems: [url]) + } + .fileImporter( + isPresented: $showFilePicker, + allowedContentTypes: [.audio, UTType(filenameExtension: "lrc") ?? .plainText], + allowsMultipleSelection: true + ) { res in + if case .success(let urls) = res { manager.importTracks(from: urls) } + } + } + + private func fetchLyricsForAll() { + let tracksToProcess = manager.tracks.filter { !LyricsManager.shared.hasLyrics(for: $0.url) } + + guard !tracksToProcess.isEmpty else { + totalTracksToFetch = 0 + foundLyricsCount = 0 + showMassFetchResult = true + return + } + + isFetchingMassLyrics = true + totalTracksToFetch = tracksToProcess.count + processedTracksCount = 0 + foundLyricsCount = 0 + + Task { + for track in tracksToProcess { + let foundLyrics = await LyricsManager.shared.fetchLyricsFromLRCLib(title: track.title, artist: track.artist) + + if let newText = foundLyrics, !newText.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { + let trimmed = newText.trimmingCharacters(in: .whitespacesAndNewlines) + + if trimmed.contains("[") { + let parsed = LyricsManager.shared.parseLRC(trimmed) + if parsed.contains(where: { $0.time >= 0 }) { + LyricsManager.shared.setLyrics(parsed, for: track.url) + } else { + let lines = trimmed.components(separatedBy: "\n").map { LyricLine(time: -1, text: $0) } + LyricsManager.shared.setLyrics(lines, for: track.url) + } + } else { + let lines = trimmed.components(separatedBy: "\n").map { LyricLine(time: -1, text: $0) } + LyricsManager.shared.setLyrics(lines, for: track.url) + } + + await MainActor.run { foundLyricsCount += 1 } + } + + await MainActor.run { processedTracksCount += 1 } + } + + await MainActor.run { + isFetchingMassLyrics = false + showMassFetchResult = true + } + } + } +} + +extension URL: Identifiable { + public var id: String { self.absoluteString } +} + +// MARK: - Окно настроек +struct SettingsView: View { + @AppStorage("appTheme") private var appTheme: AppTheme = .system + @AppStorage("controlSystemVolume") private var controlSystemVolume: Bool = false + + @AppStorage("eq_enabled") private var isEqEnabled: Bool = false + @AppStorage("selected_eq_preset") private var selectedPresetName: String = "Обычный (Flat)" + + @AppStorage("karaokeModeEnabled") private var karaokeModeEnabled: Bool = true + @AppStorage("autoImmersiveLyricsEnabled") private var autoImmersiveLyricsEnabled: Bool = true + @AppStorage("autoImmersiveLyricsTimeout") private var autoImmersiveLyricsTimeout: Double = 3.0 + @AppStorage("lyricsFontSize") private var lyricsFontSize: Double = 34.0 + + @AppStorage("useSimpleBackground") private var useSimpleBackground: Bool = false + + @Environment(\.dismiss) var dismiss + @State private var showingClearAlert = false + @ObservedObject var manager = MusicManager.shared + + var body: some View { + NavigationView { + Form { + Section(header: Text("Внешний вид")) { + Picker("Тема оформления", selection: $appTheme) { + ForEach(AppTheme.allCases, id: \.self) { theme in + Text(theme.title).tag(theme) + } + } + .pickerStyle(SegmentedPickerStyle()) + + Toggle(isOn: $useSimpleBackground) { + VStack(alignment: .leading, spacing: 4) { + Text("Упрощенный фон плеера") + Text("Отключает тяжелую анимацию и показывает статичную размытую обложку") + .font(.caption) + .foregroundColor(.gray) + } + } + } + + Section(header: Text("Звуковые эффекты")) { + NavigationLink(destination: EqualizerSettingsView()) { + HStack { + Label("Эквалайзер", systemImage: "slider.horizontal.3") + .foregroundColor(.red) + Spacer() + Text(isEqEnabled ? selectedPresetName : "Выкл.") + .foregroundColor(.gray) + } + } + } + + Section(header: Text("Текст песни")) { + Toggle("Караоке-режим", isOn: $karaokeModeEnabled) + Toggle("Иммерсивный режим", isOn: $autoImmersiveLyricsEnabled) + if autoImmersiveLyricsEnabled { + VStack(alignment: .leading, spacing: 6) { + Text("Задержка включения: \(Int(autoImmersiveLyricsTimeout)) сек.") + .font(.body) + Slider(value: $autoImmersiveLyricsTimeout, in: 1...15, step: 1) + .accentColor(.red) + Text("Через какое время бездействия скрывать плеер и оставлять только текст") + .font(.caption) + .foregroundColor(.gray) + } + .padding(.vertical, 4) + } + + VStack(alignment: .leading, spacing: 6) { + Text("Размер шрифта: \(Int(lyricsFontSize)) пт") + .font(.body) + Slider(value: $lyricsFontSize, in: 18...48, step: 2) + .accentColor(.red) + Text("Настройте размер отображаемого текста на экране воспроизведения") + .font(.caption) + .foregroundColor(.gray) + } + .padding(.vertical, 4) + } + + Section(header: Text("Громкость")) { + Toggle(isOn: $controlSystemVolume) { + VStack(alignment: .leading, spacing: 4) { + Text("Системная громкость iPhone") + Text("Управлять общей громкостью устройства вместо громкости внутри плеера") + .font(.caption) + .foregroundColor(.gray) + } + } + .onChange(of: controlSystemVolume) { _ in + manager.syncVolumeWithCurrentMode() + } + } + + Section(header: Text("Управление")) { + Button(role: .destructive, action: { + showingClearAlert = true + }) { + Text("Очистить медиатеку") + } + } + } + .navigationTitle("Настройки") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + Button("Готово") { dismiss() } + } + } + .alert("Очистить медиатеку?", isPresented: $showingClearAlert) { + Button("Отмена", role: .cancel) { } + Button("Удалить", role: .destructive) { + manager.deleteAllTracks() + dismiss() + } + } message: { + Text("Вы точно хотите удалить все треки? Это действие нельзя отменить.") + } + } + .preferredColorScheme(appTheme.colorScheme) + } +} + +// MARK: - Извлечение доминирующих цветов из обложки +extension UIImage { + func extractGradientColors() -> [Color] { + let side = 16 + var raw = [UInt8](repeating: 0, count: side * side * 4) + guard let ctx = CGContext( + data: &raw, + width: side, height: side, + bitsPerComponent: 8, + bytesPerRow: side * 4, + space: CGColorSpaceCreateDeviceRGB(), + bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue + ), let cgImg = self.cgImage else { + return [Color(red: 0.1, green: 0.1, blue: 0.2), Color(red: 0.2, green: 0.1, blue: 0.3)] + } + ctx.draw(cgImg, in: CGRect(x: 0, y: 0, width: side, height: side)) + + let pts: [(Int,Int)] = [ + (1,1), (14,1), (7,7), (1,14), (14,14), (7,1), (7,14) + ] + return pts.map { (x, y) in + let off = (y * side + x) * 4 + let r = CGFloat(raw[off]) / 255 + let g = CGFloat(raw[off+1]) / 255 + let b = CGFloat(raw[off+2]) / 255 + var h: CGFloat = 0, s: CGFloat = 0, br: CGFloat = 0, a: CGFloat = 0 + UIColor(red: r, green: g, blue: b, alpha: 1) + .getHue(&h, saturation: &s, brightness: &br, alpha: &a) + return Color(UIColor( + hue: h, + saturation: min(s * 1.5, 1.0), + brightness: max(min(br, 0.7), 0.25), + alpha: 1 + )) + } + } +} + +// MARK: - Анимированный градиентный фон в стиле Apple Music +struct AppleMusicGradientBackground: View { + let colors: [Color] + + var body: some View { + TimelineView(.animation(minimumInterval: 1.0 / 60.0)) { timeline in + AnimatedBlobCanvas( + colors: colors, + time: timeline.date.timeIntervalSinceReferenceDate + ) + } + .ignoresSafeArea() + } +} + +private struct AnimatedBlobCanvas: View { + let colors: [Color] + let time: Double + + private let configs: [(Double, Double, Double, Double, Double)] = [ + (0.41, 0.29, 0.00, 0.00, 1.15), + (0.57, 0.38, 2.09, 1.57, 1.00), + (0.33, 0.63, 4.19, 0.79, 1.25), + (0.69, 0.44, 1.05, 3.14, 0.90), + (0.48, 0.71, 3.14, 2.36, 1.05), + (0.62, 0.52, 5.24, 4.71, 0.95), + (0.36, 0.59, 2.62, 1.05, 1.10), + ] + + var body: some View { + GeometryReader { geo in + let w = geo.size.width + let h = geo.size.height + let base = max(w, h) * 0.50 + + ZStack { + Color.black.opacity(0.4) + + colors.first.map { $0.opacity(0.80) } + + ForEach(0.. = 0...1 + @State private var isDragging: Bool = false + + var body: some View { + GeometryReader { geo in + let trackHeight: CGFloat = isDragging ? 8 : 4 + let pct = CGFloat((value - range.lowerBound) / max(range.upperBound - range.lowerBound, 0.001)) + + ZStack(alignment: .leading) { + Capsule() + .fill(Color.white.opacity(0.2)) + .frame(height: trackHeight) + + Capsule() + .fill(Color.white.opacity(isDragging ? 0.9 : 0.7)) + .frame(width: max(0, min(geo.size.width, geo.size.width * pct)), height: trackHeight) + } + .position(x: geo.size.width / 2, y: geo.size.height / 2) + .animation(.spring(response: 0.3, dampingFraction: 0.7), value: isDragging) + .contentShape(Rectangle()) + .gesture( + DragGesture(minimumDistance: 0) + .onChanged { v in + isDragging = true + let percent = min(max(v.location.x / geo.size.width, 0), 1) + value = Double(percent) * (range.upperBound - range.lowerBound) + range.lowerBound + } + .onEnded { _ in + isDragging = false + } + ) + } + .frame(height: 24) + } +} + +struct VolumeSliderView: View { + @Binding var value: Float + + var body: some View { + HStack(spacing: 12) { + Image(systemName: "speaker.fill") + .font(.caption) + .foregroundColor(.white.opacity(0.6)) + + GeometryReader { geo in + let pct = CGFloat(value) + ZStack(alignment: .leading) { + Capsule() + .fill(Color.white.opacity(0.2)) + .frame(height: 5) + + Capsule() + .fill(Color.white) + .frame(width: max(0, min(geo.size.width, geo.size.width * pct)), height: 5) + } + .position(x: geo.size.width / 2, y: geo.size.height / 2) + .contentShape(Rectangle()) + .gesture( + DragGesture(minimumDistance: 0) + .onChanged { v in + let percent = min(max(v.location.x / geo.size.width, 0), 1) + value = Float(percent) + } + ) + } + .frame(height: 20) + + Image(systemName: "speaker.wave.3.fill") + .font(.caption) + .foregroundColor(.white.opacity(0.6)) + } + } +} + +struct FullPlayerView: View { + @Environment(\.dismiss) var dismiss + + @AppStorage("autoImmersiveLyricsEnabled") private var autoImmersiveLyricsEnabled: Bool = true + @AppStorage("autoImmersiveLyricsTimeout") private var autoImmersiveLyricsTimeout: Double = 3.0 + @AppStorage("useSimpleBackground") private var useSimpleBackground: Bool = false + + @ObservedObject var manager = MusicManager.shared + @ObservedObject var lyricsManager = LyricsManager.shared + @ObservedObject var playbackTime = PlaybackTime.shared + + @State private var showFileInfo = false + @State private var showShareSheet = false + @State private var showLyrics = false + @State private var showLyricsEditor = false + @State private var showMetadataEditor = false + + @State private var isImmersiveLyrics = false + @State private var idleTask: DispatchWorkItem? = nil + + private func resetIdleTimer() { + idleTask?.cancel() + guard showLyrics else { + if isImmersiveLyrics { withAnimation { isImmersiveLyrics = false } } + return + } + + guard autoImmersiveLyricsEnabled else { return } + + let task = DispatchWorkItem { + if self.showLyrics { + withAnimation(.spring(response: 0.6, dampingFraction: 0.8)) { + self.isImmersiveLyrics = true + } + } + } + idleTask = task + DispatchQueue.main.asyncAfter(deadline: .now() + autoImmersiveLyricsTimeout, execute: task) + } + + private func handleTap() { + if isImmersiveLyrics { + withAnimation(.spring(response: 0.6, dampingFraction: 0.8)) { + isImmersiveLyrics = false + } + } + resetIdleTimer() + } + + private func handleScroll() { + if showLyrics && !isImmersiveLyrics && autoImmersiveLyricsEnabled { + withAnimation(.spring(response: 0.6, dampingFraction: 0.8)) { + isImmersiveLyrics = true + } + } + resetIdleTimer() + } + + var body: some View { + GeometryReader { geo in + let isLandscape = geo.size.width > geo.size.height + let isSmall = min(geo.size.height, geo.size.width) < 670 + + ZStack { + // Фоновая подложка + Color.black.ignoresSafeArea() + + // Градиенты или обложка на фоне + if useSimpleBackground { + GeometryReader { bgGeo in + if let image = manager.currentArtwork { + Image(uiImage: image) + .resizable() + .aspectRatio(contentMode: .fill) + .frame(width: bgGeo.size.width, height: bgGeo.size.height) + .blur(radius: 80) + .clipped() + .opacity(0.6) + .animation(.easeInOut(duration: 1.0), value: manager.currentArtwork) + } else { + LinearGradient( + colors: manager.gradientColors, + startPoint: .topLeading, + endPoint: .bottomTrailing + ) + .opacity(0.6) + .animation(.easeInOut(duration: 1.0), value: manager.gradientColors) + } + } + .ignoresSafeArea() + } else { + AppleMusicGradientBackground(colors: manager.gradientColors) + .animation(.easeInOut(duration: 1.5), value: manager.currentTrackIndex) + } + + BlurView(style: .systemUltraThinMaterialDark).opacity(0.40).ignoresSafeArea() + + // Главный контейнер + VStack(spacing: 0) { + // Капсула-Grabber (только если не иммерсивный режим) + if !isImmersiveLyrics { + Capsule() + .fill(Color.white.opacity(0.3)) + .frame(width: 36, height: 5) + .padding(.top, 8) + } + + if isLandscape { + // ГОРИЗОНТАЛЬНАЯ ОРИЕНТАЦИЯ + HStack(spacing: 0) { + artworkAndLyricsSection(geo: geo, isLandscape: true, isSmall: isSmall) + .frame(maxWidth: .infinity) + .padding(.horizontal, isImmersiveLyrics ? 0 : 20) + + if !isImmersiveLyrics { + playerControlsSection(isLandscape: true, isSmall: isSmall) + .frame(maxWidth: .infinity) + } + } + } else { + // ВЕРТИКАЛЬНАЯ ОРИЕНТАЦИЯ + artworkAndLyricsSection(geo: geo, isLandscape: false, isSmall: isSmall) + .padding(.top, isImmersiveLyrics ? 0 : (isSmall ? 10 : 30)) + .padding(.horizontal, isImmersiveLyrics ? 0 : (isSmall ? 24 : 20)) + + if !isImmersiveLyrics { + playerControlsSection(isLandscape: false, isSmall: isSmall) + } + } + } + .frame(width: geo.size.width) + + // Нижний бар для иммерсивного режима + if isImmersiveLyrics { + VStack { + Spacer() + ImmersiveBottomBar(manager: manager) + .transition(.move(edge: .bottom).combined(with: .opacity)) + } + } + } + .frame(width: geo.size.width, height: geo.size.height) + } + .preferredColorScheme(.dark) + .gesture(DragGesture().onEnded { if $0.translation.height > 100 { dismiss() } }) + .sheet(isPresented: $showFileInfo) { + if let currentUrl = manager.audioPlayer?.url { + FileInfoView(url: currentUrl, duration: manager.trackDuration) + } + } + .sheet(isPresented: $showShareSheet) { + if let currentTrack = manager.currentTrack { + ActivityViewController(activityItems: [currentTrack.url]) + } + } + .sheet(isPresented: $showLyricsEditor) { + if let track = manager.currentTrack { + LyricsEditorView(trackURL: track.url, trackTitle: track.title, trackArtist: track.artist) + } + } + .sheet(isPresented: $showMetadataEditor) { + if let track = manager.currentTrack { + MetadataEditorView(trackURL: track.url) + } + } + .onChange(of: manager.currentTrackIndex) { _ in + withAnimation { + showLyrics = false + isImmersiveLyrics = false + } + } + .onChange(of: autoImmersiveLyricsEnabled) { isEnabled in + if !isEnabled { + idleTask?.cancel() + withAnimation { + isImmersiveLyrics = false + } + } else { + resetIdleTimer() + } + } + .onChange(of: showLyrics) { _ in + resetIdleTimer() + } + .onAppear { + manager.syncVolumeWithCurrentMode() + resetIdleTimer() + } + } + + // Блок с обложкой или текстами + @ViewBuilder + private func artworkAndLyricsSection(geo: GeometryProxy, isLandscape: Bool, isSmall: Bool) -> some View { + let trackURL = manager.currentTrack?.url + let lyrics = trackURL.map { lyricsManager.lyrics(for: $0) } ?? [] + let boxSize = isLandscape ? geo.size.height * 0.75 : (isSmall ? geo.size.width * 0.75 : geo.size.width * 0.92) + + ZStack { + if showLyrics { + Group { + if lyrics.isEmpty { + VStack(spacing: 16) { + Image(systemName: "quote.bubble") + .font(.system(size: 46)) + .foregroundColor(.white.opacity(0.35)) + Text("Текст отсутствует") + .font(.headline) + .foregroundColor(.white.opacity(0.6)) + Button(action: { showLyricsEditor = true }) { + Label("Добавить текст", systemImage: "plus") + .font(.subheadline.weight(.medium)) + .foregroundColor(.white) + .padding(.horizontal, 18).padding(.vertical, 10) + .background(Color.white.opacity(0.15)) + .cornerRadius(10) + } + } + } else { + LyricsView( + lyrics: lyrics, + currentTime: playbackTime.currentTime, + isImmersive: isImmersiveLyrics, + onSeek: { manager.seek(to: $0) }, + onScroll: { handleScroll() }, + onTap: { handleTap() } + ) + } + } + .transition(.opacity) + .frame(maxWidth: .infinity, maxHeight: .infinity) + } else { + ZStack { + RoundedRectangle(cornerRadius: 12, style: .continuous).fill(Color.white.opacity(0.1)) + if let image = manager.currentArtwork { + Image(uiImage: image) + .resizable() + .aspectRatio(contentMode: .fill) + } else { + Image(systemName: "music.note") + .font(.system(size: isSmall ? 60 : 100)) + .foregroundColor(.white.opacity(0.5)) + } + } + .clipShape(RoundedRectangle(cornerRadius: 12, style: .continuous)) + .scaleEffect(manager.isPlaying ? 1.0 : 0.85) + .animation(.spring(response: 0.6, dampingFraction: 0.65), value: manager.isPlaying) + .transition(.opacity) + .frame(width: boxSize, height: boxSize) // Жестко фиксируем обложку квадратом + } + } + // Вместо общего aspectRatio и жестких фреймов позволяем LyricsView полностью заполнить доступное место + .frame( + maxWidth: (showLyrics || isImmersiveLyrics) ? .infinity : boxSize, + maxHeight: (showLyrics || isImmersiveLyrics) ? .infinity : boxSize + ) + .animation(.spring(response: 0.55, dampingFraction: 0.82), value: isImmersiveLyrics) + .animation(.spring(response: 0.55, dampingFraction: 0.82), value: showLyrics) + .cornerRadius(isImmersiveLyrics ? 0 : 12) + .overlay(alignment: .topTrailing) { + if isImmersiveLyrics { + Button(action: handleTap) { + Image(systemName: "xmark.circle.fill") + .font(.system(size: 28)) + .foregroundColor(.white.opacity(0.6)) + .padding(24) + .padding(.top, isSmall ? 0 : 10) + } + } else if showLyrics && !lyrics.isEmpty { + Button(action: { showLyricsEditor = true }) { + Image(systemName: "pencil.circle.fill") + .font(.system(size: 26)) + .foregroundColor(.white.opacity(0.7)) + .padding(10) + } + } + } + .gesture( + DragGesture().onEnded { value in + guard !showLyrics else { return } + if value.translation.width < -50 { withAnimation { manager.nextTrack() } } + else if value.translation.width > 50 { withAnimation { manager.prevTrack() } } + } + ) + } + + // Блок с элементами управления плеером + @ViewBuilder + private func playerControlsSection(isLandscape: Bool, isSmall: Bool) -> some View { + VStack(spacing: 0) { + VStack(spacing: isLandscape ? 16 : (isSmall ? 22 : 34)) { + // Info & More Button + HStack(alignment: .center) { + VStack(alignment: .leading, spacing: 2) { + Text(manager.currentTitle) + .font(.system(size: isSmall ? 20 : 24, weight: .bold, design: .rounded)) + .lineLimit(1) + .minimumScaleFactor(0.8) + .foregroundColor(.white) + Text(manager.currentArtist) + .font(.system(size: isSmall ? 16 : 18, weight: .medium, design: .rounded)) + .foregroundColor(.white.opacity(0.6)) + .lineLimit(1) + .minimumScaleFactor(0.8) + } + Spacer() + + Menu { + Button(action: { showFileInfo = true }) { Label("Свойства файла", systemImage: "info.circle") } + Button(action: { + if manager.currentTrack != nil { showShareSheet = true } + }) { Label("Поделиться", systemImage: "square.and.arrow.up") } + Button(action: { + if manager.currentTrack != nil { showMetadataEditor = true } + }) { Label("Редактировать метаданные", systemImage: "tag") } + Button(action: { + if manager.currentTrack != nil { showLyricsEditor = true } + }) { Label("Редактировать текст", systemImage: "pencil") } + } label: { + Image(systemName: "ellipsis.circle.fill") + .font(.system(size: 24)) + .foregroundColor(.white.opacity(0.7)) + .padding(.leading, 10) + } + } + .padding(.horizontal, isLandscape ? 15 : 30) + + // Native Scrubber + VStack(spacing: 6) { + NativePlaybackSlider( + value: Binding( + get: { playbackTime.currentTime }, + set: { playbackTime.currentTime = $0; manager.seek(to: $0) } + ), + range: 0...max(manager.trackDuration, 1) + ) + + HStack { + Text(formatTime(playbackTime.currentTime)) + Spacer() + Text(formatTime(manager.trackDuration)) + } + .font(.system(size: 11, weight: .semibold, design: .monospaced)) + .foregroundColor(.white.opacity(0.5)) + } + .padding(.horizontal, isLandscape ? 15 : 30) + + // Playback Controls + HStack(spacing: isLandscape ? 40 : (isSmall ? 45 : 65)) { + Button(action: manager.prevTrack) { + Image(systemName: "backward.fill") + .font(.system(size: isSmall ? 28 : 36)) + } + Button(action: manager.playPause) { + Image(systemName: manager.isPlaying ? "pause.fill" : "play.fill") + .font(.system(size: isSmall ? 44 : 54)) + } + Button(action: manager.nextTrack) { + Image(systemName: "forward.fill") + .font(.system(size: isSmall ? 28 : 36)) + } + }.foregroundColor(.white) + + // Volume Bar + VolumeSliderView(value: Binding( + get: { manager.volume }, + set: { manager.volume = $0 } + )) + .padding(.horizontal, isLandscape ? 20 : 35) + + // Bottom Actions Bar + HStack(spacing: 0) { + Button(action: { withAnimation(.easeInOut(duration: 0.35)) { showLyrics.toggle() } }) { + Image(systemName: "quote.bubble") + .font(.system(size: 20, weight: .semibold)) + .foregroundColor(showLyrics ? .white : .white.opacity(0.6)) + .frame(maxWidth: .infinity) + } + + AirPlayView().frame(maxWidth: .infinity, maxHeight: 35) + + Button(action: manager.toggleRepeat) { + Image(systemName: manager.repeatMode.iconName) + .font(.system(size: 20, weight: .semibold)) + .foregroundColor(manager.repeatMode == .none ? .white.opacity(0.6) : .white) + .frame(maxWidth: .infinity) + } + + Button(action: manager.toggleShuffle) { + Image(systemName: "shuffle") + .font(.system(size: 20, weight: .semibold)) + .foregroundColor(manager.shuffleOn ? .white : .white.opacity(0.6)) + .frame(maxWidth: .infinity) + } + } + .padding(.horizontal, 10) + } + .padding(.top, isLandscape ? 10 : (isSmall ? 14 : 20)) + .padding(.bottom, isLandscape ? 20 : (isSmall ? 25 : 45)) + } + .transition(.opacity) + } + + func formatTime(_ t: TimeInterval) -> String { + guard t.isFinite && !t.isNaN else { return "00:00" } + let m = Int(t) / 60 + let s = Int(t) % 60 + return String(format: "%02d:%02d", m, s) + } +} + + +// MARK: - Экран информации о файле +struct FileInfoView: View { + @AppStorage("appTheme") private var appTheme: AppTheme = .system + let url: URL + let duration: TimeInterval + @Environment(\.dismiss) var dismiss + @State private var fileSize: String = "Вычисляется..." + @State private var showShareSheet = false + + var body: some View { + NavigationView { + List { + Section(header: Text("Основная информация")) { + InfoRow(title: "Имя файла", value: url.lastPathComponent) + InfoRow(title: "Формат", value: url.pathExtension.uppercased()) + InfoRow(title: "Размер", value: fileSize) + InfoRow(title: "Длительность", value: formatTime(duration)) + } + + Section(header: Text("Расположение файла")) { + Text(url.path).font(.caption2).foregroundColor(.gray) + } + + Section { + Button(action: { showShareSheet = true }) { + HStack { + Spacer() + Label("Поделиться файлом", systemImage: "square.and.arrow.up") + .foregroundColor(.red) + Spacer() + } + } + } + } + .navigationTitle("Свойства трека") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + Button("Готово") { dismiss() } + } + } + .onAppear(perform: calculateFileSize) + .sheet(isPresented: $showShareSheet) { + ActivityViewController(activityItems: [url]) + } + } + .preferredColorScheme(appTheme.colorScheme) + } + + private func calculateFileSize() { + if let attrs = try? FileManager.default.attributesOfItem(atPath: url.path), + let size = attrs[.size] as? Int64 { + let formatter = ByteCountFormatter() + formatter.allowedUnits = [.useMB, .useKB] + formatter.countStyle = .file + fileSize = formatter.string(fromByteCount: size) + } else { fileSize = "Неизвестно" } + } + + private func formatTime(_ t: TimeInterval) -> String { + guard t.isFinite && !t.isNaN else { return "00:00" } + let m = Int(t) / 60 + let s = Int(t) % 60 + return String(format: "%02d:%02d", m, s) + } +} + +struct InfoRow: View { + let title: String + let value: String + var body: some View { + HStack(alignment: .top) { + Text(title).foregroundColor(.gray) + Spacer() + Text(value).multilineTextAlignment(.trailing) + } + } +} + +// MARK: - Системные обертки +struct BlurView: UIViewRepresentable { + var style: UIBlurEffect.Style + func makeUIView(context: Context) -> UIVisualEffectView { UIVisualEffectView(effect: UIBlurEffect(style: style)) } + func updateUIView(_ uiView: UIVisualEffectView, context: Context) {} +} + +struct ActivityViewController: UIViewControllerRepresentable { + var activityItems: [Any] + var applicationActivities: [UIActivity]? = nil + + func makeUIViewController(context: UIViewControllerRepresentableContext) -> UIActivityViewController { + let controller = UIActivityViewController(activityItems: activityItems, applicationActivities: applicationActivities) + return controller + } + + func updateUIViewController(_ uiViewController: UIActivityViewController, context: UIViewControllerRepresentableContext) {} +} + +struct ImagePicker: UIViewControllerRepresentable { + var onImagePicked: (UIImage) -> Void + @Environment(\.presentationMode) private var presentationMode + + func makeUIViewController(context: Context) -> PHPickerViewController { + var config = PHPickerConfiguration() + config.filter = .images + let picker = PHPickerViewController(configuration: config) + picker.delegate = context.coordinator + return picker + } + + func updateUIViewController(_ uiViewController: PHPickerViewController, context: Context) {} + + func makeCoordinator() -> Coordinator { Coordinator(self) } + + class Coordinator: NSObject, PHPickerViewControllerDelegate { + let parent: ImagePicker + init(_ parent: ImagePicker) { self.parent = parent } + + func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { + parent.presentationMode.wrappedValue.dismiss() + guard let provider = results.first?.itemProvider, provider.canLoadObject(ofClass: UIImage.self) else { return } + provider.loadObject(ofClass: UIImage.self) { image, _ in + if let uiImage = image as? UIImage { + DispatchQueue.main.async { self.parent.onImagePicked(uiImage) } + } + } + } + } +} + +struct AirPlayView: UIViewRepresentable { + func makeUIView(context: Context) -> AVRoutePickerView { + let view = AVRoutePickerView() + view.activeTintColor = .red + view.tintColor = .white + return view + } + + func updateUIView(_ uiView: AVRoutePickerView, context: Context) { + // Обновление не требуется + } +} diff --git a/music player/PhoneConnectivityManager.swift b/music player/PhoneConnectivityManager.swift new file mode 100644 index 0000000..e7610c0 --- /dev/null +++ b/music player/PhoneConnectivityManager.swift @@ -0,0 +1,117 @@ +import Foundation +import WatchConnectivity +import Combine + +// MARK: - Лёгкая модель трека для передачи на часы +struct WatchTrackInfo: Codable { + let id: String // используем имя файла как стабильный идентификатор + let title: String + let artist: String +} + +// MARK: - Связь iPhone <-> Apple Watch +// Добавь этот файл в таргет "music player" (основное приложение). +class PhoneConnectivityManager: NSObject, WCSessionDelegate, ObservableObject { + static let shared = PhoneConnectivityManager() + + private var cancellables = Set() + + private override init() { + super.init() + activateSession() + // Откладываем обращение к MusicManager.shared на следующий "тик" — + // иначе при первом запуске получится циклическая инициализация + // двух синглтонов друг через друга и приложение упадёт. + DispatchQueue.main.async { [weak self] in + self?.observeMusicManager() + } + } + + private func activateSession() { + guard WCSession.isSupported() else { return } + let session = WCSession.default + session.delegate = self + session.activate() + } + + // MARK: - Отправка состояния плеера на часы + + private func observeMusicManager() { + let manager = MusicManager.shared + Publishers.CombineLatest4( + manager.$tracks, + manager.$currentTrackIndex, + manager.$isPlaying, + manager.$currentTitle + ) + .debounce(for: .milliseconds(250), scheduler: DispatchQueue.main) + .sink { [weak self] _ in + self?.pushStateToWatch() + } + .store(in: &cancellables) + } + + func pushStateToWatch() { + guard WCSession.default.activationState == .activated else { return } + let manager = MusicManager.shared + + let trackInfos = manager.tracks.map { + WatchTrackInfo(id: $0.url.lastPathComponent, title: $0.title, artist: $0.artist) + } + guard let tracksData = try? JSONEncoder().encode(trackInfos) else { return } + + let context: [String: Any] = [ + "tracks": tracksData, + "isPlaying": manager.isPlaying, + "currentTitle": manager.currentTitle, + "currentArtist": manager.currentArtist, + "currentId": manager.currentTrack?.url.lastPathComponent ?? "" + ] + + try? WCSession.default.updateApplicationContext(context) + } + + // MARK: - WCSessionDelegate + + func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) { + DispatchQueue.main.async { self.pushStateToWatch() } + } + + func sessionDidBecomeInactive(_ session: WCSession) {} + func sessionDidDeactivate(_ session: WCSession) { WCSession.default.activate() } + + // Команды, пришедшие пока приложение на телефоне активно + func session(_ session: WCSession, didReceiveMessage message: [String: Any]) { + handleCommand(message) + } + + // Команды, пришедшие "в очереди" (если телефон был недоступен) + func session(_ session: WCSession, didReceiveUserInfo userInfo: [String: Any]) { + handleCommand(userInfo) + } + + // MARK: - Обработка команд с часов + + private func handleCommand(_ command: [String: Any]) { + guard let action = command["action"] as? String else { return } + DispatchQueue.main.async { + let manager = MusicManager.shared + switch action { + case "playPause": + manager.playPause() + case "next": + manager.nextTrack() + case "previous": + manager.prevTrack() + case "playTrack": + if let id = command["id"] as? String, + let index = manager.currentList.firstIndex(where: { $0.url.lastPathComponent == id }) { + manager.playTrack(at: index) + } + default: + break + } + self.pushStateToWatch() + } + } +} diff --git a/music player/Preview Content/.DS_Store b/music player/Preview Content/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d04eacd15e300f9989f456c5df0da8e214935c2f GIT binary patch literal 6148 zcmeHK%}N6?5T4X(w-liVMUMfmMQd9G@v_!>7gzM4Qg?09#dRaytt*tmp7n)%5}(JJ zBo(E4@Ss?kfypS-fGPkusDyUlTJy&dI*K?BZNL=AYm7h zsc3fmMFwc?R^R{zxN`UKe*F^kq_~dj@Bo+Kqh&oomfQuA3NZ6IxQoIht=C^fVXip8 zP;yF6#X0w`RpzCBI!xOB;FM}dN=3oM_JiZFpLMHCdn!)-Fzyd@LfGqL$k|C4_f*za z!?>5|T+cK(WvAS&u8u~ntyWDo>dkRYjw9kyM=HL;%t^14-WZtyW`G%(H3sZH=2T|w!})ue0cPOG8KC_^q7u3m zbAx*8z=E!i)LtYcL7UzZgwmpGF*k@UD8i&7np9z*7{a8ZU)ng=Vs6l+gU};mKXznc zUnoM4j((}bLAVCFWCoalj||M2YL(9a{jcBuACtJo3@`)#iUCpVc%3#*$)2rKlcTd% tqF$hqP+V^CEd>pI6k{wM#jB`V&@ahAbS>rv(SyPl0ZjuJ%)qZQ@CrxnS4sc? literal 0 HcmV?d00001 diff --git a/music player/Preview Content/Preview Assets.xcassets/Contents.json b/music player/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/music player/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/music player/music player.entitlements b/music player/music player.entitlements new file mode 100644 index 0000000..ee95ab7 --- /dev/null +++ b/music player/music player.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + + diff --git a/music player/music_playerApp.swift b/music player/music_playerApp.swift new file mode 100644 index 0000000..03d1422 --- /dev/null +++ b/music player/music_playerApp.swift @@ -0,0 +1,17 @@ +// +// music_playerApp.swift +// music player +// +// Created by aswer on 23.06.2026. +// + +import SwiftUI + +@main +struct music_playerApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/music playerTests/music_playerTests.swift b/music playerTests/music_playerTests.swift new file mode 100644 index 0000000..5ed23e4 --- /dev/null +++ b/music playerTests/music_playerTests.swift @@ -0,0 +1,36 @@ +// +// music_playerTests.swift +// music playerTests +// +// Created by aswer on 23.06.2026. +// + +import XCTest +@testable import music_player + +final class music_playerTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/music playerUITests/music_playerUITests.swift b/music playerUITests/music_playerUITests.swift new file mode 100644 index 0000000..b40ced1 --- /dev/null +++ b/music playerUITests/music_playerUITests.swift @@ -0,0 +1,41 @@ +// +// music_playerUITests.swift +// music playerUITests +// +// Created by aswer on 23.06.2026. +// + +import XCTest + +final class music_playerUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/music playerUITests/music_playerUITestsLaunchTests.swift b/music playerUITests/music_playerUITestsLaunchTests.swift new file mode 100644 index 0000000..323a701 --- /dev/null +++ b/music playerUITests/music_playerUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// music_playerUITestsLaunchTests.swift +// music playerUITests +// +// Created by aswer on 23.06.2026. +// + +import XCTest + +final class music_playerUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/music playerWatch Watch App/Assets.xcassets/AccentColor.colorset/Contents.json b/music playerWatch Watch App/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/music playerWatch Watch App/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/music playerWatch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json b/music playerWatch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..49c81cd --- /dev/null +++ b/music playerWatch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "watchos", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/music playerWatch Watch App/Assets.xcassets/Contents.json b/music playerWatch Watch App/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/music playerWatch Watch App/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/music playerWatch Watch App/ContentView.swift b/music playerWatch Watch App/ContentView.swift new file mode 100644 index 0000000..1229ca9 --- /dev/null +++ b/music playerWatch Watch App/ContentView.swift @@ -0,0 +1,62 @@ +// +// ContentView.swift +// music playerWatch Watch App +// +// Created by aswer on 30.06.2026. +// + +import SwiftUI + +// MARK: - Главный экран часов +// Замени этим содержимым ContentView.swift, который Xcode сгенерировал +// в таргете часов (структура должна остаться по имени ContentView, +// чтобы App.swift на часах продолжил работать без изменений). +struct ContentView: View { + @StateObject private var connectivity = WatchConnectivityManager.shared + + var body: some View { + NavigationView { + List { + if !connectivity.currentTitle.isEmpty { + NavigationLink(destination: NowPlayingView()) { + HStack { + Image(systemName: connectivity.isPlaying ? "pause.circle.fill" : "play.circle.fill") + .foregroundColor(.green) + VStack(alignment: .leading) { + Text(connectivity.currentTitle) + .font(.headline) + .lineLimit(1) + Text(connectivity.currentArtist) + .font(.caption) + .foregroundColor(.gray) + .lineLimit(1) + } + } + } + } + + if connectivity.tracks.isEmpty { + Text("Открой приложение на iPhone, чтобы список треков появился здесь") + .font(.caption2) + .foregroundColor(.gray) + } else { + ForEach(connectivity.tracks) { track in + Button(action: { connectivity.playTrack(id: track.id) }) { + VStack(alignment: .leading) { + Text(track.title) + .font(.body) + .foregroundColor(track.id == connectivity.currentId ? .green : .primary) + .lineLimit(1) + Text(track.artist) + .font(.caption2) + .foregroundColor(.gray) + .lineLimit(1) + } + } + } + } + } + .navigationTitle("Музыка") + } + } +} diff --git a/music playerWatch Watch App/NowPlayingView.swift b/music playerWatch Watch App/NowPlayingView.swift new file mode 100644 index 0000000..3976101 --- /dev/null +++ b/music playerWatch Watch App/NowPlayingView.swift @@ -0,0 +1,41 @@ +import SwiftUI + +// MARK: - Экран "Сейчас играет" на часах +struct NowPlayingView: View { + @StateObject private var connectivity = WatchConnectivityManager.shared + + var body: some View { + VStack(spacing: 10) { + Text(connectivity.currentTitle) + .font(.headline) + .multilineTextAlignment(.center) + .lineLimit(2) + + Text(connectivity.currentArtist) + .font(.subheadline) + .foregroundColor(.gray) + .lineLimit(1) + + HStack(spacing: 22) { + Button(action: connectivity.previous) { + Image(systemName: "backward.fill") + .font(.title2) + } + + Button(action: connectivity.playPause) { + Image(systemName: connectivity.isPlaying ? "pause.fill" : "play.fill") + .font(.largeTitle) + } + + Button(action: connectivity.next) { + Image(systemName: "forward.fill") + .font(.title2) + } + } + .buttonStyle(.plain) + .padding(.top, 6) + } + .padding() + .navigationTitle("Сейчас играет") + } +} diff --git a/music playerWatch Watch App/Preview Content/Preview Assets.xcassets/Contents.json b/music playerWatch Watch App/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/music playerWatch Watch App/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/music playerWatch Watch App/WatchConnectivityManager.swift b/music playerWatch Watch App/WatchConnectivityManager.swift new file mode 100644 index 0000000..8e412ca --- /dev/null +++ b/music playerWatch Watch App/WatchConnectivityManager.swift @@ -0,0 +1,73 @@ +import Foundation +import WatchConnectivity +import Combine + +// MARK: - Та же лёгкая модель трека, что и на телефоне +struct WatchTrackInfo: Codable, Identifiable { + let id: String + let title: String + let artist: String +} + +// MARK: - Связь Apple Watch <-> iPhone +// Добавь этот файл в таргет часов (например "music playerWatch"). +class WatchConnectivityManager: NSObject, WCSessionDelegate, ObservableObject { + static let shared = WatchConnectivityManager() + + @Published var tracks: [WatchTrackInfo] = [] + @Published var isPlaying: Bool = false + @Published var currentTitle: String = "" + @Published var currentArtist: String = "" + @Published var currentId: String = "" + + private override init() { + super.init() + guard WCSession.isSupported() else { return } + let session = WCSession.default + session.delegate = self + session.activate() + } + + // MARK: - WCSessionDelegate + + func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {} + + func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String: Any]) { + DispatchQueue.main.async { + self.apply(applicationContext) + } + } + + private func apply(_ context: [String: Any]) { + if let data = context["tracks"] as? Data, + let decoded = try? JSONDecoder().decode([WatchTrackInfo].self, from: data) { + self.tracks = decoded + } + self.isPlaying = context["isPlaying"] as? Bool ?? false + self.currentTitle = context["currentTitle"] as? String ?? "" + self.currentArtist = context["currentArtist"] as? String ?? "" + self.currentId = context["currentId"] as? String ?? "" + } + + // MARK: - Отправка команд на телефон + + private func send(action: String, extra: [String: Any] = [:]) { + guard WCSession.isSupported() else { return } + var payload = extra + payload["action"] = action + + let session = WCSession.default + if session.isReachable { + session.sendMessage(payload, replyHandler: nil) { _ in + session.transferUserInfo(payload) + } + } else { + session.transferUserInfo(payload) + } + } + + func playPause() { send(action: "playPause") } + func next() { send(action: "next") } + func previous() { send(action: "previous") } + func playTrack(id: String) { send(action: "playTrack", extra: ["id": id]) } +} diff --git a/music playerWatch Watch App/music_playerWatchApp.swift b/music playerWatch Watch App/music_playerWatchApp.swift new file mode 100644 index 0000000..220bb2c --- /dev/null +++ b/music playerWatch Watch App/music_playerWatchApp.swift @@ -0,0 +1,17 @@ +// +// music_playerWatchApp.swift +// music playerWatch Watch App +// +// Created by aswer on 30.06.2026. +// + +import SwiftUI + +@main +struct music_playerWatch_Watch_AppApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/music playerWatch Watch AppTests/music_playerWatch_Watch_AppTests.swift b/music playerWatch Watch AppTests/music_playerWatch_Watch_AppTests.swift new file mode 100644 index 0000000..4812558 --- /dev/null +++ b/music playerWatch Watch AppTests/music_playerWatch_Watch_AppTests.swift @@ -0,0 +1,36 @@ +// +// music_playerWatch_Watch_AppTests.swift +// music playerWatch Watch AppTests +// +// Created by aswer on 30.06.2026. +// + +import XCTest +@testable import music_playerWatch_Watch_App + +final class music_playerWatch_Watch_AppTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Tests marked async will run the test method on an arbitrary thread managed by the Swift runtime. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/music playerWatch Watch AppUITests/music_playerWatch_Watch_AppUITests.swift b/music playerWatch Watch AppUITests/music_playerWatch_Watch_AppUITests.swift new file mode 100644 index 0000000..ec6a044 --- /dev/null +++ b/music playerWatch Watch AppUITests/music_playerWatch_Watch_AppUITests.swift @@ -0,0 +1,41 @@ +// +// music_playerWatch_Watch_AppUITests.swift +// music playerWatch Watch AppUITests +// +// Created by aswer on 30.06.2026. +// + +import XCTest + +final class music_playerWatch_Watch_AppUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/music playerWatch Watch AppUITests/music_playerWatch_Watch_AppUITestsLaunchTests.swift b/music playerWatch Watch AppUITests/music_playerWatch_Watch_AppUITestsLaunchTests.swift new file mode 100644 index 0000000..95cab07 --- /dev/null +++ b/music playerWatch Watch AppUITests/music_playerWatch_Watch_AppUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// music_playerWatch_Watch_AppUITestsLaunchTests.swift +// music playerWatch Watch AppUITests +// +// Created by aswer on 30.06.2026. +// + +import XCTest + +final class music_playerWatch_Watch_AppUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/music-player-Info.plist b/music-player-Info.plist new file mode 100644 index 0000000..f753731 --- /dev/null +++ b/music-player-Info.plist @@ -0,0 +1,10 @@ + + + + + UIBackgroundModes + + audio + + +