Compare commits

...

2 Commits

Author SHA1 Message Date
Quentin Millardet
53d5be6a02 Create version with get information 2024-06-03 22:48:48 +02:00
Quentin Millardet
b5e3b5e011 Create version with get information 2024-06-03 22:47:45 +02:00
10 changed files with 300 additions and 142 deletions

View File

@@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
663BEC572BEE2DA0000585D9 /* LightshowDownloadOrAddView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663BEC562BEE2DA0000585D9 /* LightshowDownloadOrAddView.swift */; };
66BE20232BD5AA790051989C /* LightshowDownloadCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66BE20222BD5AA790051989C /* LightshowDownloadCell.swift */; };
66E3889B2BD3371A0004C1F2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66E3889A2BD3371A0004C1F2 /* AppDelegate.swift */; };
66E3889D2BD3371A0004C1F2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66E3889C2BD3371A0004C1F2 /* SceneDelegate.swift */; };
@@ -39,6 +40,7 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
663BEC562BEE2DA0000585D9 /* LightshowDownloadOrAddView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LightshowDownloadOrAddView.swift; sourceTree = "<group>"; };
668F709C2BE82632004A9EDD /* LightshowManager.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = LightshowManager.entitlements; sourceTree = "<group>"; };
66BE20222BD5AA790051989C /* LightshowDownloadCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LightshowDownloadCell.swift; sourceTree = "<group>"; };
66D401E92BE7EFD1004814D0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Main.strings; sourceTree = "<group>"; };
@@ -118,6 +120,7 @@
66E388A02BD3371B0004C1F2 /* Main.storyboard */,
66E3889C2BD3371A0004C1F2 /* SceneDelegate.swift */,
66E3889E2BD3371A0004C1F2 /* ViewController.swift */,
663BEC562BEE2DA0000585D9 /* LightshowDownloadOrAddView.swift */,
);
path = LightshowManager;
sourceTree = "<group>";
@@ -274,6 +277,7 @@
buildActionMask = 2147483647;
files = (
66E3889F2BD3371A0004C1F2 /* ViewController.swift in Sources */,
663BEC572BEE2DA0000585D9 /* LightshowDownloadOrAddView.swift in Sources */,
66BE20232BD5AA790051989C /* LightshowDownloadCell.swift in Sources */,
66E388CB2BD548990004C1F2 /* LightshowModel.swift in Sources */,
66E388CD2BD549B90004C1F2 /* LightshowDownloadView.swift in Sources */,
@@ -479,6 +483,8 @@
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = io.millardet.LightshowManager;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
SUPPORTS_MACCATALYST = NO;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -510,6 +516,8 @@
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = io.millardet.LightshowManager;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
SUPPORTS_MACCATALYST = NO;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -567,6 +575,8 @@
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = io.millardet.LightshowManagerUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -585,6 +595,8 @@
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = io.millardet.LightshowManagerUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";

View File

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1540"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "66E388962BD3371A0004C1F2"
BuildableName = "LightshowManager.app"
BlueprintName = "LightshowManager"
ReferencedContainer = "container:LightshowManager.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "66E388AC2BD3371D0004C1F2"
BuildableName = "LightshowManagerTests.xctest"
BlueprintName = "LightshowManagerTests"
ReferencedContainer = "container:LightshowManager.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "66E388B62BD3371D0004C1F2"
BuildableName = "LightshowManagerUITests.xctest"
BlueprintName = "LightshowManagerUITests"
ReferencedContainer = "container:LightshowManager.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "66E388962BD3371A0004C1F2"
BuildableName = "LightshowManager.app"
BlueprintName = "LightshowManager"
ReferencedContainer = "container:LightshowManager.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<EnvironmentVariables>
<EnvironmentVariable
key = "IDEPreferLogStreaming"
value = "Yes"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "66E388962BD3371A0004C1F2"
BuildableName = "LightshowManager.app"
BlueprintName = "LightshowManager"
ReferencedContainer = "container:LightshowManager.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -3,4 +3,22 @@
uuid = "92B33A76-5DF7-4616-9CF1-2D8A7367EAE7"
type = "1"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "D0E79D3F-B868-4417-B9C9-D1D626356F3D"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "LightshowManager/LightshowDownloadCell.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "13"
endingLineNumber = "13"
landmarkName = "LightshowDownloadCell"
landmarkType = "3">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

View File

@@ -10,5 +10,23 @@
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>66E388962BD3371A0004C1F2</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>66E388AC2BD3371D0004C1F2</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>66E388B62BD3371D0004C1F2</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View File

@@ -11,6 +11,7 @@ import UIKit
class AppDelegate: UIResponder, UIApplicationDelegate {
var model : LightshowModel?;
var teslacamFolder : Bool = false;
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="uO4-do-ecb">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<device id="retina6_72" orientation="portrait" appearance="dark"/>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@@ -13,22 +13,23 @@
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="LightshowManager" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<rect key="frame" x="0.0" y="0.0" width="430" height="932"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Choose your drive on popup" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dWe-Wl-ozX">
<rect key="frame" x="89" y="385" width="215" height="21"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Choose your drive on popup" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dWe-Wl-ozX" colorLabel="IBBuiltInLabel-Gray">
<rect key="frame" x="89" y="385" width="252" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" restorationIdentifier="selectFolder" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="a3c-YA-PpV" userLabel="selectFolder" colorLabel="IBBuiltInLabel-Yellow">
<rect key="frame" x="136" y="450" width="120" height="35"/>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Isn-Qp-fSc">
<rect key="frame" x="149" y="474" width="133" height="49"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="tinted" title="Selectionner"/>
<connections>
<action selector="selectFolder:" destination="BYZ-38-t0r" eventType="touchUpInside" id="mVL-YO-ghE"/>
<segue destination="lxQ-iP-nTJ" kind="show" id="uDB-7w-CXH"/>
<action selector="selectFolder:" destination="BYZ-38-t0r" eventType="touchUpInside" id="9S7-8h-fOF"/>
<segue destination="lxQ-iP-nTJ" kind="show" id="aFL-eD-jDx"/>
</connections>
</button>
</subviews>
@@ -37,29 +38,25 @@
<constraints>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="dWe-Wl-ozX" secondAttribute="trailing" constant="89" id="8Qd-s2-UyO"/>
<constraint firstItem="dWe-Wl-ozX" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="282" id="S1o-t6-G8C"/>
<constraint firstItem="a3c-YA-PpV" firstAttribute="top" secondItem="dWe-Wl-ozX" secondAttribute="bottom" constant="44" id="Xng-9W-Igl"/>
<constraint firstItem="dWe-Wl-ozX" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="89" id="ahj-GB-Is1"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="a3c-YA-PpV" secondAttribute="bottom" constant="333" id="dau-TE-XR6"/>
<constraint firstItem="a3c-YA-PpV" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="136" id="qg5-K1-j2t"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="a3c-YA-PpV" secondAttribute="trailing" constant="137" id="ybb-Dk-UcU"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="pKU-5n-feK"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-355" y="-30"/>
<point key="canvasLocation" x="-355.81395348837208" y="-30.257510729613735"/>
</scene>
<!--Close Sound-->
<scene sceneID="kjt-yt-5RI">
<objects>
<viewController id="7sR-nM-HVq" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="1G4-qq-zfn">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<rect key="frame" x="0.0" y="0.0" width="430" height="932"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Close Door" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="b5x-1u-uNl">
<rect key="frame" x="154" y="416" width="85" height="21"/>
<rect key="frame" x="154" y="416" width="122" height="101"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
@@ -83,25 +80,33 @@
<!--Lightshow-->
<scene sceneID="KEH-ew-GDR">
<objects>
<viewController id="eHl-6U-5zM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="zcI-bV-uTx">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<viewController id="eHl-6U-5zM" customClass="LightshowDownloadOrAddView" customModule="LightshowManager" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="zcI-bV-uTx" customClass="Ligh">
<rect key="frame" x="0.0" y="0.0" width="430" height="932"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="F3I-Qt-ocD">
<rect key="frame" x="80" y="363" width="232" height="35"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Télécharger des lightshows"/>
<connections>
<segue destination="nEn-Mu-Bmf" kind="show" id="hS5-h9-1Hj"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kej-Ch-CaP">
<rect key="frame" x="45" y="457" width="302" height="35"/>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" image="camera.metering.unknown" catalog="system" translatesAutoresizingMaskIntoConstraints="NO" id="Mdb-UZ-Tuh" userLabel="alertIconTeslacam">
<rect key="frame" x="106" y="588.66666666666663" width="219" height="18"/>
<color key="tintColor" systemColor="systemRedColor"/>
</imageView>
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ypb-nS-727" userLabel="alertMessageTeslacam">
<rect key="frame" x="29" y="637" width="372" height="62"/>
<attributedString key="attributedText">
<fragment content="Le dossier Teslacam empeche la lecture des Lightshows, pensez à le supprimer ou le renommer pour lancer les lightshows">
<attributes>
<font key="NSFont" metaFont="system" size="17"/>
<paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
</attributedString>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kej-Ch-CaP">
<rect key="frame" x="46" y="401" width="339" height="34.333333333333371"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Selectionner les lightshows à ajouter"/>
<connections>
<segue destination="5Iq-sn-wwf" kind="show" id="bjr-J2-fYf"/>
<segue destination="EaI-Xt-tQP" kind="show" id="NLc-zT-DOs"/>
</connections>
</button>
</subviews>
@@ -109,121 +114,72 @@
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="kej-Ch-CaP" firstAttribute="leading" secondItem="dg4-7I-qcp" secondAttribute="leading" constant="45" id="1wl-fl-DDX"/>
<constraint firstItem="kej-Ch-CaP" firstAttribute="top" secondItem="F3I-Qt-ocD" secondAttribute="bottom" constant="59" id="4k3-2L-sua"/>
<constraint firstItem="F3I-Qt-ocD" firstAttribute="leading" secondItem="dg4-7I-qcp" secondAttribute="leading" constant="80" id="Ea9-lO-ebq"/>
<constraint firstItem="F3I-Qt-ocD" firstAttribute="top" secondItem="dg4-7I-qcp" secondAttribute="top" constant="260" id="Ke5-LK-avc"/>
<constraint firstItem="dg4-7I-qcp" firstAttribute="trailing" secondItem="F3I-Qt-ocD" secondAttribute="trailing" constant="81" id="X2m-l3-DoH"/>
<constraint firstItem="dg4-7I-qcp" firstAttribute="trailing" secondItem="Mdb-UZ-Tuh" secondAttribute="trailing" constant="105" id="2CG-1h-Czu"/>
<constraint firstItem="Mdb-UZ-Tuh" firstAttribute="leading" secondItem="dg4-7I-qcp" secondAttribute="leading" constant="106" id="Ga3-wd-mkn"/>
<constraint firstItem="ypb-nS-727" firstAttribute="leading" secondItem="dg4-7I-qcp" secondAttribute="leading" constant="29" id="OqL-Y4-8uu"/>
<constraint firstItem="ypb-nS-727" firstAttribute="top" secondItem="Mdb-UZ-Tuh" secondAttribute="bottom" constant="29" id="bcU-P9-FTy"/>
<constraint firstItem="dg4-7I-qcp" firstAttribute="trailing" secondItem="ypb-nS-727" secondAttribute="trailing" constant="29" id="dUw-sb-faN"/>
<constraint firstItem="dg4-7I-qcp" firstAttribute="trailing" secondItem="kej-Ch-CaP" secondAttribute="trailing" constant="46" id="fS9-X5-Vol"/>
<constraint firstItem="Mdb-UZ-Tuh" firstAttribute="top" secondItem="kej-Ch-CaP" secondAttribute="bottom" constant="15" id="hhx-aU-roY"/>
<constraint firstItem="dg4-7I-qcp" firstAttribute="bottom" secondItem="ypb-nS-727" secondAttribute="bottom" constant="150" id="lsy-cw-rlx"/>
<constraint firstItem="dg4-7I-qcp" firstAttribute="bottom" secondItem="kej-Ch-CaP" secondAttribute="bottom" constant="277" id="y4Z-WZ-LkR"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Lightshow" image="warninglight" catalog="system" selectedImage="warninglight" id="PNd-MR-eNj"/>
<connections>
<outlet property="alertIcon" destination="Mdb-UZ-Tuh" id="BZ3-F4-gkL"/>
<outlet property="alertMessage" destination="ypb-nS-727" id="LQ9-qY-Ca5"/>
<outlet property="view" destination="zcI-bV-uTx" id="kwQ-Pz-YZn"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="S7E-e0-lxf" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1661.8320610687022" y="-327.46478873239437"/>
</scene>
<!--Table View Controller-->
<scene sceneID="4pd-a4-JGq">
<objects>
<tableViewController id="nEn-Mu-Bmf" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" id="YpR-oE-1Un">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="NBe-2M-HKE">
<rect key="frame" x="0.0" y="50" width="393" height="43.666667938232422"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="NBe-2M-HKE" id="y3i-vS-eqL">
<rect key="frame" x="0.0" y="0.0" width="393" height="43.666667938232422"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
<connections>
<outlet property="dataSource" destination="nEn-Mu-Bmf" id="uDb-xw-zRF"/>
<outlet property="delegate" destination="nEn-Mu-Bmf" id="yfK-kR-1ql"/>
</connections>
</tableView>
<navigationItem key="navigationItem" id="210-OR-9rS"/>
<connections>
<outlet property="view" destination="YpR-oE-1Un" id="Tyt-XV-RVJ"/>
</connections>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="sYg-4u-iYE" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2746" y="-523"/>
<point key="canvasLocation" x="1660.4651162790697" y="-327.6824034334764"/>
</scene>
<!--Lightshow Download View-->
<scene sceneID="wpU-oZ-jq6">
<scene sceneID="dI5-cz-aov">
<objects>
<tableViewController id="5Iq-sn-wwf" customClass="LightshowDownloadView" customModule="LightshowManager" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" id="BEP-Qi-H2P">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<tableViewController id="EaI-Xt-tQP" customClass="LightshowDownloadView" customModule="LightshowManager" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" id="17d-ar-rgx">
<rect key="frame" x="0.0" y="0.0" width="430" height="932"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="lightshowDownloadCell" rowHeight="44" id="gAI-tD-NqL" customClass="LightshowDownloadCell" customModule="LightshowManager" customModuleProvider="target">
<rect key="frame" x="0.0" y="50" width="393" height="44"/>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="lightshowDownloadCell" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="lightshowDownloadCell" rowHeight="74" id="NEU-PL-acG" customClass="LightshowDownloadCell" customModule="LightshowManager" customModuleProvider="target">
<rect key="frame" x="0.0" y="50" width="430" height="74"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="gAI-tD-NqL" id="yMs-se-7eG">
<rect key="frame" x="0.0" y="0.0" width="393" height="44"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="NEU-PL-acG" id="9k8-K2-vHz">
<rect key="frame" x="0.0" y="0.0" width="430" height="74"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="snz-8m-oZI">
<rect key="frame" x="49" y="6" width="42" height="32.666666666666664"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="66a-IA-YSR">
<rect key="frame" x="20" y="11" width="42" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="exclamationmark.triangle.fill" catalog="system" translatesAutoresizingMaskIntoConstraints="NO" id="3Rz-VE-mxs">
<rect key="frame" x="20" y="6.3333333333333339" width="21" height="30.333333333333321"/>
<color key="tintColor" systemColor="systemYellowColor"/>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bGc-sL-2bv">
<rect key="frame" x="349.33333333333331" y="16" width="23.666666666666686" height="11"/>
<fontDescription key="fontDescription" type="italicSystem" pointSize="9"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="snz-8m-oZI" firstAttribute="top" secondItem="yMs-se-7eG" secondAttribute="top" constant="6" id="0z4-Fm-N31"/>
<constraint firstAttribute="trailing" secondItem="bGc-sL-2bv" secondAttribute="trailing" constant="20" symbolic="YES" id="9K0-Uq-MPH"/>
<constraint firstAttribute="bottom" secondItem="bGc-sL-2bv" secondAttribute="bottom" constant="17" id="MiY-ve-zS1"/>
<constraint firstItem="3Rz-VE-mxs" firstAttribute="top" secondItem="yMs-se-7eG" secondAttribute="top" constant="5" id="Ojo-R2-uwJ"/>
<constraint firstItem="bGc-sL-2bv" firstAttribute="top" secondItem="yMs-se-7eG" secondAttribute="top" constant="16" id="TJL-cg-BZv"/>
<constraint firstAttribute="bottom" secondItem="3Rz-VE-mxs" secondAttribute="bottom" constant="6.3300000000000001" id="h6a-JZ-tQh"/>
<constraint firstItem="3Rz-VE-mxs" firstAttribute="leading" secondItem="yMs-se-7eG" secondAttribute="leading" constant="20" symbolic="YES" id="j8v-Zo-xWf"/>
<constraint firstItem="snz-8m-oZI" firstAttribute="leading" secondItem="3Rz-VE-mxs" secondAttribute="trailing" constant="8" symbolic="YES" id="ljZ-WN-dWz"/>
<constraint firstAttribute="bottom" secondItem="snz-8m-oZI" secondAttribute="bottom" constant="5.3300000000000001" id="oa0-S6-7Ua"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="LightshowName" destination="snz-8m-oZI" id="u2g-4g-RDg"/>
<outlet property="alertLabel" destination="bGc-sL-2bv" id="qd4-wj-Vdb"/>
<outlet property="warningMessage" destination="3Rz-VE-mxs" id="cfR-gD-tbB"/>
</connections>
</tableViewCell>
</prototypes>
<connections>
<outlet property="dataSource" destination="5Iq-sn-wwf" id="iHq-0n-wqm"/>
<outlet property="delegate" destination="5Iq-sn-wwf" id="AAR-Mq-1bm"/>
<outlet property="dataSource" destination="EaI-Xt-tQP" id="mV6-ET-NGF"/>
<outlet property="delegate" destination="EaI-Xt-tQP" id="Ynw-Tb-0Kd"/>
</connections>
</tableView>
<navigationItem key="navigationItem" id="0jm-l1-PkB"/>
<navigationItem key="navigationItem" id="D7b-Rf-ffZ"/>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="j6Q-2x-cYK" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="OGa-Bj-Kz7" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2762.5954198473282" y="124.64788732394366"/>
<point key="canvasLocation" x="2458.6046511627906" y="-328.32618025751077"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="M0L-Wa-ERm">
<objects>
<navigationController id="uO4-do-ecb" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" id="9rZ-cV-Fr3">
<rect key="frame" x="0.0" y="59" width="393" height="44"/>
<rect key="frame" x="0.0" y="59" width="430" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<connections>
@@ -255,14 +211,14 @@
</scene>
</scenes>
<resources>
<image name="camera.metering.unknown" catalog="system" width="128" height="93"/>
<image name="door.left.hand.open" catalog="system" width="108" height="128"/>
<image name="exclamationmark.triangle.fill" catalog="system" width="128" height="109"/>
<image name="warninglight" catalog="system" width="128" height="115"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
<systemColor name="systemYellowColor">
<color red="1" green="0.80000000000000004" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<systemColor name="systemRedColor">
<color red="1" green="0.23137254901960785" blue="0.18823529411764706" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
</resources>
</document>

View File

@@ -0,0 +1,32 @@
//
// StudentTableViewController.swift
// SchoolList8
//
// Created by Quentin Millardet on 14/10/2020.
//
import UIKit
class LightshowDownloadOrAddView: UIViewController{
@IBOutlet weak var alertMessage: UILabel!
@IBOutlet weak var alertIcon: UIImageView!
var teslacamFolder : Bool = false;
override func viewDidLoad() {
super.viewDidLoad()
Thread.sleep(forTimeInterval: 3.0)
teslacamFolder = (UIApplication.shared.delegate as! AppDelegate).teslacamFolder
self.alertMessage.isHidden = !teslacamFolder
self.alertIcon.isHidden = !teslacamFolder
}
// Permet de passer des informations à une vue avant que celle-ci ne soit créee
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
}
}

View File

@@ -29,13 +29,13 @@ class LightshowDownloadView: UITableViewController{
let isOk : Bool = model?.isOkFiles() ?? false;
(cell as! LightshowDownloadCell).LightshowName.text = model?.name
(cell as! LightshowDownloadCell).warningMessage.isHidden = isOk;
var alertText = ""
if (!isOk){
alertText = "(Le fichcier mp3 ou fseq n'a pas été reconnu)"
}
(cell as! LightshowDownloadCell).alertLabel.text = alertText
//(cell as! LightshowDownloadCell).LightshowName.text = model?.name
//(cell as! LightshowDownloadCell).warningMessage.isHidden = isOk;
//var alertText = ""
//if (!isOk){
// alertText = "(Le fichcier mp3 ou fseq n'a pas été reconnu)"
//}
//(cell as! LightshowDownloadCell).alertLabel.text = alertText
return cell!
}

View File

@@ -34,6 +34,7 @@ struct URLLightshow {
class LightshowModel{
var names : Array<Lightshow> = [] ;
let extensionsFile : Array<String> = ["mp3", "wav", "fseq"];
init(){
@@ -74,26 +75,31 @@ class LightshowModel{
func setStudentAtIndex(_ index: Int, withdraw value : String){
var filenameArray = value.split(separator: ".")
filenameArray.remove(at: filenameArray.count - 1)
let filenameExtension = String(filenameArray[filenameArray.count - 1]);
let valueNomalized = filenameArray.joined()
var foundLightshow : Lightshow! = nil;
for lightshow in names {
if (lightshow.name == valueNomalized ){
foundLightshow = lightshow;
if (self.extensionsFile.contains(filenameExtension)){
filenameArray.remove(at: filenameArray.count - 1)
let valueNomalized = filenameArray.joined()
var foundLightshow : Lightshow! = nil;
for lightshow in names {
if (lightshow.name == valueNomalized ){
foundLightshow = lightshow;
}
}
if (foundLightshow == nil){
foundLightshow = Lightshow(valueNomalized);
names.append(foundLightshow)
}
if (filenameExtension == "mp3" || filenameExtension == "wav"){
foundLightshow.urls.mp3 = value;
} else if (value.contains(".fseq")){
foundLightshow.urls.fseq = value;
}
}
if (foundLightshow == nil){
foundLightshow = Lightshow(valueNomalized);
names.append(foundLightshow)
}
if (value.contains(".mp3")){
foundLightshow.urls.mp3 = value;
} else if (value.contains(".fseq")){
foundLightshow.urls.fseq = value;
}
}
func resetStundent() -> Void {

View File

@@ -16,13 +16,12 @@ class ViewController: UIViewController, UIDocumentPickerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
model = (UIApplication.shared.delegate as! AppDelegate).model
// Do any additional setup after loading the view.
}
@IBAction func selectFolder(_ sender: Any) {
print("ici")
// Create a document picker for directories.
let documentPicker =
UIDocumentPickerViewController(forOpeningContentTypes: [.folder])
@@ -51,6 +50,8 @@ class ViewController: UIViewController, UIDocumentPickerDelegate {
// Use file coordination for reading and writing any of the URLs content.
var error: NSError? = nil
var teslacamFolder = false;
NSFileCoordinator().coordinate(readingItemAt: url, error: &error) { (url) in
let keys : [URLResourceKey] = [.nameKey, .isDirectoryKey]
@@ -66,15 +67,18 @@ class ViewController: UIViewController, UIDocumentPickerDelegate {
for case let file as URL in fileList {
if (file.lastPathComponent.lowercased().contains("teslacam")){
print("ici")
teslacamFolder = true
}
let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "network")
logger.debug("chosen file: \(file.relativeString)")
let filename = file.lastPathComponent;
if (filename.contains(".mp3") || filename.contains(".fseq") ){
model?.setStudentAtIndex(model?.getStudentCount() ?? 0, withdraw: filename )
}
model?.setStudentAtIndex(model?.getStudentCount() ?? 0, withdraw: filename )
// Start accessing the content's security-scoped URL.
guard file.startAccessingSecurityScopedResource() else {
@@ -91,6 +95,8 @@ class ViewController: UIViewController, UIDocumentPickerDelegate {
file.stopAccessingSecurityScopedResource()
}
}
(UIApplication.shared.delegate as! AppDelegate).teslacamFolder = teslacamFolder
}