diff --git a/Sources/Assets/Colors.swift b/Sources/Assets/Colors.swift new file mode 100644 index 0000000..3972006 --- /dev/null +++ b/Sources/Assets/Colors.swift @@ -0,0 +1,19 @@ +// +// Colors.swift +// MyFirstProject +// +// Created by etudiant on 09/05/2023. +// + +import Foundation +import SwiftUI +public struct WtaColor{ + + static let cololor = Color("Color") + static let dark = Color("dark") + static let black_1 = Color("black_1") + static let black_2 = Color("black_2") + static let white = Color("white") + static let font_icon = Color("font_icon") + +} diff --git a/Sources/Assets/Image.swift b/Sources/Assets/Image.swift new file mode 100644 index 0000000..3afe3f8 --- /dev/null +++ b/Sources/Assets/Image.swift @@ -0,0 +1,12 @@ +// +// Image.swift +// MyFirstProject +// +// Created by etudiant on 09/05/2023. +// + +import Foundation +import SwiftUI +public struct WpaImage { + static let flags = Image("Background") +} diff --git a/Sources/Assets/Image.xcassets/Background.imageset/51nL7olRzxL._SL1200_-1.png b/Sources/Assets/Image.xcassets/Background.imageset/51nL7olRzxL._SL1200_-1.png new file mode 100644 index 0000000..99957cf Binary files /dev/null and b/Sources/Assets/Image.xcassets/Background.imageset/51nL7olRzxL._SL1200_-1.png differ diff --git a/Sources/Assets/Image.xcassets/Background.imageset/Contents.json b/Sources/Assets/Image.xcassets/Background.imageset/Contents.json new file mode 100644 index 0000000..9a689a1 --- /dev/null +++ b/Sources/Assets/Image.xcassets/Background.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "51nL7olRzxL._SL1200_-1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Image.xcassets/Contents.json b/Sources/Assets/Image.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Sources/Assets/Image.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Image.xcassets/Image.imageset/Contents.json b/Sources/Assets/Image.xcassets/Image.imageset/Contents.json new file mode 100644 index 0000000..e0ec082 --- /dev/null +++ b/Sources/Assets/Image.xcassets/Image.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "kisspng-racing-poster-cycling-wallpaper-cycling-5a6f64187e3a29.9835373915172495605171.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Image.xcassets/Image.imageset/kisspng-racing-poster-cycling-wallpaper-cycling-5a6f64187e3a29.9835373915172495605171.jpg b/Sources/Assets/Image.xcassets/Image.imageset/kisspng-racing-poster-cycling-wallpaper-cycling-5a6f64187e3a29.9835373915172495605171.jpg new file mode 100644 index 0000000..ce607ae Binary files /dev/null and b/Sources/Assets/Image.xcassets/Image.imageset/kisspng-racing-poster-cycling-wallpaper-cycling-5a6f64187e3a29.9835373915172495605171.jpg differ diff --git a/Sources/Assets/Image.xcassets/Indien.imageset/006187093.jpg b/Sources/Assets/Image.xcassets/Indien.imageset/006187093.jpg new file mode 100644 index 0000000..ebae76e Binary files /dev/null and b/Sources/Assets/Image.xcassets/Indien.imageset/006187093.jpg differ diff --git a/Sources/Assets/Image.xcassets/Indien.imageset/Contents.json b/Sources/Assets/Image.xcassets/Indien.imageset/Contents.json new file mode 100644 index 0000000..a61bd5c --- /dev/null +++ b/Sources/Assets/Image.xcassets/Indien.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "006187093.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Image.xcassets/Moine.imageset/41EiI8q5QJL.jpg b/Sources/Assets/Image.xcassets/Moine.imageset/41EiI8q5QJL.jpg new file mode 100644 index 0000000..33deee9 Binary files /dev/null and b/Sources/Assets/Image.xcassets/Moine.imageset/41EiI8q5QJL.jpg differ diff --git a/Sources/Assets/Image.xcassets/Moine.imageset/Contents.json b/Sources/Assets/Image.xcassets/Moine.imageset/Contents.json new file mode 100644 index 0000000..c8f5302 --- /dev/null +++ b/Sources/Assets/Image.xcassets/Moine.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "41EiI8q5QJL.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Media.xcassets/Color 1.colorset/Contents.json b/Sources/Assets/Media.xcassets/Color 1.colorset/Contents.json new file mode 100644 index 0000000..22c4bb0 --- /dev/null +++ b/Sources/Assets/Media.xcassets/Color 1.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Media.xcassets/Color.colorset/Contents.json b/Sources/Assets/Media.xcassets/Color.colorset/Contents.json new file mode 100644 index 0000000..22c4bb0 --- /dev/null +++ b/Sources/Assets/Media.xcassets/Color.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Media.xcassets/Contents.json b/Sources/Assets/Media.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Sources/Assets/Media.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Media.xcassets/black_1.colorset/Contents.json b/Sources/Assets/Media.xcassets/black_1.colorset/Contents.json new file mode 100644 index 0000000..c82bd66 --- /dev/null +++ b/Sources/Assets/Media.xcassets/black_1.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.145", + "green" : "0.088", + "red" : "0.110" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.105", + "green" : "0.072", + "red" : "0.034" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Media.xcassets/black_2.colorset/Contents.json b/Sources/Assets/Media.xcassets/black_2.colorset/Contents.json new file mode 100644 index 0000000..5376734 --- /dev/null +++ b/Sources/Assets/Media.xcassets/black_2.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.069", + "green" : "0.074", + "red" : "0.074" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Media.xcassets/dark.colorset/Contents.json b/Sources/Assets/Media.xcassets/dark.colorset/Contents.json new file mode 100644 index 0000000..ba93d96 --- /dev/null +++ b/Sources/Assets/Media.xcassets/dark.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "0.955", + "red" : "0.883" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "0.377", + "red" : "0.300" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Media.xcassets/font_icon.colorset/Contents.json b/Sources/Assets/Media.xcassets/font_icon.colorset/Contents.json new file mode 100644 index 0000000..980dfe3 --- /dev/null +++ b/Sources/Assets/Media.xcassets/font_icon.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "0.216", + "red" : "0.588" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "0.230", + "red" : "0.587" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Assets/Media.xcassets/white.colorset/Contents.json b/Sources/Assets/Media.xcassets/white.colorset/Contents.json new file mode 100644 index 0000000..22c4bb0 --- /dev/null +++ b/Sources/Assets/Media.xcassets/white.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Extensions/UIImage.swift b/Sources/Extensions/UIImage.swift new file mode 100644 index 0000000..5e8061a --- /dev/null +++ b/Sources/Extensions/UIImage.swift @@ -0,0 +1,20 @@ +// +// UIImage.swift +// MyFirstProject +// +// Created by etudiant on 11/05/2023. +// + +import Foundation +import UIKit +extension UIImage { + var averageColor: UIColor? { + guard let inputImage = CIImage(image: self) else { return nil } + let extent = inputImage.extent + let context = CIContext(options: nil) + let ciFilter = CIFilter(name: "CIAreaAverage", parameters: [kCIInputImageKey: inputImage, kCIInputExtentKey: CIVector(cgRect: extent)])! + var bitmap = [UInt8](repeating: 0, count: 4) + context.render(ciFilter.outputImage!, toBitmap: &bitmap, rowBytes: 4, bounds: CGRect(x: 0, y: 0, width: 1, height: 1), format: .RGBA8, colorSpace: nil) + return UIColor(red: CGFloat(bitmap[0]) / 255, green: CGFloat(bitmap[1]) / 255, blue: CGFloat(bitmap[2]) / 255, alpha: 1.0) + } +} diff --git a/Sources/HelloCLT/HelloCLT.xcodeproj/project.pbxproj b/Sources/HelloCLT/HelloCLT.xcodeproj/project.pbxproj deleted file mode 100644 index e92c528..0000000 --- a/Sources/HelloCLT/HelloCLT.xcodeproj/project.pbxproj +++ /dev/null @@ -1,313 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 55; - objects = { - -/* Begin PBXBuildFile section */ - 6FC153182820EFB500D881F3 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FC153172820EFB500D881F3 /* main.swift */; }; - 6FC153202820EFD800D881F3 /* HelloLibrary in Frameworks */ = {isa = PBXBuildFile; productRef = 6FC1531F2820EFD800D881F3 /* HelloLibrary */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 6FC153122820EFB500D881F3 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 6FC153142820EFB500D881F3 /* HelloCLT */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = HelloCLT; sourceTree = BUILT_PRODUCTS_DIR; }; - 6FC153172820EFB500D881F3 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 6FC153112820EFB500D881F3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6FC153202820EFD800D881F3 /* HelloLibrary in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 6FC1530B2820EFB500D881F3 = { - isa = PBXGroup; - children = ( - 6FC153162820EFB500D881F3 /* HelloCLT */, - 6FC153152820EFB500D881F3 /* Products */, - 6FC1531E2820EFD800D881F3 /* Frameworks */, - ); - sourceTree = ""; - }; - 6FC153152820EFB500D881F3 /* Products */ = { - isa = PBXGroup; - children = ( - 6FC153142820EFB500D881F3 /* HelloCLT */, - ); - name = Products; - sourceTree = ""; - }; - 6FC153162820EFB500D881F3 /* HelloCLT */ = { - isa = PBXGroup; - children = ( - 6FC153172820EFB500D881F3 /* main.swift */, - ); - path = HelloCLT; - sourceTree = ""; - }; - 6FC1531E2820EFD800D881F3 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 6FC153132820EFB500D881F3 /* HelloCLT */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6FC1531B2820EFB500D881F3 /* Build configuration list for PBXNativeTarget "HelloCLT" */; - buildPhases = ( - 6FC153102820EFB500D881F3 /* Sources */, - 6FC153112820EFB500D881F3 /* Frameworks */, - 6FC153122820EFB500D881F3 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = HelloCLT; - packageProductDependencies = ( - 6FC1531F2820EFD800D881F3 /* HelloLibrary */, - ); - productName = HelloCLT; - productReference = 6FC153142820EFB500D881F3 /* HelloCLT */; - productType = "com.apple.product-type.tool"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 6FC1530C2820EFB500D881F3 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1320; - LastUpgradeCheck = 1320; - TargetAttributes = { - 6FC153132820EFB500D881F3 = { - CreatedOnToolsVersion = 13.2.1; - }; - }; - }; - buildConfigurationList = 6FC1530F2820EFB500D881F3 /* Build configuration list for PBXProject "HelloCLT" */; - compatibilityVersion = "Xcode 13.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 6FC1530B2820EFB500D881F3; - productRefGroup = 6FC153152820EFB500D881F3 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 6FC153132820EFB500D881F3 /* HelloCLT */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 6FC153102820EFB500D881F3 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6FC153182820EFB500D881F3 /* main.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 6FC153192820EFB500D881F3 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - 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; - GCC_C_LANGUAGE_STANDARD = gnu11; - 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; - MACOSX_DEPLOYMENT_TARGET = 11.6; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 6FC1531A2820EFB500D881F3 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_CXX_LIBRARY = "libc++"; - 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; - GCC_C_LANGUAGE_STANDARD = gnu11; - 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; - MACOSX_DEPLOYMENT_TARGET = 11.6; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 6FC1531C2820EFB500D881F3 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 9NSYVG2S5B; - ENABLE_HARDENED_RUNTIME = YES; - PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 6FC1531D2820EFB500D881F3 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 9NSYVG2S5B; - ENABLE_HARDENED_RUNTIME = YES; - PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 6FC1530F2820EFB500D881F3 /* Build configuration list for PBXProject "HelloCLT" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6FC153192820EFB500D881F3 /* Debug */, - 6FC1531A2820EFB500D881F3 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 6FC1531B2820EFB500D881F3 /* Build configuration list for PBXNativeTarget "HelloCLT" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6FC1531C2820EFB500D881F3 /* Debug */, - 6FC1531D2820EFB500D881F3 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCSwiftPackageProductDependency section */ - 6FC1531F2820EFD800D881F3 /* HelloLibrary */ = { - isa = XCSwiftPackageProductDependency; - productName = HelloLibrary; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = 6FC1530C2820EFB500D881F3 /* Project object */; -} diff --git a/Sources/HelloCLT/HelloCLT/main.swift b/Sources/HelloCLT/HelloCLT/main.swift deleted file mode 100644 index ce0a84d..0000000 --- a/Sources/HelloCLT/HelloCLT/main.swift +++ /dev/null @@ -1,14 +0,0 @@ -// -// main.swift -// HelloCLT -// -// Created by Marc Chevaldonné on 03/05/2022. -// - -import HelloLibrary - -import Foundation - -let helloStruct = HelloStruct() -print(helloStruct.text) - diff --git a/Sources/HelloLibrary/.gitignore b/Sources/HelloLibrary/.gitignore deleted file mode 100644 index bb460e7..0000000 --- a/Sources/HelloLibrary/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -.DS_Store -/.build -/Packages -/*.xcodeproj -xcuserdata/ -DerivedData/ -.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata diff --git a/Sources/HelloLibrary/Package.swift b/Sources/HelloLibrary/Package.swift deleted file mode 100644 index ce5cb59..0000000 --- a/Sources/HelloLibrary/Package.swift +++ /dev/null @@ -1,28 +0,0 @@ -// swift-tools-version:5.5 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "HelloLibrary", - products: [ - // Products define the executables and libraries a package produces, and make them visible to other packages. - .library( - name: "HelloLibrary", - targets: ["HelloLibrary"]), - ], - dependencies: [ - // Dependencies declare other packages that this package depends on. - // .package(url: /* package url */, from: "1.0.0"), - ], - targets: [ - // Targets are the basic building blocks of a package. A target can define a module or a test suite. - // Targets can depend on other targets in this package, and on products in packages this package depends on. - .target( - name: "HelloLibrary", - dependencies: []), - .testTarget( - name: "HelloLibraryTests", - dependencies: ["HelloLibrary"]), - ] -) diff --git a/Sources/HelloLibrary/README.md b/Sources/HelloLibrary/README.md deleted file mode 100644 index 5cdc795..0000000 --- a/Sources/HelloLibrary/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# HelloLibrary - -A description of this package. diff --git a/Sources/HelloLibrary/Sources/HelloLibrary/HelloStruct.swift b/Sources/HelloLibrary/Sources/HelloLibrary/HelloStruct.swift deleted file mode 100644 index 9ebdb96..0000000 --- a/Sources/HelloLibrary/Sources/HelloLibrary/HelloStruct.swift +++ /dev/null @@ -1,6 +0,0 @@ -public struct HelloStruct { - public private(set) var text = "Hello, World!" - - public init() { - } -} diff --git a/Sources/HelloLibrary/Tests/HelloLibraryTests/HelloStructTests.swift b/Sources/HelloLibrary/Tests/HelloLibraryTests/HelloStructTests.swift deleted file mode 100644 index 13ca6f5..0000000 --- a/Sources/HelloLibrary/Tests/HelloLibraryTests/HelloStructTests.swift +++ /dev/null @@ -1,11 +0,0 @@ -import XCTest -@testable import HelloLibrary - -final class HelloStructTests: XCTestCase { - 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. - XCTAssertEqual(HelloStruct().text, "Hello, World!") - } -} diff --git a/Sources/HelloWorkspace.xcworkspace/contents.xcworkspacedata b/Sources/HelloWorkspace.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index d8179a9..0000000 --- a/Sources/HelloWorkspace.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/Sources/Model/Album.swift b/Sources/Model/Album.swift new file mode 100644 index 0000000..1ca44cf --- /dev/null +++ b/Sources/Model/Album.swift @@ -0,0 +1,28 @@ +// +// Player.swift +// MyFirstProject +// +// Created by etudiant on 09/05/2023. +// + +import Foundation +import SwiftUI +public class Album { + + + + public var nom : String = "LE MONDE DES MIONES" + public var type : String = "France inter" + public var auteur : String = "Jack break" + public var image : String = "Image" + public var image_album : String = "Background" + public var ranking : Int = 12 + public var description : String = "mode reti opera dies erio dezas one vuote quenta ila caraie in present gratis del boias trios campolaire mode reti opera dies erio dezas one vuote quenta ila caraie in present gratis del boias trios campolaire " + + init(nom: String, type: String, image: String, ranking: Int) { + self.nom = nom + self.type = type + self.image = image + self.ranking = ranking + } +} diff --git a/Sources/Model/Stub.swift b/Sources/Model/Stub.swift new file mode 100644 index 0000000..f4261a3 --- /dev/null +++ b/Sources/Model/Stub.swift @@ -0,0 +1,26 @@ +// +// Stub.swift +// MyFirstProject +// +// Created by etudiant on 09/05/2023. +// + +import Foundation +public struct Stub { + + func load()->Album{ + + return Album(nom: "LE MOINE", type: "France Culture", image: "Moine", ranking: 12) + } + + func loadAll()->[Album]{ + + return [Album(nom: "LE MOINE", type: "France Culture", image: "Moine", ranking: 12), + Album(nom: "MONDIO", type: "Monde Culture", image: "Image", ranking: 12), + Album(nom: "CHA", type: "Monde Culture ", image: "Image", ranking: 122), + Album(nom: "Indian d'Amerique du nord", type: "From India ", image: "Indien", ranking: 122) + ] + } + +} +// environnement(.\ diff --git a/Sources/MyFirstProject.xcodeproj/project.pbxproj b/Sources/MyFirstProject.xcodeproj/project.pbxproj new file mode 100644 index 0000000..d85b61f --- /dev/null +++ b/Sources/MyFirstProject.xcodeproj/project.pbxproj @@ -0,0 +1,666 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 0ABB94E02A14EAEB000027A9 /* LecteurView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABB94DF2A14EAEB000027A9 /* LecteurView.swift */; }; + 0ABB94E22A14F4E9000027A9 /* BottomBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABB94E12A14F4E9000027A9 /* BottomBar.swift */; }; + EC4861E22A1395B800CACD89 /* Bibliotheque.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC4861E12A1395B800CACD89 /* Bibliotheque.swift */; }; + EC4861E42A13979800CACD89 /* BookCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC4861E32A13979800CACD89 /* BookCard.swift */; }; + EC6D6A692A0A3C8200616F92 /* MyApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6D6A682A0A3C8200616F92 /* MyApp.swift */; }; + EC6D6A6B2A0A3C8200616F92 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6D6A6A2A0A3C8200616F92 /* ContentView.swift */; }; + EC6D6A6D2A0A3C8300616F92 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC6D6A6C2A0A3C8300616F92 /* Assets.xcassets */; }; + EC6D6A702A0A3C8300616F92 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC6D6A6F2A0A3C8300616F92 /* Preview Assets.xcassets */; }; + EC6D6A7A2A0A3C8300616F92 /* MyFirstProjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6D6A792A0A3C8300616F92 /* MyFirstProjectTests.swift */; }; + EC6D6A842A0A3C8300616F92 /* MyFirstProjectUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6D6A832A0A3C8300616F92 /* MyFirstProjectUITests.swift */; }; + EC6D6A862A0A3C8300616F92 /* MyFirstProjectUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6D6A852A0A3C8300616F92 /* MyFirstProjectUITestsLaunchTests.swift */; }; + EC6D6A942A0A446200616F92 /* CardImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6D6A932A0A446200616F92 /* CardImage.swift */; }; + EC6D6A972A0A453200616F92 /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC6D6A962A0A453200616F92 /* Media.xcassets */; }; + EC6D6A992A0A45BD00616F92 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6D6A982A0A45BD00616F92 /* Colors.swift */; }; + EC6D6A9B2A0A472E00616F92 /* Image.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC6D6A9A2A0A472E00616F92 /* Image.xcassets */; }; + EC6D6AA02A0A489000616F92 /* Album.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6D6A9F2A0A489000616F92 /* Album.swift */; }; + EC6D6AA22A0A48EB00616F92 /* Stub.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6D6AA12A0A48EB00616F92 /* Stub.swift */; }; + EC9F0C4E2A0D005900605D80 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC9F0C4D2A0D005900605D80 /* UIImage.swift */; }; + ECA948FB2A1562A400225549 /* ListEpisodes.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECA948FA2A1562A400225549 /* ListEpisodes.swift */; }; + ECA948FD2A16367D00225549 /* EpisodeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECA948FC2A16367D00225549 /* EpisodeItem.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + EC6D6A762A0A3C8300616F92 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC6D6A5D2A0A3C8200616F92 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC6D6A642A0A3C8200616F92; + remoteInfo = MyFirstProject; + }; + EC6D6A802A0A3C8300616F92 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC6D6A5D2A0A3C8200616F92 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC6D6A642A0A3C8200616F92; + remoteInfo = MyFirstProject; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0ABB94DF2A14EAEB000027A9 /* LecteurView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LecteurView.swift; sourceTree = ""; }; + 0ABB94E12A14F4E9000027A9 /* BottomBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomBar.swift; sourceTree = ""; }; + EC4861E12A1395B800CACD89 /* Bibliotheque.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bibliotheque.swift; sourceTree = ""; }; + EC4861E32A13979800CACD89 /* BookCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookCard.swift; sourceTree = ""; }; + EC6D6A652A0A3C8200616F92 /* MyFirstProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MyFirstProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; + EC6D6A682A0A3C8200616F92 /* MyApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyApp.swift; sourceTree = ""; }; + EC6D6A6A2A0A3C8200616F92 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + EC6D6A6C2A0A3C8300616F92 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + EC6D6A6F2A0A3C8300616F92 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + EC6D6A752A0A3C8300616F92 /* MyFirstProjectTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MyFirstProjectTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + EC6D6A792A0A3C8300616F92 /* MyFirstProjectTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyFirstProjectTests.swift; sourceTree = ""; }; + EC6D6A7F2A0A3C8300616F92 /* MyFirstProjectUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MyFirstProjectUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + EC6D6A832A0A3C8300616F92 /* MyFirstProjectUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyFirstProjectUITests.swift; sourceTree = ""; }; + EC6D6A852A0A3C8300616F92 /* MyFirstProjectUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyFirstProjectUITestsLaunchTests.swift; sourceTree = ""; }; + EC6D6A932A0A446200616F92 /* CardImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardImage.swift; sourceTree = ""; usesTabs = 0; }; + EC6D6A962A0A453200616F92 /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Media.xcassets; sourceTree = ""; }; + EC6D6A982A0A45BD00616F92 /* Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = ""; }; + EC6D6A9A2A0A472E00616F92 /* Image.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Image.xcassets; sourceTree = ""; }; + EC6D6A9F2A0A489000616F92 /* Album.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Album.swift; sourceTree = ""; }; + EC6D6AA12A0A48EB00616F92 /* Stub.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stub.swift; sourceTree = ""; }; + EC9F0C4D2A0D005900605D80 /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; + ECA948FA2A1562A400225549 /* ListEpisodes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListEpisodes.swift; sourceTree = ""; }; + ECA948FC2A16367D00225549 /* EpisodeItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeItem.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + EC6D6A622A0A3C8200616F92 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC6D6A722A0A3C8300616F92 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC6D6A7C2A0A3C8300616F92 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + EC6D6A5C2A0A3C8200616F92 = { + isa = PBXGroup; + children = ( + EC9F0C4C2A0D003000605D80 /* Extensions */, + EC6D6A9E2A0A487800616F92 /* Model */, + EC6D6A952A0A451000616F92 /* Assets */, + EC6D6A672A0A3C8200616F92 /* MyFirstProject */, + EC6D6A782A0A3C8300616F92 /* MyFirstProjectTests */, + EC6D6A822A0A3C8300616F92 /* MyFirstProjectUITests */, + EC6D6A662A0A3C8200616F92 /* Products */, + ); + sourceTree = ""; + }; + EC6D6A662A0A3C8200616F92 /* Products */ = { + isa = PBXGroup; + children = ( + EC6D6A652A0A3C8200616F92 /* MyFirstProject.app */, + EC6D6A752A0A3C8300616F92 /* MyFirstProjectTests.xctest */, + EC6D6A7F2A0A3C8300616F92 /* MyFirstProjectUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + EC6D6A672A0A3C8200616F92 /* MyFirstProject */ = { + isa = PBXGroup; + children = ( + EC6D6A922A0A441100616F92 /* View */, + EC6D6A682A0A3C8200616F92 /* MyApp.swift */, + EC6D6A6A2A0A3C8200616F92 /* ContentView.swift */, + EC6D6A6C2A0A3C8300616F92 /* Assets.xcassets */, + EC6D6A6E2A0A3C8300616F92 /* Preview Content */, + ); + path = MyFirstProject; + sourceTree = ""; + }; + EC6D6A6E2A0A3C8300616F92 /* Preview Content */ = { + isa = PBXGroup; + children = ( + EC6D6A6F2A0A3C8300616F92 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + EC6D6A782A0A3C8300616F92 /* MyFirstProjectTests */ = { + isa = PBXGroup; + children = ( + EC6D6A792A0A3C8300616F92 /* MyFirstProjectTests.swift */, + ); + path = MyFirstProjectTests; + sourceTree = ""; + }; + EC6D6A822A0A3C8300616F92 /* MyFirstProjectUITests */ = { + isa = PBXGroup; + children = ( + EC6D6A832A0A3C8300616F92 /* MyFirstProjectUITests.swift */, + EC6D6A852A0A3C8300616F92 /* MyFirstProjectUITestsLaunchTests.swift */, + ); + path = MyFirstProjectUITests; + sourceTree = ""; + }; + EC6D6A922A0A441100616F92 /* View */ = { + isa = PBXGroup; + children = ( + EC6D6A932A0A446200616F92 /* CardImage.swift */, + EC4861E12A1395B800CACD89 /* Bibliotheque.swift */, + EC4861E32A13979800CACD89 /* BookCard.swift */, + 0ABB94DF2A14EAEB000027A9 /* LecteurView.swift */, + 0ABB94E12A14F4E9000027A9 /* BottomBar.swift */, + ECA948FA2A1562A400225549 /* ListEpisodes.swift */, + ECA948FC2A16367D00225549 /* EpisodeItem.swift */, + ); + path = View; + sourceTree = ""; + }; + EC6D6A952A0A451000616F92 /* Assets */ = { + isa = PBXGroup; + children = ( + EC6D6A962A0A453200616F92 /* Media.xcassets */, + EC6D6A982A0A45BD00616F92 /* Colors.swift */, + EC6D6A9A2A0A472E00616F92 /* Image.xcassets */, + ); + path = Assets; + sourceTree = ""; + }; + EC6D6A9E2A0A487800616F92 /* Model */ = { + isa = PBXGroup; + children = ( + EC6D6A9F2A0A489000616F92 /* Album.swift */, + EC6D6AA12A0A48EB00616F92 /* Stub.swift */, + ); + path = Model; + sourceTree = ""; + }; + EC9F0C4C2A0D003000605D80 /* Extensions */ = { + isa = PBXGroup; + children = ( + EC9F0C4D2A0D005900605D80 /* UIImage.swift */, + ); + path = Extensions; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + EC6D6A642A0A3C8200616F92 /* MyFirstProject */ = { + isa = PBXNativeTarget; + buildConfigurationList = EC6D6A892A0A3C8300616F92 /* Build configuration list for PBXNativeTarget "MyFirstProject" */; + buildPhases = ( + EC6D6A612A0A3C8200616F92 /* Sources */, + EC6D6A622A0A3C8200616F92 /* Frameworks */, + EC6D6A632A0A3C8200616F92 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MyFirstProject; + productName = MyFirstProject; + productReference = EC6D6A652A0A3C8200616F92 /* MyFirstProject.app */; + productType = "com.apple.product-type.application"; + }; + EC6D6A742A0A3C8300616F92 /* MyFirstProjectTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = EC6D6A8C2A0A3C8300616F92 /* Build configuration list for PBXNativeTarget "MyFirstProjectTests" */; + buildPhases = ( + EC6D6A712A0A3C8300616F92 /* Sources */, + EC6D6A722A0A3C8300616F92 /* Frameworks */, + EC6D6A732A0A3C8300616F92 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + EC6D6A772A0A3C8300616F92 /* PBXTargetDependency */, + ); + name = MyFirstProjectTests; + productName = MyFirstProjectTests; + productReference = EC6D6A752A0A3C8300616F92 /* MyFirstProjectTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + EC6D6A7E2A0A3C8300616F92 /* MyFirstProjectUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = EC6D6A8F2A0A3C8300616F92 /* Build configuration list for PBXNativeTarget "MyFirstProjectUITests" */; + buildPhases = ( + EC6D6A7B2A0A3C8300616F92 /* Sources */, + EC6D6A7C2A0A3C8300616F92 /* Frameworks */, + EC6D6A7D2A0A3C8300616F92 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + EC6D6A812A0A3C8300616F92 /* PBXTargetDependency */, + ); + name = MyFirstProjectUITests; + productName = MyFirstProjectUITests; + productReference = EC6D6A7F2A0A3C8300616F92 /* MyFirstProjectUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + EC6D6A5D2A0A3C8200616F92 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1410; + LastUpgradeCheck = 1410; + TargetAttributes = { + EC6D6A642A0A3C8200616F92 = { + CreatedOnToolsVersion = 14.1; + }; + EC6D6A742A0A3C8300616F92 = { + CreatedOnToolsVersion = 14.1; + TestTargetID = EC6D6A642A0A3C8200616F92; + }; + EC6D6A7E2A0A3C8300616F92 = { + CreatedOnToolsVersion = 14.1; + TestTargetID = EC6D6A642A0A3C8200616F92; + }; + }; + }; + buildConfigurationList = EC6D6A602A0A3C8200616F92 /* Build configuration list for PBXProject "MyFirstProject" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = EC6D6A5C2A0A3C8200616F92; + productRefGroup = EC6D6A662A0A3C8200616F92 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + EC6D6A642A0A3C8200616F92 /* MyFirstProject */, + EC6D6A742A0A3C8300616F92 /* MyFirstProjectTests */, + EC6D6A7E2A0A3C8300616F92 /* MyFirstProjectUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + EC6D6A632A0A3C8200616F92 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC6D6A702A0A3C8300616F92 /* Preview Assets.xcassets in Resources */, + EC6D6A9B2A0A472E00616F92 /* Image.xcassets in Resources */, + EC6D6A972A0A453200616F92 /* Media.xcassets in Resources */, + EC6D6A6D2A0A3C8300616F92 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC6D6A732A0A3C8300616F92 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC6D6A7D2A0A3C8300616F92 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + EC6D6A612A0A3C8200616F92 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC6D6A6B2A0A3C8200616F92 /* ContentView.swift in Sources */, + EC9F0C4E2A0D005900605D80 /* UIImage.swift in Sources */, + EC4861E42A13979800CACD89 /* BookCard.swift in Sources */, + EC6D6A992A0A45BD00616F92 /* Colors.swift in Sources */, + ECA948FD2A16367D00225549 /* EpisodeItem.swift in Sources */, + EC4861E22A1395B800CACD89 /* Bibliotheque.swift in Sources */, + EC6D6A942A0A446200616F92 /* CardImage.swift in Sources */, + EC6D6A692A0A3C8200616F92 /* MyApp.swift in Sources */, + 0ABB94E02A14EAEB000027A9 /* LecteurView.swift in Sources */, + 0ABB94E22A14F4E9000027A9 /* BottomBar.swift in Sources */, + EC6D6AA02A0A489000616F92 /* Album.swift in Sources */, + EC6D6AA22A0A48EB00616F92 /* Stub.swift in Sources */, + ECA948FB2A1562A400225549 /* ListEpisodes.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC6D6A712A0A3C8300616F92 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC6D6A7A2A0A3C8300616F92 /* MyFirstProjectTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC6D6A7B2A0A3C8300616F92 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC6D6A842A0A3C8300616F92 /* MyFirstProjectUITests.swift in Sources */, + EC6D6A862A0A3C8300616F92 /* MyFirstProjectUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + EC6D6A772A0A3C8300616F92 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC6D6A642A0A3C8200616F92 /* MyFirstProject */; + targetProxy = EC6D6A762A0A3C8300616F92 /* PBXContainerItemProxy */; + }; + EC6D6A812A0A3C8300616F92 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC6D6A642A0A3C8200616F92 /* MyFirstProject */; + targetProxy = EC6D6A802A0A3C8300616F92 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + EC6D6A872A0A3C8300616F92 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + 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; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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 = 16.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + EC6D6A882A0A3C8300616F92 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + 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; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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 = 16.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + EC6D6A8A2A0A3C8300616F92 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"MyFirstProject/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut.MyFirstProject; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + EC6D6A8B2A0A3C8300616F92 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"MyFirstProject/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut.MyFirstProject; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + EC6D6A8D2A0A3C8300616F92 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut.MyFirstProjectTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MyFirstProject.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MyFirstProject"; + }; + name = Debug; + }; + EC6D6A8E2A0A3C8300616F92 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut.MyFirstProjectTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MyFirstProject.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MyFirstProject"; + }; + name = Release; + }; + EC6D6A902A0A3C8300616F92 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut.MyFirstProjectUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = MyFirstProject; + }; + name = Debug; + }; + EC6D6A912A0A3C8300616F92 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut.MyFirstProjectUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = MyFirstProject; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + EC6D6A602A0A3C8200616F92 /* Build configuration list for PBXProject "MyFirstProject" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC6D6A872A0A3C8300616F92 /* Debug */, + EC6D6A882A0A3C8300616F92 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EC6D6A892A0A3C8300616F92 /* Build configuration list for PBXNativeTarget "MyFirstProject" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC6D6A8A2A0A3C8300616F92 /* Debug */, + EC6D6A8B2A0A3C8300616F92 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EC6D6A8C2A0A3C8300616F92 /* Build configuration list for PBXNativeTarget "MyFirstProjectTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC6D6A8D2A0A3C8300616F92 /* Debug */, + EC6D6A8E2A0A3C8300616F92 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EC6D6A8F2A0A3C8300616F92 /* Build configuration list for PBXNativeTarget "MyFirstProjectUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC6D6A902A0A3C8300616F92 /* Debug */, + EC6D6A912A0A3C8300616F92 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = EC6D6A5D2A0A3C8200616F92 /* Project object */; +} diff --git a/Sources/MyFirstProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Sources/MyFirstProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Sources/MyFirstProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Sources/HelloWorkspace.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Sources/MyFirstProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Sources/HelloWorkspace.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Sources/MyFirstProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Sources/MyFirstProject/Assets.xcassets/AccentColor.colorset/Contents.json b/Sources/MyFirstProject/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Sources/MyFirstProject/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/MyFirstProject/Assets.xcassets/AppIcon.appiconset/Contents.json b/Sources/MyFirstProject/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/Sources/MyFirstProject/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/MyFirstProject/Assets.xcassets/Contents.json b/Sources/MyFirstProject/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Sources/MyFirstProject/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/MyFirstProject/ContentView.swift b/Sources/MyFirstProject/ContentView.swift new file mode 100644 index 0000000..c0d7516 --- /dev/null +++ b/Sources/MyFirstProject/ContentView.swift @@ -0,0 +1,216 @@ +// +// ContentView.swift +// MyFirstProject +// +// Created by etudiant on 09/05/2023. +// + +import SwiftUI +import Combine +struct ContentView: View { + var album : Album? + @State private var isExpanded = false + + var myContenView : CardImage? + @State var isclicked : Bool = true + @State public var color: Color = .white + @Environment (\.presentationMode ) var presentationMode + init(album: Album, myContenView: CardImage) { + self.album = album + self.myContenView = myContenView + } + private func createGridColumns() -> [GridItem] { + return Array(repeating: GridItem(.flexible(), spacing: 10), count: 2) + } + var body: some View { + + NavigationView{ + + ZStack(alignment: .top){ + ScrollView{ + + + VStack { + + myContenView.onReceive(Just(UIImage(named: album?.image ?? "Background"))) { uiImage in + if let averageColor = uiImage?.averageColor { + self.color = Color(averageColor) + } + }.padding() + + Text(album?.nom ?? "Nom") + .font(.title2) + .bold() + HStack{ + Image("Image") + .resizable() + .scaledToFill() + .frame(width: 25, height: 30) + .clipShape(Circle()) + .overlay( + Circle().stroke(Color.white, lineWidth: 2) + ) + .shadow(radius: 5) + + Text(album?.type ?? "Type") + .font(.title3) + .bold() + + Image(systemName: "chevron.right") + } + + Button(action: { + self.isclicked = !isclicked + }) { + HStack{ + Image(systemName: isclicked ? "play.fill" : "pause.fill"); Text("Dernière épisode") + + }.padding(.all ) + .background(WtaColor.white).foregroundColor(WtaColor.black_1) + .cornerRadius(10) + + } + Grid(alignment : .leading){ + GridRow{ + Text(album?.description ?? "...").lineLimit(isExpanded ? nil : 2) + .padding(.trailing, isExpanded ? 0 : 3).overlay( + + Button(action: { + isExpanded.toggle() + }) { + Text( !isExpanded ? "PLUS" : "MOINS").shadow(radius: 50 ).background(color) + .foregroundColor(.indigo).bold().padding(.trailing) + }.frame(alignment: .trailing).position(x:350,y:40) + + ) + + + + }.padding() + + GridRow( ){ + + HStack(){ + Image(systemName: "star.fill") + Text("4,4") + Text("(1,8 k)") + Text(". science") + } .padding(.leading) + + } + + } + + ListEpisodes() + Divider() + + + }.background(color) + + }.onAppear() + + }.foregroundColor(WtaColor.cololor) + + // toolnbar + + + + .navigationBarItems( + leading: + Button(action: { + presentationMode.wrappedValue.dismiss() + }) { + Grid(alignment: .top){ + GridRow { + Image(systemName: "chevron.left") + .scaledToFill() + .frame(width: 20, height: 10) + .padding() + .clipShape(Circle()) + .overlay( + Circle().stroke(Color.gray) ) + .background(Color.gray) + .clipShape(Circle()) + .shadow(radius: 10) + + } + } + }, + + + trailing: + Button(action: { + // Action du bouton de droite + }) { + Grid(alignment: .trailing,horizontalSpacing: -15){ + GridRow { + + Image(systemName: "arrow.down") + .scaledToFill() + .frame(width: 20, height: 10) + .padding() + .clipShape(Circle()) + .overlay( + Circle().stroke(Color.gray) ) + .background(Color.gray) + .clipShape(Circle()) + .shadow(radius: 10) + + + + Image(systemName: "pause.fill") + .scaledToFill() + .frame(width: 5, height: 1) + .padding().overlay(Circle().stroke(color) ) + .background(Color.white) + .clipShape(Circle()) + .shadow(radius: 5) + .position(x: 10,y:40) + + + Image(systemName: "ellipsis") + .scaledToFill() + .frame(width: 20, height: 10) + .padding() + .clipShape(Circle()) + .overlay( + Circle().stroke(Color.gray) ) + .background(Color.gray) + .clipShape(Circle()) + .shadow(radius: 10) + + } + + + + } + }).background(color) + .overlay( + VStack{ + Spacer() + + LecteurView(album: album).background() + + } + + ) + + //fi, + } + .navigationBarHidden(true) + + } + +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + // pour le thème + Group{ + ContentView(album: Album(nom: "Augustin", type: "Rapp", image: "Image", ranking: 12),myContenView: CardImage(album: Stub().load())) + + ContentView(album: Album(nom: "Augustin", type: "Rapp", image: "Image", ranking: 12),myContenView: CardImage(album: Stub().load())).environment(\.colorScheme, .dark) + } + + } +} diff --git a/Sources/MyFirstProject/MyApp.swift b/Sources/MyFirstProject/MyApp.swift new file mode 100644 index 0000000..5ec540e --- /dev/null +++ b/Sources/MyFirstProject/MyApp.swift @@ -0,0 +1,33 @@ +// +// MyFirstProjectApp.swift +// MyFirstProject +// +// Created by etudiant on 09/05/2023. +// + +import SwiftUI + +@main +struct MyApp: App { + var body: some Scene { + WindowGroup { +BottomBar() } + } +} +/* + + Grid(alignment : .bottom){ + + GridRow{ + + PlayerView() + } + GridRow{ + + LecteurView(album: album) + } + + + + } + */ diff --git a/Sources/MyFirstProject/Preview Content/Preview Assets.xcassets/Contents.json b/Sources/MyFirstProject/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Sources/MyFirstProject/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/MyFirstProject/View/Bibliotheque.swift b/Sources/MyFirstProject/View/Bibliotheque.swift new file mode 100644 index 0000000..cdb520b --- /dev/null +++ b/Sources/MyFirstProject/View/Bibliotheque.swift @@ -0,0 +1,87 @@ +// +// Bibliotheque.swift +// MyFirstProject +// +// Created by etudiant on 16/05/2023. +// + +import SwiftUI + +struct Bibliotheque: View { + var body: some View { + NavigationView{ + NavigationStack{ + ScrollView{ + LazyVGrid(columns: createGridColumns(), spacing: 10) { + ForEach(Stub().loadAll(), id: \.nom) { item in + NavigationLink{ + ContentView(album: item,myContenView: CardImage(album: item)) + } label: { + BookCard(album: item) + } + } + } + } + .navigationBarHidden(true) + + + + }.navigationTitle("Podcasts") + + /* .navigationBarItems( + + leading: + Button(action: { + + }) { + Grid(alignment: .top){ + GridRow { + Image(systemName: "chevron.left") + .scaledToFill() + .frame(width: 20, height: 10) + .padding() + .clipShape(Circle()) + .overlay( + Circle().stroke(Color.gray) ) + .background(Color.gray) + .clipShape(Circle()) + .shadow(radius: 10) + + } + } + }, + trailing: Button(action: { + // Action du bouton de droite + }) { + + + Image(systemName: "ellipsis") + .scaledToFill() + .frame(width: 20, height: 10) + .padding() + .clipShape(Circle()) + .overlay( + Circle().stroke(Color.gray) ) + .background(Color.gray) + .clipShape(Circle()) + .shadow(radius: 10) + + } + + + + )*/ + } + + } +} + +struct Bibliotheque_Previews: PreviewProvider { + static var previews: some View { + Bibliotheque() + } +} +private func createGridColumns() -> [GridItem] { + return Array(repeating: GridItem(.flexible(), spacing: 1), count: 2) + } + diff --git a/Sources/MyFirstProject/View/BookCard.swift b/Sources/MyFirstProject/View/BookCard.swift new file mode 100644 index 0000000..fbf98a9 --- /dev/null +++ b/Sources/MyFirstProject/View/BookCard.swift @@ -0,0 +1,41 @@ +// +// BookCard.swift +// MyFirstProject +// +// Created by etudiant on 16/05/2023. +// + +import SwiftUI + +struct BookCard: View { + var album : Album? + init(album: Album) { + self.album = album + } + var body: some View { + Grid(alignment : .leading){ + GridRow{ + Rectangle() .background(.gray) + .overlay( + Image(album?.image ?? "Image") + ) + .frame(width: 180,height: 180) + .clipShape(RoundedRectangle(cornerRadius: 5)) + } + GridRow(){ + VStack(alignment:.leading){ + Text(album?.nom ?? "").font(.subheadline).bold() + + Text("Mise à jour Mardi").font(.caption) + } + } + }.foregroundColor(WtaColor.black_2) + + } +} + +struct BookCard_Previews: PreviewProvider { + static var previews: some View { + BookCard(album: Stub().load()) + } +} diff --git a/Sources/MyFirstProject/View/BottomBar.swift b/Sources/MyFirstProject/View/BottomBar.swift new file mode 100644 index 0000000..f4266a1 --- /dev/null +++ b/Sources/MyFirstProject/View/BottomBar.swift @@ -0,0 +1,86 @@ +import SwiftUI +import UIKit +struct BottomBar: View { + @State private var selectedTab: Tab = .bibliotheque + + enum Tab { + case home + case bibliotheque + case favorites + case settings + } + + var album : Album? + var isDisplaylector : Bool = false + var body: some View { + + TabView(selection: $selectedTab) { + Group{ + HomeView() + .tabItem { + Image(systemName: "play.circle.fill") + + Text("Ecouter") + } + .tag(Tab.home) + + FavoritesView() + .tabItem { + Image(systemName: "tablecells") + Text("Favoris") + }.foregroundColor(WtaColor.font_icon) + .tag(Tab.favorites) + + BibliothequeView() + .tabItem { + Image(systemName: "list.bullet.below.rectangle") + Text("Biblithèque") + } + .tag(Tab.bibliotheque) + + SettingsView() + .tabItem { + Image(systemName: "shower.sidejet.fill") + Text("Recherche") + } + .tag(Tab.settings) + } + + } + } + + + struct HomeView: View { + var body: some View { + Text("Explorer") + } + } + + struct FavoritesView: View { + var body: some View { + Text("..........") + } + } + struct BibliothequeView: View { + var body: some View { + + Bibliotheque() + + } + } + struct SettingsView: View { + var body: some View { + Text("..........") + } + + + + struct BottomBar_Previews: PreviewProvider { + static var previews: some View { + BottomBar(album: Stub().load()) + } + } + } + +} + diff --git a/Sources/MyFirstProject/View/CardImage.swift b/Sources/MyFirstProject/View/CardImage.swift new file mode 100644 index 0000000..f54a3a2 --- /dev/null +++ b/Sources/MyFirstProject/View/CardImage.swift @@ -0,0 +1,42 @@ +// +// MyContenView.swift +// MyFirstProject +// +// Created by etudiant on 09/05/2023. +// + +import SwiftUI +import Combine + +struct CardImage: View { + @State public var color: Color = .clear + + var album : Album? + var body: some View { + + + + GridRow{ + Rectangle() .background(.gray) + .overlay( + Image(album?.image ?? "Image") + ) + .frame(width: 180,height: 180) + .clipShape(RoundedRectangle(cornerRadius: 20)) + } + + } + + + + + } + + struct CardImage_Previews: PreviewProvider { + static var previews: some View { + CardImage() + } + } + + + diff --git a/Sources/MyFirstProject/View/EpisodeItem.swift b/Sources/MyFirstProject/View/EpisodeItem.swift new file mode 100644 index 0000000..7592e8d --- /dev/null +++ b/Sources/MyFirstProject/View/EpisodeItem.swift @@ -0,0 +1,58 @@ +// +// EpisodeItem.swift +// MyFirstProject +// +// Created by etudiant on 18/05/2023. +// + +import SwiftUI + +struct EpisodeItem: View { + var body: some View { + ZStack{ + VStack(alignment: .leading){ + Text("Mardi").font(.caption) + Text("ADN poubelle : tout n'est pas à jeter").font(.title).bold() + Text("durée : 00:56:13 - La science, CQFD - par : Etienne Klein - le néant, la grandre question !").font(.title3).lineLimit(3) + + + Grid{ + GridRow{ + Group{ + Image(systemName: "play.fill") + .scaledToFill() + .frame(width: 20, height: 10) + .padding() + .clipShape(Circle()) + .overlay( + Circle().stroke(Color.gray) ) + .background(Color.gray) + .clipShape(Circle()) + .shadow(radius: 10) + Text("6 min") + }.foregroundColor(WtaColor.font_icon) + + + Divider() + + + Image(systemName: "ellipsis") + .scaledToFill() + .frame(width: 20, height: 10) + .padding() + + + + } + } + + }.padding() + } + } +} + +struct EpisodeItem_Previews: PreviewProvider { + static var previews: some View { + EpisodeItem() + } +} diff --git a/Sources/MyFirstProject/View/LecteurView.swift b/Sources/MyFirstProject/View/LecteurView.swift new file mode 100644 index 0000000..bb5db08 --- /dev/null +++ b/Sources/MyFirstProject/View/LecteurView.swift @@ -0,0 +1,52 @@ +// +// LecteurViw.swift +// MyFirstProject +// +// Created by Sagbo Augustin AFFOGNON on 17/05/2023. +// + +import SwiftUI + +struct LecteurView: View { + var album : Album? + var body: some View { + ZStack{ + + Grid{ + GridRow(alignment: .center){ + + HStack(){ + Spacer() + Image(album?.image ?? "Image") + .resizable() + .scaledToFill() + .frame(width: 80, height: 70) + .clipShape(RoundedRectangle(cornerRadius: 10)) + .shadow(radius: 5) + } + VStack(spacing : 2){ + Text(album?.auteur ?? "No Author" ).lineLimit(1) + Text("29 Avril 2021").lineLimit(1) + } + + HStack(spacing : 30){ + Image(systemName: "play.fill").resizable() + .scaledToFill().frame(width :20,height: 25) + Image(systemName: "goforward.30").resizable() + .scaledToFill().frame(width :40,height: 25) + + }.frame(height: 50).padding().padding(.horizontal) + + + } .padding(.horizontal) + + }.background().padding(.vertical).shadow(color: .gray, radius: 80) + } + } +} + +struct LecteurView_Previews: PreviewProvider { + static var previews: some View { + LecteurView(album: Stub().load()) + } +} diff --git a/Sources/MyFirstProject/View/ListEpisodes.swift b/Sources/MyFirstProject/View/ListEpisodes.swift new file mode 100644 index 0000000..f2878be --- /dev/null +++ b/Sources/MyFirstProject/View/ListEpisodes.swift @@ -0,0 +1,54 @@ +// +// ListEpisodes.swift +// MyFirstProject +// +// Created by etudiant on 17/05/2023. +// + +import SwiftUI + +struct ListEpisodes: View { + + + + var body: some View { + ZStack{ + + Grid{ + + GridRow(alignment: .top){ + + HStack{ + Button(action: {}){ + Text("Episodes") + Image(systemName: "chevron.down").bold().foregroundColor(WtaColor.font_icon) + }.padding() + + } + Divider() + Button(action : {}){ + Text("Tout voir").foregroundColor(WtaColor.font_icon) + }.padding() + } + + List { + ForEach(Stub().loadAll(), id: \.nom) { element in + EpisodeItem() + } + } + .listStyle(GroupedListStyle()) + + }.padding(.vertical).background() + + + } + .frame(minHeight: 800) + .background(Color.white).foregroundColor(WtaColor.black_2).padding(.vertical) + } +} + +struct ListEpisodes_Previews: PreviewProvider { + static var previews: some View { + ListEpisodes() + } +} diff --git a/Sources/MyFirstProject/View/Toolbar.swift b/Sources/MyFirstProject/View/Toolbar.swift new file mode 100644 index 0000000..61f70fb --- /dev/null +++ b/Sources/MyFirstProject/View/Toolbar.swift @@ -0,0 +1,23 @@ +// +// Toolbar.swift +// MyFirstProject +// +// Created by etudiant on 11/05/2023. +// + +import SwiftUI + +struct Toolbar: View { + + var body: some View { + VStack{ + + } + } +} + +struct Toolbar_Previews: PreviewProvider { + static var previews: some View { + Toolbar() + } +} diff --git a/Sources/MyFirstProjectTests/MyFirstProjectTests.swift b/Sources/MyFirstProjectTests/MyFirstProjectTests.swift new file mode 100644 index 0000000..a103816 --- /dev/null +++ b/Sources/MyFirstProjectTests/MyFirstProjectTests.swift @@ -0,0 +1,36 @@ +// +// MyFirstProjectTests.swift +// MyFirstProjectTests +// +// Created by etudiant on 09/05/2023. +// + +import XCTest +@testable import MyFirstProject + +final class MyFirstProjectTests: 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/Sources/MyFirstProjectUITests/MyFirstProjectUITests.swift b/Sources/MyFirstProjectUITests/MyFirstProjectUITests.swift new file mode 100644 index 0000000..5a63149 --- /dev/null +++ b/Sources/MyFirstProjectUITests/MyFirstProjectUITests.swift @@ -0,0 +1,41 @@ +// +// MyFirstProjectUITests.swift +// MyFirstProjectUITests +// +// Created by etudiant on 09/05/2023. +// + +import XCTest + +final class MyFirstProjectUITests: 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/Sources/MyFirstProjectUITests/MyFirstProjectUITestsLaunchTests.swift b/Sources/MyFirstProjectUITests/MyFirstProjectUITestsLaunchTests.swift new file mode 100644 index 0000000..e208d88 --- /dev/null +++ b/Sources/MyFirstProjectUITests/MyFirstProjectUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// MyFirstProjectUITestsLaunchTests.swift +// MyFirstProjectUITests +// +// Created by etudiant on 09/05/2023. +// + +import XCTest + +final class MyFirstProjectUITestsLaunchTests: 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) + } +}