Add iPhone local favorites

This commit is contained in:
diyaa
2026-05-31 13:20:07 +02:00
parent cb556ccf0a
commit 3d7252ce6d
8 changed files with 1103 additions and 14 deletions
+145
View File
@@ -14,26 +14,44 @@
3B9765B34963F430467B7527 /* LocalMusicScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CAD2FE907C9C90FBE01E7D4 /* LocalMusicScanner.swift */; };
3D22DE55C4A27A4DE68E6359 /* VelodySync in Frameworks */ = {isa = PBXBuildFile; productRef = DA5EBADF45BC0977F73F241C /* VelodySync */; };
3D2A2E7D9371C62F8F86DD84 /* VelodyDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 3C910108376E6ECEF152DCE1 /* VelodyDomain */; };
4F8B36EB80C008CDD9B2F6A6 /* VelodyUtilities in Frameworks */ = {isa = PBXBuildFile; productRef = C199F1B9F55E51FD373EA729 /* VelodyUtilities */; };
58E2E18AAC9318AB98F81004 /* VelodyDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 14CD56063C10911F40C9CBA3 /* VelodyDomain */; };
5D2616BFA3DD5E131EC928F2 /* iPhoneLibraryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE56EE8AD38DC563003A7979 /* iPhoneLibraryViewModel.swift */; };
7174D80FB45839E82F150613 /* VelodyMacApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A45EA6FB9536D0CD91874C /* VelodyMacApp.swift */; };
783EBF82108F7A04B6DD33B4 /* VelodyPersistence in Frameworks */ = {isa = PBXBuildFile; productRef = 4DD09D7C123E184CEC0A2F4D /* VelodyPersistence */; };
8A3C2C7EB14F364D682A92B7 /* VelodyNetworking in Frameworks */ = {isa = PBXBuildFile; productRef = 713279722B202FB1CF4A869E /* VelodyNetworking */; };
93F386D6A8B0131EAB50E2B9 /* VelodyDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 48BF8F8596E7A86383A9CCD1 /* VelodyDomain */; };
A2DDB28F9916D0DFB1ADD4FF /* VelodyNetworking in Frameworks */ = {isa = PBXBuildFile; productRef = A5B134A54FAD5F2EB5ECBE57 /* VelodyNetworking */; };
A54D8AD8A59D8B77FCA0794F /* MacLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB28FE17346E100F697C1BF4 /* MacLibraryView.swift */; };
AB6C7E42A3A850D395E4F5E7 /* VelodySync in Frameworks */ = {isa = PBXBuildFile; productRef = 2449C403E81DD84D7A8DD7E1 /* VelodySync */; };
AC8B414ECE5493BD52DEC44A /* VelodyPersistence in Frameworks */ = {isa = PBXBuildFile; productRef = B99672FF5519DDF310A5EBD1 /* VelodyPersistence */; };
D0D65CE73B9DFF3C73F432DB /* VelodyUtilities in Frameworks */ = {isa = PBXBuildFile; productRef = B15F842ACBB110CC8A766669 /* VelodyUtilities */; };
D4B554447B262C7B946ED21F /* VelodyPersistence in Frameworks */ = {isa = PBXBuildFile; productRef = C8F5FF593C4DB829D1CDD497 /* VelodyPersistence */; };
DCB814642BA3F081D4B5A3BE /* iPhoneLibraryViewModelFavoritesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DE70FE94372F028D76DC335 /* iPhoneLibraryViewModelFavoritesTests.swift */; };
E4627FCDF7EB169D83EA50DB /* VelodySync in Frameworks */ = {isa = PBXBuildFile; productRef = A571882D6B46CA9F729D13CB /* VelodySync */; };
EE48EF0688C7E33CDA783234 /* VelodyNetworking in Frameworks */ = {isa = PBXBuildFile; productRef = 0682A261A6F2F050F4B83AF6 /* VelodyNetworking */; };
FB68EF710F2B6FBAF80F63F0 /* VelodyUtilities in Frameworks */ = {isa = PBXBuildFile; productRef = AAD3F903A475AA0B0159C79E /* VelodyUtilities */; };
FB76843BB27CCCD2B0CFF11D /* iPhoneLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD8848AEA828FE5B2607EB46 /* iPhoneLibraryView.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
488EB06E63B557EFEA13BE16 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D14070EEF27F35DD4F5F547B /* Project object */;
proxyType = 1;
remoteGlobalIDString = BA256DA9698C16C35E28D0EF;
remoteInfo = VelodyiPhone;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
07508485E10C6E2942FE29AB /* VelodySync */ = {isa = PBXFileReference; lastKnownFileType = folder; name = VelodySync; path = ../../packages/apple/VelodySync; sourceTree = SOURCE_ROOT; };
0F6993844F6FD7E86D52EC25 /* VelodyNetworking */ = {isa = PBXFileReference; lastKnownFileType = folder; name = VelodyNetworking; path = ../../packages/apple/VelodyNetworking; sourceTree = SOURCE_ROOT; };
15A17C02F8CBB0A492A82C14 /* VelodyPlayback */ = {isa = PBXFileReference; lastKnownFileType = folder; name = VelodyPlayback; path = ../../packages/apple/VelodyPlayback; sourceTree = SOURCE_ROOT; };
1913BA882BB97E1B90C3B30B /* VelodyiPhoneTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = VelodyiPhoneTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3CAD2FE907C9C90FBE01E7D4 /* LocalMusicScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalMusicScanner.swift; sourceTree = "<group>"; };
5EC9AED651FE0AB193AAFE94 /* FolderAccessService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FolderAccessService.swift; sourceTree = "<group>"; };
6DE70FE94372F028D76DC335 /* iPhoneLibraryViewModelFavoritesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iPhoneLibraryViewModelFavoritesTests.swift; sourceTree = "<group>"; };
6E7BCB85A35B8286E4472822 /* VelodyPersistence */ = {isa = PBXFileReference; lastKnownFileType = folder; name = VelodyPersistence; path = ../../packages/apple/VelodyPersistence; sourceTree = SOURCE_ROOT; };
7A1BDB40E1A38A685237BCF3 /* VelodyMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VelodyMac.app; sourceTree = BUILT_PRODUCTS_DIR; };
89FE56E825FC42D026EAC784 /* VelodyUtilities */ = {isa = PBXFileReference; lastKnownFileType = folder; name = VelodyUtilities; path = ../../packages/apple/VelodyUtilities; sourceTree = SOURCE_ROOT; };
@@ -73,9 +91,30 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
CE2E7DEBA00CD6E8FB4A4FA0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
58E2E18AAC9318AB98F81004 /* VelodyDomain in Frameworks */,
A2DDB28F9916D0DFB1ADD4FF /* VelodyNetworking in Frameworks */,
AC8B414ECE5493BD52DEC44A /* VelodyPersistence in Frameworks */,
E4627FCDF7EB169D83EA50DB /* VelodySync in Frameworks */,
4F8B36EB80C008CDD9B2F6A6 /* VelodyUtilities in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
57CBC02BBC37680DB422EDDE /* Tests */ = {
isa = PBXGroup;
children = (
6DE70FE94372F028D76DC335 /* iPhoneLibraryViewModelFavoritesTests.swift */,
);
name = Tests;
path = VelodyiPhone/Tests;
sourceTree = "<group>";
};
72E9140E6A9783B11030B506 /* Sources */ = {
isa = PBXGroup;
children = (
@@ -106,6 +145,7 @@
770229FFB4009FE9ED8F7FA1 /* Packages */,
72E9140E6A9783B11030B506 /* Sources */,
C055BC0585BDA296E6A6D9F8 /* Sources */,
57CBC02BBC37680DB422EDDE /* Tests */,
E7EA6D658DCAE7B098AACC54 /* Products */,
);
sourceTree = "<group>";
@@ -127,6 +167,7 @@
isa = PBXGroup;
children = (
BF223F7E40D4B594935F5BC2 /* VelodyiPhone.app */,
1913BA882BB97E1B90C3B30B /* VelodyiPhoneTests.xctest */,
7A1BDB40E1A38A685237BCF3 /* VelodyMac.app */,
);
name = Products;
@@ -159,6 +200,30 @@
productReference = 7A1BDB40E1A38A685237BCF3 /* VelodyMac.app */;
productType = "com.apple.product-type.application";
};
75B4E7EF9F920A90B66109DD /* VelodyiPhoneTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 47B0505DA66C0C0151085FB5 /* Build configuration list for PBXNativeTarget "VelodyiPhoneTests" */;
buildPhases = (
3910E580B4AC84E7F67D2A67 /* Sources */,
CE2E7DEBA00CD6E8FB4A4FA0 /* Frameworks */,
);
buildRules = (
);
dependencies = (
6E19F3A327667FEB6B990077 /* PBXTargetDependency */,
);
name = VelodyiPhoneTests;
packageProductDependencies = (
14CD56063C10911F40C9CBA3 /* VelodyDomain */,
A5B134A54FAD5F2EB5ECBE57 /* VelodyNetworking */,
B99672FF5519DDF310A5EBD1 /* VelodyPersistence */,
A571882D6B46CA9F729D13CB /* VelodySync */,
C199F1B9F55E51FD373EA729 /* VelodyUtilities */,
);
productName = VelodyiPhoneTests;
productReference = 1913BA882BB97E1B90C3B30B /* VelodyiPhoneTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
BA256DA9698C16C35E28D0EF /* VelodyiPhone */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6BBCD1EA2ADBFF580325615C /* Build configuration list for PBXNativeTarget "VelodyiPhone" */;
@@ -215,6 +280,7 @@
targets = (
35991DE50CE00DB09C257624 /* VelodyMac */,
BA256DA9698C16C35E28D0EF /* VelodyiPhone */,
75B4E7EF9F920A90B66109DD /* VelodyiPhoneTests */,
);
};
/* End PBXProject section */
@@ -230,6 +296,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
3910E580B4AC84E7F67D2A67 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
DCB814642BA3F081D4B5A3BE /* iPhoneLibraryViewModelFavoritesTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
82777CB01A8F49D7D29F03D0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -244,6 +318,14 @@
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
6E19F3A327667FEB6B990077 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = BA256DA9698C16C35E28D0EF /* VelodyiPhone */;
targetProxy = 488EB06E63B557EFEA13BE16 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
384C8F5F47E4F21667BF35CD /* Debug */ = {
isa = XCBuildConfiguration;
@@ -307,6 +389,23 @@
};
name = Debug;
};
3DCD500A04B056B2DDF1ED8A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = de.diyaa.velody.iphone.tests;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VelodyiPhone.app/VelodyiPhone";
};
name = Debug;
};
69FECBCBCA0B51ADDBD79E78 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -396,6 +495,23 @@
};
name = Release;
};
CA2342EB0A1A156E1CEDEFD1 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = de.diyaa.velody.iphone.tests;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VelodyiPhone.app/VelodyiPhone";
};
name = Release;
};
D92AAC4C7558EFC853CF352F /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -433,6 +549,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
47B0505DA66C0C0151085FB5 /* Build configuration list for PBXNativeTarget "VelodyiPhoneTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3DCD500A04B056B2DDF1ED8A /* Debug */,
CA2342EB0A1A156E1CEDEFD1 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
6BBCD1EA2ADBFF580325615C /* Build configuration list for PBXNativeTarget "VelodyiPhone" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@@ -494,6 +619,10 @@
isa = XCSwiftPackageProductDependency;
productName = VelodyNetworking;
};
14CD56063C10911F40C9CBA3 /* VelodyDomain */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodyDomain;
};
2449C403E81DD84D7A8DD7E1 /* VelodySync */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodySync;
@@ -514,6 +643,14 @@
isa = XCSwiftPackageProductDependency;
productName = VelodyNetworking;
};
A571882D6B46CA9F729D13CB /* VelodySync */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodySync;
};
A5B134A54FAD5F2EB5ECBE57 /* VelodyNetworking */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodyNetworking;
};
AAD3F903A475AA0B0159C79E /* VelodyUtilities */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodyUtilities;
@@ -522,6 +659,14 @@
isa = XCSwiftPackageProductDependency;
productName = VelodyUtilities;
};
B99672FF5519DDF310A5EBD1 /* VelodyPersistence */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodyPersistence;
};
C199F1B9F55E51FD373EA729 /* VelodyUtilities */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodyUtilities;
};
C8F5FF593C4DB829D1CDD497 /* VelodyPersistence */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodyPersistence;