master
Augustin AFFOGNON 2 years ago
parent 2423e7db15
commit de946f59e7

@ -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")
}

@ -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")
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

@ -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
}
}

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

@ -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
}
}

@ -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
}
}

@ -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
}
}

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -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
}
}

@ -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
}
}

@ -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
}
}

@ -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
}
}

@ -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
}
}

@ -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)
}
}

@ -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 = "<group>"; };
/* 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 = "<group>";
};
6FC153152820EFB500D881F3 /* Products */ = {
isa = PBXGroup;
children = (
6FC153142820EFB500D881F3 /* HelloCLT */,
);
name = Products;
sourceTree = "<group>";
};
6FC153162820EFB500D881F3 /* HelloCLT */ = {
isa = PBXGroup;
children = (
6FC153172820EFB500D881F3 /* main.swift */,
);
path = HelloCLT;
sourceTree = "<group>";
};
6FC1531E2820EFD800D881F3 /* Frameworks */ = {
isa = PBXGroup;
children = (
);
name = Frameworks;
sourceTree = "<group>";
};
/* 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 */;
}

@ -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)

@ -1,7 +0,0 @@
.DS_Store
/.build
/Packages
/*.xcodeproj
xcuserdata/
DerivedData/
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata

@ -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"]),
]
)

@ -1,3 +0,0 @@
# HelloLibrary
A description of this package.

@ -1,6 +0,0 @@
public struct HelloStruct {
public private(set) var text = "Hello, World!"
public init() {
}
}

@ -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!")
}
}

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:HelloCLT/HelloCLT.xcodeproj">
</FileRef>
<FileRef
location = "group:HelloLibrary">
</FileRef>
</Workspace>

@ -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
}
}

@ -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(.\

@ -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 = "<group>"; };
0ABB94E12A14F4E9000027A9 /* BottomBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomBar.swift; sourceTree = "<group>"; };
EC4861E12A1395B800CACD89 /* Bibliotheque.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bibliotheque.swift; sourceTree = "<group>"; };
EC4861E32A13979800CACD89 /* BookCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookCard.swift; sourceTree = "<group>"; };
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 = "<group>"; };
EC6D6A6A2A0A3C8200616F92 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
EC6D6A6C2A0A3C8300616F92 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
EC6D6A6F2A0A3C8300616F92 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
EC6D6A852A0A3C8300616F92 /* MyFirstProjectUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyFirstProjectUITestsLaunchTests.swift; sourceTree = "<group>"; };
EC6D6A932A0A446200616F92 /* CardImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardImage.swift; sourceTree = "<group>"; usesTabs = 0; };
EC6D6A962A0A453200616F92 /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Media.xcassets; sourceTree = "<group>"; };
EC6D6A982A0A45BD00616F92 /* Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = "<group>"; };
EC6D6A9A2A0A472E00616F92 /* Image.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Image.xcassets; sourceTree = "<group>"; };
EC6D6A9F2A0A489000616F92 /* Album.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Album.swift; sourceTree = "<group>"; };
EC6D6AA12A0A48EB00616F92 /* Stub.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stub.swift; sourceTree = "<group>"; };
EC9F0C4D2A0D005900605D80 /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = "<group>"; };
ECA948FA2A1562A400225549 /* ListEpisodes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListEpisodes.swift; sourceTree = "<group>"; };
ECA948FC2A16367D00225549 /* EpisodeItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeItem.swift; sourceTree = "<group>"; };
/* 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 = "<group>";
};
EC6D6A662A0A3C8200616F92 /* Products */ = {
isa = PBXGroup;
children = (
EC6D6A652A0A3C8200616F92 /* MyFirstProject.app */,
EC6D6A752A0A3C8300616F92 /* MyFirstProjectTests.xctest */,
EC6D6A7F2A0A3C8300616F92 /* MyFirstProjectUITests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
EC6D6A672A0A3C8200616F92 /* MyFirstProject */ = {
isa = PBXGroup;
children = (
EC6D6A922A0A441100616F92 /* View */,
EC6D6A682A0A3C8200616F92 /* MyApp.swift */,
EC6D6A6A2A0A3C8200616F92 /* ContentView.swift */,
EC6D6A6C2A0A3C8300616F92 /* Assets.xcassets */,
EC6D6A6E2A0A3C8300616F92 /* Preview Content */,
);
path = MyFirstProject;
sourceTree = "<group>";
};
EC6D6A6E2A0A3C8300616F92 /* Preview Content */ = {
isa = PBXGroup;
children = (
EC6D6A6F2A0A3C8300616F92 /* Preview Assets.xcassets */,
);
path = "Preview Content";
sourceTree = "<group>";
};
EC6D6A782A0A3C8300616F92 /* MyFirstProjectTests */ = {
isa = PBXGroup;
children = (
EC6D6A792A0A3C8300616F92 /* MyFirstProjectTests.swift */,
);
path = MyFirstProjectTests;
sourceTree = "<group>";
};
EC6D6A822A0A3C8300616F92 /* MyFirstProjectUITests */ = {
isa = PBXGroup;
children = (
EC6D6A832A0A3C8300616F92 /* MyFirstProjectUITests.swift */,
EC6D6A852A0A3C8300616F92 /* MyFirstProjectUITestsLaunchTests.swift */,
);
path = MyFirstProjectUITests;
sourceTree = "<group>";
};
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 = "<group>";
};
EC6D6A952A0A451000616F92 /* Assets */ = {
isa = PBXGroup;
children = (
EC6D6A962A0A453200616F92 /* Media.xcassets */,
EC6D6A982A0A45BD00616F92 /* Colors.swift */,
EC6D6A9A2A0A472E00616F92 /* Image.xcassets */,
);
path = Assets;
sourceTree = "<group>";
};
EC6D6A9E2A0A487800616F92 /* Model */ = {
isa = PBXGroup;
children = (
EC6D6A9F2A0A489000616F92 /* Album.swift */,
EC6D6AA12A0A48EB00616F92 /* Stub.swift */,
);
path = Model;
sourceTree = "<group>";
};
EC9F0C4C2A0D003000605D80 /* Extensions */ = {
isa = PBXGroup;
children = (
EC9F0C4D2A0D005900605D80 /* UIImage.swift */,
);
path = Extensions;
sourceTree = "<group>";
};
/* 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 */;
}

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,13 @@
{
"images" : [
{
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -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)
}
}
}

@ -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)
}
}
*/

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -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)
}

@ -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())
}
}

@ -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())
}
}
}
}

@ -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()
}
}

@ -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()
}
}

@ -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())
}
}

@ -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()
}
}

@ -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()
}
}

@ -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.
}
}
}

@ -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 its 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()
}
}
}
}

@ -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)
}
}
Loading…
Cancel
Save